Hardship dossier harvester (ledger + evolutions + gate_metric + HISTORY)
Goal
Harvest the forensic signal the empty review threw away: enumerate the ledger dead-ends (REVERTED/INERT/REJECTED + DO-NOT-RE-TRY), the refuted/withdrawn evolutions, the gate_metric / functional-mission state, and the OBE/restructure narrative from content bodies; synthesize the ‘why was this zeroed / what hardship’ BLUF the forensic review reasons from. This is the evidence base for every reshuffle decision in 03-04.
Implementation Sketch
Read APIs (verified): ledger.read_ranked(plan_dir, dead_ends_only=True, include_suppressed=True) for ranked DO-NOT-RE-TRY dead-ends; resolve_ledger_backend(plan_dir).show() (filter status in {REVERTED,INERT,REJECTED}) + .show_evolutions(terminal_only=True) (refuted/withdrawn); route_v7.load_v7_plan_json(plan_dir)[‘gate_metric’]; mission_reground.gap_test(plan_dir). Live aims-burden-tracking profile: 278 cycle entries (132 dead-ends, 109 DO-NOT-RE-TRY), 17 evolutions (15 withdrawn + 2 refuted, 0 ratified), gate_metric aims_burden_aot_floor (lower-is-better).
Spec References
scripts/review_plan_runtime/hardship_harvest.py (NEW); scripts/plan_corpus/ledger.py (read_ranked, resolve_ledger_backend, show_evolutions); scripts/plan_corpus/route_v7.py (load_v7_plan_json -> gate_metric); scripts/plan_orchestrator/mission_reground.py (gap_test).
Work Items
- hardship_harvest.harvest_ledger(plan_dir): call ledger.read_ranked(dead_ends_only=True) + resolve_ledger_backend().show() -> structured {dead_ends[], do_not_retry[], kept_count, totals}. NEVER read plan.json directly; the ledger backend is the sanctioned reader.
- hardship_harvest.harvest_evolutions(plan_dir): show_evolutions(terminal_only=True) -> {refuted[], withdrawn[], ratified[]}; flag a zero-ratified / high-refuted profile as a hardship signal.
- hardship_harvest.harvest_gate_and_mission(plan_dir): gate_metric via load_v7_plan_json + gap_test verdict (aligned/gap/no_functional_mission); harvest OBE/superseded/RESTRUCTURED/reground markers from content/ bodies into a narrative list.
- hardship_harvest.synthesize_bluf(…): compose the ‘why zeroed / what hardship’ BLUF (dead-end clusters, dead evolution lines, OBE sections, gate state) into the dossier via forensic_dossier.write_dossier.
- pytest scripts/review_plan_runtime/tests/test_hardship_harvest.py: an aims-burden-shaped fixture surfaces the dead-end + refuted-evolution counts + an OBE marker; semantic pin on the dead_ends_only path.
Fresh intel (regenerated)
{ “schema_version”: 1, “target”: { “kind”: “plan-section”, “ref”: “zeroed-plan-forensic-review/s-d3e8e1da” }, “generated_at”: “2026-06-20T02:14:19.160671+00:00”, “graph_state”: { “head_sha”: “e4b7c39a”, “last_code_import_at”: “2026-06-20T02:09:30.188Z”, “embedding_stale”: false, “insights_stale”: false, “cpg_stale”: false }, “surfaces”: {}, “summary”: “intel-package[plan-section:zeroed-plan-forensic-review/s-d3e8e1da] agent-authored dossier”, “degraded”: false, “dossier”: { “objective_symbols”: [], “tiers”: {}, “agent_authored”: true, “difficulty”: { “class”: “routine”, “research_online”: false, “research_mode”: “auto”, “signals”: [], “plan_dir”: “/home/eric/projects/ori_lang/plans/zeroed-plan-forensic-review” } } }
(full dossier: hardship-dossier-harvester—s-d3e8e1da.intel.json)