Repository navigation
WP-E: review fixes to modes and mission sequence (model/60–61) - #35
Closed
devin-ai-integration[bot] wants to merge 1 commit into
Closed
devin-ai-integration[bot] wants to merge 1 commit into
devin-ai-integration[bot] wants to merge 1 commit into
Conversation
…as its own mode with guarded safe-mode recovery, capture bag deploys only on an accepted commit, inspector pass length, SEP off after disposal and approach, array-deployment timeout to safe, xenon-reserve outcome kept Co-Authored-By: jason.han <hanhuijun@gmail.com>
Contributor
Author
|
I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".
|
Contributor
Author
|
Closing: this branch was cut from the pre-integration |
HuiJun
added a commit
that referenced
this pull request
Oct 29, 2026
* fix(model): thrust arcs wait their arcDuration so the sequence clock advances ThrustArc now has a timed body (first start; then action burn accept after arcDuration; then done), so each outbound and return arc takes its planned duration and lunarAssistAt in sequence-nominal moves from 135.5 d to 1495.5 d, in line with baselineSchedule.lunarGravityAssist (1480 d). The recorded -advance 190080000 horizon still reaches disposal; sequence-* runs re-recorded. Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(model): capture bag deploys only when CaptureGo is within the commit envelope The captureMechanism region accepted every CaptureGo, so a refused capture (flight region to retreat) still left the bag deployed. The stowed->deployed transition now carries the same envelope guard as the flight region's proximityOperations->capture transition; modes-tug-dense-target re-recorded (ends ... | stowed). Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(model): bind the despin step's duration and propellant to the characterised body Despin takes the characterisation and the thrusters' arm and Isp as inputs and derives its angular momentum, duration and propellant through TethysCaptureSystem::DespinDuration and DespinPropellant, so the capture sequence carries 348 s and 5.91 kg for the nominal body instead of leaving both unbound. New run wpc-despin-step records the three values. Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(model): approach thrust stops only on the RangeUpdate that reaches rendezvousRange The sepString region dropped to standby on any RangeUpdate, so a far-field range report (500 km) stopped the approach thrust while the flight region stayed in approach. The transition now carries the flight region's own guard (u.range <= rendezvousRange), so only the rendezvous update ends the burn. Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(model): inspector imaging pass lasts the requested passDuration InspectorModes left imaging after a literal 8 h whatever InspectorImagingGo asked for: a 4 h pass was still imaging at +5 h and ended at +8 h. The machine now keeps a passDuration attribute (default 8 h), the accept of the command assigns it from go.passDuration and the imaging exit waits that duration, as in the closed #35. Re-recorded modes-tug-early-ops (the attribute's initial value now shows in the trace). Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(model): SEP string leaves the disposal burn for off when its duration elapses DisposalGo took sepString to thrusting with no exit, so the full-flight run ended done | thrusting | ... with the string burning forever. The disposal arc is now its own disposalBurn state that times out to off after disposalBurnDuration (and goes off on SafeModeRequest like thrusting), as in the closed #35. Full flight now ends done | off | highGain | wheels | released; modes-inspector-retired moves by the one extra timer event. Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(model): campaign outcome keeps the xenon reserve breach through disposal The reserve-breach outcome set before the lunar assist was overwritten by the unconditional "disposed after N thrust arcs" at the end of the campaign, so a campaign that ran the reserve negative still reported a clean disposal. The final outcome now carries the breach ("xenon reserve breached; disposed after N thrust arcs"), as in the closed #35. The committed campaigns do not breach, so no sequence run moves. Co-Authored-By: jason.han <hanhuijun@gmail.com> * chore(software): regenerate the state tables for the guarded and disposal transitions The generated C/Go/Python state-machine tables follow model 60: the sepString RangeUpdate transition now carries TUG_MODES_G1, stowed -> deployed carries TUG_MODES_G2, and sepString gains the disposalBurn state with its timed and safe-mode exits (101 states / 163 transitions; the pinned totals in test_system.c and WP-SW-12 move with them). The conformance expectation for vc-final-targeting records the one extra model trace event the evaluated RangeUpdate guard adds; host and model still agree on every machine. Co-Authored-By: jason.han <hanhuijun@gmail.com> * chore(runs): re-record sequence-nominal-trace on the merged develop tree The trace now lists the software-tier packages develop added and the extra literal evaluations develop's recording already shows; the mission itself is unchanged (7 arcs, lunar assist at 129211200 s, disposed). Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(model): compare the passivation delay with its deadline and type the disposal quantities TS-292's constraint now has a time term: passivationDelay (closeout passivationCompleteTime - disposalBurnTime, 23 d) <= deadline (30 d). SeparationDeltaV takes an ImpulseValue and a MassValue and returns a SpeedValue, dividing the units out only inside the calc; TS-293 reads TethysTarget::targetCases.{small,nominal,large}.mass and amaranthFM.postCapture.mass instead of the stale 150/362/620/438.8 t literals, and compares against 1.0e-3 m/s. Co-Authored-By: jason.han <hanhuijun@gmail.com> * test(runs): record the despin step and disposal quantity probes Adds the wpc-despin-step and disposal-quantities runs and re-records the four runs the model edits move (house-rules counts, one ID shift in the three satisfy runs). Co-Authored-By: jason.han <hanhuijun@gmail.com> * chore(runs): re-record house-rules and the mode-management design description The new sepString state, attribute and transitions move the house-rules element/check counts (80537/703451 -> 80552/703658, still 0 violations) and the sepString documentation row of the ModeManagementDesignDescription rendering (md and html, with their byte counts in the render logs). Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(model): risk gate over every item, TH-001 causes, derived safety-critical count, document inventory queries Review triage findings 3-2, 3-3, 3-4, 3-5, 5-2, 5-3, 5-5 and the integration-review documentation nits. - 3-2 TethysRisk::riskRegister::noUnownedRedRisk quantifies over the new items : RiskItem[*] collection every register entry subsets, instead of naming earthImpactRisk; risk-constraints instantiates the register so the gate evaluates on it. - 3-3 TH-001's returnTrajectoryInsideCorridor and lossOfThrustOnFinalArc causes are connected to earthImpact like the other hazards. - 3-4 safetyCriticalSoftwareFunctions = 2 is replaced by the query TethysAllocationQueries::SafetyCriticalFunctions over @safetycritical. - 3-5 Reliability durations are DurationValues in [d] and [h]. - 5-2 TugSubsystems reads TethysTug::Tug (10 rows, was 4). - 5-3 Segments and Items exclude InterfaceUsage / InterfaceDefinition. - 5-5 Risks scans TethysRisk and TethysSafety (6 rows, was 0). - docs: IcdFlightSegment::inspectorDispenser, SE-049/SE-260/SE-278 rows say what the model shows, KerML citation §8.3.2.4.5. Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(model): cap array trade at SEP power, xenon flow target, window ordering, capture function owner - TethysTrades::PowerAvailableToSep takes the propulsion system's maximum power and returns the lesser of the aphelion-scaled array power and that limit; the array trade reads it from argent.sep.maximumPower, so the 48 kW and 70 kW options both thrust at 40 kW and the cost sweep keeps array48kW at every penalty. - TethysPhysics::XenonTransfer flows tank.remaining to thruster.xenonIn, the target its general Feeds declares, not thruster.inputPower. - TethysNotation windowIsOrdered requires opens < closes AND not marginal, as its documentation says. - argentDesign performs functions.captureBody on captureSystem (ArgentCapture, which declares CaptureBody's inputs), not on structure. - CONVENTIONS.md states the 81-physics.kerml Real/SI-base-unit contract as the one declared exception to the units rule. Runs re-recorded: trades, trades-sweep, house-rules (element count) and the traces/ids that move with the capture perform's owner. Co-Authored-By: jason.han <hanhuijun@gmail.com> * docs(coverage): quote the corrected XenonTransfer target and windowIsOrdered literals WP-G LANG-223/225 quote the flow as it now reads (to thruster.xenonIn); LANG-347/348 cite only ReturnWindow::marginal = false, since windowIsOrdered no longer carries a boolean literal. Co-Authored-By: jason.han <hanhuijun@gmail.com> * chore(runs): re-record sw-doc-sdd-flight-ModeManagement for the sepString documentation Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(model): project SafetyCritical::rationale in SafetyCriticalFunctions The inventory of @safetycritical functions showed documentation = (none) for all three rows; the reason for each classification lives in SafetyCritical::rationale, so the query projects that instead. Re-recorded allocations-queries. Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(model): require a non-negative passivation delay in TS-292 A passivation recorded before the disposal burn gave a negative passivationDelay that satisfied the 30 d upper bound alone; the constraint now requires 0 d <= passivationDelay <= deadline. Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(model): flight software relays the requested pass, gates range updates and ends the disposal burn Model 65's InspectorHandler relayed every imaging pass for a literal 8 h; it now assigns the passDuration the InspectorImagingGo carries and waits for it, as the inspector's own modes do. The mode manager's dispatcher sent SepStandby for every RangeUpdate; it now gates on the mode machine's rendezvousRange like the SEP region. The disposal dispatch sent an open-ended SepThrust; it now sends a SepDisposalBurn carrying the mode machine's disposalBurnDuration and the SepStringController burns in a disposalBurn state that times out to off (or leaves on SepOff / restarts on a flameout). Regenerated state tables (102 states, 167 transitions, 21 guards, 39 effects); re-recorded the runs the new elements move (ids, house-rules counts, the SepControl design description, the dispatch sequence's SepDisposalBurn). Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(software): host bindings for the pass, burn durations and the range gate The duration resolver answers burnDuration / passDuration from the value the SepDisposalBurn / InspectorImagingGo item carried (effects SEP_STRING_CONTROLLER_E1, INSPECTOR_HANDLER_E1); the dispatcher guard MODE_MANAGEMENT_DISPATCHER_G1 and TugModes' range guard compare in km, the unit the uplinked RangeUpdate carries; the disposal burn drives the thrust simulation like an arc; on-board sequence 3 sends InspectorImagingGo with the campaign's 8 h pass. Three system tests pin the far-field update, the 30 d burn and the 4 h pass. Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(model): score the Isp trade with the mission's xenon model and closure rule SpecificImpulseTrade computed its own required xenon (argent.wetMass, one return arc, no inspector release, no missed-thrust margin) and penalised only xenon above the raw load, so no option was ever infeasible and the trade selected isp2000 against its Rationale and argent.sep.specificImpulse. TethysBudgets::XenonForMission now takes the Isp as an input (the propellant budget passes argentDesign.sep.specificImpulse; its recorded values are unchanged), the trade calls it for the nominal case at each option's Isp, and the feasibility penalty is TethysMarginPolicy::ClosesWithMargin against propellantBudget.usable with the active policy, as the budget asserts. The Rationale text carries the recomputed numbers. Re-recorded runs/trades.txt and the house-rules element count. Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(software): record XenonForMission's Isp input in the conformance inventory The calc inventory in argent_conformance/calcs.py listed XenonForMission with only its body parameter after the Isp input was added; the entry stays skipped (body is a SmallBody part) but now carries the current signature, and its recorded expectation header follows. Co-Authored-By: jason.han <hanhuijun@gmail.com> * chore(runs): re-record house-rules on the merged develop tree Co-Authored-By: jason.han <hanhuijun@gmail.com> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: jason.han <hanhuijun@gmail.com>
HuiJun
added a commit
that referenced
this pull request
Oct 29, 2026
* fix(model): thrust arcs wait their arcDuration so the sequence clock advances ThrustArc now has a timed body (first start; then action burn accept after arcDuration; then done), so each outbound and return arc takes its planned duration and lunarAssistAt in sequence-nominal moves from 135.5 d to 1495.5 d, in line with baselineSchedule.lunarGravityAssist (1480 d). The recorded -advance 190080000 horizon still reaches disposal; sequence-* runs re-recorded. Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(model): capture bag deploys only when CaptureGo is within the commit envelope The captureMechanism region accepted every CaptureGo, so a refused capture (flight region to retreat) still left the bag deployed. The stowed->deployed transition now carries the same envelope guard as the flight region's proximityOperations->capture transition; modes-tug-dense-target re-recorded (ends ... | stowed). Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(model): bind the despin step's duration and propellant to the characterised body Despin takes the characterisation and the thrusters' arm and Isp as inputs and derives its angular momentum, duration and propellant through TethysCaptureSystem::DespinDuration and DespinPropellant, so the capture sequence carries 348 s and 5.91 kg for the nominal body instead of leaving both unbound. New run wpc-despin-step records the three values. Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(model): approach thrust stops only on the RangeUpdate that reaches rendezvousRange The sepString region dropped to standby on any RangeUpdate, so a far-field range report (500 km) stopped the approach thrust while the flight region stayed in approach. The transition now carries the flight region's own guard (u.range <= rendezvousRange), so only the rendezvous update ends the burn. Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(model): inspector imaging pass lasts the requested passDuration InspectorModes left imaging after a literal 8 h whatever InspectorImagingGo asked for: a 4 h pass was still imaging at +5 h and ended at +8 h. The machine now keeps a passDuration attribute (default 8 h), the accept of the command assigns it from go.passDuration and the imaging exit waits that duration, as in the closed #35. Re-recorded modes-tug-early-ops (the attribute's initial value now shows in the trace). Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(model): SEP string leaves the disposal burn for off when its duration elapses DisposalGo took sepString to thrusting with no exit, so the full-flight run ended done | thrusting | ... with the string burning forever. The disposal arc is now its own disposalBurn state that times out to off after disposalBurnDuration (and goes off on SafeModeRequest like thrusting), as in the closed #35. Full flight now ends done | off | highGain | wheels | released; modes-inspector-retired moves by the one extra timer event. Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(model): campaign outcome keeps the xenon reserve breach through disposal The reserve-breach outcome set before the lunar assist was overwritten by the unconditional "disposed after N thrust arcs" at the end of the campaign, so a campaign that ran the reserve negative still reported a clean disposal. The final outcome now carries the breach ("xenon reserve breached; disposed after N thrust arcs"), as in the closed #35. The committed campaigns do not breach, so no sequence run moves. Co-Authored-By: jason.han <hanhuijun@gmail.com> * chore(software): regenerate the state tables for the guarded and disposal transitions The generated C/Go/Python state-machine tables follow model 60: the sepString RangeUpdate transition now carries TUG_MODES_G1, stowed -> deployed carries TUG_MODES_G2, and sepString gains the disposalBurn state with its timed and safe-mode exits (101 states / 163 transitions; the pinned totals in test_system.c and WP-SW-12 move with them). The conformance expectation for vc-final-targeting records the one extra model trace event the evaluated RangeUpdate guard adds; host and model still agree on every machine. Co-Authored-By: jason.han <hanhuijun@gmail.com> * chore(runs): re-record sequence-nominal-trace on the merged develop tree The trace now lists the software-tier packages develop added and the extra literal evaluations develop's recording already shows; the mission itself is unchanged (7 arcs, lunar assist at 129211200 s, disposed). Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(model): compare the passivation delay with its deadline and type the disposal quantities TS-292's constraint now has a time term: passivationDelay (closeout passivationCompleteTime - disposalBurnTime, 23 d) <= deadline (30 d). SeparationDeltaV takes an ImpulseValue and a MassValue and returns a SpeedValue, dividing the units out only inside the calc; TS-293 reads TethysTarget::targetCases.{small,nominal,large}.mass and amaranthFM.postCapture.mass instead of the stale 150/362/620/438.8 t literals, and compares against 1.0e-3 m/s. Co-Authored-By: jason.han <hanhuijun@gmail.com> * test(runs): record the despin step and disposal quantity probes Adds the wpc-despin-step and disposal-quantities runs and re-records the four runs the model edits move (house-rules counts, one ID shift in the three satisfy runs). Co-Authored-By: jason.han <hanhuijun@gmail.com> * chore(runs): re-record house-rules and the mode-management design description The new sepString state, attribute and transitions move the house-rules element/check counts (80537/703451 -> 80552/703658, still 0 violations) and the sepString documentation row of the ModeManagementDesignDescription rendering (md and html, with their byte counts in the render logs). Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(model): risk gate over every item, TH-001 causes, derived safety-critical count, document inventory queries Review triage findings 3-2, 3-3, 3-4, 3-5, 5-2, 5-3, 5-5 and the integration-review documentation nits. - 3-2 TethysRisk::riskRegister::noUnownedRedRisk quantifies over the new items : RiskItem[*] collection every register entry subsets, instead of naming earthImpactRisk; risk-constraints instantiates the register so the gate evaluates on it. - 3-3 TH-001's returnTrajectoryInsideCorridor and lossOfThrustOnFinalArc causes are connected to earthImpact like the other hazards. - 3-4 safetyCriticalSoftwareFunctions = 2 is replaced by the query TethysAllocationQueries::SafetyCriticalFunctions over @safetycritical. - 3-5 Reliability durations are DurationValues in [d] and [h]. - 5-2 TugSubsystems reads TethysTug::Tug (10 rows, was 4). - 5-3 Segments and Items exclude InterfaceUsage / InterfaceDefinition. - 5-5 Risks scans TethysRisk and TethysSafety (6 rows, was 0). - docs: IcdFlightSegment::inspectorDispenser, SE-049/SE-260/SE-278 rows say what the model shows, KerML citation §8.3.2.4.5. Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(model): cap array trade at SEP power, xenon flow target, window ordering, capture function owner - TethysTrades::PowerAvailableToSep takes the propulsion system's maximum power and returns the lesser of the aphelion-scaled array power and that limit; the array trade reads it from argent.sep.maximumPower, so the 48 kW and 70 kW options both thrust at 40 kW and the cost sweep keeps array48kW at every penalty. - TethysPhysics::XenonTransfer flows tank.remaining to thruster.xenonIn, the target its general Feeds declares, not thruster.inputPower. - TethysNotation windowIsOrdered requires opens < closes AND not marginal, as its documentation says. - argentDesign performs functions.captureBody on captureSystem (ArgentCapture, which declares CaptureBody's inputs), not on structure. - CONVENTIONS.md states the 81-physics.kerml Real/SI-base-unit contract as the one declared exception to the units rule. Runs re-recorded: trades, trades-sweep, house-rules (element count) and the traces/ids that move with the capture perform's owner. Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(model): verification cases check what they verify, strict impact bound, verification ids - GroundProceduresDemo measures the screened fraction and archive latency its verify list claims - transferDuration (TS-003) verified by MissionDurationByAnalysis, not PowerAnalysis - ProximityNavigationTest takes the measured relative-velocity error and passes on <= 1 mm/s - Earth-impact bound is strict (< 1e-6) in TS-008 and ReturnSafetyAnalysis, as the stakeholder text reads; with the estimate at exactly 1e-6 both now fail honestly - every verification def in 23-verification.sysml carries a TV-nnn id; CONVENTIONS.md fixes the prefix - runs re-recorded for the files above only Co-Authored-By: jason.han <hanhuijun@gmail.com> * docs(coverage): quote the corrected XenonTransfer target and windowIsOrdered literals WP-G LANG-223/225 quote the flow as it now reads (to thruster.xenonIn); LANG-347/348 cite only ReturnWindow::marginal = false, since windowIsOrdered no longer carries a boolean literal. Co-Authored-By: jason.han <hanhuijun@gmail.com> * chore(runs): re-record sw-doc-sdd-flight-ModeManagement for the sepString documentation Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(model): project SafetyCritical::rationale in SafetyCriticalFunctions The inventory of @safetycritical functions showed documentation = (none) for all three rows; the reason for each classification lives in SafetyCritical::rationale, so the query projects that instead. Re-recorded allocations-queries. Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(model): require a non-negative passivation delay in TS-292 A passivation recorded before the disposal burn gave a negative passivationDelay that satisfied the 30 d upper bound alone; the constraint now requires 0 d <= passivationDelay <= deadline. Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(model): flight software relays the requested pass, gates range updates and ends the disposal burn Model 65's InspectorHandler relayed every imaging pass for a literal 8 h; it now assigns the passDuration the InspectorImagingGo carries and waits for it, as the inspector's own modes do. The mode manager's dispatcher sent SepStandby for every RangeUpdate; it now gates on the mode machine's rendezvousRange like the SEP region. The disposal dispatch sent an open-ended SepThrust; it now sends a SepDisposalBurn carrying the mode machine's disposalBurnDuration and the SepStringController burns in a disposalBurn state that times out to off (or leaves on SepOff / restarts on a flameout). Regenerated state tables (102 states, 167 transitions, 21 guards, 39 effects); re-recorded the runs the new elements move (ids, house-rules counts, the SepControl design description, the dispatch sequence's SepDisposalBurn). Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(software): host bindings for the pass, burn durations and the range gate The duration resolver answers burnDuration / passDuration from the value the SepDisposalBurn / InspectorImagingGo item carried (effects SEP_STRING_CONTROLLER_E1, INSPECTOR_HANDLER_E1); the dispatcher guard MODE_MANAGEMENT_DISPATCHER_G1 and TugModes' range guard compare in km, the unit the uplinked RangeUpdate carries; the disposal burn drives the thrust simulation like an arc; on-board sequence 3 sends InspectorImagingGo with the campaign's 8 h pass. Three system tests pin the far-field update, the 30 d burn and the 4 h pass. Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(model): score the Isp trade with the mission's xenon model and closure rule SpecificImpulseTrade computed its own required xenon (argent.wetMass, one return arc, no inspector release, no missed-thrust margin) and penalised only xenon above the raw load, so no option was ever infeasible and the trade selected isp2000 against its Rationale and argent.sep.specificImpulse. TethysBudgets::XenonForMission now takes the Isp as an input (the propellant budget passes argentDesign.sep.specificImpulse; its recorded values are unchanged), the trade calls it for the nominal case at each option's Isp, and the feasibility penalty is TethysMarginPolicy::ClosesWithMargin against propellantBudget.usable with the active policy, as the budget asserts. The Rationale text carries the recomputed numbers. Re-recorded runs/trades.txt and the house-rules element count. Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(model): verify TS-003 by a transfer-timeline analysis case, not MissionDurationByAnalysis MissionDurationByAnalysis passes on actual thrust time + 270 d (TR-002), which is not TS-003's predicate (thrust allowance + coast + proximity + reserve <= nominal): a 1 500 d allowance fails the requirement but passed that case. TransferTimelineByAnalysis (TV-034) checks the requirement's own terms against the nominal duration and the transfer analysis against the allowance. Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(software): record XenonForMission's Isp input in the conformance inventory The calc inventory in argent_conformance/calcs.py listed XenonForMission with only its body parameter after the Isp input was added; the entry stays skipped (body is a SmallBody part) but now carries the current signature, and its recorded expectation header follows. Co-Authored-By: jason.han <hanhuijun@gmail.com> * chore(runs): re-record house-rules after merging develop Co-Authored-By: jason.han <hanhuijun@gmail.com> * chore(runs): re-record house-rules on the merged develop tree Co-Authored-By: jason.han <hanhuijun@gmail.com> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: jason.han <hanhuijun@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Follow-up to #4 for the eight review findings on it; model files
model/60-modes.sysmlandmodel/61-sequence.sysmlonly, runs re-recorded,docs/coverage/WP-E.mdadjusted.make checkgreen locally on the source buildv0.10.1-2054-g0a5fa2d94(the pin develop'sruns/carry); the only shared-run change is the element/check count line ofruns/house-rules.txt.TethysSequence::ThrustArcnow waits itsarcDuration(attribute arcDuration default 120.0 [d], redefined to 250 d for return arcs;then action thrusting accept after arcDuration) so the mission clock is real: the lunar assist follows the return arcs instead of day ~135.MissionSequencekeeps the xenon-reserve warning inoutcome((if xenonRemaining < xenonReserve ? "xenon reserve breached; " else "") + "disposed after …").TugModes::flightMode:despinis its own state betweenfreeFlightandstacked(DespinComplete do assign despun := true);stackedenters atstackCoast;SafeModeExitrecovery is guarded onarraysDeployed/captured/despun(launch← not deployed,freeFlight,despin,stacked); alaunchthat has not deployed its arrays withinarraysDeploymentTimeout(6 h) goes tosafeinstead of free flight.captureMechanismdeploys only on aCaptureGoinside the capture envelope (same guard as the mode commit).sepString: approach thrust stops only on theRangeUpdatethat reachesrendezvousRange;DisposalGo→disposalBurn→offafterdisposalBurnDuration(full flight endsdone | off).InspectorModes: the imaging pass lasts the commandedInspectorImagingGo.passDuration.Link to Devin session: https://nasa-jpl-demo.devinenterprise.com/sessions/30b5ea0880494e89acc653277d3de6d3
Open in Devin Desktop: https://nasa-jpl-demo.devinenterprise.com/desktop/session/30b5ea0880494e89acc653277d3de6d3?variant=devin
Requested by: @HuiJun