Two parts of the project disagreeing is information. Each entry names both sides, the claims it affects, and the next action. Resolved entries stay, with what resolved them; a record correction is not an engineering review.
| Status | Effect | Count |
|---|---|---|
| OPEN | Contradicts a claim or requirement | 5 |
| OPEN | Informational | 4 |
| OPEN | Weakens a claim’s support | 8 |
| RESOLVED | Contradicts a claim or requirement | 2 |
| RESOLVED | Informational | 3 |
| RESOLVED | Weakens a claim’s support | 2 |
Historical C1 note contradicts its own sweep
| Field | Value |
|---|---|
| Status | RESOLVED |
| Effect | Contradicts a claim or requirement |
| Kind | claim vs artifact — What a claim or note says differs from what its artifact contains. |
| Claims | C1 |
Next action. None for the record; the design question continues as D-002.
Resolution. The note is archived as superseded and the claim no longer repeats its figures. (Record correction in the evidence-discipline change; not an engineering review.)
Found by: Reading the committed JSON against the note during the evidence review of 2026-09-28.
The specified four-bar cannot be assembled
| Field | Value |
|---|---|
| Status | OPEN |
| Effect | Contradicts a claim or requirement |
| Kind | requirement vs model — A model result does not meet a stated requirement. |
| Claims | C1 |
Next action. A human confirms the intended topology and link dimensions; then the model is re-run and reviewed.
Found by: Loop-closure check (circle intersection) added in model revision 2.
C1 model revision 1 reported placeholders as results, and its tests passed on them
| Field | Value |
|---|---|
| Status | RESOLVED |
| Effect | Contradicts a claim or requirement |
| Kind | implementation defect — Software produced values that do not follow from its inputs. |
| Claims | C1 |
Next action. None; keep revision 1 archived as a worked example of a vacuous pass.
Resolution. Revision 2 returns null for unassemblable poses and solves closure by circle intersection; tests check geometry and null handling. (Model and test correction in the evidence-discipline change; software-tested, not engineering-reviewed.)
Found by: Comparing compute_theta4 with direct circle intersection for a linkage that does close.
Over-center locking is claimed but not modeled
| Field | Value |
|---|---|
| Status | OPEN |
| Effect | Contradicts a claim or requirement |
| Kind | claim vs artifact — What a claim or note says differs from what its artifact contains. |
| Claims | C1 |
Next action. Model the locking moment for an assemblable linkage, or state that locking is a physical-test question only.
Found by: Reading the helper’s implementation.
C1 CAD artifacts are illustrative bars, not the modeled mechanism
| Field | Value |
|---|---|
| Status | OPEN |
| Effect | Weakens a claim’s support |
| Kind | simulation vs cad — Simulation or model geometry disagrees with CAD geometry. |
| Claims | C1 |
Next action. Regenerate CAD only after D-002 is resolved; never cite the STEP as evidence the mechanism assembles.
Found by: Reading the CAD script coordinates against the model inputs.
Reference and textbook fin-term formulations disagree about the static-margin window
| Field | Value |
|---|---|
| Status | OPEN |
| Effect | Contradicts a claim or requirement |
| Kind | model vs model — Two models of the same quantity disagree. |
| Claims | C5 |
Next action. A human reviews both formulations against Barrowman (1967) or OpenRocket’s component CP output.
Found by: Independent re-derivation of the fin terms during the 2026-09-28 review.
The static-margin script burns a different motor than the OpenRocket model
| Field | Value |
|---|---|
| Status | OPEN |
| Effect | Weakens a claim’s support |
| Kind | model vs input — A model’s inputs differ from the design source it claims to use. |
| Claims | C5 |
Next action. Use the OpenRocket motor (or justify the substitute) and record the motor mass data source.
Found by: Parsing the motor designation from the .ork file.
Static-margin inputs omit or misread parts of the OpenRocket model
| Field | Value |
|---|---|
| Status | OPEN |
| Effect | Weakens a claim’s support |
| Kind | model vs input — A model’s inputs differ from the design source it claims to use. |
| Claims | C5 |
Next action. Reviewer decides whether the omissions matter at the required precision.
Found by: Comparing parse_ork() with the .ork XML.
Model inputs were revised until paper targets were met
| Field | Value |
|---|---|
| Status | OPEN |
| Effect | Weakens a claim’s support |
| Kind | model tuned to target — Model inputs were revised until a target was met. |
| Claims | C5, C6, C8 |
Next action. Record an independent source for each revised input (drawing, datasheet, measurement), or keep the claims open.
Found by: Reading the divergence log and the preserved pre-change model.
No shared design point across the mass, spring, reliability, and structural models
| Field | Value |
|---|---|
| Status | OPEN |
| Effect | Weakens a claim’s support |
| Kind | model vs model — Two models of the same quantity disagree. |
| Claims | C4, C6, C7, C8 |
Next action. Define one design point in a single reviewed input file that every model reads.
Found by: Cross-reading model inputs during the 2026-09-28 review.
Calculated spring margin is below the stated requirement
| Field | Value |
|---|---|
| Status | OPEN |
| Effect | Contradicts a claim or requirement |
| Kind | requirement vs model — A model result does not meet a stated requirement. |
| Claims | C6 |
Next action. A human changes the spring, the requirement, or the design point, and records why.
Found by: Requirement R-C6-MARGIN evaluated from the design-point record.
Test named for a 20% margin did not enforce it
| Field | Value |
|---|---|
| Status | RESOLVED |
| Effect | Weakens a claim’s support |
| Kind | test vs requirement — A test does not check what its name or claim says. |
| Claims | C6 |
Next action. None.
Resolution. Test replaced; revision 1 archived. (Test correction in the evidence-discipline change.)
Found by: Reading the assertion against the test name.
The reliability simulation cannot produce the failures it counts
| Field | Value |
|---|---|
| Status | OPEN |
| Effect | Weakens a claim’s support |
| Kind | implementation defect — Software produced values that do not follow from its inputs. |
| Claims | C7 |
Next action. Rebuild the simulation so each failure mode it counts can occur, at the shared design point (D-010).
Found by: Reading the success criterion against the integrator’s event handling.
The historical 10,000-trial summary could not be reconstructed from its CSV
| Field | Value |
|---|---|
| Status | RESOLVED |
| Effect | Weakens a claim’s support |
| Kind | claim vs artifact — What a claim or note says differs from what its artifact contains. |
| Claims | C7 |
Next action. None.
Resolution. The simulation now writes a run record with trials, successes, failures, and seed; consistency checks K-C7-DENOMINATOR and K-C7-FAILURE-ROWS tie it to the CSV. (Record correction; reproduction is checked by CI.)
Found by: Evidence Observatory row count (0 data rows).
Laminate modulus is below the aluminium comparison
| Field | Value |
|---|---|
| Status | OPEN |
| Effect | Contradicts a claim or requirement |
| Kind | requirement vs model — A model result does not meet a stated requirement. |
| Claims | C8 |
Next action. Calculate equal-mass section bending stiffness (R-C8-COMPONENT-STIFFNESS) or restate the claim.
Found by: Requirement R-C8-MODULUS evaluated from the CLT output.
Architecture diagram omitted the rocket’s fins-deployed ignition gate
| Field | Value |
|---|---|
| Status | RESOLVED |
| Effect | Informational |
| Kind | documentation vs implementation — Documentation disagrees with firmware or software behavior. |
| Claims | C2 |
Next action. Bench-verify that the refusal now reaches the dashboard CSV.
Resolution. Diagram updated; the rocket now reports CMD_REJECT:ignite_fins_not_deployed and CMD_REJECT:ignite_not_armed over UART, which the launcher already forwards. Compile-verified only. (Documentation and firmware logging change; not bench-verified.)
Found by: Reading the IGNITE branch in processSerialCommands().
Ignition requires deployed fins, but deployment requires a boost-level acceleration
| Field | Value |
|---|---|
| Status | OPEN |
| Effect | Weakens a claim’s support |
| Kind | design logic — Two implemented rules cannot both be satisfied in the intended sequence. |
| Claims | C2 |
Next action. A human decides the intended ordering. On the bench this ordering acts as an extra interlock; do not remove it without a safety review.
Found by: Tracing the nominal command sequence through both firmwares.
Live telemetry timestamps are launcher relay times, not rocket sample times
| Field | Value |
|---|---|
| Status | OPEN |
| Effect | Informational |
| Kind | telemetry vs expected — Recorded telemetry disagrees with its documented meaning or rate. |
| Claims | C2 |
Next action. Proposed protocol change: carry rocket millis, a sequence number, and a boot identifier in DATA. Needs a bench-tested firmware revision.
Progress. The audit labels T as launcher_relay_millis and LOG as rocket_millis, and the docs state each clock domain.
Found by: Reading processSerial2() in the launcher.
Launcher reported 0.0 m altitude when the barometer was missing
| Field | Value |
|---|---|
| Status | RESOLVED |
| Effect | Informational |
| Kind | documentation vs implementation — Documentation disagrees with firmware or software behavior. |
| Claims | none |
Next action. Bench-verify that ENV carries nan with the barometer disconnected.
Resolution. The launcher sends nan for altitude when the barometer is unavailable; the dashboard shows ‘not reported’. Compile-verified only. (Firmware change; not bench-verified.)
Found by: Unknown-is-not-zero audit of telemetry fields.
PID comparison fragmented windows, merged streams, and zero-filled bad samples
| Field | Value |
|---|---|
| Status | RESOLVED |
| Effect | Informational |
| Kind | implementation defect — Software produced values that do not follow from its inputs. |
| Claims | none |
Next action. None.
Resolution. Windows change only when gains change; T and LOG are summarized separately; invalid samples are counted and excluded. (Software change with regression tests.)
Found by: Tracing the launcher’s T-then-STATUS packet order through the analyzer.
Bill of materials does not match the actuators in firmware and CAD
| Field | Value |
|---|---|
| Status | OPEN |
| Effect | Informational |
| Kind | bom vs design — The bill of materials disagrees with the design or firmware. |
| Claims | none |
Next action. Reconcile the BOM with an as-built inventory; record purchased prices where known.
Found by: Counting Servo.attach() calls against the BOM.
The C4 baseline is not the printed prototype
| Field | Value |
|---|---|
| Status | OPEN |
| Effect | Weakens a claim’s support |
| Kind | model vs input — A model’s inputs differ from the design source it claims to use. |
| Claims | C4 |
Next action. State which assembly the 30-40% claim compares, and make the baseline match it.
Found by: Comparing material tables.
OpenRocket screenshots have no recorded model revision
| Field | Value |
|---|---|
| Status | OPEN |
| Effect | Informational |
| Kind | provenance gap — An artifact cannot be traced to the model revision that produced it. |
| Claims | C5 |
Next action. Re-export from the current .ork with its hash and settings recorded, or label the images historical.
Found by: Provenance review of committed images.
The deploy bench sketch measures a timer with the same timer
| Field | Value |
|---|---|
| Status | OPEN |
| Effect | Informational |
| Kind | measurement method — A measurement procedure cannot establish what it is meant to measure. |
| Claims | C2 |
Next action. Use an external instrument on GPIO 33 (P-001). Sketch output can only describe callback-to-poll latency.
Found by: Reading the sketch against requirement R-C2-JITTER.
Superseded models, rejected tests, and historical claims, kept byte for byte. The digest in evidence/archive/index.json makes any edit detectable.
| File | Kind | Originally | Why archived | Discrepancies |
|---|---|---|---|---|
| evidence/archive/C1_four_bar_sweep.v1.json | superseded model output | docs/EVIDENCE/C1_four_bar_sweep.json | Placeholder values (90 deg, 0.0 envelope) reported for linkages that cannot close. | D-001, D-003 |
| evidence/archive/C5_openrocket_pre_retune.ork.xml | prior model | scratch/ork_unzip/rocket.ork | OpenRocket model before the fins were revised to meet the paper’s margin target. | D-009, D-023 |
| evidence/archive/notes-v1/C1_four_bar.md | historical claim | docs/EVIDENCE/C1_four_bar.md | Statements contradicted by its own sweep. | D-001, D-004 |
| evidence/archive/notes-v1/C2_latency.md | historical claim | docs/EVIDENCE/C2_latency.md | Replaced by the generated claim passport. | — |
| evidence/archive/notes-v1/C3_naca_sweep.md | historical claim | docs/EVIDENCE/C3_naca_sweep.md | Replaced by the generated claim passport. | — |
| evidence/archive/notes-v1/C4_delta.md | historical claim | docs/EVIDENCE/C4_delta.md | Replaced by the generated claim passport. | D-010, D-022 |
| evidence/archive/notes-v1/C5_static_margin.md | historical claim | docs/EVIDENCE/C5_static_margin.md | Generated by the model script with a ‘confirms’ verdict; replaced by the passport. | D-006, D-007 |
| evidence/archive/notes-v1/C6_spring_sizing.md | historical claim | docs/EVIDENCE/C6_spring_sizing.md | Replaced by the generated claim passport. | D-011 |
| evidence/archive/notes-v1/C7_reliability.md | historical claim | docs/EVIDENCE/C7_reliability.md | Summary not reconstructable from its CSV; replaced by the run record and passport. | D-014 |
| evidence/archive/notes-v1/C8_clt.md | historical claim | docs/EVIDENCE/C8_clt.md | Replaced by the generated claim passport. | D-015 |
| evidence/archive/notes-v1/C8_hinge_fos.md | historical claim | docs/EVIDENCE/C8_hinge_fos.md | Model output is now structured JSON; replaced by the passport. | — |
| evidence/archive/test_four_bar.v1.py.txt | rejected test | tests/test_four_bar.py | Passed vacuously on placeholder values. | D-003 |
| evidence/archive/test_spring_sizing.v1.py.txt | rejected test | tests/test_spring_sizing.py | Named for a 20% margin but accepted negative margins. | D-012 |