You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(training): wire CorpusLoader + SaturationSynonyms into GNN training pipeline (#207)
## Summary
Post-wave3 follow-up to #198. Connects the saturation-campaign Julia
helpers (CorpusLoader, SaturationSynonyms — landed in #198) into the
existing GNN training pipeline. Per the sketch at
\`/tmp/echidna-saturation/POST-WAVE3-WIRING-SKETCH.md\`.
- \`src/julia/run_training.jl\` — new \`load_corpus_examples()\` driver,
\`--corpus-json\` + \`--synonyms-dir\` CLI flags, \`main()\` wiring
- \`src/julia/training/train.jl\` — 42-dim discipline feature concat in
\`compute_features\` (gated on \`length(discipline_tags) > 0\` for
back-compat)
- \`Justfile\` — new \`train-from-corpus <prover>\` recipe (default
\`lean\`)
- \`tests/julia_corpus_loader_smoke.jl\` — smoke test verifying
\`discipline:<tag>\` strings survive \`corpus_to_training_examples\`
**Hunk 1 omitted**: the sketch's \`TrainingExample.discipline_tags\` +
back-compat constructor were already landed in #198, so this PR's diff
doesn't include them.
## Test plan
- [x] Hunks are additive only (sketch §4 rollback)
- [x] Back-compat 4-arg \`TrainingExample\` constructor (on main since
#198) preserves pre-campaign call-sites
- [x] \`--corpus-json\` defaults empty — absence is no-op
- [x] \`discipline_feature_vector\` concat gated on non-empty tags
- [ ] CI \`julia\` smoke runs include the new test (auto-discovery from
\`tests/\`)
- [ ] \`just train-from-corpus lean\` runs end-to-end against a
synthetic Corpus JSON (post-merge owner verification)
## Rollback
Revert the merge commit. No data-format migration needed.
## After this PR lands
The owner-triggered first real GNN training run becomes:
\`\`\`bash
just provision-corpora extract-corpora
for adapter in isabelle metamath mizar hol_light hol4 dafny why3 fstar
acl2_books \\
tptp smtlib proofnet minif2f agda coq lean idris2; do
just corpus-ingest-saturation \$adapter training_data/\$adapter/
done
just train-from-corpus lean
just train-from-corpus coq
\`\`\`
Expected wall-clock: ~10min CPU baseline / ~2hr GPU full run.
## Refs
- Sketch: \`/tmp/echidna-saturation/POST-WAVE3-WIRING-SKETCH.md\`
(owner's manual cleanup post-merge)
- Saturation+typing PR: #198
- Wave3 closeout PR: #206
- Hand-off contract: \`docs/architecture/JULIA-SATURATION-HOOKS.md\` §5
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0 commit comments