Skip to content

Commit afee181

Browse files
feat: add structured checker gates (#3)
* feat: add structured checker gates * feat: add OWASP rationalization checks
1 parent a4033ae commit afee181

3 files changed

Lines changed: 502 additions & 18 deletions

File tree

README.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ Verifymate acts like a checklist-driven review partner: it compares the report t
2828

2929
- Referenced files exist on the current checkout.
3030
- Referenced symbols, strings, and endpoints appear in the repo.
31+
- A structured `repo_grounding` gate summarizes whether repo references are line-backed by concrete file/line evidence.
32+
- A structured `attacker_path` gate checks for the minimum attacker-input → entrypoint → dangerous-sink → source-to-sink story before a finding is worth filing.
3133
- The report includes an attacker model.
3234
- The report includes a PoC/repro indicator.
3335
- Dangerous capability terms exist in the repo.
@@ -73,6 +75,11 @@ JSON output:
7375
verifymate finding.md --repo /path/to/repo --json
7476
```
7577

78+
JSON includes deterministic checker rows under `checks`. Each row has a stable `id`, `category`, `status` (`pass`, `warn`, or `fail`), `blocking`, `detail`, and optional line-backed `evidence`. The first checker gates are:
79+
80+
- `repo_grounding`: whether referenced files, symbols, endpoints, and dangerous capabilities are grounded in the checked-out repo.
81+
- `attacker_path`: whether the report connects attacker-controlled input, a reachable entrypoint, a dangerous sink, and a source-to-sink explanation.
82+
7683
Strict CI-friendly exit codes:
7784

7885
```bash
@@ -138,6 +145,19 @@ Verdict: **WEAK**
138145

139146
This appears to involve agent/tool functionality, but the report does not prove unauthorized boundary crossing.
140147

148+
## Checker result
149+
150+
- Blocking failures: 2
151+
- Warnings: 1
152+
153+
### Repo grounding
154+
155+
- **PASS** `repo_grounding` — Repo grounding is line-backed for 4/4 referenced files/symbols/endpoints/capabilities.
156+
157+
### Attacker path
158+
159+
- **FAIL** `attacker_path` — Missing attacker-path evidence: attacker input, source-to-sink.
160+
141161
## Maintainer will ask
142162

143163
1. Is this API intended for agent/tool use, and if so what unauthorized boundary is bypassed?

0 commit comments

Comments
 (0)