seek-verdict: Independent Second-Opinion Verification
When NOT to Use
- General code review (use
/codex-review-fast) - Architecture debates (use
/codex-brainstorm) - Nit findings with no dismiss intent (use
[NIT_DEFERRED])
Intent x Severity
| Intent | Purpose | Eligible Severities | Output Token |
|---|---|---|---|
dismiss |
Is this a false positive? | All (P0/P1/P2/Nit) | [DISMISS_VERDICT] |
confirm |
Does this issue actually exist? | All | [SEEK_VERDICT] |
clarify |
What's the actual impact? | All | [SEEK_VERDICT] |
Default intent: dismiss (backward compatible with v1).
Dismiss Authorization
| Severity | Authorization | Gate |
|---|---|---|
| P0 | DISMISS_CANDIDATE |
Human confirmation required |
| P1 | DISMISS_CANDIDATE |
Human confirmation required |
| P2 | DISMISS_VERIFIED |
Automated |
| Nit | DISMISS_VERIFIED |
Automated |
P0/P1 dismiss produces a candidate, not a final authorization. See Policy Mapping for human gate protocol.
3-Phase Protocol
sequenceDiagram
participant C as Claude
participant S as seek-verdict
participant X as Codex (fresh thread)
C->>S: Finding + intent + severity
Note over S: Phase A: Candidate Packaging
S->>S: Extract finding_packet<br/>(no Claude conclusions)
S->>X: Phase B: Blind Independent Verdict
Note over X: Independent research<br/>git status / grep / cat
X-->>S: verdict + confidence + evidence
Note over S: Phase C: Policy Mapping (intent x severity)
alt intent=dismiss + P2/Nit
S-->>C: DISMISS_VERIFIED / FIX_REQUIRED (automated)
else intent=dismiss + P0/P1
S-->>C: DISMISS_CANDIDATE + Need Human (human gate)
else intent=confirm/clarify
S-->>C: [SEEK_VERDICT] informational result
end
Phase A: Candidate Packaging
Extract finding artifact from review output:
| Field | Source |
|---|---|
finding_key |
file + canonical_issue_text |
severity |
<P0 | P1 | P2 | Nit> |
intent |
<dismiss | confirm | clarify> |
original_finding_text |
Codex review original (secrets redacted) |
origin_thread_id |
Review session threadId |
current_head_sha |
git rev-parse HEAD |
relevant_diff |
git diff HEAD -- <file> |
Critical: Record Claude's hypothesis locally. Never send it to Codex.
Phase B: Blind Independent Verdict
Use the prompt template in Verdict Prompt.
| Requirement | Detail |
|---|---|
| Thread | Fresh — dispatch per @skills/codex-code-review/references/codex-transport.md § Start (never reuse a review thread) |
| Anti-anchoring | No Claude conclusions in prompt |
Phase C: Policy Mapping
Apply thresholds from Policy Mapping.
Dismiss intent: graduated thresholds by severity (P0: 0.95/4, P1: 0.90/3, P2: 0.80/2, Nit: 0.70/1).
Confirm intent: ACTIONABLE->CONFIRMED, NON_ACTIONABLE->DISPUTED, low confidence->UNCERTAIN.
Clarify intent: HIGH_IMPACT / LOW_IMPACT / UNCERTAIN.
Output audit trail per Policy Mapping.
Rebuttal
When Phase C maps the verdict to FIX_REQUIRED (raw ACTIONABLE at or above the confidence
floor — FIX_REQUIRED is the mapping's word, never Codex's) and Claude has objective
counter-evidence:
- 1 round max via § Resume (same verdict thread)
- Only objective artifacts (tests, specs, language semantics)
- The rebuttal names Codex's own verdict,
ACTIONABLE, not the mapped result - After rebuttal: map the new answer again — still
FIX_REQUIRED-> fix; ambiguous ->NEED_HUMAN
Anti-Abuse Guard
See Policy Mapping for full rules.
- Dismiss: 3 consecutive
DISMISS_VERIFIED->[DISMISS_PATTERN_WARN]+ heightened thresholds - Confirm/Clarify: per-finding cap (1 confirm + 1 clarify per finding per commit)
- Session end or branch switch resets all counters
Output
Dismiss intent:
[DISMISS_VERDICT] key=<file|canonical_issue> | severity=<P0-Nit> | verdict=<DISMISS_VERIFIED|DISMISS_CANDIDATE|FIX_REQUIRED|NEED_HUMAN> | confidence=<0..1> | codex_thread=<id> | evidence=<brief> | timestamp=<ISO8601> | intent=dismiss | authorization=<automated|human-required|human-confirmed>
Confirm/Clarify intent:
[SEEK_VERDICT] key=<file|canonical_issue> | severity=<P0-Nit> | intent=<confirm|clarify> | verdict=<CONFIRMED|DISPUTED|HIGH_IMPACT|LOW_IMPACT|UNCERTAIN> | confidence=<0..1> | codex_thread=<id> | evidence=<brief> | timestamp=<ISO8601>
Verification
- Intent is valid (
dismiss/confirm/clarify) - Codex prompt contains no Claude conclusions (anti-anchoring)
- Fresh Codex thread used (not review session thread)
- Correct audit trail token output (
[DISMISS_VERDICT]or[SEEK_VERDICT]) - P0/P1 dismiss produces
DISMISS_CANDIDATE+ human gate (never auto-dismiss) - Anti-abuse streak tracked (dismiss) / per-finding cap enforced (confirm/clarify)
References
| File | Purpose |
|---|---|
| Verdict Prompt | Codex blind verification prompt template |
| Policy Mapping | Intent x severity thresholds, audit format, anti-abuse |