Агент sonnet

Peer Reviewer

Adversarial-ревьюер субагент для /dr-verify Layer 2/3 cross-Claude-family fallback. Ревьюит PRD/plan/code в чистом изолированном контексте. Findings-only, read-only tools.

Обзор

Peer Reviewer — это cross-Claude-family fallback субагент, используемый /dr-verify Layer 2 когда внешний провайдер (DeepSeek, Moonshot, OpenRouter) не сконфигурирован. Запускается как Claude Code субагент на model: sonnet в свежем изолированном контексте — без upstream conversation history, которая могла бы спровоцировать self-agreement bias — и выдаёт структурированные JSONL findings по канонической схеме из skills/self-verification.md § Findings Schema.

Зачем нужен

Layer 2 трёхуровневой verification pipeline наиболее эффективен, когда ревьюер — это другой model checkpoint, чем тот, что производил артефакт. Сильнейшая mitigation — cross-vendor (другая компания, другой training run, другой RLHF). Cross-Claude-family — Sonnet ревьюит вывод Opus, или наоборот — это средний tier: разные model checkpoints с разными post-training runs, изолированный subagent context, не требуется per-user external API key (покрывается Claude subscription). Это default fallback когда chain steps #1–#4 не отдают провайдера.

Когда используется

Активируется через dev-tools/resolve-peer-provider.sh на chain step #5 — то есть когда:

  • CLI флаг --peer-provider не установлен, И
  • В ./datarim/config.yaml нет peer_review.provider, И
  • В ~/.config/datarim/config.yaml нет peer_review.provider, И
  • В ~/.config/coworker/profiles.yaml у профиля code нет recommended_provider, И
  • Runtime — Claude Code (Codex CLI degraded mode пропускает этот step и проваливается на step #6 same-model isolated).

Output Schema

Findings помечаются:

  • source_layer: "peer_review"
  • peer_review_provider: "sonnet"
  • peer_review_mode: "cross_claude_family"
  • peer_review_provider_source_layer: "fallback_subagent"

Ревьюер соблюдает JSONL emission discipline: эмитятся только defects или incorrect-premise findings; никогда не эмитятся PASS-as-finding записи (например {"check_name": "F001 cleared, no finding"}). Подтверждения прошедших claim'ов сжимаются в final-line summary {cleared_iter1: [...], total_new_findings: N}.

Tools

Read-only by design: Read, Grep, Glob. Не может редактировать файлы, писать коммиты или выполнять произвольный shell. Subagent ID и findings сохраняются в audit log datarim/qa/verify-{TASK-ID}-{stage}-{iter}.md для trace.

Adversarial Frame

Получает тот же canonical adversarial prompt template, что и cross-vendor провайдеры (см. skills/self-verification.md § Single-Prompt Loop Mechanics) дословно. Prompt инструктирует ревьюера искать слабости, а не одобрять документ — минимум 2 существенных concern'а ИЛИ явное grep-evidence, обосновывающее ноль findings.

Ограничения и эмпирический статус

Cross-Claude-family — это first measured tier: эмпирическая bias delta vs same-model self-critique находится под наблюдением в активном dogfood window (через dev-tools/measure-prospective-rate.sh с --mode cross_claude_family). Гипотеза — разный post-training достаточен, чтобы разорвать self-agreement loop без пересечения вендоров — правдоподобна, но ещё не валидирована at scale. Когда есть external API budget, предпочитайте cross-vendor (DeepSeek по умолчанию, ~14× дешевле Sonnet на output tokens).

Skills Used

self-verification (canonical findings schema + JSONL discipline), datarim-system (path resolution, audit log location).