Problem
Original text:
「轉成十年後仍可能需要的「文件修改可信層」 我要確保的就是所有文件改變都能完全無損也不會壞掉,也跟人看到的一樣,人跟AI能完全有相同理解」
「不用比較吧,工具就是要確認跟人類一樣,我都有方法論了」
— Source: 使用者直接輸入(本對話)
macdoc 不應把長期價值建立在「AI 還不會完整修改 Word」上,而應成為任何人類或 AI 修改 Word 文件時都能依賴的文件修改可信層。專案已具備 Word 模仿三層方法論:Layer 1 位元組保留、Layer 2 合法 typed operation 序列化、Layer 3 真實 Word 渲染效果驗證;缺口是這些 gate 尚未統一成每一次正式修改都不能繞過的執行契約。
本 issue 要把既有方法論從研究、量測與測試流程升格為 runtime certification contract:修改先在隔離候選上執行,只有在預期改變被證明、非預期改變不存在、文件可安全開啟,且人類透過 Word 實際看到的效果符合 AI 的可驗證主張時,才准以原子方式寫回正式文件。
Type
feature
Priority
P1(本週處理)
Expected
- 所有修改走同一認證入口:每個 mutator、Edit、MCP tool 與未來 AI 操作都必須宣告目標 ElementID、OOXML part、預期內容差異及預期渲染效果;不得另有繞過認證的正式寫回路徑。
- 隔離式候選修改:先在來源文件的隔離副本套用操作,正式文件在全部 gate 通過前保持位元組不變。
- Layer 1 — 無損與完整性證明:
- 未列入意圖範圍的 parts/nodes 必須維持原始位元組或既定 canonical identity。
- DOCX ZIP、Content Types、relationships、引用目標及 XML 安全檢查全部通過。
- 修改後文件可由 ooxml-swift 重新讀取,並可由真實 Microsoft Word 開啟。
- Layer 2 — 合法表示證明:
- 被修改目標必須能由 typed operation 完整表達。
- typed ops 從受控基線重放後必須通過 trial-rebuild gate。
- 目標若只能留在 raw channel、存在 form gap,或 serializer 無法忠實拼寫 Word canonical form,修改必須拒絕;不得用「語意等價」作豁免。
- Layer 3 — 人類可見效果證明:
- 每個被改動的格式欄位必須對應 render-effect registry 中通過 probe 的
verified 主張。
- AI 預測的方向、幅度與可觀測效果必須由真實 Word render oracle 驗證。
- 未修改頁面/區域不得出現超過門檻的視覺漂移;字形、字型替代、圖片、表格、欄位、註解等尚未覆蓋的效果必須以 effect gap 明確拒絕或標示未認證,不能假裝已理解。
- 人與 AI 相同理解的操作型定義:AI 對文件結構、內容與排版效果所做的每個主張,都必須映射到人類實際使用的 Word 可觀測結果,並有可重跑的 gate 證據;主觀「看起來差不多」不算通過。
- No probe, no claim:任一 gate 缺席、skip、
unverified、證據過期或環境不符時,不得產生「已認證」結果。系統回傳結構化 form gap、effect gap、preservation violation 或 oracle-unavailable 原因。
- 原子提交:只有認證成功才能取代正式文件;任何失敗都保留原檔,候選副本與證明報告可供診斷。
- 認證證書:每次成功修改產生機器可讀且人可讀的證書,至少記錄來源雜湊、操作意圖、允許差異範圍、實際差異、三層 gate 結果、Word/字型/渲染環境版本及證據時間。
- 任意文件、保守修改:系統可以接收含未知 OOXML 的真實 DOCX;未知但未修改的內容由 raw byte-equal floor 保留。若修改會觸及尚未理解或無法驗證的內容,必須拒絕,而不是破壞或近似處理。
Actual
docs/word-imitation-methodology.md 已定義三層階梯與「主張必須綁 gate」「no probe, no claim」。
docx-render-semantics 與 docx-visual-diff-testing 已有真實 Word gated probes、幾何量測及視覺差異基礎,但目前是測試/registry 機制,不是每次正式修改的統一 runtime gate。
EditError.preserveViolation 已存在於規格,但 WordDocument.apply 的非目標 preservation check 仍標為 Phase 2c follow-up;現行 apply pipeline 仍信任 reducer 的 per-op semantics。
- render-effect registry 只證明目前已量測的部分效果,尚不能支撐「所有文件、所有改變、人與 AI 完全相同理解」的全域主張。
- MCP mutators、Edit algebra、overlay writer、visual oracle 與 certification evidence 尚未由單一 transaction orchestrator 串成不可繞過的提交路徑。
Impact
- 將 macdoc 的定位從「AI 可以操作 Word 的工具」提升為「任何 AI 或人類自動化都可依賴的文件修改可信層」。
- 防止長期最嚴重的失敗類型:文件表面可開啟但內容、格式、關聯或人類看到的結果已被非預期改動。
- 讓「支援」「理解」「無損」從產品宣稱變成可重跑、可稽核、可拒絕的證明。
- 這是跨 ooxml-swift、WordDSLSwift、docx workflow、che-word-mcp 與真實 Word oracle 的 umbrella feature,後續應以 Spectra 拆出清楚階段與驗收 gate。
Related
Current Status
Dashboard: For Reviewer / Collaborator
Phase: diagnosed
Last updated: 2026-07-17 by idd-diagnose
Key Decisions
- 採用分層認證協調器;OOXML 核心維持 deterministic 且不依賴 GUI。
- 認證只涵蓋證書明列的 scope、observable、evidence 與環境;未知項 fail closed。
- Complexity 判定為 Spectra;下一階段由使用者選定 spectra-discuss。
Scope Changes
Blocking
Commits
Problem
macdoc 不應把長期價值建立在「AI 還不會完整修改 Word」上,而應成為任何人類或 AI 修改 Word 文件時都能依賴的文件修改可信層。專案已具備 Word 模仿三層方法論:Layer 1 位元組保留、Layer 2 合法 typed operation 序列化、Layer 3 真實 Word 渲染效果驗證;缺口是這些 gate 尚未統一成每一次正式修改都不能繞過的執行契約。
本 issue 要把既有方法論從研究、量測與測試流程升格為 runtime certification contract:修改先在隔離候選上執行,只有在預期改變被證明、非預期改變不存在、文件可安全開啟,且人類透過 Word 實際看到的效果符合 AI 的可驗證主張時,才准以原子方式寫回正式文件。
Type
feature
Priority
P1(本週處理)
Expected
verified主張。unverified、證據過期或環境不符時,不得產生「已認證」結果。系統回傳結構化 form gap、effect gap、preservation violation 或 oracle-unavailable 原因。Actual
docs/word-imitation-methodology.md已定義三層階梯與「主張必須綁 gate」「no probe, no claim」。docx-render-semantics與docx-visual-diff-testing已有真實 Word gated probes、幾何量測及視覺差異基礎,但目前是測試/registry 機制,不是每次正式修改的統一 runtime gate。EditError.preserveViolation已存在於規格,但WordDocument.apply的非目標 preservation check 仍標為 Phase 2c follow-up;現行 apply pipeline 仍信任 reducer 的 per-op semantics。Impact
Related
docs/word-imitation-methodology.mddocs/render-effect-registry.mdopenspec/specs/ooxml-edit-algebra-runtime/spec.mdopenspec/specs/docx-render-semantics/spec.mdopenspec/specs/docx-visual-diff-testing/spec.mdCurrent Status
Dashboard: For Reviewer / Collaborator
Phase: diagnosed
Last updated: 2026-07-17 by idd-diagnose
Key Decisions
Scope Changes
Blocking
Commits