A second audit, closed in daylight.
We ran our own method on ourselves again: an adversarial internal audit, plus a code-level competitive benchmark. It confirmed the four grounds nobody else pairs, and broke five things shipped the day before. Closing your own defects in daylight is not an embarrassment: it is the doctrine.
What is fixed
- Path traversal closed. A pointer to a file outside the project passed green, contradicting our own promise. Resolution is now confined to the three project bases: absolute paths rejected,
../cannot climb out. Evidence must be in your repository. - ReDoS closed. A rule signature with nested quantifiers could hang the gate indefinitely. A deterministic screen rejects the dangerous shape before compiling the regex: fails fast, never hangs.
- OSCAL reconciled with its own spec. The render took the first manifest row, so a multi-phase rule's status depended on deliverable order. It now aggregates every row, order-independent. The "implementable independently, byte-for-byte" promise holds off the nominal path.
- The seal's scope stated plainly. It detects drift and deletion, not falsification by someone who recomputes the hash: the trust anchor is the signed git history. A zero-secret gate holds no signing key, by design.
- The EU AI Act date corrected. The Digital Omnibus postponed high-risk obligations from 2 August 2026 to 2 December 2027; our regime data still printed the old date. Fixed. In place of the stale deadline, two durable talking points: FedRAMP forbids AI-produced evidence, and the Delve affair shows why it is not trusted. Both validate the deterministic, zero-LLM gate.
The gate wires into BMAD
BMAD exposes a review extension point that accepts "an external reviewer via bash". An inert adapter adds runward's deterministic gate there, beside BMAD's AI reviewers: they judge the code's craft, runward verifies the traced decisions hold with their evidence. A complement running on their distribution, never a competitor, no orchestrator privileged.
Two releases in a day, the second repairing the first. That is not a confession: it is exactly what a gate that can say "not yet" is meant to produce, applied to its own code.
Install: npx runward init
Release v0.17.0 on GitHub · CHANGELOG
← All news