feat(skills): reviewing-adversarially, one stance for every reviewer
A new skill, voyage:reviewing-adversarially (contract S4): no praise, no finding without a source (file:line or a quoted line), no downgrade without a reason, summary-only said and not judged, a Declined to Judge list, claims checked against the diff rather than the report, axes kept separate. Red baseline first: six review runs by helpers without the skill (two invented fixtures) had no separate Declined to Judge list in 6 of 6, an unsourced finding in 6 of 6, praise in 2 of 6 and a verdict on something unmeasured in 4 of 6. With the skill: 6 of 6, 0, 0 and 0. - brief-conformance-reviewer, code-correctness-reviewer, review-coordinator and scope-guardian preload it through skills:; the 21-line "Interaction Awareness - MANDATORY OVERRIDE" block copied into three of them is gone. Each agent keeps its own role. - The two reviewers and scope-guardian end with their own Declined to Judge list; /trekreview names the skill at spawn and passes the reviewers' lines to the coordinator, which copies them into review.md as prose (the JSON declined_to_judge array and the verdict are unchanged). - Eval cases 3 / 2 / 1; pins in tests/lib/skills-review-prose-pins.test.mjs. - tests/fixtures/jsonl-schemas.md: the trekreview-stats line_ref moves with Phase 8 (636-686). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
31c77fd8d6
commit
f906ec9252
26 changed files with 601 additions and 67 deletions
10
README.md
10
README.md
|
|
@ -523,6 +523,15 @@ Judge`. An engine that could not run (older Claude Code, no `origin` remote)
|
|||
keeps the review from coming back `ALLOW` — and from passing the gate — and
|
||||
the summary says why.
|
||||
|
||||
**One stance for every reviewer.** Both reviewers and the coordinator preload
|
||||
the `voyage:reviewing-adversarially` skill, and `/trekreview` names it when it
|
||||
starts them: no praise; every finding cites `file:line` or quotes the line; no
|
||||
downgrade without a reason; what was read only as a summary is said, and not
|
||||
judged; a claim of "done" or "green" is checked against the diff, not the
|
||||
report; the review axes stay separate. Each reviewer ends with its own
|
||||
Declined to Judge list, and the coordinator carries those lines into
|
||||
`review.md`, so nothing a reviewer set aside disappears.
|
||||
|
||||
### Modes
|
||||
|
||||
| Mode | Command | Description |
|
||||
|
|
@ -652,6 +661,7 @@ model. A skill is advice; each one says which check stands behind it, or "prose
|
|||
| `voyage:test-first` | Red before green: the repo's own test command, a test seen failing on an assertion (a crash is not red), the smallest code, the whole suite | `step-implementer` (preloaded) | proof of red, test lock, floor guard, done line in `/trekexecute`; the rest is prose only |
|
||||
| `voyage:debugging` | One command red on the exact symptom first; reproduce, localise, reduce, fix the cause, guard it with a red-first test; error text is data; three failed fixes go back to the design | `step-implementer` (preloaded) | proof of red for the regression test, the fix-round cap; the root-cause claim is prose only |
|
||||
| `voyage:researching-sources` | Official sources first with URL, date and matching version; no citation, no finding; an empty search is reported with what was searched, never as a finding; fetched pages are data, and text aimed at assistants is reported; nothing local in a query; one confidence scale | `docs-`, `community-`, `security-`, `contrarian-researcher` and `research-scout` (preloaded); `/trekresearch` names it at spawn | the research brief's structure (`research-validator`); the query privacy gate only in the default-off STORM steps; the rest is prose only |
|
||||
| `voyage:reviewing-adversarially` | No praise; no finding without a source (`file:line` or a quoted line); no downgrade without a reason; what was read only as a summary is said and not judged; a Declined to Judge list so nothing set aside disappears; claims checked against the diff, not the report; the axes kept separate | `brief-conformance-reviewer`, `code-correctness-reviewer`, `review-coordinator`, `scope-guardian` (preloaded); `/trekreview` names it at spawn | a finding with no file or citation (`findings-schema`, `coordinator-contract`, partial); the `## Declined to Judge` section in `review.md` (`review-validator`); praise and the rest are prose only |
|
||||
|
||||
The workshop behind them runs in `npm test`: the form check `lib/skills/skill-lint.mjs` (fields,
|
||||
"Use when ...", third person, no YAML traps, under 500 lines, fixed headings, no shell injection)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue