4.8 KiB
Active selector audit
Starting revision: ef62af892bce168e2e9846dc6035b414f55d8959.
Previous results are preserved in baseline_ef62af8.md.
The current candidate baseline is under build/solo_reference_comparison/structured/baseline;
previously published assets were not replaced.
Before: production.generate_role → composer.compose → Builder.compose → greedy action cost per quarter → occasional dead-end backtrack → reporting phrases → placement → validation/export.
After: production.generate_role → composer.compose → Builder.compose → common-time multi-history frontiers → complete sounded-event evaluation → whole-solo winner → placement → validation/export.
| Finding | Reproduced evidence | Change |
|---|---|---|
| Immediate commitment | DFS continued the first cheapest action; alternative histories were visited only after failure | Multiple histories survive to equal-time checkpoints; whole completed candidates compete |
| Segmentation-dependent objective | Prefix total summed individually normalized action rates | One canonical event-stream evaluation; notation ties merge and rest partitions disappear |
| Constructor-family bonuses | Acoustic kind/arpeggio, kind/answer; electric kind/scalar, kind/enclosure |
Removed from data and rejected by fitted-feature schema |
| False arpeggio label | Constant scale-degree stride ±2 | Renamed scale_thirds; actual arpeggios walk members of the written chord |
| Premature home identity | First four eligible recent notes | Home comes from the completed opening source window and survives separately from the last-eight-note context |
| Prefix fitting | Early-update perceptron optimized first mismatch | Replaced by shared bounded integer constraints from complete outputs |
| Coverage proof lost obligations | Constrained derivation merged histories solely by time | Stateful diagnostic retains pending contracts and validates the complete resulting stream |
| Repeated expensive work | One-bar cProfile spent most cumulative time in action enumeration/validation | Cached note/route calculations; indexed sequence licensing; deferred full validation with replacement of rejected proposals |
Budget: 16 histories, 24 valid successors per history, eight completed exports. Retrieval ranks within equal-endpoint buckets, then round-robins endpoints. It does not compare variable-duration actions by their individual cost rates. Frontier scores cover the same heard span. A selected action may extend beyond a checkpoint; its actual unsplit notes, route and obligations remain stored. Computational quarter-note checkpoints and four-source-measure home selection are not forced cadences. Final phrase reporting does not insert notes or endings.
Each destructive frontier records proposed/distinct/retained counts. A read-only development observer can compare those cuts with a training example; its return value cannot change selection. Absence from the final eight is not proof of unrepresentability. The ordinary build never installs that observer or imports a training/reference reader.
This is bounded phrase/chorus comparison, not globally optimal search. Early cuts can still lose a desirable complete phrase. Opening diversity is retained in addition to recent rhythmic diversity; it does not guarantee eight aesthetically different or convincing tunes.
Reproduction failure observed in the current candidate
The optional structured/exact-opening-pruning.json probe observes the ordinary
first successor cutoff without changing decisions. All Me acoustic has one exact
compatible action among 9,853 and retains none; electric has two and retains none.
Autumn acoustic has two among 8,492 and retains none; electric has nine and retains
none. Every case retains 24 successors. All four therefore fail at retrieval,
before complete-output selection. The earlier opening-pruning.json compared
clipped audible prefixes and counted a shortened hold as surviving. That weaker
diagnostic was corrected: committed attacks must match their complete durations.
Separate stateful constrained derivation reaches all four complete targets with
no diagnostic history pruning; that establishes construction coverage only.
Full generation also confirms a ranking failure: all four complete targets score
worse than their selected outputs under the default evaluator. Exact totals and
contribution differences are in evaluation-diagnosis-all.json. Eight surviving
complete alternatives are not proof that the necessary alternatives survived.
The first full regression run also exposed optional-color lookahead parsing an
explicit N.C. span as a chord. eligible_color now rejects missing/no-collection
harmonic spans before parsing. The current production sources' affected contexts
are recorded separately so a build started before that repair is not silently
described as a build from identical code.