STEP 1776 で d8_verify payload の 誤 label は 訂正済 (source: 'ts-side-self-check-only' 等)、
但し tool は 依然 allChecksPass: true を 返し続けていた。
「読まれずに 信用される tool の 緑」 が 消えていなかった。
本 STEP で 新 claim cross-impl-drift を 追加、
TS seven-logic vs Verilog dfumt8_alu.v の baked snapshot を 全 136 entry 比較、
80 divergence を 初めて 実測検出、 d8Verify('all') = matchCount: 6/7, allChecksPass: false 固定 で
藤本さん hard constraint 「defer 中も tool が 緑を返さないように」 完全実現。
| 指示 (turn 4-5) | 実装 |
|---|---|
| 差分検出時 match=false 固定 | checkCrossImplDrift() = totalDiffs === 0 の 場合のみ true |
| 「expected 扱い」 禁止 = structural gate | test assert(c.match === false)、 未来 update は 明示 STEP + test 併修正 必須 |
| 差分の 件数と 分類を 出力 | totalDiffs + fourValueSubsetDiffs: 12 (bilattice-order-diagnosed) + eightValueExtensionDiffs: 68 (undiagnosed) |
| tableProvenance 常時出力 + snapshot 明示 | 5 field: bakedFromCommit/bakedFromDumpJson/bakeDate/currentVerilogNotCompared: true/warning |
| Sample 選び方 決め打ち固定 | Sort by (op, a, b) → 4-value 4 + 8-value 6 = 10 deterministic sample、 test で 分類バランス gate |
d8Verify('all'):
allChecksPass: false ← STEP 1776 では true だった (STEP 1778 訂正で 明示)
matchCount: 6/7
checks[6] (cross-impl-drift):
match: false
actual: "80/136 entries differ from baked Verilog snapshot
(12 in 4-value subset [bilattice-order-diagnosed],
68 in 8-value extensions [undiagnosed])"
detail:
totalDiffs: 80
fourValueSubsetDiffs: 12
eightValueExtensionDiffs: 68
sampleDiffs: [ ... 10 deterministic entries ... ]
tableProvenance:
bakedFromCommit: "c0256729e"
currentVerilogNotCompared: true ← 常に true (「照合していない」 明示)
warning: "⚠ This VERILOG_*_TABLE constant is a SNAPSHOT baked
at STEP 1779 from data/verilog/dfumt8_alu.v..."
MCP 経由 consumer が allChecksPass を 単独読みしただけで 緑 が 出ない state。
藤本さん の 「読まれずに信用される tool の 緑」 の 危険が 消失。
実装中に f4 tab の dump_verilog_tables.py line 59-60 で NOT table を
hardcode (seven-logic 一致 shortcut、 「matches Verilog」 コメント付き) している事実を 検出。
実 Verilog line 85-86 は:
DFUMT8_ZERO: not_result = DFUMT8_INFINITY; DFUMT8_INFINITY:not_result = DFUMT8_ZERO;
= ZERO ↔ INFINITY swap (自己双対でなく 極性反転) → STEP 1772 audit の 78 は NOT-side に 2 undercount、 実 total 80。 4-value 12 不変、 8-value 66 → 68。
tableProvenance.step1772AuditDiscrepancyNote field に 恒久記録。
npx tsx test/step1397-d8-fixpoints-verify-test.ts = 194 passed, 0 failed
(STEP 1776 baseline 162 + 追加 32 assertion incl. structural gate 2、 Part 11 の 7 claims 対応 + Part 11b の 24 assertion + Part 12 訂正)
Smoke test: cross-impl-drift 単独 = match=false, 80/136 diffs (12 four-value + 68 eight-value); 'all' = allChecksPass=false, matchCount=6/7 = 藤本さん 「緑を止める」 完全実現
# MCP 経由 (rei-aios v2.8.5+) d8_verify claim="cross-impl-drift" # ローカル test npx tsx test/step1397-d8-fixpoints-verify-test.ts # Smoke test (a6 tab sidecar) npx tsx data/tabs/rei-aios-a6/d8-route-d-audit/scratch/smoke_cross_impl_drift.ts
currentVerilogNotCompared: true)lean4Reference は 静的 metadata)allChecksPass が false 化、 breaking 可能性)c0256729e (78 差分 実測、 f4 dump 依存)c217ab10d (5 項目訂正、 命名保留)8aa84f594 (95、 payload label 訂正、 但し allChecksPass=true 依然)bb7a2cea0 (a6 → 95 dispatch、 独立 converge)ed461a777 (68 diagnosis で 「全 意図的乖離」 と 判定)9ff5eb83a (CI-time bake sync gate、 本 STEP tableProvenance.warning (ii) 実装)