- Pipeline_Schema_Installer: run_stages gains human_modified + stale
(stale is a COLUMN not a status: rows stay 'done' so resume code can
never silently re-run them — CPO guardrail 3 by construction);
run_decisions gains human_modified; new INSERT-only stage_inputs table
(edit forks as immutable versions + idea seeds for re-run-from-here).
All dbDelta-idempotent; PRAUTOBLOGGER_DB_VERSION 1.1.0 -> 1.3.0 (the
constant never carried the documented 1.2.0) so the existing
admin_init/cron self-healing migration path fires everywhere.
- Run_Stage_State split (M2 pattern, was 313 lines): pipeline write
bodies moved verbatim to Run_Stage_Writes (public API unchanged via
thin proxies); done() now clears stale on fresh output with a
half-migrated-schema retry (Cost_Tracker v0.18.0 pattern); new
item-scoped read stages_for_item(). Operator-action mutations
(restart/mark_stale/demote_to_pending) isolated in
Run_Stage_Rerun_State — the only code allowed to demote a done row.
- Audit_Writer::flag_decisions_human_modified() (guardrail 2 on
run_decisions). Run_Reaper retention prunes human fork bodies (seeds
kept). Uninstall covers the new table + rerun cron hooks.
Agent-Session: engineer-prab-m3-20260612