epiphany/spec
Levi Neuwirth 2818ced229
S16 draft amendment 1 rev F: a transformation's output needs its input's guarantees
Independent review of abe2c35 returned one blocking finding, and it is both
prior revisions' lessons colliding.

The shrink leg had no observable direction or exactness guarantee. Row 8
requires the S->G fixture to survive shrinking, but:

- the named generator test asserted only on the raw violating_score(...);
- the shrunk score was checked solely by
  every_invariant_shrinks_to_a_small_witness (generators.rs:1003), whose
  !check_invariant(&small, inv).is_empty() is membership in ONE
  GraphInvariant variant -- and both directions of invariant 21 are the same
  variant, so a shrunk witness that flipped to G->S-only passes it. Because it
  calls check_invariant (singular) rather than check_invariants, a shrunk
  witness that gained an unrelated second defect passes too;
- §6 item 2d still said "quote the shrunk witness," which a passing test
  cannot emit.

So a shrunk witness that changed direction, or acquired a second defect while
retaining invariant 21, satisfied every assertion and every gate.

Fixed: the named test now asserts the same three properties TWICE -- on the
raw fixture and again on shrink(&that, StaffGroupMembershipAgreement): exactly
one violation and it is StaffGroupMembershipAgreement, the witness naming the
S->G ids, and G->S asserted satisfied. Gate 6 requires both legs. Item 2d
rewritten to revision E's source-assertion-plus-pass-verdict model. Item 2e
extended to both legs. Row 8's description of the existing shrink tests now
says plainly that they establish only that SOMETHING still fires, and that
direction and exactness after shrinking come solely from the named test's
shrunk leg.

Two lessons collided here. Revision E established that a gate must name
evidence its artifact produces and fixed gate 6 -- stopping one hop short of
item 2d, which is the fix-propagation failure revisions A-D kept recording.
And the underlying gap is revision D's: a requirement, "survives shrinking,"
with nothing able to fail it.

The generalisable rule now recorded: shrink is a TRANSFORMATION, and a
transformation's output needs the same guarantees asserted of its input.
Requiring a fixture to "survive" a transformation establishes only that
something survived. Every property the input was pinned for must be
re-asserted on the output, or the transformation is free to change what the
fixture proves.

