Skip to content

fix: SF stages experiment-package predictor.yaml + pins ALPHA_ENGINE_EXPERIMENT_ID (config#1066)#427

Merged
cipher813 merged 2 commits into
mainfrom
fix/model-zoo-experiment-path-cp
Jun 14, 2026
Merged

fix: SF stages experiment-package predictor.yaml + pins ALPHA_ENGINE_EXPERIMENT_ID (config#1066)#427
cipher813 merged 2 commits into
mainfrom
fix/model-zoo-experiment-path-cp

Conversation

@cipher813

Copy link
Copy Markdown
Owner

What

Aligns the Saturday SF model-zoo + predictor-training cp/staging with alpha-engine-predictor/config.py's experiment-first search path so the rotation child spot deterministically loads a predictor.yaml WITH model_specs populated.

Closes the root cause behind config#1051 / alpha-engine-predictor#265 (the 6/13 inert ModelZooRotation: empty MODEL_SPECSselect_rotation_specs() returned [] → 0 challengers trained).

Diagnosed mismatch

The 2026-06-12 experiment-package adoption made config.py (L24-32) search ~/alpha-engine-config/experiments/$ALPHA_ENGINE_EXPERIMENT_ID/predictor/predictor.yaml FIRST, then fall back to the legacy predictor/predictor.yaml, then config/predictor.yaml. On the always-on box ALPHA_ENGINE_EXPERIMENT_ID is unset → defaults to reference, and the experiment-package yaml exists, so config.py loads it and ignores the file the SF cp writes (config/predictor.yaml, the last/lowest search path). Verified live on the box: config.py._CONFIG_PATH = .../experiments/reference/predictor/predictor.yaml, _EXPERIMENT_ID = reference. The legacy + experiment yamls are identical today only by coincidence; the cp writes a file config.py never reads on the box, and the child spot inherits the same ambiguity.

Fix (deterministic, no config.py edit)

  • cp source → experiments/reference/predictor/predictor.yaml (the path config.py actually resolves on the box), so the box config/predictor.yaml and the spot's S3-staged copy of it equal config.py's resolution.
  • export ALPHA_ENGINE_EXPERIMENT_ID=reference before spot_train.sh so the child spot bootstrap stages the yaml to the experiment-package path config.py searches first.

Both PredictorTraining (--full-only) and ModelZooRotation (--model-zoo-weekly) get the same treatment. Regenerated the frozen tests/fixtures/sf_prekeystone_spot_commands.json PredictorTraining baseline (friday-shell-run byte-identicality guard) for the deliberate command change.

Deploy

This data SF change AUTO-DEPLOYS on merge to main via deploy-infrastructure.yml.

Companion PR

alpha-engine-predictor#PREDPR — spot_train.sh stages to BOTH the experiment-package path AND config/predictor.yaml, pins the env in every spot heredoc.

Tests

bash -n clean; JSON valid; 653 SF/deploy/pin tests pass (incl. test_sf_friday_shell_run_wiring, test_sf_research_predictor_parallel_wiring).

Refs config#1066, config#1051. Re-exam 2026-06-20 — next Saturday rotation must register ≥1 spec-* challenger.

🤖 Generated with Claude Code

…EXPERIMENT_ID (config#1066)

The PredictorTraining + ModelZooRotation states cp the LEGACY
alpha-engine-config/predictor/predictor.yaml into the predictor repo's
config/predictor.yaml, but the 2026-06-12 experiment-package adoption made
config.py search experiments/$ALPHA_ENGINE_EXPERIMENT_ID/predictor/predictor.yaml
FIRST. On the always-on box ALPHA_ENGINE_EXPERIMENT_ID is unset -> defaults to
"reference", the experiment-package yaml EXISTS, so config.py loads it and IGNORES
the cp target. The two yamls are identical today only by coincidence; the cp
writes a file config.py never reads on the box, and the rotation child spot
inherits the same ambiguity (the 6/13 inert rotation: MODEL_SPECS empty -> 0
challengers, root cause behind config#1051 / predictor#265).

Fix (deterministic, no config.py edit):
- cp source -> experiments/reference/predictor/predictor.yaml (the path config.py
  actually resolves on the box), so the box's config/predictor.yaml (and the
  spot's S3-staged copy of it) equals config.py's resolution.
- export ALPHA_ENGINE_EXPERIMENT_ID=reference before spot_train.sh so the child
  spot's bootstrap stages the yaml to the experiment-package path config.py
  searches first (companion PR alpha-engine-predictor#NN).

Both states (PredictorTraining --full-only, ModelZooRotation --model-zoo-weekly)
get the same treatment. Regenerated the frozen
tests/fixtures/sf_prekeystone_spot_commands.json PredictorTraining baseline (the
friday-shell-run byte-identicality guard) for the deliberate command change.

This data SF merge AUTO-DEPLOYS on push to main (deploy-infrastructure.yml).

Companion: alpha-engine-predictor spot_train.sh stages to both the experiment
package path AND config/predictor.yaml + pins the env in every spot heredoc.

Refs config#1066, config#1051. Re-exam 2026-06-20 (next Saturday rotation must
register >=1 spec-* challenger).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@cipher813

Copy link
Copy Markdown
Owner Author

Companion predictor PR: cipher813/alpha-engine-predictor#267 (spot_train.sh staging + env pin). Merge order does not matter — both must land for the next Saturday rotation; the data SF auto-deploys on merge.

@cipher813 cipher813 merged commit 4696f4f into main Jun 14, 2026
1 check passed
@cipher813 cipher813 deleted the fix/model-zoo-experiment-path-cp branch June 14, 2026 22:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant