From 3b09595196e8b47c0643ca20d43d1c3b1e4eccf3 Mon Sep 17 00:00:00 2001 From: Levi Neuwirth Date: Fri, 24 Jul 2026 21:02:12 -0400 Subject: [PATCH] Genesis G1: CreateInstrument, and the from-empty spine reaches a note Score::empty plus operations alone now materializes a note-bearing Score. The chain CreateInstrument -> CreateStaff -> CreateRegion -> CreateStaffInstance -> CreateVoice -> InsertEvent needed exactly one new link: CreateStaff already demanded a live Instrument and nothing could create one. Instrument is a root with no outbound references, so the operation carries no referential preconditions -- only mint and byte-identical re-carry, on the CreateStaff template. It designs no wire layout: Instrument joins canonical_value! and the payload is one push_lp_bytes over the existing Codec, so strict canonical-form rejection is inherited rather than written. Kind 31 and tag 31 agree; schema_major is unconditionally 2 (Instrument's major-2 appends are mandatory, not Option-hidden); bundle.rs is untouched and the op-block accept-set stays 2, since that raise belongs to G2. Two cross-cutting items the ruling required. Reduction now writes identity for the first time, deriving next_counter from the log rather than trusting the seed -- and the implementation is broader than contracted, covering minted entity ids as well as operation ids, which is right: both burn counters. And the from-empty path is pinned to reduce_operation_set_onto, since the base-free mode skips referential preconditions by design; a test documents that asymmetry as designed rather than as a bug to fix. The contract's parallel-safety claim was WRONG and this commit corrects it. Extending OperationKind is not containable to core+ops: Rust exhaustiveness forces an arm in editor-core's barriers.rs, and because testkit depends on editor-core, that one missing arm blocked conformance and requirement_labels too. Three more downstream sites had 31 or a kind-count baked in as a literal -- layout-ir's barrier decode test, testkit's grammar vocabulary count, and the textproj corpus generator. The subagent found the first two, reverted its out-of-bounds edit, and reported rather than working around; the user authorized the boundary crossing. Each literal now carries a comment saying it must move with every tag append. The text projection needed a companion bump, which the contract never anticipated. Adding create-instrument to the kind production while holding 0.7.0 would leave two incompatible grammars claiming one version -- precisely what the single-version gate exists to prevent -- so COMPANION_VERSION is now 0.8.0, the first kind appended since the header was gated. Cached projections do not migrate and are not expected to: a TextProjection chunk is a non-canonical accelerator, so a stale one is regenerated. The negative "wrong version" vector had to flip, since 0.8.0 was the version it used as its future-and-therefore- rejected example; it now names 0.7.0, which tests the deferred migrate-on-read posture better anyway. Test headers that were literals now assert against the constant. Gate, all observed: fmt clean; clippy --workspace --all-targets 0 warnings; 1359 passed / 0 failed; requirement_labels 6/6; conformance 8/8 and 9/9 with golden-gate, 96 decode vectors and 13 textproj vectors, every verdict agreed. max_supported_major(OperationEnvelopeBlock) verified still 2. Both PDFs rebuilt. Mutations i1, i3 and i5 re-run independently rather than taken on report: the spine collapses to TargetMissing without the instrument, an unseeded instrument_values misreports a base re-carry as RecreateContentMismatch, and a seed-returning cursor yields 0 where 12 is required. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01QjsEnYhm1gPpf6ii2iFxFV --- crates/epiphany-core/DECISIONS.md | 20 + crates/epiphany-core/src/codec.rs | 6 + crates/epiphany-editor-core/src/barriers.rs | 7 + crates/epiphany-layout-ir/src/barrier.rs | 17 +- crates/epiphany-ops/DECISIONS.md | 108 +++ crates/epiphany-ops/src/envdecode.rs | 16 +- crates/epiphany-ops/src/fuzz.rs | 26 +- crates/epiphany-ops/src/lib.rs | 19 +- crates/epiphany-ops/src/migrate.rs | 4 + crates/epiphany-ops/src/payload.rs | 68 +- crates/epiphany-ops/src/reduce.rs | 615 +++++++++++++++++- crates/epiphany-ops/src/textproj_kind.rs | 26 +- crates/epiphany-ops/src/v0.rs | 4 + crates/epiphany-ops/src/valuegen.rs | 7 + crates/epiphany-ops/src/vectors.rs | 96 ++- .../tests/text_projection_grammar.rs | 21 +- crates/epiphany-textproj/src/lib.rs | 9 +- crates/epiphany-textproj/src/parse.rs | 19 +- crates/epiphany-textproj/src/project.rs | 6 +- crates/epiphany-textproj/src/vectors.rs | 11 +- spec/operation_catalog.pdf | Bin 145697 -> 150242 bytes spec/operation_catalog.tex | 63 ++ spec/text_projection.pdf | Bin 143816 -> 145876 bytes spec/text_projection.tex | 28 +- spec/vectors/decode_vectors.txt | 7 +- spec/vectors/textproj_document_vectors.txt | 26 +- 26 files changed, 1142 insertions(+), 87 deletions(-) diff --git a/crates/epiphany-core/DECISIONS.md b/crates/epiphany-core/DECISIONS.md index 029d00e..d70a697 100644 --- a/crates/epiphany-core/DECISIONS.md +++ b/crates/epiphany-core/DECISIONS.md @@ -1401,3 +1401,23 @@ kind in one batch at `OperationEnvelopeBlock` major 3, so the raise is amortised across nine surfaces rather than charged to one field of eight. Note that `bundle.rs`'s cap of 2 is documented *with that rationale in prose* — when the tranche lands, that comment becomes false and must move with the cap. + +## Genesis tranche G1 — `Instrument` joins `canonical_value!` (2026-07-24) + +`spec/CONTRACT_GENESIS_G1_INSTRUMENT.md` (executing +`spec/RULING_GENESIS_PERSISTENCE.md`) adds `CreateInstrument` to +`epiphany-ops`, the first rung of the genesis ladder +(`spec/PLAN_GENESIS_OPS.md` §4). Its payload embeds the full `Instrument` +value, so this crate's one required change is a single `canonical_value!` +line (`Instrument` already has a `Codec` via `struct_codec!`, `codec.rs:1756`, +which — same macro — already generates `impl TextValue for Instrument` too, +so the Text Projection touch point the tranche needed cost nothing here). + +No new byte layout: `Instrument`'s canonical bytes are exactly what the +whole-score codec already emits for it, made reachable per-value on the same +seam every other `canonical_value!` entry uses. `value_types_round_trip_over_generator_corpus` +does not exercise `Instrument` directly (the generator corpus does not walk +`Score::instruments`), but the operation-layer decode-vector corpus +(`epiphany-ops::vectors`) now pins a `CreateInstrument` envelope's literal +bytes, which round-trips the same `Instrument` encoding through the op +payload's `push_lp_bytes` wrapper — see that crate's own DECISIONS.md entry. diff --git a/crates/epiphany-core/src/codec.rs b/crates/epiphany-core/src/codec.rs index 09770ce..24ba1a8 100644 --- a/crates/epiphany-core/src/codec.rs +++ b/crates/epiphany-core/src/codec.rs @@ -3513,6 +3513,12 @@ canonical_value! { TimeSignature, TempoSegment, StaffLineConfiguration, + // Genesis tranche G1 (`CONTRACT_GENESIS_G1_INSTRUMENT.md`) — CreateInstrument + // embeds the full value, mirroring CreateStaff's `Staff`. `Instrument` + // already has a `Codec` (`struct_codec!`, `:1756`) and already ships inside + // `Score`; this makes that existing layout reachable per-value, same as + // every other entry here. + Instrument, // Repeat authoring (schema-major-2 revision) — CreateRepeatStructure // embeds the full value. RepeatStructure, diff --git a/crates/epiphany-editor-core/src/barriers.rs b/crates/epiphany-editor-core/src/barriers.rs index a3a07b3..d792c5a 100644 --- a/crates/epiphany-editor-core/src/barriers.rs +++ b/crates/epiphany-editor-core/src/barriers.rs @@ -437,6 +437,13 @@ pub(crate) fn subjects_of(kind: &OperationKind, score: &Score) -> BarrierSubject OperationKind::CreateStaff(op) => { one(TypedObjectId::Staff(op.staff_id()), EditContext::default()) } + // Genesis tranche G1: an instrument is a root entity with no outbound + // references, so — exactly like `CreateStaff` — it names only the + // object it mints, with no resolvable region or staff-instance context. + OperationKind::CreateInstrument(op) => one( + TypedObjectId::Instrument(op.instrument_id()), + EditContext::default(), + ), OperationKind::SetTimeSignature(op) => { let mut objects = vec![(TypedObjectId::Region(op.region), ctx(Some(op.region), None))]; if let Some(signature) = &op.time_signature { diff --git a/crates/epiphany-layout-ir/src/barrier.rs b/crates/epiphany-layout-ir/src/barrier.rs index bbb5f02..53ac9f5 100644 --- a/crates/epiphany-layout-ir/src/barrier.rs +++ b/crates/epiphany-layout-ir/src/barrier.rs @@ -1100,22 +1100,25 @@ mod tests { tag: 7 }) ); - // Operation-kind tag 31 is one past the vocabulary (the Phase-3 ops + // Operation-kind tag 32 is one past the vocabulary (the Phase-3 ops // tranche appended 24..=27, the repeat pair 28/29, `TransposeInterval` - // 30; encodings are append-only). + // 30, genesis G1's `CreateInstrument` 31; encodings are append-only). // - // This assertion named 30 until Push 5 / P4 — by which time 30 was - // `TransposeInterval`, so the test was pinning a bug: a barrier that - // prohibited the new operation encoded fine and would not read back. + // This assertion named 30 until Push 5 / P4, and 31 until genesis G1 — + // each time, by then, the number had become a real kind, so the test + // was pinning a bug: a barrier that prohibited the new operation + // encoded fine and would not read back. It must be bumped by every + // tranche that appends a tag, and it is deliberately a literal rather + // than `PAYLOAD_FREE.len()` so the bump is a conscious act. let mut bytes = vec![0u8]; bytes.extend(set_blob(&[])); - bytes.extend(set_blob(&[vec![31u8]])); + bytes.extend(set_blob(&[vec![32u8]])); bytes.push(0); assert_eq!( EditBarrier::decode_canonical_bytes(&bytes), Err(BarrierDecodeError::InvalidTag { kind: "OperationKindTag", - tag: 31 + tag: 32 }) ); } diff --git a/crates/epiphany-ops/DECISIONS.md b/crates/epiphany-ops/DECISIONS.md index 56c0a10..adc5235 100644 --- a/crates/epiphany-ops/DECISIONS.md +++ b/crates/epiphany-ops/DECISIONS.md @@ -1705,3 +1705,111 @@ untouched. Widening what `TransposeInterval` can transpose is the tranche's ratified purpose, and the version skew it implies (an old replica refuses what a new one applies) is the tranche's property, not this fix's — the fix only makes the operation layer agree with the core layer the tranche already moved. + +## Genesis tranche G1 — `CreateInstrument`, kind 31 / tag 31 (2026-07-24) + +`spec/CONTRACT_GENESIS_G1_INSTRUMENT.md` lands the first rung of the genesis +ladder (`spec/PLAN_GENESIS_OPS.md` §4): `CreateInstrument` mints an +`Instrument` on the score root, set-union discipline identical to +`create_staff` (`reduce.rs`), minus the graph-aware reference-resolution +block — `Instrument` holds no outbound entity reference, so there is nothing +for one to check. All fifteen touch points landed as specified: `codec.rs`'s +`canonical_value!` (one line — `Instrument` already had a `Codec` and, +because `struct_codec!` generates both, already had `TextValue` too, so the +Text Projection touch point cost nothing extra); `payload.rs`'s +`CreateInstrumentOp` + the five mechanical sites (`OperationKind` variant, +`schema_major`, `discriminant`, `tag`, encode dispatch, tag-vocabulary +entry); `envdecode.rs`'s decode arm and `sample_kind` sample; +`v0.rs`/`migrate.rs`'s identity round-trip (born past v0, no lossy +projection); `reduce.rs`'s dispatch + `create_instrument` + +`instrument_values` (pin 8, six sites: both struct decls, init, the base +seed, and the snapshot/restore pair); `textproj_kind.rs`'s production/parse; +`fuzz.rs`'s generator arm 28 (`rng.below(28)` → `below(29)`); `vectors.rs`'s +decode vector; `operation_catalog.tex`'s new section. + +**The identity cursor (pin 9) is gated on a *pristine-base* check the naive +version got backwards.** The first attempt compared `self.graph` against +`Score::empty(...)` at the *end* of `run()`, after every spine operation had +already populated it — always false, so the cursor never advanced (the i5 +test caught this immediately: `next_counter` stayed `0`, not the expected +`12`). The fix captures `from_empty_base` in `new_onto`, from the *pristine* +`base` argument, before `graph` is cloned and mutated. This is also the +mechanism that keeps the fix scoped to from-empty reduction only: +`reduce_operation_set_onto` is the same entry point `epiphany-editor-core` +calls on every edit (`EditorSession::materialize`), against a populated +base, so an unconditional cursor-write there would have been a silent +behavioral change to a crate this packet may not touch. Gating on +`from_empty_base` makes onto-reduction against a populated base +byte-for-byte unchanged — verified, not assumed, since editor-core is one of +the crates the boundary below made un-editable, so its own test suite is the +only check available and it does not run in this tree (see below). + +**The cursor's derivation walks two sources, not one.** `next_counter` is a +*single* counter shared by every identifier kind +(`IdentityContext::take_counter`), so scoping the fix to `InstrumentId` +alone would have been wrong the moment a spine mixes kinds — which i1's own +chain does (`CreateStaff`'s `StaffId`, `CreateVoice`'s `VoiceId`, ...). +`derive_identity_cursor` takes the max over (a) every `OperationId` the +`op_set` has ever accepted, via `OperationSet::slots()` — keyed by +`OperationId`, so its key set is exactly "every id in the log" regardless of +slot state (Single, Equivocated, held/pending) — and (b) every entity id in +the final `self.objects`, decoded generically from `TypedObjectId`'s +canonical form (2-byte discriminant + 16-byte `(replica, counter)`, for +every variant but `Registered`) rather than a new per-kind accessor. This +reads `TypedObjectId::canonical_bytes()` — already public — instead of +adding a `replica()`/`counter()` method to `epiphany-core::ids`, which +would have been a new public surface outside this packet's blast radius. +Not fully general (a losing equivocation candidate's *entity* ids, as +opposed to its `OperationId`, are invisible to this — no test in the +required nine reaches that case, and closing it would need the same kind of +new core-side accessor this design avoids); flagged rather than silently +assumed complete. + +## Boundary conflict: `OperationKind` is exhaustively matched outside this +## packet's blast radius (2026-07-24) + +The contract's blast radius lists only `epiphany-core/src/codec.rs` and +eight `epiphany-ops/src/*.rs` files, and its "Parallel safety" note claims +"this packet touches none of" `epiphany-editor-core`, `epiphany-editor-gui`, +`epiphany-layout-ir`, `epiphany-render-svg`, `epiphany-glyphs`. That claim +does not survive contact with the compiler: `OperationKind` gains a variant, +and Rust's exhaustiveness check finds every downstream consumer. + +**`crates/epiphany-editor-core/src/barriers.rs:316`**, `subjects_of`, an +exhaustive `match kind: &OperationKind` deriving edit-barrier subjects — +fails to *compile* without a new arm (`CreateStaff`'s arm, one line, is the +exact analogue: an instrument is a score-root object with no regional +containment, same as a staff). Because `epiphany-testkit`, +`epiphany-engrave`, `epiphany-render-svg`, and `epiphany-editor-gui` all +depend on `epiphany-editor-core` (non-optionally), this one missing arm +blocks the *entire* rest of the workspace from compiling — including +`epiphany-testkit`, which owns `requirement_labels`, the decode-vector +corpus regeneration/verification, and the conformance suite. `cargo test +--workspace` and `cargo clippy --workspace --all-targets` both fail at this +single error and never reach a single test. + +**`crates/epiphany-layout-ir/src/barrier.rs:1112`**, +`decode_rejects_unknown_discriminants`, hardcodes `31u8` as "one past the +[`OperationKindTag`] vocabulary" — a *runtime* test failure (the crate +compiles fine), now stale because 31 is `CreateInstrument`. This is not a +new failure mode: the test's own comment records it happened once already +("This assertion named 30 until Push 5 / P4 — by which time 30 was +`TransposeInterval`, so the test was pinning a bug"). The fix each time is +mechanical: bump the literal to the new one-past-the-vocabulary value (`32`) +and its expected `tag: 31` to `tag: 32`. + +Both files are on this packet's explicit do-not-touch list (a parallel agent +owns them in a separate worktree), so neither was edited — an initial, +incorrect edit to `barriers.rs` (made before re-deriving the boundary against +the actual compiler output) was caught and reverted before landing; `git +status` on both crates is clean in the delivered tree. Consequently: +`cargo test --workspace`, `cargo clippy --workspace --all-targets`, the +conformance suite, and `requirement_labels` could not be executed against +the full workspace in the delivered state — only against the seven crates +that do not depend on `epiphany-editor-core` +(`epiphany-determinism`/`epiphany-core`/`epiphany-bundle`/`epiphany-ops`/ +`epiphany-textproj`/`epiphany-layout-ir`/`epiphany-glyphs`), all of which +are green (`epiphany-layout-ir` excepted, for the one stale-vocabulary test +above). This is reported to the coordinator rather than worked around; see +the packet's final report for the exact reproduction commands and error +text. diff --git a/crates/epiphany-ops/src/envdecode.rs b/crates/epiphany-ops/src/envdecode.rs index 9c0b7dc..afde534 100644 --- a/crates/epiphany-ops/src/envdecode.rs +++ b/crates/epiphany-ops/src/envdecode.rs @@ -36,10 +36,10 @@ use epiphany_core::{ }; use epiphany_core::{CanonicalValue, TempoSegment}; use epiphany_core::{ - EventId, InstrumentId, MetricGrid, MusicalPosition, OperationId, PitchId, PitchSpelling, - RegionId, RegionTimeModel, RepeatStructureId, ReplicaId, ScoreMetadata, Staff, StaffInstance, - StaffInstanceId, StaffLineConfiguration, TimeAnchor, TimeSignature, TranspositionInterval, - TupletId, TypedObjectId, Voice, VoiceId, WallClockTime, + EventId, Instrument, InstrumentId, MetricGrid, MusicalPosition, OperationId, PitchId, + PitchSpelling, RegionId, RegionTimeModel, RepeatStructureId, ReplicaId, ScoreMetadata, Staff, + StaffInstance, StaffInstanceId, StaffLineConfiguration, TimeAnchor, TimeSignature, + TranspositionInterval, TupletId, TypedObjectId, Voice, VoiceId, WallClockTime, }; use epiphany_determinism::{CanonicalDecode, CanonicalEncode}; @@ -586,6 +586,9 @@ fn operation_kind(r: &mut Reader<'_>) -> Result { }, }) } + 31 => OperationKind::CreateInstrument(CreateInstrumentOp { + instrument: value::(r, "Instrument")?, + }), tag => { return Err(EnvelopeDecodeError::InvalidTag { kind: "OperationKind", @@ -870,6 +873,11 @@ pub(crate) mod tests { repeat: RepeatStructureId::new(ReplicaId(7), 1), }) } + OperationKindTag::CreateInstrument => { + OperationKind::CreateInstrument(CreateInstrumentOp { + instrument: valuegen::instrument(InstrumentId::new(ReplicaId(7), 1)), + }) + } } } diff --git a/crates/epiphany-ops/src/fuzz.rs b/crates/epiphany-ops/src/fuzz.rs index e8b2d0f..cd66c1e 100644 --- a/crates/epiphany-ops/src/fuzz.rs +++ b/crates/epiphany-ops/src/fuzz.rs @@ -32,13 +32,14 @@ use crate::envelope::OperationEnvelope; use crate::opset::OperationSet; use crate::payload::OperationKindTag; use crate::payload::{ - CreateCrossCuttingOp, CreateRegionOp, CreateRepeatStructureOp, CreateStaffInstanceOp, - CreateStaffOp, CreateVoiceOp, CrossCuttingValue, DeleteCrossCuttingOp, DeleteEventOp, - DeleteIdentifiedPitchOp, DeleteRegionOp, DeleteRepeatStructureOp, DeleteStaffInstanceOp, - DeleteVoiceOp, InsertEventOp, InsertIdentifiedPitchOp, ModifyCrossCuttingOp, ModifyEventOp, - ModifyIdentifiedPitchOp, OperationKind, OperationPayload, RespellPitchOp, SetMetadataOp, - SetMetricGridOp, SetStaffLayoutOp, SetTempoSegmentOp, SetTimeSignatureOp, SetUserPageBreakOp, - SetUserSystemBreakOp, TransposeIntervalOp, TransposeOp, TupletCompensation, + CreateCrossCuttingOp, CreateInstrumentOp, CreateRegionOp, CreateRepeatStructureOp, + CreateStaffInstanceOp, CreateStaffOp, CreateVoiceOp, CrossCuttingValue, DeleteCrossCuttingOp, + DeleteEventOp, DeleteIdentifiedPitchOp, DeleteRegionOp, DeleteRepeatStructureOp, + DeleteStaffInstanceOp, DeleteVoiceOp, InsertEventOp, InsertIdentifiedPitchOp, + ModifyCrossCuttingOp, ModifyEventOp, ModifyIdentifiedPitchOp, OperationKind, OperationPayload, + RespellPitchOp, SetMetadataOp, SetMetricGridOp, SetStaffLayoutOp, SetTempoSegmentOp, + SetTimeSignatureOp, SetUserPageBreakOp, SetUserSystemBreakOp, TransposeIntervalOp, TransposeOp, + TupletCompensation, }; use crate::stamp::{HybridLogicalClock, OperationStamp}; use crate::support::AuthorId; @@ -89,7 +90,7 @@ fn pitch(n: u64) -> PitchId { /// Generates a random payload over the shared id space. fn gen_payload(rng: &mut SplitMix64) -> OperationPayload { - let kind = match rng.below(28) { + let kind = match rng.below(29) { 0 => { let voice = VoiceId::new(ReplicaId(7), rng.below(3)); let position = MusicalPosition(RationalTime::from_int(rng.below(4) as i32)); @@ -283,6 +284,15 @@ fn gen_payload(rng: &mut SplitMix64) -> OperationPayload { chromatic_steps: rng.below(9) as i32 - 4, }, }), + // Genesis tranche G1, over the shared instrument-id space (arm 21's + // `CreateStaff` already references `InstrumentId::new(ReplicaId(7), + // rng.below(2))`, so mints/re-carries genuinely interact with it). + 28 => OperationKind::CreateInstrument(CreateInstrumentOp { + instrument: valuegen::instrument(epiphany_core::InstrumentId::new( + ReplicaId(7), + rng.below(2), + )), + }), _ => OperationKind::SetStaffLayout(SetStaffLayoutOp { staff_instance: StaffInstanceId::new(ReplicaId(7), rng.below(3)), instrument_override: None, diff --git a/crates/epiphany-ops/src/lib.rs b/crates/epiphany-ops/src/lib.rs index 5364767..582f620 100644 --- a/crates/epiphany-ops/src/lib.rs +++ b/crates/epiphany-ops/src/lib.rs @@ -124,15 +124,16 @@ pub use envelope::{ pub use migrate::{migrate_v0_envelope, project_v1_to_v0, MigrationError}; pub use opset::{AcceptOutcome, OperationSet}; pub use payload::{ - ChangeRegionTimeModelOp, CreateCrossCuttingOp, CreateRegionOp, CreateRepeatStructureOp, - CreateStaffInstanceOp, CreateStaffOp, CreateVoiceOp, CrossCuttingValue, DeleteCrossCuttingOp, - DeleteEventOp, DeleteIdentifiedPitchOp, DeleteRegionOp, DeleteRepeatStructureOp, - DeleteStaffInstanceOp, DeleteVoiceOp, InsertEventOp, InsertIdentifiedPitchOp, - ModifyCrossCuttingOp, ModifyEventOp, ModifyIdentifiedPitchOp, OperationKind, OperationKindTag, - OperationPayload, PositionRemapping, ResolveConflictPayload, ResolveEquivocationPayload, - RespellPitchOp, SetMetadataOp, SetMetricGridOp, SetStaffLayoutOp, SetTempoSegmentOp, - SetTimeSignatureOp, SetUserPageBreakOp, SetUserSystemBreakOp, TransactionCategory, - TransactionDescriptor, TransposeIntervalOp, TransposeOp, TupletCompensation, + ChangeRegionTimeModelOp, CreateCrossCuttingOp, CreateInstrumentOp, CreateRegionOp, + CreateRepeatStructureOp, CreateStaffInstanceOp, CreateStaffOp, CreateVoiceOp, + CrossCuttingValue, DeleteCrossCuttingOp, DeleteEventOp, DeleteIdentifiedPitchOp, + DeleteRegionOp, DeleteRepeatStructureOp, DeleteStaffInstanceOp, DeleteVoiceOp, InsertEventOp, + InsertIdentifiedPitchOp, ModifyCrossCuttingOp, ModifyEventOp, ModifyIdentifiedPitchOp, + OperationKind, OperationKindTag, OperationPayload, PositionRemapping, ResolveConflictPayload, + ResolveEquivocationPayload, RespellPitchOp, SetMetadataOp, SetMetricGridOp, SetStaffLayoutOp, + SetTempoSegmentOp, SetTimeSignatureOp, SetUserPageBreakOp, SetUserSystemBreakOp, + TransactionCategory, TransactionDescriptor, TransposeIntervalOp, TransposeOp, + TupletCompensation, }; pub use reduce::{ canonical_reduction_order, GraphMaterialization, MaterializedState, ObjectState, PendingReason, diff --git a/crates/epiphany-ops/src/migrate.rs b/crates/epiphany-ops/src/migrate.rs index b4f62b3..f8cd473 100644 --- a/crates/epiphany-ops/src/migrate.rs +++ b/crates/epiphany-ops/src/migrate.rs @@ -179,6 +179,8 @@ fn project_kind(kind: &OperationKind) -> V0OperationKind { OperationKind::DeleteRepeatStructure(op) => V0OperationKind::DeleteRepeatStructure(*op), // Push 4a: born past v0; projected verbatim. OperationKind::TransposeInterval(op) => V0OperationKind::TransposeInterval(op.clone()), + // Genesis tranche G1: born past v0; projected verbatim. + OperationKind::CreateInstrument(op) => V0OperationKind::CreateInstrument(op.clone()), } } @@ -332,6 +334,8 @@ fn migrate_kind(kind: &V0OperationKind, context: &Score) -> Result OperationKind::TransposeInterval(op.clone()), V0OperationKind::DeleteRepeatStructure(op) => OperationKind::DeleteRepeatStructure(*op), + // Genesis tranche G1: identity round-trip (no lossy v0 form). + V0OperationKind::CreateInstrument(op) => OperationKind::CreateInstrument(op.clone()), }) } diff --git a/crates/epiphany-ops/src/payload.rs b/crates/epiphany-ops/src/payload.rs index b7fead4..4c3d746 100644 --- a/crates/epiphany-ops/src/payload.rs +++ b/crates/epiphany-ops/src/payload.rs @@ -33,9 +33,9 @@ use epiphany_core::{ Beam, CanonicalValue, Event, EventDuration, EventId, EventPosition, IdentifiedPitch, - InstrumentId, MetricGrid, MusicalDuration, MusicalPosition, OperationId, Pitch, PitchId, - PitchSpelling, Region, RegionId, RegionTimeModel, RepeatStructure, RepeatStructureId, Rest, - ScoreMetadata, Slur, Spanner, Staff, StaffId, StaffInstance, StaffInstanceId, + Instrument, InstrumentId, MetricGrid, MusicalDuration, MusicalPosition, OperationId, Pitch, + PitchId, PitchSpelling, Region, RegionId, RegionTimeModel, RepeatStructure, RepeatStructureId, + Rest, ScoreMetadata, Slur, Spanner, Staff, StaffId, StaffInstance, StaffInstanceId, StaffLineConfiguration, TempoSegment, Tie, TimeAnchor, TimeSignature, TransactionId, TranspositionInterval, TupletId, TypedObjectId, Voice, VoiceId, }; @@ -195,6 +195,14 @@ pub enum OperationKind { /// Push 4a: the faithful transpose. Appended past 29 — a schema-minor /// vocabulary append (`req:binfmt:kind-discriminants`). TransposeInterval(TransposeIntervalOp), + // --- Genesis tranche G1 (`spec/CONTRACT_GENESIS_G1_INSTRUMENT.md`): the + // from-empty spine's missing link. Discriminant extends additively past 30. + // --- + /// Mint an abstract instrument on the score root (set-union creation) — + /// the single missing link between `Score::empty` and a note: + /// `CreateStaff` already demands a live `Instrument` and nothing else can + /// create one. + CreateInstrument(CreateInstrumentOp), } impl OperationKind { @@ -212,12 +220,17 @@ impl OperationKind { pub fn schema_major(&self) -> u16 { match self { // Mandatory v2 appends: CrossCuttingValue (Slur/Tie/Beam/Spanner - // bodies), Staff (default_clef + filled line config), and - // ScoreMetadata (six appended fields). + // bodies), Staff (default_clef + filled line config), + // ScoreMetadata (six appended fields), and Instrument + // (sound_config/default_clef/default_staff_lines et al. — G1; + // unconditional, not `Option`-hidden, so no lower-major layout for + // this payload exists — do not copy the value-dependent arm shape + // below). OperationKind::CreateCrossCutting(_) | OperationKind::ModifyCrossCutting(_) | OperationKind::CreateStaff(_) - | OperationKind::SetMetadata(_) => 2, + | OperationKind::SetMetadata(_) + | OperationKind::CreateInstrument(_) => 2, // Value-dependent: the embedded StaffLineConfiguration rides an // Option; None encodes byte-identically to the prior major. OperationKind::CreateRegion(op) => { @@ -287,6 +300,10 @@ impl OperationKind { // Push 4a; appended past 29. Every constituent is a major-0 // layout, so `schema_major` leaves it in the catch-all 0 arm. OperationKind::TransposeInterval(_) => 30, + // Genesis tranche G1; appended past 30. Coincides with tag 31 by + // accident, not by rule — the two spaces are independent and + // misaligned elsewhere (`RespellPitch` is kind 2 / tag 3). + OperationKind::CreateInstrument(_) => 31, } } @@ -328,6 +345,10 @@ impl OperationKind { OperationKind::CreateRepeatStructure(_) => OperationKindTag::CreateRepeatStructure, OperationKind::DeleteRepeatStructure(_) => OperationKindTag::DeleteRepeatStructure, OperationKind::TransposeInterval(_) => OperationKindTag::TransposeInterval, + // Name-verbatim, as the two most recent additions (`CreateVoice`, + // `CreateRepeatStructure`) are — the tag layer's older + // Create→Insert convention is not followed here (contract pin 3). + OperationKind::CreateInstrument(_) => OperationKindTag::CreateInstrument, } } } @@ -370,6 +391,7 @@ impl CanonicalEncode for OperationKind { OperationKind::SetStaffLayout(op) => op.encode_canonical(out), OperationKind::CreateRepeatStructure(op) => op.encode_canonical(out), OperationKind::DeleteRepeatStructure(op) => op.encode_canonical(out), + OperationKind::CreateInstrument(op) => op.encode_canonical(out), } } } @@ -416,6 +438,10 @@ pub enum OperationKindTag { DeleteRepeatStructure, /// Push 4a. TransposeInterval, + /// Genesis tranche G1. Name-verbatim (contract pin 3): the tag layer's + /// older Create→Insert convention (`InsertStaff` for `CreateStaff`) is not + /// followed here, matching the two most recent additions. + CreateInstrument, } /// The discriminant of [`OperationKindTag::Registered`], the one tag that @@ -513,6 +539,7 @@ operation_kind_tag_vocabulary! { CreateRepeatStructure = 28 => "create-repeat-structure", DeleteRepeatStructure = 29 => "delete-repeat-structure", TransposeInterval = 30 => "transpose-interval", + CreateInstrument = 31 => "create-instrument", } impl CanonicalEncode for OperationKindTag { @@ -1414,6 +1441,35 @@ impl CanonicalEncode for CreateStaffOp { } } +// --- Genesis tranche G1 (`spec/CONTRACT_GENESIS_G1_INSTRUMENT.md`). ---------- + +/// Mint an abstract [`Instrument`] on the score root (operation_catalog +/// §CreateInstrument). Carries the full instrument value (schema major 2): +/// identity, name, range, abbreviation, sound configuration, transposition, +/// default clef, default staff-line configuration, and unpitched members. +/// `Instrument` holds no outbound entity references, so this operation needs +/// no referential preconditions — only mint and idempotence, exactly the +/// `CreateStaff` discipline. Set-union creation: a repeat create carrying a +/// byte-identical value is idempotent; a differing value under a live id is a +/// precondition no-op. +#[derive(Clone, PartialEq, Eq, Debug)] +pub struct CreateInstrumentOp { + pub instrument: Instrument, +} + +impl CreateInstrumentOp { + /// The minted instrument's identifier. + pub fn instrument_id(&self) -> InstrumentId { + self.instrument.id + } +} + +impl CanonicalEncode for CreateInstrumentOp { + fn encode_canonical(&self, out: &mut Vec) { + push_lp_bytes(out, &self.instrument.canonical_bytes()); + } +} + /// Set, replace, or (`None`) remove the single meter change at the anchor's /// resolved musical position in a region's default metric grid /// (operation_catalog §"Meter and Tempo Overwrites"). Carries the full diff --git a/crates/epiphany-ops/src/reduce.rs b/crates/epiphany-ops/src/reduce.rs index 7c207ff..7a7d995 100644 --- a/crates/epiphany-ops/src/reduce.rs +++ b/crates/epiphany-ops/src/reduce.rs @@ -34,13 +34,13 @@ use std::collections::{BTreeMap, BTreeSet, BinaryHeap}; use epiphany_core::{ canonical_pitch_bytes, derive_promoted_voice_id, simplest_spelling, AnchorOffset, AnnotationAnchor, CanonicalValue, Event, EventDuration, EventId, EventPosition, - GestureAnchoring, InstrumentId, MeterChange, MetricGrid, MusicalDuration, MusicalPosition, - OperationId, Pitch, PitchId, PitchSpelling, RationalTime, RegionEdge, RegionId, - RegionTimeModel, ReplicaId, Score, ScoreMetadata, SpellingAttachment, SpellingDirective, - SpellingScope, SpellingSource, Staff, StaffId, StaffInstance, StaffInstanceId, - StaffLineConfiguration, TempoMap, TempoSegment, TempoShape, TimeAnchor, TimeSignature, - TimeSignatureId, TransactionId, TransposeRefusal, TranspositionInterval, TypedObjectId, Voice, - VoiceId, VoiceOrigin, + GestureAnchoring, Instrument, InstrumentId, MeterChange, MetricGrid, MusicalDuration, + MusicalPosition, OperationId, Pitch, PitchId, PitchSpelling, RationalTime, RegionEdge, + RegionId, RegionTimeModel, ReplicaId, Score, ScoreMetadata, SpellingAttachment, + SpellingDirective, SpellingScope, SpellingSource, Staff, StaffId, StaffInstance, + StaffInstanceId, StaffLineConfiguration, TempoMap, TempoSegment, TempoShape, TimeAnchor, + TimeSignature, TimeSignatureId, TransactionId, TransposeRefusal, TranspositionInterval, + TypedObjectId, Voice, VoiceId, VoiceOrigin, }; use epiphany_determinism::CanonicalEncode; @@ -56,13 +56,14 @@ use crate::encode::{push_canon, push_len, push_lp_bytes, push_u8_bool}; use crate::envelope::OperationEnvelope; use crate::opset::OperationSet; use crate::payload::{ - resolved_anchor_position, CreateCrossCuttingOp, CreateRegionOp, CreateRepeatStructureOp, - CreateStaffInstanceOp, CreateStaffOp, CreateVoiceOp, CrossCuttingValue, DeleteCrossCuttingOp, - DeleteEventOp, DeleteIdentifiedPitchOp, DeleteRegionOp, DeleteRepeatStructureOp, - DeleteStaffInstanceOp, DeleteVoiceOp, InsertEventOp, InsertIdentifiedPitchOp, - ModifyCrossCuttingOp, ModifyEventOp, ModifyIdentifiedPitchOp, OperationKind, OperationPayload, - RespellPitchOp, SetMetadataOp, SetMetricGridOp, SetStaffLayoutOp, SetTempoSegmentOp, - SetTimeSignatureOp, SetUserPageBreakOp, TransposeIntervalOp, TransposeOp, TupletCompensation, + resolved_anchor_position, CreateCrossCuttingOp, CreateInstrumentOp, CreateRegionOp, + CreateRepeatStructureOp, CreateStaffInstanceOp, CreateStaffOp, CreateVoiceOp, + CrossCuttingValue, DeleteCrossCuttingOp, DeleteEventOp, DeleteIdentifiedPitchOp, + DeleteRegionOp, DeleteRepeatStructureOp, DeleteStaffInstanceOp, DeleteVoiceOp, InsertEventOp, + InsertIdentifiedPitchOp, ModifyCrossCuttingOp, ModifyEventOp, ModifyIdentifiedPitchOp, + OperationKind, OperationPayload, RespellPitchOp, SetMetadataOp, SetMetricGridOp, + SetStaffLayoutOp, SetTempoSegmentOp, SetTimeSignatureOp, SetUserPageBreakOp, + TransposeIntervalOp, TransposeOp, TupletCompensation, }; use crate::stamp::StampTuple; use crate::support::{ObjectKind, SerializedCanonicalInputs}; @@ -913,6 +914,13 @@ struct Reducer<'a> { // precondition no-op). Seeded from the base graph. staff_values: BTreeMap, time_signature_values: BTreeMap, + // Carried values of set-union-minted instruments (genesis tranche G1), + // mirroring `staff_values`: the byte-identical-re-carry idempotence check + // against a *base* instrument (pin 8 of + // `CONTRACT_GENESIS_G1_INSTRUMENT.md`) has nothing to compare without this + // — `TypedObjectId::Instrument` liveness is seeded from the base + // (`seed_from_graph`), but the base seed left no value map before this. + instrument_values: BTreeMap, structures: BTreeMap>, // Live child sets for the structural-container empty-only delete (Group 3): // a region's live staff instances, and a staff instance's live voices. (A @@ -958,6 +966,13 @@ struct Reducer<'a> { equivocation_resolutions: BTreeMap, promoted_singles: BTreeMap, graph: Option, + // Genesis tranche G1 (`spec/CONTRACT_GENESIS_G1_INSTRUMENT.md` pin 9): + // whether `new_onto`'s *pristine* base was exactly `Score::empty(identity)` + // — captured once, before any operation mutates `graph`, since by the time + // `run()` finishes `graph` is no longer empty and cannot answer this + // question itself. Gates the identity-cursor derivation to from-empty + // reduction only, never a transaction snapshot (fixed for the whole run). + from_empty_base: bool, } /// A snapshot of the working state, for atomic transaction rollback. @@ -1003,6 +1018,7 @@ struct WorkingSnapshot { staff_layout_chain: BTreeMap>, staff_values: BTreeMap, time_signature_values: BTreeMap, + instrument_values: BTreeMap, structures: BTreeMap>, region_instances: BTreeMap>, instance_voices: BTreeMap>, @@ -1281,6 +1297,7 @@ impl<'a> Reducer<'a> { staff_layout_chain: BTreeMap::new(), staff_values: BTreeMap::new(), time_signature_values: BTreeMap::new(), + instrument_values: BTreeMap::new(), structures: BTreeMap::new(), region_instances: BTreeMap::new(), instance_voices: BTreeMap::new(), @@ -1296,11 +1313,16 @@ impl<'a> Reducer<'a> { equivocation_resolutions: BTreeMap::new(), promoted_singles: BTreeMap::new(), graph: None, + from_empty_base: false, } } fn new_onto(op_set: &'a OperationSet, base: &Score) -> Self { let mut reducer = Self::new(op_set); + // Captured from the pristine `base` argument, before `graph` is + // populated and mutated below — `graph` is no longer empty by the + // time `run()` needs this answer. + reducer.from_empty_base = *base == Score::empty(base.identity.clone()); reducer.graph = Some(base.clone()); reducer.seed_from_graph(); reducer @@ -1318,6 +1340,12 @@ impl<'a> Reducer<'a> { for instrument in &score.instruments { self.objects .insert(TypedObjectId::Instrument(instrument.id), ObjectState::Live); + // The carried value backs CreateInstrument's byte-identical-re-carry + // idempotence check against base instruments (contract pin 8) — + // without this, `TypedObjectId::Instrument` liveness is seeded but + // there is nothing to compare a re-carry against. + self.instrument_values + .insert(instrument.id, instrument.clone()); } for staff in &score.staves { self.objects @@ -1913,6 +1941,31 @@ impl<'a> Reducer<'a> { pending.into_iter().chain(held).collect(); pending_vec.sort_by_key(|(id, _)| *id); + // Genesis tranche G1 (`spec/CONTRACT_GENESIS_G1_INSTRUMENT.md` pin 9; + // ruling §3 point 3): from-empty reduction is the first thing that + // ever writes `identity`. Gated on `from_empty_base`, captured in + // `new_onto` from the *pristine* base before any operation mutated + // `graph` — `graph` itself is no longer empty by this point, so a + // live re-comparison here would never fire. This keeps onto-reduction + // against a populated base (every other caller, notably + // `epiphany-editor-core`'s materialize-on-every-edit) byte-for-byte + // unchanged; nothing in this packet's blast radius touches that + // crate. Nothing between `new_onto` and here writes `identity` + // itself, so `graph.identity`'s replica and seed are still the + // pristine base's. + if self.from_empty_base { + if let Some(graph) = self.graph.as_ref() { + let replica = graph.identity.replica_id; + let seed = graph.identity.next_counter; + let next_counter = self.derive_identity_cursor(replica, seed); + self.graph + .as_mut() + .expect("checked Some above") + .identity + .next_counter = next_counter; + } + } + let graph = self.graph.take(); let state = MaterializedState { effects: self.effects, @@ -1927,6 +1980,60 @@ impl<'a> Reducer<'a> { (state, graph) } + /// Derives the from-empty identity cursor (ruling §3 point 3): `1 + + /// max(counter)` over every id — an envelope's own [`OperationId`], or an + /// entity id minted into the reduced graph — the reducing `replica` + /// authored anywhere in the log, or the untouched `seed` when that + /// replica authored none. + /// + /// `next_counter` is a *single* monotonic counter shared by every + /// identifier kind (`IdentityContext::take_counter`), so this cannot be + /// scoped to `Instrument` alone: any kind minted in the same log — + /// `CreateStaff`'s `StaffId`, `InsertEvent`'s `EventId`, and so on — + /// shares the same sequence, and a later mint from the returned identity + /// must not re-issue a counter the log already used for *any* kind. + fn derive_identity_cursor(&self, replica: ReplicaId, seed: u64) -> u64 { + let mut max_counter: Option = None; + let mut bump = |counter: u64| { + max_counter = Some(max_counter.map_or(counter, |m| m.max(counter))); + }; + // Every operation id ever accepted into this set, in any slot state + // (Single, Equivocated, promoted or not): the set is keyed by + // `OperationId`, so its key set is exactly "every id in the log" — + // including pending/held/excluded envelopes, which still burned a + // counter at authoring time even though this reduction did not apply + // them. + for (id, _) in self.op_set.slots() { + if id.replica == replica { + bump(id.counter); + } + } + // Every entity id minted into the reduced graph, across every kind — + // not read via a per-kind accessor, but generically from the object + // universe every mint already populates. `TypedObjectId`'s canonical + // form is a 2-byte discriminant then the 16-byte `(replica, counter)` + // payload for every variant except `Registered` (an extension id with + // no such convention, and so skipped here); reading it this way + // avoids a new public replica/counter accessor on `TypedObjectId` in + // `epiphany-core`, which is out of this packet's blast radius. + for obj in self.objects.keys() { + let bytes = obj.canonical_bytes(); + if bytes.len() == 18 { + let id_replica = ReplicaId(u64::from_be_bytes( + bytes[2..10].try_into().expect("8 bytes"), + )); + if id_replica == replica { + let counter = u64::from_be_bytes(bytes[10..18].try_into().expect("8 bytes")); + bump(counter); + } + } + } + match max_counter { + Some(m) => seed.max(m + 1), + None => seed, + } + } + fn record_anomaly(&mut self, kind: IntegrityAnomalyKind) { let a = IntegrityAnomaly::new(kind); self.anomalies.entry(a.id).or_insert(a); @@ -2635,6 +2742,7 @@ impl<'a> Reducer<'a> { OperationKind::SetStaffLayout(op) => self.set_staff_layout(env, op), OperationKind::CreateRepeatStructure(op) => self.create_repeat_structure(env, op), OperationKind::DeleteRepeatStructure(op) => self.delete_repeat_structure(env, op), + OperationKind::CreateInstrument(op) => self.create_instrument(env, op), }, OperationPayload::ResolveConflict(op) => self.resolve_conflict(env, op), OperationPayload::UndoTransaction(op) => self.undo_transaction(env, op), @@ -3854,6 +3962,56 @@ impl<'a> Reducer<'a> { OperationEffect::Applied } + // --- Genesis tranche G1 (`spec/CONTRACT_GENESIS_G1_INSTRUMENT.md`). ------- + + /// Set-union creation of an `Instrument` on the score root + /// (operation_catalog §CreateInstrument): fresh id mints; a + /// byte-identical re-carry is idempotent; a differing value under a live + /// id is a precondition no-op — exactly `create_staff`'s discipline + /// (contract pin 6). Unlike `create_staff`, there is no graph-aware + /// reference-resolution block: `Instrument` holds no outbound entity + /// references (contract preamble), so this operation needs no referential + /// preconditions at all. + fn create_instrument( + &mut self, + env: &OperationEnvelope, + op: &CreateInstrumentOp, + ) -> OperationEffect { + let iobj = TypedObjectId::Instrument(op.instrument_id()); + match self.objects.get(&iobj) { + Some(ObjectState::Live) => { + let identical = self + .instrument_values + .get(&op.instrument_id()) + .is_some_and(|known| known == &op.instrument); + return if identical { + OperationEffect::NoOp { + reason: NoOpReason::AlreadyApplied, + } + } else { + OperationEffect::NoOp { + reason: NoOpReason::PreconditionFailedUnderReduction { + reason: PreconditionFailureReason::RecreateContentMismatch, + }, + } + }; + } + Some(ObjectState::Tombstoned { .. }) => { + return OperationEffect::NoOp { + reason: NoOpReason::TargetTombstoned, + } + } + None => {} + } + if let Some(score) = self.graph.as_mut() { + score.instruments.push(op.instrument.clone()); + } + self.mint_container(env, iobj); + self.instrument_values + .insert(op.instrument_id(), op.instrument.clone()); + OperationEffect::Applied + } + /// Set-union mint of a `TimeSignature` carried by a `SetTimeSignature` /// (operation_catalog §"Meter and Tempo Overwrites"): fresh id mints; /// byte-identical re-carry is idempotent; a differing value under a live @@ -7233,6 +7391,7 @@ impl<'a> Reducer<'a> { staff_layout_chain: self.staff_layout_chain.clone(), staff_values: self.staff_values.clone(), time_signature_values: self.time_signature_values.clone(), + instrument_values: self.instrument_values.clone(), structures: self.structures.clone(), region_instances: self.region_instances.clone(), instance_voices: self.instance_voices.clone(), @@ -7269,6 +7428,7 @@ impl<'a> Reducer<'a> { self.staff_layout_chain = s.staff_layout_chain; self.staff_values = s.staff_values; self.time_signature_values = s.time_signature_values; + self.instrument_values = s.instrument_values; self.structures = s.structures; self.region_instances = s.region_instances; self.instance_voices = s.instance_voices; @@ -7452,7 +7612,7 @@ mod tests { use crate::causal::CausalContext; use crate::stamp::{HybridLogicalClock, OperationStamp}; use crate::support::AuthorId; - use epiphany_core::{RationalTime, ReplicaId, StaffInstanceId, WallClockTime}; + use epiphany_core::{IdentityContext, RationalTime, ReplicaId, StaffInstanceId, WallClockTime}; fn pos(n: i64) -> MusicalPosition { MusicalPosition(RationalTime::from_int(n as i32)) @@ -10486,6 +10646,27 @@ mod tests { 0, "DeleteRepeatStructure carries a bare id — a major-0 layout" ); + + // Genesis tranche G1 (i7): CreateInstrument is *unconditionally* v2 — + // contract pin 4/trap 3. Unlike CreateRegion/SetStaffLayout above, + // whose v2 embedding rides an `Option` and is value-dependent, + // Instrument's schema-major-2 appends (sound_config, default_clef, + // default_staff_lines, ...) are mandatory fields, so even the most + // minimal instrument — every optional field at `None`, built via + // `Instrument::new` exactly like `valuegen::instrument` does — stamps + // 2. Asserted on the minimal value specifically, so an arm that + // becomes value-dependent (checking e.g. `range.is_some()`) is + // caught immediately rather than only on a richer fixture. + let minimal_instrument = + epiphany_core::Instrument::new(epiphany_core::InstrumentId::new(ReplicaId(9), 7), "x"); + assert_eq!( + OperationKind::CreateInstrument(crate::payload::CreateInstrumentOp { + instrument: minimal_instrument, + }) + .schema_major(), + 2, + "CreateInstrument is unconditionally v2, even for the minimal instrument" + ); } #[test] @@ -10553,6 +10734,15 @@ mod tests { // moves. Nothing leaked: `canonical_bytes` embeds effects, conflicts, // and anomalies, never payload values, and the new payload's // constituents are major-0 layouts regardless. + // + // Re-pinned again at genesis tranche G1 + // (`spec/CONTRACT_GENESIS_G1_INSTRUMENT.md`): `gen_payload` gained + // `CreateInstrument`, discriminant 31, and `rng.below(28)` became + // `below(29)` — the same reshuffle, for the same reason. Nothing + // leaked here either: `CreateInstrument.schema_major()` is 2 + // (unconditionally, contract pin 4), but `MaterializedState` stamps + // no schema major at all — that is an `OperationEnvelopeBlock` + // concern in `epiphany-bundle`, which this packet does not touch. let mut rng = epiphany_determinism::fuzz::SplitMix64::new(0xBA5E); let envelopes = crate::fuzz::gen_envelope_set(&mut rng, 200); let mut set = OperationSet::new(); @@ -10562,7 +10752,7 @@ mod tests { let hex: String = digest.iter().map(|b| format!("{b:02x}")).collect(); assert_eq!( hex, - "594f29e20250a9ff36f0033a59e380e4514aa32a6e78d062579b950667439e20" + "61af8ebbba1c4d98360ec44812e5d97a89a720738c1e3573d865f26b48addd1d" ); } @@ -12365,4 +12555,397 @@ mod tests { ); } } + + // === Genesis tranche G1 (`spec/CONTRACT_GENESIS_G1_INSTRUMENT.md`). ======= + + /// The full from-empty spine, one replica-1 operation per even counter + /// (0, 2, 4, 6, 8, 10) and one minted entity id per odd counter + /// (1, 3, 5, 7, 9, 11) — `CreateInstrument` (i1's load-bearing chain, + /// the ruling's acceptance criterion 1): `CreateInstrument` -> + /// `CreateStaff` -> `CreateRegion` -> `CreateStaffInstance` -> + /// `CreateVoice` -> `InsertEvent`. Returns the envelopes in canonical + /// authoring order, plus the ids a caller needs to inspect the result. + struct GenesisSpine { + envelopes: Vec, + event_id: EventId, + } + + fn genesis_spine_envelopes() -> GenesisSpine { + let instrument_id = InstrumentId::new(ReplicaId(1), 1); + let staff_id = StaffId::new(ReplicaId(1), 3); + let region_id = RegionId::new(ReplicaId(1), 5); + let instance_id = StaffInstanceId::new(ReplicaId(1), 7); + let voice_id = VoiceId::new(ReplicaId(1), 9); + let event_id = EventId::new(ReplicaId(1), 11); + + let create_instrument = prim_env( + 1, + 0, + 10, + CausalContext::new(), + OperationKind::CreateInstrument(CreateInstrumentOp { + instrument: crate::valuegen::instrument(instrument_id), + }), + ); + let create_staff = prim_env( + 1, + 2, + 20, + CausalContext::new(), + OperationKind::CreateStaff(CreateStaffOp { + staff: crate::valuegen::staff(staff_id, instrument_id), + }), + ); + let create_region = prim_env( + 1, + 4, + 30, + CausalContext::new(), + OperationKind::CreateRegion(CreateRegionOp { + region: crate::valuegen::region(region_id), + }), + ); + let create_instance = prim_env( + 1, + 6, + 40, + CausalContext::new(), + OperationKind::CreateStaffInstance(CreateStaffInstanceOp { + region: region_id, + instance: crate::valuegen::staff_instance(instance_id, staff_id), + }), + ); + let create_voice = prim_env( + 1, + 8, + 50, + CausalContext::new(), + OperationKind::CreateVoice(CreateVoiceOp { + staff_instance: instance_id, + voice: crate::valuegen::voice(voice_id), + }), + ); + let insert_event = prim_env( + 1, + 10, + 60, + CausalContext::new(), + OperationKind::InsertEvent(InsertEventOp { + staff_instance: instance_id, + event: crate::valuegen::insert_event_value( + event_id, + voice_id, + pos(0), + epiphany_core::MusicalDuration::whole(), + &[], + ), + }), + ); + GenesisSpine { + envelopes: vec![ + create_instrument, + create_staff, + create_region, + create_instance, + create_voice, + insert_event, + ], + event_id, + } + } + + /// (i1) The packet's load-bearing test and the ruling's acceptance + /// criterion 1: a document created empty and given only operations + /// materializes a note-bearing `Score` — no fixture, no base. + /// `CreateInstrument` is the single missing link, so this also asserts + /// every intermediate link `Applied` rather than only the final note, so + /// a future regression is pinned at its actual source. + /// + /// **Mutation** (verified by hand, not left permanently in this test): + /// drop the `CreateInstrument` envelope from the set. `CreateStaff` then + /// finds no live instrument and reduces to + /// `NoOp{PreconditionFailedUnderReduction{TargetMissing}}`, which cascades + /// (no staff instance, no voice, no event) so the final `contains` check + /// fails too — see the report for the observed failure text. + #[test] + fn from_empty_operations_alone_materialize_a_note() { + let spine = genesis_spine_envelopes(); + let mut set = OperationSet::new(); + set.accept_all(spine.envelopes); + let identity = IdentityContext::new(ReplicaId(1)); + let out = reduce_operation_set_onto(&set, &Score::empty(identity)); + + for counter in [0, 2, 4, 6, 8, 10] { + assert_eq!( + effect_at(&out.state, counter), + Some(&OperationEffect::Applied), + "spine operation at counter {counter} must apply" + ); + } + assert!( + out.score.events.contains(spine.event_id), + "the spine reaches a note" + ); + } + + /// (i2) Re-carry idempotence: the same `CreateInstrument` twice -> + /// `AlreadyApplied`, and a differing second carry under the same live id + /// -> `RecreateContentMismatch` — exactly `create_staff`'s discipline + /// (contract pin 6). + /// + /// **Mutation:** make the second carry differ in one field -> + /// `RecreateContentMismatch` where the baseline case (identical carries) + /// reduces `AlreadyApplied`. Both branches are standing assertions here + /// (not a temporary edit), so the contrast is permanent. + #[test] + fn create_instrument_recarry_is_idempotent_or_a_precondition_no_op() { + let instrument_id = InstrumentId::new(ReplicaId(1), 1); + let value = crate::valuegen::instrument(instrument_id); + let create = prim_env( + 1, + 0, + 10, + CausalContext::new(), + OperationKind::CreateInstrument(CreateInstrumentOp { + instrument: value.clone(), + }), + ); + let identical = prim_env( + 2, + 0, + 20, + CausalContext::new(), + OperationKind::CreateInstrument(CreateInstrumentOp { + instrument: value.clone(), + }), + ); + let mut differing_value = value.clone(); + differing_value.name = String::from("something else"); + let differing = prim_env( + 3, + 0, + 30, + CausalContext::new(), + OperationKind::CreateInstrument(CreateInstrumentOp { + instrument: differing_value, + }), + ); + + let mut set = OperationSet::new(); + set.accept_all(vec![differing.clone(), identical.clone(), create.clone()]); + let state = set.reduce(); + let effect_of = |id: OperationId| { + state + .effects + .iter() + .find(|(e, _)| *e == id) + .map(|(_, eff)| eff) + }; + assert_eq!(effect_of(create.id), Some(&OperationEffect::Applied)); + assert_eq!( + effect_of(identical.id), + Some(&OperationEffect::NoOp { + reason: NoOpReason::AlreadyApplied, + }), + "a byte-identical re-create reduces idempotently" + ); + assert_eq!( + effect_of(differing.id), + Some(&OperationEffect::NoOp { + reason: NoOpReason::PreconditionFailedUnderReduction { + reason: PreconditionFailureReason::RecreateContentMismatch, + }, + }), + "a differing value under a live id is a precondition no-op" + ); + } + + /// (i3) Re-carry against a *base* instrument — the pin-8 case. + /// `TypedObjectId::Instrument` liveness is seeded from the base + /// (`seed_from_graph`), but without `instrument_values` seeded too, a + /// byte-identical re-carry against a base instrument has nothing to + /// compare. + /// + /// **Mutation:** skip seeding `instrument_values` in `seed_from_graph` -> + /// the byte-identical re-carry is misreported + /// `RecreateContentMismatch` instead of `AlreadyApplied`. + #[test] + fn create_instrument_recarry_against_a_base_instrument_is_idempotent() { + let instrument_id = InstrumentId::new(ReplicaId(1), 1); + let value = crate::valuegen::instrument(instrument_id); + let mut base = Score::empty(IdentityContext::new(ReplicaId(1))); + base.instruments.push(value.clone()); + + let recreate = prim_env( + 2, + 0, + 10, + CausalContext::new(), + OperationKind::CreateInstrument(CreateInstrumentOp { instrument: value }), + ); + let mut set = OperationSet::new(); + set.accept_all(vec![recreate.clone()]); + let out = reduce_operation_set_onto(&set, &base); + + let effect = out + .state + .effects + .iter() + .find(|(id, _)| *id == recreate.id) + .map(|(_, eff)| eff); + assert_eq!( + effect, + Some(&OperationEffect::NoOp { + reason: NoOpReason::AlreadyApplied, + }), + "byte-identical re-carry against a base instrument is idempotent" + ); + assert_eq!( + out.score.instruments.len(), + 1, + "no duplicate instrument is minted" + ); + } + + /// (i4) Order independence (ruling acceptance criterion 2): two replicas + /// racing to create the *same* instrument id with differing values (a + /// concurrent genesis-era scenario) converge to byte-identical + /// `MaterializedState` regardless of delivery order — canonical order, + /// never insertion order, decides the winner. + /// + /// **Mutation:** perturb one op's reduction order (its stamp) — asserted + /// permanently below as `assert_ne!`, so the equality above is proven + /// non-vacuous: a *genuine* reordering really does change the converged + /// bytes, which is what the primary assertion would have caught had + /// insertion order actually leaked into the result. + #[test] + fn concurrent_differing_creates_of_the_same_instrument_converge_regardless_of_delivery_order() { + let instrument_id = InstrumentId::new(ReplicaId(9), 1); + let value_a = crate::valuegen::instrument(instrument_id); + let mut value_b = value_a.clone(); + value_b.name = String::from("a concurrently-authored name"); + + let create_a = prim_env( + 1, + 0, + 10, + CausalContext::new(), + OperationKind::CreateInstrument(CreateInstrumentOp { + instrument: value_a, + }), + ); + let create_b = prim_env( + 2, + 0, + 10, + CausalContext::new(), + OperationKind::CreateInstrument(CreateInstrumentOp { + instrument: value_b, + }), + ); + + let forward = { + let mut set = OperationSet::new(); + set.accept_all(vec![create_a.clone(), create_b.clone()]); + set.reduce().canonical_bytes() + }; + let reversed = { + let mut set = OperationSet::new(); + set.accept_all(vec![create_b.clone(), create_a.clone()]); + set.reduce().canonical_bytes() + }; + assert_eq!( + forward, reversed, + "delivery order must not affect the converged state" + ); + + // Proves the equality above is not vacuous: perturbing one op's own + // reduction-order-determining field (its HLC stamp) so it now sorts + // *before* its concurrent sibling really does flip the winner and + // change the converged bytes. + let perturbed = { + let mut earlier_b = create_b.clone(); + earlier_b.stamp = + OperationStamp::new(HybridLogicalClock::new(WallClockTime(5), 0), earlier_b.id); + let mut set = OperationSet::new(); + set.accept_all(vec![create_a.clone(), earlier_b]); + set.reduce().canonical_bytes() + }; + assert_ne!( + forward, perturbed, + "a genuine reduction-order change must change the winner" + ); + } + + /// (i5) The identity cursor (ruling §3 point 3). Minting from a + /// reduced-from-empty score must not collide with any id the log already + /// used — `genesis_spine_envelopes` places replica 1's ids at counters + /// `0..=11` (an operation id at every even counter, a minted entity id at + /// every odd one), so the derived cursor must be exactly `12`. + /// + /// **Mutation:** leave `next_counter` at the seed (`0`) -> the next mint + /// collides with `create_instrument`'s own `OperationId` counter. + #[test] + fn identity_cursor_advances_past_every_id_the_replica_used() { + let spine = genesis_spine_envelopes(); + let mut set = OperationSet::new(); + set.accept_all(spine.envelopes); + let identity = IdentityContext::new(ReplicaId(1)); + let mut out = reduce_operation_set_onto(&set, &Score::empty(identity)); + + assert_eq!( + out.score.identity.next_counter, 12, + "the cursor advances past every id (op or entity) the log used" + ); + let minted: EventId = out.score.identity.mint(); + assert_eq!( + minted, + EventId::new(ReplicaId(1), 12), + "a fresh mint from the reduced identity collides with nothing in the log" + ); + } + + /// (i6) Base-free reduction skips a referential precondition that + /// graph-aware reduction enforces — a **designed asymmetry**, not a bug: + /// base-free reduction has no instrument universe to check against + /// (`reduce.rs` — `self.graph.is_some()` guards `create_staff`'s + /// reference-resolution block). A later reader must not "fix" this by + /// adding the check to base-free reduction; the fix, if this is ever + /// wrong, is to stop calling `reduce_operation_set` on a from-empty + /// document (contract pin 10 / ruling §4). + #[test] + fn base_free_reduction_skips_the_referential_precondition_graph_aware_reduction_enforces() { + let staff_id = StaffId::new(ReplicaId(1), 1); + let missing_instrument = InstrumentId::new(ReplicaId(1), 99); // never minted + let create_staff = prim_env( + 1, + 0, + 10, + CausalContext::new(), + OperationKind::CreateStaff(CreateStaffOp { + staff: crate::valuegen::staff(staff_id, missing_instrument), + }), + ); + let mut set = OperationSet::new(); + set.accept_all(vec![create_staff.clone()]); + + let base_free = reduce_operation_set(&set); + assert_eq!( + effect_at(&base_free, 0), + Some(&OperationEffect::Applied), + "base-free reduction has no instrument universe to check against" + ); + + let identity = IdentityContext::new(ReplicaId(1)); + let onto = reduce_operation_set_onto(&set, &Score::empty(identity)); + assert_eq!( + effect_at(&onto.state, 0), + Some(&OperationEffect::NoOp { + reason: NoOpReason::PreconditionFailedUnderReduction { + reason: PreconditionFailureReason::TargetMissing, + }, + }), + "graph-aware reduction enforces the precondition base-free skipped" + ); + } } diff --git a/crates/epiphany-ops/src/textproj_kind.rs b/crates/epiphany-ops/src/textproj_kind.rs index e5c5ea6..6badf5e 100644 --- a/crates/epiphany-ops/src/textproj_kind.rs +++ b/crates/epiphany-ops/src/textproj_kind.rs @@ -8,12 +8,13 @@ use epiphany_determinism::{sorted_canonical, CanonicalEncode}; use unicode_normalization::UnicodeNormalization; use crate::payload::{ - ChangeRegionTimeModelOp, CreateCrossCuttingOp, CreateRegionOp, CreateRepeatStructureOp, - CreateStaffInstanceOp, CreateStaffOp, CreateVoiceOp, DeleteCrossCuttingOp, DeleteEventOp, - DeleteIdentifiedPitchOp, DeleteRegionOp, DeleteRepeatStructureOp, DeleteStaffInstanceOp, - DeleteVoiceOp, InsertEventOp, InsertIdentifiedPitchOp, ModifyCrossCuttingOp, ModifyEventOp, - ModifyIdentifiedPitchOp, OperationKind, OperationKindTag, RespellPitchOp, SetMetadataOp, - SetMetricGridOp, SetStaffLayoutOp, SetTempoSegmentOp, SetTimeSignatureOp, SetUserPageBreakOp, + ChangeRegionTimeModelOp, CreateCrossCuttingOp, CreateInstrumentOp, CreateRegionOp, + CreateRepeatStructureOp, CreateStaffInstanceOp, CreateStaffOp, CreateVoiceOp, + DeleteCrossCuttingOp, DeleteEventOp, DeleteIdentifiedPitchOp, DeleteRegionOp, + DeleteRepeatStructureOp, DeleteStaffInstanceOp, DeleteVoiceOp, InsertEventOp, + InsertIdentifiedPitchOp, ModifyCrossCuttingOp, ModifyEventOp, ModifyIdentifiedPitchOp, + OperationKind, OperationKindTag, RespellPitchOp, SetMetadataOp, SetMetricGridOp, + SetStaffLayoutOp, SetTempoSegmentOp, SetTimeSignatureOp, SetUserPageBreakOp, SetUserSystemBreakOp, TransactionDescriptor, TransposeIntervalOp, TransposeOp, }; use crate::support::OperationKindRegistryId; @@ -218,6 +219,9 @@ impl TextValue for OperationKind { self.tag(), vec![op.targets.project(), op.interval.project()], ), + OperationKind::CreateInstrument(op) => { + production(self.tag(), vec![op.instrument.project()]) + } } } @@ -531,6 +535,14 @@ impl TextValue for OperationKind { interval: TextValue::parse(interval)?, }) } + OperationKindTag::CreateInstrument => { + let [instrument] = fields(s, tag, 1)? else { + unreachable!("the arity-1 check returned one field") + }; + OperationKind::CreateInstrument(CreateInstrumentOp { + instrument: TextValue::parse(instrument)?, + }) + } }) } } @@ -584,7 +596,7 @@ mod tests { #[test] fn every_operation_kind_round_trips_with_canonical_text() { let tags: Vec<_> = all_tags().collect(); - assert_eq!(tags.len(), 31, "the grammar has 31 kind productions"); + assert_eq!(tags.len(), 32, "the grammar has 32 kind productions"); for tag in tags { round_trip(&sample_kind(tag)); } diff --git a/crates/epiphany-ops/src/v0.rs b/crates/epiphany-ops/src/v0.rs index ad1e2bd..cef65fd 100644 --- a/crates/epiphany-ops/src/v0.rs +++ b/crates/epiphany-ops/src/v0.rs @@ -103,6 +103,10 @@ pub enum V0OperationKind { /// Born at wire-disc 30 under major-0 layouts (Push 4a); no lossy v0 /// form, so it projects verbatim like the repeat-authoring pair. TransposeInterval(crate::payload::TransposeIntervalOp), + // Genesis tranche G1 — born at wire-disc 31; no lossy v0 form (v0 predates + // the catalog entirely), so it round-trips by identity like every other + // v1-native kind above. + CreateInstrument(crate::payload::CreateInstrumentOp), } /// v0 `InsertEvent`: the event was a bare [`EventId`] plus the reduction-relevant diff --git a/crates/epiphany-ops/src/valuegen.rs b/crates/epiphany-ops/src/valuegen.rs index c9f83f2..08b51bf 100644 --- a/crates/epiphany-ops/src/valuegen.rs +++ b/crates/epiphany-ops/src/valuegen.rs @@ -361,6 +361,13 @@ pub fn staff(id: StaffId, instrument: epiphany_core::InstrumentId) -> epiphany_c } } +/// A minimal [`Instrument`](epiphany_core::Instrument) (genesis tranche G1) — +/// the value a `CreateInstrument` mints: named for its counter, every +/// schema-major-2 field at `Instrument::new`'s canonical default. +pub fn instrument(id: epiphany_core::InstrumentId) -> epiphany_core::Instrument { + epiphany_core::Instrument::new(id, format!("instrument-{}", id.counter())) +} + /// A well-formed `numerator`/4 [`TimeSignature`](epiphany_core::TimeSignature) /// (Phase-3 tranche): `numerator` quarter-note beat groups summing exactly to /// the measure duration, so [`epiphany_core::TimeSignature::new`]'s beat-group diff --git a/crates/epiphany-ops/src/vectors.rs b/crates/epiphany-ops/src/vectors.rs index 7ba133d..5e0fa71 100644 --- a/crates/epiphany-ops/src/vectors.rs +++ b/crates/epiphany-ops/src/vectors.rs @@ -16,11 +16,11 @@ //! The `class` string is informative, not normative: implementations need not //! agree on error taxonomy, only on the accept/reject verdict. -use epiphany_core::{EventId, OperationId, ReplicaId, TypedObjectId}; +use epiphany_core::{EventId, InstrumentId, OperationId, ReplicaId, TypedObjectId}; use epiphany_determinism::CanonicalEncode; use crate::{ - IntegrityAnomaly, IntegrityAnomalyKind, MaterializedState, ObjectState, + IntegrityAnomaly, IntegrityAnomalyKind, MaterializedState, ObjectState, OperationEnvelope, OperationKindRegistryId, OperationKindTag, PendingReason, }; @@ -255,6 +255,49 @@ pub fn decode_vectors() -> Vec { short_registered, )); + // --- OperationEnvelope carrying CreateInstrument (genesis tranche G1) -- + // + // `ops.operation_kind_tag` above pins only the bare, payload-free tag + // byte; nothing in this corpus previously exercised a *value-carrying* + // `OperationKind` payload's decode path at all. Committed here so a + // future encoder/decoder change to this payload moves this vector's + // bytes deliberately, in the diff (the 3b-i lesson the module doc names: + // round-trip locking alone cannot see a self-consistent reorder of both + // halves). + const OE: &str = "ops.operation_envelope"; + let envelope = OperationEnvelope { + id: OperationId::new(ReplicaId(1), 1), + author: crate::support::AuthorId(0), + stamp: crate::stamp::OperationStamp::new( + crate::stamp::HybridLogicalClock::new(epiphany_core::WallClockTime(1), 1), + OperationId::new(ReplicaId(1), 1), + ), + causal_context: crate::causal::CausalContext::new(), + transaction: None, + payload: crate::payload::OperationPayload::Primitive( + crate::payload::OperationKind::CreateInstrument(crate::payload::CreateInstrumentOp { + instrument: crate::valuegen::instrument(InstrumentId::new(ReplicaId(1), 1)), + }), + ), + }; + let envelope_bytes = envelope.to_canonical_bytes(); + v.push(row( + OE, + "accept", + "-", + "create_instrument", + envelope_bytes.clone(), + )); + let mut trailing = envelope_bytes; + trailing.push(0); + v.push(row( + OE, + "reject", + "trailing-bytes", + "create_instrument_trailing", + trailing, + )); + v } @@ -277,6 +320,10 @@ pub fn check(surface: &str, bytes: &[u8]) -> Option> { Err(e) => Err(format!("{e}")), }), "ops.operation_kind_tag" => Some(decode_tag(bytes)), + "ops.operation_envelope" => Some(match crate::envdecode::decode_envelope(bytes) { + Ok(env) => Ok(env.to_canonical_bytes() == bytes), + Err(e) => Err(format!("{e:?}")), + }), _ => None, } } @@ -315,7 +362,11 @@ mod tests { /// pinning half a contract. #[test] fn every_surface_carries_both_verdicts() { - for surface in ["ops.materialized_state", "ops.operation_kind_tag"] { + for surface in [ + "ops.materialized_state", + "ops.operation_kind_tag", + "ops.operation_envelope", + ] { let rows: Vec<_> = decode_vectors() .into_iter() .filter(|(s, ..)| *s == surface) @@ -340,4 +391,43 @@ mod tests { assert!(classes.contains(&"non-canonical-map-order")); assert!(classes.contains(&"non-canonical-vec-order")); } + + /// (i8) Genesis tranche G1 + /// (`spec/CONTRACT_GENESIS_G1_INSTRUMENT.md`): the `CreateInstrument` + /// envelope decode vector, pinned to a **literal byte array copied from + /// the committed corpus** (`spec/vectors/decode_vectors.txt`, + /// `ops.operation_envelope`/`create_instrument`) — not derived by calling + /// `.to_canonical_bytes()` here. `every_vector_gets_its_declared_verdict` + /// above checks `decode_vectors()`'s *own* output against `check`, which + /// cannot see a self-consistent encoder/decoder reorder: the 3b-i lesson + /// (`epiphany-core`'s `schema_major_3_tuning_context_wire_bytes_are_frozen`) + /// is that a swap applied identically to both halves passed 1283 tests + /// and 8/8 conformance, because every check in that failure mode compared + /// the live encoder against itself. Bytes written here by hand — as this + /// module's own `decode_vectors()` writes them, into the *committed* file + /// a future encoder change must move deliberately, in the diff — close + /// that hole for `CreateInstrument` specifically. + #[test] + fn create_instrument_envelope_decode_vector_is_pinned_to_literal_bytes() { + #[rustfmt::skip] + let bytes: Vec = vec![ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0x41, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0c, 0x00, 0x00, + 0x00, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2d, 0x31, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x05, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + ]; + let result = check("ops.operation_envelope", &bytes) + .expect("ops.operation_envelope is owned by this crate"); + assert_eq!( + result, + Ok(true), + "the committed literal bytes must decode and re-encode injectively" + ); + } } diff --git a/crates/epiphany-testkit/tests/text_projection_grammar.rs b/crates/epiphany-testkit/tests/text_projection_grammar.rs index 5a1672e..08e8e5f 100644 --- a/crates/epiphany-testkit/tests/text_projection_grammar.rs +++ b/crates/epiphany-testkit/tests/text_projection_grammar.rs @@ -301,10 +301,16 @@ fn the_kind_productions_are_the_operation_vocabulary() { // four bugs. .map(|t| t.catalog_name().to_string()) .collect(); + // The count is still hand-maintained, which is the same shape the comment + // above warns about — derived list, literal total. Every tranche that + // appends a tag must bump it (genesis G1 took it from 31 to 32 by adding + // `CreateInstrument`). It stays a literal on purpose: deriving it from + // `PAYLOAD_FREE.len()` would make the assertion vacuous, since that is the + // very list it exists to pin. assert_eq!( expected.len(), - 31, - "30 payload-free kinds plus `Registered`" + 32, + "31 payload-free kinds plus `Registered`" ); let actual = alternatives("kind"); @@ -547,9 +553,16 @@ fn worked_example_header_is_the_implemented_companion_version() { .map(|(version, _)| version) }) .expect("the title page declares the companion version"); + // Pinned to the crate constant rather than a literal: the point of this + // assertion is that the spec's title page and the implemented version never + // drift apart, and a literal here made a companion bump edit two places by + // hand — exactly the "update only one of the two" failure the doc comment + // above warns about. Genesis G1 bumped 0.7.0 → 0.8.0 and tripped it. + let (major, minor, patch) = epiphany_textproj::COMPANION_VERSION; assert_eq!( - title_version, "0.7.0", - "this implementation targets exactly companion 0.7.0" + title_version, + format!("{major}.{minor}.{patch}"), + "the spec title page must declare the version this implementation targets" ); let expected = format!("(text-projection ({}))", title_version.replace('.', " ")); diff --git a/crates/epiphany-textproj/src/lib.rs b/crates/epiphany-textproj/src/lib.rs index c8bfa9e..478f353 100644 --- a/crates/epiphany-textproj/src/lib.rs +++ b/crates/epiphany-textproj/src/lib.rs @@ -19,7 +19,14 @@ use epiphany_ops::OperationEnvelope; /// /// A parser must reject every other version rather than migrating or /// normalizing it on read. -pub const COMPANION_VERSION: (u32, u32, u32) = (0, 7, 0); +/// +/// Bumped 0.7.0 → 0.8.0 by the genesis tranche G1, which appended +/// `create-instrument` to the `kind` production — the first operation kind +/// added since the header was gated to a single version. Extending the grammar +/// without moving this constant would leave two incompatible grammars both +/// claiming `(0 7 0)`. Cached projections do not migrate: a `TextProjection` +/// chunk is a non-canonical accelerator, so a stale one is regenerated. +pub const COMPANION_VERSION: (u32, u32, u32) = (0, 8, 0); /// A parsed canonical Text Projection document. /// diff --git a/crates/epiphany-textproj/src/parse.rs b/crates/epiphany-textproj/src/parse.rs index 1dac604..6051780 100644 --- a/crates/epiphany-textproj/src/parse.rs +++ b/crates/epiphany-textproj/src/parse.rs @@ -642,7 +642,11 @@ mod tests { out } - const HEADER: &str = "(text-projection (0 7 0))"; + // Bumped with `COMPANION_VERSION` (0.7.0 → 0.8.0, genesis G1). Kept a + // literal because `projection` takes `&[&str]` and a formatted String + // would ripple through every call site; `the_test_header_tracks_the_ + // implemented_version` below fails loudly if the two ever drift. + const HEADER: &str = "(text-projection (0 8 0))"; const DOCUMENT: &str = "(document #x00000000000000000000000000000001)"; /// A minimal but complete valid projection: just the two mandatory lines. @@ -650,6 +654,19 @@ mod tests { projection(&[HEADER, DOCUMENT]) } + /// `HEADER` is a literal, so nothing but this test stops it drifting from + /// the version the crate actually implements. Without it a companion bump + /// leaves every fixture below silently rejected by the version gate, and + /// the failures point at section ordering rather than at the header. + #[test] + fn the_test_header_tracks_the_implemented_version() { + let (major, minor, patch) = COMPANION_VERSION; + assert_eq!( + HEADER, + format!("(text-projection ({major} {minor} {patch}))") + ); + } + /// A simple, independent (empty causal context) envelope, so several of /// these can be combined without any causal-order machinery beyond their /// HLC physical time. diff --git a/crates/epiphany-textproj/src/project.rs b/crates/epiphany-textproj/src/project.rs index b95685a..be1d64f 100644 --- a/crates/epiphany-textproj/src/project.rs +++ b/crates/epiphany-textproj/src/project.rs @@ -576,7 +576,11 @@ mod tests { #[test] fn header_matches_the_worked_example() { - assert_eq!(project_header().render(), "(text-projection (0 7 0))"); + let (major, minor, patch) = crate::COMPANION_VERSION; + assert_eq!( + project_header().render(), + format!("(text-projection ({major} {minor} {patch}))") + ); } #[test] diff --git a/crates/epiphany-textproj/src/vectors.rs b/crates/epiphany-textproj/src/vectors.rs index 4e7e66f..b7f9edc 100644 --- a/crates/epiphany-textproj/src/vectors.rs +++ b/crates/epiphany-textproj/src/vectors.rs @@ -322,16 +322,23 @@ pub fn document_vectors() -> Vec { .map(|(name, text)| (SURFACE, "accept", "-", *name, text.as_bytes().to_vec())) .collect(); + // The rejected version must be one this crate does NOT implement. Genesis + // G1 moved `COMPANION_VERSION` to 0.8.0, which had been this vector's + // "future" version — leaving it would have made the negative vector assert + // that the *correct* header is rejected. It now names 0.7.0, the + // immediately superseded companion, which is the better test anyway: + // rejecting the version right behind you is exactly the deferred + // migrate-on-read posture (`req:textproj:header-version`). let wrong_version = replace_once( minimal, - "(text-projection (0 7 0))", "(text-projection (0 8 0))", + "(text-projection (0 7 0))", ); vectors.push(( SURFACE, "reject", "wrong-header-version", - "future_companion_version", + "superseded_companion_version", wrong_version.into_bytes(), )); diff --git a/spec/operation_catalog.pdf b/spec/operation_catalog.pdf index 593cbe9d853c372d57b7b25deb60b9b8c28e4e01..6ceb53760a94810e015ab227ee6f451e16425659 100644 GIT binary patch delta 76402 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 TzDrIaDGih&=jBz?Qz!o~71Ajz diff --git a/spec/operation_catalog.tex b/spec/operation_catalog.tex index c0f7554..0f2270c 100644 --- a/spec/operation_catalog.tex +++ b/spec/operation_catalog.tex @@ -1075,6 +1075,69 @@ anchor; there is no \texttt{DeleteStaff} in this catalogue revision --- an empty-only staff delete mirroring the container discipline is a later schema-fill). +\section{CreateInstrument} +\label{sec:k0:create-instrument} + +Ratified with the genesis operation tranche's first rung (G1; +\texttt{spec/CONTRACT\_GENESIS\_G1\_INSTRUMENT.md}, executing +\texttt{spec/RULING\_GENESIS\_PERSISTENCE.md}). \texttt{CreateStaff} +(Section~\ref{sec:k0:create-staff}) already requires a live +\texttt{Instrument}, and until this primitive existed nothing could mint one +except a canonical base --- so a document created empty +(\texttt{Score::empty}) and given only operations could reach a +\texttt{CreateStaff} but never satisfy it. \texttt{CreateInstrument} is the +single missing link between an empty score and a note: with it, the chain +\texttt{CreateInstrument} $\rightarrow$ \texttt{CreateStaff} $\rightarrow$ +\texttt{CreateRegion} $\rightarrow$ \texttt{CreateStaffInstance} +$\rightarrow$ \texttt{CreateVoice} $\rightarrow$ \texttt{InsertEvent} +materializes a note-bearing score from operations alone. + +\textbf{Payload schema.} \texttt{CreateInstrumentOp \{ instrument: Instrument +\}} --- the full abstract-instrument value (schema major 2): identity, name, +declared pitch range, abbreviation, sound configuration, transposition +interval, default clef, default staff-line configuration, and unpitched +members. Unlike every carried type in +Section~\ref{sec:k0:structural-containers} and +Section~\ref{sec:k0:create-staff}, \texttt{Instrument} holds no outbound +entity reference, so this primitive needs no referential precondition at +all --- only mint and idempotence. + +\textbf{Canonical encoding.} The length-framed canonical bytes of +\texttt{instrument}. \texttt{Instrument}'s schema-major-2 appends +(\texttt{sound\_config}, \texttt{default\_clef}, +\texttt{default\_staff\_lines}, and the rest) are mandatory fields, not +\texttt{Option}-hidden, so no lower-major layout for this payload exists: +under minimal stamping (Binary Format companion \sectionsc{Schema Major 2}) +a block carrying a \texttt{CreateInstrument} is \emph{born at v2}, exactly +as \texttt{CreateStaff} is --- not the value-dependent shape +\texttt{CreateRegion}/\texttt{SetStaffLayout} use. + +\textbf{Reduction rule.} Set-union creation of an \texttt{Instrument} on the +score root, mirroring \texttt{CreateStaff}'s discipline exactly since +neither carried type references another entity: a create mints the +instrument live if its id is fresh; a repeat create carrying a +byte-identical value reduces idempotently +(\texttt{NoOpReason::AlreadyApplied}); a create whose id is already live +with a \emph{differing} value is a precondition no-op with +\texttt{RecreateContentMismatch}; and a create naming a tombstoned id is a +precondition no-op with \texttt{TargetTombstoned}. There is no +graph-aware reference-resolution block, because there is nothing for one to +check. + +\textbf{Conflict cases.} None at reduction time (set-union; the +differing-value re-create is a precondition gate, not a conflict). + +\textbf{Undo semantics.} Undo of a create tombstones the minted instrument; +\texttt{StrictInverse} conflicts if a live staff references it (tombstoning +it would strand the staff). + +\textbf{Re-anchoring.} Not applicable, for the same reason as +\texttt{CreateStaff}: an instrument mint references no tombstonable anchor. +There is no \texttt{DeleteInstrument} in this catalogue revision --- +\texttt{CreateStaff} ships today with no \texttt{DeleteStaff} either, and +full delete/modify coverage of the genesis-authored fields is later +tranche work (\texttt{spec/PLAN\_GENESIS\_OPS.md} G3). + \section{Repeat Structures} \label{sec:k0:repeat-structures} diff --git a/spec/text_projection.pdf b/spec/text_projection.pdf index 4c4e693dbddd808d8d89466cdfc43bb537237382..d0153f9a074c5d9f1ef6e9c483da0f4e1d0cfabe 100644 GIT binary patch delta 47590 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 za

}Tl{mp_4D8j6@ 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

4Rt} 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 MaFmpi%2IIu2P#nA4gdfE delta 45606 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 b?o$7wrU2B$1A&3S#?HwBPf01RAOZhBQ)l5r diff --git a/spec/text_projection.tex b/spec/text_projection.tex index 79c3bea..fb240cb 100644 --- a/spec/text_projection.tex +++ b/spec/text_projection.tex @@ -234,7 +234,7 @@ {\Large\scshape\color{epiphanyslate}Text Projection}\\[6pt] {\large\itshape\color{epiphanyslate}A companion to the Core Specification}\\[14pt] {\color{epiphanygold}\rule{3in}{0.8pt}}\\[24pt] - {\normalsize\color{epiphanyink}Version 0.7.0 --- Canonical blob rejection and single-version header gating}\\[4pt] + {\normalsize\color{epiphanyink}Version 0.8.0 --- The genesis operation vocabulary reaches the grammar}\\[4pt] {\small\color{epiphanyslate}Normative for the text form it defines} \vfill \end{titlepage} @@ -467,7 +467,7 @@ A projection is, in order: \begin{requirement} \label{req:textproj:header-version} A parser implementing this companion \MUST{} accept exactly one header - version: \texttt{(0 7 0)}, the version of the companion it implements. It + version: \texttt{(0 8 0)}, the version of the companion it implements. It \MUST{} reject any other version at line one. Multi-version acceptance and text migrate-on-read are deferred in the same @@ -518,7 +518,7 @@ projection introduces no ordering of its own. A parser \MUST{} reject every \texttt{(blob ...)} line whose blob is unreferenced by canonical state (Requirement~\ref{req:textproj:canonical-blobs}). At companion - version~0.7.0, neither a canonical operation nor canonical reduced state can + version~0.8.0, neither a canonical operation nor canonical reduced state can carry a \texttt{BlobId}; canonical state therefore cannot reference a blob, and a parser \MUST{} reject every \texttt{(blob ...)} line. \end{requirement} @@ -1041,6 +1041,7 @@ kind ::= "(insert-event " bytes " " value ")" | "(create-repeat-structure " value ")" | "(delete-repeat-structure " bytes ")" | "(transpose-interval (" bytes* ") " value ")" + | "(create-instrument " value ")" tuplet-comp ::= "not-in-tuplet" | "(replace-with-rest " value ")" | "(rewrite-tuplets (" bytes* "))" @@ -1117,7 +1118,7 @@ A document of one operation --- a transposition of two pitches up a perfect fifth, over a compacted base --- projects to five lines: \begin{lstlisting} -(text-projection (0 7 0)) +(text-projection (0 8 0)) (document #x05050505050505050505050505050505) (profile full (0 1 0) (constraints 67108864 (retention 1 () true))) (canonical-base #x1f8b0000000000000000000000000000 #x 1 full (schema 0 1) #x0000) @@ -1305,6 +1306,25 @@ absorb it, exactly as the binary decoder does. version-keyed migration path rather than teaching the current parser to speculate. The worked example now uses the implemented header and contains only grammar-valid, canonical lines. \\ + \today & Chapter 5 & 0.8.0 --- The genesis operation vocabulary reaches the + grammar. The \texttt{kind} production gains + \texttt{"(create-instrument " value ")"}, the first operation kind appended + since the header was gated to a single version at 0.7.0 + (\texttt{req:textproj:operation-vocabulary}). + + The bump is forced rather than cosmetic. A parser \MUST{} accept exactly the + version of the companion it implements + (\texttt{req:textproj:header-version}), so extending the grammar while + holding the version would leave two mutually incompatible grammars both + claiming \texttt{(0 7 0)} --- an older parser meeting the new production + would fail with no version signal to explain why, which is the precise + failure the single-version gate exists to prevent. + + Cached projections at \texttt{(0 7 0)} do not migrate and are not expected + to. A \texttt{TextProjection} chunk is a non-canonical accelerator a writer + may discard, so a stale projection is regenerated from the canonical + document rather than converted. Multi-version acceptance and text + migrate-on-read remain deferred, unchanged. \\ \bottomrule \end{longtable} diff --git a/spec/vectors/decode_vectors.txt b/spec/vectors/decode_vectors.txt index eeda9b4..dae4efa 100644 --- a/spec/vectors/decode_vectors.txt +++ b/spec/vectors/decode_vectors.txt @@ -68,13 +68,18 @@ ops.operation_kind_tag accept - tag_27 1b ops.operation_kind_tag accept - tag_28 1c ops.operation_kind_tag accept - tag_29 1d ops.operation_kind_tag accept - tag_30 1e +ops.operation_kind_tag accept - tag_31 1f ops.operation_kind_tag accept - registered 1000000000000000000123456789abcdef -ops.operation_kind_tag reject unknown-discriminant tag_31_one_past_the_vocabulary 1f +ops.operation_kind_tag reject unknown-discriminant tag_32_one_past_the_vocabulary 20 ops.operation_kind_tag reject unknown-discriminant tag_200 c8 ops.operation_kind_tag reject truncated tag_empty - ops.operation_kind_tag reject trailing-bytes insert_event_trailing 0000 ops.operation_kind_tag reject truncated registered_one_byte_short 10000000000000000000000000000000 +# ops.operation_envelope +ops.operation_envelope accept - create_instrument 000000000000000100000000000000010000000000000000000000000000000001000000000000000100000000000000000000010000000000000001000000000000000000001f4100000010000000000000000000000100000000000000010c000000696e737472756d656e742d31000000000000000002000508000000000000000000f03f000000000000 +ops.operation_envelope reject trailing-bytes create_instrument_trailing 000000000000000100000000000000010000000000000000000000000000000001000000000000000100000000000000000000010000000000000001000000000000000000001f4100000010000000000000000000000100000000000000010c000000696e737472756d656e742d31000000000000000002000508000000000000000000f03f00000000000000 + # bundle.manifest bundle.manifest accept - empty_manifest 6f9e7d11689ab113c4a1f05faf60fe60050505050505050505050505050505050000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000001000000000000000000000400000000010000000001000000000000 bundle.manifest accept - one_operation_root ae38d9cd408df9b59917c43a82c9d1880505050505050505050505050505050500000000000000000001000000111111111111111111111111111111111111111111111111111111111111111100000001004002000000000000400000000000000040000000000000000000111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000100000000000000000000000000000000000000000000000000000001000000000000000000000400000000010000000001000000000000 diff --git a/spec/vectors/textproj_document_vectors.txt b/spec/vectors/textproj_document_vectors.txt index 4cbf39b..57464bf 100644 --- a/spec/vectors/textproj_document_vectors.txt +++ b/spec/vectors/textproj_document_vectors.txt @@ -22,16 +22,16 @@ # document bytes are normative. `` is lowercase with no separators. # textproj.document -textproj.document accept - minimal 28746578742d70726f6a656374696f6e2028302037203029290a28646f63756d656e742023783031303130313031303130313031303130313031303130313031303130313031290a2870726f66696c652066756c6c20283020312030292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a -textproj.document accept - lineage_custom_profile 28746578742d70726f6a656374696f6e2028302037203029290a28646f63756d656e742023783032303230323032303230323032303230323032303230323032303230323032290a286c696e656167652023783132313231323132313231323132313231323132313231323132313231323132290a2870726f66696c652066756c6c20283020312030292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a2870726f66696c652028637573746f6d20237863636363636363636363636363636363636363636363636363636363636363632920283120322033292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303031202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203130302030202378303030303030303030303030303030313030303030303030303030303030303129202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030312929290a -textproj.document accept - extension_base_two_envelopes 28746578742d70726f6a656374696f6e2028302037203029290a28646f63756d656e742023783033303330333033303330333033303330333033303330333033303330333033290a2870726f66696c652066756c6c20283020312030292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a28657874656e73696f6e202378303130313031303130313031303130313031303130313031303130313031303120283120302031292066616c73652028286368756e6b20657874656e73696f6e2d646174612028736368656d61203020312920237830312920286368756e6b20657874656e73696f6e2d646174612028736368656d61203020312920237830322929202378303120237830313032290a2863616e6f6e6963616c2d62617365202378303330333033303330333033303330333033303330333033303330333033303320237830313032303320312066756c6c2028736368656d61203020312920237861303033290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303032202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203230302030202378303030303030303030303030303030313030303030303030303030303030303229202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030322929290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303033202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203330302030202378303030303030303030303030303030313030303030303030303030303030303329202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030332929290a -textproj.document accept - rich_document 28746578742d70726f6a656374696f6e2028302037203029290a28646f63756d656e742023783034303430343034303430343034303430343034303430343034303430343034290a286c696e656167652023783134313431343134313431343134313431343134313431343134313431343134290a2870726f66696c652066756c6c20283020312030292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a2870726f66696c652028637573746f6d20237863636363636363636363636363636363636363636363636363636363636363632920283120322033292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a28657874656e73696f6e202378303130313031303130313031303130313031303130313031303130313031303120283120302031292066616c73652028286368756e6b20657874656e73696f6e2d646174612028736368656d61203020312920237830312920286368756e6b20657874656e73696f6e2d646174612028736368656d61203020312920237830322929202378303120237830313032290a28657874656e73696f6e202378303230323032303230323032303230323032303230323032303230323032303220283120302032292066616c73652028286368756e6b20657874656e73696f6e2d646174612028736368656d61203020312920237830332929202378303220237830323033290a2863616e6f6e6963616c2d62617365202378303430343034303430343034303430343034303430343034303430343034303420237830313032303420312066756c6c2028736368656d61203020312920237861303034290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303034202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203430302030202378303030303030303030303030303030313030303030303030303030303030303429202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030342929290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303035202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203530302030202378303030303030303030303030303030313030303030303030303030303030303529202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030352929290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303036202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203630302030202378303030303030303030303030303030313030303030303030303030303030303629202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030362929290a -textproj.document reject wrong-header-version future_companion_version 28746578742d70726f6a656374696f6e2028302038203029290a28646f63756d656e742023783031303130313031303130313031303130313031303130313031303130313031290a2870726f66696c652066756c6c20283020312030292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a -textproj.document reject blob-line unreferenced_blob 28746578742d70726f6a656374696f6e2028302037203029290a28646f63756d656e742023783031303130313031303130313031303130313031303130313031303130313031290a2870726f66696c652066756c6c20283020312030292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a28626c6f6220226170706c69636174696f6e2f6f637465742d73747265616d222028292023783031290a -textproj.document reject out-of-order-sections canonical_base_before_extension 28746578742d70726f6a656374696f6e2028302037203029290a28646f63756d656e742023783033303330333033303330333033303330333033303330333033303330333033290a2870726f66696c652066756c6c20283020312030292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a2863616e6f6e6963616c2d62617365202378303330333033303330333033303330333033303330333033303330333033303320237830313032303320312066756c6c2028736368656d61203020312920237861303033290a28657874656e73696f6e202378303130313031303130313031303130313031303130313031303130313031303120283120302031292066616c73652028286368756e6b20657874656e73696f6e2d646174612028736368656d61203020312920237830312920286368756e6b20657874656e73696f6e2d646174612028736368656d61203020312920237830322929202378303120237830313032290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303032202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203230302030202378303030303030303030303030303030313030303030303030303030303030303229202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030322929290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303033202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203330302030202378303030303030303030303030303030313030303030303030303030303030303329202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030332929290a -textproj.document reject repeated-singular-section lineage_repeated 28746578742d70726f6a656374696f6e2028302037203029290a28646f63756d656e742023783032303230323032303230323032303230323032303230323032303230323032290a286c696e656167652023783132313231323132313231323132313231323132313231323132313231323132290a286c696e656167652023783132313231323132313231323132313231323132313231323132313231323132290a2870726f66696c652066756c6c20283020312030292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a2870726f66696c652028637573746f6d20237863636363636363636363636363636363636363636363636363636363636363632920283120322033292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303031202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203130302030202378303030303030303030303030303030313030303030303030303030303030303129202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030312929290a -textproj.document reject operation-envelope-order envelopes_reversed 28746578742d70726f6a656374696f6e2028302037203029290a28646f63756d656e742023783033303330333033303330333033303330333033303330333033303330333033290a2870726f66696c652066756c6c20283020312030292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a28657874656e73696f6e202378303130313031303130313031303130313031303130313031303130313031303120283120302031292066616c73652028286368756e6b20657874656e73696f6e2d646174612028736368656d61203020312920237830312920286368756e6b20657874656e73696f6e2d646174612028736368656d61203020312920237830322929202378303120237830313032290a2863616e6f6e6963616c2d62617365202378303330333033303330333033303330333033303330333033303330333033303320237830313032303320312066756c6c2028736368656d61203020312920237861303033290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303033202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203330302030202378303030303030303030303030303030313030303030303030303030303030303329202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030332929290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303032202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203230302030202378303030303030303030303030303030313030303030303030303030303030303229202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030322929290a -textproj.document reject profile-declaration-order profiles_reversed 28746578742d70726f6a656374696f6e2028302037203029290a28646f63756d656e742023783032303230323032303230323032303230323032303230323032303230323032290a286c696e656167652023783132313231323132313231323132313231323132313231323132313231323132290a2870726f66696c652028637573746f6d20237863636363636363636363636363636363636363636363636363636363636363632920283120322033292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a2870726f66696c652066756c6c20283020312030292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303031202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203130302030202378303030303030303030303030303030313030303030303030303030303030303129202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030312929290a -textproj.document reject extension-declaration-order extensions_reversed 28746578742d70726f6a656374696f6e2028302037203029290a28646f63756d656e742023783034303430343034303430343034303430343034303430343034303430343034290a286c696e656167652023783134313431343134313431343134313431343134313431343134313431343134290a2870726f66696c652066756c6c20283020312030292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a2870726f66696c652028637573746f6d20237863636363636363636363636363636363636363636363636363636363636363632920283120322033292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a28657874656e73696f6e202378303230323032303230323032303230323032303230323032303230323032303220283120302032292066616c73652028286368756e6b20657874656e73696f6e2d646174612028736368656d61203020312920237830332929202378303220237830323033290a28657874656e73696f6e202378303130313031303130313031303130313031303130313031303130313031303120283120302031292066616c73652028286368756e6b20657874656e73696f6e2d646174612028736368656d61203020312920237830312920286368756e6b20657874656e73696f6e2d646174612028736368656d61203020312920237830322929202378303120237830313032290a2863616e6f6e6963616c2d62617365202378303430343034303430343034303430343034303430343034303430343034303420237830313032303420312066756c6c2028736368656d61203020312920237861303034290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303034202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203430302030202378303030303030303030303030303030313030303030303030303030303030303429202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030342929290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303035202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203530302030202378303030303030303030303030303030313030303030303030303030303030303529202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030352929290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303036202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203630302030202378303030303030303030303030303030313030303030303030303030303030303629202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030362929290a -textproj.document reject extension-chunk-order extension_chunks_reversed 28746578742d70726f6a656374696f6e2028302037203029290a28646f63756d656e742023783033303330333033303330333033303330333033303330333033303330333033290a2870726f66696c652066756c6c20283020312030292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a28657874656e73696f6e202378303130313031303130313031303130313031303130313031303130313031303120283120302031292066616c73652028286368756e6b20657874656e73696f6e2d646174612028736368656d61203020312920237830322920286368756e6b20657874656e73696f6e2d646174612028736368656d61203020312920237830312929202378303120237830313032290a2863616e6f6e6963616c2d62617365202378303330333033303330333033303330333033303330333033303330333033303320237830313032303320312066756c6c2028736368656d61203020312920237861303033290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303032202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203230302030202378303030303030303030303030303030313030303030303030303030303030303229202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030322929290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303033202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203330302030202378303030303030303030303030303030313030303030303030303030303030303329202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030332929290a -textproj.document reject missing-trailing-lf final_lf_missing 28746578742d70726f6a656374696f6e2028302037203029290a28646f63756d656e742023783031303130313031303130313031303130313031303130313031303130313031290a2870726f66696c652066756c6c20283020312030292028636f6e73747261696e74732036373130383836342028726574656e74696f6e20312028292074727565292929 +textproj.document accept - minimal 28746578742d70726f6a656374696f6e2028302038203029290a28646f63756d656e742023783031303130313031303130313031303130313031303130313031303130313031290a2870726f66696c652066756c6c20283020312030292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a +textproj.document accept - lineage_custom_profile 28746578742d70726f6a656374696f6e2028302038203029290a28646f63756d656e742023783032303230323032303230323032303230323032303230323032303230323032290a286c696e656167652023783132313231323132313231323132313231323132313231323132313231323132290a2870726f66696c652066756c6c20283020312030292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a2870726f66696c652028637573746f6d20237863636363636363636363636363636363636363636363636363636363636363632920283120322033292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303031202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203130302030202378303030303030303030303030303030313030303030303030303030303030303129202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030312929290a +textproj.document accept - extension_base_two_envelopes 28746578742d70726f6a656374696f6e2028302038203029290a28646f63756d656e742023783033303330333033303330333033303330333033303330333033303330333033290a2870726f66696c652066756c6c20283020312030292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a28657874656e73696f6e202378303130313031303130313031303130313031303130313031303130313031303120283120302031292066616c73652028286368756e6b20657874656e73696f6e2d646174612028736368656d61203020312920237830312920286368756e6b20657874656e73696f6e2d646174612028736368656d61203020312920237830322929202378303120237830313032290a2863616e6f6e6963616c2d62617365202378303330333033303330333033303330333033303330333033303330333033303320237830313032303320312066756c6c2028736368656d61203020312920237861303033290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303032202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203230302030202378303030303030303030303030303030313030303030303030303030303030303229202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030322929290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303033202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203330302030202378303030303030303030303030303030313030303030303030303030303030303329202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030332929290a +textproj.document accept - rich_document 28746578742d70726f6a656374696f6e2028302038203029290a28646f63756d656e742023783034303430343034303430343034303430343034303430343034303430343034290a286c696e656167652023783134313431343134313431343134313431343134313431343134313431343134290a2870726f66696c652066756c6c20283020312030292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a2870726f66696c652028637573746f6d20237863636363636363636363636363636363636363636363636363636363636363632920283120322033292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a28657874656e73696f6e202378303130313031303130313031303130313031303130313031303130313031303120283120302031292066616c73652028286368756e6b20657874656e73696f6e2d646174612028736368656d61203020312920237830312920286368756e6b20657874656e73696f6e2d646174612028736368656d61203020312920237830322929202378303120237830313032290a28657874656e73696f6e202378303230323032303230323032303230323032303230323032303230323032303220283120302032292066616c73652028286368756e6b20657874656e73696f6e2d646174612028736368656d61203020312920237830332929202378303220237830323033290a2863616e6f6e6963616c2d62617365202378303430343034303430343034303430343034303430343034303430343034303420237830313032303420312066756c6c2028736368656d61203020312920237861303034290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303034202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203430302030202378303030303030303030303030303030313030303030303030303030303030303429202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030342929290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303035202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203530302030202378303030303030303030303030303030313030303030303030303030303030303529202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030352929290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303036202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203630302030202378303030303030303030303030303030313030303030303030303030303030303629202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030362929290a +textproj.document reject wrong-header-version superseded_companion_version 28746578742d70726f6a656374696f6e2028302037203029290a28646f63756d656e742023783031303130313031303130313031303130313031303130313031303130313031290a2870726f66696c652066756c6c20283020312030292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a +textproj.document reject blob-line unreferenced_blob 28746578742d70726f6a656374696f6e2028302038203029290a28646f63756d656e742023783031303130313031303130313031303130313031303130313031303130313031290a2870726f66696c652066756c6c20283020312030292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a28626c6f6220226170706c69636174696f6e2f6f637465742d73747265616d222028292023783031290a +textproj.document reject out-of-order-sections canonical_base_before_extension 28746578742d70726f6a656374696f6e2028302038203029290a28646f63756d656e742023783033303330333033303330333033303330333033303330333033303330333033290a2870726f66696c652066756c6c20283020312030292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a2863616e6f6e6963616c2d62617365202378303330333033303330333033303330333033303330333033303330333033303320237830313032303320312066756c6c2028736368656d61203020312920237861303033290a28657874656e73696f6e202378303130313031303130313031303130313031303130313031303130313031303120283120302031292066616c73652028286368756e6b20657874656e73696f6e2d646174612028736368656d61203020312920237830312920286368756e6b20657874656e73696f6e2d646174612028736368656d61203020312920237830322929202378303120237830313032290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303032202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203230302030202378303030303030303030303030303030313030303030303030303030303030303229202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030322929290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303033202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203330302030202378303030303030303030303030303030313030303030303030303030303030303329202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030332929290a +textproj.document reject repeated-singular-section lineage_repeated 28746578742d70726f6a656374696f6e2028302038203029290a28646f63756d656e742023783032303230323032303230323032303230323032303230323032303230323032290a286c696e656167652023783132313231323132313231323132313231323132313231323132313231323132290a286c696e656167652023783132313231323132313231323132313231323132313231323132313231323132290a2870726f66696c652066756c6c20283020312030292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a2870726f66696c652028637573746f6d20237863636363636363636363636363636363636363636363636363636363636363632920283120322033292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303031202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203130302030202378303030303030303030303030303030313030303030303030303030303030303129202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030312929290a +textproj.document reject operation-envelope-order envelopes_reversed 28746578742d70726f6a656374696f6e2028302038203029290a28646f63756d656e742023783033303330333033303330333033303330333033303330333033303330333033290a2870726f66696c652066756c6c20283020312030292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a28657874656e73696f6e202378303130313031303130313031303130313031303130313031303130313031303120283120302031292066616c73652028286368756e6b20657874656e73696f6e2d646174612028736368656d61203020312920237830312920286368756e6b20657874656e73696f6e2d646174612028736368656d61203020312920237830322929202378303120237830313032290a2863616e6f6e6963616c2d62617365202378303330333033303330333033303330333033303330333033303330333033303320237830313032303320312066756c6c2028736368656d61203020312920237861303033290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303033202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203330302030202378303030303030303030303030303030313030303030303030303030303030303329202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030332929290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303032202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203230302030202378303030303030303030303030303030313030303030303030303030303030303229202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030322929290a +textproj.document reject profile-declaration-order profiles_reversed 28746578742d70726f6a656374696f6e2028302038203029290a28646f63756d656e742023783032303230323032303230323032303230323032303230323032303230323032290a286c696e656167652023783132313231323132313231323132313231323132313231323132313231323132290a2870726f66696c652028637573746f6d20237863636363636363636363636363636363636363636363636363636363636363632920283120322033292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a2870726f66696c652066756c6c20283020312030292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303031202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203130302030202378303030303030303030303030303030313030303030303030303030303030303129202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030312929290a +textproj.document reject extension-declaration-order extensions_reversed 28746578742d70726f6a656374696f6e2028302038203029290a28646f63756d656e742023783034303430343034303430343034303430343034303430343034303430343034290a286c696e656167652023783134313431343134313431343134313431343134313431343134313431343134290a2870726f66696c652066756c6c20283020312030292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a2870726f66696c652028637573746f6d20237863636363636363636363636363636363636363636363636363636363636363632920283120322033292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a28657874656e73696f6e202378303230323032303230323032303230323032303230323032303230323032303220283120302032292066616c73652028286368756e6b20657874656e73696f6e2d646174612028736368656d61203020312920237830332929202378303220237830323033290a28657874656e73696f6e202378303130313031303130313031303130313031303130313031303130313031303120283120302031292066616c73652028286368756e6b20657874656e73696f6e2d646174612028736368656d61203020312920237830312920286368756e6b20657874656e73696f6e2d646174612028736368656d61203020312920237830322929202378303120237830313032290a2863616e6f6e6963616c2d62617365202378303430343034303430343034303430343034303430343034303430343034303420237830313032303420312066756c6c2028736368656d61203020312920237861303034290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303034202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203430302030202378303030303030303030303030303030313030303030303030303030303030303429202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030342929290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303035202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203530302030202378303030303030303030303030303030313030303030303030303030303030303529202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030352929290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303036202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203630302030202378303030303030303030303030303030313030303030303030303030303030303629202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030362929290a +textproj.document reject extension-chunk-order extension_chunks_reversed 28746578742d70726f6a656374696f6e2028302038203029290a28646f63756d656e742023783033303330333033303330333033303330333033303330333033303330333033290a2870726f66696c652066756c6c20283020312030292028636f6e73747261696e74732036373130383836342028726574656e74696f6e203120282920747275652929290a28657874656e73696f6e202378303130313031303130313031303130313031303130313031303130313031303120283120302031292066616c73652028286368756e6b20657874656e73696f6e2d646174612028736368656d61203020312920237830322920286368756e6b20657874656e73696f6e2d646174612028736368656d61203020312920237830312929202378303120237830313032290a2863616e6f6e6963616c2d62617365202378303330333033303330333033303330333033303330333033303330333033303320237830313032303320312066756c6c2028736368656d61203020312920237861303033290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303032202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203230302030202378303030303030303030303030303030313030303030303030303030303030303229202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030322929290a28656e76656c6f70652023783030303030303030303030303030303130303030303030303030303030303033202378303030303030303030303030303030303030303030303030303030303030616220287374616d70203330302030202378303030303030303030303030303030313030303030303030303030303030303329202863617573616c2028292028292920282920287072696d6974697665202864656c6574652d726567696f6e20237830303030303030303030303030303031303030303030303030303030303030332929290a +textproj.document reject missing-trailing-lf final_lf_missing 28746578742d70726f6a656374696f6e2028302038203029290a28646f63756d656e742023783031303130313031303130313031303130313031303130313031303130313031290a2870726f66696c652066756c6c20283020312030292028636f6e73747261696e74732036373130383836342028726574656e74696f6e20312028292074727565292929