fix(agents): reviewers drop a finding only with a Declined to Judge line, research-scout gets Tavily, no dead override reference
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
ab6b32c930
commit
4312882451
6 changed files with 199 additions and 18 deletions
|
|
@ -171,8 +171,9 @@ Severity is fixed by `rule_key`. Do NOT override the catalogue:
|
|||
| `COVERAGE_SILENT_SKIP` | MAJOR |
|
||||
|
||||
If a finding feels less severe than its catalogue tier, do NOT downgrade
|
||||
it. Either drop the finding (it was wrong) or emit it at the
|
||||
catalogue's severity.
|
||||
it. Emit it at the catalogue's severity. Drop the finding only when you
|
||||
can say why it is wrong, and then write it as one line under
|
||||
`### Declined to Judge` with that reason.
|
||||
|
||||
## Output format
|
||||
|
||||
|
|
@ -254,8 +255,9 @@ parsers find it by reading the last `json` code fence.
|
|||
`(file, line, rule_key)` with `lib/review/fill-finding-ids.mjs`).
|
||||
- `line` is an integer; use `0` when the finding is file-scoped without
|
||||
a specific line (e.g., MISSING_TEST for an entire file).
|
||||
- `rule_key` MUST be in the catalogue. Reviewers that emit unknown rule
|
||||
keys are dropped by the coordinator's reasonableness filter.
|
||||
- `rule_key` MUST be in the catalogue. A finding with a rule key outside
|
||||
it is not dropped: it is routed to `unverified` by the coordinator's
|
||||
reasonableness filter (Pass 3).
|
||||
|
||||
## Rules
|
||||
|
||||
|
|
|
|||
|
|
@ -93,8 +93,9 @@ Cite both the changed file:line AND the regressed file:line.
|
|||
|
||||
When the brief explicitly asks for tests of a specific behavior and they
|
||||
are missing, escalate to `MISSING_TEST` MAJOR. When tests are
|
||||
nice-to-have, downgrade is forbidden — emit at the catalogue tier or
|
||||
drop the finding.
|
||||
nice-to-have, downgrade is forbidden — emit at the catalogue tier. Drop
|
||||
the finding only when you can say why it is wrong, and then write it as
|
||||
one line under `### Declined to Judge` with that reason.
|
||||
|
||||
### 5. Placeholder code — `PLACEHOLDER_IN_CODE` (MAJOR)
|
||||
|
||||
|
|
@ -110,9 +111,8 @@ literals or example fenced blocks):
|
|||
- `// stub`
|
||||
- `throw new Error('not implemented')`
|
||||
|
||||
Cite the exact line. The MANDATORY OVERRIDE rule above forbids saying
|
||||
"not implemented" placeholders are fine "for now" — they are MAJOR
|
||||
findings until removed.
|
||||
Cite the exact line. Never accept "not implemented" placeholders as fine
|
||||
"for now" — they are MAJOR findings until removed.
|
||||
|
||||
### 6. Security surface — `SECURITY_INJECTION` (BLOCKER)
|
||||
|
||||
|
|
@ -154,8 +154,10 @@ Severity is fixed by `rule_key`. Do NOT override the catalogue:
|
|||
| `UNDECLARED_DEPENDENCY` | MAJOR |
|
||||
| `COVERAGE_SILENT_SKIP` | MAJOR |
|
||||
|
||||
If a finding feels off-tier, either drop it (it was wrong) or emit it
|
||||
at the catalogue's severity. Do not invent severity overrides.
|
||||
If a finding feels off-tier, emit it at the catalogue's severity. Drop
|
||||
it only when you can say why it is wrong, and then write it as one line
|
||||
under `### Declined to Judge` with that reason. Do not invent severity
|
||||
overrides.
|
||||
|
||||
## Output format
|
||||
|
||||
|
|
@ -239,8 +241,9 @@ parsers find it by reading the last `json` code fence.
|
|||
the canonical SHA1).
|
||||
- `line` is an integer ≥ 0: the line number in the file itself as it stands after the change (count from the hunk header's `+start`, or Read the file) — never the line number in the diff or patch file. A line past the end of the file fails the schema check and you are asked again;
|
||||
`0` for file-scoped findings.
|
||||
- `rule_key` MUST be in the catalogue. Reviewers that emit unknown rule
|
||||
keys are dropped by the coordinator's reasonableness filter.
|
||||
- `rule_key` MUST be in the catalogue. A finding with a rule key outside
|
||||
it is not dropped: it is routed to `unverified` by the coordinator's
|
||||
reasonableness filter (Pass 3).
|
||||
|
||||
## Rules
|
||||
|
||||
|
|
@ -255,8 +258,10 @@ parsers find it by reading the last `json` code fence.
|
|||
injection sink. Never flag a regression without naming both files.
|
||||
Speculative findings are dropped by the coordinator.
|
||||
- **No silent severity downgrades.** The catalogue tier is the floor.
|
||||
If a finding feels less serious than its catalogue severity, either
|
||||
drop it or emit it as the catalogue says.
|
||||
If a finding feels less serious than its catalogue severity, emit it
|
||||
as the catalogue says. Drop it only when you can say why it is wrong,
|
||||
and then write it as one line under `### Declined to Judge` with that
|
||||
reason.
|
||||
- **Token budget honesty.** When summary-only is in effect for a file,
|
||||
state explicitly "summary-only — structural pass" so the coordinator
|
||||
knows the depth limit.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ description: |
|
|||
APIs, or libraries where official documentation and known issues should be checked.
|
||||
model: opus
|
||||
color: blue
|
||||
tools: ["WebSearch", "WebFetch", "Read"]
|
||||
tools: ["WebSearch", "WebFetch", "Read", "mcp__tavily__tavily_search", "mcp__tavily__tavily_research"]
|
||||
skills: ["voyage:researching-sources"]
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -65,7 +65,8 @@ You will receive a prompt containing:
|
|||
(reasonableness filter) except the brief-conflict rule, which applies in every mode;
|
||||
Passes 1, 2, 4 still run.
|
||||
- **Rule catalogue** — `lib/review/rule-catalogue.mjs`. Findings whose
|
||||
`rule_key` is not in this set are dropped by Pass 3.
|
||||
`rule_key` is not in this set are routed to `unverified` by Pass 3
|
||||
(`unknown-rule_key`).
|
||||
|
||||
## Your 4-pass process
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue