MMR-Bench v1.0
同一格,三份讀數。
MMR-Bench 同時比對「檔案裡存著的值」、「限界求值器算出的值」與「一個獨立引擎算出的值」,然後把它究竟看到了什麼原封不動簽下去。引擎之間意見不一致,永遠不構成改寫你公式的授權。
儲存格
Budget!D14
公式
=SUM(D2:D13)
K檔內快取
1,284.50
Excel 上一次寫進檔案裡的值
MMMR 求值器
1,284.50
以 AST 白名單限界重算的結果
E外部引擎
1,284.50
獨立的 Python 引擎,它不是 Excel
three_way_agreement
授權
無需動作,快取本來就一致。
永不
改寫公式
九種判讀類別中的六種,附上實算數值。2^3 那個案例是 v0.9 真實踩到的缺陷 —— 舊的 MMR 求值器把 Excel 的 ^ 讀成 Python 的 XOR。1904 那個是外部引擎固定差 1,462 天的日期系統落差。實測夾具結果在實驗結果頁。
它從哪裡開始
MMR-Bench 一開始要測的是一個表徵問題:矩陣中的位置、方向、顯示結構、公式相依與語意角色,應該被一起表徵,還是攤平成一條線性序列?九個版本之後,活下來的問題變得更窄、也更實際 —— 一次試算表稽核,究竟能證明關於它自己的什麼?
v1.0 用一種可重播的形式回答了這件事:一份簽署過的憑證,同時記下證據、決策,以及這兩者的邊界。
v1.0 新增了什麼
- 以 Python AST 白名單為基礎的安全限界公式求值器。
- 與 Excel 相容的
^次方語意。 - Excel 風格的
ROUND,採「四捨五入且遠離零」行為。 - 在 MMR 求值器中明確處理 1900 / 1904 兩套日期系統。
- 三來源證據:OOXML 快取、MMR 求值器,以及一個獨立的
formulas引擎。 - 以 Ed25519 簽署的計算憑證。
- 正規化負載雜湊
MMR-CJ-1。 - XLSX 來源雜湊綁定。
- 對正規化紀錄、公式證據與安全決策三者的重播驗證。
- 竄改拒絕與錯誤來源拒絕。
- 引擎意見不一致所授權的公式寫入次數為零。
已驗證的結果
以下每一行都是 v1.0 全量回歸實跑出來的計數。
| 試驗 | 結果 |
|---|---|
| 完整歷史回歸 | 69 項測試通過 |
| 輸入突變試驗 | 30 / 30 MMR 與外部引擎一致 |
| 次方運算試驗 | 20 / 20 三方一致 |
ROUND 試驗 | 20 / 20 三方一致 |
| 1904 日期試驗 | 20 / 20 偵測到外部引擎落差 |
| 已簽署的範例憑證 | 4 / 4 簽章驗證通過 |
| 已簽署的範例憑證 | 4 / 4 完全重播通過 |
| 遭竄改的負載 | 10 / 10 全數拒絕 |
| 錯誤的 XLSX 來源 | 10 / 10 全數拒絕 |
| 憑證所授權的公式寫入 | 0 |
這些數字涵蓋的範圍
這是在真實 XLSX 封包中放入合成商業內容所得到的結果。封包本身是貨真價實的 OOXML,內容則是生成的。
不足以證明
在任意企業活頁簿上的正確率,也不等於完整的 Microsoft Excel 相容性。
怎麼跑
基準測試直接從倉庫執行。憑證的建立與檢查都走同一支 CLI。
bash
python -m pip install -r requirements.txt
./run_v10.sh先產生一組簽署金鑰。私鑰留在你自己手上 —— 釋出版本不附任何範例私鑰。
bash
python -m mmr_bench.certificate_cli_v10 keygen \
--private-key private.pem \
--public-key public.pem簽署一次活頁簿稽核、驗證憑證,然後拿原始檔重播一次。
bash
python -m mmr_bench.certificate_cli_v10 create workbook.xlsx \
--private-key private.pem \
--output workbook.mmr-cert.json
python -m mmr_bench.certificate_cli_v10 verify workbook.mmr-cert.json
python -m mmr_bench.certificate_cli_v10 replay \
workbook.mmr-cert.json workbook.xlsx研究性釋出。未給予任何一般性的生產環境寫入授權。