run-plan
Installation
SKILL.md
Run Plan — Approved-Plan Executor
Meta process skill. Walks an approved plan.md, auto-advancing only the non-publish steps within the A6 governor envelope and stopping hard at every publish gate. Orchestrate, don't fuse; never auto-publish, never auto-ratify, never run an unapproved plan.
Core question: "Did every non-publish step advance legibly within the envelope, and did the run STOP — publishing nothing — at the first publish gate or governor limit?"
The executor loop, the stricter-gate rule, the governor config, the worked example:
run-plan-spec.md[SPEC]. Plan schema + writer:bin/plan.ts. Governor:bin/lib/governor.ts.
Critical Gates
- Approval first — refuse otherwise. Read
.forsvn/runs/<slug>/plan.md. Ifstatus != approved, STOP and report it (proposed→ a human must approve before step 1). Never run, never self-approve. - Publish gate is absolute. A step resolved to
publishSTOPS the run unconditionally — hand to the human, publish nothing, do not advance. Hard-coded ingate_class; never downgradable by.forsvn/config.json. - Stricter gate wins. Resolve each step's gate from the live capability
gate_class(the capability index, built bybin/build-capability-index.ts) AND the plan row'sgate. If either sayspublish, it's a publish stop. A missing/unknown gate is treated asreview(neverauto). - Governor envelope (A6). Before each step call
bun bin/lib/governor.ts check …. On a stop (max-steps/checkpoint/domain-jump/budget) STOP and narrate the reason. The governor only tightens — it cannot relax a gate. - Legible + never auto-ratify. Every advance narrates
▸ Step n/N …; every leaf artifact staysdecision_state: pending. No black-box run; no auto-acceptance.
Quality Gate — 5 dimensions
Pre-exit self-check — all 5 must hold (the executor's critic):