diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 15a4f69..a373f84 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -10,13 +10,10 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 with: { distribution: temurin, java-version: '21' } - - name: Fetch OpenSysML nightly - run: curl -fsSL https://raw.githubusercontent.com/Open-MBEE/OpenSysML/develop/install.sh | sh -s -- --version nightly --tools sysml --prefix "$PWD/build/opensysml" - - name: Fetch the pinned pilot validators and the OpenSysML library sources - run: | - sudo apt-get install -y --no-install-recommends graphviz - git clone --depth 1 https://github.com/Open-MBEE/OpenSysML build/opensysml-src - (cd build/opensysml-src && ./scripts/download-pilot-sysml-validator.sh) - cp -r build/opensysml-src/build/pilot-validator build/opensysml-src/build/pilot-sysml-validator build/ + - uses: actions/setup-go@v5 + with: { go-version: '1.25' } + - run: sudo apt-get install -y --no-install-recommends graphviz z3 + - name: Build OpenSysML at the pinned commit and fetch the pinned pilot validators + run: make tools - run: make tiers - run: make check diff --git a/README.md b/README.md index 1f28cea..0284aeb 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ The model is written in standard SysML v2 and exists for two purposes: ## Running it ```bash -make tools # fetch OpenSysML (nightly + sources) and the pinned OMG pilot validators into build/ +make tools # build OpenSysML from source at the pinned commit (scripts/fetch-tools.sh) and fetch the pinned OMG pilot validators into build/ make check # every gate: validate (strict), pilot (mission tier standalone, all files batch), house rules, runs/ diff make runs # re-record runs/ after an intentional model change ``` diff --git a/docs/coverage/WP-B.md b/docs/coverage/WP-B.md index bcc8a37..4d3cdf6 100644 --- a/docs/coverage/WP-B.md +++ b/docs/coverage/WP-B.md @@ -21,7 +21,7 @@ Result legend: ✓ satisfied · ◐ construct in the model, tool result wrong or | SE-076 must | 31 : every leaf function performed by exactly one subsystem (`perform functions.handleData` on `cdh`, …) | `make validate` | ✓ 13 of 13 | | SE-077 should | — | — | ○ no software components in WP-B | | SE-078 must | 31 : `metadata def Critical`, `metadata def SinglePointWaiver`; `#Critical` units carry `[2]`/`[3]`/`[4]` or `@SinglePointWaiver { rationale }` (`primaryStructure`, `highGainAntenna`, `bag`); `required` vs installed on every `Unit` | `make validate`; `wpb-reliability` (k-of-n over `required`) | ✓ | -| SE-079 should | 32 : `smallTarget`, `nominalTarget`, `largeTarget : TargetCase`, `targetCases`; the `variation attribute def TargetCases` is in `model/probes/F-B02-variant-binding-chain.sysml` | `wpb-xenon-large`, `wpb-hydrazine-large` | ◐ cases evaluate as plain usages; chaining through a `variant` fails (F-B02) | +| SE-079 should | 32 : `smallTarget`, `nominalTarget`, `largeTarget : TargetCase`, `targetCases`; the `variation attribute def TargetCases` is in `model/probes/F-B02-variant-binding-chain.sysml` | `wpb-xenon-large`, `wpb-hydrazine-large` | ✓ cases evaluate as plain usages and through the `variant` (F-B02 fixed in pin: `ProbeVariantChain::viaVariant` = 507 000 kg) | | SE-080 should | — | — | ○ | | SE-081 could | — | — | ○ | | SE-082 must | 31 : `flow of TethysInterfaces::ElectricalPower`, `flow of Telemetry`, `flow of Propellant`, `flow of Heat`, `flow of ThrustCommand`, `flow of AttitudeEstimate`, `flow of RelativeState` between subsystem ports | `make validate` | ✓ every flow typed | @@ -30,14 +30,14 @@ Result legend: ✓ satisfied · ◐ construct in the model, tool result wrong or | SE-085 must | backbone `model/09-ground.sysml` | — | — WP-D | | SE-086 must | backbone `model/08-launch.sysml`; 32 : `MassBudget.launcherCapability = arcturus5H.performanceAtC3` | `wpb-mass-budget` | — WP-C; used here | | SE-087 should | — | — | ○ tool tier (`DocumentQueries`) | -| SE-088 could | 30 : `enum def Maturity { heritage; modified; newDesign }`; 31 : `Unit::maturity` on every unit | `wpb-tug-dry-mass-allocated` (contingency by maturity) | ◐ maturity read right, the `==` on it is F-B01 | +| SE-088 could | 30 : `enum def Maturity { heritage; modified; newDesign }`; 31 : `Unit::maturity` on every unit | `wpb-tug-dry-mass-allocated` (contingency by maturity) | ✓ maturity read right and the `==` on it evaluates (F-B01 fixed in pin: `wpb-margin-policy` = 0.1) | | SE-089 could | — | — | ○ | | SE-090 could | — | — | ○ | | SE-121 must | 32 : `MassBudget` (`dryEstimate`, `dryWithContingency`, `dryAllocation`, `launchMass`, `launcherCapability`, `dryCloses`, `launchCloses`), `requirement <'TS-121'>` | `wpb-tug-dry-mass` = 3725.5 kg; `wpb-tug-dry-mass-allocated` = 4300.9 kg; `wpb-mass-budget` = 12624 kg; `wpb-budgets-satisfy` | ✓ dry margin 30 %, launch margin 36 % | | SE-122 should | — | — | ○ | -| SE-123 must | 31 : `Unit::operatingPower/standbyPower/operatingModes/standbyModes/poweredShare`, `PowerInMode`, `UnitsPowerInMode`; 32 : `TugPowerInMode`, `PowerBudget.demand` for the eight flight modes, `<'TS-123'>` | `wpb-unit-power-safe` = 42 W, `wpb-unit-power-thrusting` = 24.75 kW (right); `wpb-power-budget-safe` = 0 W (wrong) | ◐ on the pinned build F-B01 zeroes the rollup so `powerBudgetCloses` "holds" vacuously; on the F-B01-fixed build `demandThrusting` = 35 518 W against `arrayAtAphelionEol` = 39 757 W is `thrustingMargin` = 0.119 < the 0.15 policy — **power while thrusting does not close**; which attribute closes it (array rating, string draw or margin policy) is the pending maintainer decision | +| SE-123 must | 31 : `Unit::operatingPower/standbyPower/operatingModes/standbyModes/poweredShare`, `PowerInMode`, `UnitsPowerInMode`; 32 : `TugPowerInMode`, `PowerBudget.demand` for the eight flight modes, `<'TS-123'>` | `wpb-unit-power-safe` = 42 W, `wpb-unit-power-thrusting` = 24.75 kW (right); `wpb-power-budget-safe` = 0 W (wrong) | ✗ with F-B01 fixed in pin the rollup reads real demand and `satisfy powerBudgetCloses by powerBudget fails` (`wpb-budgets-satisfy`): `demandThrusting` = 35 518 W against `arrayAtAphelionEol` = 39 757 W is `thrustingMargin` = 0.119 < the 0.15 policy — **power while thrusting does not close**; which attribute closes it (array rating, string draw or margin policy) is the pending maintainer decision | | SE-124 must | 32 : `calc def ArrayPower`, `PowerBudget.arrayAtAphelionEol` from `TethysEnvironment::SolarFlux(amaranth.orbit.aphelionAu)` and `arrayWings.endOfLifeFactor` | `wpb-budgets-satisfy` (`thrustingCloses`) | ◐ capability 39.76 kW right; the demand it is checked against closes in every mode but `thrust` (SE-123) | -| SE-125 must | 32 : `EnergyBudget` (DRO eclipse 4 h, launch to arrays 1.5 h, `maximumDepthOfDischarge`), `<'TS-125'>` | `wpb-budgets-satisfy` | ◐ usable 8640 W·h right; on the F-B01-fixed build `eclipseEnergy` = 3 588 W·h closes; `droEclipse = 4 h` is asserted, not derived (SE-264 open); static budget, no state-machine SOC run | +| SE-125 must | 32 : `EnergyBudget` (DRO eclipse 4 h, launch to arrays 1.5 h, `maximumDepthOfDischarge`), `<'TS-125'>` | `wpb-budgets-satisfy` | ◐ usable 8640 W·h right; `eclipseEnergy` = 3 588 W·h closes against it (F-B01 fixed in pin, `wpb-budgets-satisfy`); `droEclipse = 4 h` is asserted, not derived (SE-264 open); static budget, no state-machine SOC run | | SE-126 must | 32 : `InspectorEnergyBudget`, `<'TS-126'>` | `wpb-budgets-satisfy` | ✓ 55 W·h of 108 W·h usable | | SE-127 must | 32 : `DataBudget` (`generatingRate`, `dailyGenerated`, `dailyDownlink`, `storageDemand`), `<'TS-127'>` | `wpb-data-daily` = 70.6 Gbit; `wpb-budgets-satisfy` | ✓ against 90 Gbit/day and 4 TB | | SE-128 must | — | — | — link budget is WP-D's; its 60 × 10⁶ km maximum range is asserted, not derived from the trajectory (domain list O7) | @@ -46,7 +46,7 @@ Result legend: ✓ satisfied · ◐ construct in the model, tool result wrong or | SE-131 must | 32 : `PropellantBudget` (xenon per case, residuals, `tankCapacity`, `throughputLife`), `HydrazineBudget` (`DespinPropellant` per case, proximity Δv, stack control), `<'TS-130'>`, `<'TS-131'>` | `wpb-xenon-large`, `wpb-hydrazine-large` = 290 kg of 388 kg usable; `wpb-budgets-satisfy` | ✓ | | SE-132 must | 32 : `RootSumSquareDegrees`, `PointingBudget.antennaPointingErrorDegrees` vs `antennaAllocation`, `<'TS-132'>` | `wpb-pointing-antenna` = 0.0232° (allocation 0.05°) | ✓ | | SE-133 should | 32 : `PointingBudget.thrustVectorErrorDegrees` (centre-of-mass knowledge, thruster alignment, gimbal) | `wpb-budgets-satisfy` | ✓ 0.229° of 0.5° | -| SE-134 must | 31 : `min/maxOperatingTemperature`, `predictedHot/ColdTemperature` on every unit; 32 : `RadiatorRejection`, `ThermalBudget` (hot case, cold-case heaters, `forAll` limits), `<'TS-134'>` | `wpb-radiator-capacity` = 7480 W; `wpb-budgets-satisfy` | ◐ limits and capacity right; on the F-B01-fixed build `hotCaseHeat` = 5 737 W closes against 7 480 W; pinned run still vacuous (F-B01) | +| SE-134 must | 31 : `min/maxOperatingTemperature`, `predictedHot/ColdTemperature` on every unit; 32 : `RadiatorRejection`, `ThermalBudget` (hot case, cold-case heaters, `forAll` limits), `<'TS-134'>` | `wpb-radiator-capacity` = 7480 W; `wpb-budgets-satisfy` | ◐ limits and capacity right; `hotCaseHeat` = 5 737 W closes against 7 480 W (F-B01 fixed in pin, `wpb-budgets-satisfy`) | | SE-135 must | 32 : `CaptureLoadBudget` (contact force of the heavy case, cinch preload, thrust load vs `bag.cinchLoadCapacity`), `<'TS-135'>` — the small-body reading of the entry-loads rows | `wpb-budgets-satisfy` | ✓ 14.4 kN of 20 kN | | SE-136 must | as SE-135 | | ✓ | | SE-137 should | 31 : `Unit::doseRating : AbsorbedDoseValue`; 32 : `RadiationBudget` (150 Gy × RDM 2, `forAll`), `<'TS-137'>` | `wpb-budgets-satisfy` | ✓ | @@ -57,7 +57,7 @@ Result legend: ✓ satisfied · ◐ construct in the model, tool result wrong or | SE-142 should | 31 : `FlightComputer.processorCapacityMips/LoadMips/memoryCapacity/memoryAllocated`; 32 : `ProcessorBudget`, `<'TS-142'>` | `wpb-budgets-satisfy` | ✓ 50 % reserve | | SE-143 should | — | — | — WP-D | | SE-144 could | — | — | ○ | -| SE-145 must | 30 : `attribute def MarginPolicyRow`, `srrPolicy`/`pdrPolicy`/`cdrPolicy`/`acceptancePolicy`, `activePolicy`, `ContingencyFor`, `WithContingency`, `MarginFraction`, `constraint def ClosesWithMargin`/`WithinLimit`/`ReserveNotNegative`; every `assert constraint … : ClosesWithMargin { … in policy = activePolicy; }` in 32 | `wpb-margin-policy-alone` = 0.1 (right, file alone); `wpb-margin-policy` = 0.2 (wrong, whole model), 120.0, 0.2, holds | ◐ policy complete and referenced by every budget; on the F-B01-fixed build mass, xenon, energy and thermal close under `pdrPolicy`, power while thrusting does not (SE-123); pinned run still vacuous (F-B01) | +| SE-145 must | 30 : `attribute def MarginPolicyRow`, `srrPolicy`/`pdrPolicy`/`cdrPolicy`/`acceptancePolicy`, `activePolicy`, `ContingencyFor`, `WithContingency`, `MarginFraction`, `constraint def ClosesWithMargin`/`WithinLimit`/`ReserveNotNegative`; every `assert constraint … : ClosesWithMargin { … in policy = activePolicy; }` in 32 | `wpb-margin-policy-alone` = 0.1 (right, file alone); `wpb-margin-policy` = 0.2 (wrong, whole model), 120.0, 0.2, holds | ◐ policy complete and referenced by every budget; mass, xenon, energy and thermal close under `pdrPolicy`, power while thrusting does not (SE-123; F-B01 fixed in pin, `wpb-budgets-satisfy`) | | SE-146 should | — | — | ○ tool tier (`DocumentQueries`); candidate `model/33-budget-report-tooling.sysml` | ## LANG rows @@ -65,7 +65,7 @@ Result legend: ✓ satisfied · ◐ construct in the model, tool result wrong or | Row | File : element | Proving command | Result | | --- | --- | --- | --- | | LANG-506–510 attributes | 31 : `attribute def` — ; `Unit` attributes `mass : MassValue`, `operatingPower : PowerValue`, …; 30 : `attribute def MarginPolicyRow`, 32 : `attribute def TargetCase` | `make validate`, `make pilot` | ✓ | -| LANG-511–518 enumerations | 31 : `enum def TugMode` (sixteen literals, the one mode vocabulary); 30 : `enum def Maturity`, `enum def ReviewGate`; enum-valued attributes and sequences (`allFlightModes : TugMode[*]`) | `make validate`, `make pilot`; `wpb-margin-policy` | ✓ (membership evaluation: F-B01) | +| LANG-511–518 enumerations | 31 : `enum def TugMode` (sixteen literals, the one mode vocabulary); 30 : `enum def Maturity`, `enum def ReviewGate`; enum-valued attributes and sequences (`allFlightModes : TugMode[*]`) | `make validate`, `make pilot`; `wpb-margin-policy` | ✓ (F-B01 fixed in pin) | | LANG-547–551 parts | 31 : 60 `part def`s (`Unit`, `PassiveUnit`, `ElectronicUnit`, `Assembly`, ten subsystems, every unit type), `part argentDesign : ArgentTug` with redefinitions `part :>> sep : ArgentPropulsion`, sequences `part :>> units = (…)` | `instantiate-system` run | ✓ | | LANG-742–751 calculations | 31 : `PowerInMode`, `HeatInMode`, `UnitsPowerInMode`, `UnitsHeatInMode`; 30 : `ContingencyFor`, `WithContingency`, `MarginFraction`; 32 : `ArrayPower`, `ExpNeg`, `PropellantFor`, `MassFlowRate`, `RootSumSquareDegrees`, `Survival`, `SetReliability` (body items + `return`), `XenonForMission`, `DespinPropellant`, `RadiatorRejection`, `TugPowerInMode`, `TugHeatInMode`, `UnitsDataRate` | `wpb-*` runs | ✓ | | quantities and units | every physical quantity ISQ-typed with an SI literal: `[kg]`, `[W]`, `[K]`, `[Gy]`, `['W⋅h']`, `['bit/s']`, `['A⋅m²']`, `['°']`, `[N]`, `[Pa]`, `[Hz]`, `['m²']`, `[d]`, `[h]`; `[GHz]`/`[MPa]`/`[GB]` are not SI library literals, so `32.0e9 [Hz]`, `12.0e6 [Pa]`, `4.0e12 [B]` | `make validate`, `make pilot` | ✓ | diff --git a/docs/coverage/WP-C.md b/docs/coverage/WP-C.md index c93932a..f170d83 100644 --- a/docs/coverage/WP-C.md +++ b/docs/coverage/WP-C.md @@ -23,7 +23,7 @@ and surface speed are computed per case (`runs/wpc-target-cases.txt`). | SE-152 mode × subsystem | `TethysTarget::SmallBody::spinState` and `CaptureTargetCase` (moved to the backbone at integration) feed `TethysModes` through `TethysProximityOps` | `make check` (both) | partial — WP-E carries the matrix; Wren's units per mode are not modelled here | | SE-153 subsystem machines with orthogonal regions | `42:ProximityOpsModes::circumnavigating parallel { imaging; sounding }` | as SE-151 | partial: Wren's payload regions only | | SE-154 mission sequence | `40:CircumnavigationCampaign` (checkoutComplete → release → linkAcquired → imagingPasses → radarSounding → closePasses → characterisationDelivered → retreatToHold) | `make check` (both) | done — WP-C's segment of the timeline; `TethysMission::flightTimeline` now carries the `inspectorRetirement` event the campaign ends at | -| SE-155 critical sequences with timing and go/no-go | `42:CaptureSequence` (`decide; if commit.go … else retreat`, `accept contact : ContactLoad`), `41:CaptureEnvelope` over the five cases, `42:ProximityOpsModes` (`accept after 7200.0 [s]`) | `runs/wpc-envelope-cases.txt`, `runs/wpc-capture-sequence.txt` | go/no-go satisfied (constraint verdicts per case); the sequence itself validates (both) but does not execute — F-C04 | +| SE-155 critical sequences with timing and go/no-go | `42:CaptureSequence` (`decide; if commit.go … else retreat`, `accept contact : ContactLoad`), `41:CaptureEnvelope` over the five cases, `42:ProximityOpsModes` (`accept after 7200.0 [s]`) | `runs/wpc-envelope-cases.txt`, `runs/wpc-capture-sequence.txt` | go/no-go satisfied (constraint verdicts per case); the sequence itself validates (both) and instantiates (F-C04 fixed in pin) but `commit.go` does not evaluate — F-C05 | | SE-156 (replaced by the thrust-arc campaign) | — | — | not WP-C | | SE-157 capture sequence P10–P12 | `42:CaptureSequence` approach → contact → cinch → despin; `41:ContactForce`, `DespinDuration`, `DespinPropellant`, `MinimumRotationPeriod`; `TR-041`, `TR-042` | `runs/wpc-capture-calcs.txt`, `runs/wpc-requirements.txt` | satisfied: 10 kN at 0.10 m/s on 1 000 t over 0.5 m; 348 s and 6.44 kg for 4.17 × 10⁴ N·m·s at 120 N·m; 1 047 s minimum period for the largest body | | SE-158 Wren release and tug retreat | `42:proxStackFM` snapshots `beforeRelease`/`afterRelease` (12 624 → 12 600 kg), `40:wrenFM` snapshots `atRelease`/`atEndOfCampaign`, `40:WrenCampaignOutcome` variants `nominal`/`linkLost`/`notReleased` (F18, F19), `42:Retreat`, `TR-043` | `runs/wpc-individuals.txt`, `runs/wpc-requirements.txt` | satisfied | @@ -55,5 +55,5 @@ and surface speed are computed per case (`runs/wpc-target-cases.txt`). F-C01 (`individual #Tag def` rejected by OpenSysML), F-C02 (metadata before `individual` accepted by OpenSysML, rejected by the pilot), F-C03 (redefinition direction not checked by OpenSysML), -F-C04 (action output default evaluated before its input is bound — blocks `-action` on +F-C04 (fixed in pin — action output default evaluated before its input is bound — blocks `-action` on `CaptureSequence`). Rows in `docs/findings/WP-C.md`, probes in `model/probes/`. diff --git a/docs/coverage/WP-D.md b/docs/coverage/WP-D.md index f2eb85b..be58c6b 100644 --- a/docs/coverage/WP-D.md +++ b/docs/coverage/WP-D.md @@ -23,7 +23,7 @@ recorded with OpenSysML built from `develop` at `0a5fa2d94` (`v0.10.1-2054-g0a5f | SE-109 | must | `51 : verification def InterfaceVerification`; 11 `verification` usages (`umbilicalTest` … `subsystemInterfaceTests`), each `objective { verify <'TI-1nn'> }` against an `InterfaceRequirement` | `make validate`, `make pilot` | satisfied — every ICD class has a verification case | | SE-110 | should | `51 : SpacePacket`, `TelemetryPacket`, `CommandPacket`, `PacketPort`, `PacketInterface <'TI-010'>`; `50 : EndToEndDataFlow` `message commandRelease of Telecommand`, `message frameDelivery of RawFrames`; `53 : Command`/`TelemetryPoint` dictionary | `make validate`; `run wpd-thrust-arc-procedure` | satisfied — the procedure run's sequence rendering shows six packets exchanged (`runs/wpd-thrust-arc-procedure.txt`) | | SE-111 | must | `51` : `bind a.x = b.x` across the two ends plus `binding bind end.x = icdAttribute` in every ICD (`TugInspectorIcd`, `LaunchIcd`, `SpaceGroundIcd`, `InspectorRelayIcd`, `CaptureIcd`, `DockingIcd`, `PowerIcd`, `HighVoltagePowerIcd`, `DataBusIcd`, `ThermalIcd`, `InspectorDispenserIcd`, `InspectorThermalIcd`, `PropellantFeedIcd`); `assert constraint`s on ordered ranges | `make validate` (no binding/type conflict); `make pilot` | satisfied | -| SE-112 | should | `54 : TethysIcdDocuments` (tool tier, `DocumentQueries`): `IcdRegisterDocument` (register, requirements and verification tables over `TethysIcds`) and one `…IcdDocument :> Document` per ICD class (14) with ends and parameter tables fed by `IcdEnds`/`IcdParameters` queries | `run wpd-icd-register-document` = `-render-document TethysIcdDocuments::IcdRegisterDocument $M`; `run wpd-space-ground-icd-document`; `-render-documents ` writes the linked set of 15 | satisfied — non-empty tables (14 ICD rows, 11 requirements, 11 verification cases; 2 ends + 12 parameters for ICD-003; inherited ends are reached through `RelatedElements(specialization)`); parameter *values* cannot be projected (F-D04) | +| SE-112 | should | `54 : TethysIcdDocuments` (tool tier, `DocumentQueries`): `IcdRegisterDocument` (register, requirements and verification tables over `TethysIcds`) and one `…IcdDocument :> Document` per ICD class (14) with ends and parameter tables fed by `IcdEnds`/`IcdParameters` queries | `run wpd-icd-register-document` = `-render-document TethysIcdDocuments::IcdRegisterDocument $M`; `run wpd-space-ground-icd-document`; `-render-documents ` writes the linked set of 15 | satisfied — non-empty tables (14 ICD rows, 11 requirements, 11 verification cases; 2 ends + 12 parameters for ICD-003; inherited ends are reached through `RelatedElements(specialization)`); parameter values are projected through `valuation` (F-D04 fixed in pin: 28 V / 15 W / 9600 bit/s in the tug–inspector ICD, `wpd-*-icd-document`) | | SE-271 | must | `53` : `Command :> CommandPacket` with 8 specialisations (`SetMode` … `LoadSequence`), argument ranges as `assert constraint`s (`StartThrustArc::throttleInRange`, `AbortToRetreat::speedInRange`); 7 `TelemetryPoint`s with ISQ-typed values and ordered limits; `HousekeepingPacket`/`PropulsionPacket`; `ApidTable`; `CommandExecutiveCoverage` accepts every command; `TG-010 dictionaryConsistent` (distinct APIDs in range) | `run wpd-operations-satisfy` = `-satisfy=TethysOperations` | satisfied — TG-010 holds; FDIR monitors are WP-E's and not yet present to cross-check | | SE-272 | must | `53 : OperationsScenario` — `moc` performs `thrustArcProcedure` (three `send`s, three `accept`s of `CommandAcknowledge`), `tug` performs `commandExecutive` (accepts, applies, acknowledges) | `run wpd-thrust-arc-procedure` = `-instantiate TethysOperations::scenario -action "TethysOperations::OperationsScenario::moc::thrustArcProcedure scenario.moc" -advance 10 -render-run sequence=- $M` | satisfied — completes; six messages in the sequence rendering | | SE-273 | must | `53` : `NoThrustDuringRelay` (FR-001), `ApproachKeepOut` (FR-002), `SunExclusion` (FR-003), `BatteryDepthOfDischarge` (FR-004) as `constraint def`s with `FR-00n` requirements; `RelayThenThrustProcedure` asserts FR-001 and FR-004 | `run wpd-flight-rules` = `-engine check -action TethysOperations::RelayThenThrustProcedure -check-property TethysOperations::RelayThenThrustProcedure::noThrustDuringRelay -check-property …::batteryFloor $M` | satisfied — both hold over 7 states / 6 moves; FR-002/FR-003 are stated against `TethysTarget::SmallBody::spinState` and the backbone `CaptureInterface` torque limits but not yet checked over a procedure that moves range or sun angle | @@ -54,7 +54,7 @@ recorded with OpenSysML built from `develop` at `0a5fa2d94` (`v0.10.1-2054-g0a5f `docs/findings/WP-D.md`: F-D01 (positional parameter redefinition not diagnosed by OpenSysML), F-D02 (constructor argument overriding a bound value not diagnosed by OpenSysML), F-D03 (pilot -rejects an owned `action` as an allocation end), F-D04 (DocumentQueries cannot project an attribute +rejects an owned `action` as an allocation end), F-D04 (fixed in pin — DocumentQueries could not project an attribute usage's bound value). Also observed, not a defect: `#matrix` renders only interfaces whose usage restates its `connect`; `-render-run timeline` records states, not action steps, so the operations timeline is a state machine. diff --git a/docs/coverage/WP-E.md b/docs/coverage/WP-E.md index d09d888..69d4a7f 100644 --- a/docs/coverage/WP-E.md +++ b/docs/coverage/WP-E.md @@ -40,7 +40,7 @@ Proving command for every row: `sysml -validate -strict -warnings-as-errors MODE | Rows | Construct (file:element) | Run | Result | | --- | --- | --- | --- | | LANG-630–643 (Actions: `action def`, body, `first`, action nodes, successions, `perform`) | `61:ThrustArc`, `DespinSequence`, `InspectorReleaseSequence`, `DroInsertionSequence`, `MissionSequence` (`first start; then …; then done;`), `FlightCampaign::mission` (`perform action … : MissionSequence { in … = FlightCampaign::… }`), `60:OperationsCentre::nominalCampaign`, `62:ArmAndFireCaptureCinch`, `InhibitChain::cinch` | `runs/sequence-*`, `runs/fdir-inhibit-*` | satisfied | -| LANG-644, 647–662 (AcceptNode, `accept … via`, payload parameter, `after`, `at`, `when`) | `60:OperationsCentre::nominalCampaign` `accept after 30.0 [d]`; `61:MissionSequence` `accept after`, and the timed-event wait `assign lunarAssistAt := Time::universalClock.currentTime + 20.0 [d]; … accept at lunarAssistAt;`; transitions `accept u : RangeUpdate via command if u.range <= …` (payload + `via`) | `runs/modes-*`, `runs/sequence-*` (`lunarGravityAssist` reached, mission completes) | satisfied for `accept`, `via`, payload, `after`, `at`; `when` (LANG-659) only in the probe `model/probes/F-E01-…` (F-E01). `accept at` needs an instant from the standard clock (`Time::universalClock.currentTime + d`); `TimeOf(this) + d` is refused at run time because the library's `TimeOf` has no result expression, and an unvalued `TimeInstantValue` attribute is "not constant" — both are model-side, not findings | +| LANG-644, 647–662 (AcceptNode, `accept … via`, payload parameter, `after`, `at`, `when`) | `60:OperationsCentre::nominalCampaign` `accept after 30.0 [d]`; `61:MissionSequence` `accept after`, and the timed-event wait `assign lunarAssistAt := Time::universalClock.currentTime + 20.0 [d]; … accept at lunarAssistAt;`; transitions `accept u : RangeUpdate via command if u.range <= …` (payload + `via`) | `runs/modes-*`, `runs/sequence-*` (`lunarGravityAssist` reached, mission completes) | satisfied for `accept`, `via`, payload, `after`, `at`; `when` (LANG-659) only in the probe `model/probes/F-E01-…` (F-E01, fixed in pin). `accept at` needs an instant from the standard clock (`Time::universalClock.currentTime + d`); `TimeOf(this) + d` is refused at run time because the library's `TimeOf` has no result expression, and an unvalued `TimeInstantValue` attribute is "not constant" — both are model-side, not findings | | LANG-663–668 (SendNode, `via`/`to`, node parameters, feature binding) | `send new ThrustArcGo(plannedDuration = 200.0 [d]) via tugUplink` (60), `send new SafeModeRequest(reason = "…")` to the exhibiting tug (62 `callSafe`) | `runs/modes-tug-*`, `runs/fdir-*` | satisfied (`via` and bare send; `to` not used) | | LANG-669–679 (AssignmentNode, target feature/expression) | `assign xenonRemaining := thrustArc.xenonAfter;`, `assign outcome := "…" + ToString(…)` (61), `do assign captured := true` (60), `entry assign safeModeEntries := safeModeEntries + 1;` | `runs/sequence-nominal` | satisfied | | LANG-680–683 (IfNode) | `61:MissionSequence` `if xenonRemaining < xenonReserve { action reserveBreached assign outcome := …; }` after the return arcs; `decide` + guarded successions for the go/no-go gates (`captureCommit`, `checkoutGate`, `groundGate`, `corridorGate`, 62 `inhibitGate`) | `runs/sequence-nominal` (condition false, 955 kg > 300 kg reserve; the node is executed and skipped) | satisfied | diff --git a/docs/coverage/WP-F.md b/docs/coverage/WP-F.md index 360a17f..79577a4 100644 --- a/docs/coverage/WP-F.md +++ b/docs/coverage/WP-F.md @@ -7,10 +7,10 @@ Rows SE-191–SE-204 and the LANG/LIB rows of `AnalysisCases`, `TradeStudies`, ` | Row | Level | Construct (file:element) | Proving command (runs/) | Result | | --- | --- | --- | --- | --- | | SE-191 trade studies | must | `71:ArrayPowerTrade`, `SpecificImpulseTrade`, `DepartureTrade`, `DestinationOrbitTrade`, `CaptureMechanismTrade` (`TradeStudies::TradeStudy`, `Minimize`/`MaximizeObjective`, `EvaluationFunction` from the analyses), `metadata Rationale about ` naming the baseline element | `trades.txt` (`-analysis TethysTrades::*`), `trades-sweep.txt` (`-sweep costPenaltyDaysPerUnit`) | **satisfied** — selections `array48kW`, `isp2900`, `directEscape`, `distantRetrograde`, `inflatableBag` = baseline; the cost sweep shows where 70 kW would win | -| SE-192 analysis as verification | must | `70:MissionDurationByAnalysis` (`verification def`, `objective { verify missionDuration }`, nested `LowThrustTransferAnalysis`, `PassIf`); `verifyDurationNominal`/`verifyDurationLarge` | `analyses-transfer.txt` | **satisfied** — verdict `pass` for both cases: `totalThrustTime` from the transfer book, 807 d (nominal) / 1 018 d (large) on the pinned build (823 / 1 039 d on the F-B01-fixed build), + 270 d of coast and operations ≤ `tethys.nominalDuration` 2 200 d; the thrust-time allowance is the book's `thrustingTimeAllowed` 1 400 d | +| SE-192 analysis as verification | must | `70:MissionDurationByAnalysis` (`verification def`, `objective { verify missionDuration }`, nested `LowThrustTransferAnalysis`, `PassIf`); `verifyDurationNominal`/`verifyDurationLarge` | `analyses-transfer.txt` | **satisfied** — verdict `pass` for both cases: `totalThrustTime` from the transfer book, 823 d (nominal) / 1 039 d (large) against real demand (F-B01 fixed in pin), + 270 d of coast and operations ≤ `tethys.nominalDuration` 2 200 d; the thrust-time allowance is the book's `thrustingTimeAllowed` 1 400 d | | SE-193 sweeps | should | case parameters `default =` swept: `transferNominal` over `outboundDeltaVMPerS`, `arrayPowerTrade` over `costPenaltyDaysPerUnit`, `arrayPowerAtAphelionEnd` over `missionDay` | `analyses-sweep.txt`, `trades-sweep.txt`, `dynamics-array-sweep.txt` | **satisfied** | | SE-194 Monte Carlo dispersions | must | `72:ReturnDispersion`, `CaptureDispersion`, `MissedThrustDispersion`, `InsertionDispersion` with `-samples 100 -seed 7` (standard cases, tool-side uniform draw); `74:ReturnOverTargetCases` (`Simulation::MonteCarlo`, `@Probability` 25/50/25 case draw), `ReturnOverContinuousMass` (`triangular`) | `montecarlo-*.txt`, `tooling-montecarlo.txt`, `tooling-montecarlo-continuous.txt` | **satisfied** — `returnOverTargetCases`: 200 runs, mean 332 m/s, `outOfSpec = 0` (every design case returns against the book's 200 m/s); the sampled tables put the return boundary where the budget pins it, `propellantBudget.returnableBodyMass` ≈ 542 t (≈ 652 t at zero margin) | -| SE-195 trajectory / orbit design | must | `70:LowThrustTransferAnalysis` (thrust, mass flow, outbound/return xenon and days, return Δv per target case), `ExternalTransferAnalysis` via `@ToolExecution`; `73:ThreeBodyDynamics` + `dro70000` (CR3BP shooting solution, period 13.9155 d typed and integrated alike — O6 closed), `ThrustCoastDynamics`; `72:FlybyDeltaV` | `analyses-transfer.txt`, `analyses-external-tool.txt`, `tooling-dynamics.txt`, `dynamics-standard.txt` | **satisfied** (with F-F01/F-F05 open): the DRO revolution integrated over the full period in 320 RK4 steps closes to 0.0 km (the earlier 934 km was 28 minutes of arc from a 3.20 TU stop, not a closure error) and the 30-day arc reaches 1.0011 AU, 12 433 kg; `-tool-dry-run TethysAnalyses::externalTransfer` documented, not pinned (machine paths) | +| SE-195 trajectory / orbit design | must | `70:LowThrustTransferAnalysis` (thrust, mass flow, outbound/return xenon and days, return Δv per target case), `ExternalTransferAnalysis` via `@ToolExecution`; `73:ThreeBodyDynamics` + `dro70000` (CR3BP shooting solution, period 13.9155 d typed and integrated alike — O6 closed), `ThrustCoastDynamics`; `72:FlybyDeltaV` | `analyses-transfer.txt`, `analyses-external-tool.txt`, `tooling-dynamics.txt`, `dynamics-standard.txt` | **satisfied** (F-F05 fixed in pin; F-F01 and F-F10 open): the DRO revolution integrated over the full period in 320 RK4 steps (`tooling-dynamics.txt`, `droRevolutionRk4`) returns to x = 0.80574744, y = 2.8·10⁻⁸ — a closure of 0.011 km after 3.2047 time units = 13.9155 d; the `droStability` analysis form cannot read it yet (F-F10) (the earlier 934 km was 28 minutes of arc from a 3.20 TU stop, not a closure error) and the 30-day arc reaches 1.0011 AU, 12 433 kg; `-tool-dry-run TethysAnalyses::externalTransfer` documented, not pinned (machine paths) | | SE-196 dynamics (state space) | must | `73:ThreeBodyDynamics`, `ThrustCoastDynamics :> ContinuousStateSpaceDynamics`, `DespinDynamics :> DiscreteStateSpaceDynamics`, `RungeKutta4 :> Integrate`, `SteppedDynamics`; `74:droRevolutionRk4`, `firstThrustArcRk4` | `dynamics-standard.txt` (`despinNominal` runs: 7.34 kg over six 60 s pulses; `droRevolution`/`firstThrustArc` refused — F-F01), `tooling-dynamics.txt` | **satisfied** on the tool tier; the standard integrator is F-F01 | | SE-197 environment tables (small-body reading: shape, gravity, SRP; flux) | must | `73:solarFluxTable`, `arrayDegradation` (`SampledFunction`/`SamplePair`), `LinearInterpolation`, `SolarFluxFromTable`, `ArrayDegradationAt`; `70:TargetCaseBody` (mass from diameter and density) | `dynamics-tables.txt` | **satisfied** — flux 1 273.7 W/m² at 1.034 AU, degradation 0.948 at day 900, end value held beyond the table | | SE-198 external tool | should | `70:SolveThrustArc` (`ToolExecution`, `ToolVariable`), `scripts/tools/thrust-arc/`; `-record-run` of the case | `analyses-external-tool.txt` | **satisfied** — Δv 692.7 m/s, 303.2 kg, 54.6 d; `recorded Records::externalTransfer_run1` | @@ -30,12 +30,12 @@ Rows SE-191–SE-204 and the LANG/LIB rows of `AnalysisCases`, `TradeStudies`, ` | LIB-901–905 `TradeStudies` | `EvaluationFunction`, `TradeStudyObjective` (`:>> tradeStudyObjective`), `MinimizeObjective`, `MaximizeObjective`, `TradeStudy` | `trades.txt` | exercised | | LIB-877/878 `AnalysisTooling` | `ToolExecution`, `ToolVariable` | `analyses-external-tool.txt` | exercised | | LIB-879–885 `SampledFunctions` | `SamplePair`, `SampledFunction` (both tables), `Domain`/`Range` read through `fn.samples.domainValue/rangeValue`; `Interpolate`/`interpolateLinear` **not used** (F-002); `Sample` with a calc-def argument rejected by the pilot (open) | `dynamics-tables.txt` | exercised except `Sample`, `Interpolate`, `interpolateLinear` | -| LIB-886–900 `StateSpaceRepresentation` | `StateSpace`, `Input`, `Output`, `StateDerivative`, `GetDerivative`, `GetOutput`, `GetNextState`, `Integrate`, `ContinuousStateSpaceDynamics`, `DiscreteStateSpaceDynamics`, `GetDifference`, `ZeroCrossingEventDef`; `StateSpaceEventDef`/`StateSpaceItem` not reached | `dynamics-standard.txt`, `tooling-dynamics.txt`, `probe-F-F05.txt` | exercised; F-F01, F-F05 | +| LIB-886–900 `StateSpaceRepresentation` | `StateSpace`, `Input`, `Output`, `StateDerivative`, `GetDerivative`, `GetOutput`, `GetNextState`, `Integrate`, `ContinuousStateSpaceDynamics`, `DiscreteStateSpaceDynamics`, `GetDifference`, `ZeroCrossingEventDef`; `StateSpaceEventDef`/`StateSpaceItem` not reached | `dynamics-standard.txt`, `tooling-dynamics.txt`, `probe-F-F05.txt` | exercised; F-F01, F-F09, F-F10 open, F-F05 fixed in pin | | LIB-364–367 `StateSpaceIntegration` | `RK4`, `FixedStepDynamics` (probed; the model's `SteppedDynamics` attributes drive the clock), `ZeroCrossing` with `guard`; `Euler` not used | `tooling-dynamics.txt` | exercised | | LIB-347–349 `Simulation`, LIB-368 `Stochastic`, LIB-343–346 `RandomFunctions` | `MonteCarlo` (`analysed`, `observed`, `runs`, `mean`, `deviation`, `outOfSpec`), `@Probability` on decision branches, `triangular`; `DrawPolicy` via `-draws` | `tooling-montecarlo*.txt` | exercised (`uniform`, `normal`, `uniformInteger`, `Configuration` not used) | | LIB-108–111 `AnalysisRecords` | `-record-run` | `analyses-external-tool.txt` | exercised | | TOOL-017, TOOL-030, TOOL-032 | `-record-run`, `-draws`, `-runs` | as above | exercised | -| GAP-005/006 analysis body and objective | nested `action`/`analysis` steps, objective verdicts | `analyses-transfer.txt`; F-F03, F-F05 | F-F05 contradicts GAP-005's claim for state-space actions | +| GAP-005/006 analysis body and objective | nested `action`/`analysis` steps, objective verdicts | `analyses-transfer.txt`; F-F03, F-F05 | F-F05 fixed in pin; F-F09 (second run in one process) and F-F10 (nested redefinitions) still limit state-space actions | | GAP-007/008 state space | `ZeroCrossingEventDef`, `ContinuousStateSpaceDynamics` | F-F01 | finding | | GAP-014–018 sweeps and samples | `-sweep` with step, product of two ranges, `-samples -seed` | `*-sweep.txt`, `montecarlo-*.txt` | behave per the documented contract; rows carry the verdict per draw | diff --git a/docs/coverage/WP-H.md b/docs/coverage/WP-H.md index 73b78ba..fc53aba 100644 --- a/docs/coverage/WP-H.md +++ b/docs/coverage/WP-H.md @@ -59,7 +59,7 @@ Every command below is `sysml … model/*.sysml`; `make check` runs them all thr | `StandardViewDefinitions` | `InterconnectionView`, `StateTransitionView` | the rest | | `OpenSysMLRenderings` (LIB-339–342) | `asMixedDiagram` | `asCaseDiagram`, `CaseView`, `MixedView` (no use cases in the backbone yet) | | `DiagramLayout` (LIB-112–117) | `Layout`, `Route`, `Style`, `Note` | `Canvas`, `Picture` | -| `DocumentQueries` (LIB-118–163) | `Query`, `OwnedElements`, `Descendants`, `Named`, `WhereType`, `WhereMetadata`, `Union`, `Project`, `Document`, `Section`, `Paragraph`, `Span`, `Ref`, `Table` (`caption`, `groupBy`, `columnLabels`), `List`, `Definitions`, `Diagram` | `Column`/`ColumnSpec` (F-H01 blocks the one use), `Verdicts`, `States`, `Events`, `RelatedElements`, `OrderBy`, `Formula`, `Image`, `Link`, `*Column` runs — content for later packages | +| `DocumentQueries` (LIB-118–163) | `Query`, `OwnedElements`, `Descendants`, `Named`, `WhereType`, `WhereMetadata`, `Union`, `Project`, `Document`, `Section`, `Paragraph`, `Span`, `Ref`, `Table` (`caption`, `groupBy`, `columnLabels`), `List`, `Definitions`, `Diagram` | `Column`/`ColumnSpec` (F-H01 fixed in pin: Method/Level/Stage columns in the V&V matrix), `Verdicts`, `States`, `Events`, `RelatedElements`, `OrderBy`, `Formula`, `Image`, `Link`, `*Column` runs — content for later packages | ## Soft-spot rows @@ -76,4 +76,4 @@ Every command below is `sysml … model/*.sysml`; `make check` runs them all thr ## Findings added -F-H01 (metadata attributes not projectable), F-H02 (`expose P::*` re-exposes private imports), F-H03 (`asTextualNotation` unsupported), F-H04 (pilot/OpenSysML disagree on a concern without an explicit subject), F-H05 (`-render-all`/`-list` treat view defs as views) — see `docs/findings/WP-H.md`. +F-H01 (fixed in pin — metadata attributes projectable through `::`), F-H02 (`expose P::*` re-exposes private imports), F-H03 (`asTextualNotation` unsupported), F-H04 (pilot/OpenSysML disagree on a concern without an explicit subject), F-H05 (`-render-all`/`-list` treat view defs as views) — see `docs/findings/WP-H.md`. diff --git a/docs/findings/WP-A.md b/docs/findings/WP-A.md index 25624cd..c1cd02b 100644 --- a/docs/findings/WP-A.md +++ b/docs/findings/WP-A.md @@ -6,8 +6,10 @@ live under `model/probes/` and are excluded from `make check`. | id | date | build | construct | observed | expected (spec) | status | |---|---|---|---|---|---|---| | F-A01 | 2026-10-22 | OpenSysML develop 0a5fa2d (v0.10.1-2054) / pilot validator at the vendored pin | implicit subject position in `concern def` / `viewpoint def` | A `concern def` whose first member is a `stakeholder` parameter and that declares no `subject`, and a `viewpoint def` that frames such a concern, are rejected by the pilot with `Subject must be first parameter`; OpenSysML accepts both (probe `model/probes/F-A01-implicit-subject-position.sysml`). Declaring `subject s : Thing;` first makes both tools accept. | The two tools disagree, so one of them is wrong about `validateRequirementDefinitionSubjectParameterPosition` (SysML v2 Requirements constraints) when the subject is only implied: either the implied subject counts as a parameter that must precede the stakeholders (pilot) or the rule only applies to a declared subject (OpenSysML). The model declares the subject explicitly everywhere, which is correct under both readings. | open — tool disagreement, to adjudicate against the spec text | -| F-A02 | 2026-10-22 | OpenSysML develop 0a5fa2d (v0.10.1-2054) | requirement group: `requirement grp { require r00; … require r11; }` | `sysml -validate` on a package of twelve bare requirements and one requirement that `require`s all of them does not finish (killed after 10 min at 100 % CPU). Time grows about 8x per added member: 9 members 1 s, 10 members 9 s, 11 members > 60 s (probe `model/probes/F-A02-requirement-group-blowup.sysml`). Subjects, constraints and metadata make no difference; the pilot validates the probe in 4 s. In the model it surfaced as `TethysRequirementsL2::flightSegmentRequirements` with 16 `require`s. | Validation of a RequirementUsage with n nested `require`d requirements should be linear in n: each `require` is one RequirementConstraintMembership (SysML v2 Requirements, `requiredConstraint`) and nothing in the semantics composes them combinatorially. Slow path, not a wrong result. | open — OpenSysML performance defect; the model splits every requirement group to six members or fewer until it is fixed | -| F-A03 | 2026-10-22 | OpenSysML develop 0a5fa2d (v0.10.1-2054) | reading a variant's attribute: `Case::big.m` where `big` is a `variant part` of `variation part def Case` | `-instantiate VariantRead::holder -validate=VariantRead::holder` reports `assert constraint viaVariant could not be evaluated … cannot chain through non-instance member (variant)` while the same chain through a nested non-variant part (`cases.big.m`) holds (probe `model/probes/F-A03-variant-member-read.sysml`). `-satisfy` on an L2 requirement whose constraint read `TargetCase::large.mass` failed the same way. The pilot validates the construct. | A variant usage is a Usage with a bound value like any other member; a feature chain through it should evaluate to that value (KerML Feature chaining, SysML v2 Variability: a variant is a usage owned by the variation). Wrong result class: undetermined where a value exists. | open — OpenSysML evaluation gap; the model keeps the sized bodies in `TethysStakeholders::targetCases` (plain parts) and the `TargetCase` variation subsets them, so requirements read `targetCases.large.mass` | +| F-A02 | 2026-10-22 | OpenSysML develop 0a5fa2d (v0.10.1-2054) | requirement group: `requirement grp { require r00; … require r11; }` | `sysml -validate` on a package of twelve bare requirements and one requirement that `require`s all of them does not finish (killed after 10 min at 100 % CPU). Time grows about 8x per added member: 9 members 1 s, 10 members 9 s, 11 members > 60 s (probe `model/probes/F-A02-requirement-group-blowup.sysml`). Subjects, constraints and metadata make no difference; the pilot validates the probe in 4 s. In the model it surfaced as `TethysRequirementsL2::flightSegmentRequirements` with 16 `require`s. | Validation of a RequirementUsage with n nested `require`d requirements should be linear in n: each `require` is one RequirementConstraintMembership (SysML v2 Requirements, `requiredConstraint`) and nothing in the semantics composes them combinatorially. Slow path, not a wrong result. | fixed in pin — OpenSysML #1382 (develop `5cd37f288`): `-validate` of the twelve-member probe answers "no errors" in 0.04 s; the model keeps its six-member groups as a reading choice, not a workaround | +| F-A03 | 2026-10-22 | OpenSysML develop 0a5fa2d (v0.10.1-2054) | reading a variant's attribute: `Case::big.m` where `big` is a `variant part` of `variation part def Case` | `-instantiate VariantRead::holder -validate=VariantRead::holder` reports `assert constraint viaVariant could not be evaluated … cannot chain through non-instance member (variant)` while the same chain through a nested non-variant part (`cases.big.m`) holds (probe `model/probes/F-A03-variant-member-read.sysml`). `-satisfy` on an L2 requirement whose constraint read `TargetCase::large.mass` failed the same way. The pilot validates the construct. | A variant usage is a Usage with a bound value like any other member; a feature chain through it should evaluate to that value (KerML Feature chaining, SysML v2 Variability: a variant is a usage owned by the variation). Wrong result class: undetermined where a value exists. | fixed in pin — OpenSysML #1381 (develop `5cd37f288`): the probe's `assert constraint viaVariant` and `viaNested` both hold (`VariantRead::holder is valid: all 2 assertions hold`) | | F-A04 | 2026-10-22 | OpenSysML develop 0a5fa2d (v0.10.1-2054) / pilot validator at the vendored pin | `expose A::*` in a `view` where package `A` has a `private import Lib::*` | OpenSysML reports `warning[name-conflict]: Duplicate of imported member name 'Y': Lib::Y (import all A::*), Other::Y (import all Other::*)` — the exposed set contains `Lib::Y`, which `A` only imports privately — and `-strict -warnings-as-errors` makes it an error (probe `model/probes/F-A04-expose-private-import-leak.sysml`). The pilot accepts the file. In the model every `expose TethysRequirementsL2::*` tripped this through L2's private imports. | Adjudicated: spec-mandated. SysML v2.1 §8.3.26.2 Expose: "Visibility is always ignored for an Expose (`isImportAll = true`)", and KerML 1.1 §8.3.2.5 `Namespace::visibleMemberships(…, includeAll = true)` follows the exposed namespace's private imports — so `expose A::*` does import `Lib::Y`, and two import-all exposes that both bring in `Y` are indistinguishable memberships the validator must report (KerML 1.1 §8.3.2.5 `validateNamespaceDistinguishability`). OpenSysML's warning is the spec's verdict; the pilot accepts only because its validator does not check distinguishability of imported memberships. (This supersedes the earlier reading of KerML 7.2.5, which governs `import`, not `expose`.) | adjudicated: spec-mandated; pilot accepts only because its validator does not check distinguishability of imported memberships — the V&V matrix views expose their members one by one, which is the model remedy | -| F-A05 | 2026-10-22 | OpenSysML develop 0a5fa2d (v0.10.1-2054) | `objective { verify r1; … verify r13; }` in a `verification def` | The F-A02 blow-up applies to `verify` members as well as `require` members: `make validate` took about 50 s with one objective of nine `verify`s and one of eight, and did not finish in 200 s once one objective held thirteen; splitting every objective to seven or fewer members brought the whole model back to 3 s. No standalone probe beyond F-A02's: `verify` and `require` are both RequirementConstraintMemberships of the owning requirement. | As F-A02: linear in the number of memberships. | open — same defect as F-A02; the model keeps every objective at seven `verify`s or fewer | -| F-A06 | 2026-10-22 | OpenSysML develop 0a5fa2d (v0.10.1-2054) / pilot validator at the vendored pin | `@VerificationMethod { kind = VerificationMethodKind::test; }` inside a `verification def` body | `-analysis` of a usage of that def reports `verdict: error — statement not executable: calculation body: `then` statement in a body is not executable`; the same def without the metadata usage, with it on the verification usage, or annotated from outside with `metadata VerificationMethod about Def { kind = …; }` runs and passes (probe `model/probes/F-A06-verification-method-in-body.sysml`). Both validators accept every form. | A MetadataUsage is an annotating element, not a step of the case's body; the body's result expression (`PassIf(…)`) should run regardless of where the annotation sits (SysML v2 Metadata; Verification Cases `VerificationMethod` "can be used as metadata annotating a verification case"). Wrong result: an executable case reports error. | open — OpenSysML execution defect; the model declares each case's method with `metadata VerificationMethod about` after the def | +| F-A05 | 2026-10-22 | OpenSysML develop 0a5fa2d (v0.10.1-2054) | `objective { verify r1; … verify r13; }` in a `verification def` | The F-A02 blow-up applies to `verify` members as well as `require` members: `make validate` took about 50 s with one objective of nine `verify`s and one of eight, and did not finish in 200 s once one objective held thirteen; splitting every objective to seven or fewer members brought the whole model back to 3 s. No standalone probe beyond F-A02's: `verify` and `require` are both RequirementConstraintMemberships of the owning requirement. | As F-A02: linear in the number of memberships. | fixed in pin — OpenSysML #1382 (develop `5cd37f288`): same fix as F-A02 | +| F-A06 | 2026-10-22 | OpenSysML develop 0a5fa2d (v0.10.1-2054) / pilot validator at the vendored pin | `@VerificationMethod { kind = VerificationMethodKind::test; }` inside a `verification def` body | `-analysis` of a usage of that def reports `verdict: error — statement not executable: calculation body: `then` statement in a body is not executable`; the same def without the metadata usage, with it on the verification usage, or annotated from outside with `metadata VerificationMethod about Def { kind = …; }` runs and passes (probe `model/probes/F-A06-verification-method-in-body.sysml`). Both validators accept every form. | A MetadataUsage is an annotating element, not a step of the case's body; the body's result expression (`PassIf(…)`) should run regardless of where the annotation sits (SysML v2 Metadata; Verification Cases `VerificationMethod` "can be used as metadata annotating a verification case"). Wrong result: an executable case reports error. | fixed in pin — OpenSysML #1383 (develop `5cd37f288`): `-analysis VProbe::withMeta` runs to `verdict: pass` beside `plain` and `aboutForm`; the model keeps the `about` form, which both validators accept | + +Rows marked *fixed in pin* were re-run on OpenSysML built from source at develop `5cd37f288` (`v0.10.1-2130-g5cd37f288`), the tool pin of `scripts/fetch-tools.sh`; the rows still open reproduce on that build where `runs/` pins them. diff --git a/docs/findings/WP-B.md b/docs/findings/WP-B.md index e0551bb..bae79d4 100644 --- a/docs/findings/WP-B.md +++ b/docs/findings/WP-B.md @@ -5,6 +5,8 @@ Same columns as `docs/findings.md`. Build: OpenSysML `v0.10.1-2054-g0a5fa2d94` ( | ID | Found | Version | Construct | Observed | Expected (spec §) | Status | | --- | --- | --- | --- | --- | --- | --- | -| F-B01 | 2026-10-22 | OpenSysML v0.10.1-2054-g0a5fa2d94 | Enum `==` and enum-sequence `includes` inside a calc, invoked with a qualified enum literal — standalone probe `model/probes/F-B01-enum-equality-standalone.sysml` (one enum, one `==`, one `includes`, both access paths with expected vs returned values in its header); in-model differential `model/probes/F-B01-in-model-differential.sysml` | `-calc ProbeEnumEquality::IsModified(ProbeEnumEquality::Maturity::modified)` = [true] when the probe is the only or the last file loaded, [false] as soon as any further file follows it (`model/00-tethys.sysml` is enough); `HasModified((heritage, modified))` flips the same way; the same calls bound to attributes and read with `-e` stay true. In the full model the wrong branch reaches the budgets: `TethysMarginPolicy::ContingencyFor(Maturity::modified, activePolicy)` = 0.2 with the model loaded vs 0.1 alone (`runs/wpb-margin-policy.txt` vs `runs/wpb-margin-policy-alone.txt`), `UnitsPowerInMode(argentDesign.cdh.flightComputers, TugMode::safe)` is 42 W as a package-level attribute and 0 W inside a part usage's attribute or over `argentDesign.units`, and `+` over two such results returns the left operand (`pumps + heaters` = 20 W, expected 280 W). Consequence: `-satisfy` reports `powerBudgetCloses`, `energyBudgetCloses` and `thermalBudgetCloses` as *holding* against a demand of 0 W, and `MarginFraction` on that demand divides by zero. Running two `-e` in one process returned the first expression's value for the second. | KerML 8.4.4.1 `DataFunctions::'=='` and 8.4.4.6 `SequenceFunctions::includes`: two usages of the same enumeration literal are equal regardless of which file resolved the literal or how the value reached the expression; `+` on two scalar quantities is `QuantityCalculations::'+'`. The model keeps the standard constructs; the budgets name each unit set so the one path the tool evaluates right is visible in `runs/`. | open | -| F-B02 | 2026-10-22 | OpenSysML v0.10.1-2054-g0a5fa2d94 | Feature chain through a variant: `TargetCases::largeCase.bodyMass` where `variant attribute largeCase = large;` (probe `model/probes/F-B02-variant-binding-chain.sysml`) | Both validators accept the file; `-e` fails with `cannot chain through non-instance member (variant)` while the plain `large.bodyMass` = 507000.0 [kg]. In the full model, a `variation attribute def TargetCases` in `TethysBudgets` also changed F-B01's results for unrelated power attributes (removing it flipped `UnitsPowerInMode(argentDesign.cdh.flightComputers, TugMode::safe)` from 0 W to 42 W in one measurement). | SysML v2 7.7.3 Variability: a variant usage is a usage with a value; chaining through it reads that value. The budgets therefore evaluate over the three plain case usages (`smallTarget`, `nominalTarget`, `largeTarget`, listed in `targetCases`) and the variation point stays in the probe. | open | +| F-B01 | 2026-10-22 | OpenSysML v0.10.1-2054-g0a5fa2d94 | Enum `==` and enum-sequence `includes` inside a calc, invoked with a qualified enum literal — standalone probe `model/probes/F-B01-enum-equality-standalone.sysml` (one enum, one `==`, one `includes`, both access paths with expected vs returned values in its header); in-model differential `model/probes/F-B01-in-model-differential.sysml` | `-calc ProbeEnumEquality::IsModified(ProbeEnumEquality::Maturity::modified)` = [true] when the probe is the only or the last file loaded, [false] as soon as any further file follows it (`model/00-tethys.sysml` is enough); `HasModified((heritage, modified))` flips the same way; the same calls bound to attributes and read with `-e` stay true. In the full model the wrong branch reaches the budgets: `TethysMarginPolicy::ContingencyFor(Maturity::modified, activePolicy)` = 0.2 with the model loaded vs 0.1 alone (`runs/wpb-margin-policy.txt` vs `runs/wpb-margin-policy-alone.txt`), `UnitsPowerInMode(argentDesign.cdh.flightComputers, TugMode::safe)` is 42 W as a package-level attribute and 0 W inside a part usage's attribute or over `argentDesign.units`, and `+` over two such results returns the left operand (`pumps + heaters` = 20 W, expected 280 W). Consequence: `-satisfy` reports `powerBudgetCloses`, `energyBudgetCloses` and `thermalBudgetCloses` as *holding* against a demand of 0 W, and `MarginFraction` on that demand divides by zero. Running two `-e` in one process returned the first expression's value for the second. | KerML 8.4.4.1 `DataFunctions::'=='` and 8.4.4.6 `SequenceFunctions::includes`: two usages of the same enumeration literal are equal regardless of which file resolved the literal or how the value reached the expression; `+` on two scalar quantities is `QuantityCalculations::'+'`. The model keeps the standard constructs; the budgets name each unit set so the one path the tool evaluates right is visible in `runs/`. | fixed in pin — OpenSysML #1379 (develop `5cd37f288`): `IsModified(Maturity::modified)` = [true] with a second file loaded, `ProbeEnumMembership::viaNamedSet` = 42.0 [W]; the budgets now read real demand (`runs/modes-table.txt` 822 W … 35 518 W per mode instead of 0 W, `runs/wpb-margin-policy.txt` 0.1, `runs/wpb-power-budget-safe.txt` 832 W), and `powerBudgetCloses` fails against it (`runs/requirements-satisfy.txt`) | +| F-B02 | 2026-10-22 | OpenSysML v0.10.1-2054-g0a5fa2d94 | Feature chain through a variant: `TargetCases::largeCase.bodyMass` where `variant attribute largeCase = large;` (probe `model/probes/F-B02-variant-binding-chain.sysml`) | Both validators accept the file; `-e` fails with `cannot chain through non-instance member (variant)` while the plain `large.bodyMass` = 507000.0 [kg]. In the full model, a `variation attribute def TargetCases` in `TethysBudgets` also changed F-B01's results for unrelated power attributes (removing it flipped `UnitsPowerInMode(argentDesign.cdh.flightComputers, TugMode::safe)` from 0 W to 42 W in one measurement). | SysML v2 7.7.3 Variability: a variant usage is a usage with a value; chaining through it reads that value. The budgets therefore evaluate over the three plain case usages (`smallTarget`, `nominalTarget`, `largeTarget`, listed in `targetCases`) and the variation point stays in the probe. | fixed in pin — OpenSysML #1381 (develop `5cd37f288`): `ProbeVariantChain::viaVariant` = 507000.0 [kg] | | F-B03 | 2026-10-22 | pilot validator at the vendored pin vs OpenSysML v0.10.1-2054-g0a5fa2d94 | `require budget.dryCloses;` — a requirement constraint given as a feature chain to an asserted constraint of the subject (`model/32-budgets.sysml`, every `requirement <'TS-1xx'>`) | The pilot warns `Duplicate of inherited member name 'this' from ownedPerformances, subperformances` on each such line (27 warnings, exit 0); OpenSysML `-strict -warnings-as-errors` reports nothing. | SysML v2 7.21.2 Requirements, 8.3.21 `RequirementConstraintMembership`: `require` takes a constraint usage, which may be a reference by feature chain; neither tool rejects the file, so the disagreement is advisory, but one of the two is wrong about the implied `this` member. | adjudicated — pilot right in substance: KerML 8.3.2.4.5 `validateNamespaceDistinguishability` ("All memberships of a Namespace must be distinguishable from each other") is violated by the two library redefinitions of `Occurrence::this` (`Objects::ownedPerformances`, `Performances::subperformances`) that the referenced required constraint inherits, so the collision is in the Kernel Semantic Library, not the model; model note: `require budget.dryCloses;` is the construct SysML 8.3.21.7 RequirementConstraintMembership provides and stays; the warning is advisory (exit 0) | + +Rows marked *fixed in pin* were re-run on OpenSysML built from source at develop `5cd37f288` (`v0.10.1-2130-g5cd37f288`), the tool pin of `scripts/fetch-tools.sh`; the rows still open reproduce on that build where `runs/` pins them. diff --git a/docs/findings/WP-C.md b/docs/findings/WP-C.md index bacced0..3902fcf 100644 --- a/docs/findings/WP-C.md +++ b/docs/findings/WP-C.md @@ -7,4 +7,7 @@ Rows for integration into `docs/findings.md` (same columns); probes under `model | F-C01 | 2026-10-22 | OpenSysML develop at 0a5fa2d (v0.10.1-2054+, source build) / pilot at the vendored pin | `individual #Tag def Flight :> Campaign;` (probe `model/probes/F-C01-individual-prefix-def.sysml`) | OpenSysML `-validate -strict` rejects the file: `class cannot specialize occurrenceDef (kind mismatch)` on the definition and `An occurrence, item or part must be typed by occurrence definitions` on `individual flight : Flight`. The pilot accepts it. Without the prefix metadata (`individual def Flight :> Campaign;`) both accept. | SysML v2 textual notation, IndividualDefinition: `'individual' EmptyMultiplicityMember DefinitionExtensionKeyword* 'def'` — prefix metadata may sit between `individual` and `def`, and the result is an OccurrenceDefinition with `isIndividual = true` (SysML 7.9.2.2 Occurrence Definitions), so it may specialize an occurrence definition and type an individual usage. The model keeps the construct in the probe and tags the individual usage instead (`individual #FlightMeasured …` is accepted by both). | open — OpenSysML parses `individual #Tag def` as a plain class | | F-C02 | 2026-10-22 | OpenSysML develop at 0a5fa2d / pilot at the vendored pin | `#Tag individual part def Article :> Body;` and `#Tag individual part article : Article;` (probe `model/probes/F-C02-metadata-before-individual.sysml`) | The pilot rejects both (`no viable alternative at input 'individual'`). OpenSysML `-validate -strict -warnings-as-errors` accepts the file with no diagnostic. | SysML v2 textual notation, IndividualDefinition / OccurrenceUsagePrefix: `'individual'` precedes the PrefixMetadataMember (`individual #Tag part def …`), so metadata before `individual` is not standard notation and strict conformance should report it as such. | open — OpenSysML misses a nonstandard-notation diagnostic | | F-C03 | 2026-10-22 | OpenSysML develop at 0a5fa2d / pilot at the vendored pin | `action def Burn { in durationS : Real; } action burn : Burn { :>> durationS = 3.0; }` (probe `model/probes/F-C03-redefinition-direction.sysml`) | The pilot rejects the redefinition: `Redefining feature must have a compatible direction` (validateRedefinitionDirectionConformance). OpenSysML `-validate -strict -warnings-as-errors` accepts it silently. | SysML v2 8.3.3.1 / KerML validateRedefinitionDirectionConformance: a redefining feature's direction must conform to the redefined feature's; a usage-body `:>> x` without a direction has none, so `in :>> durationS = 3.0` is the conforming form. The model writes `in :>> …` / `out :>> …` throughout. | open — OpenSysML misses the direction check | -| F-C04 | 2026-10-22 | OpenSysML develop at 0a5fa2d | `action def Decide { in report : Report; out go : Boolean = report.size <= 10.0; }` run in a sequence `action measure : Measure; then action decision : Decide { in report = measure.report; }` performed by a part whose `bind run.measure.report = theReport;` supplies the input (probe `model/probes/F-C04-output-default-before-input.sysml`; in the model `TethysProximityOps::captureOperation`, run `runs/wpc-capture-sequence.txt`) | `-instantiate … -action` fails before the first step: `invoke action Decide: initialize action: initialize attributes: eval attribute default go: type mismatch: operator '<=' is not defined for a sequence and a Rational`. The output's default is evaluated when the action is initialised, while its input is still empty, and the empty operand is treated as a type error rather than deferred. Both validators accept the file. | SysML v2 7.16 Actions: an input parameter is bound when the action is performed (here through the succession and the `bind`), and the output's value is a function of that input; evaluating it before the input is available is not a model error. Expected: the step runs and `go` evaluates to `true` (6.8 ≤ 10.0). | open — OpenSysML evaluates output defaults before inputs are bound | +| F-C04 | 2026-10-22 | OpenSysML develop at 0a5fa2d | `action def Decide { in report : Report; out go : Boolean = report.size <= 10.0; }` run in a sequence `action measure : Measure; then action decision : Decide { in report = measure.report; }` performed by a part whose `bind run.measure.report = theReport;` supplies the input (probe `model/probes/F-C04-output-default-before-input.sysml`; in the model `TethysProximityOps::captureOperation`, run `runs/wpc-capture-sequence.txt`) | `-instantiate … -action` fails before the first step: `invoke action Decide: initialize action: initialize attributes: eval attribute default go: type mismatch: operator '<=' is not defined for a sequence and a Rational`. The output's default is evaluated when the action is initialised, while its input is still empty, and the empty operand is treated as a type error rather than deferred. Both validators accept the file. | SysML v2 7.16 Actions: an input parameter is bound when the action is performed (here through the succession and the `bind`), and the output's value is a function of that input; evaluating it before the input is available is not a model error. Expected: the step runs and `go` evaluates to `true` (6.8 ≤ 10.0). | fixed in pin — OpenSysML #1386 (develop `5cd37f288`): `captureOperation` instantiates and `capture.characterise.characterisation` is bound before `commit.go` is read; the `commit.go` failure that remains in `runs/wpc-capture-sequence.txt` is F-C05 | +| F-C05 | 2026-10-22 | OpenSysML develop `5cd37f288` (v0.10.1-2130) | `action def Run { in system : Mechanism; action check : Check { in mechanism = system; } }` performed by a part as `perform action run : Run { in system = mechanism; }`, with `Check::go` defaulting from `mechanism.limit` (`model/probes/F-C05-nested-in-parameter-from-enclosing-in.sysml`; in the model `CaptureSequence::commit.mechanism = system`) | `run.system.limit` = [200.0] but `run.check.mechanism.limit` = [] and `run.check.go` fails with "operator '<=' is not defined for a Rational and a sequence" (`runs/probe-F-C05.txt`; `runs/wpc-capture-sequence.txt` shows the same on `commit.go`) | A parameter binding in an action body binds the nested parameter to the enclosing one (SysML v2 7.16.2 Action Definitions and Usages, parameter membership and binding), so `check.mechanism` is the `Mechanism` bound to `run.system` and `go` = [true] | open — OpenSysML binding gap, distinct from F-C04: the value is absent whenever it is read, not only early; the model stays as it is | + +Rows marked *fixed in pin* were re-run on OpenSysML built from source at develop `5cd37f288` (`v0.10.1-2130-g5cd37f288`), the tool pin of `scripts/fetch-tools.sh`; the rows still open reproduce on that build where `runs/` pins them. diff --git a/docs/findings/WP-D.md b/docs/findings/WP-D.md index 1047f0e..f22f089 100644 --- a/docs/findings/WP-D.md +++ b/docs/findings/WP-D.md @@ -10,4 +10,6 @@ Same columns as `docs/findings.md`. Versions: OpenSysML built from `develop` at | F-D01 | 2026-10-22 | OpenSysML v0.10.1-2054 / pilot at the vendored pin | `model/probes/F-D01-positional-parameter-redefinition.sysml`: `action def Step { in input; out output; } … action stepA : Step { out :>> output; }` | OpenSysML `-validate -strict -warnings-as-errors` accepts the file. The pilot reports `Redefining feature must have a compatible direction` on `output`, and in the full model (an earlier draft of `TethysMeridian::SciencePipeline`) also failed to resolve `stepA.input`. | The parameters of a step redefine the parameters of its behavior *by position* (KerML 8.4.4.6 / SysML 7.17.2: the owned parameters of an action usage redefine, in order, those of its action definition). The first parameter written in `stepA` therefore redefines `input` as well as, explicitly, `output`; an `out` redefining an `in` is a direction conflict the validator must report. OpenSysML is missing the diagnostic. The model writes `in :>> input; out :>> output` so both validators agree. | open — missing diagnostic in OpenSysML (pilot correct) | | F-D02 | 2026-10-22 | OpenSysML v0.10.1-2054 / pilot at the vendored pin | `model/probes/F-D02-constructor-overrides-bound-value.sysml`: `item def A { attribute x : Integer = 1; } … send new A(x = 2) to receiver` | OpenSysML accepts the file. The pilot reports `Cannot override a binding feature value` on `x = 2`. OpenSysML does report the same override when it is written as a redefinition (`attribute :>> x = 2`), with a hint to write `default =`. | A feature value written with `=` is a binding that every specialization inherits; a constructor argument that rebinds it is the same conflict as a redefinition that rebinds it (KerML 8.3.4.9 FeatureValue, SysML 7.5.3 default feature values). OpenSysML should report the constructor form as it reports the redefinition form. The model omits the fixed attributes from every `new …(…)` argument list (`TethysOperations::OperationsScenario`). | open — missing diagnostic in OpenSysML (pilot correct) | | F-D03 | 2026-10-22 | OpenSysML v0.10.1-2054 / pilot at the vendored pin | `model/probes/F-D03-allocate-owned-action.sysml`: `part def Plan { occurrence pass1 : Pass; action owned : Downlink; allocate owned to pass1; }` | The pilot reports `Must be an accessible feature (use dot notation for nesting)` on `owned`; the same allocation written with `perform action performed : Downlink; allocate performed to pass1;` passes. OpenSysML accepts both. | Both ends are owned features of `Plan`, the allocation's owning type, so both are accessible connector ends (KerML 8.3.4.8 Connector, validateConnectorTypeFeaturing); whether the action usage is performed or owned does not change its featuring type. The pilot's diagnostic looks spurious. The model uses `perform action` for the pass-plan activities (`TethysOperations::DailyPassPlan`) so both validators accept it; the plain form is kept in the probe. | adjudicated — pilot right by the letter of the spec: KerML 8.3.4.5.3 `checkConnectorTypeFeaturing` ("Each relatedFeature of a Connector must have each featuringType of the Connector as a direct or indirect featuringType") read with SysML 8.3 `deriveUsageMayTimeVary` ("If isComposite = true, it does not specialize Actions::Action"): the `allocate` in a part def is time-varying and featured by the part's snapshots, a composite action usage is featured by the part itself, so an owned, non-performed action usage is not a valid allocation end; the model's `perform action` form in `TethysOperations::DailyPassPlan` is the correct one; probe kept, the pilot diagnostic is not spurious | -| F-D04 | 2026-10-22 | OpenSysML v0.10.1-2054 | `model/54-icds-tooling.sysml`: `IcdParameters` — `Project(source = WhereType(source = OwnedElements(source = Named(qualifiedName = icd)), type = "AttributeUsage"), properties = ("name", "type", "value"))` | `-render-document` fails with `query … references unknown property value`; the projectable properties are the KerML/SysML metaclass properties (`name`, `type`, `documentation`, `qualifiedName`, `direction`, …) and a `Column` cell reads a *feature of* the row element, not the row element's own feature value. An ICD parameter table therefore lists the parameters but cannot show the values the model binds to them. | A document query over attribute usages should be able to project the value bound by the usage's `FeatureValue` (KerML 8.3.4.9; SysML 7.5.3), e.g. as a `value` property or a `Column(path = …)` form, since that is what an ICD table publishes. | open — DocumentQueries gap | +| F-D04 | 2026-10-22 | OpenSysML v0.10.1-2054 | `model/54-icds-tooling.sysml`: `IcdParameters` — `Project(source = WhereType(source = OwnedElements(source = Named(qualifiedName = icd)), type = "AttributeUsage"), properties = ("name", "type", "value"))` | `-render-document` fails with `query … references unknown property value`; the projectable properties are the KerML/SysML metaclass properties (`name`, `type`, `documentation`, `qualifiedName`, `direction`, …) and a `Column` cell reads a *feature of* the row element, not the row element's own feature value. An ICD parameter table therefore lists the parameters but cannot show the values the model binds to them. | A document query over attribute usages should be able to project the value bound by the usage's `FeatureValue` (KerML 8.3.4.9; SysML 7.5.3), e.g. as a `value` property or a `Column(path = …)` form, since that is what an ICD table publishes. | fixed in pin — OpenSysML #1385 (develop `5cd37f288`): `Project(… properties = ("name", "type", "valuation"))` gives the bound value with its unit (tug–inspector ICD 28 [V], 15 [W], 9600 [bit/s]; launch ICD 1.666 [m] adapter, 58.8 [m/s²] axial); `model/54-icds-tooling.sysml` projects it and `runs/wpd-*-icd-document.txt` pin the tables | + +Rows marked *fixed in pin* were re-run on OpenSysML built from source at develop `5cd37f288` (`v0.10.1-2130-g5cd37f288`), the tool pin of `scripts/fetch-tools.sh`; the rows still open reproduce on that build where `runs/` pins them. diff --git a/docs/findings/WP-E.md b/docs/findings/WP-E.md index 4ae7dd3..80138aa 100644 --- a/docs/findings/WP-E.md +++ b/docs/findings/WP-E.md @@ -4,6 +4,8 @@ Same columns as `docs/findings.md`; ids are renumbered at integration. Probes un | ID | Found | Version | Construct | Observed | Expected (spec §) | Status | | --- | --- | --- | --- | --- | --- | --- | -| F-E01 | 2026-10-22 | OpenSysML v0.10.1-2054 | `assign g.missDistance := …` from a `perform action` of the part that `exhibit state g : Guard` (probe `model/probes/F-E01-exhibited-state-attribute-write.sysml`) | The assignment writes a separate materialization of `g` (`-trace`: `eval feature g -> instance#2`); the running machine keeps evaluating its own `missDistance` at the initial 20 000 km, its `accept when missDistance < 10000 [km]` never fires, and the later `Abort` is "consumed by no transition". Binding the state's attribute to the owner's (`:>> missDistance = Flight::missDistance`) behaves the same. | The exhibited state usage is one feature of the part; `g.missDistance` names the attribute of that one performance, so the write and the guard's read are the same value and the machine reaches `aborting` at t = 100 s (SysML v2 7.21.2 exhibited states as performances of the exhibiting part; KerML 7.4.9 feature chains). The model avoids the pattern: monitors read attributes the machine owns or guard on signal payloads (`TethysModes`, `TethysFdir`). | open | -| F-E02 | 2026-10-22 | OpenSysML v0.10.1-2054 | `accept after howLong` where `howLong` is an `in` parameter of the action definition (probe `model/probes/F-E02-accept-after-parameter.sysml`) | Instantiation fails with "accept after howLong must be constant, got sequence"; so does an owned attribute initialised from the parameter (`attribute d = howLong`) and a parameter bound to a literal (`in howLong = 20.0 [d]`). The same wait on an owned attribute with a literal value runs. | `accept after` takes any expression whose result is a `DurationValue` (SysML v2 7.16.6 Accept Action Usages: `after` is a `TriggerInvocationExpression` over a duration expression); a bound `in` parameter is such an expression. `TethysSequence::DroInsertionSequence` keeps its arc length as an owned attribute for this reason. | open | -| F-E03 | 2026-10-22 | OpenSysML v0.10.1-2054 | `send new X() via response` from a state machine whose definition owns `port response : ~CommandPort`, exhibited by a part that owns a port of the same name connected by an `interface … connect tug.response to tug.command` (both ends on the same part) | "send reaches no receiving port: port "response" is joined to no port that can receive it", whether the interface is declared inside the part or in its owner. `accept … via command` on the same state definition's `port command` does resolve to the exhibiting part's port and receives what an interface delivers there. | A state usage is an occurrence usage and may own ports; the exhibited performance's port and the part's port of the same name are bound by the exhibitor, so a `via` send should leave through the connected end as the `via` accept arrives through it (SysML v2 7.16.6 Send Action Usages, 7.21 Exhibit States). Not reduced to a standalone probe: the model instead sends the supervisor's requests to the tug itself (bare `send`), which the mode machine exhibited beside it accepts with a bare `accept` (`TethysFdir::FdirSupervisor`, `TethysModes::TugModes`). | open — needs a reduced probe to separate the same-part interface from the state-port send | +| F-E01 | 2026-10-22 | OpenSysML v0.10.1-2054 | `assign g.missDistance := …` from a `perform action` of the part that `exhibit state g : Guard` (probe `model/probes/F-E01-exhibited-state-attribute-write.sysml`) | The assignment writes a separate materialization of `g` (`-trace`: `eval feature g -> instance#2`); the running machine keeps evaluating its own `missDistance` at the initial 20 000 km, its `accept when missDistance < 10000 [km]` never fires, and the later `Abort` is "consumed by no transition". Binding the state's attribute to the owner's (`:>> missDistance = Flight::missDistance`) behaves the same. | The exhibited state usage is one feature of the part; `g.missDistance` names the attribute of that one performance, so the write and the guard's read are the same value and the machine reaches `aborting` at t = 100 s (SysML v2 7.21.2 exhibited states as performances of the exhibiting part; KerML 7.4.9 feature chains). The model avoids the pattern: monitors read attributes the machine owns or guard on signal payloads (`TethysModes`, `TethysFdir`). | fixed in pin — OpenSysML #1387 (develop `5cd37f288`): the probe's machine processes both events (`Advanced to 200.0 (2 event(s) processed)`, `Current state: safe`, last event at 150.0) instead of leaving the `Abort` consumed by no transition | +| F-E02 | 2026-10-22 | OpenSysML v0.10.1-2054 | `accept after howLong` where `howLong` is an `in` parameter of the action definition (probe `model/probes/F-E02-accept-after-parameter.sysml`) | Instantiation fails with "accept after howLong must be constant, got sequence"; so does an owned attribute initialised from the parameter (`attribute d = howLong`) and a parameter bound to a literal (`in howLong = 20.0 [d]`). The same wait on an owned attribute with a literal value runs. | `accept after` takes any expression whose result is a `DurationValue` (SysML v2 7.16.6 Accept Action Usages: `after` is a `TriggerInvocationExpression` over a duration expression); a bound `in` parameter is such an expression. `TethysSequence::DroInsertionSequence` keeps its arc length as an owned attribute for this reason. | fixed in pin — OpenSysML #1384 (develop `5cd37f288`): `hostA` and `hostC` both run to `Action completed` with `finished = [true]`, `howLong = 20.0 [d]` | +| F-E03 | 2026-10-22 | OpenSysML v0.10.1-2054 | `send new X() via response` from a state machine whose definition owns `port response : ~CommandPort`, exhibited by a part that owns a port of the same name connected by an `interface … connect tug.response to tug.command` (both ends on the same part) | "send reaches no receiving port: port "response" is joined to no port that can receive it", whether the interface is declared inside the part or in its owner. `accept … via command` on the same state definition's `port command` does resolve to the exhibiting part's port and receives what an interface delivers there. | A state usage is an occurrence usage and may own ports; the exhibited performance's port and the part's port of the same name are bound by the exhibitor, so a `via` send should leave through the connected end as the `via` accept arrives through it (SysML v2 7.16.6 Send Action Usages, 7.21 Exhibit States). Not reduced to a standalone probe: the model instead sends the supervisor's requests to the tug itself (bare `send`), which the mode machine exhibited beside it accepts with a bare `accept` (`TethysFdir::FdirSupervisor`, `TethysModes::TugModes`). | open — OpenSysML #1388 (send via a state definition's own port through what binds or connects it) is not in the pin; the exhibiting parts now bind the mirrored port explicitly (`bind modes.command = command`, `bind fdir.command = command`), which both validators accept and which leaves every pinned modes/fdir/sequence run unchanged; no pinned run exercises the state-port `send` path until the fix is pinned | + +Rows marked *fixed in pin* were re-run on OpenSysML built from source at develop `5cd37f288` (`v0.10.1-2130-g5cd37f288`), the tool pin of `scripts/fetch-tools.sh`; the rows still open reproduce on that build where `runs/` pins them. diff --git a/docs/findings/WP-F.md b/docs/findings/WP-F.md index d971a48..1beb2f8 100644 --- a/docs/findings/WP-F.md +++ b/docs/findings/WP-F.md @@ -4,15 +4,17 @@ Same columns as [../findings.md](../findings.md). Every row has its smallest con | ID | Found | Version | Construct | Observed | Expected (spec §) | Status | | --- | --- | --- | --- | --- | --- | --- | -| F-F01 | 2026-10-22 | v0.10.1-2054 | `model/73-dynamics.sysml` `calc def RungeKutta4 :> Integrate` bound by `calc :>> getNextState { calc :>> integrate : RungeKutta4; }` in `droRevolution` / `firstThrustArc`; probe `model/probes/F-F01-state-space-integrator.sysml` | Both validators accept the file; `-action TethysDynamics::droRevolution` is refused: `unsupported state-space dynamics: action droRevolution binds integrate to RungeKutta4; the runtime integrates by StateSpaceIntegration::Euler or StateSpaceIntegration::RK4` (`runs/dynamics-standard.txt`). With `StateSpaceIntegration::RK4` bound instead (`model/74-analyses-tooling.sysml`) the same dynamics propagate (`runs/tooling-dynamics.txt`). A standard `event occurrence … : ZeroCrossingEventDef` without the OpenSysML `guard` is refused the same way (`zero crossing xAxisCrossing … binds no guard`). | SysML v2 Domain Libraries, Analysis, `StateSpaceRepresentation`: `Integrate` is an abstract calc def for the user to specialise and `ContinuousStateSpaceDynamics::getNextState` invokes whatever `integrate` is bound to; a conforming body should be evaluated like any other calc. | open | -| F-F02 | 2026-10-22 | v0.10.1-2054 | `subject :>> body = TargetCase::large` and `part :>> target = TargetCase::large` read through a configuration; probe `model/probes/F-F02-variant-as-subject.sysml` | Both validators accept; `-analysis` fails `cannot chain through non-instance member (variant)` for both forms, while the same body as a plain part usage evaluates (`runs/probe-F-F02.txt`). `-instantiate` of the configuration reports `body … holds a value (large), not an object`. | SysML v2 §7.6.5 Variability: a variant is a usage of the variation; binding it as a feature value is the configuration idiom (the pilot's variability examples bind variants with `= X::y`), so the subject should denote the variant's object. | open — the analyses use the plain case parts (`smallTarget` …) and keep `TargetCase` as the variation | -| F-F03 | 2026-10-22 | v0.10.1-2054 | `analysis def X { @CredibilityAssessment { … } subject …; … }`; probe `model/probes/F-F03-metadata-in-analysis-body.sysml` | Both validators accept; `-analysis` fails `statement not executable: calculation body: \`then\` statement in a body is not executable`. The identical annotation written outside the body as `metadata CredibilityAssessment about X { … }` runs (`runs/probe-F-F03.txt`). | SysML v2 §7.26 Metadata: a metadata usage annotates its owner and is not an action node; the case body's steps are its action usages only (§7.23). | open — the model uses the `about` form | +| F-F01 | 2026-10-22 | v0.10.1-2054 | `model/73-dynamics.sysml` `calc def RungeKutta4 :> Integrate` bound by `calc :>> getNextState { calc :>> integrate : RungeKutta4; }` in `droRevolution` / `firstThrustArc`; probe `model/probes/F-F01-state-space-integrator.sysml` | Both validators accept the file; `-action TethysDynamics::droRevolution` is refused: `unsupported state-space dynamics: action droRevolution binds integrate to RungeKutta4; the runtime integrates by StateSpaceIntegration::Euler or StateSpaceIntegration::RK4` (`runs/dynamics-standard.txt`). With `StateSpaceIntegration::RK4` bound instead (`model/74-analyses-tooling.sysml`) the same dynamics propagate (`runs/tooling-dynamics.txt`). A standard `event occurrence … : ZeroCrossingEventDef` without the OpenSysML `guard` is refused the same way (`zero crossing xAxisCrossing … binds no guard`). | SysML v2 Domain Libraries, Analysis, `StateSpaceRepresentation`: `Integrate` is an abstract calc def for the user to specialise and `ContinuousStateSpaceDynamics::getNextState` invokes whatever `integrate` is bound to; a conforming body should be evaluated like any other calc. | open — the pinned build refuses the model's integrator explicitly: `droRevolution` and `firstThrustArc` fail with "unsupported state-space dynamics: action droRevolution binds integrate to RungeKutta4; the runtime integrates by StateSpaceIntegration::Euler or StateSpaceIntegration::RK4" (`runs/dynamics-standard.txt`); `DroStabilityAnalysis::revolution` now binds its integrator per analysis usage (`droStability` the model's RungeKutta4, `TethysAnalysesTooling::droStabilityRk4` the library RK4), and the usage-level binding meets F-F10 | +| F-F02 | 2026-10-22 | v0.10.1-2054 | `subject :>> body = TargetCase::large` and `part :>> target = TargetCase::large` read through a configuration; probe `model/probes/F-F02-variant-as-subject.sysml` | Both validators accept; `-analysis` fails `cannot chain through non-instance member (variant)` for both forms, while the same body as a plain part usage evaluates (`runs/probe-F-F02.txt`). `-instantiate` of the configuration reports `body … holds a value (large), not an object`. | SysML v2 §7.6.5 Variability: a variant is a usage of the variation; binding it as a feature value is the configuration idiom (the pilot's variability examples bind variants with `= X::y`), so the subject should denote the variant's object. | fixed in pin — OpenSysML #1381 (develop `5cd37f288`): `viaVariant`, `viaConfiguration` and `viaPlainPart` all give `massKg = [505664.05]` (`runs/probe-F-F02.txt`; the probe now names `CaptureTargetCase::large` and `targetCases.large`, the model's current names); the analyses keep the plain case parts as the subject by choice | +| F-F03 | 2026-10-22 | v0.10.1-2054 | `analysis def X { @CredibilityAssessment { … } subject …; … }`; probe `model/probes/F-F03-metadata-in-analysis-body.sysml` | Both validators accept; `-analysis` fails `statement not executable: calculation body: \`then\` statement in a body is not executable`. The identical annotation written outside the body as `metadata CredibilityAssessment about X { … }` runs (`runs/probe-F-F03.txt`). | SysML v2 §7.26 Metadata: a metadata usage annotates its owner and is not an action node; the case body's steps are its action usages only (§7.23). | fixed in pin — OpenSysML #1383 (develop `5cd37f288`): `TethysMetadataInBodyProbe::inline` runs (`dryMassKg = [5600.0]`) beside `outside` (`runs/probe-F-F03.txt`) | | F-F04 | 2026-10-22 | v0.10.1-2054 / pilot 0.62.0 | `private import SI::*; private import RealFunctions::*; … min(a, b)`; probe `model/probes/F-F04-ambiguous-min.sysml` | OpenSysML binds `RealFunctions::min` and evaluates `2.0` (`runs/probe-F-F04.txt`); the pilot binds `SI::min` (the minute) and reports `Must invoke a behavior or a behavioral feature`. Neither reports that two imported members carry the name. `max` has no unit namesake and resolves in both. | KerML §8.2.3.5 name resolution: a name imported from two namespaces is ambiguous in the importing scope and should be reported, not resolved by preference. | adjudicated — under-specified: KerML 8.3.2.4.3 `isDistinguishableFrom` ("… or neither of the metaclasses of the memberElement of this Membership and the memberElement of the other Membership conform to the other") makes a Function and an AttributeUsage of the same name distinguishable, so both are imported and no diagnostic is implied; 8.2.3.5.3 gives no tiebreak between two local resolutions, so both tools' choices are permitted; the model keeps `RealFunctions::min` qualified, the only portable form | -| F-F05 | 2026-10-22 | v0.10.1-2054 | `analysis def DroStabilityAnalysis { … action revolution : ThreeBodyDynamics { … } return closureKm = f(revolution.stateSpace) }` (`model/73-dynamics.sysml`); probe `model/probes/F-F05-nested-state-space-action.sysml` (standalone: free fall, expected `finalHeight` 55.855, returned 100.0) | **Silent wrong result.** `-analysis TethysDynamics::droStability` reports `closureKm = [0.0]` and `objective closes: satisfied` (`runs/dynamics-standard.txt`): the nested state-space action is neither performed nor refused, its state is read at its initial value and the objective is judged on it. The minimal probe binds `StateSpaceIntegration::RK4` and shows the same: a nested usage that binds its own `:>> stateSpace`/`timeStep`/`stopTime` returns `finalHeight = [100.0]` (the bound initial state) while the identical action standalone ends at `⟨55.855, −29.43⟩` (`runs/probe-F-F05.txt`); with the bindings on the action def instead the nested run steps, so the usage-level bindings are what the case's body loses. The DRO action standalone (`runs/tooling-dynamics.txt`) ends at `⟨0.80576, −0.00243, …⟩`, 934 km from its start. | SysML v2 §7.23 Analysis cases: the owned action usages are the steps of the case and are performed before the result expression and objective are evaluated. | open | +| F-F05 | 2026-10-22 | v0.10.1-2054 | `analysis def DroStabilityAnalysis { … action revolution : ThreeBodyDynamics { … } return closureKm = f(revolution.stateSpace) }` (`model/73-dynamics.sysml`); probe `model/probes/F-F05-nested-state-space-action.sysml` (standalone: free fall, expected `finalHeight` 55.855, returned 100.0) | **Silent wrong result.** `-analysis TethysDynamics::droStability` reports `closureKm = [0.0]` and `objective closes: satisfied` (`runs/dynamics-standard.txt`): the nested state-space action is neither performed nor refused, its state is read at its initial value and the objective is judged on it. The minimal probe binds `StateSpaceIntegration::RK4` and shows the same: a nested usage that binds its own `:>> stateSpace`/`timeStep`/`stopTime` returns `finalHeight = [100.0]` (the bound initial state) while the identical action standalone ends at `⟨55.855, −29.43⟩` (`runs/probe-F-F05.txt`); with the bindings on the action def instead the nested run steps, so the usage-level bindings are what the case's body loses. The DRO action standalone (`runs/tooling-dynamics.txt`) ends at `⟨0.80576, −0.00243, …⟩`, 934 km from its start. | SysML v2 §7.23 Analysis cases: the owned action usages are the steps of the case and are performed before the result expression and objective are evaluated. | fixed in pin — OpenSysML #1380 (develop `5cd37f288`): `NestedStateSpaceProbe::drop` gives `finalHeight = [55.855]` (`runs/probe-F-F05.txt`); the standalone `fall` in the same run then shows ⟨100.0, 0.0⟩, which is F-F09, not this finding | | F-F06 | 2026-10-22 | v0.10.1-2054 | `action def Solve { metadata ToolExecution {…} out deltaVMPerS : Real { @ToolVariable {…} } }` without `[1]`; probe `model/probes/F-F06-tool-output-multiplicity.sysml` | The tool's reply is refused: `malformed output: deltaVMPerS: one value answered but deltaVMPerS holds a sequence (multiplicity [0..*])` (`runs/probe-F-F06.txt`); with `[1]` on each parameter (`model/70-analyses.sysml` `SolveThrustArc`) the run completes. | SysML v2 §7.6.3: an owned usage with no declared multiplicity has multiplicity 1..1 (only package-level usages default to 0..*), so a single value is the conforming reply. | adjudicated — OpenSysML right: SysML 7.6.3 ("a tighter default of [1..1] is implicitly declared for the usage if … the usage is an attribute usage, an item usage (including a part usage, except if it is a connection usage), or a port usage"); `out deltaVMPerS : Real` carries no kind keyword, so it is a reference usage and keeps the `[0..*]` default; model note: a tool parameter that carries one value declares `[1]`, as `SolveThrustArc` does | | F-F07 | 2026-10-22 | develop 0a5fa2d94 (and the evaluator-fix build of PR #1379) | `attribute returnXenon : MassValue = xenonLoad * … − outboundXenon − rendezvousXenon` where `rendezvousXenon = PropellantFor(…, tugAloneMass − outboundXenon, …)` and `xenonLoad` is a variation attribute selected per configuration (`TethysVariants::RetrievalArchitecture`); probe `model/probes/F-F07-nested-chain-step-limit.sysml` | Both validators accept. `-e` of the chained return xenon evaluates on the baseline load (3 869 kg) but reports `evaluation step limit exceeded (10000000 steps)` on the heavy load, although every term of the chain evaluates on its own on the same configuration (`heavyChained.rendezvousXenon` = 68.8 kg) and the identical arithmetic in a plain package evaluates for both loads; raising `OPENSYSML_MAX_STEPS` twentyfold does not finish (`runs/probe-F-F07.txt`). | KerML 8.4.4.9 Expression evaluation: an `Expression` evaluates its argument expressions and applies its function; nothing in the semantics makes the cost of a feature-chain value depend on the value of another feature of the same object, so the chain should evaluate as its parts do. | open — `TethysVariants::RetrievalArchitecture` writes the two arcs flown alone as one `PropellantFor` call over the summed Δv (`tugAloneXenon`), which is the same rocket equation (sequential arcs multiply), and the chained form is kept in the probe | | F-F08 | 2026-10-22 | develop 0a5fa2d94 (and the evaluator-fix build of PR #1379) | `analysis def TypedSweep { … in attribute speed : SpeedValue default = 10.0 ['m/s']; … }` swept with `-sweep "speed=1.0..3.0:1.0"`; probe `model/probes/F-F08-sweep-quantity-range.sysml` | Both validators accept the probe. The sweep runner refuses the range: `invalid sweep range: range start 1.0 of speed: type mismatch: cannot write 1.0 (a Real) to a feature typed by SpeedValue`; the same parameter as a Real (`speedMPerS`) sweeps (`runs/probe-F-F08.txt`). The `-samples` runner draws the same way. | SysML 9.2.3 Quantities: a `ScalarQuantityValue` is a `num : Number` with an `mRef : MeasurementReference`, so a bare number is not a value of `SpeedValue` and the refusal itself is right; what is missing is a way for the runner to state the range in the parameter's unit (the `[unit]` form the evaluator accepts in `-e`). | open — tooling, not a model error: the eight swept or sampled parameters (`TethysAnalyses::LowThrustTransferAnalysis::outboundDeltaVMPerS`, `TethysMonteCarlo` `bodyMassKg`, `diameterM`, `rotationPeriodS`, `vInfinityKmPerS`, `insertionErrorMPerS`, `coastDaysPerEvent`, `safeModeEvents`) stay suffix-named Reals with a doc comment naming this finding; every other analysis-tier value carries its ISQ type | +| F-F09 | 2026-10-22 | develop `5cd37f288` (v0.10.1-2130) | The same state-space action run twice in one process (`sysml -action FF09::fall -action FF09::fall`, three 1 s RK4 steps of free fall from 100 m; `model/probes/F-F09-second-run-of-state-space-action.sysml`) | The first run ends at `stateSpace = ⟨55.855, −29.43⟩`, the second at `⟨100.0, 0.0⟩` with `time = 3.0 [s]` (`runs/probe-F-F09.txt`); an analysis run before the action does the same to it (`runs/probe-F-F05.txt`) | Each run is a separate performance of the action from its bound initial state (SysML v2 7.16.1), so both end at ⟨55.855, −29.43⟩ | open — OpenSysML runtime defect; pinned runs that chain a state-space action after another run show it | +| F-F10 | 2026-10-22 | develop `5cd37f288` (v0.10.1-2130) | Redefinitions of a nested state-space action's features from a redefining usage — `analysis dropA : Drop { action :>> fall { calc :>> getNextState { calc :>> integrate : RK4; } event occurrence :>> ground : ZeroCrossing { :>> guard = …; } } }` — or from a specialising `analysis def` (`model/probes/F-F10-nested-action-redefinition.sysml`; in the model `TethysAnalysesTooling::droStabilityRk4`) | `dropA` and `dropC` fail with "unsupported state-space dynamics: zero crossing ground of action fall binds no guard"; the same bindings written where `fall` is declared (`dropB`) give `finalHeight = [55.855]` (`runs/probe-F-F10.txt`; `runs/tooling-dro-stability.txt` shows the same on `revolution`) | A redefining usage's nested redefinitions apply to the redefined feature (KerML 7.3.4.4 Redefinition; SysML v2 7.6.3 Usages); both validators accept the file | open — OpenSysML runtime gap; the DRO closure and period are read from `TethysAnalysesTooling::droRevolutionRk4` (`runs/tooling-dynamics.txt`) until it is fixed | ## Observations that are not tool defects - The DeciSym pilot wrapper (`validate-sysml`) resolves cross-file references only to files given *earlier* on its command line, which is why `make pilot-mission` depends on the numeric file order (a mission-tier file may import only lower-numbered packages). @@ -20,3 +22,5 @@ Same columns as [../findings.md](../findings.md). Every row has its smallest con - `-sweep`/`-samples`/`-runs` tables carry a wall-time column and no flag suppresses it; `scripts/runs.sh` strips it (`runt`) so the tables pin. - `OPENSYSML_TOOLS` refuses a manifest directory inside the working tree (by design: a model must not register a program); `-tool-dry-run` output names that directory and the executable path, so it is documented but not pinned. - `SampledFunctions::Sample(SolarFlux, (…))` with a calc *def* as the `calculation` argument is rejected by the pilot (`Must be a valid feature`) and accepted by OpenSysML; the model tabulates with explicit `SamplePair`s instead and the row stays open (LIB-883). + +Rows marked *fixed in pin* were re-run on OpenSysML built from source at develop `5cd37f288` (`v0.10.1-2130-g5cd37f288`), the tool pin of `scripts/fetch-tools.sh`; the rows still open reproduce on that build where `runs/` pins them. diff --git a/docs/findings/WP-H.md b/docs/findings/WP-H.md index 46389a2..3737bfb 100644 --- a/docs/findings/WP-H.md +++ b/docs/findings/WP-H.md @@ -4,8 +4,10 @@ Same columns as [../findings.md](../findings.md); ids are renumbered at integrat | ID | Found | Version | Construct | Observed | Expected (spec §) | Status | | --- | --- | --- | --- | --- | --- | --- | -| F-H01 | 2026-10-22 | OpenSysML v0.10.1-2054-g0a5fa2d94 | `model/probes/F-H01-metadata-columns.sysml` — `Project(…, properties = ("shortName", "Verification.method"))`, also `Column(path = "Verification.method")`, `Column(expression = Verification.method)`, `properties = ("metadata")` | `query FH01::VerificationMethods references unknown property Verification.method`: a document query cannot read the attribute values a metadata annotation carries (`@Verification { method = …; level = …; stage = …; }` on every L1 requirement), so the verification matrix (`TethysDocuments::VerificationMatrix`) cannot table method/level/stage per requirement. | `DocumentQueries` is an OpenSysML library, so no spec clause is violated; the gap is completeness: a metadata usage's features are ordinary features of the annotated element's annotations (KerML 8.3.4.x MetadataFeature) and should be projectable, as `WhereMetadata` already filters by them. | open — the matrix tables id, name, statement and tier; method/level/stage stay in the model only | +| F-H01 | 2026-10-22 | OpenSysML v0.10.1-2054-g0a5fa2d94 | `model/probes/F-H01-metadata-columns.sysml` — `Project(…, properties = ("shortName", "Verification.method"))`, also `Column(path = "Verification.method")`, `Column(expression = Verification.method)`, `properties = ("metadata")` | `query FH01::VerificationMethods references unknown property Verification.method`: a document query cannot read the attribute values a metadata annotation carries (`@Verification { method = …; level = …; stage = …; }` on every L1 requirement), so the verification matrix (`TethysDocuments::VerificationMatrix`) cannot table method/level/stage per requirement. | `DocumentQueries` is an OpenSysML library, so no spec clause is violated; the gap is completeness: a metadata usage's features are ordinary features of the annotated element's annotations (KerML 8.3.4.x MetadataFeature) and should be projectable, as `WhereMetadata` already filters by them. | fixed in pin — OpenSysML #1385 (develop `5cd37f288`): the `::` path projects the annotation (`Verification::method` = `VerificationMethodKind::analyze`, `Verification::level` = `VerificationLevel::mission`, `Verification::stage` = `VerificationStage::inFlight` on TR-001); `VvMatrix` and the `VerificationMatrix` document carry Method/Level/Stage columns (`runs/vv-matrix-l2.txt`, `runs/vv-report.txt`); the probe's `Verification.method` dot form is still "unknown property" | | F-H02 | 2026-10-22 | OpenSysML v0.10.1-2054-g0a5fa2d94 | `model/probes/F-H02-namespace-expose-private-imports.sysml` — `view table { expose Items::*; render asElementTable; }` where `Items` privately imports `ISQ::*` and `SI::*` | The element table lists every member of `ISQ` and `SI` beside the two item defs `Items` declares (thousands of rows; in the model `TethysViews::interfaceDefinitions` over `TethysInterfaces::*` renders 6 085 lines, 4 809 of them library attributes). | Adjudicated: spec-mandated. A `NamespaceExpose` (SysML v2.1 §8.3.26.4) is an Expose, and §8.3.26.2 Expose states "Visibility is always ignored for an Expose (`isImportAll = true`)"; KerML 1.1 §8.3.2.5 `visibleMemberships(…, includeAll = true)` then follows the exposed namespace's private imports, so every `ISQ` and `SI` member *is* an exposed element of `expose TethysInterfaces::*`. The table was therefore rendered as the spec requires; the pilot accepts only because its validator does not check distinguishability of imported memberships. Expected for an unfiltered expose: the library members too; a view wanting only the project's definitions must filter the expose. | adjudicated: spec-mandated; pilot accepts only because its validator does not check distinguishability of imported memberships — remedy applied: `expose TethysInterfaces::*[@SysML::InterfaceDefinition or @SysML::PortDefinition or @SysML::ItemDefinition]` in `TethysViews::interfaceDefinitions`, which both validators accept; the table went from 6 084 rows (2 266 of them library elements, with their attributes) to 83 rows: the project's 27 definitions and their members | | F-H03 | 2026-10-22 | OpenSysML v0.10.1-2054-g0a5fa2d94 | `model/90-views.sysml` `view environmentText { expose TethysEnvironment::amaranth; render asTextualNotation; }` | `-render-all` and `-list views` report `textual rendering (render asTextualNotation) is not supported; the notation itself is written by sysml -convert sysml` and write nothing for the view. | `Views::asTextualNotation` is a standard rendering of the Systems Library (SysML v2 9.2.17 Views); a view that states it should render as the exposed elements' textual notation, as `-convert sysml` already writes it for a whole model. | open — view kept; `make runs` pins the skip notice | | F-H04 | 2026-10-22 | OpenSysML v0.10.1-2054-g0a5fa2d94 / pilot 2026-08 (0.62.0) | `model/probes/F-H04-concern-without-subject.sysml` — `concern def Traceability { stakeholder analyst : Analyst; }` (no explicit subject) | OpenSysML `-validate -strict`: no errors. Pilot (standalone and batch): `error: Subject must be first parameter.` | SysML v2 8.3.19 `validateRequirementDefinitionSubjectParameterPosition`: the subject parameter is the first parameter. With no declared subject the pilot takes the implicit (inherited `RequirementCheck::subj`) one to be a parameter that the stakeholder then precedes; OpenSysML takes the constraint to be vacuous. Disagreement to adjudicate against the spec text; OpenSysML's `docs/project/validation-constraints.md` records the constraint as faithful for the explicit-subject case only. | open — every concern in `TethysViews` declares `subject mission : Mission;` first, which both accept | | F-H05 | 2026-10-22 | OpenSysML v0.10.1-2054-g0a5fa2d94 | `model/90-views.sysml` view definitions (`RequirementsTreeView`, `BudgetView`, …) | `-render-all` renders each view *definition* as a view (`TethysViews::BudgetView: note: renders empty`, one output file per def) and `-list views` lists them as views. | A `view def` is a definition (SysML v2 7.26.2); only view usages have exposed elements to render. Expected: definitions are not rendered or listed as views. | open — cosmetic; the pinned `runs/render-all.txt` shows the six empty renderings | + +Rows marked *fixed in pin* were re-run on OpenSysML built from source at develop `5cd37f288` (`v0.10.1-2130-g5cd37f288`), the tool pin of `scripts/fetch-tools.sh`; the rows still open reproduce on that build where `runs/` pins them. diff --git a/docs/findings/integration.md b/docs/findings/integration.md index 1183fe9..6158ead 100644 --- a/docs/findings/integration.md +++ b/docs/findings/integration.md @@ -8,5 +8,7 @@ specification reads; nothing below is modelled around. | ID | Found | Version | Construct | Observed | Expected (spec §) | Status | | --- | --- | --- | --- | --- | --- | --- | | F-I01 | 2026-10-22 | OpenSysML v0.10.1-2054-g0a5fa2d94 (source build at 0a5fa2d94) / pilot validator at the vendored pin | `viewpoint def Reading { frame traceability; }` with no `require constraint`, applied as `viewpoint reading : Reading;` and satisfied by a view, `view tree { … satisfy reading; }` (probe `model/probes/F-I01-viewpoint-without-constraint-satisfy.sysml`; in the model every `satisfy ` of `TethysViews` and `TethysViewsTooling`, 14 rows of `runs/requirements-satisfy.txt`, `runs/as-built-satisfy.txt`, `runs/wpb-budgets-satisfy.txt`) | `-satisfy` reports `? satisfy reading could not be evaluated … Error: satisfaction satisfy reading: no condition to evaluate … standing: not covered` and exits 2. Both validators accept the file. | A `ViewpointCheck` is a `RequirementCheck` (SysML v2 §9.2.17 Views library, `abstract viewpoint def ViewpointCheck :> RequirementCheck`), and a `RequirementCheck`'s verdict is the conjunction of its assumed and required constraints (§9.2.11 Requirements library: `assumptions->allTrue() implies constraints->allTrue()`); with no required constraint the conjunction over the empty set is `true` (KerML §9.2.3 `allTrue` over an empty sequence), so the viewpoint is satisfied vacuously. Expected: `✓ satisfy reading holds` — a frame with no constraint is a satisfied requirement, not an unevaluable one. | open — OpenSysML evaluation gap on constraint-less requirement checks; the viewpoints keep `frame` without `require constraint`, which is what they say | -| F-I02 | 2026-10-22 | OpenSysML v0.10.1-2054-g0a5fa2d94 (source build at 0a5fa2d94) | `attribute bodyCount : Natural = (all Body)->size();` where an `individual part amaranth : Body` performs a sequence whose action has `out go : Boolean = report.size <= 10.0` fed by `in report = measure.report` (probe `model/probes/F-I02-all-size-invokes-action-default.sysml`; in the model `TethysNotation::baselineReadiness.bodyCount` over `(all SmallBody)->size()` reaches `TethysProximityOps::captureOperation` through WP-C's individuals, run `runs/notation-readiness.txt`) | `-instantiate 'F-I02'::readiness -e 'F-I02'::readiness.bodyCount` fails with `usage amaranth: performed action run of object #2: invoke action Decide: initialize action: initialize attributes: eval attribute default go: type mismatch: operator '<=' is not defined for a sequence and a Rational` and exits 2 — the same message as F-C04 (`docs/findings/WP-C.md`). The control without the `perform`/`bind` returns `bodyCount = 1`. Both validators accept the file. | Counting the instances of a type (KerML §8.3.4.8 `all`, SysML v2 §7.6.7) is a query over the model; it should not run the performed actions of the individuals it counts, and when it does, F-C04 applies: an action's `out` default is evaluated after its `in` parameters are bound (KerML §8.4.4.6 Function Evaluation: parameters are bound before the body is evaluated). Expected: `bodyCount = 5` (`amaranth` and the four `CaptureTargetCase` variants). | open — same defect as F-C04, reached from a new entry point; the model stays as it is and `runs/notation-readiness.txt` pins the error | +| F-I02 | 2026-10-22 | OpenSysML v0.10.1-2054-g0a5fa2d94 (source build at 0a5fa2d94) | `attribute bodyCount : Natural = (all Body)->size();` where an `individual part amaranth : Body` performs a sequence whose action has `out go : Boolean = report.size <= 10.0` fed by `in report = measure.report` (probe `model/probes/F-I02-all-size-invokes-action-default.sysml`; in the model `TethysNotation::baselineReadiness.bodyCount` over `(all SmallBody)->size()` reaches `TethysProximityOps::captureOperation` through WP-C's individuals, run `runs/notation-readiness.txt`) | `-instantiate 'F-I02'::readiness -e 'F-I02'::readiness.bodyCount` fails with `usage amaranth: performed action run of object #2: invoke action Decide: initialize action: initialize attributes: eval attribute default go: type mismatch: operator '<=' is not defined for a sequence and a Rational` and exits 2 — the same message as F-C04 (`docs/findings/WP-C.md`). The control without the `perform`/`bind` returns `bodyCount = 1`. Both validators accept the file. | Counting the instances of a type (KerML §8.3.4.8 `all`, SysML v2 §7.6.7) is a query over the model; it should not run the performed actions of the individuals it counts, and when it does, F-C04 applies: an action's `out` default is evaluated after its `in` parameters are bound (KerML §8.4.4.6 Function Evaluation: parameters are bound before the body is evaluated). Expected: `bodyCount = 5` (`amaranth` and the four `CaptureTargetCase` variants). | fixed in pin — OpenSysML #1386 (develop `5cd37f288`): `runs/notation-readiness.txt` evaluates `baselineReadiness.bodyCount` and exits 0 | | F-I03 | 2026-10-22 | OpenSysML v0.10.1-2054-g0a5fa2d94 (source build at 0a5fa2d94) / pilot validator at the vendored pin | `part tug : Tug :> argent;` inside a segment def, both the subsetting and the subsetted part at multiplicity `[1]`, with `argent` carrying `attribute :>> dryMass = 3700.0`, satisfied against a requirement that reads `tug.dryMass` (probe `model/probes/F-I03-subsetting-part-carries-no-value.sysml`; in the model `TethysFlightSegment::tug` and `inspector` before integration) | `-satisfy` reports `? satisfy massLimit by subsetting.tug could not be evaluated … dryMass has no value in the model`, while the same part written `part tug : Tug = argent;` holds. Both validators accept both forms. | Subsetting means the values of `tug` are among the values of `argent` (KerML 1.1 §7.3.4.4 Subsetting: the values of the subsetting feature are among the values of the subsetted feature; §8.3.3.3 `Subsetting`); with both features at exactly one value the two sets are equal, so `tug.dryMass` is `argent.dryMass`. Expected: the subsetting form holds too. | open — OpenSysML reads values only through bindings; the integrated model binds `tug = argent` and `inspector = wren`, which is the stronger statement and the one the system model means | + +Rows marked *fixed in pin* were re-run on OpenSysML built from source at develop `5cd37f288` (`v0.10.1-2130-g5cd37f288`), the tool pin of `scripts/fetch-tools.sh`; the rows still open reproduce on that build where `runs/` pins them. diff --git a/model/24-verification-tooling.sysml b/model/24-verification-tooling.sysml index 97c15f2..04720fc 100644 --- a/model/24-verification-tooling.sysml +++ b/model/24-verification-tooling.sysml @@ -50,12 +50,13 @@ package TethysVerificationTooling { } calc def VvMatrix :> Query { - doc /* The V&V matrix: each requirement with the number of verification cases that verify - * it, the cases themselves and the parts that satisfy it. */ + doc /* The V&V matrix: each requirement with the method, level and stage its @Verification + * annotation declares, the number of verification cases that verify it, the cases + * themselves and the parts that satisfy it. */ in root : Element[0..*] ordered; Project( source = RequirementRows(root = root), - properties = ("shortName", "name"), + properties = ("shortName", "name", "Verification::method", "Verification::level", "Verification::stage"), columns = ( RelatedColumn(name = "verifiedBy", relationshipKind = "verification", direction = "incoming", aggregate = "list"), RelatedColumn(name = "cases", relationshipKind = "verification", direction = "incoming", aggregate = "count"), diff --git a/model/54-icds-tooling.sysml b/model/54-icds-tooling.sysml index e00ecb4..81969a0 100644 --- a/model/54-icds-tooling.sysml +++ b/model/54-icds-tooling.sysml @@ -43,13 +43,12 @@ package TethysIcdDocuments { ) } calc def IcdParameters :> Query { - doc /* One row per parameter the named ICD carries: its name and quantity type. The - * value itself is not a property DocumentQueries can project (docs/findings/WP-D.md - * F-D04), so the table lists the parameters and the model holds their values. */ + doc /* One row per parameter the named ICD carries: its name, quantity type and the + * value the model binds to it, read through the `valuation` property. */ in icd : String; Project( source = WhereType(source = OwnedElements(source = Named(qualifiedName = icd)), type = "AttributeUsage"), - properties = ("name", "type") + properties = ("name", "type", "valuation") ) } diff --git a/model/60-modes.sysml b/model/60-modes.sysml index 2945e2e..2697d76 100644 --- a/model/60-modes.sysml +++ b/model/60-modes.sysml @@ -466,11 +466,13 @@ package TethysModes { doc /* The Argent tug with its mode machine; `command` is the tug end of the uplink. */ port command : CommandPort; exhibit state modes : TugModes; + bind modes.command = command; } part def ModedInspector :> Inspector { doc /* The Wren inspector with its mode machine; `command` is the relay end. */ port command : CommandPort; exhibit state modes : InspectorModes; + bind modes.command = command; } attribute def TargetEstimate { diff --git a/model/62-fdir.sysml b/model/62-fdir.sysml index 5318730..a93d14a 100644 --- a/model/62-fdir.sysml +++ b/model/62-fdir.sysml @@ -279,6 +279,7 @@ package TethysFdir { part def FdirTug :> ModedTug { doc /* The tug with its FDIR supervisor beside the mode machine. */ exhibit state fdir : FdirSupervisor; + bind fdir.command = command; } part def FaultInjector { doc /* A test conductor injecting faults and events into the tug's command port. */ diff --git a/model/73-dynamics.sysml b/model/73-dynamics.sysml index 0b86975..1f636b2 100644 --- a/model/73-dynamics.sysml +++ b/model/73-dynamics.sysml @@ -252,10 +252,11 @@ package TethysDynamics { attribute period : DurationValue = (dro70000.periodTimeUnits * earthMoon.timeUnitS) [s]; attribute revolutionsInHorizon : Real = destinationDro.stabilityHorizon / period; action revolution : ThreeBodyDynamics { + doc /* The integrator is bound by each analysis usage: the model's own RungeKutta4 + * below, or a tool's integrator in the tool tier. */ :>> stateSpace = VectorOf((dro70000.x0, 0.0, 0.0, dro70000.vy0)); :>> timeStep = (dro70000.periodTimeUnits / 320.0) [s]; :>> stopTime = dro70000.periodTimeUnits [s]; - calc :>> getNextState { calc :>> integrate : RungeKutta4; } } return closure : LengthValue = (earthMoon.lengthUnitKm * sqrt((revolution.stateSpace.elements#(1) - dro70000.x0) ** 2 + revolution.stateSpace.elements#(2) ** 2)) [km]; @@ -271,7 +272,10 @@ package TethysDynamics { } } metadata CredibilityAssessment about DroStabilityAnalysis { verificationFactor = 2; validation = 2; inputPedigree = 3; resultsUncertainty = 1; resultsRobustness = 1; useHistory = 2; managementProcess = 2; peopleQualification = 3; } - analysis droStability : DroStabilityAnalysis { subject :>> tug = argent; } + analysis droStability : DroStabilityAnalysis { + subject :>> tug = argent; + action :>> revolution { calc :>> getNextState { calc :>> integrate : RungeKutta4; } } + } // ---- Heliocentric thrust and coast ------------------------------------------------------- diff --git a/model/74-analyses-tooling.sysml b/model/74-analyses-tooling.sysml index c6f19e2..ca841ea 100644 --- a/model/74-analyses-tooling.sysml +++ b/model/74-analyses-tooling.sysml @@ -91,6 +91,18 @@ package TethysAnalysesTooling { event occurrence :>> xAxisCrossing : ZeroCrossing { :>> guard = stateSpace.elements#(2); } } + analysis droStabilityRk4 : DroStabilityAnalysis { + doc /* The DRO stability analysis with StateSpaceIntegration::RK4 bound as the integrator of + * its revolution and the x-axis crossing guarded on y, so the closure and period the + * objective asks for are evaluated here; the mission-tier `droStability` keeps the + * model's own RungeKutta4 (findings F-F01). */ + subject :>> tug = argent; + action :>> revolution { + calc :>> getNextState { calc :>> integrate : RK4; } + event occurrence :>> xAxisCrossing : ZeroCrossing { :>> guard = stateSpace.elements#(2); } + } + } + action firstThrustArcRk4 : ThrustCoastDynamics { doc /* Thirty days of full thrust from 1 AU with StateSpaceIntegration::RK4. */ attribute thrustN : Real = SepThrust(argent.sep.maximumPower / 1 [W], argent.sep.specificImpulse / 1 [s], 0.65); diff --git a/model/91-documents.sysml b/model/91-documents.sysml index d068517..95a4c2c 100644 --- a/model/91-documents.sysml +++ b/model/91-documents.sysml @@ -10,14 +10,14 @@ package TethysDocuments { // ---- queries ---------------------------------------------------------------------------- calc def MissionRequirements :> Query { - doc /* The L1 requirements with their identifier, name, text and tier. The verification - * method, level and stage each carries as @Verification cannot be projected - * (docs/findings/WP-H.md F-H01); the verification matrix lists them by requirement. */ + doc /* The L1 requirements with their identifier, name, text and tier, and the + * verification method, level and stage each declares as @Verification, read through + * the metadata def's features. */ Project( source = WhereType( source = OwnedElements(source = Named(qualifiedName = "TethysRequirements")), type = "RequirementUsage"), - properties = ("shortName", "name", "documentation", "tier")) + properties = ("shortName", "name", "documentation", "tier", "Verification::method", "Verification::level", "Verification::stage")) } calc def RequirementText :> Query { doc /* Identifier and statement of every L1 requirement, for the definitions block. */ @@ -245,9 +245,8 @@ package TethysDocuments { } part def VerificationMatrix :> Document { - doc /* The verification cross-reference matrix: every L1 requirement with its tier and - * statement. The method, level and stage each requirement declares as @Verification - * are in the model but not yet projectable (docs/findings/WP-H.md F-H01). */ + doc /* The verification cross-reference matrix: every L1 requirement with its tier, + * statement and the method, level and stage it declares as @Verification. */ attribute redefines title = "Tethys Retrieval — Verification Matrix"; part intro : Paragraph { @@ -257,7 +256,7 @@ package TethysDocuments { attribute redefines title = "Requirements"; part table : Table { attribute redefines caption = "L1 requirements"; - attribute redefines columnLabels = ("Id", "Name", "Statement", "Tier"); + attribute redefines columnLabels = ("Id", "Name", "Statement", "Tier", "Method", "Level", "Stage"); calc rows : MissionRequirements; } part drawn : Diagram { diff --git a/model/probes/F-C05-nested-in-parameter-from-enclosing-in.sysml b/model/probes/F-C05-nested-in-parameter-from-enclosing-in.sysml new file mode 100644 index 0000000..8285505 --- /dev/null +++ b/model/probes/F-C05-nested-in-parameter-from-enclosing-in.sysml @@ -0,0 +1,22 @@ +// Findings F-C05: a nested action's `in` parameter bound to the enclosing action's `in` +// parameter (`in mechanism = system;`) reads empty when the enclosing action is performed by a +// part that binds that parameter (`perform action run : Run { in system = mechanism; }`), so an +// `out` default over it fails with `operator '<=' is not defined for a Rational and a sequence`. +// Load alone: sysml -instantiate "'F-C05'::operation" -e "'F-C05'::operation.run.system.limit" +// -e "'F-C05'::operation.run.check.mechanism.limit" -e "'F-C05'::operation.run.check.go" +// Observed: run.system.limit = [200.0], run.check.mechanism.limit = [], run.check.go fails. +// Expected: run.check.mechanism.limit = [200.0], run.check.go = [true] (SysML v2 7.16.2: +// a parameter binding in an action body binds the nested parameter to the enclosing one). +package 'F-C05' { + private import ScalarValues::*; + part def Mechanism { attribute limit : Real; } + action def Check { in mechanism : Mechanism; out go : Boolean = 100.0 <= mechanism.limit; } + action def Run { + in system : Mechanism; + action check : Check { in mechanism = system; } + } + part mechanism : Mechanism { attribute :>> limit = 200.0; } + part operation { + perform action run : Run { in system = mechanism; } + } +} diff --git a/model/probes/F-F02-variant-as-subject.sysml b/model/probes/F-F02-variant-as-subject.sysml index c5237c0..1756c51 100644 --- a/model/probes/F-F02-variant-as-subject.sysml +++ b/model/probes/F-F02-variant-as-subject.sysml @@ -4,12 +4,12 @@ package TethysVariantSubjectProbe { private import ScalarValues::*; private import SI::*; - private import TethysTarget::SmallBody; + private import TethysTarget::*; private import TethysAnalyses::*; part def Configuration { part target : SmallBody; } - part largeConfiguration : Configuration { part :>> target = TargetCase::large; } + part largeConfiguration : Configuration { part :>> target = CaptureTargetCase::large; } analysis def BodyMass { subject body : SmallBody; return massKg : Real = body.mass / 1 [kg]; } - analysis viaVariant : BodyMass { subject :>> body = TargetCase::large; } + analysis viaVariant : BodyMass { subject :>> body = CaptureTargetCase::large; } analysis viaConfiguration : BodyMass { subject :>> body = largeConfiguration.target; } - analysis viaPlainPart : BodyMass { subject :>> body = largeTarget; } + analysis viaPlainPart : BodyMass { subject :>> body = targetCases.large; } } diff --git a/model/probes/F-F09-second-run-of-state-space-action.sysml b/model/probes/F-F09-second-run-of-state-space-action.sysml new file mode 100644 index 0000000..8592337 --- /dev/null +++ b/model/probes/F-F09-second-run-of-state-space-action.sysml @@ -0,0 +1,39 @@ +// Findings F-F09: the second run of the same state-space action in one process does not step +// from its bound initial state. Load alone: sysml -action FF09::fall -action FF09::fall +// Observed: the first run ends at stateSpace ⟨55.855, −29.43⟩ (three 1 s RK4 steps of free fall +// from 100 m), the second at ⟨100.0, 0.0⟩ with time = 3.0 [s]. The same holds for an analysis +// run before the action (`-analysis … -action …`). Expected: both runs end at ⟨55.855, −29.43⟩; +// each run is a separate performance of the action (SysML v2 7.16.1). +package FF09 { + private import ScalarValues::*; + private import SI::*; + private import VectorFunctions::*; + private import StateSpaceRepresentation::*; + private import StateSpaceIntegration::*; + + attribute def FallState :> StateSpace; + attribute def NoInput :> Input; + attribute def HeightOutput :> Output; + + action def FreeFall :> ContinuousStateSpaceDynamics, FixedStepDynamics { + in :>> input : NoInput = VectorOf((0.0)); + :>> stateSpace : FallState; + calc :>> getDerivative { + in input : NoInput; + in stateSpace : FallState; + return : StateDerivative = VectorOf((stateSpace.elements#(2), -9.81)) / 1 [s]; + } + calc :>> getOutput { + in input : NoInput; + in stateSpace : FallState; + return : HeightOutput = VectorOf((stateSpace.elements#(1))); + } + calc :>> getNextState { calc :>> integrate : RK4; } + } + + action fall : FreeFall { + :>> stateSpace = VectorOf((100.0, 0.0)); + :>> timeStep = 1 [s]; + :>> stopTime = 3 [s]; + } +} diff --git a/model/probes/F-F10-nested-action-redefinition.sysml b/model/probes/F-F10-nested-action-redefinition.sysml new file mode 100644 index 0000000..be7e88e --- /dev/null +++ b/model/probes/F-F10-nested-action-redefinition.sysml @@ -0,0 +1,75 @@ +// Findings F-F10: redefinitions of a nested state-space action's own features (`action :>> fall { +// calc :>> getNextState { calc :>> integrate : RK4; } event occurrence :>> ground : ZeroCrossing { +// :>> guard = …; } }`) are not applied by the runtime, whether written in an analysis usage +// (`dropA`) or in a specialising analysis def (`dropC`); the same bindings written where the nested +// action is declared (`dropB`) run. Load alone: sysml -analysis NestedRedefinitionProbe::dropA +// -analysis NestedRedefinitionProbe::dropC -analysis NestedRedefinitionProbe::dropB +// Observed: dropA and dropC fail with `unsupported state-space dynamics: zero crossing ground of +// action fall binds no guard`; dropB gives finalHeight = [55.855]. Expected: all three give +// finalHeight = [55.855] — a redefining usage's nested redefinitions apply to the redefined +// feature (KerML 7.3.4.4 Redefinition; SysML v2 7.6.3 Usages). Both validators accept the file. +package NestedRedefinitionProbe { + private import ScalarValues::*; + private import SI::*; + private import VectorFunctions::*; + private import StateSpaceRepresentation::*; + private import StateSpaceIntegration::*; + + attribute def FallState :> StateSpace; + attribute def NoInput :> Input; + attribute def HeightOutput :> Output; + + action def FreeFall :> ContinuousStateSpaceDynamics, FixedStepDynamics { + in :>> input : NoInput = VectorOf((0.0)); + :>> stateSpace : FallState; + calc :>> getDerivative { + in input : NoInput; + in stateSpace : FallState; + return : StateDerivative = VectorOf((stateSpace.elements#(2), -9.81)) / 1 [s]; + } + calc :>> getOutput { + in input : NoInput; + in stateSpace : FallState; + return : HeightOutput = VectorOf((stateSpace.elements#(1))); + } + event occurrence ground : ZeroCrossingEventDef; + } + + analysis def Drop { + doc /* Three seconds of free fall from 100 m; the integrator and the guard are bound by + * the usage or a specialisation. */ + action fall : FreeFall { + :>> stateSpace = VectorOf((100.0, 0.0)); + :>> timeStep = 1 [s]; + :>> stopTime = 3 [s]; + } + return finalHeight : Real = fall.stateSpace.elements#(1); + } + + analysis dropA : Drop { + action :>> fall { + calc :>> getNextState { calc :>> integrate : RK4; } + event occurrence :>> ground : ZeroCrossing { :>> guard = stateSpace.elements#(1) - 50.0; } + } + } + + analysis def DropRk4 :> Drop { + action :>> fall { + calc :>> getNextState { calc :>> integrate : RK4; } + event occurrence :>> ground : ZeroCrossing { :>> guard = stateSpace.elements#(1) - 50.0; } + } + } + analysis dropC : DropRk4; + + analysis def DropBoundAtDeclaration { + action fall : FreeFall { + :>> stateSpace = VectorOf((100.0, 0.0)); + :>> timeStep = 1 [s]; + :>> stopTime = 3 [s]; + calc :>> getNextState { calc :>> integrate : RK4; } + event occurrence :>> ground : ZeroCrossing { :>> guard = stateSpace.elements#(1) - 50.0; } + } + return finalHeight : Real = fall.stateSpace.elements#(1); + } + analysis dropB : DropBoundAtDeclaration; +} diff --git a/runs/analyses-external-tool.txt b/runs/analyses-external-tool.txt index 5f186af..6c2558f 100644 --- a/runs/analyses-external-tool.txt +++ b/runs/analyses-external-tool.txt @@ -63,9 +63,9 @@ recorded Records::externalTransfer_run1 (Records::ExternalTransferRun) ✓ TethysAnalyses::transferNominal returnDeltaV = [297.21660126501666 ['m/s']] - outboundThrustTime = [258.4854522189743 [d]] - returnThrustTime = [548.564792202807 [d]] - totalThrustTime = [807.0502444217813 [d]] + outboundThrustTime = [263.6447367818764 [d]] + returnThrustTime = [559.5139649313596 [d]] + totalThrustTime = [823.158701713236 [d]] objective canReturn: satisfied standing: value (observed: 1 run under reverse) recorded Records::transferNominal_run1 (Records::TransferNominalRun) diff --git a/runs/analyses-sweep.txt b/runs/analyses-sweep.txt index 7471a54..162957d 100644 --- a/runs/analyses-sweep.txt +++ b/runs/analyses-sweep.txt @@ -51,8 +51,8 @@ sweep TethysAnalyses::transferNominal — 4 run(s) outboundDeltaVMPerS | returnDeltaV | outboundThrustTime | returnThrustTime | totalThrustTime | verdict --------------------+------------------------------+--------------------------+-------------------------+-------------------------+---------------------- -1500.0 | [337.37452479266744 ['m/s']] | [147.87350383258303 [d]] | [549.3399447275702 [d]] | [697.2134485601532 [d]] | canReturn: satisfied -2000.0 | [321.7183015306643 ['m/s']] | [191.01595847191217 [d]] | [549.0376086497232 [d]] | [740.0535671216354 [d]] | canReturn: satisfied -2500.0 | [306.3265301387362 ['m/s']] | [233.4065408866485 [d]] | [548.7405415836032 [d]] | [782.1470824702517 [d]] | canReturn: satisfied -3000.0 | [291.19488327251827 ['m/s']] | [275.05835445365966 [d]] | [548.4486517026415 [d]] | [823.5070061563013 [d]] | canReturn: satisfied +1500.0 | [337.37452479266744 ['m/s']] | [150.82501030629896 [d]] | [560.3045892454269 [d]] | [711.1295995517258 [d]] | canReturn: satisfied +2000.0 | [321.7183015306643 ['m/s']] | [194.82857414274392 [d]] | [559.9962186389599 [d]] | [754.8247927817039 [d]] | canReturn: satisfied +2500.0 | [306.3265301387362 ['m/s']] | [238.0652586324222 [d]] | [559.6932222119602 [d]] | [797.7584808443825 [d]] | canReturn: satisfied +3000.0 | [291.19488327251827 ['m/s']] | [280.54842869129163 [d]] | [559.3955063050308 [d]] | [839.9439349963225 [d]] | canReturn: satisfied standing: table (observed: 4 rows) diff --git a/runs/analyses-transfer.txt b/runs/analyses-transfer.txt index 42f024e..411f6e4 100644 --- a/runs/analyses-transfer.txt +++ b/runs/analyses-transfer.txt @@ -50,30 +50,30 @@ ✓ package TethysHouseRules ✓ TethysAnalyses::transferSmall returnDeltaV = [495.69853730532293 ['m/s']] - outboundThrustTime = [258.4854522189743 [d]] - returnThrustTime = [330.06185634955347 [d]] - totalThrustTime = [588.5473085685278 [d]] + outboundThrustTime = [263.6447367818764 [d]] + returnThrustTime = [336.6497823842632 [d]] + totalThrustTime = [600.2945191661396 [d]] objective canReturn: satisfied standing: value (observed: 1 run under reverse) ✓ TethysAnalyses::transferNominal returnDeltaV = [297.21660126501666 ['m/s']] - outboundThrustTime = [258.4854522189743 [d]] - returnThrustTime = [548.564792202807 [d]] - totalThrustTime = [807.0502444217813 [d]] + outboundThrustTime = [263.6447367818764 [d]] + returnThrustTime = [559.5139649313596 [d]] + totalThrustTime = [823.158701713236 [d]] objective canReturn: satisfied standing: value (observed: 1 run under reverse) ✓ TethysAnalyses::transferLarge returnDeltaV = [214.30050179876562 ['m/s']] - outboundThrustTime = [258.4854522189743 [d]] - returnThrustTime = [759.7061669219731 [d]] - totalThrustTime = [1018.1916191409474 [d]] + outboundThrustTime = [263.6447367818764 [d]] + returnThrustTime = [774.8696520067032 [d]] + totalThrustTime = [1038.5143887885797 [d]] objective canReturn: satisfied standing: value (observed: 1 run under reverse) ✗ TethysAnalyses::transferDensest returnDeltaV = [188.4751713140319 ['m/s']] - outboundThrustTime = [258.4854522189743 [d]] - returnThrustTime = [863.4113180038564 [d]] - totalThrustTime = [1121.8967702228306 [d]] + outboundThrustTime = [263.6447367818764 [d]] + returnThrustTime = [880.6447237764902 [d]] + totalThrustTime = [1144.2894605583667 [d]] objective canReturn: not satisfied: returnDeltaV >= requiredReturnDeltaV standing: value (observed: 1 run under reverse) ✓ TethysAnalyses::verifyDurationNominal diff --git a/runs/as-built-satisfy.txt b/runs/as-built-satisfy.txt index 041c3e6..7a46931 100644 --- a/runs/as-built-satisfy.txt +++ b/runs/as-built-satisfy.txt @@ -51,64 +51,64 @@ ✓ satisfy captureEnvelope by TethysTug::argent holds (on TethysTug::argent ID: 1) ✓ Verification TethysVerification::captureEnvelopeTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy deliveredMass by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 10) +✓ satisfy deliveredMass by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 8) ✓ Verification TethysVerification::deliveryAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy transferDuration by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 10) +✓ satisfy transferDuration by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 8) ✓ Verification TethysVerification::powerAnalysis verdict: pass standing: holds (observed: 1 run under reverse) ✓ satisfy propellantCapacity by TethysTug::argent holds (on TethysTug::argent ID: 1) ✓ Verification TethysVerification::propellantAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy characterisationProducts by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 10) +✓ satisfy characterisationProducts by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 8) ✓ Verification TethysVerification::characterisationAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy earthImpactExclusion by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 10) +✓ satisfy earthImpactExclusion by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 8) ✓ Verification TethysVerification::returnSafetyAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy droStability by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 10) +✓ satisfy droStability by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 8) ✓ Verification TethysVerification::returnSafetyAnalysis verdict: pass standing: holds (observed: 1 run under reverse) ✓ satisfy thrustRedundancy by TethysTug::argent holds (on TethysTug::argent ID: 1) ✓ Verification TethysVerification::redundancyInspection verdict: pass ✓ Verification TethysVerification::sepCommissioning verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy deflectionMeasurement by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 10) +✓ satisfy deflectionMeasurement by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 8) ✓ Verification TethysVerification::deflectionAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy autonomousSurvival by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 10) +✓ satisfy autonomousSurvival by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 8) ✓ Verification TethysVerification::autonomyTest verdict: pass standing: holds (observed: 1 run under reverse) ✓ satisfy proximityContactEnvironment by TethysTug::argent holds (on TethysTug::argent ID: 1) ✓ Verification TethysVerification::contactSpeedTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy faultResponse by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 10) +✓ satisfy faultResponse by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 8) ✓ Verification TethysVerification::faultResponseTest verdict: pass standing: holds (observed: 1 run under reverse) ✓ satisfy massBudget by TethysTug::argent holds (on TethysTug::argent ID: 1) ✓ Verification TethysVerification::massBudgetAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy inspectorDeployment by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 10) +✓ satisfy inspectorDeployment by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 8) ✓ Verification TethysVerification::separationTest verdict: pass standing: holds (observed: 1 run under reverse) ✓ satisfy despinCapacity by TethysTug::argent holds (on TethysTug::argent ID: 1) ✓ Verification TethysVerification::despinAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy groundCoverage by tethysSystem.ground holds (on TethysSystem::tethysSystem.ground ID: 24) +✓ satisfy groundCoverage by tethysSystem.ground holds (on TethysSystem::tethysSystem.ground ID: 19) ✓ Verification TethysVerification::groundReadinessDemo verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy commandLatency by tethysSystem.ground holds (on TethysSystem::tethysSystem.ground ID: 24) +✓ satisfy commandLatency by tethysSystem.ground holds (on TethysSystem::tethysSystem.ground ID: 19) ✓ Verification TethysVerification::groundReadinessDemo verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy operatorWorkload by tethysSystem.ground holds (on TethysSystem::tethysSystem.ground ID: 24) +✓ satisfy operatorWorkload by tethysSystem.ground holds (on TethysSystem::tethysSystem.ground ID: 19) ✓ Verification TethysVerification::groundReadinessDemo verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy sepThrust by argent.sep holds (on TethysTug::argent.sep ID: 15) +✓ satisfy sepThrust by argent.sep holds (on TethysTug::argent.sep ID: 12) ✓ Verification TethysVerification::sepHotFireTest verdict: pass ✓ Verification TethysVerification::thrustModelValidation verdict: pass ✓ Verification TethysVerification::sepCommissioning verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy arrayPowerAtTarget by argent.eps holds (on TethysTug::argent.eps ID: 29) +✓ satisfy arrayPowerAtTarget by argent.eps holds (on TethysTug::argent.eps ID: 11) ✓ Verification TethysVerification::powerAnalysis verdict: pass standing: holds (observed: 1 run under reverse) ✓ satisfy captureBagDiameter by argent.captureSystem holds (on TethysTug::argent.captureSystem ID: 2) @@ -117,191 +117,192 @@ ✓ satisfy contactSpeedTolerance by argent.captureSystem holds (on TethysTug::argent.captureSystem ID: 2) ✓ Verification TethysVerification::contactSpeedTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy despinTorque by argent.rcs holds (on TethysTug::argent.rcs ID: 22) +✓ satisfy despinTorque by argent.rcs holds (on TethysTug::argent.rcs ID: 18) ✓ Verification TethysVerification::despinAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy hydrazineLoad by argent.rcs holds (on TethysTug::argent.rcs ID: 22) +✓ satisfy hydrazineLoad by argent.rcs holds (on TethysTug::argent.rcs ID: 18) ✓ Verification TethysVerification::despinAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy deepSpaceEirp by argent.telecom holds (on TethysTug::argent.telecom ID: 31) +✓ satisfy deepSpaceEirp by argent.telecom holds (on TethysTug::argent.telecom ID: 25) ✓ Verification TethysVerification::linkBudgetTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy proximityLinkRange by argent.telecom holds (on TethysTug::argent.telecom ID: 31) +✓ satisfy proximityLinkRange by argent.telecom holds (on TethysTug::argent.telecom ID: 25) ✓ Verification TethysVerification::inspectorAcceptanceTest verdict: pass ✓ Verification TethysVerification::inspectorCommissioning verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy relativeNavigation by argent.gnc holds (on TethysTug::argent.gnc ID: 32) +✓ satisfy relativeNavigation by argent.gnc holds (on TethysTug::argent.gnc ID: 26) ✓ Verification TethysVerification::proximityNavigationTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy faultDetectionLatency by argent.cdh holds (on TethysTug::argent.cdh ID: 33) +✓ satisfy faultDetectionLatency by argent.cdh holds (on TethysTug::argent.cdh ID: 27) ✓ Verification TethysVerification::faultResponseTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy heatRejection by argent.thermal holds (on TethysTug::argent.thermal ID: 34) +✓ satisfy heatRejection by argent.thermal holds (on TethysTug::argent.thermal ID: 28) ✓ Verification TethysVerification::thermalBalanceTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy dockingLoads by argent.structure holds (on TethysTug::argent.structure ID: 35) +✓ satisfy dockingLoads by argent.structure holds (on TethysTug::argent.structure ID: 29) ✓ Verification TethysVerification::dockingLoadsAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy inspectorSeparation by argent.structure holds (on TethysTug::argent.structure ID: 35) +✓ satisfy inspectorSeparation by argent.structure holds (on TethysTug::argent.structure ID: 29) ✓ Verification TethysVerification::separationTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy spinStateSensing by argent.sensors holds (on TethysTug::argent.sensors ID: 36) +✓ satisfy spinStateSensing by argent.sensors holds (on TethysTug::argent.sensors ID: 30) ✓ Verification TethysVerification::characterisationAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy imagingResolution by wren.payload holds (on TethysInspector::wren.payload ID: 37) +✓ satisfy imagingResolution by wren.payload holds (on TethysInspector::wren.payload ID: 31) ✓ Verification TethysVerification::inspectorAcceptanceTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy circumnavigationPropellant by wren.propulsion holds (on TethysInspector::wren.propulsion ID: 38) +✓ satisfy circumnavigationPropellant by wren.propulsion holds (on TethysInspector::wren.propulsion ID: 32) ✓ Verification TethysVerification::characterisationAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy keepAlivePower by wren.bus holds (on TethysInspector::wren.bus ID: 39) +✓ satisfy keepAlivePower by wren.bus holds (on TethysInspector::wren.bus ID: 33) ✓ Verification TethysVerification::inspectorAcceptanceTest verdict: pass ✓ Verification TethysVerification::inspectorCommissioning verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy inspectorMass by wren holds (on TethysInspector::wren ID: 20) +✓ satisfy inspectorMass by wren holds (on TethysInspector::wren ID: 16) ✓ Verification TethysVerification::inspectorAcceptanceTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy dopplerForMass by wren.bus holds (on TethysInspector::wren.bus ID: 39) +✓ satisfy dopplerForMass by wren.bus holds (on TethysInspector::wren.bus ID: 33) ✓ Verification TethysVerification::inspectorAcceptanceTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy stationAperture by tethysSystem.ground.network.primaryStation holds (on TethysSystem::tethysSystem.ground.network.primaryStation ID: 40) +✓ satisfy stationAperture by tethysSystem.ground.network.primaryStation holds (on TethysSystem::tethysSystem.ground.network.primaryStation ID: 21) ✓ Verification TethysVerification::linkBudgetTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy stationSpacing by tethysSystem.ground.network holds (on TethysSystem::tethysSystem.ground.network ID: 25) +✓ satisfy stationSpacing by tethysSystem.ground.network holds (on TethysSystem::tethysSystem.ground.network ID: 20) ✓ Verification TethysVerification::groundInspection verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy TethysRequirementsL3L4::rangingAccuracy by tethysSystem.ground.network.fdf holds (on TethysSystem::tethysSystem.ground.network.fdf ID: 41) +✓ satisfy TethysRequirementsL3L4::rangingAccuracy by tethysSystem.ground.network.fdf holds (on TethysSystem::tethysSystem.ground.network.fdf ID: 34) ✓ Verification TethysVerification::deflectionAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy impactScreening by tethysSystem.ground.network.fdf holds (on TethysSystem::tethysSystem.ground.network.fdf ID: 41) +✓ satisfy impactScreening by tethysSystem.ground.network.fdf holds (on TethysSystem::tethysSystem.ground.network.fdf ID: 34) ✓ Verification TethysVerification::groundProceduresDemo verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy sequenceTurnaround by tethysSystem.ground.network.moc holds (on TethysSystem::tethysSystem.ground.network.moc ID: 42) +✓ satisfy sequenceTurnaround by tethysSystem.ground.network.moc holds (on TethysSystem::tethysSystem.ground.network.moc ID: 35) ✓ Verification TethysVerification::groundProceduresDemo verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy monitoringAutomation by tethysSystem.ground.network.moc holds (on TethysSystem::tethysSystem.ground.network.moc ID: 42) +✓ satisfy monitoringAutomation by tethysSystem.ground.network.moc holds (on TethysSystem::tethysSystem.ground.network.moc ID: 35) ✓ Verification TethysVerification::groundProceduresDemo verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy scienceArchive by tethysSystem.ground.network.sds holds (on TethysSystem::tethysSystem.ground.network.sds ID: 43) +✓ satisfy scienceArchive by tethysSystem.ground.network.sds holds (on TethysSystem::tethysSystem.ground.network.sds ID: 36) ✓ Verification TethysVerification::groundProceduresDemo verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy thrusterUnitThrust by argent.sep holds (on TethysTug::argent.sep ID: 15) +✓ satisfy thrusterUnitThrust by argent.sep holds (on TethysTug::argent.sep ID: 12) ✓ Verification TethysVerification::sepHotFireTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy powerProcessingEfficiency by argent.sep holds (on TethysTug::argent.sep ID: 15) +✓ satisfy powerProcessingEfficiency by argent.sep holds (on TethysTug::argent.sep ID: 12) ✓ Verification TethysVerification::sepHotFireTest verdict: pass standing: holds (observed: 1 run under reverse) ✓ satisfy cinchMotorTorque by argent.captureSystem holds (on TethysTug::argent.captureSystem ID: 2) ✓ Verification TethysVerification::cinchMotorTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy narrowAngleCameraSensitivity by argent.sensors holds (on TethysTug::argent.sensors ID: 36) +✓ satisfy narrowAngleCameraSensitivity by argent.sensors holds (on TethysTug::argent.sensors ID: 30) ✓ Verification TethysVerification::proximityNavigationTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy fdirTaskPeriod by argent.cdh holds (on TethysTug::argent.cdh ID: 33) +✓ satisfy fdirTaskPeriod by argent.cdh holds (on TethysTug::argent.cdh ID: 27) ✓ Verification TethysVerification::faultResponseTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy inspectorDetectorPitch by wren.payload holds (on TethysInspector::wren.payload ID: 37) +✓ satisfy inspectorDetectorPitch by wren.payload holds (on TethysInspector::wren.payload ID: 31) ✓ Verification TethysVerification::inspectorAcceptanceTest verdict: pass standing: holds (observed: 1 run under reverse) ? satisfy verificationViewpoint needs an object of TethysVerification::VvMatrix: none is instantiated -✓ satisfy massBudgetCloses by massBudget holds (on TethysBudgets::massBudget ID: 269) +✓ satisfy massBudgetCloses by massBudget holds (on TethysBudgets::massBudget ID: 248) standing: holds (observed: 1 run under reverse) -✓ satisfy powerBudgetCloses by powerBudget holds (on TethysBudgets::powerBudget ID: 406) - standing: holds (observed: 1 run under reverse) -✓ satisfy energyBudgetCloses by energyBudget holds (on TethysBudgets::energyBudget ID: 408) +✗ satisfy powerBudgetCloses by powerBudget fails (on TethysBudgets::powerBudget ID: 385) + Required condition evaluated to false: capability >= demand * 1.0 + policy.systemMargin + standing: violated (witnessed: 1 run under reverse) +✓ satisfy energyBudgetCloses by energyBudget holds (on TethysBudgets::energyBudget ID: 387) standing: holds (observed: 1 run under reverse) -✓ satisfy inspectorEnergyBudgetCloses by inspectorEnergyBudget holds (on TethysBudgets::inspectorEnergyBudget ID: 409) +✓ satisfy inspectorEnergyBudgetCloses by inspectorEnergyBudget holds (on TethysBudgets::inspectorEnergyBudget ID: 388) standing: holds (observed: 1 run under reverse) -✓ satisfy dataBudgetCloses by dataBudget holds (on TethysBudgets::dataBudget ID: 410) +✓ satisfy dataBudgetCloses by dataBudget holds (on TethysBudgets::dataBudget ID: 389) standing: holds (observed: 1 run under reverse) -✓ satisfy propellantBudgetCloses by propellantBudget holds (on TethysBudgets::propellantBudget ID: 411) +✓ satisfy propellantBudgetCloses by propellantBudget holds (on TethysBudgets::propellantBudget ID: 390) standing: holds (observed: 1 run under reverse) -✓ satisfy hydrazineBudgetCloses by hydrazineBudget holds (on TethysBudgets::hydrazineBudget ID: 413) +✓ satisfy hydrazineBudgetCloses by hydrazineBudget holds (on TethysBudgets::hydrazineBudget ID: 392) standing: holds (observed: 1 run under reverse) -✓ satisfy pointingBudgetCloses by pointingBudget holds (on TethysBudgets::pointingBudget ID: 414) +✓ satisfy pointingBudgetCloses by pointingBudget holds (on TethysBudgets::pointingBudget ID: 393) standing: holds (observed: 1 run under reverse) -✓ satisfy thermalBudgetCloses by thermalBudget holds (on TethysBudgets::thermalBudget ID: 415) +✓ satisfy thermalBudgetCloses by thermalBudget holds (on TethysBudgets::thermalBudget ID: 394) standing: holds (observed: 1 run under reverse) -✓ satisfy captureLoadBudgetCloses by captureLoadBudget holds (on TethysBudgets::captureLoadBudget ID: 416) +✓ satisfy captureLoadBudgetCloses by captureLoadBudget holds (on TethysBudgets::captureLoadBudget ID: 395) standing: holds (observed: 1 run under reverse) -✓ satisfy radiationBudgetCloses by radiationBudget holds (on TethysBudgets::radiationBudget ID: 417) +✓ satisfy radiationBudgetCloses by radiationBudget holds (on TethysBudgets::radiationBudget ID: 396) standing: holds (observed: 1 run under reverse) -✓ satisfy magneticCleanlinessCloses by magneticCleanlinessBudget holds (on TethysBudgets::magneticCleanlinessBudget ID: 418) +✓ satisfy magneticCleanlinessCloses by magneticCleanlinessBudget holds (on TethysBudgets::magneticCleanlinessBudget ID: 397) standing: holds (observed: 1 run under reverse) -✓ satisfy reliabilityBudgetCloses by reliabilityBudget holds (on TethysBudgets::reliabilityBudget ID: 419) +✓ satisfy reliabilityBudgetCloses by reliabilityBudget holds (on TethysBudgets::reliabilityBudget ID: 398) standing: holds (observed: 1 run under reverse) -✓ satisfy processorBudgetCloses by processorBudget holds (on TethysBudgets::processorBudget ID: 420) +✓ satisfy processorBudgetCloses by processorBudget holds (on TethysBudgets::processorBudget ID: 399) standing: holds (observed: 1 run under reverse) -✓ satisfy xDownlinkCloses by xDownlinkAtMaximumRange holds (on TethysLinkBudgets::xDownlinkAtMaximumRange ID: 421) +✓ satisfy xDownlinkCloses by xDownlinkAtMaximumRange holds (on TethysLinkBudgets::xDownlinkAtMaximumRange ID: 400) standing: holds (observed: 1 run under reverse) -✓ satisfy xUplinkCloses by xUplinkAtMaximumRange holds (on TethysLinkBudgets::xUplinkAtMaximumRange ID: 422) +✓ satisfy xUplinkCloses by xUplinkAtMaximumRange holds (on TethysLinkBudgets::xUplinkAtMaximumRange ID: 401) standing: holds (observed: 1 run under reverse) -✓ satisfy kaDownlinkCloses by kaDownlinkAtTargetRange holds (on TethysLinkBudgets::kaDownlinkAtTargetRange ID: 423) +✓ satisfy kaDownlinkCloses by kaDownlinkAtTargetRange holds (on TethysLinkBudgets::kaDownlinkAtTargetRange ID: 402) standing: holds (observed: 1 run under reverse) -✓ satisfy droDownlinkCloses by xDownlinkInDro holds (on TethysLinkBudgets::xDownlinkInDro ID: 424) +✓ satisfy droDownlinkCloses by xDownlinkInDro holds (on TethysLinkBudgets::xDownlinkInDro ID: 403) standing: holds (observed: 1 run under reverse) -✓ satisfy proximityLinkCloses by proximityReturnLink holds (on TethysLinkBudgets::proximityReturnLink ID: 425) +✓ satisfy proximityLinkCloses by proximityReturnLink holds (on TethysLinkBudgets::proximityReturnLink ID: 404) standing: holds (observed: 1 run under reverse) -✓ satisfy relayCarriesCharacterisation by largeTargetRelayLoad holds (on TethysLinkBudgets::largeTargetRelayLoad ID: 426) +✓ satisfy relayCarriesCharacterisation by largeTargetRelayLoad holds (on TethysLinkBudgets::largeTargetRelayLoad ID: 405) standing: holds (observed: 1 run under reverse) -✓ satisfy dictionaryConsistent by dictionary holds (on TethysOperations::dictionary ID: 427) +✓ satisfy dictionaryConsistent by dictionary holds (on TethysOperations::dictionary ID: 406) standing: holds (observed: 1 run under reverse) -✓ satisfy operationsReadiness by orrStatus holds (on TethysOperations::orrStatus ID: 429) +✓ satisfy operationsReadiness by orrStatus holds (on TethysOperations::orrStatus ID: 408) standing: holds (observed: 1 run under reverse) -✓ satisfy resourceMarginPositive by xenonTrend holds (on TethysOperations::xenonTrend ID: 430) +✓ satisfy resourceMarginPositive by xenonTrend holds (on TethysOperations::xenonTrend ID: 409) standing: holds (observed: 1 run under reverse) -✓ satisfy resourceMarginPositive by batteryCapacityTrend holds (on TethysOperations::batteryCapacityTrend ID: 431) +✓ satisfy resourceMarginPositive by batteryCapacityTrend holds (on TethysOperations::batteryCapacityTrend ID: 410) standing: holds (observed: 1 run under reverse) -✓ satisfy extendedMissionAffordable by extendedMission holds (on TethysOperations::extendedMission ID: 432) +✓ satisfy extendedMissionAffordable by extendedMission holds (on TethysOperations::extendedMission ID: 411) standing: holds (observed: 1 run under reverse) -? satisfy requirementsViewpoint could not be evaluated (on TethysViews::requirementsTree ID: 433) +? satisfy requirementsViewpoint could not be evaluated (on TethysViews::requirementsTree ID: 412) Error: satisfaction satisfy requirementsViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy requirementsViewpoint: no condition to evaluate) -? satisfy requirementsViewpoint could not be evaluated (on TethysViews::requirementsTable ID: 435) +? satisfy requirementsViewpoint could not be evaluated (on TethysViews::requirementsTable ID: 414) Error: satisfaction satisfy requirementsViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy requirementsViewpoint: no condition to evaluate) -? satisfy interfaceViewpoint could not be evaluated (on TethysViews::segmentInterfaces ID: 437) +? satisfy interfaceViewpoint could not be evaluated (on TethysViews::segmentInterfaces ID: 416) Error: satisfaction satisfy interfaceViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy interfaceViewpoint: no condition to evaluate) -? satisfy interfaceViewpoint could not be evaluated (on TethysViews::flightSegmentWiring ID: 439) +? satisfy interfaceViewpoint could not be evaluated (on TethysViews::flightSegmentWiring ID: 418) Error: satisfaction satisfy interfaceViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy interfaceViewpoint: no condition to evaluate) -? satisfy interfaceViewpoint could not be evaluated (on TethysViews::tugPowerBus ID: 441) +? satisfy interfaceViewpoint could not be evaluated (on TethysViews::tugPowerBus ID: 420) Error: satisfaction satisfy interfaceViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy interfaceViewpoint: no condition to evaluate) -? satisfy interfaceViewpoint could not be evaluated (on TethysViews::interfaceDefinitions ID: 443) +? satisfy interfaceViewpoint could not be evaluated (on TethysViews::interfaceDefinitions ID: 422) Error: satisfaction satisfy interfaceViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy interfaceViewpoint: no condition to evaluate) -? satisfy budgetViewpoint could not be evaluated (on TethysViews::massBudget ID: 445) +? satisfy budgetViewpoint could not be evaluated (on TethysViews::massBudget ID: 424) Error: satisfaction satisfy budgetViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy budgetViewpoint: no condition to evaluate) -? satisfy operationsViewpoint could not be evaluated (on TethysViews::missionTimeline ID: 447) +? satisfy operationsViewpoint could not be evaluated (on TethysViews::missionTimeline ID: 426) Error: satisfaction satisfy operationsViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy operationsViewpoint: no condition to evaluate) -? satisfy operationsViewpoint could not be evaluated (on TethysViews::projectLifecycle ID: 450) +? satisfy operationsViewpoint could not be evaluated (on TethysViews::projectLifecycle ID: 429) Error: satisfaction satisfy operationsViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy operationsViewpoint: no condition to evaluate) -? satisfy operationsViewpoint could not be evaluated (on TethysViews::modeMachine ID: 453) +? satisfy operationsViewpoint could not be evaluated (on TethysViews::modeMachine ID: 432) Error: satisfaction satisfy operationsViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy operationsViewpoint: no condition to evaluate) -? satisfy assuranceViewpoint could not be evaluated (on TethysViews::modeMachine ID: 453) +? satisfy assuranceViewpoint could not be evaluated (on TethysViews::modeMachine ID: 432) Error: satisfaction satisfy assuranceViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy assuranceViewpoint: no condition to evaluate) -? satisfy TethysViews::interfaceViewpoint could not be evaluated (on TethysViewsTooling::systemOverview ID: 455) +? satisfy TethysViews::interfaceViewpoint could not be evaluated (on TethysViewsTooling::systemOverview ID: 434) Error: satisfaction satisfy TethysViews::interfaceViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy TethysViews::interfaceViewpoint: no condition to evaluate) -? satisfy TethysViews::budgetViewpoint could not be evaluated (on TethysViewsTooling::systemOverview ID: 455) +? satisfy TethysViews::budgetViewpoint could not be evaluated (on TethysViewsTooling::systemOverview ID: 434) Error: satisfaction satisfy TethysViews::budgetViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy TethysViews::budgetViewpoint: no condition to evaluate) -✓ satisfy argentMassWithinTolerance by argentFM holds (on TethysAsBuilt::argentFM ID: 459) +✓ satisfy argentMassWithinTolerance by argentFM holds (on TethysAsBuilt::argentFM ID: 438) standing: holds (observed: 1 run under reverse) -✗ satisfy wrenMassWithinTolerance by wrenFM fails (on TethysAsBuilt::wrenFM ID: 460) +✗ satisfy wrenMassWithinTolerance by wrenFM fails (on TethysAsBuilt::wrenFM ID: 439) Required condition evaluated to false: unit.massDeviation <= unit.massTolerance and unit.massDeviation >= - unit.massTolerance standing: violated (witnessed: 1 run under reverse) -✓ satisfy heliocentricDisposal by argentAtEndOfLife holds (on TethysDisposal::argentAtEndOfLife ID: 461) +✓ satisfy heliocentricDisposal by argentAtEndOfLife holds (on TethysDisposal::argentAtEndOfLife ID: 440) standing: holds (observed: 1 run under reverse) -✓ satisfy passivation by argentAtEndOfLife.passivated holds (on TethysDisposal::argentAtEndOfLife.passivated ID: 463) +✓ satisfy passivation by argentAtEndOfLife.passivated holds (on TethysDisposal::argentAtEndOfLife.passivated ID: 442) standing: holds (observed: 1 run under reverse) -✓ satisfy separationSafety by argentFM.captureSystem holds (on TethysAsBuilt::argentFM.captureSystem ID: 465) +✓ satisfy separationSafety by argentFM.captureSystem holds (on TethysAsBuilt::argentFM.captureSystem ID: 444) standing: holds (observed: 1 run under reverse) exit 2 diff --git a/runs/document-queries.txt b/runs/document-queries.txt index 0479e60..4f4ae23 100644 --- a/runs/document-queries.txt +++ b/runs/document-queries.txt @@ -49,52 +49,79 @@ ✓ package TethysDisposal ✓ package TethysHouseRules ✓ Query TethysDocuments::MissionRequirements returned 9 rows - Columns: shortName, name, documentation, tier + Columns: shortName, name, documentation, tier, Verification::method, Verification::level, Verification::stage Row 1: TethysRequirements::retrieval shortName = "TR-001" name = "retrieval" documentation = "The mission shall deliver the target body 2031 QX, intact and with a mass of at\nleast 100 t, into the designated lunar distant retrograde orbit." tier = TethysRequirements::RequirementTier::mission + Verification::method = VerificationCases::VerificationMethodKind::analyze + Verification::level = TethysRequirements::VerificationLevel::mission + Verification::stage = TethysRequirements::VerificationStage::inFlight Row 2: TethysRequirements::missionDuration shortName = "TR-002" name = "missionDuration" documentation = "The mission shall complete the insertion of the target into the distant\nretrograde orbit within 2 200 days of launch (TethysMission::tethys.nominalDuration)." tier = TethysRequirements::RequirementTier::mission + Verification::method = VerificationCases::VerificationMethodKind::analyze + Verification::level = TethysRequirements::VerificationLevel::mission + Verification::stage = TethysRequirements::VerificationStage::inFlight Row 3: TethysRequirements::characterisation shortName = "TR-003" name = "characterisation" documentation = "Before committing to capture, the mission shall determine the target's shape,\nmass to within 10 % and spin state, and shall confirm that each lies within the\ncapture system's design envelope." tier = TethysRequirements::RequirementTier::mission + Verification::method = VerificationCases::VerificationMethodKind::analyze + Verification::level = TethysRequirements::VerificationLevel::mission + Verification::stage = TethysRequirements::VerificationStage::inFlight Row 4: TethysRequirements::launchCompatibility shortName = "TR-004" name = "launchCompatibility" documentation = "The flight system shall be compatible with the Arcturus-5H launch vehicle and its\ndirect injection to an Earth-escape trajectory." tier = TethysRequirements::RequirementTier::mission + Verification::method = VerificationCases::VerificationMethodKind::test + Verification::level = TethysRequirements::VerificationLevel::system + Verification::stage = TethysRequirements::VerificationStage::acceptance Row 5: TethysRequirements::groundCompatibility shortName = "TR-005" name = "groundCompatibility" documentation = "The flight system shall communicate through the Meridian deep-space network at\nevery Earth range of the mission." tier = TethysRequirements::RequirementTier::mission + Verification::method = VerificationCases::VerificationMethodKind::test + Verification::level = TethysRequirements::VerificationLevel::system + Verification::stage = TethysRequirements::VerificationStage::preLaunch Row 6: TethysRequirements::cislunarSafety shortName = "TR-006" name = "cislunarSafety" documentation = "The target body shall be placed in an orbit that remains bound to the Moon for at\nleast 100 years without station-keeping, and no credible failure during the return\nshall place it on an Earth-impact trajectory." tier = TethysRequirements::RequirementTier::mission + Verification::method = VerificationCases::VerificationMethodKind::analyze + Verification::level = TethysRequirements::VerificationLevel::mission + Verification::stage = TethysRequirements::VerificationStage::qualification Row 7: TethysRequirements::missionClass shortName = "TR-007" name = "missionClass" documentation = "The flight system shall carry no single-point failure that ends the mission." tier = TethysRequirements::RequirementTier::mission + Verification::method = VerificationCases::VerificationMethodKind::analyze + Verification::level = TethysRequirements::VerificationLevel::system + Verification::stage = TethysRequirements::VerificationStage::qualification Row 8: TethysRequirements::deflectionDemonstration shortName = "TR-008" name = "deflectionDemonstration" documentation = "While attached to the target, the mission shall demonstrate a slow-push\ndeflection and shall measure the resulting change in the target's heliocentric\nvelocity to an accuracy of 1 mm/s." tier = TethysRequirements::RequirementTier::mission + Verification::method = VerificationCases::VerificationMethodKind::demo + Verification::level = TethysRequirements::VerificationLevel::mission + Verification::stage = TethysRequirements::VerificationStage::inFlight Row 9: TethysRequirements::utilisationAccess shortName = "TR-009" name = "utilisationAccess" documentation = "After delivery, the tug shall hold the target in an attitude and with a docking\ninterface that lets the visiting vehicle Lantern dock and reach the target's\nsurface." tier = TethysRequirements::RequirementTier::mission + Verification::method = VerificationCases::VerificationMethodKind::demo + Verification::level = TethysRequirements::VerificationLevel::mission + Verification::stage = TethysRequirements::VerificationStage::inFlight ✓ Query TethysDocuments::InterfaceEnds returned 24 rows Columns: owner, name, type Row 1: TethysInterfaces::TugInspectorInterface::tugSide diff --git a/runs/documents-html/TethysDocuments-VerificationMatrix.html b/runs/documents-html/TethysDocuments-VerificationMatrix.html index ef640d7..242adf1 100644 --- a/runs/documents-html/TethysDocuments-VerificationMatrix.html +++ b/runs/documents-html/TethysDocuments-VerificationMatrix.html @@ -12,7 +12,7 @@

Tethys Retrieval — Verification Matrix

One row per requirement. The verification cases that close each row are added by the verification package; a requirement without one stays visible here as uncovered.

Requirements

- +
@@ -20,6 +20,9 @@

Requirements

+ + + @@ -28,54 +31,81 @@

Requirements

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
L1 requirements
Name Statement TierMethodLevelStage
retrieval The mission shall deliver the target body 2031 QX, intact and with a mass of at least 100 t, into the designated lunar distant retrograde orbit. missionanalyzemissioninFlight
TR-002 missionDuration The mission shall complete the insertion of the target into the distant retrograde orbit within 2 200 days of launch (TethysMission::tethys.nominalDuration). missionanalyzemissioninFlight
TR-003 characterisation Before committing to capture, the mission shall determine the target's shape, mass to within 10 % and spin state, and shall confirm that each lies within the capture system's design envelope. missionanalyzemissioninFlight
TR-004 launchCompatibility The flight system shall be compatible with the Arcturus-5H launch vehicle and its direct injection to an Earth-escape trajectory. missiontestsystemacceptance
TR-005 groundCompatibility The flight system shall communicate through the Meridian deep-space network at every Earth range of the mission. missiontestsystempreLaunch
TR-006 cislunarSafety The target body shall be placed in an orbit that remains bound to the Moon for at least 100 years without station-keeping, and no credible failure during the return shall place it on an Earth-impact trajectory. missionanalyzemissionqualification
TR-007 missionClass The flight system shall carry no single-point failure that ends the mission. missionanalyzesystemqualification
TR-008 deflectionDemonstration While attached to the target, the mission shall demonstrate a slow-push deflection and shall measure the resulting change in the target's heliocentric velocity to an accuracy of 1 mm/s. missiondemomissioninFlight
TR-009 utilisationAccess After delivery, the tug shall hold the target in an attitude and with a docking interface that lets the visiting vehicle Lantern dock and reach the target's surface. missiondemomissioninFlight
diff --git a/runs/documents-html/TethysIcdDocuments-CaptureIcdDocument.html b/runs/documents-html/TethysIcdDocuments-CaptureIcdDocument.html index dc1d1f9..544ca2e 100644 --- a/runs/documents-html/TethysIcdDocuments-CaptureIcdDocument.html +++ b/runs/documents-html/TethysIcdDocuments-CaptureIcdDocument.html @@ -39,32 +39,39 @@

Interface parameters

name type +valuation maximumContactForce ISQMechanics::ForceValue +2500 [N] maximumContactSpeed ISQSpaceTime::SpeedValue +0.1 ['m/s'] maximumBodySpinRate ISQSpaceTime::AngularVelocityValue +0.0175 ['rad⋅s⁻¹'] despinTorque ISQMechanics::TorqueValue +120 ['N⋅m'] surfaceTemperatureMinimum ISQBase::ThermodynamicTemperatureValue +180 [K] surfaceTemperatureMaximum ISQBase::ThermodynamicTemperatureValue +340 [K] diff --git a/runs/documents-html/TethysIcdDocuments-DataBusIcdDocument.html b/runs/documents-html/TethysIcdDocuments-DataBusIcdDocument.html index d3594fc..b8ce8c4 100644 --- a/runs/documents-html/TethysIcdDocuments-DataBusIcdDocument.html +++ b/runs/documents-html/TethysIcdDocuments-DataBusIcdDocument.html @@ -39,20 +39,24 @@

Interface parameters

name type +valuation busRate ISQInformation::BinaryDigitRateValue +1000000 [bit/s] maximumPacketLength ISQInformation::StorageCapacityValue +1024 [B] pollingPeriod ISQBase::DurationValue +0.125 [s] diff --git a/runs/documents-html/TethysIcdDocuments-DockingIcdDocument.html b/runs/documents-html/TethysIcdDocuments-DockingIcdDocument.html index 9a114f1..75adbdb 100644 --- a/runs/documents-html/TethysIcdDocuments-DockingIcdDocument.html +++ b/runs/documents-html/TethysIcdDocuments-DockingIcdDocument.html @@ -39,28 +39,34 @@

Interface parameters

name type +valuation ringDiameter ISQBase::LengthValue +0.8 [m] captureSpeedMaximum ISQSpaceTime::SpeedValue +0.05 ['m/s'] transferVoltage ISQElectromagnetism::ElectricPotentialValue +120 [V] transferPower ISQMechanics::PowerValue +2 [kW] dataRate ISQInformation::BinaryDigitRateValue +10000000 [bit/s] diff --git a/runs/documents-html/TethysIcdDocuments-HighVoltagePowerIcdDocument.html b/runs/documents-html/TethysIcdDocuments-HighVoltagePowerIcdDocument.html index e8b6496..71c0058 100644 --- a/runs/documents-html/TethysIcdDocuments-HighVoltagePowerIcdDocument.html +++ b/runs/documents-html/TethysIcdDocuments-HighVoltagePowerIcdDocument.html @@ -39,16 +39,19 @@

Interface parameters

name type +valuation busVoltage ISQElectromagnetism::ElectricPotentialValue +300 [V] maximumLoadPower ISQMechanics::PowerValue +40 [kW] diff --git a/runs/documents-html/TethysIcdDocuments-InspectorDispenserIcdDocument.html b/runs/documents-html/TethysIcdDocuments-InspectorDispenserIcdDocument.html index 1a5b691..ed050f5 100644 --- a/runs/documents-html/TethysIcdDocuments-InspectorDispenserIcdDocument.html +++ b/runs/documents-html/TethysIcdDocuments-InspectorDispenserIcdDocument.html @@ -39,20 +39,24 @@

Interface parameters

name type +valuation railPreload ISQMechanics::ForceValue +400 [N] ejectionSpeed ISQSpaceTime::SpeedValue +0.3 ['m/s'] inspectorMassMaximum ISQBase::MassValue +26 [kg] diff --git a/runs/documents-html/TethysIcdDocuments-InspectorRelayIcdDocument.html b/runs/documents-html/TethysIcdDocuments-InspectorRelayIcdDocument.html index b343dbe..1faae59 100644 --- a/runs/documents-html/TethysIcdDocuments-InspectorRelayIcdDocument.html +++ b/runs/documents-html/TethysIcdDocuments-InspectorRelayIcdDocument.html @@ -39,44 +39,54 @@

Interface parameters

name type +valuation forwardFrequency ISQSpaceTime::FrequencyValue +401500000 [Hz] returnFrequency ISQSpaceTime::FrequencyValue +437500000 [Hz] modulation TethysIcds::Modulation +gmsk coding TethysIcds::ChannelCoding +convolutionalRateHalf returnRate ISQInformation::BinaryDigitRateValue +1000000 [bit/s] maximumRange ISQBase::LengthValue +5 [km] minimumRange ISQBase::LengthValue +50 [m] maximumOffBoresight ISQSpaceTime::AngularMeasureValue +60 ['°'] dailyContactWindow ISQBase::DurationValue +18 [h] diff --git a/runs/documents-html/TethysIcdDocuments-InspectorThermalIcdDocument.html b/runs/documents-html/TethysIcdDocuments-InspectorThermalIcdDocument.html index d5a54c6..3bab2a9 100644 --- a/runs/documents-html/TethysIcdDocuments-InspectorThermalIcdDocument.html +++ b/runs/documents-html/TethysIcdDocuments-InspectorThermalIcdDocument.html @@ -39,16 +39,19 @@

Interface parameters

name type +valuation survivalTemperature ISQBase::ThermodynamicTemperatureValue +263 [K] heaterPower ISQMechanics::PowerValue +4 [W] diff --git a/runs/documents-html/TethysIcdDocuments-LaunchIcdDocument.html b/runs/documents-html/TethysIcdDocuments-LaunchIcdDocument.html index 359e862..578d13c 100644 --- a/runs/documents-html/TethysIcdDocuments-LaunchIcdDocument.html +++ b/runs/documents-html/TethysIcdDocuments-LaunchIcdDocument.html @@ -39,64 +39,79 @@

Interface parameters

name type +valuation adapterDiameter ISQBase::LengthValue +1.666 [m] fairingEnvelopeDiameter ISQBase::LengthValue +4.5 [m] fairingEnvelopeHeight ISQBase::LengthValue +11 [m] axialQuasiStatic ISQSpaceTime::AccelerationValue +58.8 ['m/s²'] lateralQuasiStatic ISQSpaceTime::AccelerationValue +19.6 ['m/s²'] sineVibration ISQSpaceTime::AccelerationValue +9.8 ['m/s²'] shockResponse ISQSpaceTime::AccelerationValue +19600 ['m/s²'] acousticLevelDb ScalarValues::Real +139.5 maximumStackMass ISQBase::MassValue +12800 [kg] maximumCentreOfMassHeight ISQBase::LengthValue +2.6 [m] separationSpeed ISQSpaceTime::SpeedValue +0.5 ['m/s'] tipOffRate ISQSpaceTime::AngularVelocityValue +0.0175 ['rad⋅s⁻¹'] injectionC3ToleranceKm2PerS2 ScalarValues::Real +0.1 umbilicalVoltage ISQElectromagnetism::ElectricPotentialValue +28 [V] diff --git a/runs/documents-html/TethysIcdDocuments-PacketInterfaceDocument.html b/runs/documents-html/TethysIcdDocuments-PacketInterfaceDocument.html index b38cedd..2e98de0 100644 --- a/runs/documents-html/TethysIcdDocuments-PacketInterfaceDocument.html +++ b/runs/documents-html/TethysIcdDocuments-PacketInterfaceDocument.html @@ -39,16 +39,19 @@

Interface parameters

name type +valuation maximumPacketLength ISQInformation::StorageCapacityValue +65542 [B] housekeepingApid ScalarValues::Natural +1 diff --git a/runs/documents-html/TethysIcdDocuments-PowerIcdDocument.html b/runs/documents-html/TethysIcdDocuments-PowerIcdDocument.html index b75edc5..78544a3 100644 --- a/runs/documents-html/TethysIcdDocuments-PowerIcdDocument.html +++ b/runs/documents-html/TethysIcdDocuments-PowerIcdDocument.html @@ -39,20 +39,24 @@

Interface parameters

name type +valuation busVoltage ISQElectromagnetism::ElectricPotentialValue +28 [V] voltageTolerance ISQElectromagnetism::ElectricPotentialValue +1 [V] maximumLoadPower ISQMechanics::PowerValue +1200 [W] diff --git a/runs/documents-html/TethysIcdDocuments-PropellantFeedIcdDocument.html b/runs/documents-html/TethysIcdDocuments-PropellantFeedIcdDocument.html index 4c9dc39..67ff540 100644 --- a/runs/documents-html/TethysIcdDocuments-PropellantFeedIcdDocument.html +++ b/runs/documents-html/TethysIcdDocuments-PropellantFeedIcdDocument.html @@ -39,20 +39,24 @@

Interface parameters

name type +valuation fillPressure ISQMechanics::PressureValue +15000000 [Pa] fillRate ISQMechanics::MassFlowRateValue +0.02 ['kg⋅s⁻¹'] loadedMass ISQBase::MassValue + diff --git a/runs/documents-html/TethysIcdDocuments-SpaceGroundIcdDocument.html b/runs/documents-html/TethysIcdDocuments-SpaceGroundIcdDocument.html index 6d9aeb8..dacc0ea 100644 --- a/runs/documents-html/TethysIcdDocuments-SpaceGroundIcdDocument.html +++ b/runs/documents-html/TethysIcdDocuments-SpaceGroundIcdDocument.html @@ -39,56 +39,69 @@

Interface parameters

name type +valuation uplinkFrequency ISQSpaceTime::FrequencyValue +7165000000 [Hz] xDownlinkFrequency ISQSpaceTime::FrequencyValue +8445000000 [Hz] kaDownlinkFrequency ISQSpaceTime::FrequencyValue +32050000000 [Hz] uplinkModulation TethysIcds::Modulation +bpsk downlinkModulation TethysIcds::Modulation +qpsk downlinkCoding TethysIcds::ChannelCoding +turboRateSixth minimumDownlinkRate ISQInformation::BinaryDigitRateValue +2000 [bit/s] maximumDownlinkRate ISQInformation::BinaryDigitRateValue +4000000 [bit/s] uplinkRate ISQInformation::BinaryDigitRateValue +2000 [bit/s] rangingTone ISQSpaceTime::FrequencyValue +1000000 [Hz] packetProtocol ScalarValues::String +space packet, telemetry transfer frames downlinkBand TethysMeridian::RfBand +xBand diff --git a/runs/documents-html/TethysIcdDocuments-ThermalIcdDocument.html b/runs/documents-html/TethysIcdDocuments-ThermalIcdDocument.html index b1a6569..275f2b1 100644 --- a/runs/documents-html/TethysIcdDocuments-ThermalIcdDocument.html +++ b/runs/documents-html/TethysIcdDocuments-ThermalIcdDocument.html @@ -39,24 +39,29 @@

Interface parameters

name type +valuation conductance ISQThermodynamics::ThermalConductanceValue +2.5 [W/K] maximumHeat ISQMechanics::PowerValue +150 [W] interfaceTemperatureMinimum ISQBase::ThermodynamicTemperatureValue +253 [K] interfaceTemperatureMaximum ISQBase::ThermodynamicTemperatureValue +313 [K] diff --git a/runs/documents-html/TethysIcdDocuments-TugInspectorIcdDocument.html b/runs/documents-html/TethysIcdDocuments-TugInspectorIcdDocument.html index c851d1c..22d7888 100644 --- a/runs/documents-html/TethysIcdDocuments-TugInspectorIcdDocument.html +++ b/runs/documents-html/TethysIcdDocuments-TugInspectorIcdDocument.html @@ -39,20 +39,24 @@

Interface parameters

name type +valuation keepAliveVoltage ISQElectromagnetism::ElectricPotentialValue +28 [V] keepAlivePower ISQMechanics::PowerValue +15 [W] checkoutDataRate ISQInformation::BinaryDigitRateValue +9600 [bit/s] diff --git a/runs/documents-html/TethysVerificationTooling-VvReport.html b/runs/documents-html/TethysVerificationTooling-VvReport.html index d9d309a..36c78e5 100644 --- a/runs/documents-html/TethysVerificationTooling-VvReport.html +++ b/runs/documents-html/TethysVerificationTooling-VvReport.html @@ -10,12 +10,15 @@

Tethys verification and validation matrix

Every requirement of the Tethys tree (L1 to L4, needs, objectives and success criteria), the cases that verify it, the parts that satisfy it and the requirements it derives from.

- +
+ + + @@ -26,6 +29,9 @@

Tethys verification and validation matrix

+ + + @@ -34,6 +40,9 @@

Tethys verification and validation matrix

+ + + @@ -42,6 +51,9 @@

Tethys verification and validation matrix

+ + + @@ -50,6 +62,9 @@

Tethys verification and validation matrix

+ + + @@ -58,6 +73,9 @@

Tethys verification and validation matrix

+ + + @@ -66,6 +84,9 @@

Tethys verification and validation matrix

+ + + @@ -74,6 +95,9 @@

Tethys verification and validation matrix

+ + + @@ -82,6 +106,9 @@

Tethys verification and validation matrix

+ + + @@ -90,6 +117,9 @@

Tethys verification and validation matrix

+ + + @@ -97,12 +127,15 @@

Tethys verification and validation matrix

L1 mission requirements
shortName nameVerification::methodVerification::levelVerification::stage verifiedBy cases satisfiedBy
TR-001 retrievalanalyzemissioninFlight DeliveryAnalysis 1
TR-002 missionDurationanalyzemissioninFlight DeliveryAnalysis, MissionDurationByAnalysis 2
TR-003 characterisationanalyzemissioninFlight CharacterisationAnalysis 1
TR-004 launchCompatibilitytestsystemacceptance InterfaceBaselineInspection 1
TR-005 groundCompatibilitytestsystempreLaunch GroundReadinessDemo 1
TR-006 cislunarSafetyanalyzemissionqualification ReturnSafetyAnalysis 1
TR-007 missionClassanalyzesystemqualification RedundancyInspection 1
TR-008 deflectionDemonstrationdemomissioninFlight DeflectionAnalysis 1
TR-009 utilisationAccessdemomissioninFlight DockingDemo 1
- +
+ + + @@ -113,6 +146,9 @@

Tethys verification and validation matrix

+ + + @@ -121,6 +157,9 @@

Tethys verification and validation matrix

+ + + @@ -129,6 +168,9 @@

Tethys verification and validation matrix

+ + + @@ -137,6 +179,9 @@

Tethys verification and validation matrix

+ + + @@ -145,6 +190,9 @@

Tethys verification and validation matrix

+ + + @@ -153,6 +201,9 @@

Tethys verification and validation matrix

+ + + @@ -161,6 +212,9 @@

Tethys verification and validation matrix

+ + + @@ -169,6 +223,9 @@

Tethys verification and validation matrix

+ + + @@ -177,6 +234,9 @@

Tethys verification and validation matrix

+ + + @@ -185,6 +245,9 @@

Tethys verification and validation matrix

+ + + @@ -193,6 +256,9 @@

Tethys verification and validation matrix

+ + + @@ -201,6 +267,9 @@

Tethys verification and validation matrix

+ + + @@ -209,6 +278,9 @@

Tethys verification and validation matrix

+ + + @@ -217,6 +289,9 @@

Tethys verification and validation matrix

+ + + @@ -225,6 +300,9 @@

Tethys verification and validation matrix

+ + + @@ -233,6 +311,9 @@

Tethys verification and validation matrix

+ + + @@ -241,6 +322,9 @@

Tethys verification and validation matrix

+ + + @@ -249,6 +333,9 @@

Tethys verification and validation matrix

+ + + @@ -257,6 +344,9 @@

Tethys verification and validation matrix

+ + + @@ -264,12 +354,15 @@

Tethys verification and validation matrix

Needs, objectives and success criteria
shortName nameVerification::methodVerification::levelVerification::stage verifiedBy cases satisfiedBy
N-001 returnedBodyNeeddemomissioninFlight MissionValidation 1
N-002 timelinessNeedanalyzemissioninFlight MissionValidation 1
N-003 knownTargetNeeddemomissioninFlight MissionValidation 1
N-004 noEarthRiskNeedanalyzemissionqualification MissionValidation 1
N-005 deflectionKnowledgeNeeddemomissioninFlight MissionValidation 1
N-006 surfaceAccessNeeddemomissioninFlight DockingDemo 1
N-007 operabilityNeeddemosystempreLaunch GroundReadinessDemo, ConOpsValidation 2
N-008 robustToTargetNeedanalyzemissionqualification MissionValidation 1
N-009 providerInterfaceNeedinspectsystemqualification InterfaceBaselineInspection 1
SO-001 shapeModelanalyzemissioninFlight CharacterisationAnalysis 1
SO-002 massEstimateanalyzemissioninFlight CharacterisationAnalysis 1
SO-003 spinStateanalyzemissioninFlight CharacterisationAnalysis 1
SO-004 deflectionMeasurementanalyzemissioninFlight SuccessCriteriaValidation 1
minimumSuccessdemomissioninFlight SuccessCriteriaValidation 1
fullSuccessdemomissioninFlight SuccessCriteriaValidation 1
MS-001 characteriseddemomissioninFlight SuccessCriteriaValidation 1
MS-002 deflecteddemomissioninFlight SuccessCriteriaValidation 1
FS-001 delivereddemomissioninFlight SuccessCriteriaValidation 1
FS-002 accessibledemomissioninFlight SuccessCriteriaValidation 1
- +
+ + + @@ -280,6 +373,9 @@

Tethys verification and validation matrix

+ + + @@ -288,6 +384,9 @@

Tethys verification and validation matrix

+ + + @@ -296,6 +395,9 @@

Tethys verification and validation matrix

+ + + @@ -304,6 +406,9 @@

Tethys verification and validation matrix

+ + + @@ -312,6 +417,9 @@

Tethys verification and validation matrix

+ + + @@ -320,6 +428,9 @@

Tethys verification and validation matrix

+ + + @@ -328,6 +439,9 @@

Tethys verification and validation matrix

+ + + @@ -336,6 +450,9 @@

Tethys verification and validation matrix

+ + + @@ -344,6 +461,9 @@

Tethys verification and validation matrix

+ + + @@ -352,6 +472,9 @@

Tethys verification and validation matrix

+ + + @@ -360,6 +483,9 @@

Tethys verification and validation matrix

+ + + @@ -368,6 +494,9 @@

Tethys verification and validation matrix

+ + + @@ -376,6 +505,9 @@

Tethys verification and validation matrix

+ + + @@ -384,6 +516,9 @@

Tethys verification and validation matrix

+ + + @@ -392,6 +527,9 @@

Tethys verification and validation matrix

+ + + @@ -400,6 +538,9 @@

Tethys verification and validation matrix

+ + + @@ -408,6 +549,9 @@

Tethys verification and validation matrix

+ + + @@ -416,6 +560,9 @@

Tethys verification and validation matrix

+ + + @@ -424,6 +571,9 @@

Tethys verification and validation matrix

+ + + @@ -432,6 +582,9 @@

Tethys verification and validation matrix

+ + + @@ -440,6 +593,9 @@

Tethys verification and validation matrix

+ + + @@ -448,6 +604,9 @@

Tethys verification and validation matrix

+ + + @@ -456,6 +615,9 @@

Tethys verification and validation matrix

+ + + @@ -464,6 +626,9 @@

Tethys verification and validation matrix

+ + + @@ -472,6 +637,9 @@

Tethys verification and validation matrix

+ + + @@ -480,6 +648,9 @@

Tethys verification and validation matrix

+ + + @@ -488,6 +659,9 @@

Tethys verification and validation matrix

+ + + @@ -496,6 +670,9 @@

Tethys verification and validation matrix

+ + + @@ -503,12 +680,15 @@

Tethys verification and validation matrix

L2 system requirements
shortName nameVerification::methodVerification::levelVerification::stage verifiedBy cases satisfiedBy
TS-001 captureEnvelopetestsystemqualification CaptureEnvelopeTest 1 argent
TS-002 deliveredMassanalyzemissioninFlight DeliveryAnalysis 1 flight
TS-003 transferDurationanalyzemissionqualification PowerAnalysis 1 flight
TS-004 propellantCapacityanalyzesystemqualification PropellantAnalysis 1 argent
TS-005 characterisationProductsanalyzesysteminFlight CharacterisationAnalysis 1 flight
TS-006 launchCompatibilityinspectsystempreLaunch MassBudgetAnalysis 1
TS-007 deepSpaceLinktestsystempreLaunch LinkBudgetTest 1
TS-008 earthImpactExclusionanalyzemissionqualification ReturnSafetyAnalysis 1 flight
TS-009 droStabilityanalyzemissionqualification ReturnSafetyAnalysis 1 flight
TS-010 thrustRedundancyinspectsystemqualification RedundancyInspection, SepCommissioning 2 argent
TS-011 deflectionMeasurementanalyzemissioninFlight DeflectionAnalysis 1 flight
TS-012 visitorDockingdemomissioninFlight DockingDemo 1
TS-013 autonomousSurvivaltestsystemqualification AutonomyTest 1 flight
TS-014 proximityContactEnvironmenttestsubsystemqualification ContactSpeedTest 1 argent
TS-015 faultResponsetestsystemqualification FaultResponseTest 1 flight
TS-016 massBudgetanalyzesystemacceptance MassBudgetAnalysis 1 argent
TS-017 captureQualificationtestsubsystemqualification CaptureEnvelopeTest 1
TS-018 inspectorDeploymenttestsystemacceptance SeparationTest 1 flight
TS-019 despinCapacityanalyzesystemqualification DespinAnalysis 1 argent
TS-020 groundCoveragedemosystempreLaunch GroundReadinessDemo 1 ground
TS-021 commandLatencydemosystempreLaunch GroundReadinessDemo 1 ground
TS-022 operatorWorkloaddemosystempreLaunch GroundReadinessDemo 1 ground
flightPerformanceRequirementsinspectsystemqualification DocumentInspection 1
flightSafetyAndAutonomyRequirementsinspectsystemqualification DocumentInspection 1
flightEnvironmentAndBudgetRequirementsinspectsystemqualification DocumentInspection 1
interfaceRequirementsinspectsystemqualification DocumentInspection 1
groundSegmentRequirementsinspectsystemqualification DocumentInspection 1
safetyRequirementsinspectmissionqualification DocumentInspection 1
- +
+ + + @@ -519,6 +699,9 @@

Tethys verification and validation matrix

+ + + @@ -527,6 +710,9 @@

Tethys verification and validation matrix

+ + + @@ -535,6 +721,9 @@

Tethys verification and validation matrix

+ + + @@ -543,6 +732,9 @@

Tethys verification and validation matrix

+ + + @@ -551,6 +743,9 @@

Tethys verification and validation matrix

+ + + @@ -559,6 +754,9 @@

Tethys verification and validation matrix

+ + + @@ -567,6 +765,9 @@

Tethys verification and validation matrix

+ + + @@ -575,6 +776,9 @@

Tethys verification and validation matrix

+ + + @@ -583,6 +787,9 @@

Tethys verification and validation matrix

+ + + @@ -591,6 +798,9 @@

Tethys verification and validation matrix

+ + + @@ -599,6 +809,9 @@

Tethys verification and validation matrix

+ + + @@ -607,6 +820,9 @@

Tethys verification and validation matrix

+ + + @@ -615,6 +831,9 @@

Tethys verification and validation matrix

+ + + @@ -623,6 +842,9 @@

Tethys verification and validation matrix

+ + + @@ -631,6 +853,9 @@

Tethys verification and validation matrix

+ + + @@ -639,6 +864,9 @@

Tethys verification and validation matrix

+ + + @@ -647,6 +875,9 @@

Tethys verification and validation matrix

+ + + @@ -655,6 +886,9 @@

Tethys verification and validation matrix

+ + + @@ -663,6 +897,9 @@

Tethys verification and validation matrix

+ + + @@ -671,6 +908,9 @@

Tethys verification and validation matrix

+ + + @@ -679,6 +919,9 @@

Tethys verification and validation matrix

+ + + @@ -687,6 +930,9 @@

Tethys verification and validation matrix

+ + + @@ -695,6 +941,9 @@

Tethys verification and validation matrix

+ + + @@ -703,6 +952,9 @@

Tethys verification and validation matrix

+ + + @@ -711,6 +963,9 @@

Tethys verification and validation matrix

+ + + @@ -719,6 +974,9 @@

Tethys verification and validation matrix

+ + + @@ -727,6 +985,9 @@

Tethys verification and validation matrix

+ + + @@ -735,6 +996,9 @@

Tethys verification and validation matrix

+ + + @@ -743,6 +1007,9 @@

Tethys verification and validation matrix

+ + + @@ -751,6 +1018,9 @@

Tethys verification and validation matrix

+ + + @@ -759,6 +1029,9 @@

Tethys verification and validation matrix

+ + + @@ -767,6 +1040,9 @@

Tethys verification and validation matrix

+ + + diff --git a/runs/documents/TethysDocuments-VerificationMatrix.md b/runs/documents/TethysDocuments-VerificationMatrix.md index 5a8a424..a00e4a5 100644 --- a/runs/documents/TethysDocuments-VerificationMatrix.md +++ b/runs/documents/TethysDocuments-VerificationMatrix.md @@ -8,17 +8,17 @@ One row per requirement. The verification cases that close each row are added by *L1 requirements* -| Id | Name | Statement | Tier | -| --- | --- | --- | --- | -| TR-001 | retrieval | The mission shall deliver the target body 2031 QX, intact and with a mass of at
least 100 t, into the designated lunar distant retrograde orbit. | mission | -| TR-002 | missionDuration | The mission shall complete the insertion of the target into the distant
retrograde orbit within 2 200 days of launch (TethysMission::tethys.nominalDuration). | mission | -| TR-003 | characterisation | Before committing to capture, the mission shall determine the target's shape,
mass to within 10 % and spin state, and shall confirm that each lies within the
capture system's design envelope. | mission | -| TR-004 | launchCompatibility | The flight system shall be compatible with the Arcturus-5H launch vehicle and its
direct injection to an Earth-escape trajectory. | mission | -| TR-005 | groundCompatibility | The flight system shall communicate through the Meridian deep-space network at
every Earth range of the mission. | mission | -| TR-006 | cislunarSafety | The target body shall be placed in an orbit that remains bound to the Moon for at
least 100 years without station-keeping, and no credible failure during the return
shall place it on an Earth-impact trajectory. | mission | -| TR-007 | missionClass | The flight system shall carry no single-point failure that ends the mission. | mission | -| TR-008 | deflectionDemonstration | While attached to the target, the mission shall demonstrate a slow-push
deflection and shall measure the resulting change in the target's heliocentric
velocity to an accuracy of 1 mm/s. | mission | -| TR-009 | utilisationAccess | After delivery, the tug shall hold the target in an attitude and with a docking
interface that lets the visiting vehicle Lantern dock and reach the target's
surface. | mission | +| Id | Name | Statement | Tier | Method | Level | Stage | +| --- | --- | --- | --- | --- | --- | --- | +| TR-001 | retrieval | The mission shall deliver the target body 2031 QX, intact and with a mass of at
least 100 t, into the designated lunar distant retrograde orbit. | mission | analyze | mission | inFlight | +| TR-002 | missionDuration | The mission shall complete the insertion of the target into the distant
retrograde orbit within 2 200 days of launch (TethysMission::tethys.nominalDuration). | mission | analyze | mission | inFlight | +| TR-003 | characterisation | Before committing to capture, the mission shall determine the target's shape,
mass to within 10 % and spin state, and shall confirm that each lies within the
capture system's design envelope. | mission | analyze | mission | inFlight | +| TR-004 | launchCompatibility | The flight system shall be compatible with the Arcturus-5H launch vehicle and its
direct injection to an Earth-escape trajectory. | mission | test | system | acceptance | +| TR-005 | groundCompatibility | The flight system shall communicate through the Meridian deep-space network at
every Earth range of the mission. | mission | test | system | preLaunch | +| TR-006 | cislunarSafety | The target body shall be placed in an orbit that remains bound to the Moon for at
least 100 years without station-keeping, and no credible failure during the return
shall place it on an Earth-impact trajectory. | mission | analyze | mission | qualification | +| TR-007 | missionClass | The flight system shall carry no single-point failure that ends the mission. | mission | analyze | system | qualification | +| TR-008 | deflectionDemonstration | While attached to the target, the mission shall demonstrate a slow-push
deflection and shall measure the resulting change in the target's heliocentric
velocity to an accuracy of 1 mm/s. | mission | demo | mission | inFlight | +| TR-009 | utilisationAccess | After delivery, the tug shall hold the target in an attitude and with a docking
interface that lets the visiting vehicle Lantern dock and reach the target's
surface. | mission | demo | mission | inFlight | *The same requirements as an element table* diff --git a/runs/documents/TethysIcdDocuments-CaptureIcdDocument.md b/runs/documents/TethysIcdDocuments-CaptureIcdDocument.md index 84c9a07..584a719 100644 --- a/runs/documents/TethysIcdDocuments-CaptureIcdDocument.md +++ b/runs/documents/TethysIcdDocuments-CaptureIcdDocument.md @@ -13,11 +13,11 @@ *Parameters both sides agree on* -| name | type | -| --- | --- | -| maximumContactForce | ISQMechanics::ForceValue | -| maximumContactSpeed | ISQSpaceTime::SpeedValue | -| maximumBodySpinRate | ISQSpaceTime::AngularVelocityValue | -| despinTorque | ISQMechanics::TorqueValue | -| surfaceTemperatureMinimum | ISQBase::ThermodynamicTemperatureValue | -| surfaceTemperatureMaximum | ISQBase::ThermodynamicTemperatureValue | +| name | type | valuation | +| --- | --- | --- | +| maximumContactForce | ISQMechanics::ForceValue | 2500 \[N\] | +| maximumContactSpeed | ISQSpaceTime::SpeedValue | 0.1 \['m/s'\] | +| maximumBodySpinRate | ISQSpaceTime::AngularVelocityValue | 0.0175 \['rad⋅s⁻¹'\] | +| despinTorque | ISQMechanics::TorqueValue | 120 \['N⋅m'\] | +| surfaceTemperatureMinimum | ISQBase::ThermodynamicTemperatureValue | 180 \[K\] | +| surfaceTemperatureMaximum | ISQBase::ThermodynamicTemperatureValue | 340 \[K\] | diff --git a/runs/documents/TethysIcdDocuments-DataBusIcdDocument.md b/runs/documents/TethysIcdDocuments-DataBusIcdDocument.md index 7b459d9..9c4cf1f 100644 --- a/runs/documents/TethysIcdDocuments-DataBusIcdDocument.md +++ b/runs/documents/TethysIcdDocuments-DataBusIcdDocument.md @@ -13,8 +13,8 @@ *Parameters both sides agree on* -| name | type | -| --- | --- | -| busRate | ISQInformation::BinaryDigitRateValue | -| maximumPacketLength | ISQInformation::StorageCapacityValue | -| pollingPeriod | ISQBase::DurationValue | +| name | type | valuation | +| --- | --- | --- | +| busRate | ISQInformation::BinaryDigitRateValue | 1000000 \[bit/s\] | +| maximumPacketLength | ISQInformation::StorageCapacityValue | 1024 \[B\] | +| pollingPeriod | ISQBase::DurationValue | 0.125 \[s\] | diff --git a/runs/documents/TethysIcdDocuments-DockingIcdDocument.md b/runs/documents/TethysIcdDocuments-DockingIcdDocument.md index 67304cf..9718485 100644 --- a/runs/documents/TethysIcdDocuments-DockingIcdDocument.md +++ b/runs/documents/TethysIcdDocuments-DockingIcdDocument.md @@ -13,10 +13,10 @@ *Parameters both sides agree on* -| name | type | -| --- | --- | -| ringDiameter | ISQBase::LengthValue | -| captureSpeedMaximum | ISQSpaceTime::SpeedValue | -| transferVoltage | ISQElectromagnetism::ElectricPotentialValue | -| transferPower | ISQMechanics::PowerValue | -| dataRate | ISQInformation::BinaryDigitRateValue | +| name | type | valuation | +| --- | --- | --- | +| ringDiameter | ISQBase::LengthValue | 0.8 \[m\] | +| captureSpeedMaximum | ISQSpaceTime::SpeedValue | 0.05 \['m/s'\] | +| transferVoltage | ISQElectromagnetism::ElectricPotentialValue | 120 \[V\] | +| transferPower | ISQMechanics::PowerValue | 2 \[kW\] | +| dataRate | ISQInformation::BinaryDigitRateValue | 10000000 \[bit/s\] | diff --git a/runs/documents/TethysIcdDocuments-HighVoltagePowerIcdDocument.md b/runs/documents/TethysIcdDocuments-HighVoltagePowerIcdDocument.md index 99ddc68..a0ad1bb 100644 --- a/runs/documents/TethysIcdDocuments-HighVoltagePowerIcdDocument.md +++ b/runs/documents/TethysIcdDocuments-HighVoltagePowerIcdDocument.md @@ -13,7 +13,7 @@ *Parameters both sides agree on* -| name | type | -| --- | --- | -| busVoltage | ISQElectromagnetism::ElectricPotentialValue | -| maximumLoadPower | ISQMechanics::PowerValue | +| name | type | valuation | +| --- | --- | --- | +| busVoltage | ISQElectromagnetism::ElectricPotentialValue | 300 \[V\] | +| maximumLoadPower | ISQMechanics::PowerValue | 40 \[kW\] | diff --git a/runs/documents/TethysIcdDocuments-InspectorDispenserIcdDocument.md b/runs/documents/TethysIcdDocuments-InspectorDispenserIcdDocument.md index d7152f8..e7439dd 100644 --- a/runs/documents/TethysIcdDocuments-InspectorDispenserIcdDocument.md +++ b/runs/documents/TethysIcdDocuments-InspectorDispenserIcdDocument.md @@ -13,8 +13,8 @@ *Parameters both sides agree on* -| name | type | -| --- | --- | -| railPreload | ISQMechanics::ForceValue | -| ejectionSpeed | ISQSpaceTime::SpeedValue | -| inspectorMassMaximum | ISQBase::MassValue | +| name | type | valuation | +| --- | --- | --- | +| railPreload | ISQMechanics::ForceValue | 400 \[N\] | +| ejectionSpeed | ISQSpaceTime::SpeedValue | 0.3 \['m/s'\] | +| inspectorMassMaximum | ISQBase::MassValue | 26 \[kg\] | diff --git a/runs/documents/TethysIcdDocuments-InspectorRelayIcdDocument.md b/runs/documents/TethysIcdDocuments-InspectorRelayIcdDocument.md index db5da14..98c3947 100644 --- a/runs/documents/TethysIcdDocuments-InspectorRelayIcdDocument.md +++ b/runs/documents/TethysIcdDocuments-InspectorRelayIcdDocument.md @@ -13,14 +13,14 @@ *Parameters both sides agree on* -| name | type | -| --- | --- | -| forwardFrequency | ISQSpaceTime::FrequencyValue | -| returnFrequency | ISQSpaceTime::FrequencyValue | -| modulation | TethysIcds::Modulation | -| coding | TethysIcds::ChannelCoding | -| returnRate | ISQInformation::BinaryDigitRateValue | -| maximumRange | ISQBase::LengthValue | -| minimumRange | ISQBase::LengthValue | -| maximumOffBoresight | ISQSpaceTime::AngularMeasureValue | -| dailyContactWindow | ISQBase::DurationValue | +| name | type | valuation | +| --- | --- | --- | +| forwardFrequency | ISQSpaceTime::FrequencyValue | 401500000 \[Hz\] | +| returnFrequency | ISQSpaceTime::FrequencyValue | 437500000 \[Hz\] | +| modulation | TethysIcds::Modulation | gmsk | +| coding | TethysIcds::ChannelCoding | convolutionalRateHalf | +| returnRate | ISQInformation::BinaryDigitRateValue | 1000000 \[bit/s\] | +| maximumRange | ISQBase::LengthValue | 5 \[km\] | +| minimumRange | ISQBase::LengthValue | 50 \[m\] | +| maximumOffBoresight | ISQSpaceTime::AngularMeasureValue | 60 \['°'\] | +| dailyContactWindow | ISQBase::DurationValue | 18 \[h\] | diff --git a/runs/documents/TethysIcdDocuments-InspectorThermalIcdDocument.md b/runs/documents/TethysIcdDocuments-InspectorThermalIcdDocument.md index f96ee8d..389a7a5 100644 --- a/runs/documents/TethysIcdDocuments-InspectorThermalIcdDocument.md +++ b/runs/documents/TethysIcdDocuments-InspectorThermalIcdDocument.md @@ -13,7 +13,7 @@ *Parameters both sides agree on* -| name | type | -| --- | --- | -| survivalTemperature | ISQBase::ThermodynamicTemperatureValue | -| heaterPower | ISQMechanics::PowerValue | +| name | type | valuation | +| --- | --- | --- | +| survivalTemperature | ISQBase::ThermodynamicTemperatureValue | 263 \[K\] | +| heaterPower | ISQMechanics::PowerValue | 4 \[W\] | diff --git a/runs/documents/TethysIcdDocuments-LaunchIcdDocument.md b/runs/documents/TethysIcdDocuments-LaunchIcdDocument.md index f9b82d9..320d6a0 100644 --- a/runs/documents/TethysIcdDocuments-LaunchIcdDocument.md +++ b/runs/documents/TethysIcdDocuments-LaunchIcdDocument.md @@ -13,19 +13,19 @@ *Parameters both sides agree on* -| name | type | -| --- | --- | -| adapterDiameter | ISQBase::LengthValue | -| fairingEnvelopeDiameter | ISQBase::LengthValue | -| fairingEnvelopeHeight | ISQBase::LengthValue | -| axialQuasiStatic | ISQSpaceTime::AccelerationValue | -| lateralQuasiStatic | ISQSpaceTime::AccelerationValue | -| sineVibration | ISQSpaceTime::AccelerationValue | -| shockResponse | ISQSpaceTime::AccelerationValue | -| acousticLevelDb | ScalarValues::Real | -| maximumStackMass | ISQBase::MassValue | -| maximumCentreOfMassHeight | ISQBase::LengthValue | -| separationSpeed | ISQSpaceTime::SpeedValue | -| tipOffRate | ISQSpaceTime::AngularVelocityValue | -| injectionC3ToleranceKm2PerS2 | ScalarValues::Real | -| umbilicalVoltage | ISQElectromagnetism::ElectricPotentialValue | +| name | type | valuation | +| --- | --- | --- | +| adapterDiameter | ISQBase::LengthValue | 1.666 \[m\] | +| fairingEnvelopeDiameter | ISQBase::LengthValue | 4.5 \[m\] | +| fairingEnvelopeHeight | ISQBase::LengthValue | 11 \[m\] | +| axialQuasiStatic | ISQSpaceTime::AccelerationValue | 58.8 \['m/s²'\] | +| lateralQuasiStatic | ISQSpaceTime::AccelerationValue | 19.6 \['m/s²'\] | +| sineVibration | ISQSpaceTime::AccelerationValue | 9.8 \['m/s²'\] | +| shockResponse | ISQSpaceTime::AccelerationValue | 19600 \['m/s²'\] | +| acousticLevelDb | ScalarValues::Real | 139.5 | +| maximumStackMass | ISQBase::MassValue | 12800 \[kg\] | +| maximumCentreOfMassHeight | ISQBase::LengthValue | 2.6 \[m\] | +| separationSpeed | ISQSpaceTime::SpeedValue | 0.5 \['m/s'\] | +| tipOffRate | ISQSpaceTime::AngularVelocityValue | 0.0175 \['rad⋅s⁻¹'\] | +| injectionC3ToleranceKm2PerS2 | ScalarValues::Real | 0.1 | +| umbilicalVoltage | ISQElectromagnetism::ElectricPotentialValue | 28 \[V\] | diff --git a/runs/documents/TethysIcdDocuments-PacketInterfaceDocument.md b/runs/documents/TethysIcdDocuments-PacketInterfaceDocument.md index dd02a0c..43fa1f7 100644 --- a/runs/documents/TethysIcdDocuments-PacketInterfaceDocument.md +++ b/runs/documents/TethysIcdDocuments-PacketInterfaceDocument.md @@ -13,7 +13,7 @@ *Parameters both sides agree on* -| name | type | -| --- | --- | -| maximumPacketLength | ISQInformation::StorageCapacityValue | -| housekeepingApid | ScalarValues::Natural | +| name | type | valuation | +| --- | --- | --- | +| maximumPacketLength | ISQInformation::StorageCapacityValue | 65542 \[B\] | +| housekeepingApid | ScalarValues::Natural | 1 | diff --git a/runs/documents/TethysIcdDocuments-PowerIcdDocument.md b/runs/documents/TethysIcdDocuments-PowerIcdDocument.md index 5f41441..3fe5c49 100644 --- a/runs/documents/TethysIcdDocuments-PowerIcdDocument.md +++ b/runs/documents/TethysIcdDocuments-PowerIcdDocument.md @@ -13,8 +13,8 @@ *Parameters both sides agree on* -| name | type | -| --- | --- | -| busVoltage | ISQElectromagnetism::ElectricPotentialValue | -| voltageTolerance | ISQElectromagnetism::ElectricPotentialValue | -| maximumLoadPower | ISQMechanics::PowerValue | +| name | type | valuation | +| --- | --- | --- | +| busVoltage | ISQElectromagnetism::ElectricPotentialValue | 28 \[V\] | +| voltageTolerance | ISQElectromagnetism::ElectricPotentialValue | 1 \[V\] | +| maximumLoadPower | ISQMechanics::PowerValue | 1200 \[W\] | diff --git a/runs/documents/TethysIcdDocuments-PropellantFeedIcdDocument.md b/runs/documents/TethysIcdDocuments-PropellantFeedIcdDocument.md index 0e04ac7..0bbae3b 100644 --- a/runs/documents/TethysIcdDocuments-PropellantFeedIcdDocument.md +++ b/runs/documents/TethysIcdDocuments-PropellantFeedIcdDocument.md @@ -13,8 +13,8 @@ *Parameters both sides agree on* -| name | type | -| --- | --- | -| fillPressure | ISQMechanics::PressureValue | -| fillRate | ISQMechanics::MassFlowRateValue | -| loadedMass | ISQBase::MassValue | +| name | type | valuation | +| --- | --- | --- | +| fillPressure | ISQMechanics::PressureValue | 15000000 \[Pa\] | +| fillRate | ISQMechanics::MassFlowRateValue | 0.02 \['kg⋅s⁻¹'\] | +| loadedMass | ISQBase::MassValue | | diff --git a/runs/documents/TethysIcdDocuments-SpaceGroundIcdDocument.md b/runs/documents/TethysIcdDocuments-SpaceGroundIcdDocument.md index 65a9f15..11e1295 100644 --- a/runs/documents/TethysIcdDocuments-SpaceGroundIcdDocument.md +++ b/runs/documents/TethysIcdDocuments-SpaceGroundIcdDocument.md @@ -13,17 +13,17 @@ *Parameters both sides agree on* -| name | type | -| --- | --- | -| uplinkFrequency | ISQSpaceTime::FrequencyValue | -| xDownlinkFrequency | ISQSpaceTime::FrequencyValue | -| kaDownlinkFrequency | ISQSpaceTime::FrequencyValue | -| uplinkModulation | TethysIcds::Modulation | -| downlinkModulation | TethysIcds::Modulation | -| downlinkCoding | TethysIcds::ChannelCoding | -| minimumDownlinkRate | ISQInformation::BinaryDigitRateValue | -| maximumDownlinkRate | ISQInformation::BinaryDigitRateValue | -| uplinkRate | ISQInformation::BinaryDigitRateValue | -| rangingTone | ISQSpaceTime::FrequencyValue | -| packetProtocol | ScalarValues::String | -| downlinkBand | TethysMeridian::RfBand | +| name | type | valuation | +| --- | --- | --- | +| uplinkFrequency | ISQSpaceTime::FrequencyValue | 7165000000 \[Hz\] | +| xDownlinkFrequency | ISQSpaceTime::FrequencyValue | 8445000000 \[Hz\] | +| kaDownlinkFrequency | ISQSpaceTime::FrequencyValue | 32050000000 \[Hz\] | +| uplinkModulation | TethysIcds::Modulation | bpsk | +| downlinkModulation | TethysIcds::Modulation | qpsk | +| downlinkCoding | TethysIcds::ChannelCoding | turboRateSixth | +| minimumDownlinkRate | ISQInformation::BinaryDigitRateValue | 2000 \[bit/s\] | +| maximumDownlinkRate | ISQInformation::BinaryDigitRateValue | 4000000 \[bit/s\] | +| uplinkRate | ISQInformation::BinaryDigitRateValue | 2000 \[bit/s\] | +| rangingTone | ISQSpaceTime::FrequencyValue | 1000000 \[Hz\] | +| packetProtocol | ScalarValues::String | space packet, telemetry transfer frames | +| downlinkBand | TethysMeridian::RfBand | xBand | diff --git a/runs/documents/TethysIcdDocuments-ThermalIcdDocument.md b/runs/documents/TethysIcdDocuments-ThermalIcdDocument.md index 8266ab6..39d9cc8 100644 --- a/runs/documents/TethysIcdDocuments-ThermalIcdDocument.md +++ b/runs/documents/TethysIcdDocuments-ThermalIcdDocument.md @@ -13,9 +13,9 @@ *Parameters both sides agree on* -| name | type | -| --- | --- | -| conductance | ISQThermodynamics::ThermalConductanceValue | -| maximumHeat | ISQMechanics::PowerValue | -| interfaceTemperatureMinimum | ISQBase::ThermodynamicTemperatureValue | -| interfaceTemperatureMaximum | ISQBase::ThermodynamicTemperatureValue | +| name | type | valuation | +| --- | --- | --- | +| conductance | ISQThermodynamics::ThermalConductanceValue | 2.5 \[W/K\] | +| maximumHeat | ISQMechanics::PowerValue | 150 \[W\] | +| interfaceTemperatureMinimum | ISQBase::ThermodynamicTemperatureValue | 253 \[K\] | +| interfaceTemperatureMaximum | ISQBase::ThermodynamicTemperatureValue | 313 \[K\] | diff --git a/runs/documents/TethysIcdDocuments-TugInspectorIcdDocument.md b/runs/documents/TethysIcdDocuments-TugInspectorIcdDocument.md index 6a431d5..5da0078 100644 --- a/runs/documents/TethysIcdDocuments-TugInspectorIcdDocument.md +++ b/runs/documents/TethysIcdDocuments-TugInspectorIcdDocument.md @@ -13,8 +13,8 @@ *Parameters both sides agree on* -| name | type | -| --- | --- | -| keepAliveVoltage | ISQElectromagnetism::ElectricPotentialValue | -| keepAlivePower | ISQMechanics::PowerValue | -| checkoutDataRate | ISQInformation::BinaryDigitRateValue | +| name | type | valuation | +| --- | --- | --- | +| keepAliveVoltage | ISQElectromagnetism::ElectricPotentialValue | 28 \[V\] | +| keepAlivePower | ISQMechanics::PowerValue | 15 \[W\] | +| checkoutDataRate | ISQInformation::BinaryDigitRateValue | 9600 \[bit/s\] | diff --git a/runs/documents/TethysVerificationTooling-VvReport.md b/runs/documents/TethysVerificationTooling-VvReport.md index 73a4b98..73bf707 100644 --- a/runs/documents/TethysVerificationTooling-VvReport.md +++ b/runs/documents/TethysVerificationTooling-VvReport.md @@ -4,111 +4,111 @@ Every requirement of the Tethys tree (L1 to L4, needs, objectives and success cr *L1 mission requirements* -| shortName | name | verifiedBy | cases | satisfiedBy | derivedFrom | -| --- | --- | --- | --- | --- | --- | -| TR-001 | retrieval | DeliveryAnalysis | 1 | | | -| TR-002 | missionDuration | DeliveryAnalysis, MissionDurationByAnalysis | 2 | | | -| TR-003 | characterisation | CharacterisationAnalysis | 1 | | | -| TR-004 | launchCompatibility | InterfaceBaselineInspection | 1 | | | -| TR-005 | groundCompatibility | GroundReadinessDemo | 1 | | | -| TR-006 | cislunarSafety | ReturnSafetyAnalysis | 1 | | | -| TR-007 | missionClass | RedundancyInspection | 1 | | | -| TR-008 | deflectionDemonstration | DeflectionAnalysis | 1 | | | -| TR-009 | utilisationAccess | DockingDemo | 1 | | | +| shortName | name | Verification::method | Verification::level | Verification::stage | verifiedBy | cases | satisfiedBy | derivedFrom | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | +| TR-001 | retrieval | analyze | mission | inFlight | DeliveryAnalysis | 1 | | | +| TR-002 | missionDuration | analyze | mission | inFlight | DeliveryAnalysis, MissionDurationByAnalysis | 2 | | | +| TR-003 | characterisation | analyze | mission | inFlight | CharacterisationAnalysis | 1 | | | +| TR-004 | launchCompatibility | test | system | acceptance | InterfaceBaselineInspection | 1 | | | +| TR-005 | groundCompatibility | test | system | preLaunch | GroundReadinessDemo | 1 | | | +| TR-006 | cislunarSafety | analyze | mission | qualification | ReturnSafetyAnalysis | 1 | | | +| TR-007 | missionClass | analyze | system | qualification | RedundancyInspection | 1 | | | +| TR-008 | deflectionDemonstration | demo | mission | inFlight | DeflectionAnalysis | 1 | | | +| TR-009 | utilisationAccess | demo | mission | inFlight | DockingDemo | 1 | | | *Needs, objectives and success criteria* -| shortName | name | verifiedBy | cases | satisfiedBy | derivedFrom | -| --- | --- | --- | --- | --- | --- | -| N-001 | returnedBodyNeed | MissionValidation | 1 | | | -| N-002 | timelinessNeed | MissionValidation | 1 | | | -| N-003 | knownTargetNeed | MissionValidation | 1 | | | -| N-004 | noEarthRiskNeed | MissionValidation | 1 | | | -| N-005 | deflectionKnowledgeNeed | MissionValidation | 1 | | | -| N-006 | surfaceAccessNeed | DockingDemo | 1 | | | -| N-007 | operabilityNeed | GroundReadinessDemo, ConOpsValidation | 2 | | | -| N-008 | robustToTargetNeed | MissionValidation | 1 | | | -| N-009 | providerInterfaceNeed | InterfaceBaselineInspection | 1 | | | -| SO-001 | shapeModel | CharacterisationAnalysis | 1 | | | -| SO-002 | massEstimate | CharacterisationAnalysis | 1 | | | -| SO-003 | spinState | CharacterisationAnalysis | 1 | | | -| SO-004 | deflectionMeasurement | SuccessCriteriaValidation | 1 | | | -| | minimumSuccess | SuccessCriteriaValidation | 1 | | | -| | fullSuccess | SuccessCriteriaValidation | 1 | | | -| MS-001 | characterised | SuccessCriteriaValidation | 1 | | | -| MS-002 | deflected | SuccessCriteriaValidation | 1 | | | -| FS-001 | delivered | SuccessCriteriaValidation | 1 | | | -| FS-002 | accessible | SuccessCriteriaValidation | 1 | | | +| shortName | name | Verification::method | Verification::level | Verification::stage | verifiedBy | cases | satisfiedBy | derivedFrom | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | +| N-001 | returnedBodyNeed | demo | mission | inFlight | MissionValidation | 1 | | | +| N-002 | timelinessNeed | analyze | mission | inFlight | MissionValidation | 1 | | | +| N-003 | knownTargetNeed | demo | mission | inFlight | MissionValidation | 1 | | | +| N-004 | noEarthRiskNeed | analyze | mission | qualification | MissionValidation | 1 | | | +| N-005 | deflectionKnowledgeNeed | demo | mission | inFlight | MissionValidation | 1 | | | +| N-006 | surfaceAccessNeed | demo | mission | inFlight | DockingDemo | 1 | | | +| N-007 | operabilityNeed | demo | system | preLaunch | GroundReadinessDemo, ConOpsValidation | 2 | | | +| N-008 | robustToTargetNeed | analyze | mission | qualification | MissionValidation | 1 | | | +| N-009 | providerInterfaceNeed | inspect | system | qualification | InterfaceBaselineInspection | 1 | | | +| SO-001 | shapeModel | analyze | mission | inFlight | CharacterisationAnalysis | 1 | | | +| SO-002 | massEstimate | analyze | mission | inFlight | CharacterisationAnalysis | 1 | | | +| SO-003 | spinState | analyze | mission | inFlight | CharacterisationAnalysis | 1 | | | +| SO-004 | deflectionMeasurement | analyze | mission | inFlight | SuccessCriteriaValidation | 1 | | | +| | minimumSuccess | demo | mission | inFlight | SuccessCriteriaValidation | 1 | | | +| | fullSuccess | demo | mission | inFlight | SuccessCriteriaValidation | 1 | | | +| MS-001 | characterised | demo | mission | inFlight | SuccessCriteriaValidation | 1 | | | +| MS-002 | deflected | demo | mission | inFlight | SuccessCriteriaValidation | 1 | | | +| FS-001 | delivered | demo | mission | inFlight | SuccessCriteriaValidation | 1 | | | +| FS-002 | accessible | demo | mission | inFlight | SuccessCriteriaValidation | 1 | | | *L2 system requirements* -| shortName | name | verifiedBy | cases | satisfiedBy | derivedFrom | -| --- | --- | --- | --- | --- | --- | -| TS-001 | captureEnvelope | CaptureEnvelopeTest | 1 | argent | | -| TS-002 | deliveredMass | DeliveryAnalysis | 1 | flight | | -| TS-003 | transferDuration | PowerAnalysis | 1 | flight | | -| TS-004 | propellantCapacity | PropellantAnalysis | 1 | argent | | -| TS-005 | characterisationProducts | CharacterisationAnalysis | 1 | flight | | -| TS-006 | launchCompatibility | MassBudgetAnalysis | 1 | | | -| TS-007 | deepSpaceLink | LinkBudgetTest | 1 | | | -| TS-008 | earthImpactExclusion | ReturnSafetyAnalysis | 1 | flight | | -| TS-009 | droStability | ReturnSafetyAnalysis | 1 | flight | | -| TS-010 | thrustRedundancy | RedundancyInspection, SepCommissioning | 2 | argent | | -| TS-011 | deflectionMeasurement | DeflectionAnalysis | 1 | flight | | -| TS-012 | visitorDocking | DockingDemo | 1 | | | -| TS-013 | autonomousSurvival | AutonomyTest | 1 | flight | | -| TS-014 | proximityContactEnvironment | ContactSpeedTest | 1 | argent | | -| TS-015 | faultResponse | FaultResponseTest | 1 | flight | | -| TS-016 | massBudget | MassBudgetAnalysis | 1 | argent | | -| TS-017 | captureQualification | CaptureEnvelopeTest | 1 | | | -| TS-018 | inspectorDeployment | SeparationTest | 1 | flight | | -| TS-019 | despinCapacity | DespinAnalysis | 1 | argent | | -| TS-020 | groundCoverage | GroundReadinessDemo | 1 | ground | | -| TS-021 | commandLatency | GroundReadinessDemo | 1 | ground | | -| TS-022 | operatorWorkload | GroundReadinessDemo | 1 | ground | | -| | flightPerformanceRequirements | DocumentInspection | 1 | | | -| | flightSafetyAndAutonomyRequirements | DocumentInspection | 1 | | | -| | flightEnvironmentAndBudgetRequirements | DocumentInspection | 1 | | | -| | interfaceRequirements | DocumentInspection | 1 | | | -| | groundSegmentRequirements | DocumentInspection | 1 | | | -| | safetyRequirements | DocumentInspection | 1 | | | +| shortName | name | Verification::method | Verification::level | Verification::stage | verifiedBy | cases | satisfiedBy | derivedFrom | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | +| TS-001 | captureEnvelope | test | system | qualification | CaptureEnvelopeTest | 1 | argent | | +| TS-002 | deliveredMass | analyze | mission | inFlight | DeliveryAnalysis | 1 | flight | | +| TS-003 | transferDuration | analyze | mission | qualification | PowerAnalysis | 1 | flight | | +| TS-004 | propellantCapacity | analyze | system | qualification | PropellantAnalysis | 1 | argent | | +| TS-005 | characterisationProducts | analyze | system | inFlight | CharacterisationAnalysis | 1 | flight | | +| TS-006 | launchCompatibility | inspect | system | preLaunch | MassBudgetAnalysis | 1 | | | +| TS-007 | deepSpaceLink | test | system | preLaunch | LinkBudgetTest | 1 | | | +| TS-008 | earthImpactExclusion | analyze | mission | qualification | ReturnSafetyAnalysis | 1 | flight | | +| TS-009 | droStability | analyze | mission | qualification | ReturnSafetyAnalysis | 1 | flight | | +| TS-010 | thrustRedundancy | inspect | system | qualification | RedundancyInspection, SepCommissioning | 2 | argent | | +| TS-011 | deflectionMeasurement | analyze | mission | inFlight | DeflectionAnalysis | 1 | flight | | +| TS-012 | visitorDocking | demo | mission | inFlight | DockingDemo | 1 | | | +| TS-013 | autonomousSurvival | test | system | qualification | AutonomyTest | 1 | flight | | +| TS-014 | proximityContactEnvironment | test | subsystem | qualification | ContactSpeedTest | 1 | argent | | +| TS-015 | faultResponse | test | system | qualification | FaultResponseTest | 1 | flight | | +| TS-016 | massBudget | analyze | system | acceptance | MassBudgetAnalysis | 1 | argent | | +| TS-017 | captureQualification | test | subsystem | qualification | CaptureEnvelopeTest | 1 | | | +| TS-018 | inspectorDeployment | test | system | acceptance | SeparationTest | 1 | flight | | +| TS-019 | despinCapacity | analyze | system | qualification | DespinAnalysis | 1 | argent | | +| TS-020 | groundCoverage | demo | system | preLaunch | GroundReadinessDemo | 1 | ground | | +| TS-021 | commandLatency | demo | system | preLaunch | GroundReadinessDemo | 1 | ground | | +| TS-022 | operatorWorkload | demo | system | preLaunch | GroundReadinessDemo | 1 | ground | | +| | flightPerformanceRequirements | inspect | system | qualification | DocumentInspection | 1 | | | +| | flightSafetyAndAutonomyRequirements | inspect | system | qualification | DocumentInspection | 1 | | | +| | flightEnvironmentAndBudgetRequirements | inspect | system | qualification | DocumentInspection | 1 | | | +| | interfaceRequirements | inspect | system | qualification | DocumentInspection | 1 | | | +| | groundSegmentRequirements | inspect | system | qualification | DocumentInspection | 1 | | | +| | safetyRequirements | inspect | mission | qualification | DocumentInspection | 1 | | | *L3 subsystem and L4 component requirements* -| shortName | name | verifiedBy | cases | satisfiedBy | derivedFrom | -| --- | --- | --- | --- | --- | --- | -| TA-001 | sepThrust | SepHotFireTest, ThrustModelValidation, SepCommissioning | 3 | sep | transferDuration | -| TA-002 | arrayPowerAtTarget | PowerAnalysis | 1 | eps | transferDuration | -| TA-003 | captureBagDiameter | CaptureEnvelopeTest | 1 | captureSystem | captureEnvelope | -| TA-004 | contactSpeedTolerance | ContactSpeedTest | 1 | captureSystem | proximityContactEnvironment | -| TA-005 | despinTorque | DespinAnalysis | 1 | rcs | despinCapacity | -| TA-006 | hydrazineLoad | DespinAnalysis | 1 | rcs | despinCapacity | -| TA-007 | deepSpaceEirp | LinkBudgetTest | 1 | telecom | deepSpaceLink | -| TA-008 | proximityLinkRange | InspectorAcceptanceTest, InspectorCommissioning | 2 | telecom | inspectorDeployment | -| TA-009 | relativeNavigation | ProximityNavigationTest | 1 | gnc | characterisationProducts | -| TA-010 | faultDetectionLatency | FaultResponseTest | 1 | cdh | faultResponse | -| TA-011 | heatRejection | ThermalBalanceTest | 1 | thermal | proximityContactEnvironment | -| TA-012 | dockingLoads | DockingLoadsAnalysis | 1 | structure | visitorDocking | -| TA-013 | inspectorSeparation | SeparationTest | 1 | structure | inspectorDeployment | -| TA-014 | spinStateSensing | CharacterisationAnalysis | 1 | sensors | characterisationProducts | -| TW-001 | imagingResolution | InspectorAcceptanceTest | 1 | payload | characterisationProducts | -| TW-002 | circumnavigationPropellant | CharacterisationAnalysis | 1 | propulsion | characterisationProducts | -| TW-003 | keepAlivePower | InspectorAcceptanceTest, InspectorCommissioning | 2 | bus | inspectorDeployment | -| TW-004 | inspectorMass | InspectorAcceptanceTest | 1 | wren | launchCompatibility | -| TW-005 | dopplerForMass | InspectorAcceptanceTest | 1 | bus | characterisationProducts | -| TG-001 | stationAperture | LinkBudgetTest | 1 | primaryStation | deepSpaceLink | -| TG-002 | stationSpacing | GroundInspection | 1 | network | deepSpaceLink | -| TG-003 | rangingAccuracy | DeflectionAnalysis | 1 | fdf | deflectionMeasurement | -| TG-004 | impactScreening | GroundProceduresDemo | 1 | fdf | earthImpactExclusion | -| TG-005 | sequenceTurnaround | GroundProceduresDemo | 1 | moc | commandLatency | -| TG-006 | monitoringAutomation | GroundProceduresDemo | 1 | moc | operatorWorkload | -| TG-007 | scienceArchive | GroundProceduresDemo | 1 | sds | characterisationProducts | -| TC-001 | thrusterUnitThrust | SepHotFireTest | 1 | sep | sepThrust, transferDuration | -| TC-002 | powerProcessingEfficiency | SepHotFireTest | 1 | sep | sepThrust, transferDuration | -| TC-003 | cinchMotorTorque | CinchMotorTest | 1 | captureSystem | captureBagDiameter, captureEnvelope | -| TC-004 | narrowAngleCameraSensitivity | ProximityNavigationTest | 1 | sensors | relativeNavigation, characterisationProducts | -| TC-005 | fdirTaskPeriod | FaultResponseTest | 1 | cdh | faultDetectionLatency, faultResponse | -| TC-006 | inspectorDetectorPitch | InspectorAcceptanceTest | 1 | payload | imagingResolution, characterisationProducts | +| shortName | name | Verification::method | Verification::level | Verification::stage | verifiedBy | cases | satisfiedBy | derivedFrom | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | +| TA-001 | sepThrust | test | subsystem | qualification | SepHotFireTest, ThrustModelValidation, SepCommissioning | 3 | sep | transferDuration | +| TA-002 | arrayPowerAtTarget | analyze | subsystem | qualification | PowerAnalysis | 1 | eps | transferDuration | +| TA-003 | captureBagDiameter | test | subsystem | qualification | CaptureEnvelopeTest | 1 | captureSystem | captureEnvelope | +| TA-004 | contactSpeedTolerance | test | subsystem | qualification | ContactSpeedTest | 1 | captureSystem | proximityContactEnvironment | +| TA-005 | despinTorque | analyze | subsystem | qualification | DespinAnalysis | 1 | rcs | despinCapacity | +| TA-006 | hydrazineLoad | inspect | subsystem | acceptance | DespinAnalysis | 1 | rcs | despinCapacity | +| TA-007 | deepSpaceEirp | test | subsystem | acceptance | LinkBudgetTest | 1 | telecom | deepSpaceLink | +| TA-008 | proximityLinkRange | test | subsystem | acceptance | InspectorAcceptanceTest, InspectorCommissioning | 2 | telecom | inspectorDeployment | +| TA-009 | relativeNavigation | test | subsystem | qualification | ProximityNavigationTest | 1 | gnc | characterisationProducts | +| TA-010 | faultDetectionLatency | test | subsystem | qualification | FaultResponseTest | 1 | cdh | faultResponse | +| TA-011 | heatRejection | test | subsystem | qualification | ThermalBalanceTest | 1 | thermal | proximityContactEnvironment | +| TA-012 | dockingLoads | analyze | subsystem | qualification | DockingLoadsAnalysis | 1 | structure | visitorDocking | +| TA-013 | inspectorSeparation | test | subsystem | acceptance | SeparationTest | 1 | structure | inspectorDeployment | +| TA-014 | spinStateSensing | analyze | subsystem | qualification | CharacterisationAnalysis | 1 | sensors | characterisationProducts | +| TW-001 | imagingResolution | test | subsystem | acceptance | InspectorAcceptanceTest | 1 | payload | characterisationProducts | +| TW-002 | circumnavigationPropellant | analyze | subsystem | qualification | CharacterisationAnalysis | 1 | propulsion | characterisationProducts | +| TW-003 | keepAlivePower | test | subsystem | acceptance | InspectorAcceptanceTest, InspectorCommissioning | 2 | bus | inspectorDeployment | +| TW-004 | inspectorMass | test | subsystem | acceptance | InspectorAcceptanceTest | 1 | wren | launchCompatibility | +| TW-005 | dopplerForMass | test | subsystem | qualification | InspectorAcceptanceTest | 1 | bus | characterisationProducts | +| TG-001 | stationAperture | inspect | subsystem | preLaunch | LinkBudgetTest | 1 | primaryStation | deepSpaceLink | +| TG-002 | stationSpacing | inspect | subsystem | preLaunch | GroundInspection | 1 | network | deepSpaceLink | +| TG-003 | rangingAccuracy | demo | subsystem | preLaunch | DeflectionAnalysis | 1 | fdf | deflectionMeasurement | +| TG-004 | impactScreening | demo | subsystem | preLaunch | GroundProceduresDemo | 1 | fdf | earthImpactExclusion | +| TG-005 | sequenceTurnaround | demo | subsystem | preLaunch | GroundProceduresDemo | 1 | moc | commandLatency | +| TG-006 | monitoringAutomation | demo | subsystem | preLaunch | GroundProceduresDemo | 1 | moc | operatorWorkload | +| TG-007 | scienceArchive | demo | subsystem | preLaunch | GroundProceduresDemo | 1 | sds | characterisationProducts | +| TC-001 | thrusterUnitThrust | test | unit | qualification | SepHotFireTest | 1 | sep | sepThrust, transferDuration | +| TC-002 | powerProcessingEfficiency | test | unit | acceptance | SepHotFireTest | 1 | sep | sepThrust, transferDuration | +| TC-003 | cinchMotorTorque | test | unit | acceptance | CinchMotorTest | 1 | captureSystem | captureBagDiameter, captureEnvelope | +| TC-004 | narrowAngleCameraSensitivity | test | unit | qualification | ProximityNavigationTest | 1 | sensors | relativeNavigation, characterisationProducts | +| TC-005 | fdirTaskPeriod | test | unit | acceptance | FaultResponseTest | 1 | cdh | faultDetectionLatency, faultResponse | +| TC-006 | inspectorDetectorPitch | inspect | unit | acceptance | InspectorAcceptanceTest | 1 | payload | imagingResolution, characterisationProducts | ## Requirements without a verification case diff --git a/runs/dynamics-standard.txt b/runs/dynamics-standard.txt index 4e7301e..855e59d 100644 --- a/runs/dynamics-standard.txt +++ b/runs/dynamics-standard.txt @@ -48,11 +48,9 @@ ✓ package TethysImportedData ✓ package TethysDisposal ✓ package TethysHouseRules -✓ TethysDynamics::droStability - closure = [0.0 [km]] - periodShown = [1202363.5748597751 [s]] - objective closes: satisfied - standing: value (observed: 1 run under reverse) +sysml: analysis run failed: analysis TethysDynamics::droStability: invoke action ThreeBodyDynamics: initialize action: unsupported state-space dynamics: zero crossing xAxisCrossing of action revolution binds no guard + objective closes: undecided: analysis TethysDynamics::droStability: invoke action ThreeBodyDynamics: initialize action: unsupported state-space dynamics: zero crossing xAxisCrossing of action revolution binds no guard + standing: not covered (analysis TethysDynamics::droStability: invoke action ThreeBodyDynamics: initialize action: unsupported state-space dynamics: zero crossing xAxisCrossing of action revolution binds no guard) sysml: failed to create executor: initialize action: unsupported state-space dynamics: action droRevolution binds integrate to RungeKutta4; the runtime integrates by StateSpaceIntegration::Euler or StateSpaceIntegration::RK4 standing: not covered (failed to create executor: initialize action: unsupported state-space dynamics: action droRevolution binds integrate to RungeKutta4; the runtime integrates by StateSpaceIntegration::Euler or StateSpaceIntegration::RK4) sysml: failed to create executor: initialize action: unsupported state-space dynamics: action firstThrustArc binds integrate to RungeKutta4; the runtime integrates by StateSpaceIntegration::Euler or StateSpaceIntegration::RK4 diff --git a/runs/fdir-thruster-restarting.txt b/runs/fdir-thruster-restarting.txt index 514fbd6..a694259 100644 --- a/runs/fdir-thruster-restarting.txt +++ b/runs/fdir-thruster-restarting.txt @@ -170,100 +170,74 @@ [trace] materialize: entryAction #44 [trace] materialize: Action #45 [trace] materialize: Action #46 -[trace] materialize: CommandPort #47 -[trace] materialize: GroundCommand #48 -[trace] enter calc SequenceFunctions::isEmpty -[trace] eval feature voids -> () -[trace] bind seq = () [argument] -[trace] exit calc SequenceFunctions::isEmpty -> true -[trace] eval invoke isEmpty -> true -[trace] materialize: OnBoardEvent #49 -[trace] enter calc SequenceFunctions::isEmpty -[trace] eval feature voids -> () -[trace] bind seq = () [argument] -[trace] exit calc SequenceFunctions::isEmpty -> true -[trace] eval invoke isEmpty -> true -[trace] materialize: CommandPort #50 -[trace] materialize: GroundCommand #51 -[trace] enter calc SequenceFunctions::isEmpty -[trace] eval feature voids -> () -[trace] bind seq = () [argument] -[trace] exit calc SequenceFunctions::isEmpty -> true -[trace] eval invoke isEmpty -> true -[trace] materialize: OnBoardEvent #52 -[trace] enter calc SequenceFunctions::isEmpty -[trace] eval feature voids -> () -[trace] bind seq = () [argument] -[trace] exit calc SequenceFunctions::isEmpty -> true -[trace] eval invoke isEmpty -> true -[trace] materialize: captureCommitEnvelope #53 -[trace] materialize: propellantBudget #54 -[trace] materialize: argentDesign #55 -[trace] start: performed action functions of #55 -[trace] materialize: TugFunctions #56 -[trace] materialize: structure #57 -[trace] start: performed action captureBody of #57 -[trace] materialize: CaptureBody #58 -[trace] eval feature structure -> instance#57 -[trace] materialize: thermal #59 -[trace] start: performed action rejectHeat of #59 -[trace] materialize: RejectHeat #60 -[trace] eval feature thermal -> instance#59 -[trace] materialize: eps #61 -[trace] start: performed action providePower of #61 -[trace] materialize: ProvidePower #62 -[trace] eval feature eps -> instance#61 -[trace] materialize: cdh #63 -[trace] start: performed action handleData of #63 -[trace] materialize: HandleData #64 -[trace] eval feature cdh -> instance#63 -[trace] materialize: telecom #65 -[trace] start: performed action communicate of #65 -[trace] materialize: Communicate #66 -[trace] eval feature telecom -> instance#65 -[trace] materialize: gnc #67 -[trace] start: performed action determineAttitude of #67 -[trace] materialize: DetermineAttitude #68 -[trace] start: performed action controlAttitude of #67 -[trace] materialize: ControlAttitude #69 -[trace] start: performed action navigateRelative of #67 -[trace] materialize: NavigateRelative #70 -[trace] eval feature gnc -> instance#67 -[trace] materialize: sep #71 -[trace] start: performed action processPower of #71 -[trace] materialize: ProcessPower #72 -[trace] start: performed action generateThrust of #71 -[trace] materialize: GenerateThrust #73 -[trace] start: performed action feedXenon of #71 -[trace] materialize: FeedXenon #74 -[trace] eval feature sep -> instance#71 -[trace] materialize: rcs #75 -[trace] start: performed action despinBody of #75 -[trace] materialize: DespinBody #76 -[trace] eval feature rcs -> instance#75 -[trace] materialize: captureSystem #77 -[trace] eval feature captureSystem -> instance#77 -[trace] materialize: sensors #78 -[trace] start: performed action characteriseTarget of #78 -[trace] materialize: CharacteriseTarget #79 -[trace] eval feature sensors -> instance#78 -[trace] eval sequence of 10 -> (instance#57, instance#59, instance#61, instance#63, instance#65, instance#67, instance#71, instance#75, instance#77, instance#78) -[trace] eval feature structure -> instance#57 -[trace] eval feature thermal -> instance#59 -[trace] eval feature eps -> instance#61 -[trace] eval feature cdh -> instance#63 -[trace] eval feature telecom -> instance#65 -[trace] eval feature gnc -> instance#67 -[trace] eval feature sep -> instance#71 -[trace] eval feature rcs -> instance#75 -[trace] eval feature captureSystem -> instance#77 -[trace] eval feature sensors -> instance#78 -[trace] eval sequence of 10 -> (instance#57, instance#59, instance#61, instance#63, instance#65, instance#67, instance#71, instance#75, instance#77, instance#78) -[trace] run: performed action functions of #55 +[trace] materialize: captureCommitEnvelope #47 +[trace] materialize: propellantBudget #48 +[trace] materialize: argentDesign #49 +[trace] start: performed action functions of #49 +[trace] materialize: TugFunctions #50 +[trace] materialize: structure #51 +[trace] start: performed action captureBody of #51 +[trace] materialize: CaptureBody #52 +[trace] eval feature structure -> instance#51 +[trace] materialize: thermal #53 +[trace] start: performed action rejectHeat of #53 +[trace] materialize: RejectHeat #54 +[trace] eval feature thermal -> instance#53 +[trace] materialize: eps #55 +[trace] start: performed action providePower of #55 +[trace] materialize: ProvidePower #56 +[trace] eval feature eps -> instance#55 +[trace] materialize: cdh #57 +[trace] start: performed action handleData of #57 +[trace] materialize: HandleData #58 +[trace] eval feature cdh -> instance#57 +[trace] materialize: telecom #59 +[trace] start: performed action communicate of #59 +[trace] materialize: Communicate #60 +[trace] eval feature telecom -> instance#59 +[trace] materialize: gnc #61 +[trace] start: performed action determineAttitude of #61 +[trace] materialize: DetermineAttitude #62 +[trace] start: performed action controlAttitude of #61 +[trace] materialize: ControlAttitude #63 +[trace] start: performed action navigateRelative of #61 +[trace] materialize: NavigateRelative #64 +[trace] eval feature gnc -> instance#61 +[trace] materialize: sep #65 +[trace] start: performed action processPower of #65 +[trace] materialize: ProcessPower #66 +[trace] start: performed action generateThrust of #65 +[trace] materialize: GenerateThrust #67 +[trace] start: performed action feedXenon of #65 +[trace] materialize: FeedXenon #68 +[trace] eval feature sep -> instance#65 +[trace] materialize: rcs #69 +[trace] start: performed action despinBody of #69 +[trace] materialize: DespinBody #70 +[trace] eval feature rcs -> instance#69 +[trace] materialize: captureSystem #71 +[trace] eval feature captureSystem -> instance#71 +[trace] materialize: sensors #72 +[trace] start: performed action characteriseTarget of #72 +[trace] materialize: CharacteriseTarget #73 +[trace] eval feature sensors -> instance#72 +[trace] eval sequence of 10 -> (instance#51, instance#53, instance#55, instance#57, instance#59, instance#61, instance#65, instance#69, instance#71, instance#72) +[trace] eval feature structure -> instance#51 +[trace] eval feature thermal -> instance#53 +[trace] eval feature eps -> instance#55 +[trace] eval feature cdh -> instance#57 +[trace] eval feature telecom -> instance#59 +[trace] eval feature gnc -> instance#61 +[trace] eval feature sep -> instance#65 +[trace] eval feature rcs -> instance#69 +[trace] eval feature captureSystem -> instance#71 +[trace] eval feature sensors -> instance#72 +[trace] eval sequence of 10 -> (instance#51, instance#53, instance#55, instance#57, instance#59, instance#61, instance#65, instance#69, instance#71, instance#72) +[trace] run: performed action functions of #49 [trace] choice step 1: tokens 1@providePower, 2@processPower, 3@generateThrust, 4@feedXenon, 5@determineAttitude, 6@controlAttitude, 7@navigateRelative, 8@captureBody, 9@despinBody, 10@characteriseTarget, 11@handleData, 12@communicate, 13@rejectHeat (unordered; took 13@rejectHeat first; order-dependent: attitude, carrier, contactLoad, heat, highVoltage, loss, lowVoltage, products, relativeState, telemetry, thrust, thrustCommand, thrusterPower, xenon) [trace] step 1: no active tokens -[trace] materialize: argent #80 -[trace] materialize: sep #81 +[trace] materialize: argent #74 +[trace] materialize: sep #75 [trace] eval literal 6600.0 -> 6600.0 [trace] eval index -> 6600.0 [kg] [trace] eval chain xenonMass -> 6600.0 [kg] @@ -274,11 +248,11 @@ [trace] eval operator - -> 0.98 [trace] eval operator * -> 6468.0 [kg] [trace] eval feature usable -> 6468.0 [kg] -[trace] materialize: pdrPolicy #82 -[trace] eval feature pdrPolicy -> instance#82 -[trace] eval feature activePolicy -> instance#82 +[trace] materialize: pdrPolicy #76 +[trace] eval feature pdrPolicy -> instance#76 +[trace] eval feature activePolicy -> instance#76 [trace] eval chain systemMargin -> 0.15 -[trace] materialize: transferBook #83 +[trace] materialize: transferBook #77 [trace] eval literal 2800.0 -> 2800.0 [trace] eval index -> 2800.0 ['m/s'] [trace] eval chain deltaVOutbound -> 2800.0 ['m/s'] @@ -286,7 +260,7 @@ [trace] eval index -> 1 ['m/s'] [trace] eval operator / -> 2800.0 [trace] eval feature deltaVOutbound -> 2800.0 -[trace] materialize: massBudget #84 +[trace] materialize: massBudget #78 [trace] eval literal 5600.0 -> 5600.0 [trace] eval index -> 5600.0 [kg] [trace] eval chain dryMass -> 5600.0 [kg] @@ -294,156 +268,162 @@ [trace] eval chain xenonMass -> 6600.0 [kg] [trace] eval feature xenon -> 6600.0 [kg] [trace] eval operator + -> 12200.0 [kg] -[trace] materialize: rcs #85 +[trace] materialize: rcs #79 [trace] eval literal 400.0 -> 400.0 [trace] eval index -> 400.0 [kg] [trace] eval chain hydrazineMass -> 400.0 [kg] [trace] eval chain hydrazineMass -> 400.0 [kg] [trace] eval feature hydrazine -> 400.0 [kg] [trace] eval operator + -> 12600.0 [kg] -[trace] materialize: wren #86 +[trace] materialize: wrenFM #80 [trace] eval literal 24.0 -> 24.0 [trace] eval index -> 24.0 [kg] [trace] eval chain wetMass -> 24.0 [kg] [trace] eval feature inspector -> 24.0 [kg] [trace] eval operator + -> 12624.0 [kg] [trace] eval chain launchMass -> 12624.0 [kg] -[trace] eval feature structure -> instance#57 -[trace] materialize: PrimaryStructure #87 -[trace] eval feature primaryStructure -> instance#87 -[trace] materialize: LaunchAdapterRing #88 -[trace] eval feature launchAdapterRing -> instance#88 -[trace] materialize: InspectorDispenser #89 -[trace] eval feature inspectorDispenser -> instance#89 -[trace] materialize: ArrayDeploymentMechanism #90 -[trace] materialize: ArrayDeploymentMechanism #91 -[trace] eval feature arrayDeploymentMechanisms -> (instance#90, instance#91) -[trace] materialize: RadiatorDeploymentMechanism #92 -[trace] eval feature radiatorDeploymentMechanism -> instance#92 -[trace] materialize: DockingMechanism #93 -[trace] eval feature dockingMechanism -> instance#93 -[trace] materialize: Harness #94 -[trace] eval feature harness -> instance#94 -[trace] eval sequence of 7 -> (instance#87, instance#88, instance#89, instance#90, instance#91, instance#92, instance#93, instance#94) -[trace] eval chain units -> (instance#87, instance#88, instance#89, instance#90, instance#91, instance#92, instance#93, instance#94) -[trace] eval feature thermal -> instance#59 -[trace] materialize: InsulationBlankets #95 -[trace] eval feature insulation -> instance#95 -[trace] materialize: RadiatorPanel #96 -[trace] materialize: RadiatorPanel #97 -[trace] eval feature radiators -> (instance#96, instance#97) -[trace] materialize: CoolantPump #98 -[trace] materialize: CoolantPump #99 -[trace] eval feature coolantPumps -> (instance#98, instance#99) -[trace] materialize: LoopPlumbing #100 -[trace] eval feature loopPlumbing -> instance#100 -[trace] materialize: HeaterSet #101 -[trace] eval feature heaters -> instance#101 -[trace] materialize: ThermalSensors #102 -[trace] eval feature sensors -> instance#102 -[trace] eval sequence of 6 -> (instance#95, instance#96, instance#97, instance#98, instance#99, instance#100, instance#101, instance#102) -[trace] eval chain units -> (instance#95, instance#96, instance#97, instance#98, instance#99, instance#100, instance#101, instance#102) -[trace] eval feature eps -> instance#61 -[trace] materialize: SolarArrayWing #103 -[trace] materialize: SolarArrayWing #104 -[trace] eval feature arrayWings -> (instance#103, instance#104) -[trace] materialize: ArrayDriveMechanism #105 -[trace] materialize: ArrayDriveMechanism #106 -[trace] eval feature arrayDrives -> (instance#105, instance#106) -[trace] materialize: Battery #107 -[trace] materialize: Battery #108 -[trace] eval feature batteries -> (instance#107, instance#108) -[trace] materialize: PowerConditioningUnit #109 -[trace] eval feature powerConditioning -> instance#109 -[trace] materialize: HighVoltageSwitchUnit #110 -[trace] eval feature highVoltageSwitching -> instance#110 -[trace] eval sequence of 5 -> (instance#103, instance#104, instance#105, instance#106, instance#107, instance#108, instance#109, instance#110) -[trace] eval chain units -> (instance#103, instance#104, instance#105, instance#106, instance#107, instance#108, instance#109, instance#110) -[trace] eval feature cdh -> instance#63 -[trace] materialize: FlightComputer #111 -[trace] materialize: FlightComputer #112 -[trace] eval feature flightComputers -> (instance#111, instance#112) -[trace] materialize: MassMemory #113 -[trace] materialize: MassMemory #114 -[trace] eval feature massMemories -> (instance#113, instance#114) -[trace] materialize: RemoteInterfaceUnit #115 -[trace] materialize: RemoteInterfaceUnit #116 -[trace] eval feature remoteInterfaceUnits -> (instance#115, instance#116) -[trace] eval sequence of 3 -> (instance#111, instance#112, instance#113, instance#114, instance#115, instance#116) -[trace] eval chain units -> (instance#111, instance#112, instance#113, instance#114, instance#115, instance#116) -[trace] eval feature telecom -> instance#65 -[trace] materialize: DeepSpaceTransponder #117 -[trace] materialize: DeepSpaceTransponder #118 -[trace] eval feature transponders -> (instance#117, instance#118) -[trace] materialize: TravellingWaveTubeAmplifier #119 -[trace] materialize: TravellingWaveTubeAmplifier #120 -[trace] eval feature amplifiers -> (instance#119, instance#120) -[trace] materialize: HighGainAntenna #121 -[trace] eval feature highGainAntenna -> instance#121 -[trace] materialize: AntennaPointingMechanism #122 -[trace] eval feature antennaPointing -> instance#122 -[trace] materialize: LowGainAntenna #123 -[trace] materialize: LowGainAntenna #124 -[trace] eval feature lowGainAntennas -> (instance#123, instance#124) -[trace] materialize: ProximityTransceiver #125 -[trace] materialize: ProximityTransceiver #126 -[trace] eval feature proximityTransceivers -> (instance#125, instance#126) -[trace] eval sequence of 6 -> (instance#117, instance#118, instance#119, instance#120, instance#121, instance#122, instance#123, instance#124, instance#125, instance#126) -[trace] eval chain units -> (instance#117, instance#118, instance#119, instance#120, instance#121, instance#122, instance#123, instance#124, instance#125, instance#126) -[trace] eval feature gnc -> instance#67 -[trace] materialize: StarTracker #127 -[trace] materialize: StarTracker #128 -[trace] eval feature starTrackers -> (instance#127, instance#128) -[trace] materialize: InertialMeasurementUnit #129 -[trace] materialize: InertialMeasurementUnit #130 -[trace] eval feature inertialUnits -> (instance#129, instance#130) -[trace] materialize: SunSensor #131 -[trace] materialize: SunSensor #132 -[trace] materialize: SunSensor #133 -[trace] materialize: SunSensor #134 -[trace] eval feature sunSensors -> (instance#131, instance#132, instance#133, instance#134) -[trace] materialize: ReactionWheel #135 -[trace] materialize: ReactionWheel #136 -[trace] materialize: ReactionWheel #137 -[trace] materialize: ReactionWheel #138 -[trace] eval feature reactionWheels -> (instance#135, instance#136, instance#137, instance#138) -[trace] materialize: NavigationCamera #139 -[trace] materialize: NavigationCamera #140 -[trace] eval feature navigationCameras -> (instance#139, instance#140) -[trace] materialize: Lidar #141 -[trace] materialize: Lidar #142 -[trace] eval feature lidars -> (instance#141, instance#142) -[trace] eval sequence of 6 -> (instance#127, instance#128, instance#129, instance#130, instance#131, instance#132, instance#133, instance#134, instance#135, instance#136, instance#137, instance#138, instance#139, instance#140, instance#141, instance#142) -[trace] eval chain units -> (instance#127, instance#128, instance#129, instance#130, instance#131, instance#132, instance#133, instance#134, instance#135, instance#136, instance#137, instance#138, instance#139, instance#140, instance#141, instance#142) -[trace] eval feature sep -> instance#71 -[trace] materialize: HallThruster #143 -[trace] materialize: HallThruster #144 -[trace] materialize: HallThruster #145 -[trace] materialize: HallThruster #146 -[trace] eval feature thrusters -> (instance#143, instance#144, instance#145, instance#146) -[trace] materialize: PowerProcessingUnit #147 -[trace] materialize: PowerProcessingUnit #148 -[trace] materialize: PowerProcessingUnit #149 -[trace] materialize: PowerProcessingUnit #150 -[trace] eval feature powerProcessingUnits -> (instance#147, instance#148, instance#149, instance#150) -[trace] materialize: XenonTank #151 -[trace] materialize: XenonTank #152 -[trace] eval feature xenonTanks -> (instance#151, instance#152) -[trace] materialize: XenonFlowController #153 -[trace] materialize: XenonFlowController #154 -[trace] materialize: XenonFlowController #155 -[trace] materialize: XenonFlowController #156 -[trace] eval feature flowControllers -> (instance#153, instance#154, instance#155, instance#156) -[trace] materialize: ThrusterGimbal #157 -[trace] materialize: ThrusterGimbal #158 -[trace] materialize: ThrusterGimbal #159 -[trace] materialize: ThrusterGimbal #160 -[trace] eval feature gimbals -> (instance#157, instance#158, instance#159, instance#160) -[trace] materialize: PropellantManagementAssembly #161 -[trace] eval feature propellantManagement -> instance#161 -[trace] eval sequence of 6 -> (instance#143, instance#144, instance#145, instance#146, instance#147, instance#148, instance#149, instance#150, instance#151, instance#152, instance#153, instance#154, instance#155, instance#156, instance#157, instance#158, instance#159, instance#160, instance#161) -[trace] eval chain units -> (instance#143, instance#144, instance#145, instance#146, instance#147, instance#148, instance#149, instance#150, instance#151, instance#152, instance#153, instance#154, instance#155, instance#156, instance#157, instance#158, instance#159, instance#160, instance#161) -[trace] eval feature rcs -> instance#75 +[trace] eval feature structure -> instance#51 +[trace] materialize: PrimaryStructure #81 +[trace] eval feature primaryStructure -> instance#81 +[trace] materialize: LaunchAdapterRing #82 +[trace] eval feature launchAdapterRing -> instance#82 +[trace] materialize: InspectorDispenser #83 +[trace] eval feature inspectorDispenser -> instance#83 +[trace] materialize: ArrayDeploymentMechanism #84 +[trace] materialize: ArrayDeploymentMechanism #85 +[trace] eval feature arrayDeploymentMechanisms -> (instance#84, instance#85) +[trace] materialize: RadiatorDeploymentMechanism #86 +[trace] eval feature radiatorDeploymentMechanism -> instance#86 +[trace] materialize: DockingMechanism #87 +[trace] eval feature dockingMechanism -> instance#87 +[trace] materialize: Harness #88 +[trace] eval feature harness -> instance#88 +[trace] eval sequence of 7 -> (instance#81, instance#82, instance#83, instance#84, instance#85, instance#86, instance#87, instance#88) +[trace] eval chain units -> (instance#81, instance#82, instance#83, instance#84, instance#85, instance#86, instance#87, instance#88) +[trace] eval feature thermal -> instance#53 +[trace] materialize: InsulationBlankets #89 +[trace] eval feature insulation -> instance#89 +[trace] materialize: RadiatorPanel #90 +[trace] materialize: RadiatorPanel #91 +[trace] eval feature radiators -> (instance#90, instance#91) +[trace] materialize: CoolantPump #92 +[trace] materialize: CoolantPump #93 +[trace] eval feature coolantPumps -> (instance#92, instance#93) +[trace] materialize: LoopPlumbing #94 +[trace] eval feature loopPlumbing -> instance#94 +[trace] materialize: HeaterSet #95 +[trace] eval feature heaters -> instance#95 +[trace] materialize: ThermalSensors #96 +[trace] eval feature sensors -> instance#96 +[trace] eval sequence of 6 -> (instance#89, instance#90, instance#91, instance#92, instance#93, instance#94, instance#95, instance#96) +[trace] eval chain units -> (instance#89, instance#90, instance#91, instance#92, instance#93, instance#94, instance#95, instance#96) +[trace] eval feature eps -> instance#55 +[trace] materialize: SolarArrayWing #97 +[trace] materialize: SolarArrayWing #98 +[trace] eval feature arrayWings -> (instance#97, instance#98) +[trace] materialize: ArrayDriveMechanism #99 +[trace] materialize: ArrayDriveMechanism #100 +[trace] eval feature arrayDrives -> (instance#99, instance#100) +[trace] materialize: Battery #101 +[trace] materialize: Battery #102 +[trace] eval feature batteries -> (instance#101, instance#102) +[trace] materialize: PowerConditioningUnit #103 +[trace] eval feature powerConditioning -> instance#103 +[trace] materialize: HighVoltageSwitchUnit #104 +[trace] eval feature highVoltageSwitching -> instance#104 +[trace] eval sequence of 5 -> (instance#97, instance#98, instance#99, instance#100, instance#101, instance#102, instance#103, instance#104) +[trace] eval chain units -> (instance#97, instance#98, instance#99, instance#100, instance#101, instance#102, instance#103, instance#104) +[trace] eval feature cdh -> instance#57 +[trace] materialize: FlightComputer #105 +[trace] materialize: FlightComputer #106 +[trace] eval feature flightComputers -> (instance#105, instance#106) +[trace] materialize: MassMemory #107 +[trace] materialize: MassMemory #108 +[trace] eval feature massMemories -> (instance#107, instance#108) +[trace] materialize: RemoteInterfaceUnit #109 +[trace] materialize: RemoteInterfaceUnit #110 +[trace] eval feature remoteInterfaceUnits -> (instance#109, instance#110) +[trace] eval sequence of 3 -> (instance#105, instance#106, instance#107, instance#108, instance#109, instance#110) +[trace] eval chain units -> (instance#105, instance#106, instance#107, instance#108, instance#109, instance#110) +[trace] eval feature telecom -> instance#59 +[trace] materialize: DeepSpaceTransponder #111 +[trace] materialize: DeepSpaceTransponder #112 +[trace] eval feature transponders -> (instance#111, instance#112) +[trace] materialize: TravellingWaveTubeAmplifier #113 +[trace] materialize: TravellingWaveTubeAmplifier #114 +[trace] eval feature amplifiers -> (instance#113, instance#114) +[trace] materialize: HighGainAntenna #115 +[trace] eval feature highGainAntenna -> instance#115 +[trace] materialize: AntennaPointingMechanism #116 +[trace] eval feature antennaPointing -> instance#116 +[trace] materialize: LowGainAntenna #117 +[trace] materialize: LowGainAntenna #118 +[trace] eval feature lowGainAntennas -> (instance#117, instance#118) +[trace] materialize: ProximityTransceiver #119 +[trace] materialize: ProximityTransceiver #120 +[trace] eval feature proximityTransceivers -> (instance#119, instance#120) +[trace] eval sequence of 6 -> (instance#111, instance#112, instance#113, instance#114, instance#115, instance#116, instance#117, instance#118, instance#119, instance#120) +[trace] eval chain units -> (instance#111, instance#112, instance#113, instance#114, instance#115, instance#116, instance#117, instance#118, instance#119, instance#120) +[trace] eval feature gnc -> instance#61 +[trace] materialize: StarTracker #121 +[trace] materialize: StarTracker #122 +[trace] eval feature starTrackers -> (instance#121, instance#122) +[trace] materialize: InertialMeasurementUnit #123 +[trace] materialize: InertialMeasurementUnit #124 +[trace] eval feature inertialUnits -> (instance#123, instance#124) +[trace] materialize: SunSensor #125 +[trace] materialize: SunSensor #126 +[trace] materialize: SunSensor #127 +[trace] materialize: SunSensor #128 +[trace] eval feature sunSensors -> (instance#125, instance#126, instance#127, instance#128) +[trace] materialize: ReactionWheel #129 +[trace] materialize: ReactionWheel #130 +[trace] materialize: ReactionWheel #131 +[trace] materialize: ReactionWheel #132 +[trace] eval feature reactionWheels -> (instance#129, instance#130, instance#131, instance#132) +[trace] materialize: NavigationCamera #133 +[trace] materialize: NavigationCamera #134 +[trace] eval feature navigationCameras -> (instance#133, instance#134) +[trace] materialize: Lidar #135 +[trace] materialize: Lidar #136 +[trace] eval feature lidars -> (instance#135, instance#136) +[trace] eval sequence of 6 -> (instance#121, instance#122, instance#123, instance#124, instance#125, instance#126, instance#127, instance#128, instance#129, instance#130, instance#131, instance#132, instance#133, instance#134, instance#135, instance#136) +[trace] eval chain units -> (instance#121, instance#122, instance#123, instance#124, instance#125, instance#126, instance#127, instance#128, instance#129, instance#130, instance#131, instance#132, instance#133, instance#134, instance#135, instance#136) +[trace] eval feature sep -> instance#65 +[trace] materialize: HallThruster #137 +[trace] materialize: HallThruster #138 +[trace] materialize: HallThruster #139 +[trace] materialize: HallThruster #140 +[trace] eval feature thrusters -> (instance#137, instance#138, instance#139, instance#140) +[trace] materialize: PowerProcessingUnit #141 +[trace] materialize: PowerProcessingUnit #142 +[trace] materialize: PowerProcessingUnit #143 +[trace] materialize: PowerProcessingUnit #144 +[trace] eval feature powerProcessingUnits -> (instance#141, instance#142, instance#143, instance#144) +[trace] materialize: XenonTank #145 +[trace] materialize: XenonTank #146 +[trace] eval feature xenonTanks -> (instance#145, instance#146) +[trace] materialize: XenonFlowController #147 +[trace] materialize: XenonFlowController #148 +[trace] materialize: XenonFlowController #149 +[trace] materialize: XenonFlowController #150 +[trace] eval feature flowControllers -> (instance#147, instance#148, instance#149, instance#150) +[trace] materialize: ThrusterGimbal #151 +[trace] materialize: ThrusterGimbal #152 +[trace] materialize: ThrusterGimbal #153 +[trace] materialize: ThrusterGimbal #154 +[trace] eval feature gimbals -> (instance#151, instance#152, instance#153, instance#154) +[trace] materialize: PropellantManagementAssembly #155 +[trace] eval feature propellantManagement -> instance#155 +[trace] eval sequence of 6 -> (instance#137, instance#138, instance#139, instance#140, instance#141, instance#142, instance#143, instance#144, instance#145, instance#146, instance#147, instance#148, instance#149, instance#150, instance#151, instance#152, instance#153, instance#154, instance#155) +[trace] eval chain units -> (instance#137, instance#138, instance#139, instance#140, instance#141, instance#142, instance#143, instance#144, instance#145, instance#146, instance#147, instance#148, instance#149, instance#150, instance#151, instance#152, instance#153, instance#154, instance#155) +[trace] eval feature rcs -> instance#69 +[trace] materialize: HydrazineThruster #156 +[trace] materialize: HydrazineThruster #157 +[trace] materialize: HydrazineThruster #158 +[trace] materialize: HydrazineThruster #159 +[trace] materialize: HydrazineThruster #160 +[trace] materialize: HydrazineThruster #161 [trace] materialize: HydrazineThruster #162 [trace] materialize: HydrazineThruster #163 [trace] materialize: HydrazineThruster #164 @@ -454,52 +434,46 @@ [trace] materialize: HydrazineThruster #169 [trace] materialize: HydrazineThruster #170 [trace] materialize: HydrazineThruster #171 -[trace] materialize: HydrazineThruster #172 -[trace] materialize: HydrazineThruster #173 -[trace] materialize: HydrazineThruster #174 -[trace] materialize: HydrazineThruster #175 -[trace] materialize: HydrazineThruster #176 -[trace] materialize: HydrazineThruster #177 -[trace] eval feature thrusters -> (instance#162, instance#163, instance#164, instance#165, instance#166, instance#167, instance#168, instance#169, instance#170, instance#171, instance#172, instance#173, instance#174, instance#175, instance#176, instance#177) -[trace] materialize: HydrazineTank #178 -[trace] materialize: HydrazineTank #179 -[trace] eval feature tanks -> (instance#178, instance#179) -[trace] materialize: RcsFeedAssembly #180 -[trace] eval feature feed -> instance#180 -[trace] eval sequence of 3 -> (instance#162, instance#163, instance#164, instance#165, instance#166, instance#167, instance#168, instance#169, instance#170, instance#171, instance#172, instance#173, instance#174, instance#175, instance#176, instance#177, instance#178, instance#179, instance#180) -[trace] eval chain units -> (instance#162, instance#163, instance#164, instance#165, instance#166, instance#167, instance#168, instance#169, instance#170, instance#171, instance#172, instance#173, instance#174, instance#175, instance#176, instance#177, instance#178, instance#179, instance#180) -[trace] eval feature captureSystem -> instance#77 -[trace] materialize: CaptureBag #181 -[trace] eval feature bag -> instance#181 -[trace] materialize: InflatableBoom #182 -[trace] materialize: InflatableBoom #183 -[trace] materialize: InflatableBoom #184 -[trace] materialize: InflatableBoom #185 -[trace] materialize: InflatableBoom #186 -[trace] materialize: InflatableBoom #187 -[trace] eval feature booms -> (instance#182, instance#183, instance#184, instance#185, instance#186, instance#187) -[trace] materialize: CinchWinch #188 -[trace] materialize: CinchWinch #189 -[trace] materialize: CinchWinch #190 -[trace] eval feature winches -> (instance#188, instance#189, instance#190) -[trace] materialize: InflationSystem #191 -[trace] eval feature inflation -> instance#191 -[trace] materialize: ContactSensorSet #192 -[trace] eval feature contactSensors -> instance#192 -[trace] materialize: BagReleaseMechanism #193 -[trace] eval feature release -> instance#193 -[trace] eval sequence of 6 -> (instance#181, instance#182, instance#183, instance#184, instance#185, instance#186, instance#187, instance#188, instance#189, instance#190, instance#191, instance#192, instance#193) -[trace] eval chain units -> (instance#181, instance#182, instance#183, instance#184, instance#185, instance#186, instance#187, instance#188, instance#189, instance#190, instance#191, instance#192, instance#193) -[trace] eval feature sensors -> instance#78 -[trace] materialize: NarrowAngleCamera #194 -[trace] eval feature narrowAngleCamera -> instance#194 -[trace] materialize: WideAngleCamera #195 -[trace] eval feature wideAngleCamera -> instance#195 -[trace] materialize: ThermalImager #196 -[trace] eval feature thermalImager -> instance#196 -[trace] eval sequence of 3 -> (instance#194, instance#195, instance#196) -[trace] eval chain units -> (instance#194, instance#195, instance#196) -[trace] eval sequence of 10 -> (instance#87, instance#88, instance#89, instance#90, instance#91, instance#92, instance#93, instance#94, instance#95, instance#96, instance#97, instance#98, instance#99, instance#100, instance#101, instance#102, instance#103, instance#104, instance#105, instance#106, instance#107, instance#108, instance#109, instance#110, instance#111, instance#112, instance#113, instance#114, instance#115, instance#116, instance#117, instance#118, instance#119, instance#120, instance#121, instance#122, instance#123, instance#124, instance#125, instance#126, instance#127, instance#128, instance#129, instance#130, instance#131, instance#132, instance#133, instance#134, instance#135, instance#136, instance#137, instance#138, instance#139, instance#140, instance#141, instance#142, instance#143, instance#144, instance#145, instance#146, instance#147, instance#148, instance#149, instance#150, instance#151, instance#152, instance#153, instance#154, instance#155, instance#156, instance#157, instance#158, instance#159, instance#160, instance#161, instance#162, instance#163, instance#164, instance#165, instance#166, instance#167, instance#168, instance#169, instance#170, instance#171, instance#172, instance#173, instance#174, instance#175, instance#176, instance#177, instance#178, instance#179, instance#180, instance#181, instance#182, instance#183, instance#184, instance#185, instance#186, instance#187, instance#188, instance#189, instance#190, instance#191, instance#192, instance#193, instance#194, instance#195, instance#196) +[trace] eval feature thrusters -> (instance#156, instance#157, instance#158, instance#159, instance#160, instance#161, instance#162, instance#163, instance#164, instance#165, instance#166, instance#167, instance#168, instance#169, instance#170, instance#171) +[trace] materialize: HydrazineTank #172 +[trace] materialize: HydrazineTank #173 +[trace] eval feature tanks -> (instance#172, instance#173) +[trace] materialize: RcsFeedAssembly #174 +[trace] eval feature feed -> instance#174 +[trace] eval sequence of 3 -> (instance#156, instance#157, instance#158, instance#159, instance#160, instance#161, instance#162, instance#163, instance#164, instance#165, instance#166, instance#167, instance#168, instance#169, instance#170, instance#171, instance#172, instance#173, instance#174) +[trace] eval chain units -> (instance#156, instance#157, instance#158, instance#159, instance#160, instance#161, instance#162, instance#163, instance#164, instance#165, instance#166, instance#167, instance#168, instance#169, instance#170, instance#171, instance#172, instance#173, instance#174) +[trace] eval feature captureSystem -> instance#71 +[trace] materialize: CaptureBag #175 +[trace] eval feature bag -> instance#175 +[trace] materialize: InflatableBoom #176 +[trace] materialize: InflatableBoom #177 +[trace] materialize: InflatableBoom #178 +[trace] materialize: InflatableBoom #179 +[trace] materialize: InflatableBoom #180 +[trace] materialize: InflatableBoom #181 +[trace] eval feature booms -> (instance#176, instance#177, instance#178, instance#179, instance#180, instance#181) +[trace] materialize: CinchWinch #182 +[trace] materialize: CinchWinch #183 +[trace] materialize: CinchWinch #184 +[trace] eval feature winches -> (instance#182, instance#183, instance#184) +[trace] materialize: InflationSystem #185 +[trace] eval feature inflation -> instance#185 +[trace] materialize: ContactSensorSet #186 +[trace] eval feature contactSensors -> instance#186 +[trace] materialize: BagReleaseMechanism #187 +[trace] eval feature release -> instance#187 +[trace] eval sequence of 6 -> (instance#175, instance#176, instance#177, instance#178, instance#179, instance#180, instance#181, instance#182, instance#183, instance#184, instance#185, instance#186, instance#187) +[trace] eval chain units -> (instance#175, instance#176, instance#177, instance#178, instance#179, instance#180, instance#181, instance#182, instance#183, instance#184, instance#185, instance#186, instance#187) +[trace] eval feature sensors -> instance#72 +[trace] materialize: NarrowAngleCamera #188 +[trace] eval feature narrowAngleCamera -> instance#188 +[trace] materialize: WideAngleCamera #189 +[trace] eval feature wideAngleCamera -> instance#189 +[trace] materialize: ThermalImager #190 +[trace] eval feature thermalImager -> instance#190 +[trace] eval sequence of 3 -> (instance#188, instance#189, instance#190) +[trace] eval chain units -> (instance#188, instance#189, instance#190) +[trace] eval sequence of 10 -> (instance#81, instance#82, instance#83, instance#84, instance#85, instance#86, instance#87, instance#88, instance#89, instance#90, instance#91, instance#92, instance#93, instance#94, instance#95, instance#96, instance#97, instance#98, instance#99, instance#100, instance#101, instance#102, instance#103, instance#104, instance#105, instance#106, instance#107, instance#108, instance#109, instance#110, instance#111, instance#112, instance#113, instance#114, instance#115, instance#116, instance#117, instance#118, instance#119, instance#120, instance#121, instance#122, instance#123, instance#124, instance#125, instance#126, instance#127, instance#128, instance#129, instance#130, instance#131, instance#132, instance#133, instance#134, instance#135, instance#136, instance#137, instance#138, instance#139, instance#140, instance#141, instance#142, instance#143, instance#144, instance#145, instance#146, instance#147, instance#148, instance#149, instance#150, instance#151, instance#152, instance#153, instance#154, instance#155, instance#156, instance#157, instance#158, instance#159, instance#160, instance#161, instance#162, instance#163, instance#164, instance#165, instance#166, instance#167, instance#168, instance#169, instance#170, instance#171, instance#172, instance#173, instance#174, instance#175, instance#176, instance#177, instance#178, instance#179, instance#180, instance#181, instance#182, instance#183, instance#184, instance#185, instance#186, instance#187, instance#188, instance#189, instance#190) [trace] eval literal 115 -> 115 [trace] eval index -> 115 [kg] [trace] eval chain mass -> 115 [kg] @@ -507,7 +481,7 @@ [trace] eval operator - -> 12509.0 [kg] [trace] eval feature launchMass -> 12509.0 [kg] [trace] enter calc SequenceFunctions::head -[trace] eval feature thrusters -> (instance#143, instance#144, instance#145, instance#146) +[trace] eval feature thrusters -> (instance#137, instance#138, instance#139, instance#140) [trace] eval literal 2900 -> 2900 [trace] eval index -> 2900 [s] [trace] eval literal 2900 -> 2900 @@ -686,7 +660,7 @@ [trace] exit calc TethysBudgets::ReturnableBodyMass -> (542485.809768173 [kg]) [trace] eval invoke ReturnableBodyMass -> (542485.809768173 [kg]) [trace] eval chain returnableBodyMass -> 542485.809768173 [kg] -[trace] materialize: captureSystem #197 +[trace] materialize: captureSystem #191 [trace] eval literal 1000.0e3 -> 1000000.0 [trace] eval index -> 1000000.0 [kg] [trace] eval chain maximumBodyMass -> 1000000.0 [kg] @@ -698,186 +672,207 @@ [trace] eval index -> 10.0 [m] [trace] eval chain maximumBodyDiameter -> 10.0 [m] [trace] eval chain maximumBodyDiameter -> 10.0 [m] -[trace] materialize: flightMode #198 -[trace] materialize: sepString #199 -[trace] materialize: telecom #200 -[trace] materialize: attitudeControl #201 -[trace] materialize: captureMechanism #202 -[trace] materialize: entryAction #203 -[trace] materialize: Action #204 -[trace] materialize: Action #205 -[trace] materialize: MassValue #206 -[trace] materialize: MassValue #207 -[trace] materialize: StructureAndMechanisms #208 -[trace] materialize: MechanicalPort #209 -[trace] materialize: MechanicalLoad #210 -[trace] materialize: AccelerationValue #211 -[trace] materialize: ForceValue #212 +[trace] materialize: flightMode #192 +[trace] materialize: sepString #193 +[trace] materialize: telecom #194 +[trace] materialize: attitudeControl #195 +[trace] materialize: captureMechanism #196 +[trace] materialize: entryAction #197 +[trace] materialize: Action #198 +[trace] materialize: Action #199 +[trace] materialize: MassValue #200 +[trace] materialize: MassValue #201 +[trace] materialize: StructureAndMechanisms #202 +[trace] materialize: MechanicalPort #203 +[trace] materialize: MechanicalLoad #204 +[trace] materialize: AccelerationValue #205 +[trace] materialize: ForceValue #206 +[trace] enter calc SequenceFunctions::isEmpty +[trace] eval feature voids -> () +[trace] bind seq = () [argument] +[trace] exit calc SequenceFunctions::isEmpty -> true +[trace] eval invoke isEmpty -> true +[trace] materialize: Boolean #207 +[trace] materialize: MechanicalPort #208 +[trace] materialize: MechanicalLoad #209 +[trace] materialize: AccelerationValue #210 +[trace] materialize: ForceValue #211 +[trace] enter calc SequenceFunctions::isEmpty +[trace] eval feature voids -> () +[trace] bind seq = () [argument] +[trace] exit calc SequenceFunctions::isEmpty -> true +[trace] eval invoke isEmpty -> true +[trace] materialize: Boolean #212 +[trace] materialize: DockingPort #213 +[trace] materialize: MechanicalLoad #214 +[trace] materialize: AccelerationValue #215 +[trace] materialize: ForceValue #216 +[trace] enter calc SequenceFunctions::isEmpty +[trace] eval feature voids -> () +[trace] bind seq = () [argument] +[trace] exit calc SequenceFunctions::isEmpty -> true +[trace] eval invoke isEmpty -> true +[trace] materialize: ElectricalPower #217 +[trace] materialize: ElectricPotentialValue #218 +[trace] materialize: PowerValue #219 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: Boolean #213 -[trace] materialize: MechanicalPort #214 -[trace] materialize: MechanicalLoad #215 -[trace] materialize: AccelerationValue #216 -[trace] materialize: ForceValue #217 +[trace] materialize: Telemetry #220 +[trace] materialize: Real #221 +[trace] materialize: Real #222 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: Boolean #218 -[trace] materialize: DockingPort #219 -[trace] materialize: MechanicalLoad #220 -[trace] materialize: AccelerationValue #221 -[trace] materialize: ForceValue #222 +[trace] materialize: MassValue #223 +[trace] materialize: PowerOutlet #224 +[trace] materialize: ElectricalPower #225 +[trace] materialize: ElectricPotentialValue #226 +[trace] materialize: PowerValue #227 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: ElectricalPower #223 -[trace] materialize: ElectricPotentialValue #224 -[trace] materialize: PowerValue #225 +[trace] materialize: DataBusPort #228 +[trace] materialize: Telemetry #229 +[trace] materialize: Real #230 +[trace] materialize: Real #231 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: Telemetry #226 -[trace] materialize: Real #227 -[trace] materialize: Real #228 +[trace] materialize: Telecommand #232 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: MassValue #229 -[trace] materialize: PowerOutlet #230 -[trace] materialize: ElectricalPower #231 -[trace] materialize: ElectricPotentialValue #232 -[trace] materialize: PowerValue #233 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: DataBusPort #234 -[trace] materialize: Telemetry #235 -[trace] materialize: Real #236 -[trace] materialize: Real #237 +[trace] materialize: ThermalControl #233 +[trace] materialize: ThermalPort #234 +[trace] materialize: Heat #235 +[trace] materialize: PowerValue #236 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: Telecommand #238 +[trace] materialize: ThermalPort #237 +[trace] materialize: Heat #238 +[trace] materialize: PowerValue #239 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true +[trace] materialize: MassValue #240 +[trace] materialize: PowerOutlet #241 +[trace] materialize: ElectricalPower #242 +[trace] materialize: ElectricPotentialValue #243 +[trace] materialize: PowerValue #244 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: ThermalControl #239 -[trace] materialize: ThermalPort #240 -[trace] materialize: Heat #241 -[trace] materialize: PowerValue #242 +[trace] materialize: DataBusPort #245 +[trace] materialize: Telemetry #246 +[trace] materialize: Real #247 +[trace] materialize: Real #248 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: ThermalPort #243 -[trace] materialize: Heat #244 -[trace] materialize: PowerValue #245 +[trace] materialize: Telecommand #249 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: MassValue #246 -[trace] materialize: PowerOutlet #247 -[trace] materialize: ElectricalPower #248 -[trace] materialize: ElectricPotentialValue #249 -[trace] materialize: PowerValue #250 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: DataBusPort #251 -[trace] materialize: Telemetry #252 -[trace] materialize: Real #253 -[trace] materialize: Real #254 +[trace] materialize: ElectricalPowerSystem #250 +[trace] materialize: PowerValue #251 +[trace] materialize: PowerOutlet #252 +[trace] materialize: ElectricalPower #253 +[trace] materialize: ElectricPotentialValue #254 +[trace] materialize: PowerValue #255 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: Telecommand #255 +[trace] materialize: PowerOutlet #256 +[trace] materialize: ElectricalPower #257 +[trace] materialize: ElectricPotentialValue #258 +[trace] materialize: PowerValue #259 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true +[trace] materialize: UmbilicalPort #260 +[trace] materialize: ElectricalPower #261 +[trace] materialize: ElectricPotentialValue #262 +[trace] materialize: PowerValue #263 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: ElectricalPowerSystem #256 -[trace] materialize: PowerValue #257 -[trace] materialize: PowerOutlet #258 -[trace] materialize: ElectricalPower #259 -[trace] materialize: ElectricPotentialValue #260 -[trace] materialize: PowerValue #261 +[trace] materialize: Telemetry #264 +[trace] materialize: Real #265 +[trace] materialize: Real #266 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: PowerOutlet #262 -[trace] materialize: ElectricalPower #263 -[trace] materialize: ElectricPotentialValue #264 -[trace] materialize: PowerValue #265 +[trace] materialize: MassValue #267 +[trace] materialize: PowerOutlet #268 +[trace] materialize: ElectricalPower #269 +[trace] materialize: ElectricPotentialValue #270 +[trace] materialize: PowerValue #271 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: UmbilicalPort #266 -[trace] materialize: ElectricalPower #267 -[trace] materialize: ElectricPotentialValue #268 -[trace] materialize: PowerValue #269 +[trace] materialize: DataBusPort #272 +[trace] materialize: Telemetry #273 +[trace] materialize: Real #274 +[trace] materialize: Real #275 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: Telemetry #270 -[trace] materialize: Real #271 -[trace] materialize: Real #272 +[trace] materialize: Telecommand #276 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: MassValue #273 -[trace] materialize: PowerOutlet #274 -[trace] materialize: ElectricalPower #275 -[trace] materialize: ElectricPotentialValue #276 -[trace] materialize: PowerValue #277 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true +[trace] materialize: CommandAndDataHandling #277 [trace] materialize: DataBusPort #278 [trace] materialize: Telemetry #279 [trace] materialize: Real #280 @@ -893,201 +888,201 @@ [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true +[trace] materialize: MassValue #283 +[trace] materialize: PowerOutlet #284 +[trace] materialize: ElectricalPower #285 +[trace] materialize: ElectricPotentialValue #286 +[trace] materialize: PowerValue #287 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: CommandAndDataHandling #283 -[trace] materialize: DataBusPort #284 -[trace] materialize: Telemetry #285 -[trace] materialize: Real #286 -[trace] materialize: Real #287 +[trace] materialize: DataBusPort #288 +[trace] materialize: Telemetry #289 +[trace] materialize: Real #290 +[trace] materialize: Real #291 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: Telecommand #288 +[trace] materialize: Telecommand #292 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: MassValue #289 -[trace] materialize: PowerOutlet #290 -[trace] materialize: ElectricalPower #291 -[trace] materialize: ElectricPotentialValue #292 -[trace] materialize: PowerValue #293 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: DataBusPort #294 -[trace] materialize: Telemetry #295 -[trace] materialize: Real #296 -[trace] materialize: Real #297 +[trace] materialize: Telecommunications #293 +[trace] materialize: RfPort #294 +[trace] materialize: RfCarrier #295 +[trace] materialize: FrequencyValue #296 +[trace] materialize: PowerValue #297 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: Telecommand #298 +[trace] materialize: RfPort #298 +[trace] materialize: RfCarrier #299 +[trace] materialize: FrequencyValue #300 +[trace] materialize: PowerValue #301 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true +[trace] materialize: MassValue #302 +[trace] materialize: PowerOutlet #303 +[trace] materialize: ElectricalPower #304 +[trace] materialize: ElectricPotentialValue #305 +[trace] materialize: PowerValue #306 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: Telecommunications #299 -[trace] materialize: RfPort #300 -[trace] materialize: RfCarrier #301 -[trace] materialize: FrequencyValue #302 -[trace] materialize: PowerValue #303 +[trace] materialize: DataBusPort #307 +[trace] materialize: Telemetry #308 +[trace] materialize: Real #309 +[trace] materialize: Real #310 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: RfPort #304 -[trace] materialize: RfCarrier #305 -[trace] materialize: FrequencyValue #306 -[trace] materialize: PowerValue #307 +[trace] materialize: Telecommand #311 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: MassValue #308 -[trace] materialize: PowerOutlet #309 -[trace] materialize: ElectricalPower #310 -[trace] materialize: ElectricPotentialValue #311 -[trace] materialize: PowerValue #312 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: DataBusPort #313 -[trace] materialize: Telemetry #314 -[trace] materialize: Real #315 -[trace] materialize: Real #316 +[trace] materialize: GuidanceNavigationControl #312 +[trace] materialize: MassValue #313 +[trace] materialize: PowerOutlet #314 +[trace] materialize: ElectricalPower #315 +[trace] materialize: ElectricPotentialValue #316 +[trace] materialize: PowerValue #317 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: Telecommand #317 +[trace] materialize: DataBusPort #318 +[trace] materialize: Telemetry #319 +[trace] materialize: Real #320 +[trace] materialize: Real #321 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true +[trace] materialize: Telecommand #322 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: GuidanceNavigationControl #318 -[trace] materialize: MassValue #319 -[trace] materialize: PowerOutlet #320 -[trace] materialize: ElectricalPower #321 -[trace] materialize: ElectricPotentialValue #322 -[trace] materialize: PowerValue #323 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: DataBusPort #324 -[trace] materialize: Telemetry #325 -[trace] materialize: Real #326 -[trace] materialize: Real #327 +[trace] materialize: SolarElectricPropulsion #323 +[trace] materialize: MassValue #324 +[trace] materialize: Natural #325 +[trace] materialize: Natural #326 +[trace] materialize: DurationValue #327 +[trace] materialize: PowerValue #328 +[trace] materialize: FluidPort #329 +[trace] materialize: Propellant #330 +[trace] materialize: MassValue #331 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: Telecommand #328 +[trace] materialize: MassValue #332 +[trace] materialize: PowerOutlet #333 +[trace] materialize: ElectricalPower #334 +[trace] materialize: ElectricPotentialValue #335 +[trace] materialize: PowerValue #336 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true +[trace] materialize: DataBusPort #337 +[trace] materialize: Telemetry #338 +[trace] materialize: Real #339 +[trace] materialize: Real #340 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: SolarElectricPropulsion #329 -[trace] materialize: MassValue #330 -[trace] materialize: Natural #331 -[trace] materialize: Natural #332 -[trace] materialize: DurationValue #333 -[trace] materialize: PowerValue #334 -[trace] materialize: FluidPort #335 -[trace] materialize: Propellant #336 -[trace] materialize: MassValue #337 +[trace] materialize: Telecommand #341 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: MassValue #338 -[trace] materialize: PowerOutlet #339 -[trace] materialize: ElectricalPower #340 -[trace] materialize: ElectricPotentialValue #341 -[trace] materialize: PowerValue #342 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: DataBusPort #343 -[trace] materialize: Telemetry #344 -[trace] materialize: Real #345 -[trace] materialize: Real #346 +[trace] materialize: ReactionControl #342 +[trace] materialize: MassValue #343 +[trace] materialize: FluidPort #344 +[trace] materialize: Propellant #345 +[trace] materialize: MassValue #346 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: Telecommand #347 +[trace] materialize: MassValue #347 +[trace] materialize: PowerOutlet #348 +[trace] materialize: ElectricalPower #349 +[trace] materialize: ElectricPotentialValue #350 +[trace] materialize: PowerValue #351 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true +[trace] materialize: DataBusPort #352 +[trace] materialize: Telemetry #353 +[trace] materialize: Real #354 +[trace] materialize: Real #355 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: ReactionControl #348 -[trace] materialize: MassValue #349 -[trace] materialize: FluidPort #350 -[trace] materialize: Propellant #351 -[trace] materialize: MassValue #352 +[trace] materialize: Telecommand #356 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: MassValue #353 -[trace] materialize: PowerOutlet #354 -[trace] materialize: ElectricalPower #355 -[trace] materialize: ElectricPotentialValue #356 -[trace] materialize: PowerValue #357 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true +[trace] materialize: CaptureSystem #357 warning: TethysFdir::thrusterFaultScenario: materialization is bounded; not every feature value was checked [trace] run: performed action campaign of #2 [trace] step 2: token 1@separation diff --git a/runs/house-rules.txt b/runs/house-rules.txt index 4fc2a19..cc04df2 100644 --- a/runs/house-rules.txt +++ b/runs/house-rules.txt @@ -49,4 +49,4 @@ ✓ package TethysDisposal ✓ package TethysHouseRules ✓ model/00-tethys.sysml, model/01-environment.sysml, model/02-mission.sysml, model/03-interfaces.sysml, model/04-requirements.sysml, model/05-tug.sysml, model/06-inspector.sysml, model/07-target.sysml, model/08-launch.sysml, model/09-ground.sysml, model/10-system.sysml, model/20-stakeholders.sysml, model/21-requirements-l2.sysml, model/22-requirements-l3-l4.sysml, model/23-verification.sysml, model/24-verification-tooling.sysml, model/30-margin-policy.sysml, model/31-tug-structure.sysml, model/32-budgets.sysml, model/40-inspector.sysml, model/41-capture-system.sysml, model/42-proximity-ops.sysml, model/50-ground.sysml, model/51-icds.sysml, model/52-link-budgets.sysml, model/53-operations.sysml, model/54-icds-tooling.sysml, model/60-modes.sysml, model/61-sequence.sysml, model/62-fdir.sysml, model/70-analyses.sysml, model/71-trades.sysml, model/72-montecarlo.sysml, model/73-dynamics.sysml, model/74-analyses-tooling.sysml, model/80-variants.sysml, model/81-physics.kerml, model/82-notation-sweep.sysml, model/85-safety.sysml, model/86-risk.sysml, model/87-allocations-tooling.sysml, model/87-allocations.sysml, model/90-views.sysml, model/91-documents.sysml, model/92-layout.sysml, model/93-views-tooling.sysml, model/95-as-built.sysml, model/96-imported-data.sysml, model/97-disposal.sysml, model/99-house-rules.sysml: no errors -Self-model check: 19191 elements, 172841 checks, 0 violations, 0 unevaluated +Self-model check: 19226 elements, 173139 checks, 0 violations, 0 unevaluated diff --git a/runs/modes-inspector-imaging.txt b/runs/modes-inspector-imaging.txt index 0f17a60..a7b540c 100644 --- a/runs/modes-inspector-imaging.txt +++ b/runs/modes-inspector-imaging.txt @@ -56,11 +56,11 @@ warning: TethysModes::nominalFlight: materialization is bounded; not every featu Current state: stowed Time: 0.0 Events: 0 -✓ Advanced to 38102400.0 (15 event(s) processed) +✓ Advanced to 38102400.0 (14 event(s) processed) Current state: stationKeeping Last event at: 37707840.0 Remaining events: 0 - 12 choice points (10 independent); %trace on to see them + 11 choice points (10 independent); %trace on to see them Action steps taken: 21 Waiting on the clock: t=38888640.0: action nominalCampaign of object #2, accept after waiting since step 23 for the clock to reach t=38888640.0 diff --git a/runs/modes-inspector-retired.txt b/runs/modes-inspector-retired.txt index 3b08154..4e51cc6 100644 --- a/runs/modes-inspector-retired.txt +++ b/runs/modes-inspector-retired.txt @@ -56,11 +56,11 @@ warning: TethysModes::nominalFlight: materialization is bounded; not every featu Current state: stowed Time: 0.0 Events: 0 -✓ Advanced to 129600000.0 (29 event(s) processed) +✓ Advanced to 129600000.0 (26 event(s) processed) Current state: done Last event at: 38888640.0 Remaining events: 0 - 22 choice points (19 independent); %trace on to see them + 20 choice points (19 independent); %trace on to see them Action steps taken: 40 ✓ State machine completed (a transition reached `done`) standing: value (observed: 1 run under reverse) diff --git a/runs/modes-table.txt b/runs/modes-table.txt index 45e19cd..71e3653 100644 --- a/runs/modes-table.txt +++ b/runs/modes-table.txt @@ -54,7 +54,7 @@ ✓ TethysModes::argentModeTable.rows.mode = [TugMode::launch, TugMode::earlyOperations, TugMode::coast, TugMode::thrust, TugMode::approach, TugMode::proximityOperations, TugMode::retreat, TugMode::capture, TugMode::despin, TugMode::stackCoast, TugMode::stackThrust, TugMode::droHold, TugMode::dockedPassive, TugMode::disposal, TugMode::safe, TugMode::abortHold] ✓ TethysModes::argentModeTable.rows.busLoad - = [0.0 [W], 0.0 [W], 0.0 [W], 0.0 [W], 0.0 [W], 0.0 [W], 0.0 [W], 0.0 [W], 0.0 [W], 0.0 [W], 0.0 [W], 0.0 [W], 0.0 [W], 0.0 [W], 0.0 [W], 0.0 [W]] + = [0.0 [W], 822.0 [W], 868.0 [W], 35518.0 [W], 35518.0 [W], 908.0 [W], 908.0 [W], 1461.0 [W], 837.0 [W], 868.0 [W], 35518.0 [W], 897.0 [W], 868.0 [W], 35518.0 [W], 832.0 [W], 832.0 [W]] ✓ TethysModes::argentModeTable.rows.sepThrusting = [false, false, false, true, true, false, false, false, false, false, true, false, false, true, false, false] ✓ TethysModes::argentModeTable.rows.highVoltageBusOn diff --git a/runs/modes-tug-dense-target.txt b/runs/modes-tug-dense-target.txt index 513154b..b60e08e 100644 --- a/runs/modes-tug-dense-target.txt +++ b/runs/modes-tug-dense-target.txt @@ -56,10 +56,10 @@ warning: TethysModes::denseTargetFlight: materialization is bounded; not every f Current state: onLauncher | off | lowGain | thrusters | stowed Time: 0.0 Events: 0 -✓ Advanced to 129600000.0 (19 event(s) processed) +✓ Advanced to 129600000.0 (16 event(s) processed) Current state: retreat | standby | highGain | thrusters | deployed Last event at: 38888640.0 Remaining events: 0 - 14 choice points (11 independent); %trace on to see them + 12 choice points (11 independent); %trace on to see them Action steps taken: 28 standing: value (observed: 1 run under reverse) diff --git a/runs/modes-tug-early-ops.txt b/runs/modes-tug-early-ops.txt index f9e4152..c315763 100644 --- a/runs/modes-tug-early-ops.txt +++ b/runs/modes-tug-early-ops.txt @@ -237,7 +237,7 @@ [trace] eval chain hydrazineMass -> 400.0 [kg] [trace] eval feature hydrazine -> 400.0 [kg] [trace] eval operator + -> 12600.0 [kg] -[trace] materialize: wren #53 +[trace] materialize: wrenFM #53 [trace] eval literal 24.0 -> 24.0 [trace] eval index -> 24.0 [kg] [trace] eval chain wetMass -> 24.0 [kg] @@ -691,108 +691,103 @@ [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: CommandPort #207 -[trace] materialize: GroundCommand #208 -[trace] enter calc SequenceFunctions::isEmpty -[trace] eval feature voids -> () -[trace] bind seq = () [argument] -[trace] exit calc SequenceFunctions::isEmpty -> true -[trace] eval invoke isEmpty -> true -[trace] materialize: OnBoardEvent #209 +[trace] eval chain maximumBodyMass -> 542485.809768173 [kg] +[trace] eval chain maximumBodyDiameter -> 10.0 [m] +[trace] materialize: flightMode #207 +[trace] materialize: sepString #208 +[trace] materialize: telecom #209 +[trace] materialize: attitudeControl #210 +[trace] materialize: captureMechanism #211 +[trace] materialize: entryAction #212 +[trace] materialize: Action #213 +[trace] materialize: Action #214 +[trace] materialize: MassValue #215 +[trace] materialize: MassValue #216 +[trace] materialize: StructureAndMechanisms #217 +[trace] materialize: MechanicalPort #218 +[trace] materialize: MechanicalLoad #219 +[trace] materialize: AccelerationValue #220 +[trace] materialize: ForceValue #221 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] eval chain maximumBodyMass -> 542485.809768173 [kg] -[trace] eval chain maximumBodyDiameter -> 10.0 [m] -[trace] materialize: flightMode #210 -[trace] materialize: sepString #211 -[trace] materialize: telecom #212 -[trace] materialize: attitudeControl #213 -[trace] materialize: captureMechanism #214 -[trace] materialize: entryAction #215 -[trace] materialize: Action #216 -[trace] materialize: Action #217 -[trace] materialize: MassValue #218 -[trace] materialize: MassValue #219 -[trace] materialize: StructureAndMechanisms #220 -[trace] materialize: MechanicalPort #221 -[trace] materialize: MechanicalLoad #222 -[trace] materialize: AccelerationValue #223 -[trace] materialize: ForceValue #224 +[trace] materialize: Boolean #222 +[trace] materialize: MechanicalPort #223 +[trace] materialize: MechanicalLoad #224 +[trace] materialize: AccelerationValue #225 +[trace] materialize: ForceValue #226 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: Boolean #225 -[trace] materialize: MechanicalPort #226 -[trace] materialize: MechanicalLoad #227 -[trace] materialize: AccelerationValue #228 -[trace] materialize: ForceValue #229 +[trace] materialize: Boolean #227 +[trace] materialize: DockingPort #228 +[trace] materialize: MechanicalLoad #229 +[trace] materialize: AccelerationValue #230 +[trace] materialize: ForceValue #231 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: Boolean #230 -[trace] materialize: DockingPort #231 -[trace] materialize: MechanicalLoad #232 -[trace] materialize: AccelerationValue #233 -[trace] materialize: ForceValue #234 +[trace] materialize: ElectricalPower #232 +[trace] materialize: ElectricPotentialValue #233 +[trace] materialize: PowerValue #234 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: ElectricalPower #235 -[trace] materialize: ElectricPotentialValue #236 -[trace] materialize: PowerValue #237 +[trace] materialize: Telemetry #235 +[trace] materialize: Real #236 +[trace] materialize: Real #237 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: Telemetry #238 -[trace] materialize: Real #239 -[trace] materialize: Real #240 +[trace] materialize: MassValue #238 +[trace] materialize: PowerOutlet #239 +[trace] materialize: ElectricalPower #240 +[trace] materialize: ElectricPotentialValue #241 +[trace] materialize: PowerValue #242 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: MassValue #241 -[trace] materialize: PowerOutlet #242 -[trace] materialize: ElectricalPower #243 -[trace] materialize: ElectricPotentialValue #244 -[trace] materialize: PowerValue #245 +[trace] materialize: DataBusPort #243 +[trace] materialize: Telemetry #244 +[trace] materialize: Real #245 +[trace] materialize: Real #246 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: DataBusPort #246 -[trace] materialize: Telemetry #247 -[trace] materialize: Real #248 -[trace] materialize: Real #249 +[trace] materialize: Telecommand #247 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: Telecommand #250 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true +[trace] materialize: ThermalControl #248 +[trace] materialize: ThermalPort #249 +[trace] materialize: Heat #250 +[trace] materialize: PowerValue #251 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: ThermalControl #251 [trace] materialize: ThermalPort #252 [trace] materialize: Heat #253 [trace] materialize: PowerValue #254 @@ -801,316 +796,313 @@ [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: ThermalPort #255 -[trace] materialize: Heat #256 -[trace] materialize: PowerValue #257 +[trace] materialize: MassValue #255 +[trace] materialize: PowerOutlet #256 +[trace] materialize: ElectricalPower #257 +[trace] materialize: ElectricPotentialValue #258 +[trace] materialize: PowerValue #259 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: MassValue #258 -[trace] materialize: PowerOutlet #259 -[trace] materialize: ElectricalPower #260 -[trace] materialize: ElectricPotentialValue #261 -[trace] materialize: PowerValue #262 +[trace] materialize: DataBusPort #260 +[trace] materialize: Telemetry #261 +[trace] materialize: Real #262 +[trace] materialize: Real #263 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: DataBusPort #263 -[trace] materialize: Telemetry #264 -[trace] materialize: Real #265 -[trace] materialize: Real #266 +[trace] materialize: Telecommand #264 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: Telecommand #267 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true +[trace] materialize: ElectricalPowerSystem #265 +[trace] materialize: PowerValue #266 +[trace] materialize: PowerOutlet #267 +[trace] materialize: ElectricalPower #268 +[trace] materialize: ElectricPotentialValue #269 +[trace] materialize: PowerValue #270 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: ElectricalPowerSystem #268 -[trace] materialize: PowerValue #269 -[trace] materialize: PowerOutlet #270 -[trace] materialize: ElectricalPower #271 -[trace] materialize: ElectricPotentialValue #272 -[trace] materialize: PowerValue #273 +[trace] materialize: PowerOutlet #271 +[trace] materialize: ElectricalPower #272 +[trace] materialize: ElectricPotentialValue #273 +[trace] materialize: PowerValue #274 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: PowerOutlet #274 -[trace] materialize: ElectricalPower #275 -[trace] materialize: ElectricPotentialValue #276 -[trace] materialize: PowerValue #277 +[trace] materialize: UmbilicalPort #275 +[trace] materialize: ElectricalPower #276 +[trace] materialize: ElectricPotentialValue #277 +[trace] materialize: PowerValue #278 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: UmbilicalPort #278 -[trace] materialize: ElectricalPower #279 -[trace] materialize: ElectricPotentialValue #280 -[trace] materialize: PowerValue #281 +[trace] materialize: Telemetry #279 +[trace] materialize: Real #280 +[trace] materialize: Real #281 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: Telemetry #282 -[trace] materialize: Real #283 -[trace] materialize: Real #284 +[trace] materialize: MassValue #282 +[trace] materialize: PowerOutlet #283 +[trace] materialize: ElectricalPower #284 +[trace] materialize: ElectricPotentialValue #285 +[trace] materialize: PowerValue #286 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: MassValue #285 -[trace] materialize: PowerOutlet #286 -[trace] materialize: ElectricalPower #287 -[trace] materialize: ElectricPotentialValue #288 -[trace] materialize: PowerValue #289 +[trace] materialize: DataBusPort #287 +[trace] materialize: Telemetry #288 +[trace] materialize: Real #289 +[trace] materialize: Real #290 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: DataBusPort #290 -[trace] materialize: Telemetry #291 -[trace] materialize: Real #292 -[trace] materialize: Real #293 +[trace] materialize: Telecommand #291 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: Telecommand #294 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true +[trace] materialize: CommandAndDataHandling #292 +[trace] materialize: DataBusPort #293 +[trace] materialize: Telemetry #294 +[trace] materialize: Real #295 +[trace] materialize: Real #296 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: CommandAndDataHandling #295 -[trace] materialize: DataBusPort #296 -[trace] materialize: Telemetry #297 -[trace] materialize: Real #298 -[trace] materialize: Real #299 +[trace] materialize: Telecommand #297 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: Telecommand #300 +[trace] materialize: MassValue #298 +[trace] materialize: PowerOutlet #299 +[trace] materialize: ElectricalPower #300 +[trace] materialize: ElectricPotentialValue #301 +[trace] materialize: PowerValue #302 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: MassValue #301 -[trace] materialize: PowerOutlet #302 -[trace] materialize: ElectricalPower #303 -[trace] materialize: ElectricPotentialValue #304 -[trace] materialize: PowerValue #305 +[trace] materialize: DataBusPort #303 +[trace] materialize: Telemetry #304 +[trace] materialize: Real #305 +[trace] materialize: Real #306 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: DataBusPort #306 -[trace] materialize: Telemetry #307 -[trace] materialize: Real #308 -[trace] materialize: Real #309 +[trace] materialize: Telecommand #307 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: Telecommand #310 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true +[trace] materialize: Telecommunications #308 +[trace] materialize: RfPort #309 +[trace] materialize: RfCarrier #310 +[trace] materialize: FrequencyValue #311 +[trace] materialize: PowerValue #312 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: Telecommunications #311 -[trace] materialize: RfPort #312 -[trace] materialize: RfCarrier #313 -[trace] materialize: FrequencyValue #314 -[trace] materialize: PowerValue #315 +[trace] materialize: RfPort #313 +[trace] materialize: RfCarrier #314 +[trace] materialize: FrequencyValue #315 +[trace] materialize: PowerValue #316 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: RfPort #316 -[trace] materialize: RfCarrier #317 -[trace] materialize: FrequencyValue #318 -[trace] materialize: PowerValue #319 +[trace] materialize: MassValue #317 +[trace] materialize: PowerOutlet #318 +[trace] materialize: ElectricalPower #319 +[trace] materialize: ElectricPotentialValue #320 +[trace] materialize: PowerValue #321 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: MassValue #320 -[trace] materialize: PowerOutlet #321 -[trace] materialize: ElectricalPower #322 -[trace] materialize: ElectricPotentialValue #323 -[trace] materialize: PowerValue #324 +[trace] materialize: DataBusPort #322 +[trace] materialize: Telemetry #323 +[trace] materialize: Real #324 +[trace] materialize: Real #325 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: DataBusPort #325 -[trace] materialize: Telemetry #326 -[trace] materialize: Real #327 -[trace] materialize: Real #328 +[trace] materialize: Telecommand #326 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: Telecommand #329 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true +[trace] materialize: GuidanceNavigationControl #327 +[trace] materialize: MassValue #328 +[trace] materialize: PowerOutlet #329 +[trace] materialize: ElectricalPower #330 +[trace] materialize: ElectricPotentialValue #331 +[trace] materialize: PowerValue #332 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: GuidanceNavigationControl #330 -[trace] materialize: MassValue #331 -[trace] materialize: PowerOutlet #332 -[trace] materialize: ElectricalPower #333 -[trace] materialize: ElectricPotentialValue #334 -[trace] materialize: PowerValue #335 +[trace] materialize: DataBusPort #333 +[trace] materialize: Telemetry #334 +[trace] materialize: Real #335 +[trace] materialize: Real #336 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: DataBusPort #336 -[trace] materialize: Telemetry #337 -[trace] materialize: Real #338 -[trace] materialize: Real #339 +[trace] materialize: Telecommand #337 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: Telecommand #340 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true +[trace] materialize: SolarElectricPropulsion #338 +[trace] materialize: MassValue #339 +[trace] materialize: Natural #340 +[trace] materialize: Natural #341 +[trace] materialize: DurationValue #342 +[trace] materialize: PowerValue #343 +[trace] materialize: FluidPort #344 +[trace] materialize: Propellant #345 +[trace] materialize: MassValue #346 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: SolarElectricPropulsion #341 -[trace] materialize: MassValue #342 -[trace] materialize: Natural #343 -[trace] materialize: Natural #344 -[trace] materialize: DurationValue #345 -[trace] materialize: PowerValue #346 -[trace] materialize: FluidPort #347 -[trace] materialize: Propellant #348 -[trace] materialize: MassValue #349 +[trace] materialize: MassValue #347 +[trace] materialize: PowerOutlet #348 +[trace] materialize: ElectricalPower #349 +[trace] materialize: ElectricPotentialValue #350 +[trace] materialize: PowerValue #351 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: MassValue #350 -[trace] materialize: PowerOutlet #351 -[trace] materialize: ElectricalPower #352 -[trace] materialize: ElectricPotentialValue #353 -[trace] materialize: PowerValue #354 +[trace] materialize: DataBusPort #352 +[trace] materialize: Telemetry #353 +[trace] materialize: Real #354 +[trace] materialize: Real #355 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: DataBusPort #355 -[trace] materialize: Telemetry #356 -[trace] materialize: Real #357 -[trace] materialize: Real #358 +[trace] materialize: Telecommand #356 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: Telecommand #359 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true +[trace] materialize: ReactionControl #357 +[trace] materialize: MassValue #358 +[trace] materialize: FluidPort #359 +[trace] materialize: Propellant #360 +[trace] materialize: MassValue #361 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: ReactionControl #360 -[trace] materialize: MassValue #361 -[trace] materialize: FluidPort #362 -[trace] materialize: Propellant #363 -[trace] materialize: MassValue #364 +[trace] materialize: MassValue #362 +[trace] materialize: PowerOutlet #363 +[trace] materialize: ElectricalPower #364 +[trace] materialize: ElectricPotentialValue #365 +[trace] materialize: PowerValue #366 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: MassValue #365 -[trace] materialize: PowerOutlet #366 -[trace] materialize: ElectricalPower #367 -[trace] materialize: ElectricPotentialValue #368 -[trace] materialize: PowerValue #369 +[trace] materialize: DataBusPort #367 +[trace] materialize: Telemetry #368 +[trace] materialize: Real #369 +[trace] materialize: Real #370 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: DataBusPort #370 -[trace] materialize: Telemetry #371 -[trace] materialize: Real #372 -[trace] materialize: Real #373 +[trace] materialize: Telecommand #371 [trace] enter calc SequenceFunctions::isEmpty [trace] eval feature voids -> () [trace] bind seq = () [argument] [trace] exit calc SequenceFunctions::isEmpty -> true [trace] eval invoke isEmpty -> true -[trace] materialize: Telecommand #374 warning: TethysModes::nominalFlight: materialization is bounded; not every feature value was checked [trace] run: performed action nominalCampaign of #2 [trace] step 2: token 1@separation [trace] stmt send -[trace] materialize: SeparationConfirmed #375 +[trace] materialize: SeparationConfirmed #372 [trace] step 3: token 1@toDeployment [trace] eval literal 0.05 -> 0.05 [trace] eval index -> 0.05 [d] @@ -1122,7 +1114,7 @@ warning: TethysModes::nominalFlight: materialization is bounded; not every featu [trace] run: performed action nominalCampaign of #2 [trace] step 4: token 1@deployment [trace] stmt send -[trace] materialize: ArraysDeployed #376 +[trace] materialize: ArraysDeployed #373 [trace] step 5: token 1@commissioning [trace] eval literal 30.0 -> 30.0 [trace] eval index -> 30.0 [d] diff --git a/runs/modes-tug-full-flight.txt b/runs/modes-tug-full-flight.txt index c9d7bb6..d1b3b7a 100644 --- a/runs/modes-tug-full-flight.txt +++ b/runs/modes-tug-full-flight.txt @@ -56,10 +56,10 @@ warning: TethysModes::nominalFlight: materialization is bounded; not every featu Current state: onLauncher | off | lowGain | thrusters | stowed Time: 0.0 Events: 0 -✓ Advanced to 129600000.0 (29 event(s) processed) +✓ Advanced to 129600000.0 (26 event(s) processed) Current state: done | thrusting | highGain | wheels | released Last event at: 100491840.0 Remaining events: 0 - 22 choice points (19 independent); %trace on to see them + 20 choice points (19 independent); %trace on to see them Action steps taken: 40 standing: value (observed: 1 run under reverse) diff --git a/runs/modes-tug-proximity-ops.txt b/runs/modes-tug-proximity-ops.txt index c8209e2..c55d3f8 100644 --- a/runs/modes-tug-proximity-ops.txt +++ b/runs/modes-tug-proximity-ops.txt @@ -56,11 +56,11 @@ warning: TethysModes::nominalFlight: materialization is bounded; not every featu Current state: onLauncher | off | lowGain | thrusters | stowed Time: 0.0 Events: 0 -✓ Advanced to 38016000.0 (15 event(s) processed) +✓ Advanced to 38016000.0 (14 event(s) processed) Current state: proximityOperations | standby | relaying | thrusters | stowed Last event at: 37679040.0 Remaining events: 0 - 12 choice points (10 independent); %trace on to see them + 11 choice points (10 independent); %trace on to see them Action steps taken: 21 Waiting on the clock: t=38888640.0: action nominalCampaign of object #2, accept after waiting since step 23 for the clock to reach t=38888640.0 diff --git a/runs/montecarlo-missed-thrust.txt b/runs/montecarlo-missed-thrust.txt index 912205f..f25fd02 100644 --- a/runs/montecarlo-missed-thrust.txt +++ b/runs/montecarlo-missed-thrust.txt @@ -51,104 +51,104 @@ samples TethysMonteCarlo::missedThrustDispersion — 100 run(s), seed 7 coastDaysPerEvent | safeModeEvents | missionTime | verdict -------------------+---------------------+--------------------------+------------------------- -2.8874363938772323 | 11.614956893728195 | [98965373.55994804 [s]] | fitsDuration: satisfied -12.602085766325853 | 6.271780608990385 | [101511628.1329692 [s]] | fitsDuration: satisfied -19.564175094534097 | 1.7376401565673345 | [96444748.32473193 [s]] | fitsDuration: satisfied -29.069305167286146 | 0.7276484890382378 | [95073300.79527874 [s]] | fitsDuration: satisfied -23.57021063886724 | 2.118953311964213 | [97921550.61399868 [s]] | fitsDuration: satisfied -7.5058858925376 | 2.395112655000672 | [95231205.33192085 [s]] | fitsDuration: satisfied -20.16986372315236 | 2.0341775966929023 | [97129312.88767466 [s]] | fitsDuration: satisfied -28.58264350391614 | 0.5273968431162941 | [94496270.19002202 [s]] | fitsDuration: satisfied -23.967049679123445 | 4.888556533937273 | [104447248.53105801 [s]] | fitsDuration: satisfied -20.697783740418636 | 10.471798995026813 | [114498029.29355238 [s]] | fitsDuration: satisfied -18.3089910218999 | 3.3148959932791375 | [99160185.60412851 [s]] | fitsDuration: satisfied -14.35824744989166 | 5.973785420308927 | [102016341.21255068 [s]] | fitsDuration: satisfied -23.497591106562037 | 6.798832529185871 | [108622333.04677863 [s]] | fitsDuration: satisfied -9.275251292839847 | 4.834729235829197 | [98184766.52659187 [s]] | fitsDuration: satisfied -16.474289299170426 | 2.9833123033042193 | [98076798.54312083 [s]] | fitsDuration: satisfied -29.657079694714827 | 6.105967772024078 | [110285566.8969154 [s]] | fitsDuration: satisfied -14.996235820068303 | 7.521434553858173 | [104752029.9765521 [s]] | fitsDuration: satisfied -26.781679863607067 | 11.345559419305852 | [122250821.43638292 [s]] | fitsDuration: satisfied -28.391368099009895 | 7.091057314004283 | [112289607.48472284 [s]] | fitsDuration: satisfied -5.321756527974327 | 3.4349540413501516 | [95526872.26318344 [s]] | fitsDuration: satisfied -14.848557479898298 | 5.796635893956079 | [101996222.40274608 [s]] | fitsDuration: satisfied -24.02859113279122 | 11.302046019505394 | [119450473.22134095 [s]] | fitsDuration: satisfied -15.665260082426494 | 6.9568871095429525 | [104276363.18562715 [s]] | fitsDuration: satisfied -8.985645693504035 | 7.522667541519473 | [100847313.12192267 [s]] | fitsDuration: satisfied -15.197245332203844 | 0.30065646631876497 | [93529845.84097002 [s]] | fitsDuration: satisfied -8.836766257355773 | 4.933033399907805 | [98102137.62668294 [s]] | fitsDuration: satisfied -23.525178726180776 | 9.556716397358887 | [114958989.06311521 [s]] | fitsDuration: satisfied -22.09602435375927 | 9.936884039325497 | [114603252.04280399 [s]] | fitsDuration: satisfied -26.178431832627776 | 5.1154806334281 | [105953352.25323537 [s]] | fitsDuration: satisfied -8.924763160305387 | 2.4430943764063366 | [95574260.12302536 [s]] | fitsDuration: satisfied -27.57616319493221 | 5.905400191828791 | [108657912.18976194 [s]] | fitsDuration: satisfied -26.549520231505007 | 2.467913205166156 | [99357917.38048416 [s]] | fitsDuration: satisfied -28.808513831139987 | 5.092696748513052 | [107053173.45083626 [s]] | fitsDuration: satisfied -13.09481467735743 | 6.542245103950403 | [102154734.74393833 [s]] | fitsDuration: satisfied -6.488721832064902 | 11.658059633568875 | [102614716.45898145 [s]] | fitsDuration: satisfied -21.424798801201966 | 3.3393597793562684 | [100104200.79759961 [s]] | fitsDuration: satisfied -20.238782058147702 | 6.846266947113281 | [106803286.5528863 [s]] | fitsDuration: satisfied -3.833270432999092 | 8.977101206277013 | [98357172.88337508 [s]] | fitsDuration: satisfied -7.2309343188884405 | 0.7972348421715894 | [93761859.02936718 [s]] | fitsDuration: satisfied -4.941110568921559 | 8.636099919139772 | [98982472.50120471 [s]] | fitsDuration: satisfied -28.58170491178097 | 3.793617613059738 | [103408631.11517075 [s]] | fitsDuration: satisfied -16.155367438350744 | 10.131076635040802 | [109824313.52840514 [s]] | fitsDuration: satisfied -12.168291165849794 | 6.4578904088963025 | [101520467.11823799 [s]] | fitsDuration: satisfied -27.908032148901526 | 10.089935902385703 | [120001850.58295523 [s]] | fitsDuration: satisfied -2.34056436108868 | 0.3965921369706793 | [93240138.5499796 [s]] | fitsDuration: satisfied -10.432719083360709 | 6.349770891953709 | [100426602.21613473 [s]] | fitsDuration: satisfied -7.5640539543902054 | 1.6156136947134692 | [94531767.09081449 [s]] | fitsDuration: satisfied -8.47798986663312 | 9.40725851799839 | [102386303.62826546 [s]] | fitsDuration: satisfied -12.015739739010815 | 2.0929075258594856 | [95772395.44465254 [s]] | fitsDuration: satisfied -12.620277817146556 | 11.08218124915241 | [108013564.31214523 [s]] | fitsDuration: satisfied -4.641643562310754 | 7.704326252275552 | [98143830.10334389 [s]] | fitsDuration: satisfied -22.440495061211585 | 1.2592052737204682 | [95824948.31731616 [s]] | fitsDuration: satisfied -7.330680054592948 | 8.797731053348738 | [100909738.58172216 [s]] | fitsDuration: satisfied -3.6544556560143873 | 5.852596947305696 | [96422062.28660676 [s]] | fitsDuration: satisfied -13.590608900357378 | 6.127924609391432 | [101841083.56688444 [s]] | fitsDuration: satisfied -4.223644205577993 | 5.628414083816958 | [96569963.00970836 [s]] | fitsDuration: satisfied -11.19237493009372 | 0.734334800242141 | [93957598.01356287 [s]] | fitsDuration: satisfied -26.3625353804475 | 11.506331775217168 | [122247819.4985955 [s]] | fitsDuration: satisfied -15.275896064462604 | 5.279589425352645 | [101393810.38275097 [s]] | fitsDuration: satisfied -13.693105329498824 | 11.829732017379758 | [110118977.88546224 [s]] | fitsDuration: satisfied -22.196650217219478 | 5.703884578593637 | [105474444.10802059 [s]] | fitsDuration: satisfied -24.37462442858418 | 7.576201257465559 | [110976126.48924078 [s]] | fitsDuration: satisfied -23.904224732188645 | 1.029978382415392 | [95451351.63479422 [s]] | fitsDuration: satisfied -13.628114991886022 | 7.518002989317422 | [103858023.9718811 [s]] | fitsDuration: satisfied -10.284576142008593 | 1.7340859504059574 | [95047503.08544765 [s]] | fitsDuration: satisfied -11.34776323995109 | 1.0831334830770736 | [94399844.01358348 [s]] | fitsDuration: satisfied -13.668622754579015 | 9.551053348474062 | [106812272.1251266 [s]] | fitsDuration: satisfied -21.006917914837736 | 4.605030003622939 | [102608883.79610176 [s]] | fitsDuration: satisfied -20.333585112765764 | 11.501296827697836 | [116244005.71893728 [s]] | fitsDuration: satisfied -7.278474639160015 | 11.908738336803397 | [103632817.77224867 [s]] | fitsDuration: satisfied -20.127116812086193 | 0.2793689680154845 | [93615371.41064538 [s]] | fitsDuration: satisfied -28.770199582514735 | 10.163992362604876 | [120956743.61310923 [s]] | fitsDuration: satisfied -14.241886411465906 | 5.020550296775091 | [100536249.80406362 [s]] | fitsDuration: satisfied -28.17768448067475 | 8.619089001950606 | [116274828.83058459 [s]] | fitsDuration: satisfied -11.67987285406404 | 1.8566724413831488 | [95412034.9261108 [s]] | fitsDuration: satisfied -27.065810069345666 | 10.802288881878958 | [121118095.60634106 [s]] | fitsDuration: satisfied -2.2673215512782887 | 9.378064842607051 | [97325066.37397386 [s]] | fitsDuration: satisfied -7.3598237253679075 | 7.534276441269617 | [99800987.34973352 [s]] | fitsDuration: satisfied -24.249688425453613 | 9.983927855646447 | [116563032.09363222 [s]] | fitsDuration: satisfied -8.546657998296155 | 4.425102857407719 | [97471762.01771644 [s]] | fitsDuration: satisfied -8.88132818402861 | 10.403728902706135 | [103737055.26405732 [s]] | fitsDuration: satisfied -14.572668159706796 | 10.828672500678557 | [109498082.07338206 [s]] | fitsDuration: satisfied -14.317696321134893 | 4.306486047071013 | [99500716.39646998 [s]] | fitsDuration: satisfied -26.368520312359873 | 3.294704706811386 | [101417257.13993433 [s]] | fitsDuration: satisfied -11.501286500960001 | 7.4640706383466995 | [102408958.47270547 [s]] | fitsDuration: satisfied -24.82104422198986 | 2.618631374914956 | [99351645.44006008 [s]] | fitsDuration: satisfied -25.25854993566037 | 0.45948579026933256 | [94178993.46372163 [s]] | fitsDuration: satisfied -6.425249548460224 | 7.640152903344079 | [99278835.15953182 [s]] | fitsDuration: satisfied -13.784924139616255 | 7.536094261372588 | [103986116.48804569 [s]] | fitsDuration: satisfied -2.9883842185092324 | 4.002271869529395 | [95127902.16106808 [s]] | fitsDuration: satisfied -29.747899968582388 | 0.8011766512203726 | [95324005.2026703 [s]] | fitsDuration: satisfied -18.850745905982627 | 10.225211883213177 | [112361364.09648505 [s]] | fitsDuration: satisfied -6.707842433269241 | 1.0455428377688456 | [93934098.10495524 [s]] | fitsDuration: satisfied -5.597904438778367 | 5.435504958778498 | [97094954.58916752 [s]] | fitsDuration: satisfied -24.812748541891416 | 11.415560249610715 | [120488977.53582053 [s]] | fitsDuration: satisfied -26.42547763083584 | 4.825430479702573 | [105325128.66770853 [s]] | fitsDuration: satisfied -27.05932139525444 | 0.5796413314303783 | [94562542.32456143 [s]] | fitsDuration: satisfied -6.349904068377923 | 8.631492040338212 | [100029934.10585634 [s]] | fitsDuration: satisfied -24.562811553023884 | 6.015875203357414 | [107383508.26373804 [s]] | fitsDuration: satisfied -11.41074071991001 | 9.214387360855481 | [104529864.2318125 [s]] | fitsDuration: satisfied +2.8874363938772323 | 11.614956893728195 | [100357144.26992975 [s]] | fitsDuration: satisfied +12.602085766325853 | 6.271780608990385 | [102903398.84295091 [s]] | fitsDuration: satisfied +19.564175094534097 | 1.7376401565673345 | [97836519.03471364 [s]] | fitsDuration: satisfied +29.069305167286146 | 0.7276484890382378 | [96465071.50526045 [s]] | fitsDuration: satisfied +23.57021063886724 | 2.118953311964213 | [99313321.32398039 [s]] | fitsDuration: satisfied +7.5058858925376 | 2.395112655000672 | [96622976.04190256 [s]] | fitsDuration: satisfied +20.16986372315236 | 2.0341775966929023 | [98521083.59765637 [s]] | fitsDuration: satisfied +28.58264350391614 | 0.5273968431162941 | [95888040.90000373 [s]] | fitsDuration: satisfied +23.967049679123445 | 4.888556533937273 | [105839019.24103972 [s]] | fitsDuration: satisfied +20.697783740418636 | 10.471798995026813 | [115889800.0035341 [s]] | fitsDuration: satisfied +18.3089910218999 | 3.3148959932791375 | [100551956.31411022 [s]] | fitsDuration: satisfied +14.35824744989166 | 5.973785420308927 | [103408111.9225324 [s]] | fitsDuration: satisfied +23.497591106562037 | 6.798832529185871 | [110014103.75676034 [s]] | fitsDuration: satisfied +9.275251292839847 | 4.834729235829197 | [99576537.23657358 [s]] | fitsDuration: satisfied +16.474289299170426 | 2.9833123033042193 | [99468569.25310254 [s]] | fitsDuration: satisfied +29.657079694714827 | 6.105967772024078 | [111677337.60689712 [s]] | fitsDuration: satisfied +14.996235820068303 | 7.521434553858173 | [106143800.68653381 [s]] | fitsDuration: satisfied +26.781679863607067 | 11.345559419305852 | [123642592.14636463 [s]] | fitsDuration: satisfied +28.391368099009895 | 7.091057314004283 | [113681378.19470455 [s]] | fitsDuration: satisfied +5.321756527974327 | 3.4349540413501516 | [96918642.97316515 [s]] | fitsDuration: satisfied +14.848557479898298 | 5.796635893956079 | [103387993.11272779 [s]] | fitsDuration: satisfied +24.02859113279122 | 11.302046019505394 | [120842243.93132266 [s]] | fitsDuration: satisfied +15.665260082426494 | 6.9568871095429525 | [105668133.89560886 [s]] | fitsDuration: satisfied +8.985645693504035 | 7.522667541519473 | [102239083.83190438 [s]] | fitsDuration: satisfied +15.197245332203844 | 0.30065646631876497 | [94921616.55095173 [s]] | fitsDuration: satisfied +8.836766257355773 | 4.933033399907805 | [99493908.33666465 [s]] | fitsDuration: satisfied +23.525178726180776 | 9.556716397358887 | [116350759.77309692 [s]] | fitsDuration: satisfied +22.09602435375927 | 9.936884039325497 | [115995022.7527857 [s]] | fitsDuration: satisfied +26.178431832627776 | 5.1154806334281 | [107345122.96321708 [s]] | fitsDuration: satisfied +8.924763160305387 | 2.4430943764063366 | [96966030.83300707 [s]] | fitsDuration: satisfied +27.57616319493221 | 5.905400191828791 | [110049682.89974365 [s]] | fitsDuration: satisfied +26.549520231505007 | 2.467913205166156 | [100749688.09046587 [s]] | fitsDuration: satisfied +28.808513831139987 | 5.092696748513052 | [108444944.16081797 [s]] | fitsDuration: satisfied +13.09481467735743 | 6.542245103950403 | [103546505.45392004 [s]] | fitsDuration: satisfied +6.488721832064902 | 11.658059633568875 | [104006487.16896316 [s]] | fitsDuration: satisfied +21.424798801201966 | 3.3393597793562684 | [101495971.50758132 [s]] | fitsDuration: satisfied +20.238782058147702 | 6.846266947113281 | [108195057.26286802 [s]] | fitsDuration: satisfied +3.833270432999092 | 8.977101206277013 | [99748943.59335679 [s]] | fitsDuration: satisfied +7.2309343188884405 | 0.7972348421715894 | [95153629.73934889 [s]] | fitsDuration: satisfied +4.941110568921559 | 8.636099919139772 | [100374243.21118642 [s]] | fitsDuration: satisfied +28.58170491178097 | 3.793617613059738 | [104800401.82515246 [s]] | fitsDuration: satisfied +16.155367438350744 | 10.131076635040802 | [111216084.23838685 [s]] | fitsDuration: satisfied +12.168291165849794 | 6.4578904088963025 | [102912237.8282197 [s]] | fitsDuration: satisfied +27.908032148901526 | 10.089935902385703 | [121393621.29293694 [s]] | fitsDuration: satisfied +2.34056436108868 | 0.3965921369706793 | [94631909.2599613 [s]] | fitsDuration: satisfied +10.432719083360709 | 6.349770891953709 | [101818372.92611644 [s]] | fitsDuration: satisfied +7.5640539543902054 | 1.6156136947134692 | [95923537.8007962 [s]] | fitsDuration: satisfied +8.47798986663312 | 9.40725851799839 | [103778074.33824717 [s]] | fitsDuration: satisfied +12.015739739010815 | 2.0929075258594856 | [97164166.15463425 [s]] | fitsDuration: satisfied +12.620277817146556 | 11.08218124915241 | [109405335.02212694 [s]] | fitsDuration: satisfied +4.641643562310754 | 7.704326252275552 | [99535600.8133256 [s]] | fitsDuration: satisfied +22.440495061211585 | 1.2592052737204682 | [97216719.02729787 [s]] | fitsDuration: satisfied +7.330680054592948 | 8.797731053348738 | [102301509.29170386 [s]] | fitsDuration: satisfied +3.6544556560143873 | 5.852596947305696 | [97813832.99658847 [s]] | fitsDuration: satisfied +13.590608900357378 | 6.127924609391432 | [103232854.27686615 [s]] | fitsDuration: satisfied +4.223644205577993 | 5.628414083816958 | [97961733.71969007 [s]] | fitsDuration: satisfied +11.19237493009372 | 0.734334800242141 | [95349368.72354458 [s]] | fitsDuration: satisfied +26.3625353804475 | 11.506331775217168 | [123639590.20857722 [s]] | fitsDuration: satisfied +15.275896064462604 | 5.279589425352645 | [102785581.09273268 [s]] | fitsDuration: satisfied +13.693105329498824 | 11.829732017379758 | [111510748.59544395 [s]] | fitsDuration: satisfied +22.196650217219478 | 5.703884578593637 | [106866214.8180023 [s]] | fitsDuration: satisfied +24.37462442858418 | 7.576201257465559 | [112367897.19922249 [s]] | fitsDuration: satisfied +23.904224732188645 | 1.029978382415392 | [96843122.34477593 [s]] | fitsDuration: satisfied +13.628114991886022 | 7.518002989317422 | [105249794.68186282 [s]] | fitsDuration: satisfied +10.284576142008593 | 1.7340859504059574 | [96439273.79542936 [s]] | fitsDuration: satisfied +11.34776323995109 | 1.0831334830770736 | [95791614.72356519 [s]] | fitsDuration: satisfied +13.668622754579015 | 9.551053348474062 | [108204042.83510831 [s]] | fitsDuration: satisfied +21.006917914837736 | 4.605030003622939 | [104000654.50608347 [s]] | fitsDuration: satisfied +20.333585112765764 | 11.501296827697836 | [117635776.42891899 [s]] | fitsDuration: satisfied +7.278474639160015 | 11.908738336803397 | [105024588.48223038 [s]] | fitsDuration: satisfied +20.127116812086193 | 0.2793689680154845 | [95007142.12062709 [s]] | fitsDuration: satisfied +28.770199582514735 | 10.163992362604876 | [122348514.32309094 [s]] | fitsDuration: satisfied +14.241886411465906 | 5.020550296775091 | [101928020.51404533 [s]] | fitsDuration: satisfied +28.17768448067475 | 8.619089001950606 | [117666599.5405663 [s]] | fitsDuration: satisfied +11.67987285406404 | 1.8566724413831488 | [96803805.63609251 [s]] | fitsDuration: satisfied +27.065810069345666 | 10.802288881878958 | [122509866.31632277 [s]] | fitsDuration: satisfied +2.2673215512782887 | 9.378064842607051 | [98716837.08395557 [s]] | fitsDuration: satisfied +7.3598237253679075 | 7.534276441269617 | [101192758.05971523 [s]] | fitsDuration: satisfied +24.249688425453613 | 9.983927855646447 | [117954802.80361393 [s]] | fitsDuration: satisfied +8.546657998296155 | 4.425102857407719 | [98863532.72769815 [s]] | fitsDuration: satisfied +8.88132818402861 | 10.403728902706135 | [105128825.97403903 [s]] | fitsDuration: satisfied +14.572668159706796 | 10.828672500678557 | [110889852.78336377 [s]] | fitsDuration: satisfied +14.317696321134893 | 4.306486047071013 | [100892487.10645169 [s]] | fitsDuration: satisfied +26.368520312359873 | 3.294704706811386 | [102809027.84991604 [s]] | fitsDuration: satisfied +11.501286500960001 | 7.4640706383466995 | [103800729.18268718 [s]] | fitsDuration: satisfied +24.82104422198986 | 2.618631374914956 | [100743416.15004179 [s]] | fitsDuration: satisfied +25.25854993566037 | 0.45948579026933256 | [95570764.17370334 [s]] | fitsDuration: satisfied +6.425249548460224 | 7.640152903344079 | [100670605.86951353 [s]] | fitsDuration: satisfied +13.784924139616255 | 7.536094261372588 | [105377887.1980274 [s]] | fitsDuration: satisfied +2.9883842185092324 | 4.002271869529395 | [96519672.87104979 [s]] | fitsDuration: satisfied +29.747899968582388 | 0.8011766512203726 | [96715775.91265202 [s]] | fitsDuration: satisfied +18.850745905982627 | 10.225211883213177 | [113753134.80646676 [s]] | fitsDuration: satisfied +6.707842433269241 | 1.0455428377688456 | [95325868.81493695 [s]] | fitsDuration: satisfied +5.597904438778367 | 5.435504958778498 | [98486725.29914923 [s]] | fitsDuration: satisfied +24.812748541891416 | 11.415560249610715 | [121880748.24580224 [s]] | fitsDuration: satisfied +26.42547763083584 | 4.825430479702573 | [106716899.37769024 [s]] | fitsDuration: satisfied +27.05932139525444 | 0.5796413314303783 | [95954313.03454314 [s]] | fitsDuration: satisfied +6.349904068377923 | 8.631492040338212 | [101421704.81583805 [s]] | fitsDuration: satisfied +24.562811553023884 | 6.015875203357414 | [108775278.97371975 [s]] | fitsDuration: satisfied +11.41074071991001 | 9.214387360855481 | [105921634.94179422 [s]] | fitsDuration: satisfied standing: table (observed: 100 rows) diff --git a/runs/montecarlo-return.txt b/runs/montecarlo-return.txt index e07cabb..20d9a92 100644 --- a/runs/montecarlo-return.txt +++ b/runs/montecarlo-return.txt @@ -51,104 +51,104 @@ samples TethysMonteCarlo::returnDispersion — 100 run(s), seed 7 bodyMassKg | returnDeltaV | totalThrustTime | verdict -------------------+------------------------------+--------------------------+-------------------------- -228596.79332047616 | [463.88153865141277 ['m/s']] | [610.9891131610132 [d]] | canReturn: satisfied -630234.708950783 | [172.558860942655 ['m/s']] | [1201.2716562550963 [d]] | canReturn: not satisfied -377439.0997769211 | [285.35152109800106 ['m/s']] | [829.7409086363443 [d]] | canReturn: satisfied -439216.1567714063 | [246.0487350095254 ['m/s']] | [920.5339261490097 [d]] | canReturn: satisfied -484108.25412696885 | [223.6626282061764 ['m/s']] | [986.5113161329274 [d]] | canReturn: satisfied -277120.6355972822 | [385.29392777760256 ['m/s']] | [682.3040361430702 [d]] | canReturn: satisfied -629740.425598777 | [172.6923295971914 ['m/s']] | [1200.545213798653 [d]] | canReturn: not satisfied -241013.433483117 | [440.87116439738287 ['m/s']] | [629.2377038608865 [d]] | canReturn: satisfied -545486.441574073 | [198.9182899773168 ['m/s']] | [1076.7181197409086 [d]] | canReturn: not satisfied -290752.5809027206 | [367.78952304070225 ['m/s']] | [702.3387465851499 [d]] | canReturn: satisfied -299358.0374249511 | [357.53559902392 ['m/s']] | [714.9860853018048 [d]] | canReturn: satisfied -300625.277416274 | [356.07370660347505 ['m/s']] | [716.848533082948 [d]] | canReturn: satisfied -493388.2691868701 | [219.53370167963737 ['m/s']] | [1000.1500456361251 [d]] | canReturn: satisfied -287721.8490817713 | [371.5423012327105 ['m/s']] | [697.884515505152 [d]] | canReturn: satisfied -622284.0736850009 | [174.73107310872444 ['m/s']] | [1189.586700673813 [d]] | canReturn: not satisfied -233854.4371414075 | [453.8512629200577 ['m/s']] | [618.7162107395169 [d]] | canReturn: satisfied -551566.5825837129 | [196.7619222224596 ['m/s']] | [1085.6540318096397 [d]] | canReturn: not satisfied -389765.89608825755 | [276.5373910048547 ['m/s']] | [847.857456879653 [d]] | canReturn: satisfied -501476.7580228427 | [216.05728929367817 ['m/s']] | [1012.0376029958261 [d]] | canReturn: satisfied -589366.8140722085 | [184.33840364562607 ['m/s']] | [1141.2085895449516 [d]] | canReturn: not satisfied -464877.04101410916 | [232.7335860243564 ['m/s']] | [958.2474273383942 [d]] | canReturn: satisfied -333507.53175972914 | [321.91940368695595 ['m/s']] | [765.1751973772303 [d]] | canReturn: satisfied -404346.00557155436 | [266.79020008451846 ['m/s']] | [869.2856731148764 [d]] | canReturn: satisfied -428562.82877604413 | [252.03508160759142 ['m/s']] | [904.8768547003418 [d]] | canReturn: satisfied -544373.8065969683 | [199.31802059774338 ['m/s']] | [1075.0828931393808 [d]] | canReturn: not satisfied -458058.2629183949 | [236.1291295061802 ['m/s']] | [948.2259489906246 [d]] | canReturn: satisfied -326467.24302243907 | [328.6692373299603 ['m/s']] | [754.8281674325042 [d]] | canReturn: satisfied -387841.5701808938 | [277.8773165757987 ['m/s']] | [845.0292976194451 [d]] | canReturn: satisfied -436766.78961943265 | [247.39977655836657 ['m/s']] | [916.9341199176455 [d]] | canReturn: satisfied -321653.41484312585 | [333.44977368575206 ['m/s']] | [747.7533405072533 [d]] | canReturn: satisfied -638745.9710368807 | [170.2925481999348 ['m/s']] | [1213.7805585115916 [d]] | canReturn: not satisfied -433288.3478498608 | [249.34414077853862 ['m/s']] | [911.8218947669765 [d]] | canReturn: satisfied -414120.89881461795 | [260.63129901473235 ['m/s']] | [883.6517192909047 [d]] | canReturn: satisfied -483891.2853004297 | [223.76102231428317 ['m/s']] | [986.1924395883644 [d]] | canReturn: satisfied -594690.7379102653 | [182.71355992986946 ['m/s']] | [1149.0330980887616 [d]] | canReturn: not satisfied -620603.7492401842 | [175.1971777393457 ['m/s']] | [1187.1171475068693 [d]] | canReturn: not satisfied -619353.4612312587 | [175.5456114590369 ['m/s']] | [1185.2796138558183 [d]] | canReturn: not satisfied -468505.29897565313 | [230.96632806692028 ['m/s']] | [963.5798355926809 [d]] | canReturn: satisfied -265894.0553750352 | [401.01186076215305 ['m/s']] | [665.8044626069465 [d]] | canReturn: satisfied -337799.6069782679 | [317.9387520131046 ['m/s']] | [771.4832100835861 [d]] | canReturn: satisfied -411858.25567415607 | [262.0315015049323 ['m/s']] | [880.3263391534988 [d]] | canReturn: satisfied -422229.7332089298 | [255.73387292783977 ['m/s']] | [895.5691782795352 [d]] | canReturn: satisfied -552509.4855702654 | [196.43169489197768 ['m/s']] | [1087.0398052915077 [d]] | canReturn: not satisfied -619048.1451973178 | [175.6309084221025 ['m/s']] | [1184.830894454715 [d]] | canReturn: not satisfied -424371.3062628916 | [254.47101632794656 ['m/s']] | [898.7166231280388 [d]] | canReturn: satisfied -463708.71416616056 | [233.30842727598505 ['m/s']] | [956.5303510462073 [d]] | canReturn: satisfied -322030.07151832967 | [333.07071263348763 ['m/s']] | [748.3069084137188 [d]] | canReturn: satisfied -483935.3646093212 | [223.7410255958559 ['m/s']] | [986.2572224326572 [d]] | canReturn: satisfied -417200.65169698035 | [258.7493133331231 ['m/s']] | [888.1779960510291 [d]] | canReturn: satisfied -225748.46867089585 | [469.5028312388008 ['m/s']] | [606.8029637655477 [d]] | canReturn: satisfied -319749.02587162954 | [335.37960518340316 ['m/s']] | [744.9544823283111 [d]] | canReturn: satisfied -391355.94404670404 | [275.4399376842526 ['m/s']] | [850.1943317513404 [d]] | canReturn: satisfied -544796.4883404126 | [199.165976825828 ['m/s']] | [1075.7041035498776 [d]] | canReturn: not satisfied -556652.6112055802 | [194.99371226016842 ['m/s']] | [1093.1289085389785 [d]] | canReturn: not satisfied -522899.8017058117 | [207.36029172473027 ['m/s']] | [1043.5227995220384 [d]] | canReturn: satisfied -570243.6044058865 | [190.42093744391207 ['m/s']] | [1113.1034321515242 [d]] | canReturn: not satisfied -585448.1162927613 | [185.55296279308703 ['m/s']] | [1135.4493252901336 [d]] | canReturn: not satisfied -397878.43264505453 | [271.02779983779743 ['m/s']] | [859.7803568931511 [d]] | canReturn: satisfied -321097.264134679 | [334.01105476030455 ['m/s']] | [746.9359723212582 [d]] | canReturn: satisfied -302340.6239565265 | [354.113815499187 ['m/s']] | [719.3695578135909 [d]] | canReturn: satisfied -606863.3575223542 | [179.10400834921134 ['m/s']] | [1166.9230546419535 [d]] | canReturn: not satisfied -426118.0568578793 | [253.45017941493703 ['m/s']] | [901.2838020303152 [d]] | canReturn: satisfied -591133.7206898446 | [183.79595511465914 ['m/s']] | [1143.8053915177713 [d]] | canReturn: not satisfied -303227.89708469005 | [353.10849251925464 ['m/s']] | [720.6735727437785 [d]] | canReturn: satisfied -625744.7297699662 | [173.77889404934322 ['m/s']] | [1194.672786412012 [d]] | canReturn: not satisfied -397063.9087593416 | [271.57104525804664 ['m/s']] | [858.5832606730022 [d]] | canReturn: satisfied -384988.41059236915 | [279.88806936329803 ['m/s']] | [840.83604237081 [d]] | canReturn: satisfied -448885.26246622694 | [240.8564323739502 ['m/s']] | [934.7444976037172 [d]] | canReturn: satisfied -283773.6309269944 | [376.5475672792482 ['m/s']] | [692.0818655002724 [d]] | canReturn: satisfied -631775.6319000872 | [172.14409479828788 ['m/s']] | [1203.5363326758966 [d]] | canReturn: not satisfied -512615.6673469873 | [211.4461829539398 ['m/s']] | [1028.40832763927 [d]] | canReturn: satisfied -334382.1121119866 | [321.1002153777111 ['m/s']] | [766.4605578832486 [d]] | canReturn: satisfied -494444.196533763 | [219.07353099260902 ['m/s']] | [1001.7019296973409 [d]] | canReturn: satisfied -459754.0433592998 | [235.275459629637 ['m/s']] | [950.718217654094 [d]] | canReturn: satisfied -243088.32199130752 | [437.2467874022582 ['m/s']] | [632.2871432130685 [d]] | canReturn: satisfied -535931.3681244032 | [202.40424531224062 ['m/s']] | [1062.6751401420563 [d]] | canReturn: satisfied -295145.3865286836 | [362.48280072121696 ['m/s']] | [708.7948015921631 [d]] | canReturn: satisfied -243501.14560763433 | [436.5327709698536 ['m/s']] | [632.8938652495382 [d]] | canReturn: satisfied -260062.0155024053 | [409.6941953337031 ['m/s']] | [657.2331818750476 [d]] | canReturn: satisfied -523740.57210924686 | [207.03322479750884 ['m/s']] | [1044.7584699420463 [d]] | canReturn: satisfied -622269.6931126441 | [174.7350516087655 ['m/s']] | [1189.5655657149568 [d]] | canReturn: not satisfied -350621.82966688566 | [306.6123382681683 ['m/s']] | [790.3278806742048 [d]] | canReturn: satisfied -431880.4511090168 | [250.13983696516985 ['m/s']] | [909.752725407567 [d]] | canReturn: satisfied -577185.9897027087 | [188.1669063010373 ['m/s']] | [1123.3065745558363 [d]] | canReturn: not satisfied -370792.7467910558 | [290.3411418218122 ['m/s']] | [819.9728414541396 [d]] | canReturn: satisfied -445869.58211804286 | [242.4521789160044 ['m/s']] | [930.3123874970521 [d]] | canReturn: satisfied -611948.0639956698 | [177.63812152669846 ['m/s']] | [1174.3959882250429 [d]] | canReturn: not satisfied -575715.2085102889 | [188.6399685240848 ['m/s']] | [1121.144984654061 [d]] | canReturn: not satisfied -220217.93253239442 | [480.81604933490024 ['m/s']] | [598.6747995423439 [d]] | canReturn: satisfied -229178.1688967018 | [462.7506699459574 ['m/s']] | [611.8435540399046 [d]] | canReturn: satisfied -344201.3030986337 | [312.1811545762287 ['m/s']] | [780.8917079344794 [d]] | canReturn: satisfied -442004.3093873451 | [244.52867122777974 ['m/s']] | [924.6316414109963 [d]] | canReturn: satisfied -300249.2552297642 | [356.5062382039009 ['m/s']] | [716.2958976770888 [d]] | canReturn: satisfied -272758.1895860065 | [391.2529952535182 ['m/s']] | [675.8926003063781 [d]] | canReturn: satisfied -314252.05902805744 | [341.077435698074 ['m/s']] | [736.8756545049083 [d]] | canReturn: satisfied -551309.4920184424 | [196.852154257696 ['m/s']] | [1085.2761888153218 [d]] | canReturn: not satisfied -368455.4410012729 | [292.13755800073926 ['m/s']] | [816.5377304950152 [d]] | canReturn: satisfied -289821.44404947665 | [368.9344024585157 ['m/s']] | [700.970265651673 [d]] | canReturn: satisfied -377717.8279841383 | [285.1460154728628 ['m/s']] | [830.1505522197444 [d]] | canReturn: satisfied -611187.9796571987 | [177.85572151256954 ['m/s']] | [1173.2789011702146 [d]] | canReturn: not satisfied +228596.79332047616 | [463.88153865141277 ['m/s']] | [623.1842547930554 [d]] | canReturn: satisfied +630234.708950783 | [172.558860942655 ['m/s']] | [1225.248643194843 [d]] | canReturn: not satisfied +377439.0997769211 | [285.35152109800106 ['m/s']] | [846.3022641183906 [d]] | canReturn: satisfied +439216.1567714063 | [246.0487350095254 ['m/s']] | [938.9074803820928 [d]] | canReturn: satisfied +484108.25412696885 | [223.6626282061764 ['m/s']] | [1006.2017573579957 [d]] | canReturn: satisfied +277120.6355972822 | [385.29392777760256 ['m/s']] | [695.9226001692448 [d]] | canReturn: satisfied +629740.425598777 | [172.6923295971914 ['m/s']] | [1224.5077011860296 [d]] | canReturn: not satisfied +241013.433483117 | [440.87116439738287 ['m/s']] | [641.7970813579817 [d]] | canReturn: satisfied +545486.441574073 | [198.9182899773168 ['m/s']] | [1098.2090590803896 [d]] | canReturn: not satisfied +290752.5809027206 | [367.78952304070225 ['m/s']] | [716.3571968386486 [d]] | canReturn: satisfied +299358.0374249511 | [357.53559902392 ['m/s']] | [729.256972274053 [d]] | canReturn: satisfied +300625.277416274 | [356.07370660347505 ['m/s']] | [731.1565939000064 [d]] | canReturn: satisfied +493388.2691868701 | [219.53370167963737 ['m/s']] | [1020.1127114137915 [d]] | canReturn: satisfied +287721.8490817713 | [371.5423012327105 ['m/s']] | [711.8140607721095 [d]] | canReturn: satisfied +622284.0736850009 | [174.73107310872444 ['m/s']] | [1213.3304597454874 [d]] | canReturn: not satisfied +233854.4371414075 | [453.8512629200577 ['m/s']] | [631.0655826963631 [d]] | canReturn: satisfied +551566.5825837129 | [196.7619222224596 ['m/s']] | [1107.3233290133483 [d]] | canReturn: not satisfied +389765.89608825755 | [276.5373910048547 ['m/s']] | [864.7804127027722 [d]] | canReturn: satisfied +501476.7580228427 | [216.05728929367817 ['m/s']] | [1032.237540506389 [d]] | canReturn: satisfied +589366.8140722085 | [184.33840364562607 ['m/s']] | [1163.9867374389491 [d]] | canReturn: not satisfied +464877.04101410916 | [232.7335860243564 ['m/s']] | [977.373730644313 [d]] | canReturn: satisfied +333507.53175972914 | [321.91940368695595 ['m/s']] | [780.4478425100777 [d]] | canReturn: satisfied +404346.00557155436 | [266.79020008451846 ['m/s']] | [886.6363290823707 [d]] | canReturn: satisfied +428562.82877604413 | [252.03508160759142 ['m/s']] | [922.9378989397987 [d]] | canReturn: satisfied +544373.8065969683 | [199.31802059774338 ['m/s']] | [1096.5411938940222 [d]] | canReturn: not satisfied +458058.2629183949 | [236.1291295061802 ['m/s']] | [967.1522268866286 [d]] | canReturn: satisfied +326467.24302243907 | [328.6692373299603 ['m/s']] | [769.8942892526953 [d]] | canReturn: satisfied +387841.5701808938 | [277.8773165757987 ['m/s']] | [861.895804314432 [d]] | canReturn: satisfied +436766.78961943265 | [247.39977655836657 ['m/s']] | [935.2358232029886 [d]] | canReturn: satisfied +321653.41484312585 | [333.44977368575206 ['m/s']] | [762.6782511102276 [d]] | canReturn: satisfied +638745.9710368807 | [170.2925481999348 ['m/s']] | [1238.0072190239 [d]] | canReturn: not satisfied +433288.3478498608 | [249.34414077853862 ['m/s']] | [930.0215597206629 [d]] | canReturn: satisfied +414120.89881461795 | [260.63129901473235 ['m/s']] | [901.2891168124387 [d]] | canReturn: satisfied +483891.2853004297 | [223.76102231428317 ['m/s']] | [1005.8765161425404 [d]] | canReturn: satisfied +594690.7379102653 | [182.71355992986946 ['m/s']] | [1171.967420598374 [d]] | canReturn: not satisfied +620603.7492401842 | [175.1971777393457 ['m/s']] | [1210.8116151100214 [d]] | canReturn: not satisfied +619353.4612312587 | [175.5456114590369 ['m/s']] | [1208.9374048919983 [d]] | canReturn: not satisfied +468505.29897565313 | [230.96632806692028 ['m/s']] | [982.8125720125458 [d]] | canReturn: satisfied +265894.0553750352 | [401.01186076215305 ['m/s']] | [679.0937005750833 [d]] | canReturn: satisfied +337799.6069782679 | [317.9387520131046 ['m/s']] | [786.8817610741871 [d]] | canReturn: satisfied +411858.25567415607 | [262.0315015049323 ['m/s']] | [897.8973631818191 [d]] | canReturn: satisfied +422229.7332089298 | [255.73387292783977 ['m/s']] | [913.444444360639 [d]] | canReturn: satisfied +552509.4855702654 | [196.43169489197768 ['m/s']] | [1108.7367620778787 [d]] | canReturn: not satisfied +619048.1451973178 | [175.6309084221025 ['m/s']] | [1208.4797291993152 [d]] | canReturn: not satisfied +424371.3062628916 | [254.47101632794656 ['m/s']] | [916.6547111725453 [d]] | canReturn: satisfied +463708.71416616056 | [233.30842727598505 ['m/s']] | [975.6223820743962 [d]] | canReturn: satisfied +322030.07151832967 | [333.07071263348763 ['m/s']] | [763.2428680499361 [d]] | canReturn: satisfied +483935.3646093212 | [223.7410255958559 ['m/s']] | [1005.9425920310861 [d]] | canReturn: satisfied +417200.65169698035 | [258.7493133331231 ['m/s']] | [905.9057365671705 [d]] | canReturn: satisfied +225748.46867089585 | [469.5028312388008 ['m/s']] | [618.9145512332507 [d]] | canReturn: satisfied +319749.02587162954 | [335.37960518340316 ['m/s']] | [759.8235286430928 [d]] | canReturn: satisfied +391355.94404670404 | [275.4399376842526 ['m/s']] | [867.1639308278707 [d]] | canReturn: satisfied +544796.4883404126 | [199.165976825828 ['m/s']] | [1097.174803459882 [d]] | canReturn: not satisfied +556652.6112055802 | [194.99371226016842 ['m/s']] | [1114.9474018223434 [d]] | canReturn: not satisfied +522899.8017058117 | [207.36029172473027 ['m/s']] | [1064.3511711939948 [d]] | canReturn: satisfied +570243.6044058865 | [190.42093744391207 ['m/s']] | [1135.3206103529023 [d]] | canReturn: not satisfied +585448.1162927613 | [185.55296279308703 ['m/s']] | [1158.1125201648858 [d]] | canReturn: not satisfied +397878.43264505453 | [271.02779983779743 ['m/s']] | [876.9412898769058 [d]] | canReturn: satisfied +321097.264134679 | [334.01105476030455 ['m/s']] | [761.8445685242227 [d]] | canReturn: satisfied +302340.6239565265 | [354.113815499187 ['m/s']] | [733.7279374546443 [d]] | canReturn: satisfied +606863.3575223542 | [179.10400834921134 ['m/s']] | [1190.214454797072 [d]] | canReturn: not satisfied +426118.0568578793 | [253.45017941493703 ['m/s']] | [919.273130120894 [d]] | canReturn: satisfied +591133.7206898446 | [183.79595511465914 ['m/s']] | [1166.6353707245808 [d]] | canReturn: not satisfied +303227.89708469005 | [353.10849251925464 ['m/s']] | [735.0579800937084 [d]] | canReturn: satisfied +625744.7297699662 | [173.77889404934322 ['m/s']] | [1218.5180620812723 [d]] | canReturn: not satisfied +397063.9087593416 | [271.57104525804664 ['m/s']] | [875.7203000101478 [d]] | canReturn: satisfied +384988.41059236915 | [279.88806936329803 ['m/s']] | [857.6188530709668 [d]] | canReturn: satisfied +448885.26246622694 | [240.8564323739502 ['m/s']] | [953.4016901665665 [d]] | canReturn: satisfied +283773.6309269944 | [376.5475672792482 ['m/s']] | [705.895591782691 [d]] | canReturn: satisfied +631775.6319000872 | [172.14409479828788 ['m/s']] | [1227.558521811734 [d]] | canReturn: not satisfied +512615.6673469873 | [211.4461829539398 ['m/s']] | [1048.935019426375 [d]] | canReturn: satisfied +334382.1121119866 | [321.1002153777111 ['m/s']] | [781.7588583888047 [d]] | canReturn: satisfied +494444.196533763 | [219.07353099260902 ['m/s']] | [1021.6955705701693 [d]] | canReturn: satisfied +459754.0433592998 | [235.275459629637 ['m/s']] | [969.6942404124555 [d]] | canReturn: satisfied +243088.32199130752 | [437.2467874022582 ['m/s']] | [644.907386516112 [d]] | canReturn: satisfied +535931.3681244032 | [202.40424531224062 ['m/s']] | [1083.8857862300622 [d]] | canReturn: satisfied +295145.3865286836 | [362.48280072121696 ['m/s']] | [722.9421125790184 [d]] | canReturn: satisfied +243501.14560763433 | [436.5327709698536 ['m/s']] | [645.5262185247672 [d]] | canReturn: satisfied +260062.0155024053 | [409.6941953337031 ['m/s']] | [670.3513399004457 [d]] | canReturn: satisfied +523740.57210924686 | [207.03322479750884 ['m/s']] | [1065.611505188947 [d]] | canReturn: satisfied +622269.6931126441 | [174.7350516087655 ['m/s']] | [1213.3089029398077 [d]] | canReturn: not satisfied +350621.82966688566 | [306.6123382681683 ['m/s']] | [806.1025650883179 [d]] | canReturn: satisfied +431880.4511090168 | [250.13983696516985 ['m/s']] | [927.9110904217699 [d]] | canReturn: satisfied +577185.9897027087 | [188.1669063010373 ['m/s']] | [1145.727404121915 [d]] | canReturn: not satisfied +370792.7467910558 | [290.3411418218122 ['m/s']] | [836.3392295297422 [d]] | canReturn: satisfied +445869.58211804286 | [242.4521789160044 ['m/s']] | [948.8811166007083 [d]] | canReturn: satisfied +611948.0639956698 | [177.63812152669846 ['m/s']] | [1197.8365456752579 [d]] | canReturn: not satisfied +575715.2085102889 | [188.6399685240848 ['m/s']] | [1143.5226695970448 [d]] | canReturn: not satisfied +220217.93253239442 | [480.81604933490024 ['m/s']] | [610.6241515269993 [d]] | canReturn: satisfied +229178.1688967018 | [462.7506699459574 ['m/s']] | [624.0557500307068 [d]] | canReturn: satisfied +344201.3030986337 | [312.1811545762287 ['m/s']] | [796.4780494459997 [d]] | canReturn: satisfied +442004.3093873451 | [244.52867122777974 ['m/s']] | [943.0869846922167 [d]] | canReturn: satisfied +300249.2552297642 | [356.5062382039009 ['m/s']] | [730.5929280733095 [d]] | canReturn: satisfied +272758.1895860065 | [391.2529952535182 ['m/s']] | [689.3831941831522 [d]] | canReturn: satisfied +314252.05902805744 | [341.077435698074 ['m/s']] | [751.5834500749468 [d]] | canReturn: satisfied +551309.4920184424 | [196.852154257696 ['m/s']] | [1106.9379443972057 [d]] | canReturn: not satisfied +368455.4410012729 | [292.13755800073926 ['m/s']] | [832.8355548863133 [d]] | canReturn: satisfied +289821.44404947665 | [368.9344024585157 ['m/s']] | [714.9614014760845 [d]] | canReturn: satisfied +377717.8279841383 | [285.1460154728628 ['m/s']] | [846.7200840529082 [d]] | canReturn: satisfied +611187.9796571987 | [177.85572151256954 ['m/s']] | [1196.6971619304306 [d]] | canReturn: not satisfied standing: table (observed: 100 rows) diff --git a/runs/notation-readiness.txt b/runs/notation-readiness.txt index 9bf8309..4677186 100644 --- a/runs/notation-readiness.txt +++ b/runs/notation-readiness.txt @@ -51,7 +51,6 @@ ✓ Created instance of TethysNotation::baselineReadiness ID: 1 Use %features TethysNotation::baselineReadiness to inspect -error: feature value baselineReadiness.bodyCount: usage captureOperation: performed action capture of object #207: invoke action CommitDecision: initialize action: initialize attributes: eval attribute default go: type mismatch: operator '<=' is not defined for a sequence and a quantity; DataFunctions::'<=' takes one DataValue per operand ✓ assert constraint inspectorDecisionIsExclusive holds (on TethysNotation::baselineReadiness ID: 1) ✓ assert constraint carriedMeansLifted holds (on TethysNotation::baselineReadiness ID: 1) ✓ assert constraint spareIsReal holds (on TethysNotation::baselineReadiness ID: 1) @@ -84,4 +83,3 @@ error: feature value baselineReadiness.bodyCount: usage captureOperation: perfor ✓ TethysNotation::VolumeScale(1.2059) = [1.7536135213789998] standing: value (observed: 1 run under reverse) -exit 2 diff --git a/runs/probe-F-C05.txt b/runs/probe-F-C05.txt new file mode 100644 index 0000000..a41f2ed --- /dev/null +++ b/runs/probe-F-C05.txt @@ -0,0 +1,11 @@ +✓ package 'F-C05' +✓ Created instance of 'F-C05'::operation + ID: 1 + Use %features 'F-C05'::operation to inspect +error: in run: feature value check.go: type mismatch: operator '<=' is not defined for a Rational and a sequence; DataFunctions::'<=' takes one DataValue per operand +✓ 'F-C05'::operation.run.system.limit + = [200.0] +✓ 'F-C05'::operation.run.check.mechanism.limit + = [] +sysml: 'F-C05'::operation.run.check.go: evaluation failed: feature value check.go: type mismatch: operator '<=' is not defined for a Rational and a sequence; DataFunctions::'<=' takes one DataValue per operand +exit 2 diff --git a/runs/probe-F-F02.txt b/runs/probe-F-F02.txt index 240f4c6..524eb08 100644 --- a/runs/probe-F-F02.txt +++ b/runs/probe-F-F02.txt @@ -1,5 +1,60 @@ -model/probes/F-F02-variant-as-subject.sysml:14:59: error[unresolved]: unresolved reference: largeTarget — did you mean TethysModes::largeTarget? To use the bare name, import its package: private import TethysModes::*; - analysis viaPlainPart : BodyMass { subject :>> body = largeTarget; } - ^~~~~~~~~~~ -sysml: model/00-tethys.sysml, model/01-environment.sysml, model/02-mission.sysml, model/03-interfaces.sysml, model/04-requirements.sysml, model/05-tug.sysml, model/06-inspector.sysml, model/07-target.sysml, model/08-launch.sysml, model/09-ground.sysml, model/10-system.sysml, model/20-stakeholders.sysml, model/21-requirements-l2.sysml, model/22-requirements-l3-l4.sysml, model/23-verification.sysml, model/24-verification-tooling.sysml, model/30-margin-policy.sysml, model/31-tug-structure.sysml, model/32-budgets.sysml, model/40-inspector.sysml, model/41-capture-system.sysml, model/42-proximity-ops.sysml, model/50-ground.sysml, model/51-icds.sysml, model/52-link-budgets.sysml, model/53-operations.sysml, model/54-icds-tooling.sysml, model/60-modes.sysml, model/61-sequence.sysml, model/62-fdir.sysml, model/70-analyses.sysml, model/71-trades.sysml, model/72-montecarlo.sysml, model/73-dynamics.sysml, model/74-analyses-tooling.sysml, model/80-variants.sysml, model/81-physics.kerml, model/82-notation-sweep.sysml, model/85-safety.sysml, model/86-risk.sysml, model/87-allocations-tooling.sysml, model/87-allocations.sysml, model/90-views.sysml, model/91-documents.sysml, model/92-layout.sysml, model/93-views-tooling.sysml, model/95-as-built.sysml, model/96-imported-data.sysml, model/97-disposal.sysml, model/99-house-rules.sysml, model/probes/F-F02-variant-as-subject.sysml did not analyse cleanly; no check was made -exit 2 +✓ package Tethys +✓ package TethysEnvironment +✓ package TethysMission +✓ package TethysInterfaces +✓ package TethysRequirements +✓ package TethysTug +✓ package TethysInspector +✓ package TethysTarget +✓ package TethysLaunch +✓ package TethysGround +✓ package TethysSystem +✓ package TethysStakeholders +✓ package TethysRequirementsL2 +✓ package TethysRequirementsL3L4 +✓ package TethysVerification +✓ package TethysVerificationTooling +✓ package TethysMarginPolicy +✓ package TethysTugStructure +✓ package TethysBudgets +✓ package TethysInspectorDetail +✓ package TethysCaptureSystem +✓ package TethysProximityOps +✓ package TethysMeridian +✓ package TethysIcds +✓ package TethysLinkBudgets +✓ package TethysOperations +✓ package TethysIcdDocuments +✓ package TethysModes +✓ package TethysSequence +✓ package TethysFdir +✓ package TethysAnalyses +✓ package TethysTrades +✓ package TethysMonteCarlo +✓ package TethysDynamics +✓ package TethysAnalysesTooling +✓ package TethysVariants +✓ package TethysPhysics +✓ package TethysNotation +✓ package TethysSafety +✓ package TethysRisk +✓ package TethysAllocationQueries +✓ package TethysAllocations +✓ package TethysViews +✓ package TethysDocuments +✓ package TethysLayout +✓ package TethysViewsTooling +✓ package TethysAsBuilt +✓ package TethysImportedData +✓ package TethysDisposal +✓ package TethysHouseRules +✓ package TethysVariantSubjectProbe +✓ TethysVariantSubjectProbe::viaVariant + massKg = [505664.0514574849] + standing: value (observed: 1 run under reverse) +✓ TethysVariantSubjectProbe::viaConfiguration + massKg = [505664.0514574849] + standing: value (observed: 1 run under reverse) +✓ TethysVariantSubjectProbe::viaPlainPart + massKg = [505664.0514574849] + standing: value (observed: 1 run under reverse) diff --git a/runs/probe-F-F03.txt b/runs/probe-F-F03.txt index 94b26a3..cbdfa64 100644 --- a/runs/probe-F-F03.txt +++ b/runs/probe-F-F03.txt @@ -49,9 +49,9 @@ ✓ package TethysDisposal ✓ package TethysHouseRules ✓ package TethysMetadataInBodyProbe -sysml: analysis run failed: analysis TethysMetadataInBodyProbe::inline: statement not executable: calculation body: `then` statement in a body is not executable - standing: not covered (analysis TethysMetadataInBodyProbe::inline: statement not executable: calculation body: `then` statement in a body is not executable) +✓ TethysMetadataInBodyProbe::inline + dryMassKg = [5600.0] + standing: value (observed: 1 run under reverse) ✓ TethysMetadataInBodyProbe::outside dryMassKg = [5600.0] standing: value (observed: 1 run under reverse) -exit 2 diff --git a/runs/probe-F-F05.txt b/runs/probe-F-F05.txt index fb12e49..6184a50 100644 --- a/runs/probe-F-F05.txt +++ b/runs/probe-F-F05.txt @@ -1,6 +1,6 @@ ✓ package NestedStateSpaceProbe ✓ NestedStateSpaceProbe::drop - finalHeight = [100.0] + finalHeight = [55.855000000000004] standing: value (observed: 1 run under reverse) ✓ Started action executor for "NestedStateSpaceProbe::fall" State: Running @@ -9,8 +9,8 @@ Final state: Completed Results: input = ⟨0.0⟩ - output = ⟨55.855000000000004⟩ - stateSpace = ⟨55.855000000000004, -29.429999999999996⟩ + output = ⟨100.0⟩ + stateSpace = ⟨100.0, 0.0⟩ stopTime = 3 [s] time = 3.0 [s] timeStep = 1 [s] diff --git a/runs/probe-F-F09.txt b/runs/probe-F-F09.txt new file mode 100644 index 0000000..0a62762 --- /dev/null +++ b/runs/probe-F-F09.txt @@ -0,0 +1,27 @@ +✓ package FF09 +✓ Started action executor for "FF09::fall" + State: Running + Tokens: 1 +✓ Action completed + Final state: Completed + Results: + input = ⟨0.0⟩ + output = ⟨55.855000000000004⟩ + stateSpace = ⟨55.855000000000004, -29.429999999999996⟩ + stopTime = 3 [s] + time = 3.0 [s] + timeStep = 1 [s] + standing: value (observed: 1 run under reverse) +✓ Started action executor for "FF09::fall" + State: Running + Tokens: 1 +✓ Action completed + Final state: Completed + Results: + input = ⟨0.0⟩ + output = ⟨100.0⟩ + stateSpace = ⟨100.0, 0.0⟩ + stopTime = 3 [s] + time = 3.0 [s] + timeStep = 1 [s] + standing: value (observed: 1 run under reverse) diff --git a/runs/probe-F-F10.txt b/runs/probe-F-F10.txt new file mode 100644 index 0000000..a7b5bc7 --- /dev/null +++ b/runs/probe-F-F10.txt @@ -0,0 +1,9 @@ +✓ package NestedRedefinitionProbe +sysml: analysis run failed: analysis NestedRedefinitionProbe::dropA: invoke action FreeFall: initialize action: unsupported state-space dynamics: zero crossing ground of action fall binds no guard + standing: not covered (analysis NestedRedefinitionProbe::dropA: invoke action FreeFall: initialize action: unsupported state-space dynamics: zero crossing ground of action fall binds no guard) +sysml: analysis run failed: analysis NestedRedefinitionProbe::dropC: invoke action FreeFall: initialize action: unsupported state-space dynamics: zero crossing ground of action fall binds no guard + standing: not covered (analysis NestedRedefinitionProbe::dropC: invoke action FreeFall: initialize action: unsupported state-space dynamics: zero crossing ground of action fall binds no guard) +✓ NestedRedefinitionProbe::dropB + finalHeight = [55.855000000000004] + standing: value (observed: 1 run under reverse) +exit 2 diff --git a/runs/render-documents-html.txt b/runs/render-documents-html.txt index d0d10aa..abfbf62 100644 --- a/runs/render-documents-html.txt +++ b/runs/render-documents-html.txt @@ -102,21 +102,21 @@ loaded 50 files: wrote build/runs/documents-html/TethysDocuments-InterfaceControlDocuments.html (html, 46034 bytes) wrote build/runs/documents-html/TethysDocuments-RiskRegister.html (html, 1050 bytes) wrote build/runs/documents-html/TethysDocuments-SystemDescription.html (html, 36380 bytes) -wrote build/runs/documents-html/TethysDocuments-VerificationMatrix.html (html, 26858 bytes) -wrote build/runs/documents-html/TethysIcdDocuments-CaptureIcdDocument.html (html, 4766 bytes) -wrote build/runs/documents-html/TethysIcdDocuments-DataBusIcdDocument.html (html, 3389 bytes) -wrote build/runs/documents-html/TethysIcdDocuments-DockingIcdDocument.html (html, 4260 bytes) -wrote build/runs/documents-html/TethysIcdDocuments-HighVoltagePowerIcdDocument.html (html, 3029 bytes) +wrote build/runs/documents-html/TethysDocuments-VerificationMatrix.html (html, 34171 bytes) +wrote build/runs/documents-html/TethysIcdDocuments-CaptureIcdDocument.html (html, 6015 bytes) +wrote build/runs/documents-html/TethysIcdDocuments-DataBusIcdDocument.html (html, 4012 bytes) +wrote build/runs/documents-html/TethysIcdDocuments-DockingIcdDocument.html (html, 5267 bytes) +wrote build/runs/documents-html/TethysIcdDocuments-HighVoltagePowerIcdDocument.html (html, 3448 bytes) wrote build/runs/documents-html/TethysIcdDocuments-IcdRegisterDocument.html (html, 20465 bytes) -wrote build/runs/documents-html/TethysIcdDocuments-InspectorDispenserIcdDocument.html (html, 3501 bytes) -wrote build/runs/documents-html/TethysIcdDocuments-InspectorRelayIcdDocument.html (html, 5987 bytes) -wrote build/runs/documents-html/TethysIcdDocuments-InspectorThermalIcdDocument.html (html, 3072 bytes) -wrote build/runs/documents-html/TethysIcdDocuments-LaunchIcdDocument.html (html, 8177 bytes) -wrote build/runs/documents-html/TethysIcdDocuments-PacketInterfaceDocument.html (html, 3041 bytes) -wrote build/runs/documents-html/TethysIcdDocuments-PowerIcdDocument.html (html, 3429 bytes) -wrote build/runs/documents-html/TethysIcdDocuments-PropellantFeedIcdDocument.html (html, 3437 bytes) -wrote build/runs/documents-html/TethysIcdDocuments-SpaceGroundIcdDocument.html (html, 7314 bytes) -wrote build/runs/documents-html/TethysIcdDocuments-ThermalIcdDocument.html (html, 3885 bytes) -wrote build/runs/documents-html/TethysIcdDocuments-TugInspectorIcdDocument.html (html, 3516 bytes) -wrote build/runs/documents-html/TethysVerificationTooling-VvReport.html (html, 102596 bytes) +wrote build/runs/documents-html/TethysIcdDocuments-InspectorDispenserIcdDocument.html (html, 4126 bytes) +wrote build/runs/documents-html/TethysIcdDocuments-InspectorRelayIcdDocument.html (html, 7871 bytes) +wrote build/runs/documents-html/TethysIcdDocuments-InspectorThermalIcdDocument.html (html, 3487 bytes) +wrote build/runs/documents-html/TethysIcdDocuments-LaunchIcdDocument.html (html, 10886 bytes) +wrote build/runs/documents-html/TethysIcdDocuments-PacketInterfaceDocument.html (html, 3421 bytes) +wrote build/runs/documents-html/TethysIcdDocuments-PowerIcdDocument.html (html, 4026 bytes) +wrote build/runs/documents-html/TethysIcdDocuments-PropellantFeedIcdDocument.html (html, 3963 bytes) +wrote build/runs/documents-html/TethysIcdDocuments-SpaceGroundIcdDocument.html (html, 9859 bytes) +wrote build/runs/documents-html/TethysIcdDocuments-ThermalIcdDocument.html (html, 4672 bytes) +wrote build/runs/documents-html/TethysIcdDocuments-TugInspectorIcdDocument.html (html, 4123 bytes) +wrote build/runs/documents-html/TethysVerificationTooling-VvReport.html (html, 173290 bytes) wrote build/runs/documents-html/sysml-document.css (css, 4632 bytes) diff --git a/runs/render-documents-md.txt b/runs/render-documents-md.txt index dfbe350..bdd084a 100644 --- a/runs/render-documents-md.txt +++ b/runs/render-documents-md.txt @@ -102,20 +102,20 @@ loaded 50 files: wrote build/runs/documents/TethysDocuments-InterfaceControlDocuments.md (markdown, 12638 bytes) wrote build/runs/documents/TethysDocuments-RiskRegister.md (markdown, 228 bytes) wrote build/runs/documents/TethysDocuments-SystemDescription.md (markdown, 23394 bytes) -wrote build/runs/documents/TethysDocuments-VerificationMatrix.md (markdown, 5887 bytes) -wrote build/runs/documents/TethysIcdDocuments-CaptureIcdDocument.md (markdown, 642 bytes) -wrote build/runs/documents/TethysIcdDocuments-DataBusIcdDocument.md (markdown, 431 bytes) -wrote build/runs/documents/TethysIcdDocuments-DockingIcdDocument.md (markdown, 543 bytes) -wrote build/runs/documents/TethysIcdDocuments-HighVoltagePowerIcdDocument.md (markdown, 401 bytes) +wrote build/runs/documents/TethysDocuments-VerificationMatrix.md (markdown, 6207 bytes) +wrote build/runs/documents/TethysIcdDocuments-CaptureIcdDocument.md (markdown, 759 bytes) +wrote build/runs/documents/TethysIcdDocuments-DataBusIcdDocument.md (markdown, 496 bytes) +wrote build/runs/documents/TethysIcdDocuments-DockingIcdDocument.md (markdown, 634 bytes) +wrote build/runs/documents/TethysIcdDocuments-HighVoltagePowerIcdDocument.md (markdown, 443 bytes) wrote build/runs/documents/TethysIcdDocuments-IcdRegisterDocument.md (markdown, 5405 bytes) -wrote build/runs/documents/TethysIcdDocuments-InspectorDispenserIcdDocument.md (markdown, 443 bytes) -wrote build/runs/documents/TethysIcdDocuments-InspectorRelayIcdDocument.md (markdown, 708 bytes) -wrote build/runs/documents/TethysIcdDocuments-InspectorThermalIcdDocument.md (markdown, 409 bytes) -wrote build/runs/documents/TethysIcdDocuments-LaunchIcdDocument.md (markdown, 1032 bytes) -wrote build/runs/documents/TethysIcdDocuments-PacketInterfaceDocument.md (markdown, 406 bytes) -wrote build/runs/documents/TethysIcdDocuments-PowerIcdDocument.md (markdown, 465 bytes) -wrote build/runs/documents/TethysIcdDocuments-PropellantFeedIcdDocument.md (markdown, 423 bytes) -wrote build/runs/documents/TethysIcdDocuments-SpaceGroundIcdDocument.md (markdown, 907 bytes) -wrote build/runs/documents/TethysIcdDocuments-ThermalIcdDocument.md (markdown, 528 bytes) -wrote build/runs/documents/TethysIcdDocuments-TugInspectorIcdDocument.md (markdown, 486 bytes) -wrote build/runs/documents/TethysVerificationTooling-VvReport.md (markdown, 7534 bytes) +wrote build/runs/documents/TethysIcdDocuments-InspectorDispenserIcdDocument.md (markdown, 501 bytes) +wrote build/runs/documents/TethysIcdDocuments-InspectorRelayIcdDocument.md (markdown, 862 bytes) +wrote build/runs/documents/TethysIcdDocuments-InspectorThermalIcdDocument.md (markdown, 449 bytes) +wrote build/runs/documents/TethysIcdDocuments-LaunchIcdDocument.md (markdown, 1259 bytes) +wrote build/runs/documents/TethysIcdDocuments-PacketInterfaceDocument.md (markdown, 442 bytes) +wrote build/runs/documents/TethysIcdDocuments-PowerIcdDocument.md (markdown, 517 bytes) +wrote build/runs/documents/TethysIcdDocuments-PropellantFeedIcdDocument.md (markdown, 487 bytes) +wrote build/runs/documents/TethysIcdDocuments-SpaceGroundIcdDocument.md (markdown, 1138 bytes) +wrote build/runs/documents/TethysIcdDocuments-ThermalIcdDocument.md (markdown, 596 bytes) +wrote build/runs/documents/TethysIcdDocuments-TugInspectorIcdDocument.md (markdown, 543 bytes) +wrote build/runs/documents/TethysVerificationTooling-VvReport.md (markdown, 10691 bytes) diff --git a/runs/requirements-satisfy.txt b/runs/requirements-satisfy.txt index 041c3e6..7a46931 100644 --- a/runs/requirements-satisfy.txt +++ b/runs/requirements-satisfy.txt @@ -51,64 +51,64 @@ ✓ satisfy captureEnvelope by TethysTug::argent holds (on TethysTug::argent ID: 1) ✓ Verification TethysVerification::captureEnvelopeTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy deliveredMass by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 10) +✓ satisfy deliveredMass by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 8) ✓ Verification TethysVerification::deliveryAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy transferDuration by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 10) +✓ satisfy transferDuration by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 8) ✓ Verification TethysVerification::powerAnalysis verdict: pass standing: holds (observed: 1 run under reverse) ✓ satisfy propellantCapacity by TethysTug::argent holds (on TethysTug::argent ID: 1) ✓ Verification TethysVerification::propellantAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy characterisationProducts by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 10) +✓ satisfy characterisationProducts by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 8) ✓ Verification TethysVerification::characterisationAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy earthImpactExclusion by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 10) +✓ satisfy earthImpactExclusion by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 8) ✓ Verification TethysVerification::returnSafetyAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy droStability by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 10) +✓ satisfy droStability by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 8) ✓ Verification TethysVerification::returnSafetyAnalysis verdict: pass standing: holds (observed: 1 run under reverse) ✓ satisfy thrustRedundancy by TethysTug::argent holds (on TethysTug::argent ID: 1) ✓ Verification TethysVerification::redundancyInspection verdict: pass ✓ Verification TethysVerification::sepCommissioning verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy deflectionMeasurement by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 10) +✓ satisfy deflectionMeasurement by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 8) ✓ Verification TethysVerification::deflectionAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy autonomousSurvival by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 10) +✓ satisfy autonomousSurvival by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 8) ✓ Verification TethysVerification::autonomyTest verdict: pass standing: holds (observed: 1 run under reverse) ✓ satisfy proximityContactEnvironment by TethysTug::argent holds (on TethysTug::argent ID: 1) ✓ Verification TethysVerification::contactSpeedTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy faultResponse by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 10) +✓ satisfy faultResponse by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 8) ✓ Verification TethysVerification::faultResponseTest verdict: pass standing: holds (observed: 1 run under reverse) ✓ satisfy massBudget by TethysTug::argent holds (on TethysTug::argent ID: 1) ✓ Verification TethysVerification::massBudgetAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy inspectorDeployment by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 10) +✓ satisfy inspectorDeployment by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 8) ✓ Verification TethysVerification::separationTest verdict: pass standing: holds (observed: 1 run under reverse) ✓ satisfy despinCapacity by TethysTug::argent holds (on TethysTug::argent ID: 1) ✓ Verification TethysVerification::despinAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy groundCoverage by tethysSystem.ground holds (on TethysSystem::tethysSystem.ground ID: 24) +✓ satisfy groundCoverage by tethysSystem.ground holds (on TethysSystem::tethysSystem.ground ID: 19) ✓ Verification TethysVerification::groundReadinessDemo verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy commandLatency by tethysSystem.ground holds (on TethysSystem::tethysSystem.ground ID: 24) +✓ satisfy commandLatency by tethysSystem.ground holds (on TethysSystem::tethysSystem.ground ID: 19) ✓ Verification TethysVerification::groundReadinessDemo verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy operatorWorkload by tethysSystem.ground holds (on TethysSystem::tethysSystem.ground ID: 24) +✓ satisfy operatorWorkload by tethysSystem.ground holds (on TethysSystem::tethysSystem.ground ID: 19) ✓ Verification TethysVerification::groundReadinessDemo verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy sepThrust by argent.sep holds (on TethysTug::argent.sep ID: 15) +✓ satisfy sepThrust by argent.sep holds (on TethysTug::argent.sep ID: 12) ✓ Verification TethysVerification::sepHotFireTest verdict: pass ✓ Verification TethysVerification::thrustModelValidation verdict: pass ✓ Verification TethysVerification::sepCommissioning verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy arrayPowerAtTarget by argent.eps holds (on TethysTug::argent.eps ID: 29) +✓ satisfy arrayPowerAtTarget by argent.eps holds (on TethysTug::argent.eps ID: 11) ✓ Verification TethysVerification::powerAnalysis verdict: pass standing: holds (observed: 1 run under reverse) ✓ satisfy captureBagDiameter by argent.captureSystem holds (on TethysTug::argent.captureSystem ID: 2) @@ -117,191 +117,192 @@ ✓ satisfy contactSpeedTolerance by argent.captureSystem holds (on TethysTug::argent.captureSystem ID: 2) ✓ Verification TethysVerification::contactSpeedTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy despinTorque by argent.rcs holds (on TethysTug::argent.rcs ID: 22) +✓ satisfy despinTorque by argent.rcs holds (on TethysTug::argent.rcs ID: 18) ✓ Verification TethysVerification::despinAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy hydrazineLoad by argent.rcs holds (on TethysTug::argent.rcs ID: 22) +✓ satisfy hydrazineLoad by argent.rcs holds (on TethysTug::argent.rcs ID: 18) ✓ Verification TethysVerification::despinAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy deepSpaceEirp by argent.telecom holds (on TethysTug::argent.telecom ID: 31) +✓ satisfy deepSpaceEirp by argent.telecom holds (on TethysTug::argent.telecom ID: 25) ✓ Verification TethysVerification::linkBudgetTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy proximityLinkRange by argent.telecom holds (on TethysTug::argent.telecom ID: 31) +✓ satisfy proximityLinkRange by argent.telecom holds (on TethysTug::argent.telecom ID: 25) ✓ Verification TethysVerification::inspectorAcceptanceTest verdict: pass ✓ Verification TethysVerification::inspectorCommissioning verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy relativeNavigation by argent.gnc holds (on TethysTug::argent.gnc ID: 32) +✓ satisfy relativeNavigation by argent.gnc holds (on TethysTug::argent.gnc ID: 26) ✓ Verification TethysVerification::proximityNavigationTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy faultDetectionLatency by argent.cdh holds (on TethysTug::argent.cdh ID: 33) +✓ satisfy faultDetectionLatency by argent.cdh holds (on TethysTug::argent.cdh ID: 27) ✓ Verification TethysVerification::faultResponseTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy heatRejection by argent.thermal holds (on TethysTug::argent.thermal ID: 34) +✓ satisfy heatRejection by argent.thermal holds (on TethysTug::argent.thermal ID: 28) ✓ Verification TethysVerification::thermalBalanceTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy dockingLoads by argent.structure holds (on TethysTug::argent.structure ID: 35) +✓ satisfy dockingLoads by argent.structure holds (on TethysTug::argent.structure ID: 29) ✓ Verification TethysVerification::dockingLoadsAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy inspectorSeparation by argent.structure holds (on TethysTug::argent.structure ID: 35) +✓ satisfy inspectorSeparation by argent.structure holds (on TethysTug::argent.structure ID: 29) ✓ Verification TethysVerification::separationTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy spinStateSensing by argent.sensors holds (on TethysTug::argent.sensors ID: 36) +✓ satisfy spinStateSensing by argent.sensors holds (on TethysTug::argent.sensors ID: 30) ✓ Verification TethysVerification::characterisationAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy imagingResolution by wren.payload holds (on TethysInspector::wren.payload ID: 37) +✓ satisfy imagingResolution by wren.payload holds (on TethysInspector::wren.payload ID: 31) ✓ Verification TethysVerification::inspectorAcceptanceTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy circumnavigationPropellant by wren.propulsion holds (on TethysInspector::wren.propulsion ID: 38) +✓ satisfy circumnavigationPropellant by wren.propulsion holds (on TethysInspector::wren.propulsion ID: 32) ✓ Verification TethysVerification::characterisationAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy keepAlivePower by wren.bus holds (on TethysInspector::wren.bus ID: 39) +✓ satisfy keepAlivePower by wren.bus holds (on TethysInspector::wren.bus ID: 33) ✓ Verification TethysVerification::inspectorAcceptanceTest verdict: pass ✓ Verification TethysVerification::inspectorCommissioning verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy inspectorMass by wren holds (on TethysInspector::wren ID: 20) +✓ satisfy inspectorMass by wren holds (on TethysInspector::wren ID: 16) ✓ Verification TethysVerification::inspectorAcceptanceTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy dopplerForMass by wren.bus holds (on TethysInspector::wren.bus ID: 39) +✓ satisfy dopplerForMass by wren.bus holds (on TethysInspector::wren.bus ID: 33) ✓ Verification TethysVerification::inspectorAcceptanceTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy stationAperture by tethysSystem.ground.network.primaryStation holds (on TethysSystem::tethysSystem.ground.network.primaryStation ID: 40) +✓ satisfy stationAperture by tethysSystem.ground.network.primaryStation holds (on TethysSystem::tethysSystem.ground.network.primaryStation ID: 21) ✓ Verification TethysVerification::linkBudgetTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy stationSpacing by tethysSystem.ground.network holds (on TethysSystem::tethysSystem.ground.network ID: 25) +✓ satisfy stationSpacing by tethysSystem.ground.network holds (on TethysSystem::tethysSystem.ground.network ID: 20) ✓ Verification TethysVerification::groundInspection verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy TethysRequirementsL3L4::rangingAccuracy by tethysSystem.ground.network.fdf holds (on TethysSystem::tethysSystem.ground.network.fdf ID: 41) +✓ satisfy TethysRequirementsL3L4::rangingAccuracy by tethysSystem.ground.network.fdf holds (on TethysSystem::tethysSystem.ground.network.fdf ID: 34) ✓ Verification TethysVerification::deflectionAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy impactScreening by tethysSystem.ground.network.fdf holds (on TethysSystem::tethysSystem.ground.network.fdf ID: 41) +✓ satisfy impactScreening by tethysSystem.ground.network.fdf holds (on TethysSystem::tethysSystem.ground.network.fdf ID: 34) ✓ Verification TethysVerification::groundProceduresDemo verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy sequenceTurnaround by tethysSystem.ground.network.moc holds (on TethysSystem::tethysSystem.ground.network.moc ID: 42) +✓ satisfy sequenceTurnaround by tethysSystem.ground.network.moc holds (on TethysSystem::tethysSystem.ground.network.moc ID: 35) ✓ Verification TethysVerification::groundProceduresDemo verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy monitoringAutomation by tethysSystem.ground.network.moc holds (on TethysSystem::tethysSystem.ground.network.moc ID: 42) +✓ satisfy monitoringAutomation by tethysSystem.ground.network.moc holds (on TethysSystem::tethysSystem.ground.network.moc ID: 35) ✓ Verification TethysVerification::groundProceduresDemo verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy scienceArchive by tethysSystem.ground.network.sds holds (on TethysSystem::tethysSystem.ground.network.sds ID: 43) +✓ satisfy scienceArchive by tethysSystem.ground.network.sds holds (on TethysSystem::tethysSystem.ground.network.sds ID: 36) ✓ Verification TethysVerification::groundProceduresDemo verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy thrusterUnitThrust by argent.sep holds (on TethysTug::argent.sep ID: 15) +✓ satisfy thrusterUnitThrust by argent.sep holds (on TethysTug::argent.sep ID: 12) ✓ Verification TethysVerification::sepHotFireTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy powerProcessingEfficiency by argent.sep holds (on TethysTug::argent.sep ID: 15) +✓ satisfy powerProcessingEfficiency by argent.sep holds (on TethysTug::argent.sep ID: 12) ✓ Verification TethysVerification::sepHotFireTest verdict: pass standing: holds (observed: 1 run under reverse) ✓ satisfy cinchMotorTorque by argent.captureSystem holds (on TethysTug::argent.captureSystem ID: 2) ✓ Verification TethysVerification::cinchMotorTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy narrowAngleCameraSensitivity by argent.sensors holds (on TethysTug::argent.sensors ID: 36) +✓ satisfy narrowAngleCameraSensitivity by argent.sensors holds (on TethysTug::argent.sensors ID: 30) ✓ Verification TethysVerification::proximityNavigationTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy fdirTaskPeriod by argent.cdh holds (on TethysTug::argent.cdh ID: 33) +✓ satisfy fdirTaskPeriod by argent.cdh holds (on TethysTug::argent.cdh ID: 27) ✓ Verification TethysVerification::faultResponseTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy inspectorDetectorPitch by wren.payload holds (on TethysInspector::wren.payload ID: 37) +✓ satisfy inspectorDetectorPitch by wren.payload holds (on TethysInspector::wren.payload ID: 31) ✓ Verification TethysVerification::inspectorAcceptanceTest verdict: pass standing: holds (observed: 1 run under reverse) ? satisfy verificationViewpoint needs an object of TethysVerification::VvMatrix: none is instantiated -✓ satisfy massBudgetCloses by massBudget holds (on TethysBudgets::massBudget ID: 269) +✓ satisfy massBudgetCloses by massBudget holds (on TethysBudgets::massBudget ID: 248) standing: holds (observed: 1 run under reverse) -✓ satisfy powerBudgetCloses by powerBudget holds (on TethysBudgets::powerBudget ID: 406) - standing: holds (observed: 1 run under reverse) -✓ satisfy energyBudgetCloses by energyBudget holds (on TethysBudgets::energyBudget ID: 408) +✗ satisfy powerBudgetCloses by powerBudget fails (on TethysBudgets::powerBudget ID: 385) + Required condition evaluated to false: capability >= demand * 1.0 + policy.systemMargin + standing: violated (witnessed: 1 run under reverse) +✓ satisfy energyBudgetCloses by energyBudget holds (on TethysBudgets::energyBudget ID: 387) standing: holds (observed: 1 run under reverse) -✓ satisfy inspectorEnergyBudgetCloses by inspectorEnergyBudget holds (on TethysBudgets::inspectorEnergyBudget ID: 409) +✓ satisfy inspectorEnergyBudgetCloses by inspectorEnergyBudget holds (on TethysBudgets::inspectorEnergyBudget ID: 388) standing: holds (observed: 1 run under reverse) -✓ satisfy dataBudgetCloses by dataBudget holds (on TethysBudgets::dataBudget ID: 410) +✓ satisfy dataBudgetCloses by dataBudget holds (on TethysBudgets::dataBudget ID: 389) standing: holds (observed: 1 run under reverse) -✓ satisfy propellantBudgetCloses by propellantBudget holds (on TethysBudgets::propellantBudget ID: 411) +✓ satisfy propellantBudgetCloses by propellantBudget holds (on TethysBudgets::propellantBudget ID: 390) standing: holds (observed: 1 run under reverse) -✓ satisfy hydrazineBudgetCloses by hydrazineBudget holds (on TethysBudgets::hydrazineBudget ID: 413) +✓ satisfy hydrazineBudgetCloses by hydrazineBudget holds (on TethysBudgets::hydrazineBudget ID: 392) standing: holds (observed: 1 run under reverse) -✓ satisfy pointingBudgetCloses by pointingBudget holds (on TethysBudgets::pointingBudget ID: 414) +✓ satisfy pointingBudgetCloses by pointingBudget holds (on TethysBudgets::pointingBudget ID: 393) standing: holds (observed: 1 run under reverse) -✓ satisfy thermalBudgetCloses by thermalBudget holds (on TethysBudgets::thermalBudget ID: 415) +✓ satisfy thermalBudgetCloses by thermalBudget holds (on TethysBudgets::thermalBudget ID: 394) standing: holds (observed: 1 run under reverse) -✓ satisfy captureLoadBudgetCloses by captureLoadBudget holds (on TethysBudgets::captureLoadBudget ID: 416) +✓ satisfy captureLoadBudgetCloses by captureLoadBudget holds (on TethysBudgets::captureLoadBudget ID: 395) standing: holds (observed: 1 run under reverse) -✓ satisfy radiationBudgetCloses by radiationBudget holds (on TethysBudgets::radiationBudget ID: 417) +✓ satisfy radiationBudgetCloses by radiationBudget holds (on TethysBudgets::radiationBudget ID: 396) standing: holds (observed: 1 run under reverse) -✓ satisfy magneticCleanlinessCloses by magneticCleanlinessBudget holds (on TethysBudgets::magneticCleanlinessBudget ID: 418) +✓ satisfy magneticCleanlinessCloses by magneticCleanlinessBudget holds (on TethysBudgets::magneticCleanlinessBudget ID: 397) standing: holds (observed: 1 run under reverse) -✓ satisfy reliabilityBudgetCloses by reliabilityBudget holds (on TethysBudgets::reliabilityBudget ID: 419) +✓ satisfy reliabilityBudgetCloses by reliabilityBudget holds (on TethysBudgets::reliabilityBudget ID: 398) standing: holds (observed: 1 run under reverse) -✓ satisfy processorBudgetCloses by processorBudget holds (on TethysBudgets::processorBudget ID: 420) +✓ satisfy processorBudgetCloses by processorBudget holds (on TethysBudgets::processorBudget ID: 399) standing: holds (observed: 1 run under reverse) -✓ satisfy xDownlinkCloses by xDownlinkAtMaximumRange holds (on TethysLinkBudgets::xDownlinkAtMaximumRange ID: 421) +✓ satisfy xDownlinkCloses by xDownlinkAtMaximumRange holds (on TethysLinkBudgets::xDownlinkAtMaximumRange ID: 400) standing: holds (observed: 1 run under reverse) -✓ satisfy xUplinkCloses by xUplinkAtMaximumRange holds (on TethysLinkBudgets::xUplinkAtMaximumRange ID: 422) +✓ satisfy xUplinkCloses by xUplinkAtMaximumRange holds (on TethysLinkBudgets::xUplinkAtMaximumRange ID: 401) standing: holds (observed: 1 run under reverse) -✓ satisfy kaDownlinkCloses by kaDownlinkAtTargetRange holds (on TethysLinkBudgets::kaDownlinkAtTargetRange ID: 423) +✓ satisfy kaDownlinkCloses by kaDownlinkAtTargetRange holds (on TethysLinkBudgets::kaDownlinkAtTargetRange ID: 402) standing: holds (observed: 1 run under reverse) -✓ satisfy droDownlinkCloses by xDownlinkInDro holds (on TethysLinkBudgets::xDownlinkInDro ID: 424) +✓ satisfy droDownlinkCloses by xDownlinkInDro holds (on TethysLinkBudgets::xDownlinkInDro ID: 403) standing: holds (observed: 1 run under reverse) -✓ satisfy proximityLinkCloses by proximityReturnLink holds (on TethysLinkBudgets::proximityReturnLink ID: 425) +✓ satisfy proximityLinkCloses by proximityReturnLink holds (on TethysLinkBudgets::proximityReturnLink ID: 404) standing: holds (observed: 1 run under reverse) -✓ satisfy relayCarriesCharacterisation by largeTargetRelayLoad holds (on TethysLinkBudgets::largeTargetRelayLoad ID: 426) +✓ satisfy relayCarriesCharacterisation by largeTargetRelayLoad holds (on TethysLinkBudgets::largeTargetRelayLoad ID: 405) standing: holds (observed: 1 run under reverse) -✓ satisfy dictionaryConsistent by dictionary holds (on TethysOperations::dictionary ID: 427) +✓ satisfy dictionaryConsistent by dictionary holds (on TethysOperations::dictionary ID: 406) standing: holds (observed: 1 run under reverse) -✓ satisfy operationsReadiness by orrStatus holds (on TethysOperations::orrStatus ID: 429) +✓ satisfy operationsReadiness by orrStatus holds (on TethysOperations::orrStatus ID: 408) standing: holds (observed: 1 run under reverse) -✓ satisfy resourceMarginPositive by xenonTrend holds (on TethysOperations::xenonTrend ID: 430) +✓ satisfy resourceMarginPositive by xenonTrend holds (on TethysOperations::xenonTrend ID: 409) standing: holds (observed: 1 run under reverse) -✓ satisfy resourceMarginPositive by batteryCapacityTrend holds (on TethysOperations::batteryCapacityTrend ID: 431) +✓ satisfy resourceMarginPositive by batteryCapacityTrend holds (on TethysOperations::batteryCapacityTrend ID: 410) standing: holds (observed: 1 run under reverse) -✓ satisfy extendedMissionAffordable by extendedMission holds (on TethysOperations::extendedMission ID: 432) +✓ satisfy extendedMissionAffordable by extendedMission holds (on TethysOperations::extendedMission ID: 411) standing: holds (observed: 1 run under reverse) -? satisfy requirementsViewpoint could not be evaluated (on TethysViews::requirementsTree ID: 433) +? satisfy requirementsViewpoint could not be evaluated (on TethysViews::requirementsTree ID: 412) Error: satisfaction satisfy requirementsViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy requirementsViewpoint: no condition to evaluate) -? satisfy requirementsViewpoint could not be evaluated (on TethysViews::requirementsTable ID: 435) +? satisfy requirementsViewpoint could not be evaluated (on TethysViews::requirementsTable ID: 414) Error: satisfaction satisfy requirementsViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy requirementsViewpoint: no condition to evaluate) -? satisfy interfaceViewpoint could not be evaluated (on TethysViews::segmentInterfaces ID: 437) +? satisfy interfaceViewpoint could not be evaluated (on TethysViews::segmentInterfaces ID: 416) Error: satisfaction satisfy interfaceViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy interfaceViewpoint: no condition to evaluate) -? satisfy interfaceViewpoint could not be evaluated (on TethysViews::flightSegmentWiring ID: 439) +? satisfy interfaceViewpoint could not be evaluated (on TethysViews::flightSegmentWiring ID: 418) Error: satisfaction satisfy interfaceViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy interfaceViewpoint: no condition to evaluate) -? satisfy interfaceViewpoint could not be evaluated (on TethysViews::tugPowerBus ID: 441) +? satisfy interfaceViewpoint could not be evaluated (on TethysViews::tugPowerBus ID: 420) Error: satisfaction satisfy interfaceViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy interfaceViewpoint: no condition to evaluate) -? satisfy interfaceViewpoint could not be evaluated (on TethysViews::interfaceDefinitions ID: 443) +? satisfy interfaceViewpoint could not be evaluated (on TethysViews::interfaceDefinitions ID: 422) Error: satisfaction satisfy interfaceViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy interfaceViewpoint: no condition to evaluate) -? satisfy budgetViewpoint could not be evaluated (on TethysViews::massBudget ID: 445) +? satisfy budgetViewpoint could not be evaluated (on TethysViews::massBudget ID: 424) Error: satisfaction satisfy budgetViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy budgetViewpoint: no condition to evaluate) -? satisfy operationsViewpoint could not be evaluated (on TethysViews::missionTimeline ID: 447) +? satisfy operationsViewpoint could not be evaluated (on TethysViews::missionTimeline ID: 426) Error: satisfaction satisfy operationsViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy operationsViewpoint: no condition to evaluate) -? satisfy operationsViewpoint could not be evaluated (on TethysViews::projectLifecycle ID: 450) +? satisfy operationsViewpoint could not be evaluated (on TethysViews::projectLifecycle ID: 429) Error: satisfaction satisfy operationsViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy operationsViewpoint: no condition to evaluate) -? satisfy operationsViewpoint could not be evaluated (on TethysViews::modeMachine ID: 453) +? satisfy operationsViewpoint could not be evaluated (on TethysViews::modeMachine ID: 432) Error: satisfaction satisfy operationsViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy operationsViewpoint: no condition to evaluate) -? satisfy assuranceViewpoint could not be evaluated (on TethysViews::modeMachine ID: 453) +? satisfy assuranceViewpoint could not be evaluated (on TethysViews::modeMachine ID: 432) Error: satisfaction satisfy assuranceViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy assuranceViewpoint: no condition to evaluate) -? satisfy TethysViews::interfaceViewpoint could not be evaluated (on TethysViewsTooling::systemOverview ID: 455) +? satisfy TethysViews::interfaceViewpoint could not be evaluated (on TethysViewsTooling::systemOverview ID: 434) Error: satisfaction satisfy TethysViews::interfaceViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy TethysViews::interfaceViewpoint: no condition to evaluate) -? satisfy TethysViews::budgetViewpoint could not be evaluated (on TethysViewsTooling::systemOverview ID: 455) +? satisfy TethysViews::budgetViewpoint could not be evaluated (on TethysViewsTooling::systemOverview ID: 434) Error: satisfaction satisfy TethysViews::budgetViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy TethysViews::budgetViewpoint: no condition to evaluate) -✓ satisfy argentMassWithinTolerance by argentFM holds (on TethysAsBuilt::argentFM ID: 459) +✓ satisfy argentMassWithinTolerance by argentFM holds (on TethysAsBuilt::argentFM ID: 438) standing: holds (observed: 1 run under reverse) -✗ satisfy wrenMassWithinTolerance by wrenFM fails (on TethysAsBuilt::wrenFM ID: 460) +✗ satisfy wrenMassWithinTolerance by wrenFM fails (on TethysAsBuilt::wrenFM ID: 439) Required condition evaluated to false: unit.massDeviation <= unit.massTolerance and unit.massDeviation >= - unit.massTolerance standing: violated (witnessed: 1 run under reverse) -✓ satisfy heliocentricDisposal by argentAtEndOfLife holds (on TethysDisposal::argentAtEndOfLife ID: 461) +✓ satisfy heliocentricDisposal by argentAtEndOfLife holds (on TethysDisposal::argentAtEndOfLife ID: 440) standing: holds (observed: 1 run under reverse) -✓ satisfy passivation by argentAtEndOfLife.passivated holds (on TethysDisposal::argentAtEndOfLife.passivated ID: 463) +✓ satisfy passivation by argentAtEndOfLife.passivated holds (on TethysDisposal::argentAtEndOfLife.passivated ID: 442) standing: holds (observed: 1 run under reverse) -✓ satisfy separationSafety by argentFM.captureSystem holds (on TethysAsBuilt::argentFM.captureSystem ID: 465) +✓ satisfy separationSafety by argentFM.captureSystem holds (on TethysAsBuilt::argentFM.captureSystem ID: 444) standing: holds (observed: 1 run under reverse) exit 2 diff --git a/runs/sequence-nominal-trace.txt b/runs/sequence-nominal-trace.txt index 92504cc..de40acc 100644 --- a/runs/sequence-nominal-trace.txt +++ b/runs/sequence-nominal-trace.txt @@ -189,7 +189,7 @@ [trace] eval chain hydrazineMass -> 400.0 [kg] [trace] eval feature hydrazine -> 400.0 [kg] [trace] eval operator + -> 12600.0 [kg] -[trace] materialize: wren #42 +[trace] materialize: wrenFM #42 [trace] eval literal 24.0 -> 24.0 [trace] eval index -> 24.0 [kg] [trace] eval chain wetMass -> 24.0 [kg] diff --git a/runs/tool-version.txt b/runs/tool-version.txt index 7bd343d..e5c20c9 100644 --- a/runs/tool-version.txt +++ b/runs/tool-version.txt @@ -1,2 +1,2 @@ - Commit: 0a5fa2d94 + Commit: 5cd37f288 Go version: go1.25.11 diff --git a/runs/tooling-dro-stability.txt b/runs/tooling-dro-stability.txt new file mode 100644 index 0000000..b083e0b --- /dev/null +++ b/runs/tooling-dro-stability.txt @@ -0,0 +1,54 @@ +✓ package Tethys +✓ package TethysEnvironment +✓ package TethysMission +✓ package TethysInterfaces +✓ package TethysRequirements +✓ package TethysTug +✓ package TethysInspector +✓ package TethysTarget +✓ package TethysLaunch +✓ package TethysGround +✓ package TethysSystem +✓ package TethysStakeholders +✓ package TethysRequirementsL2 +✓ package TethysRequirementsL3L4 +✓ package TethysVerification +✓ package TethysVerificationTooling +✓ package TethysMarginPolicy +✓ package TethysTugStructure +✓ package TethysBudgets +✓ package TethysInspectorDetail +✓ package TethysCaptureSystem +✓ package TethysProximityOps +✓ package TethysMeridian +✓ package TethysIcds +✓ package TethysLinkBudgets +✓ package TethysOperations +✓ package TethysIcdDocuments +✓ package TethysModes +✓ package TethysSequence +✓ package TethysFdir +✓ package TethysAnalyses +✓ package TethysTrades +✓ package TethysMonteCarlo +✓ package TethysDynamics +✓ package TethysAnalysesTooling +✓ package TethysVariants +✓ package TethysPhysics +✓ package TethysNotation +✓ package TethysSafety +✓ package TethysRisk +✓ package TethysAllocationQueries +✓ package TethysAllocations +✓ package TethysViews +✓ package TethysDocuments +✓ package TethysLayout +✓ package TethysViewsTooling +✓ package TethysAsBuilt +✓ package TethysImportedData +✓ package TethysDisposal +✓ package TethysHouseRules +sysml: analysis run failed: analysis TethysAnalysesTooling::droStabilityRk4: invoke action ThreeBodyDynamics: initialize action: unsupported state-space dynamics: zero crossing xAxisCrossing of action revolution binds no guard + objective closes: undecided: analysis TethysAnalysesTooling::droStabilityRk4: invoke action ThreeBodyDynamics: initialize action: unsupported state-space dynamics: zero crossing xAxisCrossing of action revolution binds no guard + standing: not covered (analysis TethysAnalysesTooling::droStabilityRk4: invoke action ThreeBodyDynamics: initialize action: unsupported state-space dynamics: zero crossing xAxisCrossing of action revolution binds no guard) +exit 2 diff --git a/runs/vv-matrix-l2.txt b/runs/vv-matrix-l2.txt index 00a6771..a84282e 100644 --- a/runs/vv-matrix-l2.txt +++ b/runs/vv-matrix-l2.txt @@ -49,10 +49,13 @@ ✓ package TethysDisposal ✓ package TethysHouseRules ✓ Query TethysVerificationTooling::VvMatrix returned 28 rows - Columns: shortName, name, verifiedBy, cases, satisfiedBy, derivedFrom + Columns: shortName, name, Verification::method, Verification::level, Verification::stage, verifiedBy, cases, satisfiedBy, derivedFrom Row 1: TethysRequirementsL2::captureEnvelope shortName = "TS-001" name = "captureEnvelope" + Verification::method = VerificationCases::VerificationMethodKind::test + Verification::level = TethysRequirements::VerificationLevel::system + Verification::stage = TethysRequirements::VerificationStage::qualification verifiedBy = TethysVerification::CaptureEnvelopeTest cases = 1 satisfiedBy = TethysTug::argent @@ -60,6 +63,9 @@ Row 2: TethysRequirementsL2::deliveredMass shortName = "TS-002" name = "deliveredMass" + Verification::method = VerificationCases::VerificationMethodKind::analyze + Verification::level = TethysRequirements::VerificationLevel::mission + Verification::stage = TethysRequirements::VerificationStage::inFlight verifiedBy = TethysVerification::DeliveryAnalysis cases = 1 satisfiedBy = TethysSystem::tethysSystem::flight @@ -67,6 +73,9 @@ Row 3: TethysRequirementsL2::transferDuration shortName = "TS-003" name = "transferDuration" + Verification::method = VerificationCases::VerificationMethodKind::analyze + Verification::level = TethysRequirements::VerificationLevel::mission + Verification::stage = TethysRequirements::VerificationStage::qualification verifiedBy = TethysVerification::PowerAnalysis cases = 1 satisfiedBy = TethysSystem::tethysSystem::flight @@ -74,6 +83,9 @@ Row 4: TethysRequirementsL2::propellantCapacity shortName = "TS-004" name = "propellantCapacity" + Verification::method = VerificationCases::VerificationMethodKind::analyze + Verification::level = TethysRequirements::VerificationLevel::system + Verification::stage = TethysRequirements::VerificationStage::qualification verifiedBy = TethysVerification::PropellantAnalysis cases = 1 satisfiedBy = TethysTug::argent @@ -81,6 +93,9 @@ Row 5: TethysRequirementsL2::characterisationProducts shortName = "TS-005" name = "characterisationProducts" + Verification::method = VerificationCases::VerificationMethodKind::analyze + Verification::level = TethysRequirements::VerificationLevel::system + Verification::stage = TethysRequirements::VerificationStage::inFlight verifiedBy = TethysVerification::CharacterisationAnalysis cases = 1 satisfiedBy = TethysSystem::tethysSystem::flight @@ -88,6 +103,9 @@ Row 6: TethysRequirementsL2::launchCompatibility shortName = "TS-006" name = "launchCompatibility" + Verification::method = VerificationCases::VerificationMethodKind::inspect + Verification::level = TethysRequirements::VerificationLevel::system + Verification::stage = TethysRequirements::VerificationStage::preLaunch verifiedBy = TethysVerification::MassBudgetAnalysis cases = 1 satisfiedBy = (none) @@ -95,6 +113,9 @@ Row 7: TethysRequirementsL2::deepSpaceLink shortName = "TS-007" name = "deepSpaceLink" + Verification::method = VerificationCases::VerificationMethodKind::test + Verification::level = TethysRequirements::VerificationLevel::system + Verification::stage = TethysRequirements::VerificationStage::preLaunch verifiedBy = TethysVerification::LinkBudgetTest cases = 1 satisfiedBy = (none) @@ -102,6 +123,9 @@ Row 8: TethysRequirementsL2::earthImpactExclusion shortName = "TS-008" name = "earthImpactExclusion" + Verification::method = VerificationCases::VerificationMethodKind::analyze + Verification::level = TethysRequirements::VerificationLevel::mission + Verification::stage = TethysRequirements::VerificationStage::qualification verifiedBy = TethysVerification::ReturnSafetyAnalysis cases = 1 satisfiedBy = TethysSystem::tethysSystem::flight @@ -109,6 +133,9 @@ Row 9: TethysRequirementsL2::droStability shortName = "TS-009" name = "droStability" + Verification::method = VerificationCases::VerificationMethodKind::analyze + Verification::level = TethysRequirements::VerificationLevel::mission + Verification::stage = TethysRequirements::VerificationStage::qualification verifiedBy = TethysVerification::ReturnSafetyAnalysis cases = 1 satisfiedBy = TethysSystem::tethysSystem::flight @@ -116,6 +143,9 @@ Row 10: TethysRequirementsL2::thrustRedundancy shortName = "TS-010" name = "thrustRedundancy" + Verification::method = VerificationCases::VerificationMethodKind::inspect + Verification::level = TethysRequirements::VerificationLevel::system + Verification::stage = TethysRequirements::VerificationStage::qualification verifiedBy = [TethysVerification::RedundancyInspection, TethysVerification::SepCommissioning] cases = 2 satisfiedBy = TethysTug::argent @@ -123,6 +153,9 @@ Row 11: TethysRequirementsL2::deflectionMeasurement shortName = "TS-011" name = "deflectionMeasurement" + Verification::method = VerificationCases::VerificationMethodKind::analyze + Verification::level = TethysRequirements::VerificationLevel::mission + Verification::stage = TethysRequirements::VerificationStage::inFlight verifiedBy = TethysVerification::DeflectionAnalysis cases = 1 satisfiedBy = TethysSystem::tethysSystem::flight @@ -130,6 +163,9 @@ Row 12: TethysRequirementsL2::visitorDocking shortName = "TS-012" name = "visitorDocking" + Verification::method = VerificationCases::VerificationMethodKind::demo + Verification::level = TethysRequirements::VerificationLevel::mission + Verification::stage = TethysRequirements::VerificationStage::inFlight verifiedBy = TethysVerification::DockingDemo cases = 1 satisfiedBy = (none) @@ -137,6 +173,9 @@ Row 13: TethysRequirementsL2::autonomousSurvival shortName = "TS-013" name = "autonomousSurvival" + Verification::method = VerificationCases::VerificationMethodKind::test + Verification::level = TethysRequirements::VerificationLevel::system + Verification::stage = TethysRequirements::VerificationStage::qualification verifiedBy = TethysVerification::AutonomyTest cases = 1 satisfiedBy = TethysSystem::tethysSystem::flight @@ -144,6 +183,9 @@ Row 14: TethysRequirementsL2::proximityContactEnvironment shortName = "TS-014" name = "proximityContactEnvironment" + Verification::method = VerificationCases::VerificationMethodKind::test + Verification::level = TethysRequirements::VerificationLevel::subsystem + Verification::stage = TethysRequirements::VerificationStage::qualification verifiedBy = TethysVerification::ContactSpeedTest cases = 1 satisfiedBy = TethysTug::argent @@ -151,6 +193,9 @@ Row 15: TethysRequirementsL2::faultResponse shortName = "TS-015" name = "faultResponse" + Verification::method = VerificationCases::VerificationMethodKind::test + Verification::level = TethysRequirements::VerificationLevel::system + Verification::stage = TethysRequirements::VerificationStage::qualification verifiedBy = TethysVerification::FaultResponseTest cases = 1 satisfiedBy = TethysSystem::tethysSystem::flight @@ -158,6 +203,9 @@ Row 16: TethysRequirementsL2::massBudget shortName = "TS-016" name = "massBudget" + Verification::method = VerificationCases::VerificationMethodKind::analyze + Verification::level = TethysRequirements::VerificationLevel::system + Verification::stage = TethysRequirements::VerificationStage::acceptance verifiedBy = TethysVerification::MassBudgetAnalysis cases = 1 satisfiedBy = TethysTug::argent @@ -165,6 +213,9 @@ Row 17: TethysRequirementsL2::captureQualification shortName = "TS-017" name = "captureQualification" + Verification::method = VerificationCases::VerificationMethodKind::test + Verification::level = TethysRequirements::VerificationLevel::subsystem + Verification::stage = TethysRequirements::VerificationStage::qualification verifiedBy = TethysVerification::CaptureEnvelopeTest cases = 1 satisfiedBy = (none) @@ -172,6 +223,9 @@ Row 18: TethysRequirementsL2::inspectorDeployment shortName = "TS-018" name = "inspectorDeployment" + Verification::method = VerificationCases::VerificationMethodKind::test + Verification::level = TethysRequirements::VerificationLevel::system + Verification::stage = TethysRequirements::VerificationStage::acceptance verifiedBy = TethysVerification::SeparationTest cases = 1 satisfiedBy = TethysSystem::tethysSystem::flight @@ -179,6 +233,9 @@ Row 19: TethysRequirementsL2::despinCapacity shortName = "TS-019" name = "despinCapacity" + Verification::method = VerificationCases::VerificationMethodKind::analyze + Verification::level = TethysRequirements::VerificationLevel::system + Verification::stage = TethysRequirements::VerificationStage::qualification verifiedBy = TethysVerification::DespinAnalysis cases = 1 satisfiedBy = TethysTug::argent @@ -186,6 +243,9 @@ Row 20: TethysRequirementsL2::groundCoverage shortName = "TS-020" name = "groundCoverage" + Verification::method = VerificationCases::VerificationMethodKind::demo + Verification::level = TethysRequirements::VerificationLevel::system + Verification::stage = TethysRequirements::VerificationStage::preLaunch verifiedBy = TethysVerification::GroundReadinessDemo cases = 1 satisfiedBy = TethysSystem::tethysSystem::ground @@ -193,6 +253,9 @@ Row 21: TethysRequirementsL2::commandLatency shortName = "TS-021" name = "commandLatency" + Verification::method = VerificationCases::VerificationMethodKind::demo + Verification::level = TethysRequirements::VerificationLevel::system + Verification::stage = TethysRequirements::VerificationStage::preLaunch verifiedBy = TethysVerification::GroundReadinessDemo cases = 1 satisfiedBy = TethysSystem::tethysSystem::ground @@ -200,6 +263,9 @@ Row 22: TethysRequirementsL2::operatorWorkload shortName = "TS-022" name = "operatorWorkload" + Verification::method = VerificationCases::VerificationMethodKind::demo + Verification::level = TethysRequirements::VerificationLevel::system + Verification::stage = TethysRequirements::VerificationStage::preLaunch verifiedBy = TethysVerification::GroundReadinessDemo cases = 1 satisfiedBy = TethysSystem::tethysSystem::ground @@ -207,6 +273,9 @@ Row 23: TethysRequirementsL2::flightPerformanceRequirements shortName = (none) name = "flightPerformanceRequirements" + Verification::method = VerificationCases::VerificationMethodKind::inspect + Verification::level = TethysRequirements::VerificationLevel::system + Verification::stage = TethysRequirements::VerificationStage::qualification verifiedBy = TethysVerification::DocumentInspection cases = 1 satisfiedBy = (none) @@ -214,6 +283,9 @@ Row 24: TethysRequirementsL2::flightSafetyAndAutonomyRequirements shortName = (none) name = "flightSafetyAndAutonomyRequirements" + Verification::method = VerificationCases::VerificationMethodKind::inspect + Verification::level = TethysRequirements::VerificationLevel::system + Verification::stage = TethysRequirements::VerificationStage::qualification verifiedBy = TethysVerification::DocumentInspection cases = 1 satisfiedBy = (none) @@ -221,6 +293,9 @@ Row 25: TethysRequirementsL2::flightEnvironmentAndBudgetRequirements shortName = (none) name = "flightEnvironmentAndBudgetRequirements" + Verification::method = VerificationCases::VerificationMethodKind::inspect + Verification::level = TethysRequirements::VerificationLevel::system + Verification::stage = TethysRequirements::VerificationStage::qualification verifiedBy = TethysVerification::DocumentInspection cases = 1 satisfiedBy = (none) @@ -228,6 +303,9 @@ Row 26: TethysRequirementsL2::interfaceRequirements shortName = (none) name = "interfaceRequirements" + Verification::method = VerificationCases::VerificationMethodKind::inspect + Verification::level = TethysRequirements::VerificationLevel::system + Verification::stage = TethysRequirements::VerificationStage::qualification verifiedBy = TethysVerification::DocumentInspection cases = 1 satisfiedBy = (none) @@ -235,6 +313,9 @@ Row 27: TethysRequirementsL2::groundSegmentRequirements shortName = (none) name = "groundSegmentRequirements" + Verification::method = VerificationCases::VerificationMethodKind::inspect + Verification::level = TethysRequirements::VerificationLevel::system + Verification::stage = TethysRequirements::VerificationStage::qualification verifiedBy = TethysVerification::DocumentInspection cases = 1 satisfiedBy = (none) @@ -242,6 +323,9 @@ Row 28: TethysRequirementsL2::safetyRequirements shortName = (none) name = "safetyRequirements" + Verification::method = VerificationCases::VerificationMethodKind::inspect + Verification::level = TethysRequirements::VerificationLevel::mission + Verification::stage = TethysRequirements::VerificationStage::qualification verifiedBy = TethysVerification::DocumentInspection cases = 1 satisfiedBy = (none) diff --git a/runs/vv-report.txt b/runs/vv-report.txt index 9c1613f..289f35c 100644 --- a/runs/vv-report.txt +++ b/runs/vv-report.txt @@ -105,111 +105,111 @@ Every requirement of the Tethys tree (L1 to L4, needs, objectives and success cr *L1 mission requirements* -| shortName | name | verifiedBy | cases | satisfiedBy | derivedFrom | -| --- | --- | --- | --- | --- | --- | -| TR-001 | retrieval | DeliveryAnalysis | 1 | | | -| TR-002 | missionDuration | DeliveryAnalysis, MissionDurationByAnalysis | 2 | | | -| TR-003 | characterisation | CharacterisationAnalysis | 1 | | | -| TR-004 | launchCompatibility | InterfaceBaselineInspection | 1 | | | -| TR-005 | groundCompatibility | GroundReadinessDemo | 1 | | | -| TR-006 | cislunarSafety | ReturnSafetyAnalysis | 1 | | | -| TR-007 | missionClass | RedundancyInspection | 1 | | | -| TR-008 | deflectionDemonstration | DeflectionAnalysis | 1 | | | -| TR-009 | utilisationAccess | DockingDemo | 1 | | | +| shortName | name | Verification::method | Verification::level | Verification::stage | verifiedBy | cases | satisfiedBy | derivedFrom | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | +| TR-001 | retrieval | analyze | mission | inFlight | DeliveryAnalysis | 1 | | | +| TR-002 | missionDuration | analyze | mission | inFlight | DeliveryAnalysis, MissionDurationByAnalysis | 2 | | | +| TR-003 | characterisation | analyze | mission | inFlight | CharacterisationAnalysis | 1 | | | +| TR-004 | launchCompatibility | test | system | acceptance | InterfaceBaselineInspection | 1 | | | +| TR-005 | groundCompatibility | test | system | preLaunch | GroundReadinessDemo | 1 | | | +| TR-006 | cislunarSafety | analyze | mission | qualification | ReturnSafetyAnalysis | 1 | | | +| TR-007 | missionClass | analyze | system | qualification | RedundancyInspection | 1 | | | +| TR-008 | deflectionDemonstration | demo | mission | inFlight | DeflectionAnalysis | 1 | | | +| TR-009 | utilisationAccess | demo | mission | inFlight | DockingDemo | 1 | | | *Needs, objectives and success criteria* -| shortName | name | verifiedBy | cases | satisfiedBy | derivedFrom | -| --- | --- | --- | --- | --- | --- | -| N-001 | returnedBodyNeed | MissionValidation | 1 | | | -| N-002 | timelinessNeed | MissionValidation | 1 | | | -| N-003 | knownTargetNeed | MissionValidation | 1 | | | -| N-004 | noEarthRiskNeed | MissionValidation | 1 | | | -| N-005 | deflectionKnowledgeNeed | MissionValidation | 1 | | | -| N-006 | surfaceAccessNeed | DockingDemo | 1 | | | -| N-007 | operabilityNeed | GroundReadinessDemo, ConOpsValidation | 2 | | | -| N-008 | robustToTargetNeed | MissionValidation | 1 | | | -| N-009 | providerInterfaceNeed | InterfaceBaselineInspection | 1 | | | -| SO-001 | shapeModel | CharacterisationAnalysis | 1 | | | -| SO-002 | massEstimate | CharacterisationAnalysis | 1 | | | -| SO-003 | spinState | CharacterisationAnalysis | 1 | | | -| SO-004 | deflectionMeasurement | SuccessCriteriaValidation | 1 | | | -| | minimumSuccess | SuccessCriteriaValidation | 1 | | | -| | fullSuccess | SuccessCriteriaValidation | 1 | | | -| MS-001 | characterised | SuccessCriteriaValidation | 1 | | | -| MS-002 | deflected | SuccessCriteriaValidation | 1 | | | -| FS-001 | delivered | SuccessCriteriaValidation | 1 | | | -| FS-002 | accessible | SuccessCriteriaValidation | 1 | | | +| shortName | name | Verification::method | Verification::level | Verification::stage | verifiedBy | cases | satisfiedBy | derivedFrom | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | +| N-001 | returnedBodyNeed | demo | mission | inFlight | MissionValidation | 1 | | | +| N-002 | timelinessNeed | analyze | mission | inFlight | MissionValidation | 1 | | | +| N-003 | knownTargetNeed | demo | mission | inFlight | MissionValidation | 1 | | | +| N-004 | noEarthRiskNeed | analyze | mission | qualification | MissionValidation | 1 | | | +| N-005 | deflectionKnowledgeNeed | demo | mission | inFlight | MissionValidation | 1 | | | +| N-006 | surfaceAccessNeed | demo | mission | inFlight | DockingDemo | 1 | | | +| N-007 | operabilityNeed | demo | system | preLaunch | GroundReadinessDemo, ConOpsValidation | 2 | | | +| N-008 | robustToTargetNeed | analyze | mission | qualification | MissionValidation | 1 | | | +| N-009 | providerInterfaceNeed | inspect | system | qualification | InterfaceBaselineInspection | 1 | | | +| SO-001 | shapeModel | analyze | mission | inFlight | CharacterisationAnalysis | 1 | | | +| SO-002 | massEstimate | analyze | mission | inFlight | CharacterisationAnalysis | 1 | | | +| SO-003 | spinState | analyze | mission | inFlight | CharacterisationAnalysis | 1 | | | +| SO-004 | deflectionMeasurement | analyze | mission | inFlight | SuccessCriteriaValidation | 1 | | | +| | minimumSuccess | demo | mission | inFlight | SuccessCriteriaValidation | 1 | | | +| | fullSuccess | demo | mission | inFlight | SuccessCriteriaValidation | 1 | | | +| MS-001 | characterised | demo | mission | inFlight | SuccessCriteriaValidation | 1 | | | +| MS-002 | deflected | demo | mission | inFlight | SuccessCriteriaValidation | 1 | | | +| FS-001 | delivered | demo | mission | inFlight | SuccessCriteriaValidation | 1 | | | +| FS-002 | accessible | demo | mission | inFlight | SuccessCriteriaValidation | 1 | | | *L2 system requirements* -| shortName | name | verifiedBy | cases | satisfiedBy | derivedFrom | -| --- | --- | --- | --- | --- | --- | -| TS-001 | captureEnvelope | CaptureEnvelopeTest | 1 | argent | | -| TS-002 | deliveredMass | DeliveryAnalysis | 1 | flight | | -| TS-003 | transferDuration | PowerAnalysis | 1 | flight | | -| TS-004 | propellantCapacity | PropellantAnalysis | 1 | argent | | -| TS-005 | characterisationProducts | CharacterisationAnalysis | 1 | flight | | -| TS-006 | launchCompatibility | MassBudgetAnalysis | 1 | | | -| TS-007 | deepSpaceLink | LinkBudgetTest | 1 | | | -| TS-008 | earthImpactExclusion | ReturnSafetyAnalysis | 1 | flight | | -| TS-009 | droStability | ReturnSafetyAnalysis | 1 | flight | | -| TS-010 | thrustRedundancy | RedundancyInspection, SepCommissioning | 2 | argent | | -| TS-011 | deflectionMeasurement | DeflectionAnalysis | 1 | flight | | -| TS-012 | visitorDocking | DockingDemo | 1 | | | -| TS-013 | autonomousSurvival | AutonomyTest | 1 | flight | | -| TS-014 | proximityContactEnvironment | ContactSpeedTest | 1 | argent | | -| TS-015 | faultResponse | FaultResponseTest | 1 | flight | | -| TS-016 | massBudget | MassBudgetAnalysis | 1 | argent | | -| TS-017 | captureQualification | CaptureEnvelopeTest | 1 | | | -| TS-018 | inspectorDeployment | SeparationTest | 1 | flight | | -| TS-019 | despinCapacity | DespinAnalysis | 1 | argent | | -| TS-020 | groundCoverage | GroundReadinessDemo | 1 | ground | | -| TS-021 | commandLatency | GroundReadinessDemo | 1 | ground | | -| TS-022 | operatorWorkload | GroundReadinessDemo | 1 | ground | | -| | flightPerformanceRequirements | DocumentInspection | 1 | | | -| | flightSafetyAndAutonomyRequirements | DocumentInspection | 1 | | | -| | flightEnvironmentAndBudgetRequirements | DocumentInspection | 1 | | | -| | interfaceRequirements | DocumentInspection | 1 | | | -| | groundSegmentRequirements | DocumentInspection | 1 | | | -| | safetyRequirements | DocumentInspection | 1 | | | +| shortName | name | Verification::method | Verification::level | Verification::stage | verifiedBy | cases | satisfiedBy | derivedFrom | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | +| TS-001 | captureEnvelope | test | system | qualification | CaptureEnvelopeTest | 1 | argent | | +| TS-002 | deliveredMass | analyze | mission | inFlight | DeliveryAnalysis | 1 | flight | | +| TS-003 | transferDuration | analyze | mission | qualification | PowerAnalysis | 1 | flight | | +| TS-004 | propellantCapacity | analyze | system | qualification | PropellantAnalysis | 1 | argent | | +| TS-005 | characterisationProducts | analyze | system | inFlight | CharacterisationAnalysis | 1 | flight | | +| TS-006 | launchCompatibility | inspect | system | preLaunch | MassBudgetAnalysis | 1 | | | +| TS-007 | deepSpaceLink | test | system | preLaunch | LinkBudgetTest | 1 | | | +| TS-008 | earthImpactExclusion | analyze | mission | qualification | ReturnSafetyAnalysis | 1 | flight | | +| TS-009 | droStability | analyze | mission | qualification | ReturnSafetyAnalysis | 1 | flight | | +| TS-010 | thrustRedundancy | inspect | system | qualification | RedundancyInspection, SepCommissioning | 2 | argent | | +| TS-011 | deflectionMeasurement | analyze | mission | inFlight | DeflectionAnalysis | 1 | flight | | +| TS-012 | visitorDocking | demo | mission | inFlight | DockingDemo | 1 | | | +| TS-013 | autonomousSurvival | test | system | qualification | AutonomyTest | 1 | flight | | +| TS-014 | proximityContactEnvironment | test | subsystem | qualification | ContactSpeedTest | 1 | argent | | +| TS-015 | faultResponse | test | system | qualification | FaultResponseTest | 1 | flight | | +| TS-016 | massBudget | analyze | system | acceptance | MassBudgetAnalysis | 1 | argent | | +| TS-017 | captureQualification | test | subsystem | qualification | CaptureEnvelopeTest | 1 | | | +| TS-018 | inspectorDeployment | test | system | acceptance | SeparationTest | 1 | flight | | +| TS-019 | despinCapacity | analyze | system | qualification | DespinAnalysis | 1 | argent | | +| TS-020 | groundCoverage | demo | system | preLaunch | GroundReadinessDemo | 1 | ground | | +| TS-021 | commandLatency | demo | system | preLaunch | GroundReadinessDemo | 1 | ground | | +| TS-022 | operatorWorkload | demo | system | preLaunch | GroundReadinessDemo | 1 | ground | | +| | flightPerformanceRequirements | inspect | system | qualification | DocumentInspection | 1 | | | +| | flightSafetyAndAutonomyRequirements | inspect | system | qualification | DocumentInspection | 1 | | | +| | flightEnvironmentAndBudgetRequirements | inspect | system | qualification | DocumentInspection | 1 | | | +| | interfaceRequirements | inspect | system | qualification | DocumentInspection | 1 | | | +| | groundSegmentRequirements | inspect | system | qualification | DocumentInspection | 1 | | | +| | safetyRequirements | inspect | mission | qualification | DocumentInspection | 1 | | | *L3 subsystem and L4 component requirements* -| shortName | name | verifiedBy | cases | satisfiedBy | derivedFrom | -| --- | --- | --- | --- | --- | --- | -| TA-001 | sepThrust | SepHotFireTest, ThrustModelValidation, SepCommissioning | 3 | sep | transferDuration | -| TA-002 | arrayPowerAtTarget | PowerAnalysis | 1 | eps | transferDuration | -| TA-003 | captureBagDiameter | CaptureEnvelopeTest | 1 | captureSystem | captureEnvelope | -| TA-004 | contactSpeedTolerance | ContactSpeedTest | 1 | captureSystem | proximityContactEnvironment | -| TA-005 | despinTorque | DespinAnalysis | 1 | rcs | despinCapacity | -| TA-006 | hydrazineLoad | DespinAnalysis | 1 | rcs | despinCapacity | -| TA-007 | deepSpaceEirp | LinkBudgetTest | 1 | telecom | deepSpaceLink | -| TA-008 | proximityLinkRange | InspectorAcceptanceTest, InspectorCommissioning | 2 | telecom | inspectorDeployment | -| TA-009 | relativeNavigation | ProximityNavigationTest | 1 | gnc | characterisationProducts | -| TA-010 | faultDetectionLatency | FaultResponseTest | 1 | cdh | faultResponse | -| TA-011 | heatRejection | ThermalBalanceTest | 1 | thermal | proximityContactEnvironment | -| TA-012 | dockingLoads | DockingLoadsAnalysis | 1 | structure | visitorDocking | -| TA-013 | inspectorSeparation | SeparationTest | 1 | structure | inspectorDeployment | -| TA-014 | spinStateSensing | CharacterisationAnalysis | 1 | sensors | characterisationProducts | -| TW-001 | imagingResolution | InspectorAcceptanceTest | 1 | payload | characterisationProducts | -| TW-002 | circumnavigationPropellant | CharacterisationAnalysis | 1 | propulsion | characterisationProducts | -| TW-003 | keepAlivePower | InspectorAcceptanceTest, InspectorCommissioning | 2 | bus | inspectorDeployment | -| TW-004 | inspectorMass | InspectorAcceptanceTest | 1 | wren | launchCompatibility | -| TW-005 | dopplerForMass | InspectorAcceptanceTest | 1 | bus | characterisationProducts | -| TG-001 | stationAperture | LinkBudgetTest | 1 | primaryStation | deepSpaceLink | -| TG-002 | stationSpacing | GroundInspection | 1 | network | deepSpaceLink | -| TG-003 | rangingAccuracy | DeflectionAnalysis | 1 | fdf | deflectionMeasurement | -| TG-004 | impactScreening | GroundProceduresDemo | 1 | fdf | earthImpactExclusion | -| TG-005 | sequenceTurnaround | GroundProceduresDemo | 1 | moc | commandLatency | -| TG-006 | monitoringAutomation | GroundProceduresDemo | 1 | moc | operatorWorkload | -| TG-007 | scienceArchive | GroundProceduresDemo | 1 | sds | characterisationProducts | -| TC-001 | thrusterUnitThrust | SepHotFireTest | 1 | sep | sepThrust, transferDuration | -| TC-002 | powerProcessingEfficiency | SepHotFireTest | 1 | sep | sepThrust, transferDuration | -| TC-003 | cinchMotorTorque | CinchMotorTest | 1 | captureSystem | captureBagDiameter, captureEnvelope | -| TC-004 | narrowAngleCameraSensitivity | ProximityNavigationTest | 1 | sensors | relativeNavigation, characterisationProducts | -| TC-005 | fdirTaskPeriod | FaultResponseTest | 1 | cdh | faultDetectionLatency, faultResponse | -| TC-006 | inspectorDetectorPitch | InspectorAcceptanceTest | 1 | payload | imagingResolution, characterisationProducts | +| shortName | name | Verification::method | Verification::level | Verification::stage | verifiedBy | cases | satisfiedBy | derivedFrom | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | +| TA-001 | sepThrust | test | subsystem | qualification | SepHotFireTest, ThrustModelValidation, SepCommissioning | 3 | sep | transferDuration | +| TA-002 | arrayPowerAtTarget | analyze | subsystem | qualification | PowerAnalysis | 1 | eps | transferDuration | +| TA-003 | captureBagDiameter | test | subsystem | qualification | CaptureEnvelopeTest | 1 | captureSystem | captureEnvelope | +| TA-004 | contactSpeedTolerance | test | subsystem | qualification | ContactSpeedTest | 1 | captureSystem | proximityContactEnvironment | +| TA-005 | despinTorque | analyze | subsystem | qualification | DespinAnalysis | 1 | rcs | despinCapacity | +| TA-006 | hydrazineLoad | inspect | subsystem | acceptance | DespinAnalysis | 1 | rcs | despinCapacity | +| TA-007 | deepSpaceEirp | test | subsystem | acceptance | LinkBudgetTest | 1 | telecom | deepSpaceLink | +| TA-008 | proximityLinkRange | test | subsystem | acceptance | InspectorAcceptanceTest, InspectorCommissioning | 2 | telecom | inspectorDeployment | +| TA-009 | relativeNavigation | test | subsystem | qualification | ProximityNavigationTest | 1 | gnc | characterisationProducts | +| TA-010 | faultDetectionLatency | test | subsystem | qualification | FaultResponseTest | 1 | cdh | faultResponse | +| TA-011 | heatRejection | test | subsystem | qualification | ThermalBalanceTest | 1 | thermal | proximityContactEnvironment | +| TA-012 | dockingLoads | analyze | subsystem | qualification | DockingLoadsAnalysis | 1 | structure | visitorDocking | +| TA-013 | inspectorSeparation | test | subsystem | acceptance | SeparationTest | 1 | structure | inspectorDeployment | +| TA-014 | spinStateSensing | analyze | subsystem | qualification | CharacterisationAnalysis | 1 | sensors | characterisationProducts | +| TW-001 | imagingResolution | test | subsystem | acceptance | InspectorAcceptanceTest | 1 | payload | characterisationProducts | +| TW-002 | circumnavigationPropellant | analyze | subsystem | qualification | CharacterisationAnalysis | 1 | propulsion | characterisationProducts | +| TW-003 | keepAlivePower | test | subsystem | acceptance | InspectorAcceptanceTest, InspectorCommissioning | 2 | bus | inspectorDeployment | +| TW-004 | inspectorMass | test | subsystem | acceptance | InspectorAcceptanceTest | 1 | wren | launchCompatibility | +| TW-005 | dopplerForMass | test | subsystem | qualification | InspectorAcceptanceTest | 1 | bus | characterisationProducts | +| TG-001 | stationAperture | inspect | subsystem | preLaunch | LinkBudgetTest | 1 | primaryStation | deepSpaceLink | +| TG-002 | stationSpacing | inspect | subsystem | preLaunch | GroundInspection | 1 | network | deepSpaceLink | +| TG-003 | rangingAccuracy | demo | subsystem | preLaunch | DeflectionAnalysis | 1 | fdf | deflectionMeasurement | +| TG-004 | impactScreening | demo | subsystem | preLaunch | GroundProceduresDemo | 1 | fdf | earthImpactExclusion | +| TG-005 | sequenceTurnaround | demo | subsystem | preLaunch | GroundProceduresDemo | 1 | moc | commandLatency | +| TG-006 | monitoringAutomation | demo | subsystem | preLaunch | GroundProceduresDemo | 1 | moc | operatorWorkload | +| TG-007 | scienceArchive | demo | subsystem | preLaunch | GroundProceduresDemo | 1 | sds | characterisationProducts | +| TC-001 | thrusterUnitThrust | test | unit | qualification | SepHotFireTest | 1 | sep | sepThrust, transferDuration | +| TC-002 | powerProcessingEfficiency | test | unit | acceptance | SepHotFireTest | 1 | sep | sepThrust, transferDuration | +| TC-003 | cinchMotorTorque | test | unit | acceptance | CinchMotorTest | 1 | captureSystem | captureBagDiameter, captureEnvelope | +| TC-004 | narrowAngleCameraSensitivity | test | unit | qualification | ProximityNavigationTest | 1 | sensors | relativeNavigation, characterisationProducts | +| TC-005 | fdirTaskPeriod | test | unit | acceptance | FaultResponseTest | 1 | cdh | faultDetectionLatency, faultResponse | +| TC-006 | inspectorDetectorPitch | inspect | unit | acceptance | InspectorAcceptanceTest | 1 | payload | imagingResolution, characterisationProducts | ## Requirements without a verification case diff --git a/runs/wpb-budgets-satisfy.txt b/runs/wpb-budgets-satisfy.txt index 041c3e6..7a46931 100644 --- a/runs/wpb-budgets-satisfy.txt +++ b/runs/wpb-budgets-satisfy.txt @@ -51,64 +51,64 @@ ✓ satisfy captureEnvelope by TethysTug::argent holds (on TethysTug::argent ID: 1) ✓ Verification TethysVerification::captureEnvelopeTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy deliveredMass by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 10) +✓ satisfy deliveredMass by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 8) ✓ Verification TethysVerification::deliveryAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy transferDuration by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 10) +✓ satisfy transferDuration by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 8) ✓ Verification TethysVerification::powerAnalysis verdict: pass standing: holds (observed: 1 run under reverse) ✓ satisfy propellantCapacity by TethysTug::argent holds (on TethysTug::argent ID: 1) ✓ Verification TethysVerification::propellantAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy characterisationProducts by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 10) +✓ satisfy characterisationProducts by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 8) ✓ Verification TethysVerification::characterisationAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy earthImpactExclusion by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 10) +✓ satisfy earthImpactExclusion by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 8) ✓ Verification TethysVerification::returnSafetyAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy droStability by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 10) +✓ satisfy droStability by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 8) ✓ Verification TethysVerification::returnSafetyAnalysis verdict: pass standing: holds (observed: 1 run under reverse) ✓ satisfy thrustRedundancy by TethysTug::argent holds (on TethysTug::argent ID: 1) ✓ Verification TethysVerification::redundancyInspection verdict: pass ✓ Verification TethysVerification::sepCommissioning verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy deflectionMeasurement by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 10) +✓ satisfy deflectionMeasurement by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 8) ✓ Verification TethysVerification::deflectionAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy autonomousSurvival by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 10) +✓ satisfy autonomousSurvival by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 8) ✓ Verification TethysVerification::autonomyTest verdict: pass standing: holds (observed: 1 run under reverse) ✓ satisfy proximityContactEnvironment by TethysTug::argent holds (on TethysTug::argent ID: 1) ✓ Verification TethysVerification::contactSpeedTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy faultResponse by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 10) +✓ satisfy faultResponse by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 8) ✓ Verification TethysVerification::faultResponseTest verdict: pass standing: holds (observed: 1 run under reverse) ✓ satisfy massBudget by TethysTug::argent holds (on TethysTug::argent ID: 1) ✓ Verification TethysVerification::massBudgetAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy inspectorDeployment by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 10) +✓ satisfy inspectorDeployment by tethysSystem.flight holds (on TethysSystem::tethysSystem.flight ID: 8) ✓ Verification TethysVerification::separationTest verdict: pass standing: holds (observed: 1 run under reverse) ✓ satisfy despinCapacity by TethysTug::argent holds (on TethysTug::argent ID: 1) ✓ Verification TethysVerification::despinAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy groundCoverage by tethysSystem.ground holds (on TethysSystem::tethysSystem.ground ID: 24) +✓ satisfy groundCoverage by tethysSystem.ground holds (on TethysSystem::tethysSystem.ground ID: 19) ✓ Verification TethysVerification::groundReadinessDemo verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy commandLatency by tethysSystem.ground holds (on TethysSystem::tethysSystem.ground ID: 24) +✓ satisfy commandLatency by tethysSystem.ground holds (on TethysSystem::tethysSystem.ground ID: 19) ✓ Verification TethysVerification::groundReadinessDemo verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy operatorWorkload by tethysSystem.ground holds (on TethysSystem::tethysSystem.ground ID: 24) +✓ satisfy operatorWorkload by tethysSystem.ground holds (on TethysSystem::tethysSystem.ground ID: 19) ✓ Verification TethysVerification::groundReadinessDemo verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy sepThrust by argent.sep holds (on TethysTug::argent.sep ID: 15) +✓ satisfy sepThrust by argent.sep holds (on TethysTug::argent.sep ID: 12) ✓ Verification TethysVerification::sepHotFireTest verdict: pass ✓ Verification TethysVerification::thrustModelValidation verdict: pass ✓ Verification TethysVerification::sepCommissioning verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy arrayPowerAtTarget by argent.eps holds (on TethysTug::argent.eps ID: 29) +✓ satisfy arrayPowerAtTarget by argent.eps holds (on TethysTug::argent.eps ID: 11) ✓ Verification TethysVerification::powerAnalysis verdict: pass standing: holds (observed: 1 run under reverse) ✓ satisfy captureBagDiameter by argent.captureSystem holds (on TethysTug::argent.captureSystem ID: 2) @@ -117,191 +117,192 @@ ✓ satisfy contactSpeedTolerance by argent.captureSystem holds (on TethysTug::argent.captureSystem ID: 2) ✓ Verification TethysVerification::contactSpeedTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy despinTorque by argent.rcs holds (on TethysTug::argent.rcs ID: 22) +✓ satisfy despinTorque by argent.rcs holds (on TethysTug::argent.rcs ID: 18) ✓ Verification TethysVerification::despinAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy hydrazineLoad by argent.rcs holds (on TethysTug::argent.rcs ID: 22) +✓ satisfy hydrazineLoad by argent.rcs holds (on TethysTug::argent.rcs ID: 18) ✓ Verification TethysVerification::despinAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy deepSpaceEirp by argent.telecom holds (on TethysTug::argent.telecom ID: 31) +✓ satisfy deepSpaceEirp by argent.telecom holds (on TethysTug::argent.telecom ID: 25) ✓ Verification TethysVerification::linkBudgetTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy proximityLinkRange by argent.telecom holds (on TethysTug::argent.telecom ID: 31) +✓ satisfy proximityLinkRange by argent.telecom holds (on TethysTug::argent.telecom ID: 25) ✓ Verification TethysVerification::inspectorAcceptanceTest verdict: pass ✓ Verification TethysVerification::inspectorCommissioning verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy relativeNavigation by argent.gnc holds (on TethysTug::argent.gnc ID: 32) +✓ satisfy relativeNavigation by argent.gnc holds (on TethysTug::argent.gnc ID: 26) ✓ Verification TethysVerification::proximityNavigationTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy faultDetectionLatency by argent.cdh holds (on TethysTug::argent.cdh ID: 33) +✓ satisfy faultDetectionLatency by argent.cdh holds (on TethysTug::argent.cdh ID: 27) ✓ Verification TethysVerification::faultResponseTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy heatRejection by argent.thermal holds (on TethysTug::argent.thermal ID: 34) +✓ satisfy heatRejection by argent.thermal holds (on TethysTug::argent.thermal ID: 28) ✓ Verification TethysVerification::thermalBalanceTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy dockingLoads by argent.structure holds (on TethysTug::argent.structure ID: 35) +✓ satisfy dockingLoads by argent.structure holds (on TethysTug::argent.structure ID: 29) ✓ Verification TethysVerification::dockingLoadsAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy inspectorSeparation by argent.structure holds (on TethysTug::argent.structure ID: 35) +✓ satisfy inspectorSeparation by argent.structure holds (on TethysTug::argent.structure ID: 29) ✓ Verification TethysVerification::separationTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy spinStateSensing by argent.sensors holds (on TethysTug::argent.sensors ID: 36) +✓ satisfy spinStateSensing by argent.sensors holds (on TethysTug::argent.sensors ID: 30) ✓ Verification TethysVerification::characterisationAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy imagingResolution by wren.payload holds (on TethysInspector::wren.payload ID: 37) +✓ satisfy imagingResolution by wren.payload holds (on TethysInspector::wren.payload ID: 31) ✓ Verification TethysVerification::inspectorAcceptanceTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy circumnavigationPropellant by wren.propulsion holds (on TethysInspector::wren.propulsion ID: 38) +✓ satisfy circumnavigationPropellant by wren.propulsion holds (on TethysInspector::wren.propulsion ID: 32) ✓ Verification TethysVerification::characterisationAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy keepAlivePower by wren.bus holds (on TethysInspector::wren.bus ID: 39) +✓ satisfy keepAlivePower by wren.bus holds (on TethysInspector::wren.bus ID: 33) ✓ Verification TethysVerification::inspectorAcceptanceTest verdict: pass ✓ Verification TethysVerification::inspectorCommissioning verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy inspectorMass by wren holds (on TethysInspector::wren ID: 20) +✓ satisfy inspectorMass by wren holds (on TethysInspector::wren ID: 16) ✓ Verification TethysVerification::inspectorAcceptanceTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy dopplerForMass by wren.bus holds (on TethysInspector::wren.bus ID: 39) +✓ satisfy dopplerForMass by wren.bus holds (on TethysInspector::wren.bus ID: 33) ✓ Verification TethysVerification::inspectorAcceptanceTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy stationAperture by tethysSystem.ground.network.primaryStation holds (on TethysSystem::tethysSystem.ground.network.primaryStation ID: 40) +✓ satisfy stationAperture by tethysSystem.ground.network.primaryStation holds (on TethysSystem::tethysSystem.ground.network.primaryStation ID: 21) ✓ Verification TethysVerification::linkBudgetTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy stationSpacing by tethysSystem.ground.network holds (on TethysSystem::tethysSystem.ground.network ID: 25) +✓ satisfy stationSpacing by tethysSystem.ground.network holds (on TethysSystem::tethysSystem.ground.network ID: 20) ✓ Verification TethysVerification::groundInspection verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy TethysRequirementsL3L4::rangingAccuracy by tethysSystem.ground.network.fdf holds (on TethysSystem::tethysSystem.ground.network.fdf ID: 41) +✓ satisfy TethysRequirementsL3L4::rangingAccuracy by tethysSystem.ground.network.fdf holds (on TethysSystem::tethysSystem.ground.network.fdf ID: 34) ✓ Verification TethysVerification::deflectionAnalysis verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy impactScreening by tethysSystem.ground.network.fdf holds (on TethysSystem::tethysSystem.ground.network.fdf ID: 41) +✓ satisfy impactScreening by tethysSystem.ground.network.fdf holds (on TethysSystem::tethysSystem.ground.network.fdf ID: 34) ✓ Verification TethysVerification::groundProceduresDemo verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy sequenceTurnaround by tethysSystem.ground.network.moc holds (on TethysSystem::tethysSystem.ground.network.moc ID: 42) +✓ satisfy sequenceTurnaround by tethysSystem.ground.network.moc holds (on TethysSystem::tethysSystem.ground.network.moc ID: 35) ✓ Verification TethysVerification::groundProceduresDemo verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy monitoringAutomation by tethysSystem.ground.network.moc holds (on TethysSystem::tethysSystem.ground.network.moc ID: 42) +✓ satisfy monitoringAutomation by tethysSystem.ground.network.moc holds (on TethysSystem::tethysSystem.ground.network.moc ID: 35) ✓ Verification TethysVerification::groundProceduresDemo verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy scienceArchive by tethysSystem.ground.network.sds holds (on TethysSystem::tethysSystem.ground.network.sds ID: 43) +✓ satisfy scienceArchive by tethysSystem.ground.network.sds holds (on TethysSystem::tethysSystem.ground.network.sds ID: 36) ✓ Verification TethysVerification::groundProceduresDemo verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy thrusterUnitThrust by argent.sep holds (on TethysTug::argent.sep ID: 15) +✓ satisfy thrusterUnitThrust by argent.sep holds (on TethysTug::argent.sep ID: 12) ✓ Verification TethysVerification::sepHotFireTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy powerProcessingEfficiency by argent.sep holds (on TethysTug::argent.sep ID: 15) +✓ satisfy powerProcessingEfficiency by argent.sep holds (on TethysTug::argent.sep ID: 12) ✓ Verification TethysVerification::sepHotFireTest verdict: pass standing: holds (observed: 1 run under reverse) ✓ satisfy cinchMotorTorque by argent.captureSystem holds (on TethysTug::argent.captureSystem ID: 2) ✓ Verification TethysVerification::cinchMotorTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy narrowAngleCameraSensitivity by argent.sensors holds (on TethysTug::argent.sensors ID: 36) +✓ satisfy narrowAngleCameraSensitivity by argent.sensors holds (on TethysTug::argent.sensors ID: 30) ✓ Verification TethysVerification::proximityNavigationTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy fdirTaskPeriod by argent.cdh holds (on TethysTug::argent.cdh ID: 33) +✓ satisfy fdirTaskPeriod by argent.cdh holds (on TethysTug::argent.cdh ID: 27) ✓ Verification TethysVerification::faultResponseTest verdict: pass standing: holds (observed: 1 run under reverse) -✓ satisfy inspectorDetectorPitch by wren.payload holds (on TethysInspector::wren.payload ID: 37) +✓ satisfy inspectorDetectorPitch by wren.payload holds (on TethysInspector::wren.payload ID: 31) ✓ Verification TethysVerification::inspectorAcceptanceTest verdict: pass standing: holds (observed: 1 run under reverse) ? satisfy verificationViewpoint needs an object of TethysVerification::VvMatrix: none is instantiated -✓ satisfy massBudgetCloses by massBudget holds (on TethysBudgets::massBudget ID: 269) +✓ satisfy massBudgetCloses by massBudget holds (on TethysBudgets::massBudget ID: 248) standing: holds (observed: 1 run under reverse) -✓ satisfy powerBudgetCloses by powerBudget holds (on TethysBudgets::powerBudget ID: 406) - standing: holds (observed: 1 run under reverse) -✓ satisfy energyBudgetCloses by energyBudget holds (on TethysBudgets::energyBudget ID: 408) +✗ satisfy powerBudgetCloses by powerBudget fails (on TethysBudgets::powerBudget ID: 385) + Required condition evaluated to false: capability >= demand * 1.0 + policy.systemMargin + standing: violated (witnessed: 1 run under reverse) +✓ satisfy energyBudgetCloses by energyBudget holds (on TethysBudgets::energyBudget ID: 387) standing: holds (observed: 1 run under reverse) -✓ satisfy inspectorEnergyBudgetCloses by inspectorEnergyBudget holds (on TethysBudgets::inspectorEnergyBudget ID: 409) +✓ satisfy inspectorEnergyBudgetCloses by inspectorEnergyBudget holds (on TethysBudgets::inspectorEnergyBudget ID: 388) standing: holds (observed: 1 run under reverse) -✓ satisfy dataBudgetCloses by dataBudget holds (on TethysBudgets::dataBudget ID: 410) +✓ satisfy dataBudgetCloses by dataBudget holds (on TethysBudgets::dataBudget ID: 389) standing: holds (observed: 1 run under reverse) -✓ satisfy propellantBudgetCloses by propellantBudget holds (on TethysBudgets::propellantBudget ID: 411) +✓ satisfy propellantBudgetCloses by propellantBudget holds (on TethysBudgets::propellantBudget ID: 390) standing: holds (observed: 1 run under reverse) -✓ satisfy hydrazineBudgetCloses by hydrazineBudget holds (on TethysBudgets::hydrazineBudget ID: 413) +✓ satisfy hydrazineBudgetCloses by hydrazineBudget holds (on TethysBudgets::hydrazineBudget ID: 392) standing: holds (observed: 1 run under reverse) -✓ satisfy pointingBudgetCloses by pointingBudget holds (on TethysBudgets::pointingBudget ID: 414) +✓ satisfy pointingBudgetCloses by pointingBudget holds (on TethysBudgets::pointingBudget ID: 393) standing: holds (observed: 1 run under reverse) -✓ satisfy thermalBudgetCloses by thermalBudget holds (on TethysBudgets::thermalBudget ID: 415) +✓ satisfy thermalBudgetCloses by thermalBudget holds (on TethysBudgets::thermalBudget ID: 394) standing: holds (observed: 1 run under reverse) -✓ satisfy captureLoadBudgetCloses by captureLoadBudget holds (on TethysBudgets::captureLoadBudget ID: 416) +✓ satisfy captureLoadBudgetCloses by captureLoadBudget holds (on TethysBudgets::captureLoadBudget ID: 395) standing: holds (observed: 1 run under reverse) -✓ satisfy radiationBudgetCloses by radiationBudget holds (on TethysBudgets::radiationBudget ID: 417) +✓ satisfy radiationBudgetCloses by radiationBudget holds (on TethysBudgets::radiationBudget ID: 396) standing: holds (observed: 1 run under reverse) -✓ satisfy magneticCleanlinessCloses by magneticCleanlinessBudget holds (on TethysBudgets::magneticCleanlinessBudget ID: 418) +✓ satisfy magneticCleanlinessCloses by magneticCleanlinessBudget holds (on TethysBudgets::magneticCleanlinessBudget ID: 397) standing: holds (observed: 1 run under reverse) -✓ satisfy reliabilityBudgetCloses by reliabilityBudget holds (on TethysBudgets::reliabilityBudget ID: 419) +✓ satisfy reliabilityBudgetCloses by reliabilityBudget holds (on TethysBudgets::reliabilityBudget ID: 398) standing: holds (observed: 1 run under reverse) -✓ satisfy processorBudgetCloses by processorBudget holds (on TethysBudgets::processorBudget ID: 420) +✓ satisfy processorBudgetCloses by processorBudget holds (on TethysBudgets::processorBudget ID: 399) standing: holds (observed: 1 run under reverse) -✓ satisfy xDownlinkCloses by xDownlinkAtMaximumRange holds (on TethysLinkBudgets::xDownlinkAtMaximumRange ID: 421) +✓ satisfy xDownlinkCloses by xDownlinkAtMaximumRange holds (on TethysLinkBudgets::xDownlinkAtMaximumRange ID: 400) standing: holds (observed: 1 run under reverse) -✓ satisfy xUplinkCloses by xUplinkAtMaximumRange holds (on TethysLinkBudgets::xUplinkAtMaximumRange ID: 422) +✓ satisfy xUplinkCloses by xUplinkAtMaximumRange holds (on TethysLinkBudgets::xUplinkAtMaximumRange ID: 401) standing: holds (observed: 1 run under reverse) -✓ satisfy kaDownlinkCloses by kaDownlinkAtTargetRange holds (on TethysLinkBudgets::kaDownlinkAtTargetRange ID: 423) +✓ satisfy kaDownlinkCloses by kaDownlinkAtTargetRange holds (on TethysLinkBudgets::kaDownlinkAtTargetRange ID: 402) standing: holds (observed: 1 run under reverse) -✓ satisfy droDownlinkCloses by xDownlinkInDro holds (on TethysLinkBudgets::xDownlinkInDro ID: 424) +✓ satisfy droDownlinkCloses by xDownlinkInDro holds (on TethysLinkBudgets::xDownlinkInDro ID: 403) standing: holds (observed: 1 run under reverse) -✓ satisfy proximityLinkCloses by proximityReturnLink holds (on TethysLinkBudgets::proximityReturnLink ID: 425) +✓ satisfy proximityLinkCloses by proximityReturnLink holds (on TethysLinkBudgets::proximityReturnLink ID: 404) standing: holds (observed: 1 run under reverse) -✓ satisfy relayCarriesCharacterisation by largeTargetRelayLoad holds (on TethysLinkBudgets::largeTargetRelayLoad ID: 426) +✓ satisfy relayCarriesCharacterisation by largeTargetRelayLoad holds (on TethysLinkBudgets::largeTargetRelayLoad ID: 405) standing: holds (observed: 1 run under reverse) -✓ satisfy dictionaryConsistent by dictionary holds (on TethysOperations::dictionary ID: 427) +✓ satisfy dictionaryConsistent by dictionary holds (on TethysOperations::dictionary ID: 406) standing: holds (observed: 1 run under reverse) -✓ satisfy operationsReadiness by orrStatus holds (on TethysOperations::orrStatus ID: 429) +✓ satisfy operationsReadiness by orrStatus holds (on TethysOperations::orrStatus ID: 408) standing: holds (observed: 1 run under reverse) -✓ satisfy resourceMarginPositive by xenonTrend holds (on TethysOperations::xenonTrend ID: 430) +✓ satisfy resourceMarginPositive by xenonTrend holds (on TethysOperations::xenonTrend ID: 409) standing: holds (observed: 1 run under reverse) -✓ satisfy resourceMarginPositive by batteryCapacityTrend holds (on TethysOperations::batteryCapacityTrend ID: 431) +✓ satisfy resourceMarginPositive by batteryCapacityTrend holds (on TethysOperations::batteryCapacityTrend ID: 410) standing: holds (observed: 1 run under reverse) -✓ satisfy extendedMissionAffordable by extendedMission holds (on TethysOperations::extendedMission ID: 432) +✓ satisfy extendedMissionAffordable by extendedMission holds (on TethysOperations::extendedMission ID: 411) standing: holds (observed: 1 run under reverse) -? satisfy requirementsViewpoint could not be evaluated (on TethysViews::requirementsTree ID: 433) +? satisfy requirementsViewpoint could not be evaluated (on TethysViews::requirementsTree ID: 412) Error: satisfaction satisfy requirementsViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy requirementsViewpoint: no condition to evaluate) -? satisfy requirementsViewpoint could not be evaluated (on TethysViews::requirementsTable ID: 435) +? satisfy requirementsViewpoint could not be evaluated (on TethysViews::requirementsTable ID: 414) Error: satisfaction satisfy requirementsViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy requirementsViewpoint: no condition to evaluate) -? satisfy interfaceViewpoint could not be evaluated (on TethysViews::segmentInterfaces ID: 437) +? satisfy interfaceViewpoint could not be evaluated (on TethysViews::segmentInterfaces ID: 416) Error: satisfaction satisfy interfaceViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy interfaceViewpoint: no condition to evaluate) -? satisfy interfaceViewpoint could not be evaluated (on TethysViews::flightSegmentWiring ID: 439) +? satisfy interfaceViewpoint could not be evaluated (on TethysViews::flightSegmentWiring ID: 418) Error: satisfaction satisfy interfaceViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy interfaceViewpoint: no condition to evaluate) -? satisfy interfaceViewpoint could not be evaluated (on TethysViews::tugPowerBus ID: 441) +? satisfy interfaceViewpoint could not be evaluated (on TethysViews::tugPowerBus ID: 420) Error: satisfaction satisfy interfaceViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy interfaceViewpoint: no condition to evaluate) -? satisfy interfaceViewpoint could not be evaluated (on TethysViews::interfaceDefinitions ID: 443) +? satisfy interfaceViewpoint could not be evaluated (on TethysViews::interfaceDefinitions ID: 422) Error: satisfaction satisfy interfaceViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy interfaceViewpoint: no condition to evaluate) -? satisfy budgetViewpoint could not be evaluated (on TethysViews::massBudget ID: 445) +? satisfy budgetViewpoint could not be evaluated (on TethysViews::massBudget ID: 424) Error: satisfaction satisfy budgetViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy budgetViewpoint: no condition to evaluate) -? satisfy operationsViewpoint could not be evaluated (on TethysViews::missionTimeline ID: 447) +? satisfy operationsViewpoint could not be evaluated (on TethysViews::missionTimeline ID: 426) Error: satisfaction satisfy operationsViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy operationsViewpoint: no condition to evaluate) -? satisfy operationsViewpoint could not be evaluated (on TethysViews::projectLifecycle ID: 450) +? satisfy operationsViewpoint could not be evaluated (on TethysViews::projectLifecycle ID: 429) Error: satisfaction satisfy operationsViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy operationsViewpoint: no condition to evaluate) -? satisfy operationsViewpoint could not be evaluated (on TethysViews::modeMachine ID: 453) +? satisfy operationsViewpoint could not be evaluated (on TethysViews::modeMachine ID: 432) Error: satisfaction satisfy operationsViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy operationsViewpoint: no condition to evaluate) -? satisfy assuranceViewpoint could not be evaluated (on TethysViews::modeMachine ID: 453) +? satisfy assuranceViewpoint could not be evaluated (on TethysViews::modeMachine ID: 432) Error: satisfaction satisfy assuranceViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy assuranceViewpoint: no condition to evaluate) -? satisfy TethysViews::interfaceViewpoint could not be evaluated (on TethysViewsTooling::systemOverview ID: 455) +? satisfy TethysViews::interfaceViewpoint could not be evaluated (on TethysViewsTooling::systemOverview ID: 434) Error: satisfaction satisfy TethysViews::interfaceViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy TethysViews::interfaceViewpoint: no condition to evaluate) -? satisfy TethysViews::budgetViewpoint could not be evaluated (on TethysViewsTooling::systemOverview ID: 455) +? satisfy TethysViews::budgetViewpoint could not be evaluated (on TethysViewsTooling::systemOverview ID: 434) Error: satisfaction satisfy TethysViews::budgetViewpoint: no condition to evaluate standing: not covered (satisfaction satisfy TethysViews::budgetViewpoint: no condition to evaluate) -✓ satisfy argentMassWithinTolerance by argentFM holds (on TethysAsBuilt::argentFM ID: 459) +✓ satisfy argentMassWithinTolerance by argentFM holds (on TethysAsBuilt::argentFM ID: 438) standing: holds (observed: 1 run under reverse) -✗ satisfy wrenMassWithinTolerance by wrenFM fails (on TethysAsBuilt::wrenFM ID: 460) +✗ satisfy wrenMassWithinTolerance by wrenFM fails (on TethysAsBuilt::wrenFM ID: 439) Required condition evaluated to false: unit.massDeviation <= unit.massTolerance and unit.massDeviation >= - unit.massTolerance standing: violated (witnessed: 1 run under reverse) -✓ satisfy heliocentricDisposal by argentAtEndOfLife holds (on TethysDisposal::argentAtEndOfLife ID: 461) +✓ satisfy heliocentricDisposal by argentAtEndOfLife holds (on TethysDisposal::argentAtEndOfLife ID: 440) standing: holds (observed: 1 run under reverse) -✓ satisfy passivation by argentAtEndOfLife.passivated holds (on TethysDisposal::argentAtEndOfLife.passivated ID: 463) +✓ satisfy passivation by argentAtEndOfLife.passivated holds (on TethysDisposal::argentAtEndOfLife.passivated ID: 442) standing: holds (observed: 1 run under reverse) -✓ satisfy separationSafety by argentFM.captureSystem holds (on TethysAsBuilt::argentFM.captureSystem ID: 465) +✓ satisfy separationSafety by argentFM.captureSystem holds (on TethysAsBuilt::argentFM.captureSystem ID: 444) standing: holds (observed: 1 run under reverse) exit 2 diff --git a/runs/wpb-margin-policy.txt b/runs/wpb-margin-policy.txt index 050d1c0..5e8514f 100644 --- a/runs/wpb-margin-policy.txt +++ b/runs/wpb-margin-policy.txt @@ -51,7 +51,7 @@ ✓ Constraint TethysMarginPolicy::ClosesWithMargin(1200.0, 1000.0, TethysMarginPolicy::activePolicy) passed standing: holds (observed: 1 run under reverse) ✓ TethysMarginPolicy::ContingencyFor(TethysMarginPolicy::Maturity::modified, TethysMarginPolicy::activePolicy) - = [0.2] + = [0.1] standing: value (observed: 1 run under reverse) ✓ TethysMarginPolicy::WithContingency(100.0, TethysMarginPolicy::Maturity::newDesign, TethysMarginPolicy::activePolicy) = [120.0] diff --git a/runs/wpb-power-budget-safe.txt b/runs/wpb-power-budget-safe.txt index 59cde61..d9765ea 100644 --- a/runs/wpb-power-budget-safe.txt +++ b/runs/wpb-power-budget-safe.txt @@ -100,4 +100,4 @@ loaded 50 files: ✓ package TethysDisposal ✓ package TethysHouseRules ✓ TethysBudgets::powerBudget.demandSafe - = 0.0 [W] + = 832.0 [W] diff --git a/runs/wpb-sep-thrust-aphelion.txt b/runs/wpb-sep-thrust-aphelion.txt index 7f625a3..1d22acf 100644 --- a/runs/wpb-sep-thrust-aphelion.txt +++ b/runs/wpb-sep-thrust-aphelion.txt @@ -100,4 +100,4 @@ loaded 50 files: ✓ package TethysDisposal ✓ package TethysHouseRules ✓ TethysBudgets::propellantBudget.thrustAtAphelion - = 1.7264639114426235 [N] + = 1.6926786035489827 [N] diff --git a/runs/wpb-thrusting-time-large.txt b/runs/wpb-thrusting-time-large.txt index ca1b990..84be0fb 100644 --- a/runs/wpb-thrusting-time-large.txt +++ b/runs/wpb-thrusting-time-large.txt @@ -100,4 +100,4 @@ loaded 50 files: ✓ package TethysDisposal ✓ package TethysHouseRules ✓ TethysBudgets::propellantBudget.thrustingTimeLarge - = 87971755.89378008 [s] + = 89727643.19133554 [s] diff --git a/runs/wpc-capture-sequence.txt b/runs/wpc-capture-sequence.txt index eb7a2c1..cae44f6 100644 --- a/runs/wpc-capture-sequence.txt +++ b/runs/wpc-capture-sequence.txt @@ -48,5 +48,19 @@ ✓ package TethysImportedData ✓ package TethysDisposal ✓ package TethysHouseRules -sysml: instantiation failed: performed action capture of object #1: invoke action CommitDecision: initialize action: initialize attributes: eval attribute default go: type mismatch: operator '<=' is not defined for a sequence and a quantity; DataFunctions::'<=' takes one DataValue per operand +✓ Created instance of TethysProximityOps::captureOperation + ID: 1 + Use %features TethysProximityOps::captureOperation to inspect +error: in capture: feature value commit.go: type mismatch: operator '<=' is not defined for a quantity and a sequence; DataFunctions::'<=' takes one DataValue per operand +warning: TethysProximityOps::captureOperation: materialization is bounded; not every feature value was checked +✓ Debugging action "capture" performed by object #1 of "TethysProximityOps::captureOperation" +note: object #1 of "TethysProximityOps::captureOperation" already performs "TethysProximityOps::CaptureSequence", so this session attaches to that running performance rather than starting a second one (as `%action TethysProximityOps::CaptureSequence` would) + State: Waiting + Tokens: 1 +✓ Advanced to 10000.0 (0 event(s) processed) + Action state: Waiting + Tokens: 1 +sysml: action TethysProximityOps::CaptureSequence stopped at Waiting at simulation time 10000.0 without completing + Token 1: accept contact waiting since step 6 for a message of type ContactLoad + standing: value (observed: 1 run under reverse) exit 2 diff --git a/runs/wpc-envelope-cases.txt b/runs/wpc-envelope-cases.txt index 3849f22..1aad409 100644 --- a/runs/wpc-envelope-cases.txt +++ b/runs/wpc-envelope-cases.txt @@ -48,22 +48,17 @@ ✓ package TethysImportedData ✓ package TethysDisposal ✓ package TethysHouseRules -✗ Constraint TethysCaptureSystem::smallTargetCase::fits failed - Assertion evaluated to false: body.meanDiameter <= system.maximumBodyDiameter and body.mass <= system.maximumBodyMass and body.rotationPeriod >= system.minimumRotationPeriod and body.spinState == SpinState::principalAxis - standing: violated (witnessed: 1 run under reverse) -✗ Constraint TethysCaptureSystem::nominalTargetCase::fits failed - Assertion evaluated to false: body.meanDiameter <= system.maximumBodyDiameter and body.mass <= system.maximumBodyMass and body.rotationPeriod >= system.minimumRotationPeriod and body.spinState == SpinState::principalAxis - standing: violated (witnessed: 1 run under reverse) -✗ Constraint TethysCaptureSystem::largeTargetCase::fits failed - Assertion evaluated to false: body.meanDiameter <= system.maximumBodyDiameter and body.mass <= system.maximumBodyMass and body.rotationPeriod >= system.minimumRotationPeriod and body.spinState == SpinState::principalAxis - standing: violated (witnessed: 1 run under reverse) -✗ Constraint TethysCaptureSystem::densestTargetCase::fits failed - Assertion evaluated to false: body.meanDiameter <= system.maximumBodyDiameter and body.mass <= system.maximumBodyMass and body.rotationPeriod >= system.minimumRotationPeriod and body.spinState == SpinState::principalAxis - standing: violated (witnessed: 1 run under reverse) +✓ Constraint TethysCaptureSystem::smallTargetCase::fits passed + standing: holds (observed: 1 run under reverse) +✓ Constraint TethysCaptureSystem::nominalTargetCase::fits passed + standing: holds (observed: 1 run under reverse) +✓ Constraint TethysCaptureSystem::largeTargetCase::fits passed + standing: holds (observed: 1 run under reverse) +✓ Constraint TethysCaptureSystem::densestTargetCase::fits passed + standing: holds (observed: 1 run under reverse) ✓ Constraint TethysCaptureSystem::largestTargetCase::fits passed standing: holds (observed: 1 run under reverse) ✓ Constraint TethysCaptureSystem::fastSpinTargetCase::fits passed standing: holds (observed: 1 run under reverse) ✓ Constraint TethysCaptureSystem::tumblingTargetCase::fits passed standing: holds (observed: 1 run under reverse) -exit 1 diff --git a/runs/wpd-space-ground-icd-document.txt b/runs/wpd-space-ground-icd-document.txt index b03a185..6cf376e 100644 --- a/runs/wpd-space-ground-icd-document.txt +++ b/runs/wpd-space-ground-icd-document.txt @@ -114,17 +114,17 @@ loaded 50 files: *Parameters both sides agree on* -| name | type | -| --- | --- | -| uplinkFrequency | ISQSpaceTime::FrequencyValue | -| xDownlinkFrequency | ISQSpaceTime::FrequencyValue | -| kaDownlinkFrequency | ISQSpaceTime::FrequencyValue | -| uplinkModulation | TethysIcds::Modulation | -| downlinkModulation | TethysIcds::Modulation | -| downlinkCoding | TethysIcds::ChannelCoding | -| minimumDownlinkRate | ISQInformation::BinaryDigitRateValue | -| maximumDownlinkRate | ISQInformation::BinaryDigitRateValue | -| uplinkRate | ISQInformation::BinaryDigitRateValue | -| rangingTone | ISQSpaceTime::FrequencyValue | -| packetProtocol | ScalarValues::String | -| downlinkBand | TethysMeridian::RfBand | +| name | type | valuation | +| --- | --- | --- | +| uplinkFrequency | ISQSpaceTime::FrequencyValue | 7165000000 \[Hz\] | +| xDownlinkFrequency | ISQSpaceTime::FrequencyValue | 8445000000 \[Hz\] | +| kaDownlinkFrequency | ISQSpaceTime::FrequencyValue | 32050000000 \[Hz\] | +| uplinkModulation | TethysIcds::Modulation | bpsk | +| downlinkModulation | TethysIcds::Modulation | qpsk | +| downlinkCoding | TethysIcds::ChannelCoding | turboRateSixth | +| minimumDownlinkRate | ISQInformation::BinaryDigitRateValue | 2000 \[bit/s\] | +| maximumDownlinkRate | ISQInformation::BinaryDigitRateValue | 4000000 \[bit/s\] | +| uplinkRate | ISQInformation::BinaryDigitRateValue | 2000 \[bit/s\] | +| rangingTone | ISQSpaceTime::FrequencyValue | 1000000 \[Hz\] | +| packetProtocol | ScalarValues::String | space packet, telemetry transfer frames | +| downlinkBand | TethysMeridian::RfBand | xBand | diff --git a/scripts/fetch-tools.sh b/scripts/fetch-tools.sh index a12cba0..65d5edf 100755 --- a/scripts/fetch-tools.sh +++ b/scripts/fetch-tools.sh @@ -1,14 +1,27 @@ #!/bin/sh -# Fetch the tools `make check` needs into build/: the OpenSysML nightly, an OpenSysML source -# checkout (for its "OpenSysML Libraries" sources), the pinned OMG pilot validator and the -# batch pilot validator built against the same pinned jar. +# Fetch the tools `make check` needs into build/: OpenSysML built from source at the pinned +# develop commit (the binary and the "OpenSysML Libraries" sources come from the same checkout, +# so runs/ are reproducible), the pinned OMG pilot validator and the batch pilot validator built +# against the same pinned jar. The commit is the one place the OpenSysML pin lives; `make runs` +# records it (commit + Go version only) in runs/tool-version.txt, so the Go toolchain that +# builds the binary is pinned too (GOTOOLCHAIN fetches it when the host's go differs). set -eu +OPENSYSML_REPO=${OPENSYSML_REPO:-https://github.com/Open-MBEE/OpenSysML} +OPENSYSML_COMMIT=${OPENSYSML_COMMIT:-5cd37f288fef171d62737d6045f4caff772b6014} +export GOTOOLCHAIN=${GOTOOLCHAIN:-go1.25.11} mkdir -p build/opensysml -if [ ! -x build/opensysml/sysml ]; then - curl -fsSL https://raw.githubusercontent.com/Open-MBEE/OpenSysML/develop/install.sh | sh -s -- --version nightly --tools sysml --prefix "$PWD/build/opensysml" -fi if [ ! -d build/opensysml-src ]; then - git clone --depth 1 https://github.com/Open-MBEE/OpenSysML build/opensysml-src + git init -q build/opensysml-src + git -C build/opensysml-src remote add origin "$OPENSYSML_REPO" +fi +if [ "$(git -C build/opensysml-src rev-parse HEAD 2>/dev/null || true)" != "$OPENSYSML_COMMIT" ]; then + git -C build/opensysml-src fetch -q --depth 1 origin "$OPENSYSML_COMMIT" + git -C build/opensysml-src checkout -q --detach FETCH_HEAD + rm -f build/opensysml/sysml +fi +if [ ! -x build/opensysml/sysml ]; then + (cd build/opensysml-src && make build-sysml COMMIT="$OPENSYSML_COMMIT") + cp build/opensysml-src/bin/sysml build/opensysml/sysml fi if [ ! -x build/pilot-sysml-validator/validate-sysml-batch ]; then (cd build/opensysml-src && ./scripts/download-pilot-sysml-validator.sh) diff --git a/scripts/runs.sh b/scripts/runs.sh index c431790..47a6b0b 100755 --- a/scripts/runs.sh +++ b/scripts/runs.sh @@ -134,11 +134,15 @@ runt tooling-montecarlo-continuous $SYSML -analysis TethysAnalysesTooling::retur runt tooling-montecarlo-min $SYSML -analysis TethysAnalysesTooling::returnOverContinuousMass -draws min -runs 1 $MODEL runt tooling-montecarlo-max $SYSML -analysis TethysAnalysesTooling::returnOverContinuousMass -draws max -runs 1 $MODEL run tooling-dynamics $SYSML -action TethysAnalysesTooling::droRevolutionRk4 -action TethysAnalysesTooling::firstThrustArcRk4 $MODEL +run tooling-dro-stability $SYSML -analysis TethysAnalysesTooling::droStabilityRk4 $MODEL run probe-F-F01 $SYSML -action TethysDynamicsIntegratorProbe::droRevolutionRk4 $MODEL model/probes/F-F01-state-space-integrator.sysml run probe-F-F02 $SYSML -analysis TethysVariantSubjectProbe::viaVariant -analysis TethysVariantSubjectProbe::viaConfiguration -analysis TethysVariantSubjectProbe::viaPlainPart $MODEL model/probes/F-F02-variant-as-subject.sysml run probe-F-F07 $SYSML -e "TethysNestedChainProbe::baselineChained.chainedReturnXenon" -e "TethysNestedChainProbe::heavyChained.rendezvousXenon" -e "TethysNestedChainProbe::heavyChained.chainedReturnXenon" $MODEL model/probes/F-F07-nested-chain-step-limit.sysml run probe-F-F03 $SYSML -analysis TethysMetadataInBodyProbe::inline -analysis TethysMetadataInBodyProbe::outside $MODEL model/probes/F-F03-metadata-in-analysis-body.sysml run probe-F-F05 $SYSML -action NestedStateSpaceProbe::fall -analysis NestedStateSpaceProbe::drop model/probes/F-F05-nested-state-space-action.sysml +run probe-F-F09 $SYSML -action FF09::fall -action FF09::fall model/probes/F-F09-second-run-of-state-space-action.sysml +run probe-F-F10 $SYSML -analysis NestedRedefinitionProbe::dropA -analysis NestedRedefinitionProbe::dropC -analysis NestedRedefinitionProbe::dropB model/probes/F-F10-nested-action-redefinition.sysml +run probe-F-C05 $SYSML -instantiate "'F-C05'::operation" -e "'F-C05'::operation.run.system.limit" -e "'F-C05'::operation.run.check.mechanism.limit" -e "'F-C05'::operation.run.check.go" model/probes/F-C05-nested-in-parameter-from-enclosing-in.sysml run probe-F-F04 $SYSML -calc "TethysAmbiguousMinProbe::Smaller(2.0, 3.0)" -calc "TethysAmbiguousMinProbe::Larger(2.0, 3.0)" model/probes/F-F04-ambiguous-min.sysml runt probe-F-F08 $SYSML -analysis TethysSweepQuantityProbe::typed -sweep "speed=1.0..3.0:1.0" model/probes/F-F08-sweep-quantity-range.sysml runt probe-F-F08-plain $SYSML -analysis TethysSweepQuantityProbe::plain -sweep "speedMPerS=1.0..3.0:1.0" model/probes/F-F08-sweep-quantity-range.sysml
L3 subsystem and L4 component requirements
shortName nameVerification::methodVerification::levelVerification::stage verifiedBy cases satisfiedBy
TA-001 sepThrusttestsubsystemqualification SepHotFireTest, ThrustModelValidation, SepCommissioning 3 sep
TA-002 arrayPowerAtTargetanalyzesubsystemqualification PowerAnalysis 1 eps
TA-003 captureBagDiametertestsubsystemqualification CaptureEnvelopeTest 1 captureSystem
TA-004 contactSpeedTolerancetestsubsystemqualification ContactSpeedTest 1 captureSystem
TA-005 despinTorqueanalyzesubsystemqualification DespinAnalysis 1 rcs
TA-006 hydrazineLoadinspectsubsystemacceptance DespinAnalysis 1 rcs
TA-007 deepSpaceEirptestsubsystemacceptance LinkBudgetTest 1 telecom
TA-008 proximityLinkRangetestsubsystemacceptance InspectorAcceptanceTest, InspectorCommissioning 2 telecom
TA-009 relativeNavigationtestsubsystemqualification ProximityNavigationTest 1 gnc
TA-010 faultDetectionLatencytestsubsystemqualification FaultResponseTest 1 cdh
TA-011 heatRejectiontestsubsystemqualification ThermalBalanceTest 1 thermal
TA-012 dockingLoadsanalyzesubsystemqualification DockingLoadsAnalysis 1 structure
TA-013 inspectorSeparationtestsubsystemacceptance SeparationTest 1 structure
TA-014 spinStateSensinganalyzesubsystemqualification CharacterisationAnalysis 1 sensors
TW-001 imagingResolutiontestsubsystemacceptance InspectorAcceptanceTest 1 payload
TW-002 circumnavigationPropellantanalyzesubsystemqualification CharacterisationAnalysis 1 propulsion
TW-003 keepAlivePowertestsubsystemacceptance InspectorAcceptanceTest, InspectorCommissioning 2 bus
TW-004 inspectorMasstestsubsystemacceptance InspectorAcceptanceTest 1 wren
TW-005 dopplerForMasstestsubsystemqualification InspectorAcceptanceTest 1 bus
TG-001 stationApertureinspectsubsystempreLaunch LinkBudgetTest 1 primaryStation
TG-002 stationSpacinginspectsubsystempreLaunch GroundInspection 1 network
TG-003 rangingAccuracydemosubsystempreLaunch DeflectionAnalysis 1 fdf
TG-004 impactScreeningdemosubsystempreLaunch GroundProceduresDemo 1 fdf
TG-005 sequenceTurnarounddemosubsystempreLaunch GroundProceduresDemo 1 moc
TG-006 monitoringAutomationdemosubsystempreLaunch GroundProceduresDemo 1 moc
TG-007 scienceArchivedemosubsystempreLaunch GroundProceduresDemo 1 sds
TC-001 thrusterUnitThrusttestunitqualification SepHotFireTest 1 sep
TC-002 powerProcessingEfficiencytestunitacceptance SepHotFireTest 1 sep
TC-003 cinchMotorTorquetestunitacceptance CinchMotorTest 1 captureSystem
TC-004 narrowAngleCameraSensitivitytestunitqualification ProximityNavigationTest 1 sensors
TC-005 fdirTaskPeriodtestunitacceptance FaultResponseTest 1 cdh
TC-006 inspectorDetectorPitchinspectunitacceptance InspectorAcceptanceTest 1 payload