# 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 tag `claude-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 共通テンプレート

```text
<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`
- 検証項目:
  1. `bash tests/test-tool-first-onboarding.sh` → PASS（既知 RED の解消確認）
  2. `bash tests/test-hermes-agent-candidate.sh` → PASS
  3. `! grep -qi hermes hosts/registry.json` → 成立
  4. `git diff --name-only <backup_ref>..HEAD` の全ファイルが `git diff --name-only $(git merge-base <backup_ref> <port_sha>)..<port_sha>` の集合に含まれる（想定外ファイル混入 0）
  5. `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`
- 検証項目:
  1. 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（該当行引用）で判定
  2. docs/tool-capability-matrix.md と README/README_ja に Hermes 行（candidate tier）と Grok/Cursor 行（internal-compatible tier）が共存し矛盾表記が無い
  3. CHANGELOG: `awk '/^## \[Unreleased\]/{f=1;next} /^## \[/{f=0} f' CHANGELOG.md` に対し `grep -c '^### Added'` と `'^### Fixed'` が各 1、`^## \[Unreleased\]` の総出現が 1
  4. `bash scripts/plans-format-check.sh` → ok。Plans.md に Phase 113 が存在し `cc:done [fa2b9c37]` 等の hash が保持されている
  5. `bash tests/test-support-claim-wording.sh && bash tests/test-support-claim-wording-selftest.sh && bash tests/test-tool-capability-matrix.sh` → 全 PASS
  6. `git rev-list --count HEAD..origin/main` → 0
- 出力契約: 項目別 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）:

```bash
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`
- 検証項目:
  1. `gh release view v5.1.0 --json assets` → 4 binary assets（darwin-arm64/darwin-amd64/linux-amd64/windows-amd64）
  2. tag 2 本（`claude-code-harness--v5.1.0` と `v5.1.0`）が merged main の commit を指す
  3. `.claude-plugin/marketplace.json` の 2 箇所と VERSION / plugin.json×3 / harness.toml が全て 5.1.0
  4. 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
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 -q` literal / 失敗時 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 ファイルへ追記:
  1. 「同一シンボルを同一セッションで 2 回 grep したら `harness_ast_search` へ切り替える」
  2. 「同型実装が複数 module に並ぶ bugfix は修正前に `harness_ast_search` で全実装検索を必須とする」
  3. 「変更ファイルに `.ts/.tsx` を含む場合のみ `harness_lsp_diagnostics` の新規エラー 0 を DoD とする。harness MCP 未接続または非対象ファイル型は not-configured として満了扱いにし blocking しない」
- 配置: 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.sh` PASS、`bash tests/validate-plugin.sh` 失敗 0、`bash tests/test-claude-upstream-integration.sh` PASS

### 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 への提示記録として保持。実行セッションは貼られた本文に従う）

