STEP 2166 — Tab Isolation Protocol v0.5 (sidecar commit + push through)

Date: 2026-09-21  ·  Repo: fc0web/rei-aios  ·  Commits: 84322a136 (v0.5 initial) + STEP 2169 corrigendum + STEP 2170 refine  ·  Session: rei-aios-04 [6c39e5]

★ Pattern L round 4-5 累計 corrigendum (STEP 2169+2170、 land 後 訂正):

Round 4 (STEP 2169): v0.5 初版 Rule A 「tracked」 は --include-untracked stash に 対する 予防のみ、 通常 stash / autostash は 「tracked かつ modified」 も 対象 = tracked 単独 では immunity にならない

Round 5 (STEP 2170): 「commit まで」 も 不完全、 local commit のみ は git reset --hard / rebase で 消える = 「commit + push まで」 が refine 版。 更に force push は 別 layer 対策必須。

Refine された 規定: 「sidecar は 書いたら commit + push まで 済ませる、 working tree にも local repo にも 止めない」。 e9 が 無傷 だった 正確 な 理由 = tracked かつ 未 commit 差分なし の 両方 (STEP 2169 認識)、 但し stash 経路 のみ の 保護 で reset --hard 経路 は 別 (STEP 2170 認識)。

本 site page は 累計 2 round corrigendum 反映済。 詳細 は docs/TAB_ISOLATION_PROTOCOL.md § v0.5 corrigendum 参照。

起点

藤本さん directive: 「Tab Isolation Protocol v0.2 起工お願いします」 (2026-09-21)。 doc version 系列は既に v0.1→v0.2→v0.3→v0.4 が積み上がっていたため、 「sidecar-tracked 議論全体の起工」 として v0.5 で append。 label 「v0.2」 は 2026-09-21 audit session 内で peer rei-aios-f5 が使った marker と一致 (「v0.2 candidate」)。

直接契機 = STEP 2160 stash 事案 (2026-09-20 peer rei-aios-42 tab pre-rebase git stash push --include-untracked)。 3 tab (04/e9/f5) が影響を受けた audit を経由し、 「tracked file は --include-untracked の対象外 = 構造的安全」 という e9 の実例から v0.5 は成立した。

Chat-Claude 2026-09-21 review round 3 明示 表現 (初期 insight):
「commit の noise は 増えますが、 pathspec は 書き忘れれば 効かない のに 対し、 tracked は 一度 commit すれば 以後 ずっと 効きます。」

Chat-Claude(Cowork) 2026-09-21 4th paste 訂正 (Pattern L round 4、 land 後):
「tracked だけでは immunity になりません。 tracked file でも 手元に 未 commit の 変更があれば、 --include-untracked なしの 素の git stash (autostash 含む) が 持っていきます。 正確な 規定は 『sidecar は 書いたら commit まで 済ませる、 working tree に 置いたままにしない』。」

STEP 2160 stash 事案 audit 結果 (3 tab)

Tabstash@{2}^3 内 の 捕獲 file現状 disk判定
rei-aios-04 (私)step-claims.json 486 bytes (initial in_progress 版)file 有 (1,938 bytes、 4 回 rewrite で 復活)✅ safe (但し 偶然の復活、 protocol 保護 ではない)
rei-aios-e9なしdir 有、 全 file tracked✅ safe (tracked = --include-untracked の対象外 = 構造的安全)
rei-aios-f5rei-server-daemon.bat 656 bytes (promote 前旧版)dir 自体 消失❌ 一時消失 (別 promote 済で 復旧不要 と 判定)

v0.5 追加 protocol: 3 rule (STEP 2169 訂正反映)

Rule A — 初回 write と 同 turn 内 に git add + git commit (commit through)

data/tabs/<self>/ 内 に 新 file を 作成 したら、 その turn で git add + git commit を 済ませる。 「add した だけ で commit していない」 状態 も NG = 通常 stash (autostash 含む) が modified を 持っていく。 唯一 safe な state は clean working tree (untracked=0 かつ modified=0)。

# OK (v0.5 STEP 2170 refine 版 準拠、 commit + push まで)
echo '{...}' > data/tabs/rei-aios-<self>/step-claims.json
git add data/tabs/rei-aios-<self>/step-claims.json
git commit -m "STEP N sidecar init (tab rei-aios-<self>)"
git push origin main
# → clean working tree + push 済、 stash 経路 + reset --hard 経路 両方 に 保護

# NG-1 (v0.5 違反、 「後で まとめて」 pattern)
echo '{...}' > data/tabs/rei-aios-<self>/step-claims.json
# write のみ → peer stash -u 発火で 消失

