P13-S29 amendment 1 executed: edits 1, 2 and 4; A1-A5 pass; mutations resume at M2
Edit 1 — §3's M1 row now states the measured radius: C6 and C7 each fail *both*
pin-10 order tests, and the legacy `f4` assertion fails for neither. The
superseded sentence survives exactly once, in §6.1's blockquote, where it is a
dated quotation of what was corrected.
Edit 2 — §3's preamble gains an append. Its "Four cells were measured" sentence
is left unedited: it is accurate about what was measured before ratification,
and rewriting it would destroy a true historical claim to fix a staleness. Six
cells are now measured, and the append says which two joined and why the
criterion that excluded them was wrong.
Edit 4 — the annex gains §8, equal to §6.5c's pinned source template with its
single hash slot filled. §5 and §7 are untouched and hash to the values pinned
at ratification; verified byte-identical against 29ef3af's blob, halt notice and
both mismatch marks intact. The execution record is appended to, never
reconciled — the mismatch is the evidence.
A1 §3 correction, superseded sentence occurring exactly once
A2 discharged by the dated transcripts in annex §5.3 and §5.4; not re-run
A3 no implementation, test or fixture change attributable to the amendment;
commit touches exactly two spec files; workspace at 44/1604/0/0
A4 §8 equals the template; §5 and §7 byte-identical to the oracle
A5 §6 in its ratified form; pin 12's transitions untouched
M1 is complete. C4, C5, C8, C9 and C10 matched their dispatched cells; C6 and C7
match the corrected cells. The mutation sequence resumes at M2, and its
transcripts land in annex §9 — §5 is closed at M1 by the digest gate.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ps1szk2mSfgp4Cz21eVH9x
This commit is contained in:
parent
29ef3af69c
commit
e7bd12c19e
|
|
@ -1506,6 +1506,8 @@ predicted — M2a by 10 false positives and 17 omissions, M17·C1 by naming 7 wh
|
|||
18 fail and including a test (`f4`) that belongs to C2, M17·C2 and C3 by
|
||||
predicting legacy observers that measurement put at 1 and 0.*
|
||||
|
||||
**Execution measured a fifth and sixth cell, M1·C6 and M1·C7; amendment 1 records them and authorizes their corrected radii.** They are not among the four because they reach only tests this contract writes — the criterion that sent the other four to measurement was *reaching tests the contract did not write*, and that criterion was wrong. **The operative property is whether a fixture is shared, not who authored the test.**
|
||||
|
||||
**Static derivation was attempted and failed.** Revision I enumerated the 19
|
||||
`!fires(…)` assertions and grouped them by score binding, yielding 13 tests.
|
||||
**Measured against a disposable implementation — `check_invariant` with its
|
||||
|
|
@ -1540,7 +1542,7 @@ execution confirms it and any difference is a finding.*
|
|||
|
||||
| M | Mutation (complete, applicable) | Must fail — exhaustively, and why |
|
||||
|---|---|---|
|
||||
| M1·C4…C10 | Re-tag **one** rider emission back to `ViolationKind::Invariant(CrossCuttingRefsResolve)` — **seven separate mutations, one per requirement condition** | That condition's pin-10 test, **plus its legacy observer, plus the requirement discriminator where it uses that condition**: `requirement_selector_discriminates_its_payload` is built from **C5 and C8**, so **M1·C5 and M1·C8 also fail it**. Derived per condition: **C4, C5** also fail `f4_tempo_segment_structural_defects_fire`; **C8** also fails `f3_aleatoric_dag_referencing_absent_event_fires` **and** `mixed_fixture_splits_by_arm` (C8 is in the pinned mixed fixture); **C9** also fails `f3_aleatoric_bounds_key_absent_and_reversed_window_fire`; **C10** also fails the migrated `cmn_chromatic_accidental_in_edo_31_fires` **and** `display_renders_each_arm_exactly`, whose requirement side uses a real accidental violation. **C6 and C7 fail their pin-10 test alone**: the legacy `f4` assertion is one fixture tripping *both*, so re-tagging one leaves the other still reporting the same label and the legacy assertion still passes |
|
||||
| M1·C4…C10 | Re-tag **one** rider emission back to `ViolationKind::Invariant(CrossCuttingRefsResolve)` — **seven separate mutations, one per requirement condition** | That condition's pin-10 test, **plus its legacy observer, plus the requirement discriminator where it uses that condition**: `requirement_selector_discriminates_its_payload` is built from **C5 and C8**, so **M1·C5 and M1·C8 also fail it**. Derived per condition: **C4, C5** also fail `f4_tempo_segment_structural_defects_fire`; **C8** also fails `f3_aleatoric_dag_referencing_absent_event_fires` **and** `mixed_fixture_splits_by_arm` (C8 is in the pinned mixed fixture); **C9** also fails `f3_aleatoric_bounds_key_absent_and_reversed_window_fire`; **C10** also fails the migrated `cmn_chromatic_accidental_in_edo_31_fires` **and** `display_renders_each_arm_exactly`, whose requirement side uses a real accidental violation. **C6 and C7 each fail *both* pin-10 order tests, and the legacy `f4` assertion fails for neither.** `f4` holds one fixture tripping both conditions and asserts on the label, so the surviving sibling keeps supplying it — but pin 10's C6 and C7 tests stand in that same relation to *each other*: both are `two_segments(seed, (2, 3), (1, 2))`, which pin 10 establishes emits C6 **and** C7. Re-tagging either puts an `Invariant` violation into both fixtures, so the sibling's **fourth** assertion — *the aggregate's invariant arm is empty* — fails alongside the mutated condition's own pair assertion. **Measured, not derived; the fixtures are shared by pin 10's deliberate choice and cannot be separated without the end-before-start segment pin 10 rejects.** |
|
||||
| M2 | `check_invariant` matches both arms | **All seven** C4–C10 tests, via their absence assertion, **and** `mixed_fixture_splits_by_arm`, which pin 10 now requires to exercise **both selectors** and not only the aggregate. *Not* C1–C3, which assert presence and are unaffected by widening |
|
||||
| M2a | `check_invariant` matches `ViolationKind::Invariant(_)`, ignoring `which` — **the wildcard replaces the payload match; the requirement arm is untouched** | `invariant_selector_discriminates_its_payload`, **and the 20 existing tests measured below**, all in `invariants::g3b_measure20_tests`: `agreement_and_boundary_hold_together`, `m35_pickup_successor_boundary_flags_wrong_distance`, `m37_incomparable_abstains`, `m38_pickup_first_measure_boundary_clause_not_flagged`, `m39_unresolvable_reference_is_invariant_10_only`, `matrix_a1_none_time_signature_inapplicable`, `matrix_a3_vacuous_agreement`, `matrix_b2_governing_signature_unresolving_delegated`, `matrix_b3_vacuous_boundary`, `matrix_s1_wallclock_measures_wallclock_meter_changes`, `matrix_s2_agreement_a4`, `matrix_s2_boundary_b4`, `matrix_s4_measure_same_id_end_end_decides`, `matrix_s5_measure_distinct_ids_start_zero`, `matrix_s6_event_same_id_live_event_decides`, `matrix_s7_agreement_a4`, `matrix_s7_boundary_b4`, `matrix_s8_agreement_a4`, `matrix_s8_boundary_b4`, `matrix_s9_heterogeneous_measure_anchors` |
|
||||
| M3a | `check_requirement` matches `ViolationKind::Requirement(_)`, ignoring `label` | `requirement_selector_discriminates_its_payload` **alone**. Every other requirement-arm fixture presents its selector with **one** label, so a wildcard returns the same set as an exact match. *Not M6's test either — but not for the reason an earlier draft gave: M6 is a **separate** mutation, so under M3a alone C6 and C7 still carry the same label, and one fixture with one label cannot distinguish wildcard from exact* |
|
||||
|
|
|
|||
|
|
@ -436,3 +436,32 @@ Measured, not derived; transcripts in §5.3 and §5.4.
|
|||
re-tagging that broke only the sibling would have read as a radius mismatch;
|
||||
under the corrected cell each of C6 and C7 is observed by two independent
|
||||
assertions — its own pair assertion and the sibling's invariant-arm assertion.
|
||||
|
||||
---
|
||||
|
||||
## §8. Amendment 1: resolution and resumption
|
||||
|
||||
Amendment 1 is ratified at `29ef3af` and landed by this commit. It
|
||||
corrects two radius cells in the contract's §3 and changes no pin, test, fixture
|
||||
or behaviour.
|
||||
|
||||
**§5 and §7 above are the dated execution record and are not edited.** They
|
||||
state what was expected, what was observed, and why execution stopped. The
|
||||
mismatch they record is the reason this amendment exists; reconciling them would
|
||||
remove it.
|
||||
|
||||
### 8.1 The corrected radii
|
||||
|
||||
| M | Dispatched cell (§5) | Corrected cell, measured |
|
||||
|---|---|---|
|
||||
| M1·C6 | `tempo_out_of_order_reports_order` | that test **and** `tempo_overlap_reports_order` |
|
||||
| M1·C7 | `tempo_overlap_reports_order` | that test **and** `tempo_out_of_order_reports_order` |
|
||||
|
||||
Both were observed before the halt. The transcripts in §5.3 and §5.4 stand as
|
||||
the observation and **were not re-run**: the amendment corrects the expectation
|
||||
they were compared against, not the observation.
|
||||
|
||||
### 8.2 Resumption
|
||||
|
||||
The mutation sequence resumes at **M2**. M1 is complete — C4, C5, C8, C9 and C10
|
||||
matched their dispatched cells, and C6 and C7 match the corrected cells above.
|
||||
|
|
|
|||
Loading…
Reference in New Issue