signature-drift-check.ts (arxiv HTML markup drift の early warning) を scripts/research-radar/daily-radar.ts に 週次 slot で 統合。 STEP 2213 Item #6 の refresh-watchlist weekly gate pattern を そのまま 継承。 前 STEP 2217 caller audit で fm-exposed と 判定された 1 件 の 直接 resolve = fm-device-landed-without-caller marker の 2 STEP demonstration cycle 完了。
File: scripts/research-radar/daily-radar.ts (+58 line net)
SIGNATURE_DRIFT_STATE_FILE = data/research-radar/signature-drift-check-last-run.txt、 signatureDriftCheckDue() = 7-day gap check、 fail-open (state 不在 / corrupt → due)。 refreshWatchlistDue() と 1:1 mirror。
runFetcher は execSync = success: true iff exit code 0。 signature-drift-check.ts exit code contract:
| Exit | 意味 | Stamp? | Retry behavior |
|---|---|---|---|
0 | 少なくとも 1 signature match (no drift) | ✓ 記録 | 次 7 日 skip |
1 | Zero signatures match (DRIFT DETECTED) | ✗ | 次 daily-radar で retry (banner 毎日 emit until human fix) |
2 | Fetch error | ✗ | 次 daily-radar で retry (network 復帰 自動) |
stdout grep で 3 pattern 分岐:
/Exit: 1\b|DRIFT DETECTED|not matched by any signature/i → ⚠ SIGNATURE DRIFT (STEP 2220) alert (最高優先度 wording、 arxiv-withdrawal.ts + OFFLINE_FIXTURE 両方 update 指示 embed)/Exit 2\b|fetch failed|treat as unknown/i → fetch error (retry next cycle)daily-radar.ts errors count = 0。 pre-existing inspection-tail.ts errors は 無関係 preserved。
| Case | Expect | Actual |
|---|---|---|
| No state file → due (first run) | true | true ✓ |
| Fresh timestamp (<7d) | false | false ✓ |
| Old timestamp (>7d) | true | true ✓ |
| Corrupt (empty file) | true | true ✓ |
| Corrupt (garbage) | true | true ✓ |
= 5/5 PASS、 fail-open behavior confirmed (state file 損失 = 次 daily-radar で auto retry)。
引き続き exit 0 (no drift、 fixture match) confirmed。 daily-radar 統合 は default combined (offline + live) で 呼ばれる、 offline 単体 test は 統合 の precondition。
本 session 未実行 (arxiv HTTP 実 fetch + 全 fetchers 起動 = 実運用 で verify、 次 cron cycle に 委譲)。 statement of confidence: gate function unit + signature-drift-check standalone verified、 統合 code は refresh-watchlist Item #6 の 1:1 mirror pattern = 追加 emergent risk 低。
| STEP | Signature-drift-check.ts caller | Status |
|---|---|---|
| 2211 (2026-09-23 land) | manual only | — (未 audit) |
| 2217 (2026-09-24 audit) | manual only | fm EXPOSED |
| 2220 (本 STEP) | scripts/research-radar/daily-radar.ts (weekly slot) | registered ✓ |
[via 藤本さん explicit go 「B 続行でお願い致します」 2026-09-24 / execute: rei-aios-2e]