Files
product-vamp/docs/composer/active_path_audit.md
T
khodowany ef62af892b Cleanup
2026-10-04 22:29:06 -05:00

3.4 KiB
Raw Blame History

Active path audit

Starting revision: 0e68f53 (Cleanup). The earlier implementation report is preserved in baseline_0e68f53.md; its test and timing results do not describe this change.

Before: production.generate_role → composer.compose → construction.Builder.propose → rhythm.Rhythms.realize + routes.Routes.realize → scoring.evaluate → one-phrase lookahead → placement → validation → notation/export.

After: production.generate_role → composer.compose → construction.Builder → operators.Operators + selection.Selector → bounded action repair → whole-solo placement → validation → notation/export.

Finding Verified starting behavior Change / remaining limitation
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.

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.

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.

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.