Project 33

Requirement and prediction traceability

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 each requirement can be closed

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

Requirement matrix

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)

Prediction ledger and model-to-measurement comparison

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

Numerical consistency checks

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

Pre-registered experiments

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.