algo/applications/collatz/scripts/08-paliers-finale.sh
Nicolas Cantu 14ed1de36b Pipeline Collatz aligné sur commandes.md et reprise après interruption
**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
2026-03-02 02:49:23 +01:00

54 lines
1.9 KiB
Bash
Executable File

#!/usr/bin/env bash
# Section 6 from commandes.md: Final paliers (D18-D21, F15, F16, extinction noyau both)
# Requires: noyau_post_D17.json from 02-run-pipeline.sh
# Uses: collatz_k_pipeline.py --extend
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
OUT="${OUT:-$PROJECT_ROOT/out}"
ROOT="${ROOT:-$PROJECT_ROOT/collatz_k_scripts}"
cd "$PROJECT_ROOT"
if [[ ! -f "$OUT/noyaux/noyau_post_D17.json" ]]; then
echo "Missing $OUT/noyaux/noyau_post_D17.json. Run 02-run-pipeline.sh first."
exit 1
fi
AUDIT60="$ROOT/audit_60_etats_B12_mod4096_horizon7.json"
if [[ ! -f "$AUDIT60" ]]; then
AUDIT60="$PROJECT_ROOT/collatz_k_scripts/audit_60_etats_B12_mod4096_horizon7.json"
fi
if [[ ! -f "$AUDIT60" ]]; then
echo "Missing audit60. Place it in $ROOT or collatz_k_scripts/"
exit 1
fi
cd collatz_k_scripts
RESUME_ARG=""
if [[ -n "${RESUME_FROM:-}" ]]; then
RESUME_ARG="--resume-from $RESUME_FROM"
fi
python3 collatz_k_pipeline.py --extend --audit60 "$AUDIT60" --out "$OUT" $RESUME_ARG
# Audit and scission for D18-D21, F15, F16 (commandes.md section 6)
mkdir -p "$OUT/audits" "$OUT/certificats"
for label in D18_palier2p30 D19_palier2p32 F15_palier2p32 D20_palier2p34 F16_palier2p35 D21_palier2p36; do
csv="$OUT/candidats/candidats_${label}.csv"
if [[ -f "$csv" ]]; then
python3 collatz_audit.py --input "$csv" --output "$OUT/audits/audit_${label}.md"
python3 collatz_scission.py --input "$csv" --output "$OUT/certificats/certificat_${label}.json"
fi
done
# Verify both extinction (commandes.md section 7)
if [[ -f "$OUT/noyaux/noyau_post_D21.json" ]]; then
python3 collatz_verify_both_extinction.py --palier=36 \
--input-noyau="$OUT/noyaux/noyau_post_D21.json" \
--output="$OUT/audits/verification_extinction_noyau_both.md"
fi
echo "Extended D18-D21 complete. Outputs in $OUT/noyaux, $OUT/candidats, $OUT/certificats"