# NG-2 (STEP 2169 で 新たに 認識、 tracked 単独 では 不十分)
echo '{...}' > data/tabs/rei-aios-<self>/step-claims.json
git add data/tabs/rei-aios-<self>/step-claims.json
# add したが commit していない → 通常 stash / autostash が modified を 持っていく

# NG-3 (STEP 2170 で 新たに 認識、 local commit のみ では 不十分)
git add ... && git commit -m "..."
# push していない → 別 tab の git reset --hard / rebase で local commit も 消える

Safe な state の 層 (STEP 2170 で 明示化):

Rule B — manifest vs scratch 区別 (迷ったら track)

Rule C — pre-commit hook Section 8b (advisory warn、 STEP 2169 で 拡張)

.githooks/pre-commit Section 8b は untracked + modified-tracked 両方 を advisory warn (non-blocking、 grace period):

[pre-commit] Section 8b (v0.5 advisory, STEP 2170 refined): data/tabs/<self>/ に non-clean file: untracked=N / modified=M
  → Tab Isolation Protocol v0.5 (STEP 2169+2170 訂正): sidecar は 書いたら commit + push まで 済ませる
  → stash / autostash に対して は clean working tree が 最も安全 (tracked 単独 は 不十分)
  → 但し 以下 は 別 layer 対策 が 要る (clean working tree は これらに 効かない):
     1. rebase / reset --hard (local committed でも 消える)、 対策 = push 済で reflog / remote 経由 復旧
     2. force push (remote commit 巻き戻る)、 対策 = protected branch / 事前 review
     3. worktree remove (別 branch の 未 merge 変更 消える)、 対策 = merge / push 済 で 分岐点 保護
  → 対応: git add + git commit + git push で working tree から 抜き remote まで 到達
  → 意図的 non-clean (scratch / secret / temp / active WIP) は SKIP_V05_UNTRACKED_WARN=1

Hook logic verified (実測)

REI_TAB_ID自 tab dir 内 untracked挙動
rei-aios-04 (私)0 fileno warn ✓
rei-aios-e8 (pseudo test)1 (ecc-audit/ECC/)would warn with 3 選択肢 (git add / SKIP=1 / .gitignore) ✓

Retroactive 適用 policy

私 (STEP 2166 執行 tab) は peer dir に 触らない (Tab Isolation Protocol v0.1 「自 tab-id 直下 のみ 書込 OK」 原則 + v0.2 継承 write 3 条件 いずれも 未充足)。 各 tab が 自 sidecar の untracked file を 発見 したら 自主的に git add して track に 昇格。 私 が repo root で git add data/tabs/**/* を 実行 する と 全 peer dir に 書き込む = v0.1 違反、 やらない。

現在 evidence: 57 tab 中 1 tab (data/tabs/rei-aios-e8/ecc-audit/ECC/) が v0.5 target pattern 実例、 e8 tab owner 判断待ち。

Honest scope

Label refinement note

藤本さん directive の 「Tab Isolation Protocol v0.2」 = sidecar-tracked 議論 全体 の 起工 と 解釈。 doc version 系列 は v0.1 (STEP 1670)→v0.2 継承 handoff (STEP 1760)→v0.3 correction routing (STEP 1892)→v0.4 auto-cycle (STEP 2158) が 既存、 本 STEP は v0.5 として append。 藤本さん label と doc version の drift を sidecar step-claims.json に record 明示。

変更 file (5 file、 commit 84322a136)

関連 STEP

References

Attribution: [via 藤本さん / orig: STEP 2159 arc 副産物 audit + chat-Claude 2026-09-21 review round 3+4+5 (initial insight → tracked→commit-through → commit+push refine) + chat-Claude(Cowork) 2026-09-21 4th+5th paste Pattern L round 4-5 訂正 + peer rei-aios-f5 SendMessage relay & endorsement + 藤本さん explicit go chain: 「Tab Isolation Protocol v0.2 起工お願いします」 → 「次 judgment」 → 「(a)(b)(d)(e) 1 commit で 反映、 (f) 別 arc」 (2026-09-21)]

Pattern L 累計 5 round 学習 dataset (仮説、 Round 4-5 の 2 事例 のみ): 「対策を 書く場面 が 一番 その 誤り の 出やすい場面」 (chat-Claude paste 明示) は **法則 ではなく 仮説** として 記録、 累積 事例 で 効果 verify 待ち。 STEP 2170 で self-check pattern 「予防 が 効かない 条件 3 個 列挙」 を codify、 protocol document 起草時 の 標準 discipline candidate。 但し **self-check 自身 も Pattern L に かかる 可能性** (「3 個 列挙 で 完全予防」 は 過大主張 emerge candidate) を 認識、 効果 verify も 累積 事例 待ち。