fix: SF stages experiment-package predictor.yaml + pins ALPHA_ENGINE_EXPERIMENT_ID (config#1066)#427
Merged
Merged
Conversation
…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>
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. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 apredictor.yamlWITHmodel_specspopulated.Closes the root cause behind config#1051 / alpha-engine-predictor#265 (the 6/13 inert ModelZooRotation: empty
MODEL_SPECS→select_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.yamlFIRST, then fall back to the legacypredictor/predictor.yaml, thenconfig/predictor.yaml. On the always-on boxALPHA_ENGINE_EXPERIMENT_IDis unset → defaults toreference, and the experiment-package yaml exists, so config.py loads it and ignores the file the SFcpwrites (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.pyedit)cpsource →experiments/reference/predictor/predictor.yaml(the path config.py actually resolves on the box), so the boxconfig/predictor.yamland the spot's S3-staged copy of it equal config.py's resolution.export ALPHA_ENGINE_EXPERIMENT_ID=referencebeforespot_train.shso the child spot bootstrap stages the yaml to the experiment-package path config.py searches first.Both
PredictorTraining(--full-only) andModelZooRotation(--model-zoo-weekly) get the same treatment. Regenerated the frozentests/fixtures/sf_prekeystone_spot_commands.jsonPredictorTrainingbaseline (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.shstages to BOTH the experiment-package path ANDconfig/predictor.yaml, pins the env in every spot heredoc.Tests
bash -nclean; 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