Still DRAFT, still unratified. No implementation work has begun.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ps1szk2mSfgp4Cz21eVH9x
2026-08-09 17:51:21 +02:00
..
vectors Container major 1: the format epoch carries base provenance 2026-08-07 12:51:14 -04:00
ANALYSIS_GENESIS_PERSISTENCE.md The operation set absorbs genesis 2026-07-24 15:11:36 -04:00
ANALYSIS_TEXT_RUN_PRIMITIVES.md Editor T4-pre W3: the text run carries both its string and its ink 2026-07-28 14:38:06 -04:00
AUDIT_GMINOR_VOCABULARIES.md Audit the G-minor reachable vocabularies: a ledger, a matrix, one stale sentence 2026-07-28 18:27:35 -04:00
CONTRACT_CORE_DECODE_VECTORS.md The decode vector corpus reaches the core score wire 2026-07-24 11:38:15 -04:00
CONTRACT_EDITOR_T1A_GOLDENS.md Editor track: the plan, and the T1a golden-harness contract 2026-07-23 14:57:43 -04:00
CONTRACT_EDITOR_T2_SELECTION.md Editor T2: contract for selection v2, the golden gate, and copy/paste 2026-07-23 17:07:18 -04:00
CONTRACT_EDITOR_T3_CARET.md Editor T3: contract for the note-entry caret 2026-07-24 12:55:05 -04:00
CONTRACT_EDITOR_T4PRE_IR.md Editor T4-pre: the IR readiness contract, and the genesis-persistence table 2026-07-24 14:47:08 -04:00
CONTRACT_EDITOR_T4PRE_W2_GLYPHS.md Editor T4-pre W2: the glyph-asset contract, and three parallelism claims get finer 2026-07-24 17:50:02 -04:00
CONTRACT_EDITOR_T4_SPIKE.md Contract revision 6: round 1 was testing the wrong property on the wrong glyphs 2026-07-28 21:24:47 -04:00
CONTRACT_FORMAT_EPOCH_MAJOR1.md Format epoch amended: pin 3c bounds the interval's conformance cost 2026-08-07 11:41:51 -04:00
CONTRACT_GENESIS_G1_INSTRUMENT.md Contract G1: one operation, and the two things that make from-empty correct 2026-07-24 18:04:30 -04:00
CONTRACT_GENESIS_G2A_SETTINGS.md Contract G2a round five: the sixth hand-maintained site, and locking Registered 2026-07-28 15:47:17 -04:00
CONTRACT_GENESIS_G2B_TUNING.md Sign t9 with a mutation that actually kills it 2026-07-29 10:18:57 -04:00
CONTRACT_GENESIS_G3A_ENTITIES.md G3a contract: ten source locators, corrected forward 2026-07-31 19:47:43 -04:00
CONTRACT_GENESIS_G3A_UNDO_REPAIR.md G3a undo repair: the tombstone branch was reachable all along 2026-07-29 18:21:45 -04:00
CONTRACT_GENESIS_G3B_MEASURE.md P13-S18: the invariant-20 outcome matrix, and what the residue actually is 2026-07-31 17:05:49 -04:00
CONTRACT_GMINOR_IMPLEMENTATION.md Amend the G-minor contract: the [7f] oracle, and the PDFs the touch table missed 2026-07-28 18:59:00 -04:00
CONTRACT_GMINOR_VOCABULARY_AUDIT.md Audit contract amendments: a possible gate, and four scoping repairs 2026-07-28 18:08:55 -04:00
CONTRACT_P13S1_LABELS.md P13-S1: every requirement is named, and now it is also numbered 2026-07-21 18:27:52 -04:00
CONTRACT_P13S6_PROMOTION.md P13-S6 ratified: the lattice block, and an argument that did not survive arithmetic 2026-07-22 14:26:08 -04:00
CONTRACT_P13S6_TEMPERAMENTS.md P13-S6: the tuning constructions, drafted -- and why sourcing was not enough 2026-07-22 11:50:06 -04:00
CONTRACT_P13S16_PROJECTION.md S16 draft amendment 1 rev F: a transformation's output needs its input's guarantees 2026-08-09 17:51:21 +02:00
CONTRACT_P13S18_MATRIX.md P13-S18: the invariant-20 outcome matrix, and what the residue actually is 2026-07-31 17:05:49 -04:00
CONTRACT_P13S19_PARTIAL.md P13-S19: what a partial measure actually costs 2026-07-31 18:13:44 -04:00
CONTRACT_P13S22_TAGLOCK.md P13-S22 contract: M2's whole-test alternative was false 2026-07-31 19:30:21 -04:00
CONTRACT_P13S27_REDUCTION_AUTHORITY.md P13-S27: accept reduction authority implementation 2026-08-09 15:05:58 +02:00
CONTRACT_PUSH4B_3BII_IDENTITY.md Push 4b tranche 3b-ii: one SmuflVersion, and a live ordering bug dies with the homonym 2026-07-23 19:30:52 -04:00
CONTRACT_PUSH4B_3BI_WIRE.md Push 4b tranche 3b-i: the score wire opens schema major 3 2026-07-23 17:35:55 -04:00
CONTRACT_PUSH4B_ACCIDENTALS.md Push 4b tranche 3a: contract for the accidental vocabulary, and S10-S12 filed 2026-07-23 13:55:19 -04:00
CONTRACT_PUSH4B_ADAPTIVE.md Push 4b: ji-adaptive-5limit resolves, and the blocker was never HarmonicContext 2026-07-24 10:17:46 -04:00
CONTRACT_PUSH4B_PITCHSPACES.md Push 4b tranche 1: contract for the pitch-space slice 2026-07-22 17:08:00 -04:00
CONTRACT_PUSH4B_RESOLVER.md Push 4b tranche 2: contract for the in-memory tuning resolver 2026-07-23 10:06:25 -04:00
CONTRACT_PUSH4B_SPEC1.md Push 4b Wave 1a: three ratified corrections, and a citation that pointed the wrong way 2026-07-22 11:49:40 -04:00
CONTRACT_PUSH4B_TEMPERAMENTS.md Push 4b tranche 2b: contract for the ten historical temperaments 2026-07-23 11:38:14 -04:00
CONTRACT_TEXTPROJ_DOCUMENT.md Text Projection: the document layer, and the equation closes 2026-07-21 15:05:28 -04:00
CONTRACT_TEXTPROJ_OPS.md Text Projection: the operation layer, and the tests that can see it fail 2026-07-21 13:43:09 -04:00
DRAFT_P13S6_TEMPERAMENTS.md P13-S6 ratified: the lattice block, and an argument that did not survive arithmetic 2026-07-22 14:26:08 -04:00
HANDOFF_2026-08-07.md Handoff: make the POST-S27 block genuinely the sole source 2026-08-09 15:43:09 +02:00
PASS11_RATIFICATION_LOG.md P12-I2: wire the ratified MUSCLOID layout-object id derivation 2026-06-27 12:46:19 -04:00
PASS11_WORKLIST.md Pass 11: ratify provisional byte choices into normative spec text 2026-06-21 22:30:06 -04:00
PASS12_BATCH.md Pass 12 G-pass: ratify the full batch (28 rows) — spec tranche 2026-07-07 10:23:30 -04:00
PASS12_RATIFICATION_LOG.md P13-S1: every requirement is named, and now it is also numbered 2026-07-21 18:27:52 -04:00
PASS12_WORKLIST.md Pass 12 G-pass: ratify the full batch (28 rows) — spec tranche 2026-07-07 10:23:30 -04:00
PASS13_CANDIDATES.md Post-S27 doc reconciliation: CLAUDE, handoff, S16 contract, both ledger cells 2026-08-09 15:24:21 +02:00
PHASE2_F_WEEK0_WORKLIST.md Phase 2: spelling + decomposition pre-passes (Agent H) with F merge gate 2026-06-23 16:33:39 -04:00
PHASE2_QUICKSTART.md Phase 2: spelling + decomposition pre-passes (Agent H) with F merge gate 2026-06-23 16:33:39 -04:00
PLAN_EDITOR_APP.md Contract revision 6: round 1 was testing the wrong property on the wrong glyphs 2026-07-28 21:24:47 -04:00
PLAN_GENESIS_OPS.md G3b packet 3b: the documentation half, and the ladder closes 2026-07-30 20:45:27 -04:00
PLAN_GMINOR_SCHEMA_MINOR.md P13-S21: the two precondition reasons the wire spec never named 2026-07-30 20:57:59 -04:00
PLAN_P13S1_LABELS.md P13-S1: every requirement is named, and now it is also numbered 2026-07-21 18:27:52 -04:00
PLAN_P13S2_CMN24.md P13-S2: the alteration is space-relative, and the core fails closed 2026-07-22 09:00:09 -04:00
PLAN_PUSH4B_TUNING.md Push 4b Wave 1a: three ratified corrections, and a citation that pointed the wrong way 2026-07-22 11:49:40 -04:00
PLAN_TEXTPROJ_DOCUMENT.md Text Projection: the document layer, and the equation closes 2026-07-21 15:05:28 -04:00
PLAN_TEXTPROJ_OPS.md Text Projection: the operation layer, and the tests that can see it fail 2026-07-21 13:43:09 -04:00
QUICKSTART.md G3b packet 3b: the documentation half, and the ladder closes 2026-07-30 20:45:27 -04:00
RULING_GENESIS_PERSISTENCE.md Editor T4-pre W2: the glyph-asset contract, and three parallelism claims get finer 2026-07-24 17:50:02 -04:00
binary_format.pdf Container major 1: the format epoch carries base provenance 2026-08-07 12:51:14 -04:00
binary_format.tex Container major 1: the format epoch carries base provenance 2026-08-07 12:51:14 -04:00
core_spec.pdf P13-S27: accept reduction authority implementation 2026-08-09 15:05:58 +02:00
core_spec.tex P13-S27: accept reduction authority implementation 2026-08-09 15:05:58 +02:00
operation_catalog.pdf P13-S19: what a partial measure actually costs 2026-07-31 18:13:44 -04:00
operation_catalog.tex P13-S19: what a partial measure actually costs 2026-07-31 18:13:44 -04:00
quality_metric_catalog.pdf P13-S1: every requirement is named, and now it is also numbered 2026-07-21 18:27:52 -04:00
quality_metric_catalog.tex P13-S1: every requirement is named, and now it is also numbered 2026-07-21 18:27:52 -04:00
reference_suite.pdf P13-S1: every requirement is named, and now it is also numbered 2026-07-21 18:27:52 -04:00
reference_suite.tex P13-S1: every requirement is named, and now it is also numbered 2026-07-21 18:27:52 -04:00
text_projection.pdf Container major 1: the format epoch carries base provenance 2026-08-07 12:51:14 -04:00
text_projection.tex Container major 1: the format epoch carries base provenance 2026-08-07 12:51:14 -04:00