Skip to content

ElementSet doesn't record whether it came from TLE or OMM, so Δ_data can't use the right quantization step #27

Description

@matt-edmondson

Plan reference

docs/spec.md §4.1:

Osculator/docs/spec.md

Lines 196 to 201 in 3a5382d

the text against eight in the JSON, because the text writes it as a five-digit mantissa with an
assumed decimal point and a one-digit exponent.
So Δ_data depends on which representation was ingested, and an application mixing the two is
comparing element sets of different precision. Osculator reads OMM wherever both are available, and
records which format each element set came from.

So Δ_data depends on which representation was ingested, and an application mixing the two is comparing element sets of different precision. Osculator reads OMM wherever both are available, and records which format each element set came from.

What exists today

  • Osculator.Core/Elements/ElementSet.cs has no source or format field.
  • TleParser and OmmJson both produce a plain ElementSet.
  • DataTerm and ElementFieldQuantization (Osculator.Core/Residuals/) work out each field's quantization step themselves.

What's missing

Once an ElementSet exists, nothing says whether its fields were quantized to TLE precision or to OMM precision. The spec's own example: B* has a five-digit mantissa in a TLE and roughly eight digits in OMM JSON. Without the format, Δ_data on an OMM-sourced set has to assume TLE steps, or the reverse, and M2's TLE-vs-later-element comparison can't tell when it is comparing sets of different precision.

Acceptance criteria

  • ElementSet carries an ElementSetFormat (Tle, Omm).
  • TleParser sets it to Tle and OmmJson sets it to Omm.
  • Tests on the committed ISS TLE/OMM pair assert the format on both paths.
  • DataTerm/ElementFieldQuantization pick each field's step from the recorded format, with a test showing that B*'s step differs between the two.

Dependencies

None. This also relates to open #23 (the epoch field in DataTerm.Measure) but is independent of it.

Activity

  1. matt-edmondson commented on Sep 28, 2026

    @matt-edmondson
    ContributorAuthor

    Triage

    Notes: The change is small and the acceptance criteria are complete. Fix it before M2's comparison produces results people rely on, so the residuals aren't later found to be quantized at the wrong precision.


    Generated by Claude Code

  2. added a commit that references this issue on Oct 7, 2026
    7afc032
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions