STEP 1585 — Cross-Family Reviewer Wire (Gemini skeleton)
要旨
ARIS auto-review-loop の cross-family reviewer 強制 (Anthropic executor → Codex reviewer、 same-family → REVIEW_UNAVAILABLE) を Rei に軽量移植。 daily-invention-reporter.ts に Gemini API 経路 skeleton wire + Claude/Gemini 統合 logic (agree / disagree / fallback 4 分岐)。 藤本さん budget 判断 (GEMINI_API_KEY set) が blocking condition、 wire 完成状態で API key 追加 で 即動作。
4 分岐 logic
| Case | evaluatedBy | Score | Comment |
|---|---|---|---|
| 両者 valid + agree (scoreDiff<0.2 かつ isNovel 一致) | cross-family-agree | averaged score | Claude+Gemini 一致 |
| 両者 valid + disagree | cross-family-disagree | Claude primary | disagreementReason 明示 (human judgment 必要) |
| Claude fail + Gemini valid | Gemini score + Claude fallback subtype 保持 | Gemini score | surviving side use |
| 両者 fail | Claude fallback preserve (STEP 1572 pattern) | local heuristic | backward compat |
evaluatedBy union 拡張
evaluatedBy:
| 'claude-api' | 'local-heuristic'
| 'local-heuristic-fallback-no-api-key' ← STEP 1572
| 'local-heuristic-fallback-api-http-error' ← STEP 1572
| 'local-heuristic-fallback-api-exception' ← STEP 1572
| 'gemini-second-opinion' ← STEP 1585 new
| 'gemini-fallback-no-api-key' ← STEP 1585 new
| 'gemini-fallback-api-http-error' ← STEP 1585 new
| 'gemini-fallback-api-exception' ← STEP 1585 new
| 'cross-family-agree' ← STEP 1585 new
| 'cross-family-disagree' ← STEP 1585 new
crossFamilyDetail?: {
claudeEvaluation?: {worldSignificance, isNovel, dfumtAlignment, comment}
geminiEvaluation?: {worldSignificance, isNovel, dfumtAlignment, comment}
agreementScore?: number
disagreementReason?: string
}
Test coverage (22/22 PASS)
test/step1585-cross-family-reviewer-wire-test.ts — 7 section:
- Gemini no API key →
gemini-fallback-no-api-key+ ledger - Gemini HTTP 403 →
gemini-fallback-api-http-error+ ledger - Cross-family agree → averaged score + crossFamilyDetail populated
- Cross-family disagree (score diff) → disagreementReason mentions score
- Cross-family disagree (isNovel mismatch) → agreementScore=0
- Claude fail + Gemini valid → gemini-second-opinion + Claude fallback tag 保持
- 両者 fail → Claude fallback preserve (backward compat)
Honest scope
- 藤本さん budget 判断 blocking:
GEMINI_API_KEYenv var set +useCrossFamilyReview: trueconfig 有効化 = 実 動作、 現状 は skeleton wire のみ - Gemini model default =
gemini-1.5-flash-latest(env varGEMINI_MODELで 上書き可) - Endpoint:
https://generativelanguage.googleapis.com/v1beta/models/{model}:generateContent - agree threshold:
scoreDiff < 0.2 && isNovel 一致、agreementScore = novelMatch ? max(0, 1 - scoreDiff/0.5) : 0 - disagree case は Claude primary + reason surface = human judgment 必要 flag (ARIS REVIEW_UNAVAILABLE の Rei 版)
- OpenAI GPT wire は本 STEP scope 外 (別 STEP defer、 藤本さん budget 判断)
- ★ 別 tab rebase collision で 初回 Edit lost → recovery re-apply、 lesson: sub-arc 完了直後 immediate commit 徹底
Related
- STEP 1572 — Eval fallback hardening (前段 arc、 fallback subtype pattern の source)
- STEP 1587 — Integrity forensics 5-pattern spike (ARIS learn-in 姉妹)
src/aios/daily/daily-invention-reporter.ts— 実装 file (+120 行 wire)test/step1585-cross-family-reviewer-wire-test.ts— test