# Active selector audit Starting revision: `ef62af892bce168e2e9846dc6035b414f55d8959`. Previous results are preserved in [baseline_ef62af8.md](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.