Skip to content

bug: #298 的修正只落在 idd-list — 另三個 Complexity consumer 未動,且 idd-list 自身 Step 5 與 Step 3.7 互相矛盾 #316

Description

@kiki830621

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

  • ### Complexity 的值域形狀重新判定,並以真實語料(closed corpus,非 open backlog)驗證
  • 四個 consumer 皆引用單一共用實作,無私有 inline 解析
  • 三訊號 gate 真的被四個 consumer 呼叫(讀 labels + ### Blocking 並送進 verdict)
  • idd-all dispatch table 涵蓋「regex match 到但值不在封閉值域」
  • idd-list Step 5 與 Step 3.7 一致(不再有截斷 regex)
  • idd-diagnose 明文宣告封閉值域,且明訂不自動貼 parking-lot label
  • blocker:*parking-lot 擇一收斂或明記分工
  • 回歸測試覆蓋 2026-08-10 事故快照,斷言 9 筆中只有 feature: /idd-all (無參數) bulk-solve mode — AI 自動 sequence + bundle 所有 open issue #37 為 actionable
  • 回歸測試另須涵蓋 closed corpus 的常態寫法(至少 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 —— 共用 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

  • (none — 可動)

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions