# STEP 2057 — signature-spec v1 canary revision (G2 falsified、 canary method 採用、 STEP 2055 v0-draft 差替)

**Timestamp**: 2026-09-16T00:08 (JST)
**Tab worktree**: main (rei-aios-65)
**Commit**: (to be filled by build)

## 一行 summary

STEP 2055 SIGNATURE_SPEC v0-draft G2 (`byte_count > 2078 × 2`) を chat-Claude 465 page 全 sweep が反証 (3 real page が × 2 threshold 未満)、 canary method (in-invocation 独立 baseline) 採用で G2 = `byte_count != canary_bytes` の 単純非一致に revise、 5 未 決事項 のうち 2 件 (drift monitor + 経路差定数化) を 構造的に close。

## 主要 finding / evidence

- **G2 (v0-draft) falsified**: chat-Claude が 465 page 全 fetch 実測 → real page 最小 = **3,809 B** (`/tools/step-1531-pid-tuning-verdict/`、 実在 page)、 min ratio real/fallback = **1.83** (私 の 4.16 主張 は N=4 selection bias)。 `× 2 = 4,156 B` gate は **3 real page (3,809 / 3,919 / 4,021 B、 pid_tuning / syntax / graph verdict)** を FALLBACK 誤判定。 `× 1.5 = 3,117 B` は 0 本 落ちる。 fallback と byte 一致 する indexed page = **0 / 465**。
- **仮置き定数 の 事後正当化不能 pattern**: `× 2` 閾値 は 「読みの良さ」 由来 で 要件由来 でない、 STEP 1615 `DEFAULT_DECLARED_RETENTION=50` (仮置き定数 が 事後 rationalize 不能) と 同型 の 陥穽。
- **Canary method 構造的優位**: 同一 invocation 内 で 存在しない path (`/tools/__canary-<rand>/`) を fetch して baseline を その場で 実測 → v0-draft 未決事項 #1 (fallback drift monitor) + #3 (経路差定数化) が **消滅** (定数保存不要 + 経路差 同経路同士 相殺)。 D 実測 の LF 系統誤差 (path A vs B/C 1 byte 差、 STEP 2055 D で 実測) は gate に影響しない (memory hook は script 汎用 gotcha として 保持有効)。
- **STEP 1608 候補 F との 明示区別 (必須 documented)**: 候補 F = 被測定対象 の 再スケール → 常に緑 病理。 canary = **独立 別オブジェクト** を baseline → 対象が変化しても canary は不変 = 病理でない。 表面 pattern 類似 で 未来 Claude (私 含) が 同型誤認 する risk あり、 spec 本文に explicit 区別 embed。
- **G1 (fallback signature grep) は self-reference trap あり**: spec を site page 化 する と marker 文字列 引用 で self-FALLBACK 判定 + escape 要 (F3 と 同型 bug)。 notepad fragment 化 で trap 回避 (fragment は site index 対象外 で render context 分離)。

## v1 spec (canary method)

**Preparation**:
```
CANARY_PATH = "/tools/__canary-$(openssl rand -hex 4)/"   # 実 site に 存在しない path
canary_body = curl -sL "${SITE_ROOT}${CANARY_PATH}"
canary_bytes = canary_body | wc -c    # canonical byte count (path B)
canary_sig   = canary_body | grep -c "Rei-AIOS — D-FUMT₈ Eight-Valued Logic Framework"
```

**Judgment per URL**:
```
body = curl -sL "$URL"
bytes = body | wc -c
sig   = body | grep -c "Rei-AIOS — D-FUMT₈ Eight-Valued Logic Framework"

G1 = (sig == 0)                # 一次 gate: content marker 経路非依存
G2 = (bytes != canary_bytes)   # 二次 gate: canary baseline との 非一致 (帯不要)

REAL     ⇔ G1 && G2
FALLBACK ⇔ !G1 || (bytes == canary_bytes)
```

**Ratio (warning、 gate ではない、 降格)**:
- `bytes / canary_bytes` を log 出力、 `< 1.5` で `WARN: possible small real page or near-fallback`、 gate 判定に **含めない**。 実測 min ratio 1.83 の 実 emerge を 監視 目的 のみ。

## Honest scope

- **主張しないこと**: v1 は 「新 real page が canary と 同 byte になる確率」 が 十分小 と 想定するが、 実測 は 「0 / 465 実 site page で collision」 = 現状 statistic であり、 未来 emerge の real page で collision **確率 0 を 保証しない**。 collision 発生時 は sig=0 検知 で REAL 側 判定 emerge するため mis-verify するが、 別 test で fallback path が REAL 誤判定 と なる edge case (fallback content の 一時的 更新で sig 文字列変更 + real と byte 一致) は 認識、 script self-test で fake path FALLBACK verdict return を 常設 CI で 検知。
- **STEP 1608 候補 F との 区別 は spec 本文 embed のみ で 実 pipeline 実装 で は 論理的に別レイヤ**、 実装者 (未来 script 抽出時) が 混同 しない ため の 「表面 pattern 類似 warning」 は 内在化 されていない、 code review 段階 で cite。
- **確認していないこと**: 465 page 実測 は chat-Claude tab 経由、 私 (rei-aios-65) 独立 sweep 未実施 (relay evidence を verbatim 引用、 sample verify のみ 実行済 = STEP 2055 sim/preview/tools-index 3 page で 経路差 実測 + 本 STEP D で fallback path 実測、 464 page 独立 sweep は defer)。
- **前提**: SPA catch-all fallback を 持つ CF Pages 型 site のみ 適用、 静的 404 return する site (Apache/nginx default 404) では G1/G2 不要 で status code 単独 gate で十分。
- **未 決事項 (v0-draft の 5 items のうち)**: #1 fallback drift monitor + #3 経路差定数化 は canary method で 消滅、 #2 G3 title pattern (locale-safe grep) は script 実装時 較正 要 として 残る、 #4 UNKNOWN gate は canary method 下では 「!G1 && bytes==canary_bytes = FALLBACK / !G1 && bytes≠canary_bytes = ambiguous (fallback 文字列 含む real page)」 に 分離 が 必要 だが 実 emerge 未 (陥穽 candidate として 記録)、 #5 redirect follow discipline (curl -sL default) は script 実装時 明示 constant として 残る。

