runward

RW™ · V0.8.0

Conformance-gate hardening.

Runward's deterministic gate, the one that verifies rule by rule that the delivered code carries a traced decision, becomes hard to fool. Still zero-LLM, still owned by the operator.

A field test had exposed the hole: an agent could cite a craft rule without ever applying it, and the gate still turned green. v0.8.0 closes that hole and hardens the gate against gaming, without ever betraying the founding bet.

What's new

  • Non-vacuity. A routed-rule floor per phase and non-trivial n/a reasons: the gate can no longer be neutralised in one silent edit.
  • Form-lint. A manifest that lists a rule twice, or references a slug that does not exist (a typo that hid a gap), is caught before the semantic check.
  • Drift detection. An applied pointer whose file no longer resolves is flagged: the manifest stops silently rotting as the code moves.
  • Guided migrations. A renamed rule becomes a guided migration, not a break.
  • Actionable messages. Every violation now carries its fix.
  • Advisory LLM verification. A verify workflow runs an adversarial cite-vs-apply pass ("does this code apply the rule it names, or only cite it?") — never in the exit code, never blocking.
  • Hook seam. runward check --hooks runs operator commands around the audit, opt-in: a clone runs nothing by surprise.

The invariant held

The gate stays deterministic, zero-LLM, zero-run. The LLM verification layer and the hooks sit beside the gate, subordinate and optional — never inside. A gate that cannot be jailbroken by injection is the whole argument; we do not sabotage it.

Every hardening was decided before the code, locked in an ADR, proven by tests — Runward's own method applied to Runward.


Install: npx runward init

Release v0.8.0 on GitHub · CHANGELOG

← All news