STEP 1815 — 検査票 v2 実体化 · ReiResearchRadar tail に comparator inspection 追加

land 2026-09-06 · plugin_census v0.1 (STEP 1798) + cms-plugin extension (STEP 1814) を 「毎朝 7 時・v2」 の 器 に 差し込む

この STEP が やること 1 行

ReiResearchRadar (daily 06:30) の tail で data/comparator/*-latest.json 4 本 (source_freshness / harvest_lag v01 / harvest_lag v02 / plugin_census) を 読み、 class-only summary + per-gauge fingerprint を data/research-radar/inspection-{date}.md に 生成、 daily-radar.ts の 出力 に embed。 藤本さん directive 「毎朝 7 時・v2」 は 現行 scheduler に 07:00 daily task が 無かった ため 06:30 の ReiResearchRadar tail に 相乗り。

なぜ fingerprint か — edit と news の 区別

probe / source list を 1 本 増やすと、 class 集計 の 数字 は 動きます。 読者 が それを 「WordPress に 何か起きた」 と 誤読する 事故 は STEP 1814 の 実測 (cms-plugin spread N/A → 1.20× 昇格) で 現に 起こりうる pattern と 確認済 (site page correction block 2 番)。

したがって 検査票 に は **fingerprint 列** を 出します。 定義:

fingerprint = SHA-256(sort(entity_ids).join(",") + "|" + schemaVersion).slice(0, 12)

読み方 (検査票 header に 埋込済)

fingerprintspread読み
前日 と 一致変化world change — probe list 不変 で 数値 が 動いた、 世界 の 変動 として 意味を持つ
前日 と 変化変化edit — probe list / schemaVersion が 動いた、 spread 変動 は 概ね edit 由来、 world change の 読み は 保留
前日 と 一致変化なし静穏
前日 と 変化変化なしgauge の 意味 が 変わった が 数値 は たまたま 動かず、 「意味が変わった 事実」 は 検査票 に 見える

land 時 実測 (2026-09-05 版 の 検査票 = 直近 comparator gauge 出力 に対する 初回 生成)

class-only summary

source_freshness · cron 17/50 fresh (aging 0, stale 0, dead 25, flowing 8) · artifact 22 N/A
harvest_lag_v01  · feeds 1/9 fresh (aging 0, lagging 0, dead 0, notJudged 8) · retention ok=1 fail=8
harvest_lag_v02  · feeds 1/9 fresh (aging 0, lagging 0, dead 0, notJudged 8) · retention ok=1 fail=8
plugin_census    · 8 probes · 3/3 in-scope classes show spread

fingerprint 表

gaugeschemaVersionentitiesfingerprintstatus
source_freshness473c42fb4b3cd4cok
harvest_lag_v0129d0b1955a258bok
harvest_lag_v0229d0b1955a258bok
plugin_census1812e94c1e3d27ok
harvest_lag_v01 と v02 が 同一 fingerprint な理由: 同じ 9 feed id 集合 + 同じ schemaVersion 2。 二つの gauge が 同じ 母集団 を 別 rule で 評価 している 現状 の 確認 として 機能します。 v02 が feed list を 拡張したら fingerprint が 分かれ、 「gauge 分岐 が 意味を持つ 状態 に なった」 と 検査票 で 読めます。

実装

scripts/research-radar/inspection-tail.ts   本体 (~200 行、 4 gauge inspection + fingerprint + markdown 生成)
scripts/research-radar/daily-radar.ts       tail に writeInspectionReport() 呼出 追加
data/research-radar/inspection-{date}.md    出力 (daily 上書き、 過去分 は archive の設計 defer)
test/step1815-inspection-tail-test.ts       35 assertion PASS

実行

# 単体
npm run research-radar:inspection

# 通常経路 (ReiResearchRadar daily 06:30 が tail で 呼出)
npx tsx scripts/research-radar/daily-radar.ts

本 STEP scope 外 (defer)

読み手 discipline (検査票 に も 同文 embed)

rei-aios / research-radar · STEP 1815 · 検査票 v2 実体化 · ReiResearchRadar tail に comparator inspection 追加