docs: README reflects the dynamic proof arm and unseen-repo release gate

Update the front door and Status to the current state: static
abstract-interpretation blocking is NO-GO by hand, so the work is a
dynamic proof arm that builds and runs the app and demonstrates a
finding by a differential (triggers on the vulnerable revision, not the
fixed one), earning a block by execution rather than calibration. It is
pilot, not shipped. The release gate is a measured catch/false-alarm
number on unseen repositories, now being produced. Bump v2.0.0 -> v2.0.1,
link the developer guides.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
Marius Ciepluch
2026-10-08 12:51:35 +02:00
co-authored by Claude Opus 4.8
parent f4c7143525
commit 23c8644a37
+27 -9
View File
@@ -14,6 +14,11 @@ A scan combines up to four parts:
Every finding carries the evidence that earned its place. When a scan could not look at Every finding carries the evidence that earned its place. When a scan could not look at
something, it records a degradation. It does not report a clean result. something, it records a degradation. It does not report a clean result.
Where a repository's application can be built and run, an experimental proof arm goes further. It
demonstrates a finding by executing it: the issue triggers on the vulnerable revision and not on
the fixed one, so a demonstrated finding is a reproducible fact, not a score. This arm is in pilot
and being qualified on repositories the tool has never seen; see [Status](#status).
`ousast` is the interface. Model work over whole repositories runs on a separate agentic plane `ousast` is the interface. Model work over whole repositories runs on a separate agentic plane
(google/ax). A learned decision engine is in development. A scan needs neither of them. (google/ax). A learned decision engine is in development. A scan needs neither of them.
@@ -23,17 +28,30 @@ The site is published at <https://norandom.github.io/OpenUltraSAST/>. Its source
## Status ## Status
**v2.0.0, state as of 2026-10-02.** The pre-push safety net is **NO-GO** against every M4 gate. **v2.0.1, state as of 2026-10-08.** The pre-push safety net is **not yet released**. Blocking on
the static analyser by hand is **NO-GO** against every M4 gate, and the project no longer tries to
reach them that way.
- No hook capability is enabled. - No blocking hook capability is enabled; the pre-push hook is advisory only.
- Two independent populations (case sets frozen before any scan) have been spent so far. Engine - Two independent populations (case sets frozen before any scan) have been spent on the static
recall was 1 of 11 and then 0 of 17. engine: recall was 1 of 11, then 0 of 17. The learned decision engine ranks but blocks for no
- The learned decision engine ranks but may not block. BLOCK is offered for no family. family.
- Why blocking is hard: static abstract interpretation could not prove the precision a block
needs. So the current work is a **dynamic proof arm**. It builds and runs a repository's app and
demonstrates a finding by a differential: the issue triggers on the vulnerable revision and not
on the fixed one. A demonstrated finding is ground truth by execution, so it can earn a block
without calibration. Pilot demonstrations exist, including one executed on the cluster; the arm
is being qualified, not shipped.
- The release gate is a **measured** catch-rate and false-alarm number on repositories the tool
has never seen (the unseen-repo evaluation), produced rather than asserted. Until that number
exists, treat all output as advisory.
The project has stopped trying to reach the gates by hand. Every detection change now has to win Every detection change has to win a controlled measurement on held-out repositories. One page
a controlled measurement on held-out repositories. One page states all of this, with the record states where things stand, with the record behind each figure:
behind each figure: [docs/where-we-stand.md](docs/where-we-stand.md). The release history is in [docs/where-we-stand.md](docs/where-we-stand.md). For developers, the pre-push check and its
[RELEASE_NOTES.md](RELEASE_NOTES.md). honest limits: [docs/pre-push-for-developers.md](docs/pre-push-for-developers.md); the
catch–prove–fix–re-verify loop: [docs/use-case-fix-and-reverify.md](docs/use-case-fix-and-reverify.md).
The release history is in [RELEASE_NOTES.md](RELEASE_NOTES.md).
## Install and first scan ## Install and first scan