From d7223d558b6e8608ff2e8386b5544b9dfb1ac004 Mon Sep 17 00:00:00 2001 From: _david Date: Wed, 2 Sep 2026 03:38:27 +0700 Subject: [PATCH] chore(agent-hub): tighten verifier re-run scope, drop stale NORTHSTAR read Synced from agent-hub-init kit (usage audit 2026-09-02): verifier now audits the implementer's evidence note by default instead of independently re-running npm test/npm ci from scratch. Re-run is reserved for suspicious notes, outward-facing/release nodes (this repo already shipped one real production bug via v1.2.0 -> v1.2.1), or project-declared exceptions. Also fixed manifest.yaml reads: NORTHSTAR.md (unused by the recipe) -> doctrine/MEMORY.md (actually used in step 4, was undeclared). Co-Authored-By: Claude Sonnet 5 --- .../haven/workers/verifier/manifest.yaml | 4 ++- .../workers/verifier/recipes/verify_seal.md | 25 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/agent-hub/haven/workers/verifier/manifest.yaml b/agent-hub/haven/workers/verifier/manifest.yaml index 552b430..996f633 100644 --- a/agent-hub/haven/workers/verifier/manifest.yaml +++ b/agent-hub/haven/workers/verifier/manifest.yaml @@ -12,5 +12,7 @@ hard_rules: - EvidenceOnly # never trust inference over real evidence - NeverVerifyOwnWork # never grade a diff you wrote yourself - RatchetOnly # PM status only moves forward, never backward -reads: [evidence/implementer/, haven/diagrams/, NORTHSTAR.md, CLAUDE.md] +reads: [evidence/implementer/, haven/diagrams/, doctrine/MEMORY.md, CLAUDE.md] +# doctrine/MEMORY.md: recipe step 4 needs it to check the note's command. +# No NORTHSTAR.md — recipe never uses it, was dead weight on every spawn. writes: [evidence/verifier/] # and diagram PM status diff --git a/agent-hub/haven/workers/verifier/recipes/verify_seal.md b/agent-hub/haven/workers/verifier/recipes/verify_seal.md index c621605..561f0e9 100644 --- a/agent-hub/haven/workers/verifier/recipes/verify_seal.md +++ b/agent-hub/haven/workers/verifier/recipes/verify_seal.md @@ -10,6 +10,31 @@ fresh subagent dispatched via the Agent tool with no implementation history. +## Re-run scope [cost-driven, added 2026-09-02] +Default: AUDIT the note, don't independently re-run `npm test`/`npm run +build` from scratch (including a fresh `npm ci` in an isolated worktree). +`EvidenceOnly` means "don't substitute reasoning for real evidence" — it +does NOT mean "always regenerate the evidence yourself." If the note's +output is verbatim, not truncated (step 5), the command matches +`doctrine/MEMORY.md` (step 4), and it covers every acceptance criterion +(step 6) → verdict straight off the note, no re-run. + +Only re-run (partial or full) when: +- The note is missing a citation, output looks truncated/hidden, or the + command doesn't match doctrine → REOPEN per steps 4-5 instead — don't + spend an `npm ci` confirming a note that's already broken. +- The node is outward-facing or a `/release` gate (this project has shipped + a real production bug once already, v1.2.0 → v1.2.1 — release nodes are + exactly where the independent-confirmation cost is worth paying). +- `doctrine/domains/PROJECT.md` names this class of change as needing + independent re-run (a per-project call, not the kit default). + +Observed in practice (usage audit 2026-09-02, this hub included): 2 +verifier subagents each re-reading the full doctrine + re-running +build/test cost ~50k tokens apiece with no change to the verdict versus +just auditing the note. Not a bug, but not what `EvidenceOnly` actually +asks for — this section pins the boundary. + ## Steps 1. REFUSE SELF-GRADING FIRST — did I write this diff in this session? (No, by construction — subagent has a fresh context.)