★ Corrigendum #1 (2026-09-23、 chat-Claude 3 point feedback Point 1 embed)
Chat-Claude Point 1 明示: 「19 件 を 5 軸 に 層別すると、 各層 は 4 件前後。 この規模で 分かるのは 『scorer が 大きく偏っているかどうか』 だけ で、 『1 軸 で 30-50%』 のような 閾値 を 決める 根拠 には なりません。 19 件 の 割合 には ±20 ポイント程度 の 幅 が 付きます。 humanLabel を 埋めたあと、 その結果から target を 決めるのではなく、 まず 『偏りが 残っているか / 消えたか』 の 判定 だけ に 使う、 と 決めておくのが 安全 です。 target を 数字で 決めるなら 標本 を 足すのが 先 です。」
n=19 で 言える 範囲 (制約 明示):
- ✓ 使える: 「scorer が 大きく 偏っているか どうか」 の binary 判定 (偏り 残 vs 消)
- ✗ 使えない: 「1 軸 で 30-50%」 のような 閾値 target 決定 (±20 pp 幅 で 数字 として 信頼不能)
- ★ Decision rule: humanLabel 埋め後 の 実測 は 偏り 残 vs 消 の binary 判定 のみ に 使用、 target 数字 決定 に 使うなら 標本 追加 が 先 (n=50 / n=100 等 STEP 起票 先行)。
Attribution: [via 藤本さん paste of chat-Claude(cloud) 3 point 2nd batch corrigendum / Point 1 embed: rei-aios-59]
Summary: Chat-Claude corrigendum #1 Point 1 「calibration target を 定義するときは、 閾値の数字を決めるより先に、 人手 で ラベル を 付けた 小 sample (~30 papers) を 作成してください。」 の infrastructure 実装。 私 (Claude) は sample 生成 script + verify script を land、 humanLabel 値 は 藤本さん が 埋める必要あり (labels 自体 を 私 が 生成すると ground truth 意味崩壊、 fm-target-without-ground-truth-baseline 同型 pattern の 自演)。
Implementation
scripts/research-radar/sample-for-ground-truth.ts (~140 line)
- Read:
scores-{date}.json (or latest if no --date)
- Group by heuristic
primaryDfumt (D-FUMT₈ label)
- Stratified sampling: target/labels_present per bucket、 deterministic interval-slice (reproducible across runs)
- Output:
data/research-radar/ground-truth-samples/samples-{date}-n{N}.json with metadata + empty humanLabel + humanReasoning + instructions (D-FUMT₈ 8 value 定義 embed)
Test 実測 (2026-09-22 scores 81 papers):
Stratified sampling: 5 labels present, target ~6 per label (total ≈ 30)
BOTH: 4 available → 4 sampled
FALSE: 2 available → 2 sampled
FLOWING: 55 available → 6 sampled
NEITHER: 1 available → 1 sampled
TRUE: 19 available → 6 sampled
✓ Sampling file written: data/research-radar/ground-truth-samples/samples-2026-09-22-n19.json
19 papers, humanLabel field empty — for 藤本さん to fill.
scripts/research-radar/ground-truth-verify.ts (~120 line)
- Read:
--samples=path/to/samples.json
- Filter
humanLabel filled entries
- Compute: raw agreement (heuristic vs human)、 8×8 confusion matrix (rows=human ground truth, cols=heuristic prediction)、 per-label agreement、 unweighted Cohen's kappa
- Honest scope 明示 in output: 「No calibration target has been set. This report describes the current heuristic against 藤本さん's labels; it does NOT declare improvement.」
Chat-Claude Point 1 遵守 verify
Chat-Claude 明示:
標本 が ないまま target を 「1 axis で 30-50%」 と 決めると、 それも 同じく 根拠 のない 数字。
本 STEP 実装 状態:
- ✅ Sample 実物 land (
data/research-radar/ground-truth-samples/samples-2026-09-22-n19.json)
- ✅ Instructions embed (D-FUMT₈ 8 label 定義)
- ✅ Verification tool land (verify script)
- ❌ humanLabel 値 land せず (私 が 埋めると ground truth 意味崩壊、 藤本さん judgment 待ち)
- ❌ 「1 axis で 30-50%」 target 設定 せず (ground truth 埋まる前 は 根拠なし)
Next candidates (defer marker、 帰宅後 藤本さん judgment 待ち)
- 藤本さん が
samples-2026-09-22-n19.json の humanLabel を 19 papers 分 埋める
npx tsx scripts/research-radar/ground-truth-verify.ts --samples=data/research-radar/ground-truth-samples/samples-2026-09-22-n19.json 実行
- 実測 agreement / kappa / confusion matrix evidence stack で calibration target 設定 判断
Honest scope
- n=19 < 30 (chat-Claude 「~30」): stratified で 5 labels のみ present、 bucket 上限 で 19。 純 30 target なら random sampling で 「FLOWING 20 heavy + 他 10」 になり per-label 評価 不能。 balanced 19 > unbalanced 30 判断 (但し 明示 記録 必要)
- Post-STEP-2206 scorer 上 の sample: scores-2026-09-22.json は
five-layer-v0.3-heuristic-audit-aware (post-STEP-2206 redistribution 済)。 pre-vs-post 比較 は 別 STEP で 「pre-STEP-2206 スコアリング を re-run + 同 papers に 同 humanLabel 適用」 の 2 pass 必要
- Single-labeler: 現状 単一 藤本さん、 inter-annotator κ 不可 (kappa は 「藤本さん vs heuristic」 のみ)。 未来 に chat-Claude or 別 Claude を second labeler 化 candidate
- Deterministic sampling: interval-slice で reproducibility 優先、 統計学的 純粋 な random より 弱い
- Kappa の 使い方 注意: n=19 は 小 sample、 kappa は rough sanity check 用、 benchmark ではない (script 出力 に 明示)