Skip to content

v0.15.0 — the gate verifies the evidence, and runward gates itself

Choose a tag to compare

@stranxik stranxik released this 16 Jul 00:59

A factual multi-agent audit confirmed the one honest gap the ADRs had already named: the gate proved a decision was traced, never that the trace pointed at anything real — a pointer at an existing-but-empty file passed green. v0.15.0 executes the tightenings the ADRs pre-authorized (ADR-0001 trigger b, ADR-0004's promotion trigger). Still bytes, never judgment; zero-LLM, zero-network, never a runtime.

  • Typed evidence pointers, verified (ADR-0019). file:PATH[:LINE][#SYMBOL], test:PATH[::NAME], adr:NNNNcheck --strict verifies resolution, non-empty content, line count, symbol/test-name presence. For every applied row, typed or prose, a resolvable path must point at a non-empty file: the hollow-evidence pass is closed. Free prose stays valid — it is the operator's judgment.
  • Rule signatures (ADR-0020). A rule can declare a signature: regex its applied evidence must contain. frontier-deterministic-boundary ships signed: the founding cited-not-applied incident is now caught deterministically end to end.
  • Drift blocks; a green gate can be sealed (ADR-0021). A stale applied pointer now fails --strict. runward check --freeze seals a green gate (SHA-256 of every resolvable evidence file into runward/evidence-lock.json); a sealed file that changes or disappears fails the gate until re-verified and re-sealed. Refuses to seal a red gate.
  • runward manifest --sync (ADR-0023). Scaffolds the form, never the content: missing rows appended with an empty status the gate refuses, renamed slugs migrated with status and evidence preserved, nothing deleted.
  • runward rules --json and runward explain <rule> (ADR-0024). The rule set as a stable, versioned machine contract; a rule's why and full text one command away.
  • Regime mappings as versioned data (ADR-0022). ISO 42001 / NIST AI RMF / EU AI Act structure moves to regimes/<regime>@<version>.json; compliance --regime-version pins the lens and every draft plus the OSCAL stamp which mapping produced them. Real-ingest testing evaluated and honestly declined — no credible maintained OSS OSCAL ingester today (dated rejections + manual GRC procedure in docs/compliance/oscal-ingest.md).
  • The verify pass leaves a trace (ADR-0007, amended). The advisory cite-vs-apply workflow writes runward/governance/verify-findings.md; a green check --strict reports its presence and freshness — never parsing a verdict, never blocking.
  • runward gates itself. The repository carries its own strict-green runward/ mission (32 conformance rows, typed pointers into runward's own source, zero deviated), and CI requires runward check --strict green on runward — including under network isolation (unshare -n).
  • A real unit harness. 50 node:test unit tests (zero new dependencies) over the gate core, seeded fuzz of the manifest parser (never crashes, never false-passes), and a golden byte-identical OSCAL test: the byte-for-byte promise is now tested, not asserted.
  • Also: ADR-0017 closed for real (shared-bricks re-scoped as the reference grid; the example mission gains ADR-0003 port placement and sovereignty, first of the infra ADR family); a GitLab CI gate adapter (adapters 4 → 5); init --example ships the reference code/ so the example is green because its typed evidence actually resolves.

Full detail: CHANGELOG · ADR-0019…0024 in docs/adr/