Problem
#298 的修正(PR #309 / #306)只落在 idd-list。### Complexity 的另外三個 routing consumer 完全沒動,各自的私有解析仍在,且與 idd-list 的新規則不一致。
1. idd-list 自身前後矛盾
同一個 skills/idd-list/SKILL.md:
| 位置 |
內容 |
| Step 3.7(#298 修正) |
「值若不是已知 tier 的裸 token…必須 surface…不得靜默截成 tier」 |
| Step 5 Complexity 解析(未動) |
「regex ### Complexity\n([A-Za-z-]+),取第一個 token」 |
([A-Za-z-]+) 在第一個空白處停止 —— 那正是 Step 3.7 明文禁止的截斷。實作者照哪一段做,行為就不同。
2. idd-all 的安全網結構上接不住非法值
skills/idd-all/SKILL.md 的解析與 dispatch table 維持原狀:
m = re.search(r'### Complexity\n(.+?)\n', latest)
print(m.group(1).strip() if m else 'UNKNOWN')
dispatch table 有 Simple / Plan / Plan via Layer V / Spectra / SDD-warranted / UNKNOWN 六個 row。UNKNOWN 只在 regex 完全沒 match 時產生(if m else)。一個 Simple when triggered 會讓 regex match 成功、回傳非法字串 —— 它既不匹配任何 row,也不是 UNKNOWN,落入未定義行為。
3. idd-implement / idd-plan 各自 inline
idd-implement 自行 split(" via ")[0];idd-plan 自行確認 tier 是否為 Plan。兩者都沒有域外值的處置。
4. blocker:* vs parking-lot 的 vocabulary drift 未收斂
references/ic-r011-checkpoint.md 已於 2026-08-14 誠實更正「periodic backlog grooming 不存在」(#310),但同檔 71 / 72 / 92 / 94 / 182 行仍規定 filing 時要貼 blocker:infeasible / blocker:waiting —— 這兩個 label 在本 repo 一次都沒有被建立過,0 個 issue 在用;實際在用的是 parking-lot。文件現在誠實地說「沒有機制會回頭讀這些 label」,卻仍叫人繼續貼它們。
Type
bug
Expected
⚠ 本段已於 2026-08-15 re-baseline 修正(見下方 ## Re-baseline comment)。原版規定「合法值域為封閉四值」—— 該前提被 /idd-verify --pr 318 的 CRITICAL-2 以 90 筆真實 diagnosis 語料證偽:38 筆域外值中只有 9 筆是延期修飾語,22 筆是 tier 後接同行理由的正常寫法。原文保留於本 comment 串以供追溯。
四個 consumer 共用單一實作,且對「無法路由的值」有一致處置:
### Complexity 的正確值域形狀待重新判定(重做起點)。已知的資料約束:
- producer 的常態寫法是「tier + 同行理由」(
Spectra(opt-out → 直接 propose)、Plan(Layer P:…)、Simple — 單檔、2 個 1-token 補丁…),這類必須能正確解出 tier
- 真正該擋下的是延期語彙(
when triggered / parking lot / deferred pending #N)
- 兩者的分界不是「有沒有後綴文字」,而是「後綴文字是否表達延期」
- 無法路由的值 → not-actionable + surface 原值;缺區段 → 另一個 reason(此三條不受前提修正影響)
idd-all dispatch table 補上「解析成功但無法路由」的 row
idd-list Step 5 與 Step 3.7 不再互相矛盾
- 三訊號 gate 必須真的被四個 consumer 呼叫 —— verify CRITICAL-1:gate 已實作但零 consumer,
parking-lot 與 ### Blocking 在三個 skill 仍被繞過
blocker:* 與 parking-lot 擇一收斂,或明記分工
Actual
- 規則以散文形式只寫在
idd-list,其餘三個 consumer 讀不到
idd-list 內部兩段規則互相矛盾
idd-all 對非法值行為未定義
- 兩套 parking label 慣例並存,其中一套零使用卻仍被文件規定
Impact
| 檔案 |
影響 |
plugins/issue-driven-dev/skills/idd-list/SKILL.md |
Step 5 的截斷 regex 與 Step 3.7 矛盾 |
plugins/issue-driven-dev/skills/idd-all/SKILL.md |
解析 + dispatch table 缺非法值處置 |
plugins/issue-driven-dev/skills/idd-implement/SKILL.md |
私有 inline 解析 |
plugins/issue-driven-dev/skills/idd-plan/SKILL.md |
私有 tier 確認 |
plugins/issue-driven-dev/skills/idd-diagnose/SKILL.md |
producer 端未宣告封閉值域 |
plugins/issue-driven-dev/references/ic-r011-checkpoint.md |
label 慣例未收斂 |
Acceptance criteria
Source
Surfaced during /spectra-apply add-actionability-gate(2026-08-14)。該 change 於 #298 close 前提出,走完 discuss → propose 後 apply 時才發現 #298 已由 PR #309 / #306 修掉 —— 但只修了 idd-list。本 issue 承接剩餘缺口。
已就緒、可直接接上的產物(該 change 的 Group 1–2,全新檔、與已 merge 的內容零衝突):
plugins/issue-driven-dev/scripts/lib/actionability.sh —— 共用 helper
plugins/issue-driven-dev/references/actionability-gate.md —— canonical 契約
plugins/issue-driven-dev/scripts/tests/actionability-gate/ —— 66 個斷言、15-row fixture(含事故快照),全綠
Refs #298, #310
Current Status
Phase: diagnosed(第 2 輪 — post re-baseline)
Last updated: 2026-08-15 by /idd-diagnose
Complexity
Spectra
(Layer 2 ✓ field contract for future callers;Layer 3 三項全中。Hard-gate 未評估 —— Spectra precedes。)
Blocking
Next
/spectra-ingest add-actionability-gate —— 不是 /spectra-discuss。
該 Spectra change 已存在且四份 artifact 俱全;本輪 diagnosis 產出的是「修正既有 change 的外部 context」(corpus 分析 + verify findings),不是一個新方向 —— 方向已由 159 筆 corpus 定死(158/158,0 false positive)。
ingest 後需更新:design D1/D3/D5、spec R1/R3/R7、proposal 的 BREAKING 敘述(「9 筆需 migration」→ 實為 0 筆)、tasks 補 verify 的 HIGH findings 與 CRITICAL-1。
Related
Problem
#298 的修正(PR #309 / #306)只落在
idd-list。### Complexity的另外三個 routing consumer 完全沒動,各自的私有解析仍在,且與idd-list的新規則不一致。1.
idd-list自身前後矛盾同一個
skills/idd-list/SKILL.md:### Complexity\n([A-Za-z-]+),取第一個 token」([A-Za-z-]+)在第一個空白處停止 —— 那正是 Step 3.7 明文禁止的截斷。實作者照哪一段做,行為就不同。2.
idd-all的安全網結構上接不住非法值skills/idd-all/SKILL.md的解析與 dispatch table 維持原狀:dispatch table 有
Simple/Plan/Plan via Layer V/Spectra/SDD-warranted/UNKNOWN六個 row。UNKNOWN只在 regex 完全沒 match 時產生(if m else)。一個Simple when triggered會讓 regex match 成功、回傳非法字串 —— 它既不匹配任何 row,也不是UNKNOWN,落入未定義行為。3.
idd-implement/idd-plan各自 inlineidd-implement自行split(" via ")[0];idd-plan自行確認 tier 是否為Plan。兩者都沒有域外值的處置。4.
blocker:*vsparking-lot的 vocabulary drift 未收斂references/ic-r011-checkpoint.md已於 2026-08-14 誠實更正「periodic backlog grooming 不存在」(#310),但同檔 71 / 72 / 92 / 94 / 182 行仍規定 filing 時要貼blocker:infeasible/blocker:waiting—— 這兩個 label 在本 repo 一次都沒有被建立過,0 個 issue 在用;實際在用的是parking-lot。文件現在誠實地說「沒有機制會回頭讀這些 label」,卻仍叫人繼續貼它們。Type
bug
Expected
四個 consumer 共用單一實作,且對「無法路由的值」有一致處置:
### Complexity的正確值域形狀待重新判定(重做起點)。已知的資料約束:Spectra(opt-out → 直接 propose)、Plan(Layer P:…)、Simple — 單檔、2 個 1-token 補丁…),這類必須能正確解出 tierwhen triggered/parking lot/deferred pending #N)idd-alldispatch table 補上「解析成功但無法路由」的 rowidd-listStep 5 與 Step 3.7 不再互相矛盾parking-lot與### Blocking在三個 skill 仍被繞過blocker:*與parking-lot擇一收斂,或明記分工Actual
idd-list,其餘三個 consumer 讀不到idd-list內部兩段規則互相矛盾idd-all對非法值行為未定義Impact
plugins/issue-driven-dev/skills/idd-list/SKILL.mdplugins/issue-driven-dev/skills/idd-all/SKILL.mdplugins/issue-driven-dev/skills/idd-implement/SKILL.mdplugins/issue-driven-dev/skills/idd-plan/SKILL.mdplugins/issue-driven-dev/skills/idd-diagnose/SKILL.mdplugins/issue-driven-dev/references/ic-r011-checkpoint.mdAcceptance criteria
### Complexity的值域形狀重新判定,並以真實語料(closed corpus,非 open backlog)驗證### Blocking並送進 verdict)idd-alldispatch table 涵蓋「regex match 到但值不在封閉值域」idd-listStep 5 與 Step 3.7 一致(不再有截斷 regex)idd-diagnose明文宣告封閉值域,且明訂不自動貼parking-lotlabelblocker:*與parking-lot擇一收斂或明記分工Spectra(opt-out → …)/Plan(Layer P:…)/Simple — <理由>三種形狀必須解出正確 tier)—— fixture 不得只收錄為驗證假設而挑的樣本Source
Surfaced during
/spectra-apply add-actionability-gate(2026-08-14)。該 change 於 #298 close 前提出,走完 discuss → propose 後 apply 時才發現 #298 已由 PR #309 / #306 修掉 —— 但只修了idd-list。本 issue 承接剩餘缺口。已就緒、可直接接上的產物(該 change 的 Group 1–2,全新檔、與已 merge 的內容零衝突):
plugins/issue-driven-dev/scripts/lib/actionability.sh—— 共用 helperplugins/issue-driven-dev/references/actionability-gate.md—— canonical 契約plugins/issue-driven-dev/scripts/tests/actionability-gate/—— 66 個斷言、15-row fixture(含事故快照),全綠Refs #298, #310
Current Status
Phase: diagnosed(第 2 輪 — post re-baseline)
Last updated: 2026-08-15 by /idd-diagnose
Complexity
Spectra
(Layer 2 ✓ field contract for future callers;Layer 3 三項全中。Hard-gate 未評估 —— Spectra precedes。)
Blocking
Next
/spectra-ingest add-actionability-gate—— 不是/spectra-discuss。該 Spectra change 已存在且四份 artifact 俱全;本輪 diagnosis 產出的是「修正既有 change 的外部 context」(corpus 分析 + verify findings),不是一個新方向 —— 方向已由 159 筆 corpus 定死(158/158,0 false positive)。
ingest 後需更新:design D1/D3/D5、spec R1/R3/R7、proposal 的 BREAKING 敘述(「9 筆需 migration」→ 實為 0 筆)、tasks 補 verify 的 HIGH findings 與 CRITICAL-1。
Related
skills/idd-list/SKILL.md)→ 需序列化