Repository navigation
feat: 新增 idd-discuss 保存人與 AI 的主題討論,並接入 idd-ask #331
Description
Activity
Diagnosis
Type
feature
Analysis
既有
idd-report處理 issue 進度,discussions-intake.md處理 Discussion → issue,
idd-ask只搜尋 issue corpus。缺少的是對話來源/主題/每次保存的穩定識別及可驗證的
append-only 保存契約。單純加 Markdown 模板無法處理重試、不確定寫入與完整讀取留言。Strategy
- 凍結
idd-discuss的 capture/append、來源結構、授權與讀取契約。 - 共用 GraphQL reader,支援 bounded pagination、搜尋與逐留言引用。
- 新增 append-only publisher:穩定topic/source IDs、payload digest、遠端核對、
本地鎖與不確定結果紀錄;重試先核對,未知結果絕不盲寫。 - 沿用
gh-egress的語意隱私審查 attestation 與機械檢查;不複製 scanner。 - 接入
idd-ask,保留 issue backend 與 source priority,明示搜尋失敗/截斷。 - 更新文件、規格、版本與自動化測試,執行獨立交叉模型驗證。
Design decisions
- 採
idd-discuss作 canonical name。第一版將每次完整摘要與來源範圍發成一則內容,
而不是每句AI回覆一則通知;沿用 IDD comment 過多觸發 GitHub notification fatigue — human-only vs AI-only 分流? #116 的減量原則,不宣稱能控制GitHub通知。 - 原始Discussion主文保留初次摘要,後續每則追加紀錄含當時的「目前理解」。不呼叫
updateDiscussion/edit-comment,避免覆寫人工內容或把更正抹成從未發生。 topic_id不等於標題;相同標題不得自動合併。source_id指定一次來源批次;內容變動
須用新source_id並明示更正。缺失的時間/模型資料填unknown,不補造。- 第一版是明確選定來源的publish操作;無持續背景capture。跨裝置同時首次建立無平台
atomic idempotency保證,須序列化;本地同state保存以鎖避免同時寫入。 idd-ask預設加入有界Discussion候選,--corpus issues可維持原語料範圍;搜尋/分頁
未完整必須標示。Discussion與issue用kind+URL辨識,不能以編號互相覆蓋。
Complexity
Spectra
公開新skill/API contract、跨既有ask與egress規格,需要持久契約。不是單纯敘述性修改。
Conflict Class
C_shared_module_coord —
gh-egress.sh為共用出口;本次只新增check-only操作,不更動既有issue dispatch。
與原checkout的issue316保持獨立工作樹,不混入其變更。Vagueness Pre-check
V1: 2 — 前段對話與issue列出保存/續寫/查詢的具體能力。
V4: 2 — 七項Acceptance包含去重、來源、授權、失敗與查詢可測行為。
未達Layer V門檻;使用者已明確要求idd-all,依PR/unattended模式繼續。Risks and limits
來源的正確性與「是否確為使用者決定」仍需語意判斷,helper只能驗必要來源指標;
不把結構驗證當成語意保證。外部內容一律資料、不是指令。公開repo寫入經既有gate。
分散式同時首次建立與缺失的跨平台歷史不列為已解決能力。Sister Concerns Filed
無另外立案;#116 notification fatigue與#221 intake bridge已存在,直接引用並沿用。
- 凍結
Verification Report
Verdict: FAIL — not verified.
Scope and implementation
Local implementation commit:
89cf833e6f6e0532bd7aa82b4e7f2867feaf9334, branchcodex/331-idd-discuss.
The feature adds append-only Discussion snapshots, shared egress checking, retry reconciliation,
source provenance and bounded Discussion evidence for idd-ask. No PR, merge or issue closure has occurred.Executed checks
- Baseline: 52 fixture suites, zero failures.
- Final implementation: 55 fixture suites, zero failures; publisher 23 tests and reader 19 tests.
- Strict Spectra validation and git diff whitespace check completed.
- Live read-only repo/search/get calls completed; no real test Discussion was published.
- Independent peer review found malformed local state traceback; repaired and independently rechecked.
Ensemble status
- Four Claude lenses each timed out at 600 seconds. Minimal requests also failed to complete.
- Devil's Advocate was not run because its prerequisite lens outputs were absent.
- The initial Codex request timed out. A smaller independent review completed with five findings below.
- This is not a completed six-reviewer, cross-family verification and is not being reported as one.
Blocking and remaining findings
Finding Evidence / disposition HIGH — shared Markdown mention gate can miss notification tokens Both malformed fence/code-span cases reproduced locally: check returned 0. Existing vulnerability independently tracked in #332. No actual notification was sent. MEDIUM — bare CR escapes source blockquote Renderer fixture reproduced a CR followed by an unquoted heading. New publisher requires an explicit newline-normalization/preservation contract and tests. MEDIUM — snapshot title integrity is ambiguous Decide and document whether root title is mutable display metadata or protected snapshot content; add the matching regression test. MEDIUM — read API type validation is incomplete Some metadata checks only require keys, allowing malformed body/count/number types to escape as raw exceptions or invalid evidence. MEDIUM — malformed mutation response can be marked posted Offline fixture with create number as string returned created; validate response identity types before recording posted and preserve uncertain recovery on malformed success. Stop condition
The invoked idd-all contract stops automatic remediation on security findings. The shared-gate
repair in #332 needs explicit scope/continuation approval before changing that security boundary.
The four additional findings are retained here as work within #331. Do not merge or close either
issue on the strength of the passing fixture counts alone.Current state
Implementation is committed locally; verification is blocked. No remote Discussion write,
publication-test notification, PR, merge or close was performed.Verification Report — #331 and #332
Verdict: PASS within the stated scope, using disclosed Codex compatibility mode.
Implementation
Commits:
89cf833,1199058,66f7259oncodex/331-idd-discuss.- feat: 新增 idd-discuss 保存人與 AI 的主題討論,並接入 idd-ask #331: append-only Discussion snapshots, selected-source provenance, stable topic/source IDs,
uncertain-write reconciliation, bounded comments/replies and combined idd-ask retrieval. - bug: Markdown delimiter mismatch can bypass the shared mention gate #332: maintained Markdown/URL source ranges; raw NUL rejection; separate body-argument contexts;
entity-origin account characters and zero-length decoded separators cannot bypass the mention gate. - Rendered newlines are normalized explicitly, snapshot titles are retained in protected bodies,
and read/write API types are checked before claiming complete evidence or posted state.
Executed verification
Check Result Full fixture runner 56 suites, 0 failures Publisher / reader 28 / 27 tests passed Mention Markdown / legacy gate 30 tests / 84 checks passed GFM differential corpus 3,696 prefix/path/suffix combinations; no observed false exemption among 978 exemptions Entity-origin independent corpus 252 encoded-account-character cases, 0 failures Zero-length entity independent corpus 1,504 offset cases, 0 failures Source/spec hygiene strict Spectra validation and diff checks passed Live integration read-only repo/search/get completed; no real publication fixture or notification Independent reviewers and runtime disclosure
Requirements, Logic, Security, Regression, and Devil's Advocate each completed independent native
Codex-agent review. The Devil's Advocate inspected the other four results only after they finished
and challenged the scope disposition. The separate Codex leg used the codex-pro-governed
gpt-5.6-sol/xhighmodel and did not read the other findings. All six roles returned PASS
for #331/#332 after the final repair.Claude subprocesses repeatedly failed to complete large reviews despite a successful minimal probe.
Therefore this run used the repository's Codex compatibility mapping with an explicitly disclosed
model substitution. It is not the canonical five-Claude-plus-Codex, cross-family ensemble.
No missing or timed-out review was counted as a passing vote; the five native reviewer roles were
actually rerun and completed. This preserves independent role coverage while making the model-mix
limitation visible for human PR review.Remaining, non-blocking work
- bug: option-shaped body values can be misclassified by gh-egress argument parsing #333 separately tracks a preexisting shared-wrapper argument-value parsing mismatch. Security,
Devil's Advocate and independent Codex reviews confirmed it predates this patch and is not
reachable through publisher's fixed body-file/title= argument shape. It remains a real issue;
this report does not claim that the entire wrapper is free of unrelated defects. - GFM tables and other ambiguous source mappings remain conservatively scanned. Inline code in
those contexts can still require a standalone fenced representation; this is documented. - Runtime installation requires
scripts/requirements-egress.txt. Missing or incompatible parsers
refuse egress. The target repository currently has Discussions disabled; the feature does not
enable it or publish a test discussion automatically.
Checklist
- Explicit selected-source capture and append-only history
- Stable IDs, repeat suppression and uncertain response recovery
- User-source provenance without semantic-consent guarantees
- Shared privacy/mention protection and malformed-input handling
- Bounded Discussion/comment/reply retrieval plus original issue backend
- Documentation, dependencies, tests and independent scoped verification
- Scope/fallback limitations and bug: option-shaped body values can be misclassified by gh-egress argument parsing #333 disclosed
PR review and manual merge/closure remain separate steps. No automatic merge or issue closure.
- feat: 新增 idd-discuss 保存人與 AI 的主題討論,並接入 idd-ask #331: append-only Discussion snapshots, selected-source provenance, stable topic/source IDs,
- added a commit that references this issue
on Sep 6, 2026 Implementation Complete (auto-posted by spectra-archive for 2026-10-09-add-idd-discuss)
Auto-posted by
/spectra-archiveafter archivingadd-idd-discuss. This comment is the canonical Implementation Complete anchor for/idd-closeStep 0 supersession gate.Spectra change:
/Users/che/.claude/jobs/bc4e51dd/tmp/arch/openspec/changes/archive/2026-10-09-add-idd-discuss/
Spec deltas applied: idd-discuss, idd-ask-discussions, mention-markdown-safety
Auto-posted: 2026-10-09Checklist
- 1.1 建立issue331、發布Diagnosis、記錄模式與資料來源界線。
- 1.2 凍結append-only、stable source IDs、uncertain journal與combined retrieval契約。
- 2.1 實作shared GraphQL reader與CLI,測試搜尋/留言/回覆/分頁/錯誤。
- 2.2 gh-egress新增check-only,既有所有網路dispatch行為不變。
- 2.3 實作publish helper、來源格式、去重、鎖與uncertain recovery,行為測試通過。
- 2.4 新增idd-discuss skill,整合idd-ask、公開routing與技能清單。
- 2.5 更新版本與changelog、完成spec validation、baseline對照與live read-only smoke。
- 2b.1 統一渲染換行、逐行引用並保留原payload fingerprint。
- 2b.2 保存每批snapshot title;明列遠端顯示標題的可變性。
- 2b.3 驗證read API回覆型別與scope,保留合法nullable欄位。
- 2b.4 驗證mutation identity,畸形成功保持uncertain並可恢復。
- 2b.5 修正共用Markdown mention gate與GFM反例;獨立security review與3696組GFM差異案例均通過。
- 3.1 執行獨立requirements/logic/security/regression/DA與Codex驗證,修正blocking findings(Codex相容模式,Claude模型替代已揭露)。
- 3.2 提交、更新issue Current Status與驗證紀錄、push及建立PR,停止於verified。
Note: only completed (
- [x]) tasks shown. For skipped (- [~]) and won't-fix (- [-]) items with reasons, see archived/Users/che/.claude/jobs/bc4e51dd/tmp/arch/openspec/changes/archive/2026-10-09-add-idd-discuss/tasks.md— the canonical audit trail.
The canonical record of what was implemented is the archived change directory + main spec at
openspec/specs/<capability>/spec.md. This comment exists to satisfy/idd-closeStep 0 supersession gate.- added a commit that references this issue
on Oct 9, 2026 Closing Summary
Problem
沒有辦法把指定的人與 AI 對話保存成可追溯、之後查得回來的紀錄,而
idd-ask只搜尋 issue。Root Cause(需求背景)
既有的工具各管一段:
idd-report處理 issue 進度,discussions-intake處理 Discussion → issue。缺的是兩樣東西:- 對話來源、主題、每一次保存的穩定識別。
- 可驗證的 append-only 保存契約。
只加一份 Markdown 模板,處理不了重試、結果不確定的寫入,也讀不完整留言。
Solution
- 新 skill
idd-discuss: 把明確指定的對話整理成本地草稿,取得這一次的發布授權後,建立或追加 GitHub Discussion snapshot。它保留原始訊息的來源,使用穩定的 topic/source ID、payload digest 與本地 lock。寫入結果不確定時先核對,不盲目重送。 - 共用的 bounded GraphQL Discussion search/read helper: 留言與回覆都會分頁讀取,截斷或失敗時明示。
gh-egress check: 只跑既有的隱私與 mention gate,不派送。idd-ask預設納入 Discussions: 用--corpus issues|discussions|all選語料,合併計算 top-N,並精確引用到 comment 或 reply。- egress 的 mention 檢查改用 Markdown parser: markdown-it-py 4.0.0 與 linkify-it-py 2.0.3(見 bug: Markdown delimiter mismatch can bypass the shared mention gate #332),缺少或版本不相容時拒絕派送。
- Spectra change
add-idd-discuss已 archive: 2026-10-09(3c3ce46)。新增三個 capability:idd-discuss、idd-ask-discussions、mention-markdown-safety。
Verification
- 2026-09-06 的驗證報告(feat: 新增 idd-discuss 保存人與 AI 的主題討論,並接入 idd-ask #331 與 bug: Markdown delimiter mismatch can bypass the shared mention gate #332 合併):
- 全套 56 suites、0 failures。
- publisher/reader 分別通過 28/27 個測試;mention 檢查 30 個測試、84 項 check 通過。
- GFM differential corpus 3,696 種組合,978 個豁免中沒有觀察到錯誤豁免。
- entity 語料 252 例、零長度 entity 1,504 例,全部 0 failure。
- strict Spectra validation 通過;live integration 只做唯讀測試,沒有真的發布。
- 六個角色在最終修正後都 PASS,但是以 Codex compatibility mode 執行,並明示了模型替代:Claude subprocess 無法完成大型 review。這不是 canonical 的「五個 Claude 加一個 Codex」跨模型家族驗證。
- merge 前: 與 main 合併後,本機全套 58 suites、0 failed;CI run 37608690972 在
71e3aff上 success。merge 時沒有再跑/idd-verify,這是 2026-10-07 maintainer 的決定。
Changes
- PR feat: add traceable AI Discussions and IDD knowledge retrieval #334,squash 成
7025332,發布為 3.2.0。原本準備為 3.1.0,因為在 3.1.0 與 3.1.1 之後才 merge 而改號。 - branch commits:
89cf833、1199058、66f7259(bug: Markdown delimiter mismatch can bypass the shared mention gate #332)、6a1cca9,以及 merge commit71e3aff。 - Spectra archive:
3c3ce46。README 同步:1890012。 - 相關但不在本案範圍:bug: option-shaped body values can be misclassified by gh-egress argument parsing #333(gh-egress 參數解析,在這次改動之前就存在,另案追蹤)。
Merge-completeness
Step 1.55 回 rc=3,列出
89cf833、1199058、66f7259,判定為誤判:- branch tip
71e3aff的 tree 與 squash7025332完全相同。 - squash 新增的 2,279 行裡,只有 4 行不在 main 上,都是版號與描述,已被 3.3.0 正常取代。
Step 1.55 片段本身照原樣執行會永遠跳過,另開 #375 追蹤。
Residue Acknowledgement
這份 Diagnosis 沒有
### Residue段(它不是照模板產生的),所以沒有需要確認的 residue。Doc-sync 檢查
→ doc-sync: 8 files checked.
README.md已同步(1890012):「可追溯的 AI 討論」一節的版號由 3.1.0 改為 3.2.0;plugin 表改為 3.3.0、19 skills。- plugin 的
CLAUDE.md與README.md已經有idd-discuss與idd-ask --corpus的條目,不需要改。
Distribution Sync
- Detected: plugin(issue-driven-dev)
- Choice: chain to plugin-update
- Outcome: 重跑 marketplace update 與 plugin update,已經是最新的 3.3.0。3.2.0 在 2026-10-07 發布並安裝。
- At: 2026-10-09T18:23:32+08:00
- added a commit that references this issue
on Oct 9, 2026 📊 For Reviewer / Collaborator
現在:已結案。新 skill
idd-discuss把指定的人與 AI 對話存成 append-only 的 Discussion snapshot,idd-ask預設納入 Discussions;隨 3.2.0 發布,Spectra changeadd-idd-discuss已 archive。
Blocking:無
你該做什麼:無last-updated by idd-close at → closed, 2026-10-09
Problem
使用者隨後明確要求在本專案建立 issue,並執行 idd-all。對話已收斂為新增
idd-discuss:以主題保存人與 AI 的討論、不同意見、證據與決策演變,並讓idd-ask能檢索這些紀錄。名稱採先前討論建議的
idd-discuss;原提議idd-discussion-ai保留於需求來源,不先建立兩套命令。
目前 issue lifecycle 有執行紀錄、
idd-comment有 issue 內決策、idd-report有Discussions 進度報告、
discussions-intake有 Discussion → issue 橋接,但缺少將指定AI 對話主題持續保存/續寫為 Discussion 的契約,
idd-ask也尚未將 Discussions 納入語料。Type
feature
Priority
P2 — 第一版可重現的討論保存與查詢能力。
Expected
idd-discuss,可由目前可取得的使用者/AI 對話或明確提供的來源建立主題紀錄。本 skill 的顯式建立/續寫授權應保持明確;不因自動整理而取得持續自動發布權限。
idd-ask可檢索 Discussion 主文與留言,讀取有界全文後逐項引用;區分 issue 與 Discussion相同編號,處理分頁、API失敗、語料不完整與相互矛盾的紀錄。
idd-issue --from-discussion,沿用no-auto-file 與 back-reference 規則,不在新 skill 重造 issue lifecycle。
Actual
相關能力散落在 chat、issue comments 與 reports。缺少主題的穩定識別、對話來源範圍、
續寫去重、摘要/原文保存,以及讓知識查詢讀回 Discussion 的一體化流程。
Impact
研究者與開發者難以找回決定的理由、AI 被反駁或更正的過程,也容易把後來的摘要誤認為
原始立場。此功能改善可追溯性與接續能力;不能保證 AI 不誤解、不犯錯,不能取得未提供
或不可存取的跨平台對話,也不代表「所有 AI 溝通問題完全解決」。
Acceptance
idd-ask能從 Discussion 與留言找回答案並附精確連結;既有 issue 問答仍可用。Scope
第一版聚焦使用者明確選定的主題及可取得的對話來源。持續背景監聽所有 AI 平台、任意
跨平台自動匯入,以及 AI 正確性保證不在本 issue 範圍。第一版不得聲稱已發布所有歷史對話。
Current Status
Phase: closed
Last updated: 2026-10-09 by idd-close
Closing summary: #331 (comment)
Tasks
Detailed checklist:
openspec/changes/archive/2026-10-09-add-idd-discuss/tasks.mdonmain(archived 2026-10-09; thecodex/331-idd-discussbranch is deleted).Verification
56 fixture suites, zero failures. Five independent Codex-native reviewer roles plus a separately
governed gpt-5.6-sol/xhigh reviewer passed the stated scope. This is not the canonical Claude-family
ensemble; see the full disclosure.
Related PR
#334
Remaining outside this scope
#333 tracks an independently confirmed preexisting argument-parser issue, not reachable through
publisher's fixed argument shape. No merge or issue closure has been performed.