Cleanup
This commit is contained in:
@@ -1,25 +1,64 @@
|
||||
# Active path audit
|
||||
# Active selector audit
|
||||
|
||||
Starting revision: `0e68f53` (`Cleanup`). The earlier implementation report is preserved in [baseline_0e68f53.md](baseline_0e68f53.md); its test and timing results do not describe this change.
|
||||
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 → construction.Builder.propose → rhythm.Rhythms.realize + routes.Routes.realize → scoring.evaluate → one-phrase lookahead → placement → validation → notation/export`.
|
||||
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 → construction.Builder → operators.Operators + selection.Selector → bounded action repair → whole-solo placement → validation → notation/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 | Verified starting behavior | Change / remaining limitation |
|
||||
| Finding | Reproduced evidence | Change |
|
||||
|---|---|---|
|
||||
| Alternatives chosen by hashes before evaluation | `propose` hash-selected timing, destination, treatment, register and first pitch; 32 proposals per batch | Enumerate shared actions before contextual ranking. Stable content ordering breaks score ties. |
|
||||
| Complete target cannot pass allocation | Autumn acoustic lead-in was outside export; electric tail clipped before returning vocal | Source pickup measure allocated before composition. Full electric tail allowed with authorized vocal overlap; vocal unchanged. |
|
||||
| Scorer overwritten / density silently omitted | Not reproduced: only four named phrase terms remained | One rational action evaluator; no hidden density setting. |
|
||||
| Every unit closes | Not reproduced: old constructor had open alternatives, but handoff forced a 2–3 beat hold | Individual actions need no chord-tone stop; handoff can be short or silent. |
|
||||
| Answer unreachable | Not reproduced: old chooser requested answers | New answer transforms the actual heard group as a complete candidate. |
|
||||
| Expressions are post-processing only | Not reproduced: old proposals planned them jointly | Keep joint treatments; carry pending exact-target obligations across actions. |
|
||||
| Missing expressive coverage | Reproduced against actual enumerated operators | General delayed approaches, reattacked anticipations, anticipated colors and separated enclosures. |
|
||||
| Color octaves disappear | Midpoint rounding skipped alternating F-sharp octaves | Enumerate explicit legal octaves. |
|
||||
| Repeated catalog parsing | Parent parsed catalogs that independent workers parsed again | Parent parse removed; content-addressed immutable JSON catalogs shared by workers. |
|
||||
| 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 |
|
||||
|
||||
`Operators.at` consumes source harmony, physical domain and versioned data. It records proposed, rejected-by-rule and valid counts. `Builder.candidates` retains 24 representatives by kind/duration; pending obligations filter candidates before this cutoff. `Builder.compose` ranks complete actions and allows 16 deterministic backtracks. There is no wall-clock winner, reference-reader import or old-constructor fallback.
|
||||
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.
|
||||
|
||||
This is a local policy, not a globally optimized complete-phrase model. An all-onset frontier experiment was abandoned because of excessive work. Phrase objects group selected actions for validation/reporting; that grouping does not mean whole-phrase alternatives competed. This limitation matters to exact selection.
|
||||
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.
|
||||
|
||||
The development-only `audition.fit_selection` constrains the same enumerator to an explicit target to diagnose representability. Its fitter rolls in with ordinary ranking and updates shared coefficients at the first mismatch. A valid derivation is not proof that production selects it. The release comparison checks the exported unrestricted winner separately.
|
||||
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.
|
||||
|
||||
Reference in New Issue
Block a user