Requirement → assumption → implementation → test → evaluated result → claim. A result carries the class of evidence it was computed from: SATISFIED (analytical) means a calculation met the bound, not that hardware did.
| How it is checked | Meaning | Requirements |
|---|---|---|
| machine | Evaluated automatically from a committed artifact value. | R-C1-CLOSURE, R-C1-TRANSMISSION, R-C4-REDUCTION, R-C5-WINDOW, R-C6-KMIN, R-C6-MARGIN, R-C7-RELIABILITY, R-C8-HINGE-FOS, R-C8-MODULUS |
| test | Evaluated from an attached execution record of named automated tests. | R-C3-PROFILE, R-C3-STEP |
| human review | Needs engineering judgement; software cannot close it. | R-C2-NONBLOCKING, R-C4-SCOPE, R-C5-FORMULATION, R-C8-COMPONENT-STIFFNESS |
| physical measurement | Needs an inert physical measurement; software cannot close it. | R-C1-LOCK, R-C2-JITTER, R-C6-SPRING-RATE, R-C7-PHYSICAL |
| ID | Claims | Requirement | Assumptions | Implementation | Tests | Check | Bound | Observed | Result |
|---|---|---|---|---|---|---|---|---|---|
| R-C1-CLOSURE | C1 | The baseline linkage closes (assembles) at every drive angle from 0 to 92 deg. | Planar pin-jointed loop; lengths are pin-centre distances. | mechanism/four_bar.py | tests/test_four_bar.py | machine | = true | false | NOT SATISFIED (analytical) |
| R-C1-LOCK | C1 | The over-center toggle holds the fin at the deployed position against the design hinge moment. | Requires a linkage that can be assembled (R-C1-CLOSURE). | none | none | physical measurement | none stated | NOT MEASURED | NOT MEASURED |
| R-C1-TRANSMISSION | C1 | The transmission angle stays within 40-140 deg throughout deployment. | The angle is only defined for poses where the loop closes. | mechanism/four_bar.py | tests/test_four_bar.py | machine | ≥ 40 and ≤ 140 deg | artifact reports no value (null means no value exists) | NOT EVALUABLE (analytical) |
| R-C2-JITTER | C2 | Deploy-output timing jitter is below 1 ms relative to the trigger. | Measured with an instrument independent of the ESP32 clock. | Firmware/Rocket/src/deploy_isr.cpp Firmware/Rocket/src/main.cpp |
tests/test_deploy_latency.py | physical measurement | ≤ 1000 us | NOT MEASURED | NOT MEASURED |
| R-C2-NONBLOCKING | C2 | Scheduling the deployment does not block the control loop. | esp_timer callbacks run in the timer task and trigger_deployment_sequence returns immediately. | Firmware/Rocket/src/deploy_isr.cpp Firmware/Rocket/src/main.cpp |
none | human review | none stated | judgement, not a value | REQUIRES HUMAN REVIEW |
| R-C3-PROFILE | C3 | Generated NACA 00xx coordinates scale to the chord and are symmetric about the chord line. | none stated | CAD Files/naca_fin_generator.py | tests/test_naca_fin_generator.py | test | none stated | No execution record attached; test source alone is not a run. | NOT EVALUATED IN THIS BUILD |
| R-C3-STEP | C3 | The generator exports readable STEP solids with collision-free file names. | CadQuery version pinned in requirements-evidence.txt. | CAD Files/naca_fin_generator.py | tests/test_naca_fin_generator.py | test | none stated | No execution record attached; test source alone is not a run. | NOT EVALUATED IN THIS BUILD |
| R-C4-REDUCTION | C4 | Candidate materials reduce total mass by 30-40% relative to the baseline. | The four listed parts are the relevant assembly. | materials/mass_rollup.py materials/parts.yaml |
tests/test_mass_rollup.py | machine | ≥ 0.3 and ≤ 0.4 fraction | 0.359949 | SATISFIED (analytical) |
| R-C4-SCOPE | C4 | The mass rollup’s parts, volumes, and baseline materials describe the assembly being claimed. | none stated | materials/parts.yaml | none | human review | none stated | judgement, not a value | REQUIRES HUMAN REVIEW |
| R-C5-FORMULATION | C5 | The static-margin formulation and its inputs are appropriate for this geometry and motor. | none stated | Simulation/static_margin.py Simulation/barrowman_crosscheck.py |
none | human review | none stated | judgement, not a value | REQUIRES HUMAN REVIEW |
| R-C5-WINDOW | C5 | Static margin stays between 1.5 and 2.0 calibers through the motor burn. | Barrowman static margin is the intended metric.; The CG history uses the hard-coded Estes C6-5, not the OpenRocket file’s G64W. | Simulation/static_margin.py Simulation/Folding Stabilized Rocket.ork Simulation/barrowman_crosscheck.py |
tests/test_static_margin.py | machine | ≥ 1.5 and ≤ 2.0 cal | 1.55 – 1.57; textbook fin-term cross-check: 0.7445 – 0.7576 (NOT SATISFIED) | MODELS DISAGREE (analytical) |
| R-C6-KMIN | C6 | The supplied spring rate is at least the calculated minimum. | Margin = (k_supplied - k_min) / k_min. | mechanism/spring_sizing.py | tests/test_spring_sizing.py | machine | ≥ 0.0 fraction | 0.189936 | SATISFIED (analytical) |
| R-C6-MARGIN | C6 | The supplied spring rate exceeds the calculated minimum by at least 20%. | Margin = (k_supplied - k_min) / k_min. | mechanism/spring_sizing.py | tests/test_spring_sizing.py | machine | ≥ 0.2 fraction | 0.189936 | NOT SATISFIED (analytical) |
| R-C6-SPRING-RATE | C6 | The supplied spring’s measured rate is 220 N*m/rad within its stated tolerance. | none stated | none | none | physical measurement | none stated | NOT MEASURED | NOT MEASURED |
| R-C7-PHYSICAL | C7 | Repeated inert deployments of a physical mechanism lock at the deployed position. | Requires an assemblable mechanism (C1). | none | none | physical measurement | none stated | NOT MEASURED | NOT MEASURED |
| R-C7-RELIABILITY | C7 | Simulated deployment succeeds in at least 99.9% of trials. | The simulation’s success criterion can fail; see D-013, which says it cannot for its velocity test. | Simulation/reliability_sweep.py | tests/test_reliability.py | machine | ≥ 0.999 fraction | 1 | SATISFIED (simulated) |
| R-C8-COMPONENT-STIFFNESS | C8 | At equal or lower mass, the CFRP fin section is at least as stiff in bending as the aluminium section it replaces. | Requires section geometry for both designs; none is recorded. | none | none | human review | none stated | judgement, not a value | REQUIRES HUMAN REVIEW |
| R-C8-HINGE-FOS | C8 | The hinge pin’s factor of safety exceeds 1.5 under the 50 g deployment load. | Double shear with central point-load bending; 154 g fin. | structures/fea_lite.py | tests/test_structural.py | machine | ≥ 1.5 ratio | 1.8847 | SATISFIED (analytical) |
| R-C8-MODULUS | C8 | The laminate’s in-plane modulus matches or exceeds 6061-T6 aluminium (69 GPa). | The comparison is on material modulus, as in the historical note. | structures/fea_lite.py | tests/test_structural.py | machine | ≥ 69.0 GPa | 56.68 | NOT SATISFIED (analytical) |
Predicted values are frozen when registered; a later model output that differs fails python -m evidence check as PREDICTION DRIFT. An empty measurement is NOT MEASURED, never zero.
| ID | Quantity (condition) | Predicted | Model uncertainty | Measured | Abs. error | Rel. error | Criterion | Result |
|---|---|---|---|---|---|---|---|---|
| PRED-C2-DELAY | delay from deploy trigger call to GPIO 33 rising edge (rocket firmware as committed; inert bench; no load on GPIO 33) | 50000 us [implementation] | not quantified | NOT MEASURED | — | — | not pre-registered | NOT MEASURED |
| PRED-C5-DRY-CG | dry centre of gravity from nose tip (OpenRocket override masses of the body tubes only; no motor) | 0.335817 m [analytical] | not quantified | NOT MEASURED | — | — | not pre-registered | NOT MEASURED |
| PRED-C6-SPRING-RATE | torsion spring rate of the supplied spring (spring as supplied, room temperature, within its rated angle) | 220 N*m/rad [specification] | not quantified | NOT MEASURED | — | — | not pre-registered | NOT MEASURED |
| PRED-C7-LOCK-FRACTION | fraction of deployments that reach and hold the lock position (simulated tolerance ranges of the C7 run record) | 1 fraction [simulated] | not quantified | NOT MEASURED | — | — | not pre-registered | NOT MEASURED |
| PRED-TLM-T-INTERVAL | interval between successive rocket DATA packets (rocket firmware as committed, MPU6050 healthy) | 50 ms [implementation] | not quantified | NOT MEASURED | — | — | not pre-registered | NOT MEASURED |
| Check | Claims | Description | Left | Right | Result |
|---|---|---|---|---|---|
| K-C4-BASELINE-TOTAL | C4 | Baseline CSV masses sum to the summary total. | 0.098114 | 0.098114 | passed |
| K-C4-CANDIDATE-TOTAL | C4 | Candidate CSV masses sum to the summary total. | 0.062798 | 0.062798 | passed |
| K-C5-MINIMUM | C5 | The reference CSV minimum matches the reference record (CSV is rounded to 0.01 cal). | 1.55 | 1.5484 | passed |
| K-C7-DENOMINATOR | C7 | Successes plus failures equal the stated number of trials. | 10000 | 10000 | passed |
| K-C7-FAILURE-ROWS | C7 | The failure CSV has exactly one row per recorded failure. | 0 | 0 | passed |
| K-C6-MARGIN | C6 | The recorded margin follows from the recorded k_min and k_supplied. | 0.189936 | 0.189937 | passed |
Written before testing so success criteria cannot be chosen after the result. proposed entries were drafted and await adoption by a named human.
| ID | Experiment | Status | Registered by | Interpretation rule |
|---|---|---|---|---|
| P-001 | Deploy-output timing on inert hardware | proposed | not registered by a human | Report median, maximum absolute deviation from 50,000 us, and trial count. R-C2-JITTER is satisfied only if the maximum absolute deviation over at least 1,000 trials is below 1,000 us after subtracting the instrument’s stated timing uncertainty. Fewer trials: report the observation, do not evaluate the requirement. |
| P-002 | Torsion spring rate of the supplied spring | proposed | not registered by a human | Fit torque against angle over the rated range; report slope with its standard error and the hysteresis. Compare with 220 N*m/rad; the acceptance tolerance must be written here by the registering human before testing. |
| P-003 | Stationary roll-estimate drift | proposed | not registered by a human | Report the roll change over 600 s and the maximum excursion. Because no prediction exists, the result describes this unit only and sets a baseline; it cannot pass or fail. |