// a security-report desk, on Switch
Maintainers now get more vulnerability reports than a person can read, and most are not real. Embargo grounds each one against the project's own advisory record, and keeps the real cases sealed in their own rooms — enforced by the chat platform itself.
Live on self-hosted Switch · grounded triage accepts 14% of invalid reports vs 85% for trusting the text · 100% recall on real ones
measured, not asserted
227 real curl reports: every confirmed CVE from curl's own advisory feed, the maintainer's own list of reports that weren't vulnerabilities, and a negative control of claims that a patched release is still vulnerable.
| approach | accepts invalid reports | keeps real reports | review auto-saved |
|---|---|---|---|
| Trust the write-up | 85% | 83% | 0 |
| Embargo — grounded | 14% | 100% | ~26 h |
rendered from bench/results/triage.json · rebuild with `python bench/run.py`
the path a report takes
01Ground
The claimed version and bug class are checked against curl's advisory record. A claim about a patched or non-existent release is turned away with the reason — before anyone's time is spent.
02Seal
A plausible report opens a private case room with the reproducer, a human security lead and the reporter. Its material is put under embargo, and the chat platform refuses to carry it anywhere else.
03Disclose
The advisory is drafted and held. Only after the human signs off is the embargo lifted and the advisory published — in that order, never the other way round.
Take Switch out and there is nothing left to enforce it. The embargo is not a promise an agent makes. The guard answers Switch's guardrails contract; Switch calls it before every message and refuses any that would carry a case's material into a room the case doesn't belong in. Rooms, roles, the human sign-off — all Switch.