runward v0.8.0 — conformance-gate hardening
Hardening of the --strict conformance gate, adopted from a code-level benchmark of the spec-driven competitors (BMAD, Spec Kit, OpenSpec, Spec Kitty). Each structural item is locked in an ADR first; the deterministic gate stays zero-LLM and zero-run, while the LLM verification and the hook seam sit beside it — subordinate and opt-in.
What's new (P1–P8)
- P1 — non-vacuity (ADR-0002): routed-count floor per phase, non-trivial
n/areasons, a self-mutation test — the gate can't be neutralised in one edit. - P2 — form-lint (ADR-0003): duplicate rows and unknown (typo'd) slugs are caught before the semantic check.
- P3 — advisory drift detection (ADR-0004): an
appliedpointer whose file no longer resolves is flagged; the snapshot stops silently rotting. - P4 — baseline-worktree tests: considered, not adopted (ADR-0005): out of the gate's zero-run, language-neutral lane.
- P5 — tracked migrations (ADR-0006): a renamed rule becomes a guided migration, not a break.
- P6 — actionable
--strictmessages: every violation carries its fix. - P7 — advisory LLM
verifyworkflow (ADR-0007):/rw-verify, an adversarial cite-vs-apply pass — advisory, never the gate. - P8 — opt-in hook seam (ADR-0008):
check --hooksruns operatorbefore/aftercommands; opt-in, so a clone runs nothing by surprise.
Install: `npx runward init`