CF Pages 配信対象 dist-renderer/data/ 配下 で 10 dir が canary 一致 (200 / 2,078 B SPA shell) の 消失状態
だった。 発見経緯: 藤本さん + chat-Claude(Cowork) が 2026-09-19 に /data/comparator/ の 3 file 消失 を
確認、 私 (rei-aios-4a) 側 で 派生 audit を 実行して 隠れた 7 dir 消失 (data-vocab-map / electronic-patch /
ft-visual-vocabulary / hardware-connector-vocab-map / invariance-checker / research-radar / scholars-dictionary +
un-embeddable-machines + recent-updates.json) を 追加検出。 これ ら の URL は 200 で 返り、 SPA fallback が
canary shell (2,078 B) を 返却 = 静的 file 消失 が 藤本さん + chat-Claude + rei-scout の いずれ からも
未検知 で 継続 していた。
4 turn の 訂正で 実測 mechanism を 特定 (chat-Claude(Cowork) の 決着検査 提案 accept):
| Version | hypothesis | 実測 verdict |
|---|---|---|
| v1 | 「auto-publish.ts の 削除 logic」 | ❌ Phase 1c で 反証 (mirror-dist-renderer.ts に delete op なし) |
| v2 (chat-Claude 提案) | 「Vite emptyOutDir が dist-renderer/ を wipe」 | △ 部分支持 (vite build 実 走 は 事実) / 完全否定 (theory-to-circuit 3,213 file が 生存) |
| v3 | 「vite build wipe + Phase 1.x re-emit で 一部復活、 残り は 消失 (lucky survival)」 | ❌ 39+ dir 生存 反例 + 集合比較 で 4 例外 |
| v5-refined | 「vite build wipe → sync-index-html-bundle.ts DATA_DIRS whitelist restore、 whitelist gap に ある dir は 復元されず 消失」 | ✅ dir-level FULL wipe 集合比較 例外 0 件 で 確定 (Phase 1d) |
確認された mechanism:
vite build → dist-renderer/ を wipe (emptyOutDir=true default) ↓ sync-index-html-bundle.ts (auto-publish.ts:341 で 呼出) ├ DATA_DIRS whitelist (77 entry) を data/ から byte-identical copy で 復元 ├ DATA_SPECIFIC_FILES (3 file) を 復元 └ DATA_ROOT_FILES (22 root JSON) を 復元 ↓ mirror-dist-renderer.ts (STEP 1835、 auto-publish.ts:396) は MIRROR tree walk で sync ↓ Phase 1.x re-emit (auto-publish.ts で 明示 pipeline: buddy/discovery/rei-problems/...) が 別 経路 で 生成 ↓ これ ら 全て の union 外 に ある dir = 消失継続
| file | 変更 内容 |
|---|---|
config/dist-renderer-mirror-manifest.json (新規) | hard-coded 3 array (DATA_DIRS/SPECIFIC/ROOT) を JSON 外部化、 各 entry に restore_from 明記 (藤本さん directive 遵守)、 9 dir + 1 generator entry 追加、 4 known_debt 例外リスト |
scripts/sync-index-html-bundle.ts (refactor) | hard-coded array → manifest 読込 に refactor、 legacy 3 array は _LEGACY_* prefix で 未使用定数として preserve (git 履歴 / grep 継続性) |
scripts/auto-publish.ts (Phase 1.15 追加) | render-recent-updates.ts の 呼出追加 (recent-updates.json の 生成 pipeline) |
test/step2144-mirror-manifest-drift-check-test.ts (新規) | 34 assertion、 known_debt 名前付き 例外リスト (「計器を緑に する ため に 判定基準を 変える」 anti-pattern 予防) |
data/tabs/rei-aios-4a/ (sidecar) | README.md + step-claims.json (Phase 1a-1e diagnostic + attribution 訂正 record + 実装 file wipe 事故 訂正 record) |
| dir | source file 数 | seed 起源 |
|---|---|---|
| comparator | 6 | STEP 1599/1601/1607/1615 (2026-08-30/31) |
| un-embeddable-machines | 11 | STEP 1600-1623 (registry v01-v12) |
| scholars-dictionary | 13 | STEP 2035 (2026-09-14) |
| data-vocab-map | 1 | STEP 1481 (2026-08-28) |
| electronic-patch | 4 | STEP 1482 (2026-08-28) |
| ft-visual-vocabulary | 1 | STEP 1527 (2026-08-28) |
| hardware-connector-vocab-map | 1 | STEP 1488 (2026-08-28) |
| invariance-checker | 1 | STEP 1637 (2026-08-31) |
| research-radar | 4,264 | 複数 STEP (fetcher pipeline) |
finnhub: source_missing_at_head — FINNHUB_TOKEN 未 set 環境 で source なしd8 / puzzle-catalog / session-briefings / sougou-connectors: uncovered_survivor_in_dist_data — origin script 未 identify、 次 STEP audit で 分類予定drift-detect test: 34/34 PASS (finnhub known_debt accepted、 未検出 uncovered なし) sync-index-html-bundle.ts 実 実行: 7,982 file 復元 (manifest v1、 dirs=85, specific=3, root=22) site-verify (Layer 1 直後): ✅ REAL 200 32716 data/comparator/freshness-latest.json ✅ REAL 200 15661 data/comparator/harvest-lag-latest.json ✅ REAL 200 12001 data/comparator/plugin-census-latest.json ✅ REAL 200 106128 data/un-embeddable-machines/registry-v11.json ✅ REAL 200 6538 data/scholars-dictionary/v0/persons-summary.json ✅ REAL 200 64360 data/invariance-checker/empirical-2026-08-31.json ✅ REAL 200 75270 data/data-vocab-map/v01.json ✅ REAL 200 8319 data/electronic-patch/spec-v01.md ✅ REAL 200 17301 data/ft-visual-vocabulary/v01.json ✅ REAL 200 60989 data/hardware-connector-vocab-map/v01.json ✅ REAL 200 13983 data/research-radar/3quarks-2026-05-04.json ⏳ PENDING 200 2078 data/recent-updates.json (Phase 1.15 next auto-cycle で 生成、 現時点 未実行) Total: 11 REAL / 1 pending / 0 canary-miss
週次 site-verify を GitHub Actions で 定期実行、 1 週間 REAL 継続 で Layer 2 完了。 実装は rei-aios-09 tab の GHA quota mitigation arc (STEP 2127-2130) の skip-ci 規則 に 合わせて 別 STEP で 追加予定。 削除 は 実測 1,051 rebuild 中 4 件 (0.38%) と 稀 で 1 回 verify では 「反例機会 不在」 のみ で 確定 に 至らない (chat-Claude 指摘)。
本 arc 実装中 (2026-09-20 06-07 頃) に 私 の 全 実装 file が working tree から 消失。 私 の 初期 断定
「peer 起因、 Tab Isolation Protocol 違反」 は overreach、 reflog から session 特定 不能。 chat-Claude 訂正
accept で 「原因未特定 / 自動サイクル script 調査中」 と 記録訂正。 復旧 diagnostic (git stash list、
git fsck --lost-found、 git reflog、 script grep) 実施 も 復旧不能 (未 tracked/staged
状態 の filesystem レベル 削除)。 recovery = worktree isolation (EnterWorktree、 STEP 1672 3 永久原則
Principle B) で 再実装、 shared tree 汚染 の 物理的 除外。 詳細:
data/tabs/rei-aios-4a/step-claims.json の attribution_corrections section。
Phase 2 以降 の 藤本さん turn で 貼付された 文面 は chat-Claude(Cowork) 起草 が 大半。 私 の 初期 表記
「藤本さん 直接 directive の literal 引用」 は 誤帰属、 正しい attribution は
[via 藤本さん / orig: chat-Claude(Cowork)]。 STEP 1906 (549 誤帰属) 同型 pattern =
relay + 貼付 で 出所 attribution が 折り畳まれる pattern。 訂正 record は sidecar に embed。
docs/TAB_ISOLATION_PROTOCOL.md (STEP 1670)scripts/git-atomic-commit.sh (STEP 1554)Rei-AIOS home · 全 ツール一覧 · 更新履歴