**Motivations:** - Implémenter le workflow complet de démonstration Collatz (commandes.md) - Permettre la reprise après interruption au palier D20 **Evolutions:** - Scripts 01-12 et run-full-workflow alignés sur commandes.md sections 1-10 - collatz_recover_noyau.py : recréation de noyau_post_D20 à partir du CSV candidats - Option --resume-from D20 dans collatz_k_pipeline pour reprendre sans recalculer D18-D19-F15 - Détection automatique : si candidats_D20 existe sans noyau_post_D20, récupération puis poursuite - Filtres --cible=critique et --modulo dans collatz_fusion_pipeline - ROOT par défaut = collatz_k_scripts (plus data/source vide) **Pages affectées:** - .gitignore (__pycache__, out/) - applications/collatz/collatz_k_scripts/*.py - applications/collatz/scripts/*.sh - applications/collatz/scripts/README.md
34 lines
1.0 KiB
Python
34 lines
1.0 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
collatz_build_initial_noyau.py
|
|
|
|
Build initial R17 noyau from completion (Parents both).
|
|
Used before D10 when running palier-by-palier.
|
|
|
|
Usage: python collatz_build_initial_noyau.py --m15m16 PATH --output JSON
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
import argparse
|
|
import json
|
|
from pathlib import Path
|
|
|
|
|
|
def main() -> None:
|
|
ap = argparse.ArgumentParser(description="Build R17 noyau from completion")
|
|
ap.add_argument("--m15m16", required=True, help="Path to complétion_minorée_m15_vers_m16.md")
|
|
ap.add_argument("--output", required=True, help="Output noyau JSON path")
|
|
args = ap.parse_args()
|
|
|
|
from collatz_k_pipeline import build_R17_from_completion
|
|
|
|
residues = build_R17_from_completion(args.m15m16)
|
|
out = {"noyau": residues, "palier": 17}
|
|
Path(args.output).parent.mkdir(parents=True, exist_ok=True)
|
|
Path(args.output).write_text(json.dumps(out, indent=2), encoding="utf-8")
|
|
print(f"Wrote {args.output}: {len(residues)} residues (R17)")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|