WITHDRAWAL_SIGNATURES (arxiv-withdrawal.ts、 STEP 2208 で shared module 化) が arxiv HTML markup 変更 で silently invalid になった 時 の 検出経路 land。 fm-signature-drift-goes-undetected 対応。
fm-signature-drift-goes-undetected: STEP 2208 shared module 化 は 「1 箇所 update すれば 両 caller 反映」 の structural fix、 但し arxiv 側 が markup 変更 したら 4 signatures 全 miss して silent = fetcher output で 撤回 paper が active 扱い、 STEP 2202 で emerge した fm-radar-withdrawn-paper-not-flagged と 同型 の 再発 risk。 本 STEP は drift detection 経路 を land。
File: scripts/research-radar/signature-drift-check.ts (~110 line)
OFFLINE_FIXTURE const (270-char 代表 arxiv withdrawal markup) に対し detectWithdrawalInHtml() 適用、 少なくとも 1 signature match → OK。 検出 logic 自身 の self-test (fixture と 4 regex の 同期 verify)。arxiv.org/abs/2605.13886 (Niu、 known-withdrawn) を polite User-Agent + 30s timeout + 1-level redirect follow で fetch、 detection 適用。 真 drift surface。0 = at least one signature matches (no drift)1 = zero signatures match (drift detected)2 = fetch error (unknown、 not drift)Offline mode (300ms):
▶ Source: embedded OFFLINE_FIXTURE (270 chars) Signatures tried: 4 ✓ withdrawal signature matched: "paper has been withdrawn by" Verdict: no drift (at least one signature still fires against this fixture).
= detection logic self-test PASS、 embedded fixture と 4 regex の 同期 confirmed。
Live mode: 本 session 未実行 (arxiv HTTP budget 保持)、 STEP 2202 WebFetch verify で 同 markup 存在 confirmed で next 実行 PASS 予測。
未来 arxiv HTML markup 変更 の early warning:
signature-drift-check --live を 統合 (未来 candidate) すれば、 arxiv markup 変更 の day-1 で 検出、 fetch-time + periodic re-check 両方 の silent failure を 予防npx tsx scripts/research-radar/signature-drift-check.ts)、 cron 統合 は 別 STEP deferOFFLINE_FIXTURE const は 実 arxiv HTML の 代表 fragment (hand-crafted from prior WebFetch verify observations)、 arxiv 側 markup 変更 に 自動 追随 しない。 変更 検知時 は WITHDRAWAL_SIGNATURES + OFFLINE_FIXTURE 両 update 必要 (rule: 「offline fixture 変更 は signature 変更 と 一緒 に」)readonly marker で order preserve、 順序変更 は behavior 変更 (最初 match が 変わる)[via 藤本さん explicit go 2nd batch of 6 items sequential #3 / orig: STEP 2208 defer item / execute: rei-aios-59]