問題
#202 把 115 個字串拒絕改成 throw,全套件 383 tests 0 failures,但 verify 的 regression lens 對照 Tests/ 逐站點比對:104 個單行字面站點中 82 處(78%)沒有任何測試斷言其訊息——是既有債務,#202 沒有製造也沒有惡化它,但它讓「文字逐字元不變」這類契約只能靠 diff 比對而不是測試守。
DA 的 mutation probe 同時證明:對沒有 protocol 案例的站點,把 throw 改回 return 全套件仍綠——所以這份債的代價是靜默回歸,不是「測試少一點」。
前十個高風險站點(regression lens 的排序)
| # | 位置 | 工具 | 拒絕內容 |
| 1 | Server.swift:7084 | recover_from_autosave | E_NO_AUTOSAVE — document '…' has no known source path. |
| 2 | Server.swift:7088 | recover_from_autosave | E_NO_AUTOSAVE — no autosave file at '…'. |
| 3 | Server.swift:7183 | revert_to_disk | document '…' has no known source path to revert from |
| 4 | Server.swift:7219 | reload_from_disk | document '…' has no known source path to reload from |
| 5 | Server.swift:7519 | replace_text | invalid regex pattern '…' |
| 6 | Server.swift:7391/7393 | insert_paragraph | table index / table[..] cell (row,col) out of range |
| 7 | Server.swift:8698/8700 | insert_image_from_path | table[..] cell out of range |
| 8 | Server.swift:9963 | splice_omath_from_source | formatSpliceError(…) 全部六種 |
| 9 | Server.swift:13752 | protect_document | Invalid protection type. … |
| 10 | ReadbackTools.swift:293 / 315 | update_equation / delete_equation | expected paragraph at … |
要做的事
- 以 tool 為單位補 protocol 案例(直接打
handleToolCall,斷言 isError == true + 訊息 needle),優先 wrap_caption_seq(10 站點)、insert_equation(19)、insert_image_from_path / insert_paragraph / insert_caption(各 8)。
- 與
RefusalIsErrorSweepTests 的 source sweep 互補:sweep 擋「形狀」,protocol 案例擋「站點」。
Source: surfaced during /idd-verify #202 (Step 5b) — regression §2, DA rulings; report: #213 (comment)
問題
#202 把 115 個字串拒絕改成 throw,全套件 383 tests 0 failures,但 verify 的 regression lens 對照
Tests/逐站點比對:104 個單行字面站點中 82 處(78%)沒有任何測試斷言其訊息——是既有債務,#202 沒有製造也沒有惡化它,但它讓「文字逐字元不變」這類契約只能靠 diff 比對而不是測試守。DA 的 mutation probe 同時證明:對沒有 protocol 案例的站點,把 throw 改回 return 全套件仍綠——所以這份債的代價是靜默回歸,不是「測試少一點」。
前十個高風險站點(regression lens 的排序)
| # | 位置 | 工具 | 拒絕內容 |
| 1 |
Server.swift:7084|recover_from_autosave|E_NO_AUTOSAVE — document '…' has no known source path.|| 2 |
Server.swift:7088|recover_from_autosave|E_NO_AUTOSAVE — no autosave file at '…'.|| 3 |
Server.swift:7183|revert_to_disk|document '…' has no known source path to revert from|| 4 |
Server.swift:7219|reload_from_disk|document '…' has no known source path to reload from|| 5 |
Server.swift:7519|replace_text|invalid regex pattern '…'|| 6 |
Server.swift:7391/7393|insert_paragraph|table index / table[..] cell (row,col) out of range|| 7 |
Server.swift:8698/8700|insert_image_from_path|table[..] cell out of range|| 8 |
Server.swift:9963|splice_omath_from_source|formatSpliceError(…)全部六種 || 9 |
Server.swift:13752|protect_document|Invalid protection type. …|| 10 |
ReadbackTools.swift:293 / 315|update_equation/delete_equation|expected paragraph at …|要做的事
handleToolCall,斷言isError == true+ 訊息 needle),優先 wrap_caption_seq(10 站點)、insert_equation(19)、insert_image_from_path / insert_paragraph / insert_caption(各 8)。RefusalIsErrorSweepTests的 source sweep 互補:sweep 擋「形狀」,protocol 案例擋「站點」。Source: surfaced during /idd-verify #202 (Step 5b) — regression §2, DA rulings; report: #213 (comment)