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

# 06-03 変更履歴の演習 実行記録（Phase 5B-2C2）

- 実行日時: 2026-09-21 00:57 JST
- 実行環境（実測）: macOS 26.6.2 / git version 2.54.0 (Apple Git-157) / sh
- 実行場所: <PROJECT_ROOT>/examples/06-03-change-management
- 記録方法: コマンドを実行し、stdout・stderr・終了コードを整形・省略せずにそのまま記録した。
- 対象: drill.sh（新規）。work/ に使い捨ての Git 置き場を作り、演習用の名前・メールアドレス・日時を固定して実行する。共有先は設定せず、送信は行っていない。

### 1. `sh drill.sh`

```text
$ sh drill.sh
手順0：作業開始。空の置き場を作り、変更前のコードを最初の保存単位として記録する
fec5152 承認可否の判定（変更前）
手順1：分岐（ブランチ）を作る。目的が分かる名前にする
fix-self-approval
手順2：コードを変更する（自己承認を禁止する条件を1行追加。教材上の変更例で、実際のAI出力ではない）
手順3：変更を確認する。まず何が変わったファイルか（status）、次に何行がどう変わったか（diff）
 M approval.js
diff --git a/approval.js b/approval.js
index a3c3e1e..fee9d83 100644
--- a/approval.js
+++ b/approval.js
@@ -1,6 +1,7 @@
 // 教材演習用：承認可否の判定（08-01 で扱う判定をこの記事用に最小にしたもの。架空）。
 function canApprove(state, isSelf) {
   if (state !== "提出済み") return false;
+  if (isSelf) return false;
   return true;
 }
 module.exports = { canApprove };
手順4：保存の対象にする（add）と、理由を添えて保存する（commit）
手順5：保存できたことを確認する。作業中の変更が残っていないこと（status が空）と、履歴に理由が残っていること
（status の出力なし＝保存していない変更は無い）
946a72a 自己承認を禁止する条件を追加（REQ-003）
fec5152 承認可否の判定（変更前）
 approval.js | 1 +
 1 file changed, 1 insertion(+)
手順6：やり直し。履歴を残したまま直前の保存単位を打ち消す（revert）
39ebe6a Revert "自己承認を禁止する条件を追加（REQ-003）"
946a72a 自己承認を禁止する条件を追加（REQ-003）
fec5152 承認可否の判定（変更前）
打ち消し後の approval.js（変更前と同じ内容に戻っている）:
（diff の出力なし＝変更前と同一）
手順7：共有先の確認。この置き場には共有先が設定されていない（remote なし）ので、送信は起きない
（remote の出力なし＝共有先なし）
```

stderr:

```text
Switched to a new branch 'fix-self-approval'
```

終了コード: 0

### 2. 再現性の確認

同じコマンドをもう一度実行し、stdout が1文字も違わないことを diff で確認した（日時を固定しているため、保存単位の識別子 fec5152・946a72a・39ebe6a も同じになる）。
