# Reproduction commands Run from the repository root. Prefix module invocations with: ``` build/build_common/python/bin/python3 build/build_tools/python_runner.py build/build_common/modulus ``` Full staged production build actually run: ``` -m generator --data-dir data --output-dir build/composer_repair/405066e/candidate --static-assets-dir package/assets --check --jobs 2 --composition-jobs 2 --composition-cache build/composer_repair/405066e/cache --engraving-cache build/build_common/engraving_cache --export-solo-xml --trace-level full --profile-output build/composer_repair/405066e/candidate-profile.json --progress ``` Post-generation comparison actually run, with explicit role and alignment conventions: ``` -m audition.solo_compare --generated-dir build/composer_repair/405066e/candidate/solo_xml --reference all_of_me/acoustic=build/all-of-me-solo-1.xml --reference all_of_me/electric=build/all-of-me-solo-2.xml --reference autumn_leaves/acoustic=build/autumn-leaves-solo-1.xml --reference autumn_leaves/electric=build/autumn-leaves-solo-2.xml --form-start autumn_leaves/acoustic=2 --form-start autumn_leaves/electric=2 --form-start all_of_me/acoustic=1 --form-start all_of_me/electric=1 --reference-pitch guitar-written --assets build/composer_repair/405066e/candidate --output build/composer_repair/405066e/references ``` The standalone production role interface remains available (example, not part of the benchmark measurements): ``` -m generator.compose --song data/songs/autumn_leaves.xml --role electric_solo --data-dir data --cache-dir build/build_common/composition_cache --output build/electric-role.json --solo-xml build/electric-role.xml ``` Both CLI and CMake support independent process workers. The CMake setting is `VAMP_COMPOSITION_JOBS`; default 2, accepted range 1–16. More workers can increase memory/CPU contention. Worker completion order is not a musical input. All baseline/reference/audition paths are downstream evidence only. Deleting them is not a cache invalidation or musical configuration change. To test cold generation, use an empty **composition cache** directory, not a previous output score as an input. Isolated single-role measurements actually run sequentially after regression and audition work completed: ``` -m audition.benchmark --source tests/evaluation_sources/after-youve-gone.xml --data-dir data --role electric_solo --cache build/composer_repair/405066e/benchmark-cache --output build/composer_repair/405066e/profile-cold --profile -m audition.benchmark --source tests/evaluation_sources/after-youve-gone.xml --data-dir data --role electric_solo --cache build/composer_repair/405066e/benchmark-cache --output build/composer_repair/405066e/profile-warm -m audition.benchmark --source tests/evaluation_sources/after-youve-gone.xml --data-dir data --role electric_solo --cache build/composer_repair/405066e/benchmark-unprofiled-cache --output build/composer_repair/405066e/benchmark-cold ``` The first run measures profiler overhead as well as generation. The third uses a separate initially empty cache to measure unprofiled cold generation. All three canonical musical hashes are checked in `isolated-role-proof.json`. Isolated full warm-cache build actually run: ``` -m generator --data-dir data --output-dir build/composer_repair/405066e/warm --static-assets-dir package/assets --check --jobs 2 --composition-jobs 2 --composition-cache build/composer_repair/405066e/cache --engraving-cache build/build_common/engraving_cache --export-solo-xml --trace-level full --profile-output build/composer_repair/405066e/warm-profile.json --progress ```