2026-09-17 JST · rei-aios-d8 tab · chat-Claude 提案 の race detection script 実行 + Type B miss meta-finding 発見
substr(f[1],6) = 正しい hash extraction) で 全履歴 scan、 結果 5 hit を そのまま STEP 2084 に 追記 (別 arc 起票 なし、 chat-Claude 「1 command で 決着」 明示)。
| commit | UNMENTIONED | 種別 |
|---|---|---|
84c835d44 (2026-09-17) | 2083 | 本件 の race。 唯一 の 明確 な 混入 |
446487ce0 (2026-09-06) | 1831 | Auto: site rebuild = 同一機構 の 古い実例 |
62442d67b (2026-09-04) | 1742 | 同上 |
66ec58604 (2026-09-04) | 1747–1751 | 「STEP 1746-1752」 の 範囲記法 で slug に 個別番号 が 出ないだけ = 偽陽性 |
dad5405bc (2026-09-04) | 1729, 1742 | freeze / archive の 一括 = 正当 |
substr($0,8) で awk 出力 が 1 char shift、 c835d44f8 のような 先頭 2 文字 欠け hash 出力 (__C__ 5 文字 の ため hash は 6 文字目 から、 8 は over-shift)。 v3 で substr(f[1],6) に 修正。
私 STEP 2084 記述 内 v2 hash 転記 check 結果: 0 件 contamination confirmed (site page + notepad + STEP fragment + memory hook + sidecar 全 grep = 16 unique short hashes 抽出、 全 git rev-parse --verify で valid ref confirmed = 私 の Type A script は 直接 git log --format='%H' extract で awk substr issue 経由なし)。
.githooks/pre-push = Type B detection logic embed:
STEP-NNNN / STEP_NNNN / step-NNNN pattern) の 差分 = UNMENTIONEDpublic/, dist-renderer/, docs/, notes/) touched 時 に WARN84c835d44 = ⚠ Type B race candidate: STEP(s) [2083] not mentioned (shared_files=15) 検出。 chat-Claude 5-hit table の 1 位 と exact match。
Chat-Claude 2026-09-17 提案 (STEP 2083 corrigendum land 直後): 「Race audit まず 1 本」 = STEP 2081 が peer STEP 2082 に 巻き込まれた race condition の 過去 遡及 頻度 measure。
Chat-Claude 予測: 「0 件なら 今回が 初回、 複数出るなら 混入 は 常態だった」 (Type A に 該当 = sidecar-crossing race)。
Chat-Claude 提案 script (verbatim):
git log --format='%H %s' | while read c rest; do
n=$(git show --name-only --format='' "$c" \
| grep -o 'data/tabs/rei-aios-[a-z0-9]*' | sort -u | wc -l)
[ "$n" -gt 1 ] && echo "$c tabs=$n $rest"
done
Hit 10 (0.17%)、 全 intentional consolidation:
| # | commit | narrative marker (intentional signal) | classification |
|---|---|---|---|
| 1 | 2e31ff4b9 | 「STEP 1993 arc CLOSE EXECUTED」 | arc close |
| 2 | a4e3e406d | 「★ TAB ISOLATION EXCEPTION OVERRIDE ★ 藤本さん explicit approval」 | explicit exception |
| 3 | 2d1837169 | 「refs + arc chain」 | multi-arc chain |
| 4 | 492c3fd17 | 「refs + arc chain」 | multi-arc chain |
| 5 | 4031eb04e | 「(1)+(4) judgments 順番に」 | batch judgment |
| 6 | 9637dd561 | 「rei-aios-99 Phase D」 | phase batch |
| 7 | 46e76d382 | 「rei-aios-99 Phase C」 | phase batch |
| 8 | 4f767374a | 「rei-aios-99 → rei-aios-87」 | handoff arrow |
| 9 | 4a57fe025 | 「逆参照 補完」 | cross-ref |
| 10 | 047e58489 | 「defect 発見 + ZCE close arc」 | multi-arc close |
Type A conclusion: 5,849 commits scan で 0 件 unintentional race。 「commit の 中身 = author の 作業」 前提 は Type A に関して preserved。 Chat-Claude 予測 「0 件」 counter に 該当 = 「今回 が Type A としての 初回」 の 前提 (但し 今回 の case は Type A ではない = 次 §Ⅲ)。
84c835d44) に 巻き込まれた実 emerge case が この Type B pattern に 該当、 chat-Claude script では hit しない。
Timeline:
120be387e、 sidecar 5 file + shared 4 file)git add -f を shared path files に 実行git commit --only = peer 自分 files list 指定、 但し 私 の staged shared files が 共有 .git/index に present → peer commit tree に 混入84c835d44) で 私 STEP 2083 files carryRace source: 私 の files は shared paths (public/tools/step-2081-*/, docs/notepad/, notes/steps/, docs/SITE_COVERAGE_MAP.md) = sidecar data/tabs/rei-aios-d8/ 変更 なし。 Peer commit は sidecar data/tabs/rei-aios-a6/ 1 tab のみ 触った + shared path files が index に present で 混入。
Chat-Claude script 条件 「2+ tab sidecar 触る」 は sidecar 1 tab のみ で hit しない = Type B miss pattern の 実 emerge 例。
| Type | pattern | chat-Claude script 検出 | 実 emerge case |
|---|---|---|---|
| Type A | 2+ tab sidecar が 同 commit に 混入 | ✓ 可 (「2+ tab sidecar 触る」 heuristic) | 0 件 unintentional (10 hits 全 intentional) |
| Type B | 1 tab の shared-path files が 別 tab の --only commit に 混入 (sidecar 触らず) | ✗ 不可 (script 検出範囲外) | 1 件 (STEP 2083 corrigendum、 今回) |
Sidecar data/tabs/rei-aios-d8/step-2084-race-audit/type-b-detection-script-draft-2026-09-17.sh = 4-factor heuristic (header_tab + body_tabs + shared_files + intent_markers)、 未 execute、 別 STEP で refine 後 execute 予定。
| Pattern | 信頼度 | 根拠 |
|---|---|---|
| Type A (sidecar-crossing) | ✅ 高 | 5,849 commits scan で 0 件 unintentional confirmed、 「commit = author の 作業」 前提 preserved |
| Type B (shared-path race) | ⚠️ 一定 の 不確定性 | 1 件 実 emerge + 遡及 未 measure = Type B script execute 待ち。 影響 scope = 「shared path files 内訳」 のみ (sidecar 内訳 は Type A で preserved) |
過去 STEP land 内訳 (「files changed N (my M + auto-mirror K)」 form) の 影響: sidecar 内訳 は Type A 通過 = 信頼度 高、 shared path 内訳 は Type B 遡及 未 measure = 一定 の 不確定性 embed。 実際 の scope は Type B script 実 execute で 判定 (別 STEP defer)。
| # | fix approach | tradeoff | base STEP |
|---|---|---|---|
| 1 | git stash を 挟む | 簡単 / hook auto-stage (inbox merger + notepad mirror) の stash tree 経由 挙動 未 verify | — |
| 2 | worktree 分離 (STEP 1670 拡張) | Heavyweight / root cause fix / STEP 1658 で 先行実測済 | STEP 1670 Tab Isolation Protocol v0.1 |
| 3 | GIT_INDEX_FILE tab 別 | 軽量 / pre-commit hook の env var honor 対応 未 verify | — |
3 candidate 全 に verify 必要、 「土台 触る 発明」 で 慎重 design、 chat-Claude 追加 briefing 受けて 別 arc で 実行。
STEP 1905 で `--only` を 選んだ 判断 の 土台: 他 tab の staging を 守る = shared .git/index race 対策。
本 audit で 発見: git commit --only は 「only」 を Type A pattern に 対して 保証、 Type B pattern に 対して 部分的 破れ。 shared path files は staged 状態 で 他 tab の --only commit tree に 混入する path が emerge。
未来 discipline candidate:
GIT_INDEX_FILE 分離 で shared index race source 除去 (根本 fix)git stash / worktree 分離 / GIT_INDEX_FILE の verify + 実 implementation、 大規模 arc84c835d44--only 選択 (本 audit で 部分的 破れ 発見)--only 前提 の script、 Type B miss の source)