v5.1.0 Integration Goal Runbook — Phase 114/115 完遂オーケストレーション
作成: 2026-07-15 / 正本: Plans.md Phase 114/115(本書は実行層。矛盾時は Plans.md 優先) 検証: subagent 4 体(Skeptic/QA・Product/Arch・gate 棚卸し・デグレ red-team)の実測に基づく
1. Goal state(G1–G5、全達成で完遂)
- G1: origin/main が release 内容と一致し v5.1.0 公開済み — semver tag
v5.1.0+ plugin tagclaude-code-harness--v5.1.0+ GitHub Release + 4 binary assets + v5.0.0→v5.1.0 upgrade 実測 PASS - G2: PR #239 が MERGED。最終 main の重複 7 ファイルは port 版内容と一致
- G3: デグレ 0 — AR-1〜AR-16 が各 checkpoint で全 green
- G4: LSP/AST トリガーが skills 5 ファイル +
docs/spec/workflow-review-and-release.mdに配線され v5.1.0 に同梱(operator 指示 2026-07-15 により GO 前に release branch 上で実装)、harness-mem §NNN + XR-Registry 起票済み - G5: 統治トレイル完備 — 112.20/112.21 supersession 記録済(Phase 114 preamble)、squash 裁定 codify、handoff 更新、superseded PR/issue closeout
2. Baseline(2026-07-15 実測値)
| 項目 | 値 |
|---|---|
| release/v5.1.0 HEAD | 98ef50ad(origin/main 8dacf9ec +33 / -0、割り込み commit 0 実測) |
| PR #239 | head f6e7d79f、CLEAN/MERGEABLE、CI 全 green、内部レビュー APPROVE |
| port branch | feat/hermes-candidate-port-v5.1.0 = dff6c585(release HEAD と merge-tree conflict 0 実測) |
| validate-plugin | 合格 120 / 警告 0 / 失敗 0 |
| retired-alias scan | Entries 7 / 0 residue hits |
| plans-format-check | ok / CHANGELOG [Unreleased]: ### Added×1 ### Fixed×1 |
| release-preflight | 24 passed 0 failed(11bc0451 時点、--check-adapters) |
| version 表面 | 6 文字列 / 5 ファイル全て 5.0.0(VERSION, .claude-plugin/plugin.json, .codex-plugin/plugin.json, .cursor-plugin/plugin.json, .claude-plugin/marketplace.json×2, harness.toml) |
3. Anti-Regression matrix(AR-1〜AR-16)
判定は全て機械コマンド。「等値」でなく「床 + 失敗 0」で書く(テスト追加を偽陽性にしない)。
| AR | 判定コマンド | 合格条件 | checkpoint |
|---|---|---|---|
| AR-1 | bash tests/validate-plugin.sh | 失敗=0 かつ 合格>=120 | 114.1/114.3/114.4/114.6/115.2 後 |
| AR-2 | cd go && go test ./... -count=1 | 0 fail | 114.4 / 114.6 |
| AR-3 | bash scripts/ci/check-consistency.sh | exit 0(binary drift 含む) | 各 merge 後 |
| AR-4 | bash scripts/release-preflight.sh --check-adapters | 0 failed。--check-adapters 必須(無しだと約 12 check が無言 skip) | 114.4 / 114.6 |
| AR-5 | git diff dff6c585 HEAD -- <7 files> | 差分が意図分のみ(SA-2 が per-file 判定) | 114.3 後 |
| AR-6 | awk '/^## \[Unreleased\]/\{f=1;next\} /^## \[/\{f=0\} f' CHANGELOG.md | grep -c '^### Added' | ### Added=1 かつ ### Fixed=1 | 114.3 後 |
| AR-7 | bash tests/test-support-claim-wording.sh && bash tests/test-support-claim-wording-selftest.sh | 両方 exit 0 | 114.3 / 115.2 後 |
| AR-8 | ./scripts/sync-skill-mirrors.sh --check && bin/harness mirror verify --json | healthy:true | skills 変更後 |
| AR-9 | scratchpad へ git clone → bash tests/validate-plugin.sh | 失敗 0(gitignore trap 検知) | 114.4(GO 前) |
| AR-10 | bin/harness retired-alias scan | 0 hits | 114.4 / 115.2 |
| AR-11 | 6 version 文字列の grep | GO まで全て 5.0.0 / bump 後全て 5.1.0。変更は ./scripts/sync-version.sh bump のみ(手動 sed/Edit 禁止) | 114.5 まで / 114.6 |
| AR-12 | bash scripts/plans-format-check.sh | ok | Plans.md 変更後 |
| AR-13 | ! grep -qi hermes hosts/registry.json && bash tests/test-hermes-agent-candidate.sh | 両方成立(test は 114.1 の port merge で着地) | 114.1 後 |
| AR-14 | bash scripts/ci/check-i18n-hookhandler-ratchet.sh | exit 0 | 114.4 |
| AR-15 | bash tests/test-guardrails-r01-r13.sh | exit 0(R01-R13 policy engine の名指し再検証) | 114.4 |
| AR-16 | bash scripts/ci/check-branch-alignment-ledger.sh | exit 0(squash 禁止裁定の機械化 — Plans.md hash 台帳 vs ancestry) | 114.2 前後 / 114.6 merge 前 |
補助: bash tests/test-claude-upstream-integration.sh(115.2 で SKILL.md を触るため 114.4/115.2 で実行)、bin/harness doctor(114.4 で 1 回)。
4. Rollback matrix(デグレ保険)
| 段 | 事前保険 | 戻し方 |
|---|---|---|
| 114.1 / 114.3 / 114.5 | merge 直前に git branch backup/pre-<task番号> HEAD | push 前なので可逆。git switch -C release/v5.1.0 backup/pre-<task番号>(git reset --hard は deny 対象のため使わない。切替は operator 承認の上で実行) |
| 114.2(#239 merge) | AR-16 + CI green + APPROVE 確認後にのみ押す | 不可逆(外部送信)。問題時は GitHub 上の Revert PR で前進的に戻す |
| 114.6(tag/Release) | HG-2 単一 GO + claude plugin tag .claude-plugin --dry-run 事前検証 | tag 削除は禁止(versioning.md)。問題時は v5.1.1 hotfix で前進。plugin 環境の rollback は ~/Library/Application Support/CCH-backups/20260713-pre-5.0.0-align |
| 115.x(GO 前) | codex 実装は isolated worktree(fingerprint 比較 + Lead diff review + cherry-pick)。cherry-pick 直前に git branch backup/pre-115 HEAD | cherry-pick 前なら worktree 破棄のみ。cherry-pick 後は git switch -C release/v5.1.0 backup/pre-115(operator 承認の上) |
5. Human gates
- HG-1: 事前確認 4 件の承認 →
.claude/state/plan-preapprovals.jsonにplan-preapproval.v1で記録(114.2 PR merge / 114.6 push・PR・tag・Release・closeout / 115 PR / 115.4 cross-repo write) - HG-2: v5.1.0 単一リリース GO(114.6 直前。従来契約どおり、事前確認では代替しない)
- HG-3(任意・推奨):
.github/workflows/validate-plugin.ymlへbash ./tests/test-hermes-agent-candidate.shとbash ./tests/test-lsp-workflow-wiring.shの 2 行追加。workflows は AI 編集 deny のため operator 手動 patch(red-team 指摘 #1: 新規 test は CI 未配線のまま残る)
6. Subagent fleet — 起動テンプレート + SA 定義(正本)
実行モデルの前提:
- Claude 系 subagent は env
CLAUDE_CODE_SUBAGENT_MODEL=claude-sonnet-5で 全て Sonnet 5 固定(per-call model 指定は効かない)。深さは各 SA 節の検証項目量とスコープで制御 - codex 委譲は
scripts/codex-companion.sh経由のみ。review tier は gpt-5.5/xhigh(正本scripts/model-routing.sh) - 敵対 review の primary verdict(APPROVE|REQUEST_CHANGES)は Lead(brain)が出す。critical 検出時の修正ループは最大 3 回
- 全 Claude 系 SA の起動 prompt は §6.0 の 4 行テンプレートで固定する。指示の正本は本書の各 SA 節であり、起動 prompt に指示本文を複製しない
6.0 spawn prompt 共通テンプレート
<worktree_root>/docs/plans/v5.1.0-integration-runbook.md の「SA-<N>」節を読み、
そこに定義された役割・検証項目・制約に従って実行せよ。
dynamic params: <SA 節の dynamic params 表の値>
出力は同節の「出力契約」に従う。<worktree_root>: 114.x は/private/tmp/cch-release-v5.1.0。115.x は実行 worktree の root(本書は release PR で main に merge 済みのため存在する)- read-only 制約・FAIL 時の挙動も各 SA 節に定義済み。spawn 側で繰り返さない
SA-1 merge-verifier — 114.1(port merge)直後
- 実体:
general-purpose/ Sonnet 5 / effort: medium - 制約: 読み取りとテスト実行のみ。書込・git 状態変更・外部送信は禁止
- dynamic params:
backup_ref(例backup/pre-114.1),port_sha=dff6c585 - 検証項目:
bash tests/test-tool-first-onboarding.sh→ PASS(既知 RED の解消確認)bash tests/test-hermes-agent-candidate.sh→ PASS! grep -qi hermes hosts/registry.json→ 成立git diff --name-only <backup_ref>..HEADの全ファイルがgit diff --name-only $(git merge-base <backup_ref> <port_sha>)..<port_sha>の集合に含まれる(想定外ファイル混入 0)bash tests/validate-plugin.sh→ 失敗 0 かつ 合格>=120
- 出力契約: 項目別 PASS/FAIL + コマンド出力の要点。1 件でも FAIL なら verdict=BROKEN とし
<backup_ref>への rollback を推奨として明記
SA-2 conflict-auditor — 114.3(conflict 解消)直後
- 実体:
general-purpose/ Sonnet 5 / effort: high - 制約: 読み取りとテスト実行のみ
- dynamic params:
port_sha=dff6c585 - 検証項目:
- 7 ファイル各々(Plans.md / README.md / README_ja.md / docs/onboarding/index.md / docs/tool-capability-matrix.md / tests/test-support-claim-wording.sh / tests/test-tool-capability-matrix.sh):
git diff <port_sha> HEAD -- <file>を読み、port 版から乖離した行が「#239 由来の正当な追加(Hermes candidate 行等)」以外に無いこと。1 ファイルずつ CONFIRMED / BROKEN(該当行引用)で判定 - docs/tool-capability-matrix.md と README/README_ja に Hermes 行(candidate tier)と Grok/Cursor 行(internal-compatible tier)が共存し矛盾表記が無い
- CHANGELOG:
awk '/^## \[Unreleased\]/\{f=1;next\} /^## \[/\{f=0\} f' CHANGELOG.mdに対しgrep -c '^### Added'と'^### Fixed'が各 1、^## \[Unreleased\]の総出現が 1 bash scripts/plans-format-check.sh→ ok。Plans.md に Phase 113 が存在しcc:done [fa2b9c37]等の hash が保持されているbash tests/test-support-claim-wording.sh && bash tests/test-support-claim-wording-selftest.sh && bash tests/test-tool-capability-matrix.sh→ 全 PASSgit rev-list --count HEAD..origin/main→ 0
- 7 ファイル各々(Plans.md / README.md / README_ja.md / docs/onboarding/index.md / docs/tool-capability-matrix.md / tests/test-support-claim-wording.sh / tests/test-tool-capability-matrix.sh):
- 出力契約: 項目別 verdict + evidence。BROKEN 1 件以上で全体 verdict=REQUEST_CHANGES
SA-3 fresh-clone-gate — 114.3 後(SA-2 と並列)+ GO 前に再走
- 実体:
general-purpose/ Sonnet 5 / effort: low - 制約: 元 worktree への書込禁止。clone は scratchpad 配下の新規 temp dir、終了後に削除
- dynamic params: なし
- 検証項目: clone 側で (1)
bash tests/validate-plugin.sh(失敗 0 / 合格>=120)、(2)bash tests/test-hermes-agent-candidate.sh、(3)ls docs/research/hermes-agent-candidate.md docs/research/grok-adapter-candidate.md(gitignore trap による欠落なし) - 出力契約: 3 項目の PASS/FAIL。欠落ファイルがあれば
.gitignoreの該当行番号を付す
SA-4 reviewer-security — 114.4(SA-5/6/7 と並列)
- 実体:
claude-code-harness:reviewer/ Sonnet 5 / effort: high / fresh-context - dynamic params:
base_sha(例98ef50ad) - スコープ:
git diff <base_sha>..HEAD全件 - レンズ: (a)
.github/workflows/差分の CI 挙動変化(追加のみか、既存 step の削除・弱体化が無いか)、(b) hooks/permissions/deny 面の変化、(c) secret・credential・トークンの混入、(d) hosts/registry.json と support tier 表記の過大主張 - 判定基準: critical(公開物の安全性・権限を毀損)/ major(gate の弱体化)/ minor
- 出力契約: review-result.v1(verdict: APPROVE | REQUEST_CHANGES、critical_issues[] / major_issues[] / recommendations[]、各 issue に file:line)
SA-5 reviewer-regression — 114.4
- 実体:
claude-code-harness:reviewer/ Sonnet 5 / effort: high / fresh-context - dynamic params:
base_sha - スコープ:
git diff <base_sha>..HEAD全件 - レンズ: (a) 既存テストの削除・弱体化(アサーション減、期待値の緩和)、(b) 本書 AR-1〜AR-16 に対応する gate の現存、(c) tests/ 新規ファイルの
.github/workflows/validate-plugin.yml配線有無(未配線は minor + 明記)、(d) Plans.md の cc: マーカー改変が意図分のみか - 出力契約: review-result.v1(同上)
SA-6 reviewer-spec-claims — 114.4
- 実体:
claude-code-harness:reviewer/ Sonnet 5 / effort: high / fresh-context - dynamic params:
base_sha - スコープ:
git diff <base_sha>..HEAD全件 - レンズ: (a) spec.md / docs/spec/*.md と実装・docs の言行一致、(b) README / README_ja / docs/onboarding / docs/tool-capability-matrix の host tier 主張が test pin と一致(Hermes=candidate、Grok/Cursor=internal-compatible、supported 過大主張ゼロ)、(c) CHANGELOG [Unreleased] と実差分の一致、(d) Phase 114 preamble の supersession 記録(112.12/112.20/112.21)の残存
- 出力契約: review-result.v1(同上)
SA-7 codex-adversarial — 114.4(advisory)
Lead が Bash 実行(gpt-5.5 xhigh):
cd /private/tmp/cch-release-v5.1.0 && bash scripts/codex-companion.sh review --base <base_sha>verdict は advisory。Lead が SA-4/5/6 と合成して brain verdict を出す(critical 0 で APPROVE、修正ループ最大 3 回)。
SA-8 release-smoke-verifier — 114.6(公開)直後
- 実体:
general-purpose/ Sonnet 5 / effort: medium - dynamic params:
version=5.1.0 - 検証項目:
gh release view v5.1.0 --json assets→ 4 binary assets(darwin-arm64/darwin-amd64/linux-amd64/windows-amd64)- tag 2 本(
claude-code-harness--v5.1.0とv5.1.0)が merged main の commit を指す .claude-plugin/marketplace.jsonの 2 箇所と VERSION / plugin.json×3 / harness.toml が全て 5.1.0- Claude Code と Codex で v5.0.0→v5.1.0 update を実行し
bin/harness versionが 5.1.0
- 出力契約: 112.12 DoD (f)(g)(h) 対応の evidence 一覧。FAIL は該当 DoD 記号を明示
SA-9 closeout-scribe — 114.6 後(draft のみ、投稿は Lead)
- 実体:
general-purpose/ Sonnet 5 / effort: low - 作業: #228 / #237 / #231 / #238 の close コメント英文 draft(v5.1.0 の該当 commit/release URL 引用、各 5 行以内、実在確認済みリンクのみ)+ PR #239 への「v5.1.0 に含まれた」追記 draft
- 出力契約: issue/PR 番号ごとの draft 一覧(投稿はしない)
SA-10 codex-impl — 115.1〜115.2(GO 前、release/v5.1.0 上、codex 委譲)
実行位置: 114.3 完了後の release/v5.1.0 HEAD から isolated worktree を切る。Lead が Bash 実行(Lead diff review + git branch backup/pre-115 HEAD → cherry-pick):
bash scripts/codex-companion.sh task --write \
"docs/plans/v5.1.0-integration-runbook.md の「SA-10」節を読み、実装契約どおり TDD 2 commit で実装せよ。完了条件も同節に従う。"実装契約(この節が正本):
- [commit 1 = RED]
tests/test-lsp-workflow-wiring.shを新設。tests/test-claude-upstream-integration.shの形式(set -euo pipefail/ 対象ファイル配列 /grep -qliteral / 失敗時 echo+exit 1)を踏襲し、次の 5 ファイルに下記 literal の存在を pin:skills/harness-work/SKILL.md,skills-codex/harness-work/SKILL.md,skills/harness-review/SKILL.md,skills/breezing/SKILL.md,skills-codex/breezing/SKILL.md。この時点で test は RED(bash 実行ログを commit message に残す) - [commit 2 = GREEN] 5 ファイルへ追記:
- 「同一シンボルを同一セッションで 2 回 grep したら
harness_ast_searchへ切り替える」 - 「同型実装が複数 module に並ぶ bugfix は修正前に
harness_ast_searchで全実装検索を必須とする」 - 「変更ファイルに
.ts/.tsxを含む場合のみharness_lsp_diagnosticsの新規エラー 0 を DoD とする。harness MCP 未接続または非対象ファイル型は not-configured として満了扱いにし blocking しない」
- 「同一シンボルを同一セッションで 2 回 grep したら
- 配置: harness-work は Sprint Contract の runtime_validation 節、harness-review は合格ライン(regression safety)節、breezing は DoD 言及節。
harness_lsp_referencesは使わない(instruction stub のため) docs/spec/workflow-review-and-release.mdに同契約を 2 行追記- 追記 literal は英語で書く(配布既定言語)。上記 1〜3 は意味仕様であり、pin test は実装した英語 literal と同一文字列を検査する
- CHANGELOG.md と Plans.md には触れない(shared-file-discipline Invariant 1。CHANGELOG entry は Lead が cherry-pick 後に追記し AR-6 を維持)
- 完了条件:
bash tests/test-lsp-workflow-wiring.shPASS、bash tests/validate-plugin.sh失敗 0、bash tests/test-claude-upstream-integration.shPASS
SA-11 codex-review-primary — 114.4 の統合レビューに吸収
115 実装が GO 前に release branch へ入る編成のため、LSP delta の正式レビューは 114.4 の統合レビュー(SA-4/5/6 + SA-7、base_sha からの全 delta)が兼ねる。SA-11 の単独実行は不要。cherry-pick 前の Lead diff review は containment 契約として引き続き実施する。verdict 変換が必要な場合は codex-cli-only.md の表(approve→APPROVE / needs-attention→REQUEST_CHANGES)。
SA-12 xr-scribe — 115.4(draft のみ)
- 実体:
general-purpose/ Sonnet 5 / effort: medium - 制約: sibling repo への書込はしない。draft のみ
- 作業: harness-mem 向け Plans.md §NNN エントリの起草。タイトル「harness_lsp_* の実態合わせ — references/definition/hover は instruction stub、diagnostics は .ts/.tsx のみ」。本文に (a) evidence:
mcp-server-go/internal/tools/codeintel.go:170-247(handleLspRefs/Def/Hover が fmt.Sprintf の固定文言、diagnostics は strings.HasSuffix .ts/.tsx のみ)、(b) DoD 案: Go/shell diagnostics 対応 or tool description の実態合わせの二択、(c) claude-code-harness 側は skills 配線のみで実装しない boundary、(d) XR-Registry.md 追加行 draft(owner: harness-mem / impacted: claude-code-harness / trigger: 2026-07-15 LSP 0-usage 調査) - 出力契約: §NNN 本文 draft + XR 行 draft(Lead が承認後に書き込む)
SA-13 completeness-critic — Phase 114 完了時と 115 完了時に各 1 回
- 実体:
general-purpose/ Sonnet 5 / effort: medium - 制約: 読み取り + gh read-only のみ
- 作業: 本書 §1 の G1〜G5 を現在の repo/GitHub 状態と突合し、「evidence が存在しない goal 項目」「実行されなかった AR」「宣言と実態の乖離」を列挙
- 出力契約: goal 項目ごとに DONE(evidence) / MISSING(何が無いか + follow-up task 案 1 行)
7. Fleet 一覧(要約)
| ID | 役割 | 実体 / model / effort | 段 |
|---|---|---|---|
| SA-1 | merge 検証 | general-purpose / Sonnet 5 / med | 114.1 後 |
| SA-2 | conflict 監査 | general-purpose / Sonnet 5 / high | 114.3 後 |
| SA-3 | fresh-clone gate | general-purpose / Sonnet 5 / low | 114.3 後・GO 前 |
| SA-4/5/6 | review 3 視点 | claude-code-harness:reviewer / Sonnet 5 / high | 114.4(並列) |
| SA-7 | 敵対 review | codex-companion review / gpt-5.5 xhigh | 114.4(並列) |
| SA-8 | release smoke | general-purpose / Sonnet 5 / med | 114.6 後 |
| SA-9 | closeout 起草 | general-purpose / Sonnet 5 / low | 114.6 後 |
| SA-10 | 実装(TDD 2 commit) | codex-companion task --write / gpt-5.5 | 115.1-115.2(GO 前) |
| SA-11 | primary review | (114.4 統合レビューに吸収) | — |
| SA-12 | XR 起票起草 | general-purpose / Sonnet 5 / med | 115.4 draft(GO 前提示) |
| SA-13 | 完遂監査 | general-purpose / Sonnet 5 / med | 各 Prompt 末 |
8. Session prompts(operator が新セッションに貼る 2 枚。正本)
実行順(operator 指示 2026-07-15: LSP 同梱でリリース): 114.1 → 114.2 → 114.3 → 115.1〜115.3(LSP、release branch 上)→ 114.4(全 delta 統合レビュー)→ 114.5 → [GO 停止] → 114.6 → 115.4 書込。
- Prompt A = 114.1〜115.3〜114.5 を完走し、SA-12 の XR draft と G1〜G5 状態を提示して GO 待ち停止。貼付が HG-1(事前確認 4 件)の承認行為を兼ねる
- Prompt B = HG-2 GO。114.6(リリース)+ 115.4 書込 + SA-13 完遂監査。貼付が GO と XR draft 承認を兼ねる
(Prompt 本文は operator への提示記録として保持。実行セッションは貼られた本文に従う)