STEP 2038 · 2026-09-14 · rei-aios-cd · 404 fix + 4-layer 反映

渡せるもの URL 直リンク — comparator mirror seed + Rei-DFUMT8-Filter zip 404 fix

藤本さん audit「47 URL 中 8 本 404、 fixable は 実機側 の publish + mirror 修正」 → 5/8 修正 (comparator 6 file mirror seed + Rei-DFUMT8-Filter zip 復活)、 3/8 は 内容不明 で defer。 Case 2 rule (STEP 1977) 実 発動 6 回目 (literal 3 vs 実測 6 → 藤本さん explicit 「6 file 全部 seed 推奨」)、 CRLF/LF 発見 (未来 「破損」 誤診断 予防 dataset)、 Failure mode 5 pattern 累積。

結果 (post CF Pages deploy 〜3 分後 実測): 7/7 URL 200 + Content-Type 正 + content-identical (CRLF→LF 正規化 後 md5 6/6 一致 for comparator、 zip binary md5 完全一致 3d368a17...)。 5/8 の 404 が real content 配信 状態 に 回復。

修正済 URL (200 直リンク)

CategoryURLSizeType
comparator (literal 3)/data/comparator/freshness-latest.json31,988 BJSON
comparator (literal 3)/data/comparator/harvest-lag-latest.json15,661 BJSON
comparator (literal 3)/data/comparator/plugin-census-latest.json12,001 BJSON
comparator (Case 2 +3)/data/comparator/basis-audit-latest.json64,456 BJSON
comparator (Case 2 +3)/data/comparator/feed-cadence-latest.json11,090 BJSON
comparator (Case 2 +3)/data/comparator/harvest-lag-v02-latest.json15,661 BJSON
zip/Rei-DFUMT8-Filter-v2.0.0-Cloud.zip8,878 Bapplication/zip

根因分類 (3 clusters)

Cluster 1: comparator mirror seed miss (6 file)

Cluster 2: Rei-DFUMT8-Filter zip .gitignore 除外 (1 file)

Cluster 3: 3 missing page — defer (別 STEP)

Case 2 rule self-apply record (6 回目)

Rule 発動 mechanism: 藤本さん directive literal 「comparator 計器 の JSON が 3 本とも 404 です」 = literal 3。 実測 target data/comparator/ に 6 file 存在 (basis-audit + feed-cadence + freshness + harvest-lag + harvest-lag-v02 + plugin-census)。 land 対象 に dist-renderer/data/comparator/ = 公開面 含む → Case 2 rule 発動

Confirm template 発話 → AskUserQuestion で 2 option 提示:

藤本さん explicit 選択: (b) 6 file 全部 seed → comprehensive land 承認 = Case 2 rule discipline operational 実装 の 6 回目 evidence。

CRLF/LF 発見 (未来 Claude 「破損」 誤診断 予防 dataset)

Symptom: 初 verify で 「local md5 (ff65dc25...) vs live md5 (b845d5a3...) 不一致」 検出、 一瞬 「content 破損?」 誤診断 risk あり。

Diagnosis: .gitattributes に JSON 用 eol 設定 なし + Windows working tree = CRLF (\r\n、 33,019 bytes for freshness)、 git stored = LF (\n、 31,988 bytes)、 CF Pages は LF 版 配信 = git commit 時 の core.autocrlf 由来 の 正規化 (normal 動作)。

Correct verify:

tr -d '\r' < data/comparator/freshness-latest.json | md5sum
# = b845d5a35799569cf8d6495f2e247784 (= live md5)

本 STEP で tr -d '\r' | md5sum による LF 正規化 後 compare pattern を pattern 化、 未来 Claude 同種 verify で 「byte-identical semantic check」 の 標準 workflow として 継承。

Failure mode dataset (5 pattern)

  1. (a) mirror seed 忘却: 「data/ に file 追加 = auto publish」 と 誤解 → mirror script phil (「seed 済 path のみ 同期」) 誤読、 comparator 8 日 stale の 一要因。 Prevention: mirror script docstring 熟読 (STEP 1835)
  2. (b) CF Pages source 誤認: public/dist-renderer/ か 混同、 public/ に file 追加しても deploy されず 「公開したつもりで 未公開」。 Prevention: .github/workflows/* grep で CF Pages source 事前確認
  3. (c) SPA fallback 200 誤 verify: size=2078 = index.html を 「200 = 到達 OK」 と 誤 verify (真の 404 miss)。 Prevention: Content-Type header + size 両方 verify (JSON/zip 判別)
  4. (d) CRLF/LF diff 誤診断: git commit 時 LF 正規化 を 「content 破損」 と 誤診断。 Prevention: tr -d '\r' | md5sum で LF 正規化 後 compare
  5. (e) literal-実測 scope 独断 comprehensive land: 藤本さん literal 3 に 独断 で 6 file land = scope 拡大 判断隠し。 Prevention: Case 2 rule 発動 → AskUserQuestion 待機 (本 STEP で 実践)

Honest scope

本 STEP が 主張しないこと:

Verify commands (再現 用)

# 6 URL 現在 状態
for f in basis-audit feed-cadence freshness harvest-lag harvest-lag-v02 plugin-census; do
  curl -sI "https://rei-aios.pages.dev/data/comparator/$f-latest.json" | head -3
done

# byte-identical verify (LF 正規化 後)
for f in freshness harvest-lag plugin-census; do
  local_md5=$(tr -d '\r' < "data/comparator/$f-latest.json" | md5sum | cut -d' ' -f1)
  live_md5=$(curl -sL "https://rei-aios.pages.dev/data/comparator/$f-latest.json" | md5sum | cut -d' ' -f1)
  [ "$local_md5" = "$live_md5" ] && echo "  OK $f" || echo "  DIFF $f"
done

# zip verify
curl -sI https://rei-aios.pages.dev/Rei-DFUMT8-Filter-v2.0.0-Cloud.zip
# → Content-Length: 8878, Content-Type: application/zip

関連 STEP