1#!/bin/sh2# Post-classification pipeline on M3U96b (Phases 2–6): waits for CLASSIFY_DONE and GRAPH_V2_DONE, then runs in order.3cd ~/wp44_uqo; . .venv/bin/activate; export WP44_DUCKDB_MEM=${WP44_DUCKDB_MEM:-40GB}; ulimit -n 65536; ONT=taxonomy/ontology.yaml4while ! grep -q CLASSIFY_DONE logs/classify/prepare.log 2>/dev/null; do sleep 60; done5while ! grep -q GRAPH_V2_DONE logs/citation_graph_v2.log 2>/dev/null; do sleep 60; done6run() { name=$(echo "$1" | tr ' /' '__'); echo "[$(date +%H:%M:%S)] $1"; shift; "$@" > logs/p26_$name.log 2>&1 || echo "FAILED: $*"; }7run "category flows" python knowledge_graph/02_category_flows.py --root ~/wp44_uqo --ontology $ONT8run "diversity/CAGR" python bibliometrics/04_diversity_cagr.py --root ~/wp44_uqo9run "structural change" python econometrics/run_structural_change.py --root ~/wp44_uqo10run "validation draw" python taxonomy/validate_sample.py --root ~/wp44_uqo --draw11run "rater haiku" python taxonomy/validate_sample.py --root ~/wp44_uqo --rate --model claude-haiku-5-512run "rater sonnet" python taxonomy/validate_sample.py --root ~/wp44_uqo --rate --model claude-sonnet-5-513run "validation metrics" python taxonomy/validate_sample.py --root ~/wp44_uqo --metrics14run "citation impact" python bibliometrics/03_citation_impact.py --root ~/wp44_uqo15run "landmarks" python literature_synthesis/select_landmarks.py --root ~/wp44_uqo --ontology $ONT16run "emerging h12" python experiments/emerging_detection.py --root ~/wp44_uqo --horizon 1217run "emerging h24" python experiments/emerging_detection.py --root ~/wp44_uqo --horizon 2418run "known set" python experiments/known_set.py --root ~/wp44_uqo19run "figures" python figures/make_figures.py --root ~/wp44_uqo20echo PHASE26_DONE >> logs/p26_pipeline.log21