music/MUSIC_GAP_HUNT_2026-08-07.md
CANON SUBORDINATION — this document is PROPOSAL-TIER: it serves canon and never outranks it.
Canon served: the composition floor and its two amendments in docs/spine/DECISIONS_PENDING_JOSH.md —
MUSIC ROUND 1 GRADED + THE COMPOSITION FLOOR (L5482), ROUND 2 GRADED (L5600), and the
ROUND-2 FLOOR ADDENDUM (L5615), which orders this sweep in Josh's own words: *"I like more
upbeat and what else might we be missing? Whats going to make people 30-50 years later still
listen to it for nostalgia? And it play in orchestras."*
If this document disagrees with canon, CANON WINS and this document is the defect.
Tier: PROPOSAL-TIER GAP SWEEP. It rules on nothing, changes no canon, and writes no registry.
It is the gap-hunter step the standing law of 2026-08-01 requires after a floor is built: what did
the comment imply that nobody built? Findings are BUILT-NOW or BOARDED, never dropped.
Method: sweep, not brainstorm. Every candidate below is grounded in a file on disk or a cited
source, and every one was checked against what ALREADY EXISTS before being called a gap. For each:
the gap in one sentence, the evidence it is real with file:line, the PROOF OF ABSENCE with its
positive control, why it matters to the 30-50-year test or the orchestra test or the floor, the
smallest thing that closes it, a verdict, and — not optional — the strongest argument that it is
not a gap at all. A gap list with no counterarguments is a wish list.
The program's craft layer is in good shape and its measurement layer is unusually honest. What is
missing is not craft and not measurement — it is ATTACHMENT. Six research lanes, a doctorate
synthesis, a 2,152-line doctrine, five instruments and a compose-then-realise architecture all
answer the question *what makes a piece of music good*. Almost nothing in the stack answers *which
person, place and moment does this tune belong to, how many times will a player hear it across
sixty hours, and what is it for*. The empirical literature on why music stays loved for thirty
years points hardest at exactly that missing half. Thirty-six of the thirty-eight authored themes
have zero attachment to any cue anywhere in the playable slice, and the reason is a hardcoded
string in one emitter. That is the largest single finding here and it is finding number one.
Josh's question — what makes people still listen thirty to fifty years later — has a real
literature, and it does not say what a composer would hope it says.
aged 18 to 82, the most autobiographical memories attach to music whose song-specific age falls
between 10 and 19, peaking around 14 (Jakubowski, Eerola, Tillmann, Perrin and Heine, *Music &
Science*, 2020). Adolescence carries a socially-boosted increase in the reward of music listening.
A game whose players are in that band is writing into the bump whether or not it means to.
autobiographical memories than unfamiliar music, and repeated exposure strengthens the cue-memory
association through reactivation and rehearsal. The tune retrieves the person because the tune was
THERE, repeatedly, while the person mattered.
showed the highest correlation with both autobiographical salience and familiarity, and emotional
intensity — valence to a lesser extent — MEDIATED the predictive effect of musical features on
music-evoked memory. Musical features work THROUGH affect; they do not bypass it.
the inverted-U is one of the most tested hypotheses in music preference, and in some listening
conditions liking peaks as early as two exposures. Openness-to-experience moves the peak. An
unmanaged exposure count is as likely to burn a theme out as to bond it.
in the ludomusicology literature is Saria's Song: taught to the player in Kokiri Forest, returned
slower and sadder in the adult era. The player learns it, performs it, and then meets it changed.
Uematsu's and Kondo's shared method — a short cell per character, place and event, brief enough to
recall and flexible enough to transform — is the same mechanism.
WHAT THIS MEANS FOR OUR PROGRAM, stated plainly. Melodic quality is necessary and our whole stack is
pointed at it. The 30-50-year outcome is produced by ASSOCIATION, EXPOSURE AT A MANAGED DOSE, and
AFFECT — three things that are properties of the SCHEDULE and the ATTACHMENT, not of the notes. We
have built the notes half. Gaps one, two and three below are the other half.
to cues assigns one theme by hardcoded constant to 210 of its 216 rows, so thirty-six of the
thirty-eight authored themes have no exposure anywhere in the playable slice.
registries/T0_Theme_Registry [DRAFT v0.1] carries 38 rows including PROTAGONIST_THEME, HOUSE_OF_VELHEIM_THEME, ARCHITECT_THEME, FAMILIAR_BOND,
COMPANION_HEALERS_CHILD, CHILDHOOD_CONSTANCY, PATTERN_UNNAMED_PREGATE, twelve REGION_*
rows and eight FAM_* family rows. build/audio/music_cue_table.csv carries 216 cue rows with a
theme_ref column. Counted at HEAD: theme_ref takes exactly two values — JOURNEY_WORLD on 210
rows and HOME_AND_LOSS on 6. In harness/emit_music_cues.py the assignment is the literal string
theme_ref="JOURNEY_WORLD" at L499 (zone beds), L535 (tension layers), L565 (combat layers), L603
(chapter-scope beds) and L627 (stingers); only the motif_statement branch at L672 passes a real
theme_id, and it resolved to one theme.
theme_id or theme_refreturns exactly one file — the theme registry's own. No character, boss, familiar, faction, region,
scene or creature row carries a theme reference of any kind. POSITIVE CONTROL, same scan shape:
T0_SFX_Registry carries linked_entity_id and linked_entity_type and 680 rows use them, so
entity attachment is a pattern this corpus knows how to express and simply has not applied to
music. Second control: python harness/emit_music_cues.py --check returns
DRIFT -- disk 216 rows, derived 222 rows, so the table is stale as well as degenerate — but the
hardcoded constants mean a re-emit does not fix the attachment, it only adds six rows.
to "why do people still love it" is that a tune bonded to a person, a place and a moment, and was
heard enough times for the bond to set. A protagonist theme nobody hears cannot bond to anybody. It
also silently defeats work already paid for: the 2026-08-05 commit a03e5ddb took the registry
from 14×30 to 38×45 and its own message says "the theme_ref edge finally has teeth" — the teeth
were minted on the registry side and the consuming table never moved.
theme_ref RESOLVER in emit_music_cues.py: region page → REGION_* row for zone beds; boss_ref → the boss's own theme, falling back to
PATTERN_UNNAMED_PREGATE where the reveal gate holds; beat role → PROTAGONIST_THEME,
COMPANION_HEALERS_CHILD or HOME_AND_LOSS. Plus one tooth: no theme row may be
generation_status complete while its cue-attachment count is zero. Roughly a day, no render hours.
canon, and it was deliberately emitted before the region-theme roster existed — so this is
scheduled work showing up as an unrefreshed artifact rather than a hole in the design. The
hardcoded constant also carries a real justification in its own comment (L95-99): JOURNEY_WORLD's
row states the interchangeable-layering law the whole table is scored under, and the constant was
how that law got onto every row. The counter to the counter is that INTERCHANGEABLE_THEMES at
L112 already exists as the seam for widening it, and it has one member.
plainly, or how far apart its returns sit — so the one variable the nostalgia literature says
drives the outcome is unmanaged in both directions.
T0_Theme_Registry: plant_node 0/38, music_cue_id_ref 0/38, diegetic_surface 0/38, tempo_bpm 0/38, bar_length 0/38,
per_stem_role 0/38. recurrence_anchors is 17/38 and several of the filled cells are prose
rather than resolvable ids — PROTAGONIST_THEME's reads "canonical recurrences across all chapters
with age-stage variant per T1_Story_Spine cascade", which no counter can count. payoff_node is
18/38 and is the one scheduling field that works.
MUSIC_CRAFT_DOCTORATE.md principle 10 (L206-210) names the pipeline item itself: "PIPELINE: plant_node, the transformation budget, and motif_compare.py, which exists
today and is not wired." POSITIVE CONTROL that this corpus knows how to schedule a recurrence:
T0_Motif_Registry — the NARRATIVE motif table — carries recurrence_nodes, recurrence_count,
spacing_rule, variation_rule and resolution_node, and its single row MOT_0001 fills all five
("four appearances across four consecutive-or-near nodes at the arc head; no spacing violation
because the object is worn and present rather than re-introduced"). The narrative lane has an
exposure grammar. The music lane, which needs it more, does not.
theme players mute. Our own architecture pushes hard toward over-exposure: PASS2_LAYER_ARCHITECTURE
§7 (L430-441) makes the head cell, mode, harmony grid and pokok SHARED across all twenty-plus cues
in a region by design, which is twenty vehicles for one tune inside one chapter. Nothing counts them.
theme, the plant node, the ordered list of exposure nodes, the count, the minimum and median gap in
chapters, and the payoff node — emitted, never hand-typed, with three teeth (every cardinal theme
has a plant node before its first non-plain statement; no theme exceeds a declared per-region
exposure ceiling; every theme with a payoff_node has at least three exposures before it).
to render.
one of the 38 rows carries transformation_plan, head_cell_spec, independence_test,
closure_policy and cohort, and HOUSE_OF_VELHEIM_THEME's independence test already reads "PASS
all three: 36 anchors CH_02..CH_68". So the ARCHITECTURE of recurrence is designed; what is missing
is only its arithmetic form. And an exposure ceiling in a game is partly a player-behaviour
question no schedule can answer, since two players hear a zone bed a wildly different number of
times. That objection is real and it argues for the ceiling being per-NODE rather than per-play.
drawn from a nine-word vocabulary, so no cue in the game has an emotional target of its own — and
no instrument anywhere asks whether a render produced the feeling it was for.
T0_Chapter_Index carries emotional_register 79/79 and emotional_valence_arc 79/79, with exactly NINE distinct register values across all 79 nodes: awe,
dread, fury, grief, resolve, tenderness, unease, wonder, wry. emit_music_cues.py copies both
fields down to every cue in the chapter; measured on the emitted table, the distinct-register count
per chapter is 1 for all fourteen slice nodes, and the distinct valence-arc count per chapter is
likewise 1. A zone bed in a market, a boss phase-two layer and a stinger for a rarity award in the
same chapter carry the identical emotional specification.
harness/music_gen/floor_instruments.py (cycle law, layer census, hook presence, noise structure, melodic intelligence) plus timbre_critic.py
and nostalgia_score.py, no axis measures valence, arousal, or perceived emotion; the battery's
own docstring says what it measures and affect is not in the list. POSITIVE CONTROL that the
concept is expressible here: mood_tags exists on the theme registry (14/38) and on the SFX
registry, and music_mood_tags reads 79/79 on Chapter_Index — the vocabulary exists and the
measurement does not.
in the literature, and it MEDIATES the effect of musical features on memory. Josh's round-2 grade
is an affect complaint stated in craft language: melodies "way too simple", no "intelligence", and
now "more upbeat". A program that cannot represent the intended feeling more finely than one word
per chapter cannot aim at it, and one that cannot measure the achieved feeling cannot tell whether
it arrived.
affect_target on thecue table as a valence-arousal pair plus one register word, defaulting to the chapter's value so
nothing regresses, authored per purpose class. MEASURE: a sixth instrument wrapping a published
music-emotion-recognition model. The 2024 meta-analysis of MER models reports valence predicted at
r = 0.67 and arousal at r = 0.81 across the best model per study — which is honestly enough for
AROUSAL to be a real gate and honestly NOT enough for valence to be more than a diagnostic, and the
instrument must say so in its own output the way every other instrument here does.
needs a model licence read first).
and is doing its job there; a cue-level affect field with no composer reading it is exactly the
kind of column this repo has been burned by (music_mood_tags reading 79/79 filled and 0/79 real
is recorded in docs/DESIGN_GAP_REGISTER.md L788-791). And valence at r = 0.67 is weak enough that
a gate built on it would reject good music for reasons nobody could explain — which is an argument
for building the intent half now and the measurement half only when a purpose-class arc needs it.
register, and the two ultimate tests — appear in no rubric axis, no predicate, no plan field and no
instrument.
docs/spine/DECISIONS_PENDING_JOSH.md L5615-5625 records them: build-and-holdarcs with real peaks and valleys that never lose the listener; the upbeat register as a taste
preference across purpose classes; and the 30-50-year nostalgia test plus the orchestra-playable
test named as the two ultimate tests.
docs/proposals/music/, docs/proposals/MUSIC_COMPOSITION_DOCTRINE.md, harness/music_gen/ and build/audio/: "peaks and
valleys" 0 files, "build and hold" 0, "build-and-hold" 0, "orchestra-playable" 0, "orchestra test"
0. POSITIVE CONTROL, identical scan shape: "upbeat" returns 4 files
(HOOK_AND_TENSION_ARCHITECTURE.md, MUSIC_CRAFT_DOCTORATE.md, school_grammars/KONDO_SCHOOL.md,
build/audio/exemplars/expansion/n64_era.json) — all of them describing other music, none of them
a register the program targets or checks. The pattern can match; the concepts are absent.
will be graded against. It also names a live risk the program has already identified from the other
side: PROTOTYPE_VERDICT.md §5 warns that optimising for section count and structural yield "could
produce cues that lurch between full and empty because that is what the ruler rewards". Lurching
between full and empty IS losing the listener in the valley. Josh's sentence and the prototype's
self-critique are the same finding, and neither has an axis.
measured section below the cue's median density, does a followable melodic voice remain present —
computable from the stem manifest the render already keeps, since every stem carries its role. (b)
A BUILD-AND-HOLD axis: the longest run of cycles at or above 80 percent of peak intensity, against
the corpus distribution, so "hold" is a number rather than an adjective. (c) An UPBEAT REGISTER
declaration per purpose class — tempo band, mode class and rhythmic-density band — carried on the
cue-class template §7 of the pass-2 architecture already proposes.
were mid-flight; calling last night's ruling a gap is calling the normal latency of a working
pipeline a defect. And "never lose the listener" may be exactly the class of judgement that belongs
to Josh's ear rather than to an axis — the program's own honest register says no instrument here
measures whether music is beautiful. The counter is that (a) and (b) are cheap, computable, and
falsifiable, and an axis that turns out not to separate anything is a finding rather than a loss.
instrument and can be scored for live players — is specified in detail at doctrine level and has no
realisation in the chain that actually produces our music.
MUSIC_COMPOSITION_DOCTRINE.md §5 is thorough: the two-deliverable law(L1460-1470), sounding and written ranges for every transposing instrument (L1472-1495), MOLA
preparation adopted verbatim (L1540-1568), and a definition of done split into DoD-A which gates
the game build and DoD-B which gates concert release (L1627-1663). DoD-A's first clause is
"MusicXML score authored on the real orchestra template".
musicxml, .mxl, music21, lilypond or dorico across harness/ and build/audio/ returns two files, both rung-one tools:
author_head_cell.py and to_midi.py. The pass-2 chain — pass2_plan.py, pass2_realise.py,
pass2_flores.py — emits one MIDI per layer and a mixdown and no score of any kind. POSITIVE
CONTROL: the same term returns five files under docs/, so the vocabulary is present in the
program and absent from the pipeline. Searches for "piano reduction" and "short score" return zero
files anywhere.
colotomic, kotekan, ostinato, pokok — whose parts are compact parameter sets rather than written
lines. Nothing has ever asked whether that material reduces to a readable score, and the doctrine's
own warning (L1466-1470) is that a mockup written only to sound good will not survive reduction to
playable parts. If pass 3 composes another twenty cues in this form and the answer turns out to be
no, the orchestra test fails structurally rather than musically, and the fix is a rewrite.
harmony grid of one landed plan, emit a two-stave MusicXML (melody plus harmony), and run the
doctrine's own §5.2 written-range check on the layer manifest's instrument assignments. One cue,
one afternoon, and the answer is either "it reduces" or a named defect in the plan schema.
the doctrine explicitly warns against unreachable definitions of done. Deferring the score until a
concert is real is the doctrine's own considered position, not an oversight. The counter is
narrower than the objection: the probe is not the concert deliverable, it is the falsification test
for whether our composition FORM is orchestrable at all, and the cost of learning that late is the
whole point of compose-then-realise.
region, while the architecture's economic claim is built on all twenty-plus of them sharing a head
cell, a mode, a harmony grid, a pokok and an instrumentation plan.
PASS2_LAYER_ARCHITECTURE.md §7 (L430-441) lists what is "REUSED ACROSS EVERYCUE IN A REGION, authored once" — head cell and parent quotation, mode and harmony grid, pokok,
instrumentation plan and care block, derivation block — and pass2_flores.py --check verifies that
sharing rather than asserting it. The three prototype cues are described as "three TRANSFORMATIONS
of one theme rather than three pieces, because that is the claim under test" (L456-458).
pass2_plan.validate are intra-plan; a scan of pass2_plan.py, pass2_realise.py, pass2_flores.py and pass2_verdicts.py for cross-cue
comparison returns one hit, and it is len(set(ids)) counting distinct LAYER ids inside one plan.
POSITIVE CONTROL that the corpus knows how to measure this: harness/music_gen/sameness_baseline.py
exists, measures a cohort on eight axes and reports the distinct-value count per axis — and its
read path is build/audio/authored/*/*ORCHESTRAL_RUNG_ONE.{json,wav}, a superseded rung-one cohort.
The instrument is built, points at the wrong epoch, and is wired to nothing in pass 2.
2026-08-05: "Why is all this music the fuxking same, all just 30 seconds each the exact same track."
That complaint is what sameness_baseline.py was built to answer. The pass-2 architecture then
adopted maximal sharing as its economic model, which is the correct answer to coherence and the
most direct possible route back to the same complaint at twenty times the volume.
sameness_baseline.py at the pass-2 card directory andmake it a per-REGION report with one tooth: across the cues of a region, at least N of its eight
axes must carry more than one distinct value. It is a read-path change plus a grouping key.
twenty cues share a tune is what a leitmotif score IS, and Josh's 2026-08-05 complaint was about
thirty-second loops that were literally the same track, which the compose-then-realise chain
already makes impossible (the three prototype cues run 194.6 s, 240.0 s and 145.5 s with 37, 32 and
11 parts). Measuring sameness could therefore punish exactly the property we are trying to build.
The counter is that the tooth belongs on the axes that are NOT the theme — tempo, texture class,
instrument set, section arc — which is precisely how the eight-axis instrument is already shaped.
listener who already knows it — the buried counter-line, the second-time-through discovery.
counterline exists as one of the ten pattern kinds in the plan schema (pass2_plan.py L129, L449) and instr_melodic_intelligence.py measures whether "the orchestra
CONVERSE[s]" on a render. So both ends exist.
any minimum of simultaneously-followable melodic parts: reading the full V-list, V17 through V21
govern the HEAD CELL and its returns, V22 and V23 govern register slots, and nothing governs
polyphonic interest. POSITIVE CONTROL: MUSIC_CRAFT_DOCTORATE.md §6 names the closest measurement
and marks it unbuilt — item FIVE, per-section instrument sets across near-identical sections
(L246-251), "the highest-value measurement this pass could not build". A whole research lane exists
(craft_research/COUNTER_MELODY_AND_DIALOGUE.md, 49 KB) with no predicate consuming it.
softened by material that has more in it than one hearing reveals, and that is the only lever we
have against satiation that does not reduce exposure. It is also the difference between a track
that survives thirty years and one that survives thirty hours.
declares at least one counterline layer that is not the hook carrier and is audible in at least
one section where the hook is absent. REPORT: run instrument (e)'s counter-melody axis per cue and
publish it beside structural yield, uncoupled from the KEEP/REJECT decision until it is calibrated.
machinery.
and is in the floor battery, so the property is observed even if it is not required — and a
REQUIRED counter-line is a good way to get a decorative one. The corpus finding underneath the
whole pass is also that loved tracks repeat their material and change their treatment; inner detail
may be a treatment property that the existing colour-change discipline already licenses.
clapping, and the sample palette that realises every pass-2 cue contains seventy-six instruments
and not one human voice.
docs/spine/DECISIONS_PENDING_JOSH.md L5482-5500: "some more simple withnature and ambience and whistling or humming or harmonizing", and "strategically place the sounds
and layers and harmonies and clashes and ambience and nature and voice and chants and humming and
clapping etc. this is all the floor."
harness/music_gen/sfz_palette.py PALETTE has 76 entries; filtering the key setfor voice, choir, vocal, hum, whistl, chant or sing returns the empty list. POSITIVE CONTROL from
the same scan: claps IS present at L419 with a note citing Josh's floor by name — so the floor's
body-percussion clause was read, actioned and landed, and the voice clause beside it was not.
MUSIC_CRAFT_DOCTORATE.md §8 (L290-294) names the consequence: "The single highest-leverage
acquisition named is a CC0 voice set, whose absence alone blocks four nodes."
grammar that reads sacred without quoting liturgy, one rule for every sacred tradition. All of it
is unrealisable at the sampler. Voice is also the most nostalgia-dense layer in the medium's
history, and it is a floor element rather than an enhancement.
licensed SATB vocalise / solo-hum set, probe-verified through pass2_sfz_probe.py exactly as the
53 pass-2 additions were, with the licence class recorded. Everything downstream already exists.
it is a known blocker rather than a missed one, and Josh's final-buy ruling of 2026-08-07 ended the
acquisition treadmill — re-opening it needs care. The counter is that the ruling ended the
EXEMPLAR-corpus treadmill, not the instrument stack; a voice set is production equipment, and the
books-never-gate law's logic points the same way — build now with what exists, but a floor clause
that cannot be realised at all is a different class from one that could be better.
transitions, stingers, grid contracts, a per-cue deliverable and a transition acceptance rubric —
and not one of its fields exists in any registry, harness or build artifact.
MUSIC_COMPOSITION_DOCTRINE.md §6.1-6.9 (L1665-1886) is complete and good:the vocabulary named exactly, the Tier-H/Tier-B split, a twelve-value state set with silence as a
first-class member (L1714-1718), mandatory hysteresis with a declared maximum de-escalation
latency, the grid contract per sub-region, head-motif stingers, the Quartz layer budget pinned at
four for the bulk lane and six for the hero lane, and a transition rubric that tests every ordered
state pair at three offsets within the bar.
harness/, registries/, build/audio/ and _source/ for adaptive_role, state_id, transition_class, MusicDirector, explore_calm and
combat_heavy returns hits in exactly three places, all of them documents: the doctrine itself,
docs/DESIGN_GAP_REGISTER.md, and the 2026-07-29 gap-audit lane file. No code, no registry, no
emitted table. THIS IS ALREADY BOARDED as GAP-184 (docs/DESIGN_GAP_REGISTER.md L2271, status
OPEN, blocking rank 8): "Music has no cue, stem or state-transition data home — music_cue_id_ref is
an FK to no table."
makes the load-bearing claim: the melody must never live in a layer an intensity parameter can
mute, and thematic escalation must be interchangeable rather than additive. If pass 3 composes
twenty more cues without a state model, the melody-survival property is untested at exactly the
moment the volume arrives.
table gains state_id and motif_carrier_stem, and one transition table is minted with
source-state, dest-state, sync boundary and transition class. The rest of §6 can wait for the
engine.
Reported here as an ALREADY-BOARDED item, not a discovery.
fixed segments of three to five minutes that hand off, which is close to what pass 2 already
produces — and §6.6 says the engine work is a MusicDirector component we own and do not have. Data
minted years before its consumer is the anti-orphan law's own failure mode. The counter is that
motif_carrier_stem is not engine work: it is one field naming which of the stems already on disk
holds the tune, and without it the mute test of §1.11 cannot be run on anything we have made.
where the game goes quiet or who owns that decision.
MUSIC_COMPOSITION_DOCTRINE.md L1715-1718: "SILENCE IS A FIRST-CLASS STATE,not an absence", with the Breath of the Wild precedent and the note that the L1.5 ambient lane must
be able to select silence and mean it. MASTERPIECE_PROGRAM.md §11.8 (L419-427) names "the
SILENCE-FOR-AMBIENCE budget (the moments the score deliberately yields)" inside "the game-audio
half, which no rung has touched".
bed; zero rows across all 216 carry any silence marker in cue_name or trigger_context, and
TRACK_TYPES (emit_music_cues.py L92) has five members — zone_bed, tension_layer, combat_layer,
stinger, motif_statement — with no silence or score-yield member. POSITIVE CONTROL: composed rest
WITHIN a cue is measured and gated (the 2.68 to 17.43 band is the axis every round-1 rejection
failed), so the corpus can express rest at the cue scale and simply does not express it at the
world scale.
and silence is what makes a theme's arrival land. It is also the cheapest possible content
decision — the absence of a cue costs nothing to produce and something real to decide.
track_type of score_yield plus one derived report: perchapter, the share of sites carrying a bed, with a declared band. The decision then exists as data
and can be argued with.
it from being lost when that rung is scoped.
director makes from state, not an authoring decision made per site — so the right home is the state
machine of G9, and minting a column now would place it in the wrong table. That objection is strong
enough that the recommendation is a REPORT rather than a column.
the player can use — has one empty registry column and no design surface, in a game whose entire
premise is a world tour of musical cultures.
T0_Theme_Registry carries a diegetic_surface column, filled 0/38. MASTERPIECE_PROGRAM.md §11.8 names "the diegetic/non-diegetic seam (a musician IN the scene
versus the score)" as untouched. craft_research/ORGANOLOGY_SLICE_CULTURES.md is a 135 KB roster of
what each culture actually plays, with ensemble practice — the substrate for in-world performance
is the single largest research artifact in the program.
NPC" 0, "play an instrument" 0. T0_Minigame_Registry has two rows (caci, senet) and neither is
musical. POSITIVE CONTROL: "diegetic" itself returns six files, all of them craft-research lanes
discussing OTHER games' use of it — the vocabulary is present in our reading and absent from our
design.
mechanism — the player LEARNS a tune, PERFORMS it, and later meets it transformed — combines
attachment, repeated exposure, and player agency in one object, and the research on agency in
interactive media ties it to identity and sense of control. It is also the one place where a world
tour of thirteen musical cultures becomes something the player DOES rather than something playing
behind them.
standing-protocol bar (a performance minigame per region; a listen-and-collect surface with no
performance skill; diegetic ensembles as pure staging with no player verb), each grounded in the
organology roster, with a recommendation and the strongest objection, boarded for Josh.
lane's authority and below Josh's threshold for a bare question.
and quest verbs are the ones that gate the Josh gate; adding a music verb now is the classic
feature that eats a slice. And an empty column is not evidence of a missing design — it may be
evidence of a column minted ahead of its decision, which is the anti-orphan failure mode.
scores, so a three-minute through-composed arc and a ninety-second scripted beat are composed
identically.
MASTERPIECE_PROGRAM.md §11.7 (L409-417) specifies the fix in full — clustergame contexts into scene archetypes, derive per archetype which formula the exemplars actually use,
and let a scene declare its archetype so the formula follows — and calls it "THE TABLE THE GAME
QUERIES". §11.10 (L437-444) specifies the parametric form per purpose class.
scene_archetype, "scene archetype" or "first-arrival" across harness/, build/audio/ and the music proposals returns exactly one file: MASTERPIECE_PROGRAM.md
itself. The map is proposed and never built. Separately, T0_Scene_Spec_Registry has 27 rows with a
music_cue_id_ref column and scene_beat_structure, and the cue table's join is to sites and
beats rather than to scene rows, so the two never meet.
PURPOSE_CLASSES currently bands only part count. Every other property of a cue —its section arc, its tension curve, its drop budget, its ending type — is authored per cue from
scratch, which is both the expensive path and the inconsistent one. It is also the bridge §11.7
says already has a consumer on day one.
PASS2_LAYER_ARCHITECTURE.md §7(L462-465) already names as the next multiplier: a default section arc, tension curve and drop
budget per purpose class, taken from HOOK_AND_TENSION_ARCHITECTURE.md §11.3. A cue then costs a
template plus its deviations, and the template is where §11.7's archetype mapping lands.
this entry only records that it is unbuilt and that §11.7 is its other half.
rungs deliberately, and templating before three cues have been graded by a human would freeze the
wrong defaults into twenty. That is a good argument and it is why this sits at priority 3.
emitted slice averages 15.4 cue rows per node with one node reaching twenty, and the architecture's
amortisation claim has been tested at n = 3.
through CH_06 and CH_11 through CH_13 at 16, CH_07 and CH_09 at 15, CH_08 at 14, CH_01 and CH_10 at
13, CH_PROLOGUE at 12. One node of fourteen meets the target. PASS2_LAYER_ARCHITECTURE.md §7
states the economics with real numbers (136 shared lines against 120-160 per cue) and
PROTOTYPE_VERDICT.md §5 says plainly that the claim "is untested at anything past three, and
three is a small n for a claim about twenty".
docs/proposals/music/ or build/audio/; the closest is MASTERPIECE_PROGRAM.md §7 SEQUENCING,
which sequences against the weekly model limit rather than against render time. POSITIVE CONTROL:
the prototype DOES carry per-cue numbers (194.6 s, 240.0 s, 145.5 s at 37, 32 and 11 parts), so the
inputs to a cost model exist and the model does not.
region is the honest next test, and it is also the first point at which G2's exposure ceiling and
G6's distinctiveness tooth become load-bearing rather than theoretical.
PROTOTYPE_VERDICT.md §5already lists as next-rung item 5, and emit the cost model from it rather than estimating it.
room items the verdict already ordered ahead of it.
from canon beats and zones, not a composition target; the twenty-plus figure is per region and
cultural node and the slice's nodes are not all full regions. Reading a canon-derived inventory as
a shortfall against a composition target may simply be comparing two different objects — which is
itself worth one line of reconciliation somewhere.
row, cue row or plan field is keyed to age.
T0_Theme_Registry :: PROTAGONIST_THEME carries carrier_voice = "one solo carrier, re-voiced per age stage" and a transformation_plan describing the single-theme arc from
the Prologue statement to the Ch-77 statement, budgeted at eight of the six-to-ten allowed
operations. T0_Chapter_Index carries age_stage filled 79/79 and protagonist_age /
protagonist_age_end alongside it.
age_stage, "age stage" or "age-stage" across the music proposals,all registries and the cue table returns the theme row's own prose, one craft-research mention, one
composer-brief mention, and the Chapter_Index / Character_Index / Hard_Lines columns — and zero
music rows keyed to it. The cue table has no age column and no age-variant rows. POSITIVE CONTROL:
the identical scan finds the character pipeline's seven-age ladder fully expressed in data, so the
age axis is a first-class concept in this repo everywhere except the score.
the player has aged with it. Ours is a 79-node arc with a seven-rung age ladder already authored on
the art side, which is a stronger version of the device than the reference case — and it currently
exists as one sentence in one cell.
age_stage column on the cue table's motif_statement rows, resolved from the chapter's own age_stage, so the protagonist's plain statements are countable
per rung and the transformation budget can be checked against them. It falls out of G1's resolver.
and a per-age column with no composer consuming it is another music_mood_tags. The arc also runs
past the slice, so nothing before Ch 13 exercises it.
Named here with the reason, because a sweep that reports only positives has no anti-inflation control.
| candidate | why it is not a new gap |
|---|---|
| MIX, SPACE AND MASTERING | ALREADY BOARDED as GAP-183 (docs/DESIGN_GAP_REGISTER.md L2260, status OPEN, no blocking rank): no loudness or mix doctrine and no audio performance budget exist anywhere, verified with a corpus-wide zero for LUFS, true peak, dialogue anchor and ducking policy. PASS2_LAYER_ARCHITECTURE.md §8 names the same hole from the render side ("NO REVERB, NO SPACE, NO MIX"). The only new information this sweep adds is that GAP-183 carries NO blocking rank, which is worth correcting when it is next triaged. |
| EXPRESSION CONTROL (dynamics within a note) | Already named and SEQUENCED: PROTOTYPE_VERDICT.md §5 next-rung item 3, with the fix identified (CC curves per part, which sfizz supports and the plan schema does not yet express). Owned, not missing. |
| A ROOM (convolution reverb) | Same source, next-rung item 4, with the licensing question on impulse responses already named. Owned. |
| LAYER COUNTS, STRATA, THE 3-5-CYCLE LAW, HOOK RECURRENCE, NOISE-VERSUS-STRUCTURE | Built, five instruments, wired into one battery, each with mutation controls. The honest negatives are published beside them. |
| THE CARE LINE | Realised as architecture rather than as prose: of_the_place on every layer, V24 and V25 refusing of-the-place threat material, and the pitch-class disjointness verified on the COMPILED notes rather than on labels. This is the strongest-executed part of the program. |
| THE WORDLESS-VOCAL DOCTRINE | Doctrine §3 is complete and good. What is missing is the SAMPLES, which is G8 — a supply gap, not a design gap. |
| GENRE SPAN ANCIENT TO TECHNO | craft_research/GENRE_SPAN_ANCIENT_TO_TECHNO.md, 66 KB, landed 2026-08-07 in direct answer to Josh's round-2 sentence. |
| ANTI-PLAGIARISM | NOSTALGIA_RUBRIC.md §5 carries the tooth, with its fourteen declared gaps named. |
| PASS-2 DETERMINISM | Already declared as a gap by the artifact itself: PROTOTYPE_VERDICT.md §7 states the claim is inherited from orchestrate.py and not re-measured, and names that as a gap. |
| THE CUE TABLE'S STALENESS | Real (--check returns DRIFT, 216 on disk against 222 derived) but it is a refresh, not a gap — and folded into G1, whose fix requires the re-emit anyway. |
| # | gap | verdict | priority |
|---|---|---|---|
| G1 | Theme-to-entity attachment is a hardcoded string; 36 of 38 themes are heard nowhere | BUILD-NOW | 1 |
| G4 | The round-2 addendum's three floor elements have no axis, field or predicate | BUILD-NOW | 1 |
| G8 | The palette has 76 instruments and no voice, against a floor that names singing four times | BUILD-NOW (acquire) | 1 |
| G2 | No plant node, exposure count or spacing rule on any theme | BUILD-NOW | 1 |
| G3 | Emotional intent is one word per chapter; achieved affect is unmeasured | BUILD-NOW (intent) | 2 |
| G6 | Nothing checks that two cues in a region differ, while sharing is the scaling model | BUILD-NOW | 2 |
| G5 | The orchestra test has a doctrine and no pipeline; no score, no reduction probe | BUILD-NOW (probe) | 2 |
| G9 | Adaptive architecture fully designed, zero data — ALREADY BOARDED as GAP-184 | BOARD (narrow scope) | 2 |
| G11 | Diegetic music and player agency have an empty column and no design surface | BOARD (brief) | 2 |
| G7 | Nothing is aimed at the fiftieth hearing; counter-line has no predicate | BOARD | 3 |
| G12 | Cue is never checked against its scene; the archetype-to-formula map is unbuilt | BOARD | 3 |
| G10 | Silence is a declared state nobody decides | BOARD | 3 |
| G13 | 20+ per region unmet in the slice; the amortisation claim is untested past three | BOARD | 3 |
| G14 | The theme ages in one prose cell and in no data | BOARD | 3 |
BUILD THE EXPOSURE LEDGER, AND MAKE ATTACHMENT A GATE BEFORE COMPOSING ANOTHER CUE.
Every cue pass 3 renders is an answer to the question "what should this sound like". Not one artifact
in the program answers "who is this for, and how often will they hear it" — and the empirical
literature on why music is still loved after thirty years puts association, exposure and affect ahead
of every melodic property we currently measure. We have thirty-eight authored themes with head cells,
transformation plans, independence tests and payoff nodes, and thirty-six of them are heard by nobody
because one emitter writes the same string on every row.
The ledger is one emitted artifact: per theme, its entity, its plant node, its ordered exposure
nodes, its count, its median spacing, its payoff node, and its per-region ceiling. It costs no render
hours, it is arithmetic on a table we already emit, and it makes the 30-50-year test a schedule
rather than a hope — which is the only form in which anybody can be wrong about it and find out.
Two teeth make it real rather than decorative: no theme row reaches complete while its exposure count
is zero, and no cue class may be composed for a region whose region theme is unattached. Both fail
closed. Both are checkable today.
Everything else in this document is downstream of that. G2 is the ledger's arithmetic, G3 gives each
exposure a purpose, G14 gives the protagonist's exposures an axis, and G7 and G10 are what keep a
managed exposure count from becoming a satiated one. Pass 3 will produce better-sounding music than
pass 2 whether or not this lands. It will not produce music anybody remembers in 2056 unless a person
and a place are attached to it first.
What this sweep DID read: MUSIC_CRAFT_DOCTORATE.md in full; MUSIC_COMPOSITION_DOCTRINE.md §5,
§6, Appendix S and its full heading map; PASS2_LAYER_ARCHITECTURE.md §§1-9;
PROTOTYPE_VERDICT.md §§2-7; MASTERPIECE_PROGRAM.md §5 and §§11.7-11.10; NOSTALGIA_RUBRIC.md §7
and its heading map; the heading maps of LEITMOTIF_ARCHITECTURE.md and COMPOSER_BRIEF_PACK.md;
the live T0_Theme_Registry (all 38 rows, all 45 columns, fill rates computed); the emitted
music_cue_table.csv (all 216 rows, distributions computed); emit_music_cues.py structure and
constants; sfz_palette.py PALETTE; the docstrings and headline claims of all five instruments plus
timbre_critic.py and sameness_baseline.py; pass2_plan.py's full predicate list; the 2026-07-29
audio gap-audit lane file and the GAP-180 through GAP-187 register entries with their machine status.
What this sweep DID NOT read, and therefore cannot speak for:
headline claims through the doctorate's synthesis and grepped them for specific terms. A gap
living inside a lane's body text and absent from the doctorate would not have been caught here.
PATTERN_FINDINGS_V3.md in full (706 lines) — read as headings plus the sections the doctoratecites. The statistical findings are taken as reported; I did not re-derive any of them.
MUSIC_COMPOSITION_DOCTRINE.md §§1-4 and §7 in full — the leitmotif system, hummabilitychecklist, wordless-vocal register, thirteen per-culture register briefs and the composer-in-loop
workflow were read as headings plus targeted sections. §4's per-culture register cards are a
substantial body of work I sampled rather than swept.
MEASURED_LOOP_PROOF.md, RECOMPOSE_RUNG_TWO_FINDINGS.md, ACE_STEP_BED_WORKLIST.md, school_grammars/, and theme_architecture_rows.json — not read.
C:/dev/Humanity was not opened; claims about what exists in the build are takenfrom the register entries that cite it.
does not name a product, because the licence read has not been done.