STEP 1401 — rei-checker-mcp v0.3.0a1

arc pickup v0.3.0a1 landed Date: 2026-08-24 / Repo: fc0web/rei-checker-mcp / Commit: 107a33c

1. 経緯

chat-Claude 2026-08-23 2-turn arc 「Lean 4 sorry-zero 実在 + NEITHER 意味論完成 + 接続 gap」 に対する pending pickup (b) 実行。 5 選択肢中 藤本さん 「(b) rei-checker-mcp v0.3 拡張」 選択。

私 spec §1.3 tension 検出 (「D-FUMT₈ は API surface に 出さない」 invariant vs pending memory 「8値 return」 要求) → 3 択提示 → 藤本さん 「推奨は?」 → 私 Option X (ledger only) 推奨 → 承認 → 実装。

2. Option X = spec §1.3 100% preservation

  1. VerifyResult (MCP response) には d_fumt8 field を 出さない
  2. StatsResult の default output も 変えない (opt-in flag のみ で 表示)
  3. LedgerEntry にのみ d_fumt8 optional field 追加 (backward compat)

3. D-FUMT₈ mapping table

verdict / reason_codeD-FUMT₈根拠
VALIDTRUE (⊤)証明済
INVALIDFALSE (⊥)反証済
UNDECIDED / TIMEOUTNEITHER (〜)chat-Claude 「便りが来ない」
UNDECIDED / PARSE_FAILUREZERO (〇)まだ問われていない
UNDECIDED / UNSUPPORTED_SYNTAXNEITHER (〜)表現不能
UNDECIDED / MISSING_AXIOMNEITHER (〜)前提不足
UNDECIDED / DEPTH_LIMITINFINITY (∞)上限 hit
UNDECIDED / OUT_OF_SCOPENEITHER (〜)対象外
UNDECIDED / UNCLASSIFIEDNEITHER (〜)未分類 (V02_PROTOCOL §6 D11)

Non-emitted (v0.3 scope): BOTH / FLOWING / SELF は 予約 (v0.4+ candidate)。

4. LeanBackend Stage 1 wire

5. test 実測 (105/105 PASS)

test classcountcoverage
TestLeanBackendV038real REPL VALID/INVALID/UNDECIDED × 4 reason + process reuse
TestLeanBackendGracefulDegradation3missing binary + is_available + close idempotent
TestDFumt8Mapping13mapping 9 rules + payload source marker + spec_table 網羅
TestLedgerEntryD8Field3optional default None + JSON omit/include
TestVerifyD8LedgerIntegration3verify() writes d_fumt8 to ledger + spec §1.3 verify()
TestStatsD8Optin3default off + opt-in on + pre-v0.3 rows skip
v0.3 新規小計32
v0.2.0a1 pre-existing73regression 0 breaking
合計105/105 PASS

6. E2E smoke (CLI 実測)

$ export REI_CHECKER_BACKEND=lean
$ python -m rei_checker verify "1 + 1 = 2"
{
  "verdict": "VALID",           ← spec §1.3: d_fumt8 field なし
  "elapsed_ms": 72,
  "checker_version": "rei-checker-mcp/0.3.0a1+lean-repl-d8-2026-08-24"
}

$ cat ledger.jsonl | tail -1
{..., "verdict": "VALID", "d_fumt8": "TRUE"}  ← ledger 側にのみ d_fumt8

$ python -c "from rei_checker.stats import stats; \
    print(stats(include_d_fumt8=True).to_dict())"
{
  ...
  "d_fumt8_breakdown": {"TRUE": 1, "FALSE": 1, "NEITHER": 2}  ← opt-in で 表示
}

7. Rei stack alignment

8. Honest scope (8 条)

  1. Stage 1 semantics のみ = hardcoded truth table、Stage 2 real elaboration は 別 spike
  2. novelty ゼロ = D-FUMT₈ 本体 STEP 406 (2 年以上前) 既存 asset、本 STEP は ledger annotation layer 追加のみ
  3. spec §1.3 preservation = literal preservation で 実装
  4. Timeout hard-kill は best-effort = Windows subprocess.Popen limitation あり
  5. Cold spawn ~150ms、 warm 1.5ms = long-lived MCP server context でのみ 顕在化
  6. pre-v0.3 ledger rows は skip = retroactive inference しない honest scope
  7. spec_table() 9 entries = 現状 mapping 完全網羅、v0.4+ で drift 予防 discipline
  8. SAC-4 47 教訓 Phase 3-18 継続 = write-time STEP number verify (STEP 1400 別タブ landed catch 済)

9. 次 candidate (別 STEP)

10. 関連


STEP 1401 — Rei stack / rei-checker-mcp v0.3.0a1 / 2026-08-24