交付屬實。
增益未證。
對 Codex 交付的 22db0d7 增益實驗包(Vacant DOWNLOAD_ALL)所做的逐項獨立驗證:
完整性、測試、量具、真模型資料、敘述與實物的一致性。
所有「通過」都是我在本機與 VM 上實際重跑的結果;沒有重跑的,逐條標明。
判決摘要
一句話:這個包值得收——它修的是真 bug、自我宣稱克制;但對話敘述有四項超出實際交付,且「Vacant 有增益」依 SPEC_GAIN 自己的判準仍不成立。
- EvalPlus 官方輸入反序列化——真 bug,不修的話 canonical 會掛在自己的測試上
- sandbox 記憶體上限、非有限浮點 wire 編碼、regex/set 等價 oracle
infra_void分類:基礎設施壞掉不再被算成候選答錯- 評審 FAIL 必須附可執行反例,系統真的在沙箱裡跑過才計票
- reviser 不得把已通過的答案改壞(選擇規則有測試釘住)
- v8r 的負面結果誠實落盤——沒有只挑有利的留
- 不能說「增益已證明」——v8r 的 ON 沒有提高正確交付率(0.833 對 0.833),OFF5 還缺 7 題
- 不能說「deadline quorum/五呼叫重配/corpus 13-4-9」——不在交付物內
- 不能說「OFF5 已不再是安全漏洞」——交付的程式碼裡它仍用裸 subprocess 跑模型碼(我已在分支上修好)
- n=6 smoke 三臂全對 6/6——題太簡單,量不到差異,只能證明機制可運作
驗證時間線
從拿到包裹到落地融合的完整順序。每個節點都對應一條可複查的指令或檔案。
f72aa6e(base b4e350d),targeted pytest 在 py3.13 達 120s 硬 timeout,誠實保留 log。unzip -t 無 CRC 錯誤;bundle clone+fsck --full 通過;8 個改動檔與 delivery changed/ 逐位元相同。test_gain_runner 16 passed;全套(扣掉 mcp 2.0 環境問題)550 passed/1 skipped。--arms probe --probe-sample 0,371 題:canonical 371/371 通過、壞樁 371/371 被擋。零模型呼叫。claude/fuse-gain-verified-20260820;本機 HEAD 的展件工作與 patch 八檔零重疊,git apply 乾淨套上;全套 562 passed → commit 416b973。run_complete=true 且 equal_budget_comparison_valid=true——runner 歷史上第一次。總成本約 $0.58。checks.py 新增 run_python_capture,OFF5 行為簽名改走受限 worker;新增 3 個釘住測試;全套 565 passed → commit 5b256d7。VM Linux 重點檔 64 passed/1 skipped。ops/gain/VERIFICATION_2026-08-20.md、smoke summary 進版控;原始 JSONL 留磁碟(鐵律 3)。金鑰掃描:repo 零殘留。交付完整性
信任之前先驗貨。四道手續全部通過;最關鍵的是第 4 道——交付敘述中的八個改動檔,與 git 歷史裡的內容逐位元相同,沒有「history 一套、交貨一套」。
shasum -c SHA256SUMS.txt 全數 OKunzip -t 無錯誤b4e350d(既有歷史)→ f72aa6e(bundle HEAD)→ 八個改動檔(位元一致)→ 本機 416b973(融合)→ 5b256d7(OFF5 修正+smoke)。12 項 SHA-256 逐條列出(全部實測 OK)
| 檔案 | SHA-256 | 結果 |
|---|
MbppPlus-v0.2.0.jsonl.gz,其 SHA-256 與 codebench.py 釘死值 af43697e… 一致——題庫本體也沒有被動過。測試證據
三個環境、五輪實跑。交付自述「targeted pytest 在 py3.13 達 120s 硬 timeout」——我這邊同檔 6 秒跑完;無從考證原因,但測試本身是真過的。
mcp.server.fastmcp 匯入路徑),非改動回歸;本 repo 舊版 mcp 下全過。| 環境 | Python | 範圍 | 結果 | 耗時 |
|---|---|---|---|---|
| bundle clone(乾淨 venv) | 3.13.1 | test_gain_runner.py | 16 passed | 5.95s |
| bundle clone | 3.13.1 | 全套(--ignore mcp) | 550 passed, 1 skipped | 424s |
| 本 repo 融合後 | 3.12.10 | 全套(含 mcp) | 562 passed | 552s |
| + OFF5 修正 | 3.12.10 | 全套 | 565 passed | 576s |
| VM Linux(100.87.54.102) | 3.12.3 | gain+checks+evalplus | 64 passed, 1 skipped | 5.13s |
跳過的 1 項=EvalPlus 官方包整合門(官方包只在本機與既有 VM 環境),屬預期行為。
量具 371/371——先答已知答案
SPEC_GAIN §5.2:量具必須先在已知答案上兩個方向都判對,「量到 0」才不等於「線沒接上」。交付宣稱 VM 上 371/371;我在本機用零模型呼叫獨立重現了同一個數字。
7 題排除清單與理由(pinned in GAIN_EVALPLUS_RESOURCE_EXCLUSIONS)
| Task ID | 排除理由 |
|---|---|
| Mbpp/255 | combinations_with_replacement 輸出爆炸 |
| Mbpp/271 | 巨大整數冪的極端線性迭代 |
| Mbpp/392 | O(n) 建表超出沙箱 envelope |
| Mbpp/599 | 上看 1 億次 Python 層加法 |
| Mbpp/603 | 二次方 list-removal 篩法 |
| Mbpp/630 | 指數級座標物化 |
| Mbpp/644 | 極端 list 物化超出記憶體 envelope |
三臂機制——等預算是誠實的分水嶺
ON 比 OFF 好幾乎必然(多花五倍呼叫)。要答的是:等預算下,Vacant 打不打得贏最土的 self-consistency。以下是交付版 runner 的實際結構(與程式碼逐行核對過)。
stayed)。稽核是確定性抽樣(sha256 < 20%),信譽只吃真的抽樣結果。VERDICT: PASS | FAIL ← 第一行,malformed 不計票 CONCERN: <一個問題 | none> TEST_ARGS: <python literal list> ← FAIL 必填 EXPECTED: <python literal>
系統對 FAIL 的反例做三道關卡:ast.literal_eval 解析(永不執行評審文字)→ 公開 input contract 域內檢查(域外指控不算反例)→ 受限 worker 實際執行。三關都過才算「機器確認的反例」。
# 第五次呼叫存在,但不得頂掉已過審的答案 if passed_review and initial_visible_ok: code = initial_code # 評審過了,reviser 只是記錄 elif revised_visible_ok: code = revised_code # 真的修好了才換 elif initial_visible_ok: code = initial_code # 改壞了,退回初稿
transition 逐題記成 improved/harmed/stayed_*——「為了顯示有修復而換答案」這條路被測試封死(test_unfounded_fail_reviews_cannot_trigger_rewrite、test_majority_approved_initial_cannot_be_harmed_by_fifth_call)。
真模型證據——三輪,三種命運
交付附了兩輪真跑(一輪不完整、一輪中止),我補了第三輪——runner 歷史上第一次完整三臂。數字全部與落盤的 JSONL 逐項核對一致。
| grounded reviewer accuracy | 0.806 |
| raw reviewer accuracy | 0.667 |
| FAIL 指控 | 14 |
| 機器確認的反例 | 1 |
| 確認反例對 hidden truth 的精度 | 0.0 |
14 個指控只有 1 個能被執行確認,而那 1 個指的還不是真錯——「純文字批評不計票」在真實資料上證明是必要的。
| OFF 呼叫 p50 | 7.1s(max 18.2s) |
| ON review p50 / max | 2.1s / 28.1s |
| OFF5 max | 126.8s(長尾) |
| ON 成本(market) | $0.0969 |
| OFF 成本(market) | $0.0125 |
| ON / OFF 成本比 | 7.8× |
equal_budget_comparison_valid=false,部分臂比例明確標示不得用於比較。ON 臂 18 張評審票中出現 2 個 FAIL 指控,機器確認 0 個 → 全部正確忽略,沒有觸發不必要的修訂;6 題 transition 全為 stayed_correct,harmed 為 0。可執行反例這道閘門在真實端點上擋下了幻覺指控。
| gen p50 / max | 8.2s / 65.3s |
| review p50 / max | 11.7s / 65.9s |
| revise p50 | 10.0s |
| failed attempts(重試後成功) | 2 |
敘述落差——四項宣稱不在交付物內
對話最後那篇「最終交付已完成」描述的是另一個更大的 v2 包(當時下載全數失敗)。實際能下載、能驗證的是 22db0d7 這個較小的包。以下四項在交付物中不存在——引用舊敘述時不可當成已經有。
1 · Deadline quorum
程式裡沒有。reviewer 仍是 ThreadPoolExecutor.map 同步等全部回來——clinepass-clean-v2 就是這樣被 240s 尾延遲拖到中止的。交付自己的 SUMMARY.md 也老實把它列為「下一步」。
2 · 五呼叫重新配置(generator+2 反例搜尋者+裁決者+reviser)
目前 ON 臂是 generator+3 reviewer+reviser=5 呼叫,沒有獨立的反例裁決者角色。反例的「裁決」是確定性規則(可解析、域內、執行確認),不是另一個模型呼叫。
3 · Corpus 13/4/9 命名修正與 canonical aliases
交付物內無 corpus manifest、無此拆分、無 aliases。題庫就是 EvalPlus 371 題子集按 seed 的 sha256 排序取前 n,calibration 用 offset 保證不重疊。
4 ·「OFF5 不再是安全漏洞」——交付時不成立,我已修好
交付的 behavior_signature() 實際上用 subprocess.run([sys.executable, …]) 直接執行模型產生的程式:沒有 RLIMIT、沒有 import 白名單、沒有 env 清理。這是交付敘述與程式碼之間最嚴重的一處落差。修正內容見第玖節。
OFF5 缺口與修正
修正策略:不新開一條執行路徑,而是把「觀察行為」這個需求接回同一條受限 worker 路徑。checks.py 新增 run_python_capture——與 run_python_check 共用沙箱本體,差別只在把 runner 的 stdout 帶出來。
test_behavior_signature_runs_candidate_in_restricted_worker:非白名單 import → 簽名降級EXEC_FAIL;候選印偽造標記不影響簽名test_behavior_signature_infra_failure_is_infra_void:沙箱起不來記 infra_void,不當候選的錯test_run_python_capture_returns_probe_stdout_and_keeps_candidate_sandboxed:只帶回探針輸出
test_off5_votes_on_behavior_not_source_text 原測試不動照過);import 白名單與 ON 臂的 hidden 判定共用同一份常數,兩條路徑不會在不同規則下跑。- run = subprocess.run([sys.executable, path], - capture_output=True, text=True, timeout=timeout_s) + out = run_python_capture( + code, probe, timeout=timeout_s, + allowed_imports=_GAIN_ALLOWED_IMPORTS, + allowed_entry_points=(entry_point,)) # 候選碼:worker 限定、RLIMIT、白名單 import、env 清理 # 候選 stdout:DEVNULL,無法偽造 __VACANT_BEHAVIOR__ 標記
成本分析——等呼叫 ≠ 等成本
「等預算」目前以呼叫數定義(ON 5 次、OFF5 5 次)。但 smoke 的落盤成本顯示:同為 5 呼叫/題,ON 的市價是 OFF5 的 1.8 倍——review 與 revise 的 prompt 更長、模型更貴。正式跑的預算平衡要改用 market cost,否則「等預算」會再次名實不符(E19 踩過一次,這是第二次警訊)。
| 臂 | 呼叫/題 | 成本(smoke) | 成本/正確交付 | v8r 成本(market) |
|---|---|---|---|---|
| OFF | 1 | $0.0388 | $0.0065 | $0.0125 |
| ON | 5 | $0.2814 | $0.0469 | $0.0969 |
| OFF5 | 5 | $0.1564 | $0.0261 | $0.0562(不完整) |
安全警示
sk_…89ece8 與 sk_…996a8d,我在 2026-08-20 各發了一次最小 probe——皆 HTTP 200 並完成真實生成。前一份交付已建議撤銷,至今日未執行。
請立即到 Cline 後台撤銷並重發。在此之前,任何拿到對話紀錄的人都能用這兩把key 計費呼叫。本 repo、驗證紀錄、smoke logs 均已掃描,零金鑰殘留;probe 回應與臨時 key 檔已刪除。
- 金鑰只存在
/tmp(權限 600),用完即刪 - repo 全樹(含 untracked)掃描
sk_f1c0…/sk_ab08…:零命中 - runner 的 calls.jsonl 本身不含 key(只記 prompt/response 全文)
- VM 上沒有放任何金鑰(與前一手同一紀律)
- 撤銷兩把 key 並重發——這是唯一能把暴露歸零的動作
- 新 key 走
~/.cline-keys或CLINE_KEYS路徑,不進對話、不進版控 - 正式批跑前,把預算上限與 market-cost 平衡一起定下來(見第拾節)
結論與重現
這個交付包是真的、可重現、值得收的:它把增益實驗從「口號」變成「有判準、有閘門、有落盤」的機器。它沒有證明增益——而它最大的貢獻之一,就是把「為什麼還不能說有增益」變得可操作、可檢查。
| 項目 | 位置 |
|---|---|
| 融合分支 | claude/fuse-gain-verified-20260820 |
| 融合 commit | 416b973 |
| OFF5 修正+smoke | 5b256d7 |
| 文字版卷宗 | ops/gain/VERIFICATION_2026-08-20.md |
| 本網站 | ops/gain/VERIFICATION_2026-08-20.html |
| smoke 機器可讀結果 | runs/g_smoke_20260820/summary.json |
| smoke 原始全 I/O(未進版控) | runs/g_smoke_20260820/*.jsonl |
# 1. 量具驗證(零模型呼叫、免費) python3 ops/gain/gain_run.py \ --out /tmp/probe371 --n 371 --seed vm-canonical-371 \ --arms probe --probe-sample 0 # 2. 全套測試 .venv/bin/python -m pytest tests/ -q # → 565 passed # 3. 真跑(需要有效 key;先撤銷舊key再發新的) CLINE_KEYS=~/.cline-keys python3 ops/gain/gain_run.py \ --out runs/g1 --n 12 --seed <new-seed> --calibration-n 6 \ --models cline-pass/glm-5.2,cline-pass/deepseek-v4-flash,cline-pass/kimi-k3 # 等預算結論只在以下兩者皆 true 時可讀: # summary.json → run_complete # summary.json → equal_budget_comparison_valid