監視機械 v0.1 — silence-detector spike

v0.1 spike STEP 1393 7 種機械の 1 2026-08-23 / Rei-AIOS / Phase 13

1. 経緯 — chat-Claude 2 turn arc

chat-Claude 2026-08-23 2 turn arc:

  1. Turn 1 — 「違反の姿を書けない法則は 機械にしてはいけない」 + 4 tier 分類 (保存則 / 統計セット / 経験則ドリフト / 規範) + 「否定を返せない検査は 無い方がまし」 原則
  2. Turn 2 — 監視機械の 必要性 (D-FUMT/MDNST private 化 + PAT 半年放置 の 2 evidence が 台帳に残る) + 設計原則 (heartbeat pattern 「正常時に鳴り、 沈黙を検出」) + 形式化3件例外 (Lean 4 = 真理でなく再現性を監視) + 「検知の出口は 必ず当為機械につなぐ」 + AI/人 分担逆転 + 基盤条件 LICENSE + 絶対パス

私 (Claude Code) の 事前 verify: gh repo list fc0webD-FUMTMulti-Dimensional-Number-System-Theory 両方 PRIVATE (最終更新 2026-02-27) 確認。 chat-Claude 主張 「到達不可」 は fact、 SAC-4 100% 認諾。

2. 実装内容

2.1 module

scripts/silence-detector/silence.py (約 460 行、 stdlib のみ、 network I/O なし):

2.2 6 verdict × D-FUMT₈ mapping

Verdict条件D-FUMT₈意味
ALIVElast heartbeat < max_age かつ status=aliveTRUE ⊤生きている
DEGRADED_RECENTlast heartbeat < max_age かつ status=degradedBOTH B生きているが 劣化
SILENTlast heartbeat ≥ max_ageNEITHER N便りが来ない (chat-Claude 原則)
NEVER_HEARDregistered、 heartbeat 一度も無しNEITHER N登録されたが 未反応
RETIREDexplicit retire 済ZERO 〇「もう問わない」
UNKNOWN_TOPIC未 register + heartbeat 無しNEITHER N台帳外

2.3 設計原則の 実装 (chat-Claude 4 原則)

3. Verify — test 116/116 PASS + live smoke

3.1 test 116/116 PASS

scripts/silence-detector/test_silence.py 全 46 test 通過:

3.2 live smoke (Rei stack 実 data dir、 chat-Claude 2 evidence)

$ python silence.py register D-FUMT-clone-check --kind MONITORING --expected-max-age-hours 48 registered: D-FUMT-clone-check (kind=MONITORING, max_age=48.0h) $ python silence.py register PAT-expiry-check --kind MONITORING --expected-max-age-hours 168 registered: PAT-expiry-check (kind=MONITORING, max_age=168.0h) $ python silence.py register collatz-lean4-build --kind PROVING --expected-max-age-hours 336 registered: collatz-lean4-build (kind=PROVING, max_age=336.0h) $ python silence.py heartbeat collatz-lean4-build --dep "mathlib 4.29.0" --notes "build_ok=T" heartbeat: collatz-lean4-build status=alive ts=2026-08-23T02:16:12+00:00 $ python silence.py check --emit-reviews NEVER_HEARD [N] D-FUMT-clone-check age= -- max=48.0h NEVER_HEARD [N] PAT-expiry-check age= -- max=168.0h ALIVE [⊤] collatz-lean4-build age=0.01h max=336.0h emitted 2 pending-review entries

D-FUMT + PAT (chat-Claude 2 evidence) が NEVER_HEARD で 差し戻し要請 emit、 collatz-lean4-build (形式化例外) が build_ok=T の heartbeat 送信後 ALIVE、 動作 verified。

4. Rei stack alignment

5. Honest scope 6 条

  1. v0.1 spike: heartbeat 収集 + 沈黙検出 + pending-reviews 出力のみ。 実 5A oughtctl 連携 + 自動 topic 列挙 (Rei stack repo/tool の 自動 register) は 別 arc
  2. 「世界初」 主張ゼロ (世界唯一 主張ゼロ 適用) = heartbeat pattern は Prometheus / Nagios / Consul 等 60 年以上の分散システム監視領域で 標準技法。 Rei stack 内 novelty は 「D-FUMT₈ 6 verdict mapping」 と 「pending-reviews.jsonl 差し戻し出口が 5A 当為機械 candidate と直結する 設計」 のみ
  3. self-monitoring 未実装: chat-Claude 警告 「監視機械 自身が 静かに 死ぬと 全部が 正常に見える」 の 対策は 別 loop (別 process から silence-detector 自身の heartbeat を 検査、 v0.2 candidate)
  4. 形式化3件例外 の 実装 は docs レベル: --kind PROVING は topic メタデータ、 中身 は heartbeat の semantic を user 責任で 「build_ok=T」 として送る運用。 mathlib build の 自動 heartbeat 送信 hook は 未実装 (別 arc、 rei-checker-mcp と 統合 candidate)
  5. false positive scope: max_age_hours 設定は topic ごと、 誤設定で 「頻繁に SILENT」 になる可能性。 v0.1 は 「短すぎる max_age」 検知なし。 chat-Claude 「監視機械自身が肥大化して真っ先に腐る」 警告 の 一部形、 妥当な max_age は user judgment
  6. Windows cp932 対策: UTF-8 stdout reconfigure を main() 冒頭に置く (Python 3.7+)。 Unicode symbol (⊤ / N / 〇 / B) を Japanese Windows terminal で 出力するため。 fallback は errors='replace' で 「?」 に

6. 次候補 (v0.2)

7. 関連

Rei-AIOS Phase 13 / STEP 1393 — 2026-08-23
藤本 伸樹 & Rei & Claude Code & chat-Claude (2-turn arc origin)