## Failure mode (機械学習用 dataset)

- **What could go wrong 1 (selection bias)**: 「real 最小 8,655 B」 と 4 page sample で 主張 (STEP 2055 spec v0-draft)、 465 page 全 sweep で 3,809 B が 実 emerge = threshold 誤設計。 N が 小さい と min extreme value 過小推定、 「一部 sample で verify」 = 全 population の gate 較正 に 不十分。
- **Prevention 1**: gate 較正 用 の evidence は 全 集合 sweep or 「N が min extreme value を 捉えられる」 統計的正当化 を 要件、 「読みの良さ」 由来 の magic number を gate に 使わない。 canary method は 較正定数 を 消滅させる 構造 で 本 pattern を 根本 予防。
- **What could go wrong 2 (STEP 1608 候補 F 型 誤認)**: canary method を 見た 未来 Claude が 「被測定対象 に合わせて baseline 動く = green-washing」 と 誤認、 spec 撤回。 実 は canary = 独立 別 path で 対象と 無関係 = 病理 は 発生しない。
- **Prevention 2**: spec 本文 に 「STEP 1608 候補 F との 区別」 section を 常設、 「被測定対象 の 再スケール」 vs 「独立 別オブジェクト を baseline」 の 対比 を 明示、 未来 code review 時 cite 保証。
- **What could go wrong 3 (G1 self-reference trap)**: spec を site page 化 で marker 文字列引用 → 自己 FALLBACK 判定、 escape 忘れ (F3 と 同型) で render defect。
- **Prevention 3**: spec は **notepad fragment 形式** で publish、 site page (`public/tools/step-N-*/`) 化 は G1 marker escape が 必須 の 特殊 case で のみ、 default は notepad で trap 回避。
- **Recovery**: G2 canary が 意図せず fail (canary path が 実在 or 同 byte real page emerge) した case は script self-test の fake path FALLBACK verdict CI で 検知、 canary path 更新 or spec re-calibration。

## Chat-Claude 独立 verify 貢献 (attribution)

- 465 page 全 sweep 実測 (real min 3,809 B / min ratio 1.83 / 3 real page × 2 落ち / 0 collision) = chat-Claude tab 経由 (relay 提示)、 私 は verbatim 引用 + STEP 2055 D 実測 (1 byte LF drift) + canary method 論理 引き受け。
- STEP 1608 候補 F との 区別 warning + G1 self-reference trap の 発見 = chat-Claude 独立 emerge、 私 は spec 本文 embed 責務。
- 「(b) notepad fragment」 推奨 = chat-Claude 3 選択肢 (a/b/c) の 独立 verify + reasoning (signal registry 動機 + G1 trap + 5 未 決事項) 受託、 私 認諾 land。

## 詳細参照

- 継承: [[step-2055-f1-signature-verify-and-f3-stray-tag-fix]] (v0-draft 起源、 F1/F3/F4 land) + [[step-1608-candidate-f-withdrawal]] (green-washing 型 撤回 教訓、 canary との 明示区別) + [[step-1615-default-declared-retention-50]] (仮置き定数 事後正当化不能 同型) + [[step-1853-kyakka-engine-abd]] (signature verify discipline 起源) + [[feedback_regex_review_by_actual_execution_not_visual_audit]] (実測 first discipline) + [[step-2055-shell-substitution-strips-trailing-lf]] (canonical 経路 = path B canonical、 memory hook 保持)
- Sidecar spec `data/tabs/rei-aios-65/site-verify-signature-spec/SIGNATURE_SPEC_v0-draft.md` = **superseded by 本 fragment v1**、 sidecar 内 preserve (履歴)
- Pending items 継続 (rei-aios-65 tab 実行不能):
  - STEP 2050 page F2 訂正 (rei-aios-19 帰還 or 藤本さん override)
  - rei-aios.org DNS 到達不能 root-cause (STEP 1908 §8、 別 STEP candidate)
  - `scripts/site-verify-signature.sh` 抽出 land (本 v1 spec を bash function 移植、 別 STEP 2058+ candidate、 藤本さん explicit go 待ち)
  - CF Pages routing 独立 audit (F2 修正版 起点、 別 STEP candidate)
  - 465 page 独立 sweep (chat-Claude relay evidence の 私 側 verify、 defer)
