<!-- 公開用の匿名化コピー。原証拠は evidence/ 配下（非公開）。変換規則は evidence_public/CONVERSION_RECORD.md を参照。内容の実行結果は変えていない。 -->

# 11-04 切戻し演習 実行記録（Phase 5B-2C1）

- 実行日時: 2026-09-21 00:19 JST
- 実行環境（実測）: macOS 26.6.2 / Node.js v24.18.0（標準機能のみ、追加パッケージなし）
- 実行場所: <PROJECT_ROOT>/examples/11-04-rollback-handover（配置サンドボックスは ../11-02-deploy-record/deploy_target）
- 記録方法: 各コマンドを順に実行し、stdout・stderr・終了コードを整形・省略せずにそのまま記録した。stderr が空の場合は「stderr: （出力なし）」と記す。
- 対象: rollback.js・run.js（新規）。approval_v0.1.1-broken.js は「新版」という設定の説明用の失敗例。実行前に 11-02 の node run.js で配置を作り直した。

### 1. `node run.js`

```text
$ node run.js
手順0：切戻し前の確認。現在の版 v0.1.0-sandbox、データ 3 件
  コード:
    アプリの健全性（canApprove）: 期待=true 実際=true 判定=一致
    アプリが08-01の正本と同一（sha256）: 期待=true 実際=true 判定=一致
    版の記録: 期待="v0.1.0-sandbox" 実際="v0.1.0-sandbox" 判定=一致
  データ:
    移行データが10-02の出力と同一（sha256）: 期待=true 実際=true 判定=一致
    移行データの件数: 期待=3 実際=3 判定=一致
手順1：現在の版（旧版）を退避する
  v0.1.0-sandbox → releases/v0.1.0-sandbox/approval.js（sha256: 6dc21fe173b6…）
手順2：新版 v0.1.1-sandbox（説明用の失敗例）を配置する。データは触らない
  app/approval.js を差し替え（sha256: c50b61d635ab…）、VERSION=v0.1.1-sandbox
手順3：新版の稼働中に、利用者の操作でデータが1件増えた（想定）
  データ 4 件（REQ-NEW-001 を追加）
手順4：配置後の確認（11-02 と同じ健全性確認）
  コード:
    アプリの健全性（canApprove）: 期待=true 実際=false 判定=不一致
    アプリが08-01の正本と同一（sha256）: 期待=true 実際=false 判定=不一致
    版の記録: 期待="v0.1.0-sandbox" 実際="v0.1.1-sandbox" 判定=不一致
  データ:
    移行データが10-02の出力と同一（sha256）: 期待=true 実際=false 判定=不一致
    移行データの件数: 期待=3 実際=4 判定=不一致
  コードの確認に不一致がある → 止めて、旧版へ切り戻すと判断する（判断者：運用管理者。演習では Claude Code）
手順5：旧版 v0.1.0-sandbox へ切り戻す（コードと版だけ。データは戻さない）
  app/approval.js を戻した（sha256: 6dc21fe173b6…、退避した旧版と同一）、VERSION=v0.1.0-sandbox
手順6：切戻し後の確認
  コード:
    アプリの健全性（canApprove）: 期待=true 実際=true 判定=一致
    アプリが08-01の正本と同一（sha256）: 期待=true 実際=true 判定=一致
    版の記録: 期待="v0.1.0-sandbox" 実際="v0.1.0-sandbox" 判定=一致
  データ:
    移行データが10-02の出力と同一（sha256）: 期待=true 実際=false 判定=不一致
    移行データの件数: 期待=3 実際=4 判定=不一致
  データ 4 件。REQ-NEW-001 は残っている（戻らない変更。扱いは切戻しの判断時に決める）

結論：新版 v0.1.1-sandbox で不一致を検出し、旧版 v0.1.0-sandbox へ切り戻して、コードの確認（3項目）が一致した。データの確認（2項目）は不一致のまま＝コードの切戻しではデータは戻らない。REQ-NEW-001 の扱いは別に決める（12-04 の復元は別の作業）
```

stderr: （出力なし）

終了コード: 0

### 2. 切戻し後の配置ファイル

```text
$ cat ../11-02-deploy-record/deploy_target/VERSION
v0.1.0-sandbox
$ ls releases/v0.1.0-sandbox
approval.js
$ diff ../11-02-deploy-record/deploy_target/app/approval.js ../08-01-minimal-example/approval.js
（出力なし＝同一）
$ grep -c REQ-NEW-001 ../11-02-deploy-record/deploy_target/data/requests.json
1
```

stderr: （出力なし）

終了コード: 0（diff・grep とも）

