chat-Claude 論文レビュー (2026-09-01) の指摘:
論文は Claude Opus 4.8 を 監視役に 使っているが、 検出内容の 67% は 「同一手法の再提出」 で、 これは 提出物のハッシュ照合で 足りる。 残りも 「計器側の定数が 変わったか、 被測定側が 変わったか」 の diff 判定に 落とせる。 むしろこちらのほうが 「判定経路に LLM を 入れない」 という 自分の原則に合う。
上流依存: STEP 1638 hash-chained ledger に kind:"submission" として 各提出を 積む。
本 module は ledger から 読むだけで、 pair 毎に 3 hash (method / sampleSet / gauge) を 比較する。
| # | kind | severity | 条件 | 意味 |
|---|---|---|---|---|
| A | resubmission-variance-farming | critical (score 変) info (score 同) |
同 methodHash + 同 sampleSetHash + 同 gaugeHash + score が 異なる | 「乱数のブレ狙いで 同じものを 再提出」 (paper 67% pattern) |
| B | gauge-tuning-after-fail | critical | 同 methodHash + 同 sampleSetHash + 異 gaugeHash | 「手法を変えず 計器の 定数だけ 弄って 通した」 (arbitrariness-audit review 候補) |
| C | sample-swap-to-hit-target | critical | 同 methodHash + 異 sampleSetHash + 同 gaugeHash | 「手法を変えず 被測定を 差し替えて 通した」 (STEP 1608 candidate F 病理) |
| D | triple-shift | warning | 全 3 hash 異 + 同 submitter + 60 分 window 内 (heuristic、 window は 引数) | 「全部変えて 何かに 通るまで 試した」 疑い、 heuristic なので warning |
| E | hash-format-invalid | critical | hash が sha256:<64 hex> 形式でない |
validation reject、 silent 通過禁止 (STEP 1650 anti-silent-pass invariant) |
| # | 条件 | ふるまい |
|---|---|---|
| 1 | 必須 field 欠落 (submitter / methodHash / sampleSetHash / gaugeHash / timestamp) | SKIPPED として 明示、 silent-drop 禁止 |
| 2 | 空 ledger | OK (no comparisons) + 明示 report、 silent success ではない |
| 3 | 1 entry のみ | no pairs、 count は 明示 report |
| 4 | hash 形式 不正 | REJECT + finding として surface、 silent 通過禁止 |
| 5 | 判定経路に LLM 呼出 | なし (pure hash compare + JSON diff)、 「判定経路 LLM ゼロ」 原則の 直接実装 |
| file | 役割 |
|---|---|
src/aios/checker/cheat-monitor.ts | library core (pure、 no fs、 no LLM) |
scripts/checker/run-cheat-monitor.ts | CLI runner (ledger 読込 + data/checker/cheat-monitor-latest.json 出力) |
test/step1659-cheat-monitor-test.ts | 52 assertion、 11 section |
data/checker/cheat-monitor-latest.json | 実測 output (現状 ledger に submission entry ゼロ) |
$ npm run test:step1659 STEP 1659 tests: 52 passed, 0 failed
11 section: submissionHash (canonical JSON key-order 独立) + validation (required + hash format + score type) + anti-silent-pass (empty / single / non-submission kinds) + Pattern A-D (全 3 hash 組合せ + edge case) + hash-format-invalid finding + non-matching pairs (0 findings) + multi-pair (10 entries × 45 pairs、 4 病理を 同時 detect) + determinism (fixed timestamp で byte-identical output)。
$ npx tsx scripts/checker/run-cheat-monitor.ts cheat-monitor: ledger=present entries=2 submissions=0 pairs=0 skipped=0 findings=0(crit=0/warn=0/info=0) written: data/checker/cheat-monitor-latest.json
ledger 自体は STEP 1638 で bootstrap 済 (genesis + refactor-guard-bound = 2 entries) だが、 「提出」 経路が まだ Rei-stack に 存在しない (submission-hash binding は 本 STEP で 提案のみ、 実 wire は v0.2 以降)。 現状 report は 「監視素子は 稼働中、 監視対象 ゼロ」 の 明示状態。
| # | 素子 | 状態 |
|---|---|---|
| 1 | ヒルクライム機械 (探索器) | 未着手 (提案器なし) |
| 2 | 幾何平均ゲート素子 | STEP 1654 で v0.1 完了 |
| 3 | チート後方監視素子 | 本 STEP で v0.1 完了 |
| 4 | 凍結ミニ論文素子 | STEP 1359 実装済 (rei-preregister v0.1、 external anchor v0.2 defer) |