Files
product-vamp/docs/composer/active_path_audit.md
T
khodowany 654299decd Cleanup
2026-10-05 08:51:03 -05:00

65 lines
4.8 KiB
Markdown

# 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.