epiphany/crates/epiphany-core/src
Levi Neuwirth 6c5e69f19d Genesis G3a: the four root-level entity mints
CreateStaffGroup (35), CreatePartDefinition (36), CreateAnalysisLayer (37),
CreateView (38) -- all schema major 0, all schema-minor epoch 11, on
CreateStaff's set-union mint pattern with byte-identical re-carry
idempotence. Completes the four remaining root-level Score entity vectors.

No epiphany-bundle change of any kind: schema_major() gained NO arm (all
four fall through the catch-all _ => 0), so the op-block accept-set stays at
3 where G2b left it. The OperationKind golden lock stays at [(OperationKind,
u8); 30] -- kinds 35-38 remain outside it by design, per P13-S15's own rung.

Closes the satisfiability half of the from-empty defect: every G3 object
kind previously became Live only through base ingest, so CreateStaff's group
precondition was unsatisfiable from empty. It does NOT make a consistent
group authorable -- §1.1 disposition B rules Staff.group the sole authority
and StaffGroup.members a non-authoritative projection G3a stores without
maintaining, with both stale forms permitted. That ruling now reaches all
four normative sites: both field doc comments (neither field was documented
before), core_spec.tex, and both the new CreateStaffGroup and the existing
CreateStaff sections of operation_catalog.tex.

Carried-value maps for all four families thread through seven sites each,
including the base seed that fails silently -- a re-carry test reducing only
from empty cannot see a missing seed, which is why t5b reduces onto a
populated base.

Verified independently, not relayed. Full gate re-run: 1429 tests / 0
failed, clippy 0, fmt clean, git diff --check clean. Two mutations the agent
had not observed were run here and observed: reverting COMPANION_VERSION to
0.11.0 kills t11 (the agent had only reasoned this), and skipping the
staff_group_values base seed kills t5b. Both reversed by editing back, with
the baseline green.

Two findings recorded rather than silently absorbed:

- valuegen::analysis_layer's name format was accidentally exactly 16 bytes,
  the same width as AnalysisLayerId's encoding, which made a field-swap
  mutation on the two-field AnalysisLayer struct byte-invisible. Shortened
  and documented -- a fixture that makes a mutation undetectable is the same
  failure class as a guard that cannot fail.
- binary_format.tex has NO Revision History row for G2b. G2b's own contract
  required one (touch row 27: "version, Revision History row"); it changed
  the payload-layout row, tag row, accept-set text and §2373 history but
  never bumped the version or added the row. The document went 0.12.0 (G2a)
  -> 0.13.0 (G-minor) -> 0.14.0 (G3a) with the accept-set raise unrecorded.
  G3a adds its own row without retroactively backfilling G2b's.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QjsEnYhm1gPpf6ii2iFxFV
2026-07-29 14:07:35 -04:00
..
prepass Schema major 2 Phase B: snapshot side + honest stamps (data-model fills) 2026-07-07 16:30:07 -04:00
accidental.rs Push 4b tranche 3b-ii: one SmuflVersion, and a live ordering bug dies with the homonym 2026-07-23 19:30:52 -04:00
codec.rs Genesis G3a: the four root-level entity mints 2026-07-29 14:07:35 -04:00
event.rs Land M1 + M2 (Agent C): framework edge fixes and real-Score graph integration 2026-06-21 16:37:51 -04:00
fuzz.rs Push 4b tranche 3b-i: the score wire opens schema major 3 2026-07-23 17:35:55 -04:00
generators.rs Schema major 2 Phase B: snapshot side + honest stamps (data-model fills) 2026-07-07 16:30:07 -04:00
graph.rs Genesis G3a: the four root-level entity mints 2026-07-29 14:07:35 -04:00
ids.rs Text Projection: every graph id projects, because graph_id! says so 2026-07-21 13:41:40 -04:00
indexes.rs Schema major 2 Phase D: the repeat-authoring pair (code tranche) 2026-07-07 20:06:18 -04:00
invariants.rs Genesis G3a: the four root-level entity mints 2026-07-29 14:07:35 -04:00
lib.rs Genesis G2b: SetTuningContext, and the accept-set raise it pays for 2026-07-29 09:30:32 -04:00
pitch.rs Push 4b: ji-adaptive-5limit resolves, and the blocker was never HarmonicContext 2026-07-24 10:17:46 -04:00
pitch_space.rs Push 4b tranche 1: pitch spaces become structure, and cmn-24 transposes end-to-end 2026-07-23 09:41:18 -04:00
prepass.rs A transposition moves the authored spelling; recording Propagated is not enough 2026-07-09 16:40:06 -04:00
tempo.rs Push 4: Binary Format companion, F1 benches, subquadratic reduction order 2026-07-02 19:02:07 -04:00
textvalue.rs Text Projection: the Chapter-5 value layer, from one field list 2026-07-21 12:17:49 -04:00
textvalue_event.rs Text Projection: the Chapter-5 value layer, from one field list 2026-07-21 12:17:49 -04:00
textvalue_graph.rs Genesis G2b: SetTuningContext, and the accept-set raise it pays for 2026-07-29 09:30:32 -04:00
textvalue_impls.rs Text Projection: every graph id projects, because graph_id! says so 2026-07-21 13:41:40 -04:00
textvalue_pitch.rs Text Projection: the Chapter-5 value layer, from one field list 2026-07-21 12:17:49 -04:00
textvalue_time.rs Text Projection: the Chapter-5 value layer, from one field list 2026-07-21 12:17:49 -04:00
time.rs Text Projection: the Chapter-5 value layer, from one field list 2026-07-21 12:17:49 -04:00
tuning.rs Push 4b: ji-adaptive-5limit resolves, and the blocker was never HarmonicContext 2026-07-24 10:17:46 -04:00
vectors.rs The decode vector corpus reaches the core score wire 2026-07-24 11:38:15 -04:00