First tagged release. docs/Quickstart_OSCTL_v1.md has named v0.1.0 since it
was written; until now no such tag existed. This makes that reference true.
What this is
An evaluation harness where a run produces a manifest, a decision log and a
verify report, and where verification refuses a run whose stored verdict its
own event log does not support.
The workloads are toys. The refusal is not — of the four runs make produces,
one fails, by name:
$ make verify-all
{"status": "PASS", "run_id": "FORBIDDEN_RESEARCH_001"}
{"status": "PASS", "run_id": "MODERATION_DEMO_RUN"}
{"status": "PASS", "run_id": "OSS_TOY_REJECT_RUN"}
{"status": "FAIL", "run_id": "OSS_TOY_RUN", "detail": "fail: forensic_reconstruction"}
OSS_TOY_RUN declares 17 checks; exactly one of them is FAIL, and it is
forensic_reconstruction. That output is the literal result of a fresh clone of
this tag, not retyped from memory.
What changed since publication
Most of the history is retraction. This release is the point at which the
repository's claims and its behaviour agree, so the list is what was wrong:
- Merge-conflict markers that shipped in the public tree from the first
commit — 206 days inREADME.md(2026-01-06 to 07-31) and 207 inLICENSE
(to 08-01), both measured from the commits that introduced and removed them.
Alongside twelve claims that measurement refuted — named theorems that do not exist, a file
that does not exist, a proof status that overstated what the scripts prove.
Withdrawn in the README rather than quietly deleted. - A verdict that read a list nothing ever wrote to, so a report could carry
a FAIL check under a PASS verdict. - An audit step that emitted hardcoded scores —
composite: 8.2,
recommendation: ACCEPT, computed from nothing. Deleted rather than repaired:
repairing it would have turned a red X into a green badge certifying invented
numbers. - Documented commands that called an interpreter a clean machine does not
have. CI now runs the interface the README documents, on Ubuntu, against
Python 3.10 and 3.13, withpythonshadowed by an exit-127 stub so the
documentedpython3path is the one actually exercised. - Gates that compared an exit code and never a check name.
osctl verify
collapses 17 named checks onto four exit codes, soexit 1said "something
failed" and no more. Measured: storingREJECTinOSS_TOY_RUN/govdec.json
makesforensic_reconstructionPASS — the demonstration gone — while a
different check fails, and both gates stayed green. They now assert the name. - A sign-off rule that lived only in prose. The README has asked for
git commit -ssince publication while nothing checked it and no commit
carries the trailer..github/workflows/dco.ymlnow enforces it on pull
requests, with 17 controls intools/dco_check.py --selftest.
Known limits, stated rather than left to discovery
- The DCO gate runs on pull requests only, so a commit pushed straight to
main
by the maintainer is not checked. Branch protection would close that; it is
configured withenforce_adminsfalse, so it currently binds nobody. proofs/holds hand-written Lean 4, Isabelle/HOL and Dafny scripts. The
README states what they do and do not establish. They are not machine-checked
in CI.formal_proof_check_stubis UNKNOWN by construction — nothing in this build
computes a formal status — and is named in the accept list rather than
suppressed globally.
Apache-2.0. Requires Python 3.10+.