Go to file
Levi Neuwirth 4a2ee312f7 Push 4b tranche 1: contract for the pitch-space slice
Types, the catalog data that fills them, and the consumer that reads them --
dispatched as one vertical slice rather than the plan's three steps. A Chapter 4
type surface with no consumer is the shape that produced Staff::default_clef and
NOTEHEAD_ANCHORS, so the acceptance test is behavioural: a cmn-24 pitch
transposes end-to-end.

Six of the thirteen built-in pitch spaces are underdetermined by the
specification -- the three ji-* generators and all three of maqam-base,
gamelan-slendro and gamelan-pelog. The contract requires they be represented as
unresolved and reported, never inferred.

Writing it also caught an incomplete paraphrase of
req:tuning:diatonic-chromatic-mapping in the contract's own text: it has three
clauses, not two, and both built-in mappings satisfy all three -- so a
constructor enforcing only the first two would pass every test built from the
catalog. That is P13-S9's discipline applied to the contract that cites it.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-22 17:08:00 -04:00
.github/workflows CI: lint policy belongs on one toolchain 2026-07-22 15:14:14 -04:00
crates CI: lint policy belongs on one toolchain 2026-07-22 15:14:14 -04:00
spec Push 4b tranche 1: contract for the pitch-space slice 2026-07-22 17:08:00 -04:00
.gitignore Schema major 1 Phase F: ratify engrave I8/I9/I10 + process trail 2026-07-06 17:40:38 -04:00
CONFORMANCE.md Pass 12 G-pass: ratify the full batch (28 rows) — spec tranche 2026-07-07 10:23:30 -04:00
Cargo.lock Text Projection: whole-document conformance, and a corpus with teeth 2026-07-21 15:44:25 -04:00
Cargo.toml CI: an MSRV that could not build, and a gate that floated 2026-07-22 15:05:04 -04:00