Skip to content

fix(model): station downlinks, light-time envelopes and the operations-day endpoint - #46

Merged
HuiJun merged 1 commit into
developfrom
fix/review-ground-operations
Oct 29, 2026
Merged

HuiJun merged 1 commit into
developfrom
fix/review-ground-operations

Conversation

@devin-ai-integration

Copy link
Copy Markdown
Contributor

Summary

Three plain defects the WP-D review triage confirmed in the ground, communications and operations models, each reproduced on the pinned tool (make tools, model = $(ls model/*.sysml model/*.kerml | sort)) before editing.

Station downlinks (model/50-ground.sysml). MeridianNetwork connects all three station backhauls to moc.stationFeed, but only Caldera's frames flowed:

-flow of RawFrames from caldera.backhaul.product to moc.stationFeed.product;
+flow of RawFrames from stations.backhaul.product to moc.stationFeed.product;

The flow now runs over stations : MeridianStation[3], of which caldera, tableland and saltmarsh are the subsets — one flow, not three copies. Reproduced with sysml -render "#interconnection:TethysMeridian::MeridianNetwork" $MODEL: on develop the only flow edge into stationFeed is caldera.backhaul -.-> moc.stationFeed (tableland and saltmarsh have the connect edge and nothing else); on this branch it is stations.backhaul -.-> moc.stationFeed.

Light-time envelopes (model/52-link-budgets.sysml). PhaseEarthRange::maximumOneWayLightTime was redefined per phase with hand-typed literals that disagreed with TethysEnvironment::OneWayLightTime at the envelopes' own range.maximum. The literals are gone; the attribute now derives from the calc:

attribute maximumOneWayLightTime : DurationValue = OneWayLightTime(range.maximum / 1 [km]) [s];

sysml -e TethysLinkBudgets::<phase>Range.maximumOneWayLightTime $MODEL, before → after:

phase literal derived
launch and early operations (0.4e6 km) 1.4 s 1.3342563807926082 s
outbound cruise (60e6 km) 200.0 s 200.13845711889124 s
approach, characterisation and capture (45e6 km) 150.0 s 150.10384283916844 s
return cruise (60e6 km) 200.0 s 200.13845711889124 s
DRO operations (0.48e6 km) 1.6 s 1.60110765695113 s

A new recorded run, wpd-range-envelopes, pins the five derived values.

Operations-day endpoint (model/53-operations.sysml). OperationsTimeline::day describes "one characterisation day", but eveningPass had no outgoing transition, so the machine held there from 46 800 s on. The activity durations are now attributes of the timeline, with dayLength = 1.0 [d] and the evening pass taking what the day has left:

attribute eveningPassDuration : DurationValue = dayLength
    - (morningPassDuration + relayWindowDuration + middayPassDuration + coastAndTrackDuration + thrustArcDuration);
...
transition first eveningPass accept after eveningPassDuration then done;

run wpd-operations-timeline now advances to 86 400 s; before: Current state: eveningPass, Last event at: 46800.0, 46800 .. 50000 eveningPass (held at the end); after: eveningPass -> done at t=86400, State machine completed.

Runs moved

  • runs/wpd-operations-timeline.txt — the day now closes (-advance 86400).
  • runs/wpd-range-envelopes.txt — new.
  • runs/house-rules.txt — element/check count only (80537 → 80542 elements), from the new timeline attributes; still 0 violations.

docs/coverage/WP-D.md rows SE-105 and SE-274 updated to match.

Behaviour changes

None of the recorded verdicts changes: -satisfy=TethysLinkBudgets and -satisfy=TethysOperations hold as before; TF-011, the power margin and SA-001/SA-002 are untouched.

Not done here (maintainer decisions, reported only)

Triage items 6.1 (concrete ground stations in the ICD system), 6.2 (one RfPort carrier per direction), 6.3 (the receiver of the contingency sends) and 6.8 (EPS_BUS_V as the station-outage trigger) are design decisions and were not taken. None of the closed review-fix drafts (#30–#38) touched these three files, so nothing was absorbed from them.

Link to Devin session: https://nasa-jpl-demo.devinenterprise.com/sessions/27474f84d77d43268bdbc75b14158af1
Open in Devin Desktop: https://nasa-jpl-demo.devinenterprise.com/desktop/session/27474f84d77d43268bdbc75b14158af1?variant=devin
Requested by: @HuiJun

…s-day endpoint

- MeridianNetwork: the RawFrames flow into moc.stationFeed runs over stations.backhaul, so every connected station's frames reach the MOC
- PhaseEarthRange.maximumOneWayLightTime derives from OneWayLightTime at range.maximum instead of per-phase literals; recorded as wpd-range-envelopes
- OperationsTimeline::day: activity durations as attributes, the evening pass ends the day at dayLength (1 d) with a transition to done; the timeline run advances to 86400 s

Co-Authored-By: jason.han <hanhuijun@gmail.com>
@devin-ai-integration

Copy link
Copy Markdown
Contributor Author

I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".

  • Disable automatic comment, CI, and merge conflict monitoring

@devin-ai-integration
devin-ai-integration Bot marked this pull request as ready for review October 29, 2026 03:35

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔍 Devin Review: 1 flag

Not posted on this PR by your GitHub settings — view it in Devin Review. (Configure)

Devin Review

@devin-ai-integration

Copy link
Copy Markdown
Contributor Author

Devin Review flagged that eveningPassDuration (11 h) differs from DailyPassPlan's 8 h station passes. Checked: the two schedules were already independent on develop — morningPass is 2 h and middayPass 3 h against the plan's three 8 h passes starting at 0 / 28 800 / 57 600 s — so the mismatch is not introduced here; this PR only gives the timeline its documented endpoint. Making OperationsTimeline::day and DailyPassPlan share one set of pass durations is a design question for the maintainer (which of the two is the authority), left open on purpose.

@HuiJun
HuiJun merged commit d49d64b into develop Oct 29, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant