From 5b016f33b7b4af28434e869e7108c8877976afd4 Mon Sep 17 00:00:00 2001 From: Levi Neuwirth Date: Thu, 9 Jul 2026 11:39:28 -0400 Subject: [PATCH] Two more glyph-members assumptions in the vertical-density axis (QMC 0.3.0) Review follow-up on 43215c7. Both findings were right, and the second falsified a comment I wrote in that very commit. 1. Region staff bands were still identified by glyph `members`. vertical_raw measured content over all primitives but decided WHICH staff bands belong to a region by glyph membership -- reintroducing the assumption the change exists to shed. A staff band is allowed to own no glyphs: to_constrained emits one per staff of the region regardless, and a percussion-clef staff (no bundled glyph, so it engraves to a traced anchor stroke) with no notes owns only staff-line strokes. Membership now comes from content presence in one of the region's systems, which identifies the band exactly -- a staff band is per-(staff, region), so its content can land nowhere else. 2. Only the first realizing system was measured, justified by a comment claiming rigid system translation makes every realization agree. The inter-staff solve had just falsified that: it sizes each system's gaps from that system's own content. req:qmc:vertical now counts ONE UNIT PER REALIZATION, matching how realized inter-system gaps were already counted. That is a contributing-unit change, so unlike 43215c7's clarification the catalog moves: QMC 0.2.0 -> 0.3.0 (the P12-I12 precedent). Raw formula, anchor, orientation, thresholds unchanged. Two new fixtures, because an unexercised fix is what I criticised last round: percussion_placeholder_staff (a valid, invariant-clean score whose lower band owns zero glyphs and six strokes) and two_staff_wrapping_pressure (one region, two systems, staff-line gap 15.93 where it collides and 7.87 where it is slack). Both mutation-verified: the members filter scores 4.8e-7, first-system-only scores 1.3e-7 -- each ~0 where the corrected axis reports real deviation. What the per-realization count exposes is not comfortable, and is recorded rather than smoothed over: two_staff_wrapping_pressure now scores 0.739. Its pressured system solves to the declared gap exactly; its slack system sits at ~5 staff spaces against a preferred 2.0. The axis is symmetric -- a gap wider than preferred is sprawl exactly as a narrower one is crowding -- and this solve only expands, never compresses. The deferral "compressing an OVER-wide fixed gap toward preferred ... rarely wanted" is promoted to measurably wrong. Named, not fixed: compression is a layout change (golden churn, ENGRAVER_VERSION move), not a measurement one. Adjacent finding, parked: Staff::default_clef is never consulted -- to_constrained takes the active clef from the instance's clef_sequence and falls back to Clef::default() (treble), so a staff declaring its clef only on Staff engraves as treble. Verified (no layout-ir consumer reads the field). Filed in layout-ir DECISIONS with the ConstrainedLayoutIR listing gap, pending a >=3-candidate batch. Measurement-only: no layout change, ENGRAVER_VERSION stays 11, zero golden churn. Gate green; QMC PDF rebuilds clean. Co-Authored-By: Claude Opus 4.8 (1M context) --- crates/epiphany-engrave/DECISIONS.md | 41 ++++ crates/epiphany-engrave/src/lib.rs | 83 +++++++ crates/epiphany-engrave/src/quality.rs | 62 +++-- crates/epiphany-layout-ir/DECISIONS.md | 24 +- crates/epiphany-layout-ir/src/quality.rs | 4 +- crates/epiphany-testkit/src/fixtures.rs | 285 +++++++++++++++++++++++ spec/PASS12_RATIFICATION_LOG.md | 50 +++- spec/quality_metric_catalog.pdf | Bin 145158 -> 148783 bytes spec/quality_metric_catalog.tex | 45 +++- 9 files changed, 553 insertions(+), 41 deletions(-) diff --git a/crates/epiphany-engrave/DECISIONS.md b/crates/epiphany-engrave/DECISIONS.md index fe3f9ba..644640f 100644 --- a/crates/epiphany-engrave/DECISIONS.md +++ b/crates/epiphany-engrave/DECISIONS.md @@ -899,3 +899,44 @@ re-filed as a bug. while the lower staff descends. No primitive can name an `InterStaffGap` band today (`band_of` yields a staff band or the region's margin band), so this is unreachable rather than latent — building the machinery now would be speculative. + +### Review follow-up: two more glyph-members assumptions (2026-07-09) + +An adversarial review found the content-extent correction incomplete in two +places. Both were right; the second falsified a comment written in the same +commit that introduced it. + +1. **Region staff bands were still identified by glyph `members`.** `vertical_raw` + measured content over all primitives but decided *which* staff bands belong to + a region by glyph membership — the very assumption the change exists to shed. + A staff band is allowed to own no glyphs: `to_constrained` emits one per staff + of the region regardless, and a percussion-clef staff (no bundled glyph, so it + engraves to a traced anchor stroke) with no notes owns only its staff-line + strokes. Region membership now comes from **content presence** in one of the + region's systems, which identifies the band exactly, because a staff band is + per-`(staff, region)` manifestation and its content can land nowhere else. + Locked by `percussion_placeholder_staff` + `a_staff_band_owning_no_glyphs_ + still_contributes_its_gap`. Mutation-verified: the members filter scores + `4.8e-7` where the fix reports real deviation. + +2. **Only the first realizing system was measured.** The code took one system per + gap band, justified by a comment claiming rigid system translation makes every + realization agree. The inter-staff solve had *just* falsified that: it sizes + each system's gaps from that system's own content. `req:qmc:vertical` now + counts **one unit per realization** (QMC 0.2.0 → 0.3.0), matching how realized + inter-system gaps were already counted. Locked by `two_staff_wrapping_pressure` + (staff-line gap 15.93 in the pressured system, 7.87 in the slack one) + + `inter_staff_gaps_are_measured_in_every_system_that_realizes_them`. + Mutation-verified: first-system-only scores `1.3e-7`. + +**What this exposes, and it is not comfortable.** `two_staff_wrapping_pressure` +scores `vertical_density_penalty` **0.739**. Its pressured system solves to the +declared gap exactly; its slack system sits at ~5 staff spaces of content gap +against a preferred 2.0. The axis is symmetric — a gap wider than preferred is +sprawl exactly as a narrower one is crowding — and this solve **only expands, +never compresses**. The deferral recorded above ("compressing an OVER-wide fixed +gap toward preferred… the fixed pitch is generous by default, so this is rarely +wanted") is therefore promoted from *rarely wanted* to **measurably wrong**: any +un-pressured multi-staff system now reports honest sprawl until the solve can pull +staves together. Named here rather than fixed in the same breath — compression is +a layout change (golden churn, `ENGRAVER_VERSION` move), not a measurement one. diff --git a/crates/epiphany-engrave/src/lib.rs b/crates/epiphany-engrave/src/lib.rs index 30b947f..14da586 100644 --- a/crates/epiphany-engrave/src/lib.rs +++ b/crates/epiphany-engrave/src/lib.rs @@ -2333,6 +2333,41 @@ mod tests { ); } + /// A staff band that owns no GLYPHS is still a staff of its region. The + /// percussion placeholder's clef has no bundled glyph (it engraves to a + /// traced anchor stroke) and it carries no notes, so its band's `members` + /// list — which holds glyphs only — is empty, while the band does own its + /// five staff-line strokes. Identifying a region's staff bands by their + /// glyph members would drop it from the axis entirely, reintroducing the + /// very glyph-members assumption the content-extent measurement sheds. + #[test] + fn a_staff_band_owning_no_glyphs_still_contributes_its_gap() { + use epiphany_layout_ir::{to_constrained, to_logical}; + let input = to_constrained(&to_logical( + &epiphany_testkit::fixtures::percussion_placeholder_staff(1), + )); + let report = Engraver::default().solve(&input, &SolverConfig::default()); + assert_eq!(report.status, SolveStatus::Solved); + for page in &report.layout.pages { + for sys in &page.systems { + assert_eq!( + sys.staves.len(), + 2, + "the glyph-less placeholder is still laid out as a staff" + ); + } + } + // Its gap to the melody staff is slack (the solve expands, never + // compresses), so the band contributes a large deviation. Dropping the + // band would leave the region with one staff, no inter-staff unit, and + // an axis of exactly 0. + let density = report.metric_vector.vertical_density_penalty.0; + assert!( + density > 0.5, + "the glyph-less band's gap reaches the axis: {density}" + ); + } + #[test] fn inter_staff_solve_separates_colliding_staves() { use epiphany_layout_ir::{to_constrained, to_logical}; @@ -2484,6 +2519,54 @@ mod tests { assert!(gaps[2] < 2.0, "and sits close against it: {}", gaps[2]); } + /// A gap band realized in several systems contributes a unit PER SYSTEM. + /// The inter-staff solve sizes each system's gaps from that system's own + /// content, so one band's realized height genuinely differs across a + /// region's systems — here 15.93 staff spaces in the system carrying the + /// colliding first measure, 7.87 in the slack one after it. Measuring only + /// the first system realizing the band (as this metric once did, on the + /// since-falsified premise that rigid system translation makes every + /// realization agree) would report the pressured system's near-perfect gap + /// and discard the slack one entirely. + #[test] + fn inter_staff_gaps_are_measured_in_every_system_that_realizes_them() { + use epiphany_layout_ir::{to_constrained, to_logical}; + let report = Engraver::default().solve( + &to_constrained(&to_logical( + &epiphany_testkit::fixtures::two_staff_wrapping_pressure(1), + )), + &SolverConfig::default(), + ); + let systems: Vec<_> = report + .layout + .pages + .iter() + .flat_map(|page| &page.systems) + .collect(); + assert_eq!(systems.len(), 2, "the region wraps into two systems"); + let gap = |sys: &epiphany_layout_ir::ResolvedSystem| { + assert_eq!(sys.staves.len(), 2, "both staves ride every system"); + let (top, bottom) = (&sys.staves[0].bounding_box, &sys.staves[1].bounding_box); + top.origin.y.0 - (bottom.origin.y.0 + bottom.size.height.0) + }; + let (first, second) = (gap(systems[0]), gap(systems[1])); + assert!( + first > second + 4.0, + "the pressured system opens much further than the slack one: {first} vs {second}" + ); + + // The slack system's gap sits well past the band's preferred height (the + // solve expands but never compresses), so it contributes a large + // deviation. The pressured system was solved to preferred and contributes + // ~0. A first-system-only measurement would therefore report ~0 overall; + // counting both realizations reports the sprawl honestly. + let density = report.metric_vector.vertical_density_penalty.0; + assert!( + density > 0.5, + "the slack system's sprawl reaches the axis: {density}" + ); + } + #[test] fn vertical_justification_fills_non_final_pages() { use epiphany_layout_ir::{Margins, Size2D, StaffSpace}; diff --git a/crates/epiphany-engrave/src/quality.rs b/crates/epiphany-engrave/src/quality.rs index 289a965..5a0d5ce 100644 --- a/crates/epiphany-engrave/src/quality.rs +++ b/crates/epiphany-engrave/src/quality.rs @@ -64,8 +64,8 @@ use epiphany_layout_ir::quality::{ anchors, normalize, MetricThresholds, QUALITY_FLOOR_FRACTION, QUALITY_METRIC_KINDS, }; use epiphany_layout_ir::{ - inter_staff_gap_id, ConstrainedLayoutIR, Curve, GlyphObjectId, QualityMetricVector, - SolverWarning, SolverWarningKind, SpringSlotId, VerticalBand, VerticalBandId, VerticalBandKind, + inter_staff_gap_id, ConstrainedLayoutIR, Curve, QualityMetricVector, SolverWarning, + SolverWarningKind, SpringSlotId, VerticalBand, VerticalBandId, VerticalBandKind, }; use crate::casting::{CastLayout, PageGeometry}; @@ -385,26 +385,40 @@ fn vertical_raw(input: &ConstrainedLayoutIR, cast: &CastLayout, census: &SystemC } for (region_index, region) in input.regions.iter().enumerate() { - // The region's laid-out staff bands, top staff first, ordered within - // the region's first system (systems translate rigidly, so within- - // system y order is the region's staff order). - let first_system = census.region.iter().position(|&r| r == region_index); - let Some(first_system) = first_system else { + // The region's systems, in page order. A staff band is `to_constrained`'s + // per-*manifestation* band — one per (staff, region) — so its content can + // only land in its own region's systems, and "has content in one of this + // region's systems" identifies the region's staff bands exactly. + // + // Membership is NOT read from `VerticalBand::members`. That list holds + // glyphs, and a staff band is allowed to have none: a staff whose clef is + // unbundled engraves to an anchor *stroke*, and its staff lines are + // strokes regardless. Filtering by glyph members would silently drop such + // a staff from the axis — the same glyph-members assumption this metric + // exists to shed. + let region_systems: Vec = census + .region + .iter() + .enumerate() + .filter(|&(_, &r)| r == region_index) + .map(|(system, _)| system) + .collect(); + let Some(&first_system) = region_systems.first() else { continue; }; - let region_glyphs: BTreeSet = region.glyphs.iter().copied().collect(); + // Top staff first, ordered within the region's first system: a system + // translates rigidly as a whole, so the staff ORDER is the same in each + // (only the gaps between them are renegotiated per system). let mut staves: Vec<(f64, VerticalBandId)> = input .vertical_bands .iter() .filter(|band| matches!(band.kind, VerticalBandKind::Staff(_))) - .filter(|band| band.members.iter().any(|id| region_glyphs.contains(id))) .filter_map(|band| { content .get(&(first_system, band.id)) .map(|&(_, top)| (top, band.id)) }) .collect(); - // Top staff first. staves.sort_by(|a, b| b.0.total_cmp(&a.0)); // The region's declared inter-staff gap bands, by their derived ids @@ -420,19 +434,21 @@ fn vertical_raw(input: &ConstrainedLayoutIR, cast: &CastLayout, census: &SystemC continue; } let (upper, lower) = (staves[gap - 1].1, staves[gap].1); - // Realized iff the adjacent content shares a system; measure the - // separation there (rigid system translation makes every common - // system agree). - let common = (0..census.region.len()).find(|&system| { - content.contains_key(&(system, upper)) && content.contains_key(&(system, lower)) - }); - let Some(system) = common else { - continue; - }; - let upper_bottom = content[&(system, upper)].0; - let lower_top = content[&(system, lower)].1; - let realized = (upper_bottom - lower_top).max(0.0); - per_unit.push((realized - preferred).abs() / preferred); + // EVERY system realizing the pair contributes a unit, not just the + // first. The inter-staff solve sizes each system's gaps from that + // system's own content, so one band's realized height genuinely + // differs across the systems of a region — a later system may carry + // different pressure, or a bake bug touching one primitive class. + // Measuring only the first would average away both. + for &system in ®ion_systems { + let (Some(&(upper_bottom, _)), Some(&(_, lower_top))) = + (content.get(&(system, upper)), content.get(&(system, lower))) + else { + continue; + }; + let realized = (upper_bottom - lower_top).max(0.0); + per_unit.push((realized - preferred).abs() / preferred); + } } } diff --git a/crates/epiphany-layout-ir/DECISIONS.md b/crates/epiphany-layout-ir/DECISIONS.md index 9ff3824..751c976 100644 --- a/crates/epiphany-layout-ir/DECISIONS.md +++ b/crates/epiphany-layout-ir/DECISIONS.md @@ -695,6 +695,24 @@ them). Two fields the code carries are still absent from the listing: Neither blocks an implementation the way a missing `strokes`/`curves` did: both are governed by requirement text elsewhere, so a conformant implementer is not -left guessing. **Parked, not open.** The Pass-13 batch is closed and the house -rule opens a pass at ≥3 candidates; this is one. It joins a future batch rather -than reopening one on its own. +left guessing. + +## Parked: `Staff::default_clef` is never consulted (2026-07-09) + +`to_constrained` takes a staff instance's active clef from its `clef_sequence` +(via `staff_content`'s `PlacedClef` list) and, when that sequence is empty, falls +back to `Clef::default()` — treble. It never reads `Staff::default_clef`. So a +bass-clef staff that declares its clef *only* on the `Staff` engraves as treble; +the field is decorative in the projection. No consumer in this crate reads it +(verified: `default_clef` appears only in core's codec/generators and the +fixtures). + +Found while building `percussion_placeholder_staff`, which therefore has to +declare its percussion clef as a `ClefChange` rather than on the staff. Whether +the staff's default should seed the sequence, or the field should be removed, is +a small design question — not a silent-corruption bug (nothing is lost, only +ignored). + +**Both of the above are parked, not open.** The Pass-13 batch is closed and the +house rule opens a pass at ≥3 candidates; these are two. They join a future batch +rather than reopening one. diff --git a/crates/epiphany-layout-ir/src/quality.rs b/crates/epiphany-layout-ir/src/quality.rs index e32b9fe..ab392f2 100644 --- a/crates/epiphany-layout-ir/src/quality.rs +++ b/crates/epiphany-layout-ir/src/quality.rs @@ -1,7 +1,7 @@ //! The Quality Metric Catalog's normative constants (companion specification -//! *Epiphany — Quality Metric Catalog*, v0.2.0): the per-axis normalization +//! *Epiphany — Quality Metric Catalog*, v0.3.0): the per-axis normalization //! anchors, the per-tier metric threshold table, the profile→threshold-column -//! mapping, and the `QualityFloorApproached` warning fraction. (The v0.2.0 +//! mapping, and the `QualityFloorApproached` warning fraction. (The v0.3.0 //! `spacing_distortion` refinement scoped that axis's *measurement domain* to //! rhythmic columns; it touched no anchor or threshold, so this transcription //! of the numeric constants is unchanged.) diff --git a/crates/epiphany-testkit/src/fixtures.rs b/crates/epiphany-testkit/src/fixtures.rs index 89feb36..d285b00 100644 --- a/crates/epiphany-testkit/src/fixtures.rs +++ b/crates/epiphany-testkit/src/fixtures.rs @@ -333,6 +333,242 @@ pub fn three_staff_close_content(seed: u64) -> Score { score } +/// A TWELVE-measure, TWO-staff metric score that wraps into more than one +/// system and carries its inter-staff pressure in the FIRST measure only: the +/// top staff dips to C2 and the bottom staff climbs to C6 there, while every +/// later measure is plain C4s on both staves. +/// +/// So the two systems of the one region want genuinely different staff gaps — +/// the first must open to clear the colliding ledgers, the second is already +/// slack. The inter-staff solve sizes each system's gaps from that system's own +/// content, so a quality metric that measured only the first system realizing a +/// gap band would average the second one away. Invariant-clean. +pub fn two_staff_wrapping_pressure(seed: u64) -> Score { + let mut rng = SplitMix64::new(seed ^ 0x0004_57AF_F123); + let replica = + ReplicaId::from_entropy(rng.next_u64().to_le_bytes()).unwrap_or(ReplicaId(0x4ADF)); + let mut idc = IdentityContext::new(replica); + + let top_staff: StaffId = idc.mint(); + let bottom_staff: StaffId = idc.mint(); + let instrument: InstrumentId = idc.mint(); + let region_id: RegionId = idc.mint(); + + const MEASURES: i64 = 12; + const BEATS: i64 = 4; + + // Measure 0 collides (top dives, bottom climbs); the rest sit inside the + // staff, where the fixed staff pitch already leaves the gap slack. + let octave = |staff_index: usize, index: i64| -> i8 { + if index >= BEATS { + return 4; + } + if staff_index == 0 { + [4i8, 3, 2, 3][index as usize] + } else { + [4i8, 5, 6, 5][index as usize] + } + }; + + let mut arena = EventArena::new(); + let mut instances: Vec = Vec::new(); + for (staff_index, staff_id) in [top_staff, bottom_staff].into_iter().enumerate() { + let instance_id: StaffInstanceId = idc.mint(); + let voice_id: VoiceId = idc.mint(); + let mut voice = Voice::user(voice_id); + for index in 0..(MEASURES * BEATS) { + let (eid, pid): (EventId, PitchId) = (idc.mint(), idc.mint()); + arena + .insert(c_at(eid, voice_id, pid, index, octave(staff_index, index))) + .unwrap(); + voice.events.push(eid); + } + let mut instance = StaffInstance::new(instance_id, staff_id); + instance.voices.push(voice); + for m in 0..MEASURES { + instance.measures.push(Measure { + id: idc.mint(), + start: TimeAnchor::Region { + id: region_id, + edge: RegionEdge::Start, + offset: AnchorOffset::Musical(MusicalDuration( + RationalTime::new(m, 1).unwrap(), + )), + }, + time_signature: None, + explicit_number: Some((m + 1) as u32), + number_visibility: Default::default(), + }); + } + instances.push(instance); + } + + let region = epiphany_core::Region { + id: region_id, + time_model: RegionTimeModel::Metric(MetricTimeModel::default()), + content: RegionContent::StaffBased(StaffBasedContent { + staff_instances: instances, + ..Default::default() + }), + time_extent: TimeExtent { + start: TimeAnchor::WallClock { + time: WallClockTime(0), + }, + end: TimeAnchor::WallClock { + time: WallClockTime(120_000_000), + }, + }, + staff_extent: StaffExtent { + staves: vec![top_staff, bottom_staff], + }, + local_tempo_map: None, + permits_spanning_slurs: false, + }; + + let staff = |id: StaffId, name: &str| Staff { + id, + name: String::from(name), + abbreviation: None, + instrument, + default_staff_lines: StaffLineConfiguration::default(), + group: None, + default_clef: epiphany_core::Clef::treble(), + }; + let mut score = Score::empty(idc.clone()); + score.identity = idc; + score.instruments = vec![epiphany_core::Instrument::new( + instrument, + String::from("Keyboard"), + )]; + score.staves = vec![staff(top_staff, "Right"), staff(bottom_staff, "Left")]; + score.events = arena; + score.canvas = Canvas { + regions: vec![region], + ..Default::default() + }; + score +} + +/// A two-staff score whose LOWER staff engraves **no glyphs at all**: it is a +/// percussion-clef placeholder — a staff instance with a `ClefChange` to +/// `ClefShape::Percussion`, which has no bundled SMuFL glyph (it engraves to a +/// traced anchor stroke), and no voices or measures. Its vertical band therefore +/// owns five staff-line strokes plus that anchor, and **zero** members. +/// +/// The upper staff carries twelve plain measures of C4, so it wraps and its gap +/// to the placeholder is slack everywhere. Together: a valid score on which any +/// consumer that identifies a region's staff bands by their glyph `members` +/// silently loses the lower staff. Invariant-clean. +pub fn percussion_placeholder_staff(seed: u64) -> Score { + let mut rng = SplitMix64::new(seed ^ 0x0005_57AF_F123); + let replica = + ReplicaId::from_entropy(rng.next_u64().to_le_bytes()).unwrap_or(ReplicaId(0x5ADF)); + let mut idc = IdentityContext::new(replica); + + let top_staff: StaffId = idc.mint(); + let drum_staff: StaffId = idc.mint(); + let instrument: InstrumentId = idc.mint(); + let region_id: RegionId = idc.mint(); + + const MEASURES: i64 = 12; + const BEATS: i64 = 4; + + let mut arena = EventArena::new(); + let top_instance: StaffInstanceId = idc.mint(); + let top_voice: VoiceId = idc.mint(); + let mut voice = Voice::user(top_voice); + for index in 0..(MEASURES * BEATS) { + let (eid, pid): (EventId, PitchId) = (idc.mint(), idc.mint()); + arena.insert(quarter(eid, top_voice, pid, index)).unwrap(); + voice.events.push(eid); + } + let mut top = StaffInstance::new(top_instance, top_staff); + top.voices.push(voice); + for m in 0..MEASURES { + top.measures.push(Measure { + id: idc.mint(), + start: TimeAnchor::Region { + id: region_id, + edge: RegionEdge::Start, + offset: AnchorOffset::Musical(MusicalDuration(RationalTime::new(m, 1).unwrap())), + }, + time_signature: None, + explicit_number: Some((m + 1) as u32), + number_visibility: Default::default(), + }); + } + + // The placeholder: a percussion clef, no voices, no measures. + let drum_instance: StaffInstanceId = idc.mint(); + let mut drums = StaffInstance::new(drum_instance, drum_staff); + drums.clef_sequence.push(epiphany_core::ClefChange { + anchor: TimeAnchor::WallClock { + time: WallClockTime(0), + }, + clef: epiphany_core::Clef { + shape: epiphany_core::ClefShape::Percussion, + line: 3, + octave_shift: 0, + }, + }); + + let region = epiphany_core::Region { + id: region_id, + time_model: RegionTimeModel::Metric(MetricTimeModel::default()), + content: RegionContent::StaffBased(StaffBasedContent { + staff_instances: vec![top, drums], + ..Default::default() + }), + time_extent: TimeExtent { + start: TimeAnchor::WallClock { + time: WallClockTime(0), + }, + end: TimeAnchor::WallClock { + time: WallClockTime(120_000_000), + }, + }, + staff_extent: StaffExtent { + staves: vec![top_staff, drum_staff], + }, + local_tempo_map: None, + permits_spanning_slurs: false, + }; + + let staff = |id: StaffId, name: &str, clef: epiphany_core::Clef| Staff { + id, + name: String::from(name), + abbreviation: None, + instrument, + default_staff_lines: StaffLineConfiguration::default(), + group: None, + default_clef: clef, + }; + let mut score = Score::empty(idc.clone()); + score.identity = idc; + score.instruments = vec![epiphany_core::Instrument::new( + instrument, + String::from("Ensemble"), + )]; + score.staves = vec![ + staff(top_staff, "Melody", epiphany_core::Clef::treble()), + staff( + drum_staff, + "Drums", + epiphany_core::Clef { + shape: epiphany_core::ClefShape::Percussion, + line: 3, + octave_shift: 0, + }, + ), + ]; + score.events = arena; + score.canvas = Canvas { + regions: vec![region], + ..Default::default() + }; + score +} + /// A 10-measure, single-staff, single-voice metric score with 40 quarter notes /// (four per measure), plus a tie, a spanner, a marker, and a chord symbol. The /// QUICKSTART layout hand-off case. Invariant-clean (the returned graph passes @@ -613,6 +849,55 @@ mod tests { assert_eq!(s.cross_cutting.slurs.len(), 1, "a slur over the high notes"); } + #[test] + fn percussion_placeholder_staff_is_invariant_clean_and_glyphless_below() { + use epiphany_layout_ir::{to_constrained, to_logical, VerticalBandKind}; + let s = percussion_placeholder_staff(1); + let v = check_invariants(&s); + assert!(v.is_empty(), "percussion fixture has violations: {v:?}"); + let c = to_constrained(&to_logical(&s)); + let glyphless: Vec<_> = c + .vertical_bands + .iter() + .filter(|b| matches!(b.kind, VerticalBandKind::Staff(_))) + .filter(|b| !c.glyphs.iter().any(|g| g.vertical_band == b.id)) + .collect(); + assert_eq!( + glyphless.len(), + 1, + "exactly one staff band owns no glyph (the percussion placeholder)" + ); + assert!( + glyphless[0].members.is_empty(), + "and therefore no band members either" + ); + assert!( + c.strokes + .iter() + .filter(|st| st.vertical_band == glyphless[0].id) + .count() + >= 5, + "but it does own its staff lines" + ); + } + + #[test] + fn two_staff_wrapping_pressure_is_invariant_clean_and_front_loaded() { + let s = two_staff_wrapping_pressure(1); + let v = check_invariants(&s); + assert!( + v.is_empty(), + "wrapping two-staff fixture has violations: {v:?}" + ); + assert_eq!(s.staves.len(), 2, "two staves"); + assert_eq!(s.events.len(), 96, "12 measures x 4 beats x 2 staves"); + assert_eq!( + s.canvas.regions[0].staff_instances().len(), + 2, + "two staff instances in ONE region -- so both staves share every system" + ); + } + #[test] fn three_staff_close_content_is_invariant_clean_and_asymmetric() { let s = three_staff_close_content(1); diff --git a/spec/PASS12_RATIFICATION_LOG.md b/spec/PASS12_RATIFICATION_LOG.md index f7f4c19..be1e9b6 100644 --- a/spec/PASS12_RATIFICATION_LOG.md +++ b/spec/PASS12_RATIFICATION_LOG.md @@ -306,13 +306,13 @@ that was an implementation defect, not a definition defect. | "Content extent" was ambiguous | **clarify (editorial)** — `req:qmc:vertical` now spells out that content extent means every primitive the band owns, each attributed by its declared `vertical_band`, and not the band's glyph `members`. Before primitive band ownership this reading was arguably unimplementable, which is why the defect survived. The stale rationale (claiming the vertical spring solve is deferred) is refreshed, and the inter-system half of the axis is recorded as a genuine trade-off against `page_fill_efficiency`, not a defect | quality_metric_catalog §`vertical_density_penalty` rationale | — | | Solve read the gap from a constructor | **fix** — the inter-staff solve now targets the `preferred_height` of the `InterStaffGap` band `to_constrained` emitted for that staff pair, not `VerticalBand::inter_staff_gap`'s default. The band is now a height model: a region declaring a wider gap gets one, and the solve and the metric agree by construction rather than by both calling the same constructor | — (behavioural, within `req:layoutir:vertical-bands`) | `epiphany-engrave` (`casting.rs`) | -**Version movements.** None. Quality Metric Catalog stays **0.2.0** (formula, -units, anchor, normalization unchanged — a clarification and a rationale refresh -are not a definition change; contrast P12-I12, which redefined -`spacing_distortion`'s unit and did move the version). Core spec unchanged. -Operation Catalog 0.7.0, Binary Format 0.6.0 unchanged. **No layout change and no -render-golden churn** — this is measurement-only, as the ENGRAVER_VERSION staying -at 11 records. +**Version movements.** Quality Metric Catalog **0.2.0 → 0.3.0** — see the review +follow-up below. (The conformance fix above needed none on its own: formula, +anchor, and normalization were unchanged, and a clarification is not a definition +change. The follow-up's per-realization unit count *is* one, so the version moves +with it.) Core spec unchanged. Operation Catalog 0.7.0, Binary Format 0.6.0 +unchanged. **No layout change and no render-golden churn** — measurement-only, as +`ENGRAVER_VERSION` staying at 11 records. **Deferred (documented, not open candidates).** Staff-less content placed *between* two staves would hold still while the lower staff descends away from @@ -320,3 +320,39 @@ it. No primitive can name an `InterStaffGap` band today (`band_of` yields a staf band or the region's margin band), so this is unreachable rather than latent; building the machinery now would be speculative. Named in `epiphany-engrave/DECISIONS.md`. + +### Review follow-up (2026-07-09) — two more glyph-members assumptions + +An adversarial review of the fix above found the correction incomplete. Both +findings were right, and the second falsified a comment I had written in the same +commit. + +| Item | Disposition | Spec locus | Consumer | +|---|---|---|---| +| Region staff bands identified by glyph `members` | **fix (conformance)** — `vertical_raw` measured content over all primitives but still decided *which* staff bands belong to a region by glyph membership, reintroducing the assumption the change exists to shed. A staff band is allowed to own no glyphs: `to_constrained` emits one per staff of the region regardless, and a percussion-clef staff (no bundled glyph → traced anchor stroke) with no notes owns only its staff-line strokes. Region membership now comes from content presence in one of the region's systems — a staff band is per-(staff, region), so this identifies it exactly. Locked by the new `percussion_placeholder_staff` fixture and `a_staff_band_owning_no_glyphs_still_contributes_its_gap` | — (conformance to `req:qmc:vertical`) | `epiphany-engrave` (`quality.rs::vertical_raw`) | +| Only the first realizing system measured | **fix + catalog definition move (0.3.0)** — the code measured one system per gap band, justified by a comment claiming rigid system translation makes every realization agree. The inter-staff solve had *just* falsified that: it sizes each system's gaps from that system's own content. `req:qmc:vertical` now counts **one unit per realization**, matching how realized inter-system gaps were already counted. Locked by the new `two_staff_wrapping_pressure` fixture (staff-line gap 15.93 in the pressured system, 7.87 in the slack one) and `inter_staff_gaps_are_measured_in_every_system_that_realizes_them` | quality_metric_catalog §`vertical_density_penalty` (`req:qmc:vertical`), **0.2.0 → 0.3.0** | `epiphany-engrave` | + +Both fixes are mutation-verified: reverting to glyph-member region identification +scores `4.8e-7` on the percussion fixture, and reverting to first-system-only +scores `1.3e-7` on the wrapping fixture — each ~0 where the corrected axis reports +real deviation. + +**What the per-realization count exposes.** `two_staff_wrapping_pressure` now +scores `vertical_density_penalty` **0.739**: its pressured system solves to the +declared gap exactly (≈0 deviation), while its slack system sits at ≈5 staff +spaces of content gap against a preferred 2.0. The axis is symmetric — a gap +wider than preferred is sprawl exactly as a narrower one is crowding — and the +inter-staff solve **only expands, never compresses**. That deferral +(`epiphany-engrave/DECISIONS.md`, "compressing an OVER-wide fixed gap toward +preferred… rarely wanted") is hereby promoted from *rarely wanted* to +*measurably wrong*: any un-pressured multi-staff system reports honest sprawl +until the solve can pull staves together. Named, not fixed — compression is a +layout change (golden churn, `ENGRAVER_VERSION` move), not a measurement one. + +**Adjacent finding, not fixed here.** `Staff::default_clef` is never consulted by +the projection: `to_constrained` takes the active clef from the staff instance's +`clef_sequence` and falls back to `Clef::default()` (treble). A bass-clef staff +that declares its clef only via `Staff::default_clef` engraves as treble. Found +while building the percussion fixture (which therefore had to declare its clef as +a `ClefChange`). Filed in `epiphany-layout-ir/DECISIONS.md`; parked with the +`ConstrainedLayoutIR` listing gap pending a ≥3-candidate Pass-13 batch. diff --git a/spec/quality_metric_catalog.pdf b/spec/quality_metric_catalog.pdf index 512b5938b130cda4b5433b45733184a544d5fcb8..d1965b2a3ecd3b1b42d0d3e3006c6ca27893eb0e 100644 GIT binary patch delta 58542 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 MXmoVnl%>%A57F)kmjD0& delta 54933 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

}d(|}YFwUMy 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 0$ that are realized in $L$ (the adjacent content they separate was -laid out). +\textbf{Contributing units:} each \emph{realization} in $L$ of a vertical +band of $C$ of kind \texttt{InterStaffGap} or \texttt{InterSystemGap} with +preferred height $p > 0$ (a band is realized wherever the adjacent content +it separates was laid out). A band realized in several systems contributes +\textbf{one unit per system}, not one per band: a vertical solve sizes each +system's gaps from that system's own content, so one band's realized height +genuinely differs from system to system. This matches how the realized +inter-system gaps are already counted --- one unit per adjacent system pair +on a page. \textbf{Raw measurement:} per unit, with $r \ge 0$ the realized vertical separation between the adjacent content extents the band separates @@ -918,6 +923,18 @@ The inter-system half of the axis is a genuine trade-off, not a defect: the vertical justification pass deliberately stretches inter-system gaps past preferred to fill a non-final page, trading this axis against \texttt{page\_fill\_efficiency}. Both axes are reported; neither is wrong. + +\textbf{Per-realization units} (0.3.0) followed from the same landing. While +the reference pipeline preserved constrained $y$ verbatim, a band had exactly +one realized height and the distinction was moot. Once the inter-staff solve +began sizing each system's gaps from that system's own content, a band's +realized height became per-system, and counting one unit per band would let a +well-solved system average away a badly spaced one. The axis is deliberately +symmetric: a gap wider than preferred is sprawl exactly as a narrower one is +crowding. A solver that only ever \emph{expands} a fixed stacking --- never +compressing an over-wide gap back toward preferred --- will therefore report +honest sprawl on its slack systems. That is the axis working, not +mis-measuring. \end{rationale} \section{\texttt{system\_break\_penalty}} @@ -1366,6 +1383,22 @@ than inventing a parallel one. irregularity. Normalization anchor, orientation, range, thresholds, and the eight other axes are unchanged; the optical-spacing open question (duration-proportional spacing) stays open. Batch item P12-I12. \\ + \midrule + \today & \hyperref[sec:metrics:vertical]{\texttt{vertical\_density\_penalty}} + & 0.3.0 --- Count \textbf{one contributing unit per realization} of an + \texttt{InterStaffGap} band rather than one per band, matching how realized + inter-system gaps were already counted. The inter-staff vertical solve sizes + each system's gaps from that system's own content, so a band's realized + height is per-system; one unit per band let a well-solved system average away + a badly spaced one. Also \emph{clarifies} (no semantic change) that the + ``content extents'' the raw measurement compares are every primitive the + adjacent band owns --- glyphs, strokes, and curves, each attributed by its + declared \texttt{vertical\_band} --- and not the band's glyph + \texttt{members}, a reading that was arguably unimplementable before + primitive band ownership was ratified. Raw formula, normalization anchor, + orientation, range, thresholds, and the eight other axes are unchanged. The + reference implementation's non-conforming glyph-only measurement is fixed + alongside. \\ \bottomrule \end{longtable}