Problem
Original text :
「我記得che-word-mcp有一個大改動,就是想要用round test確保word修改不會有差的,我會建立swift腳本來測試,想看看目前到哪裡了」
— Source: 使用者直接輸入(2026-07-03 session)
使用者記憶中的「che-word-mcp 大改動」對應到 macdoc 的 Spectra change word-aligned-state-sync (把 ooxml-swift 從破壞性 typed model 改造為 lossless XmlNode tree + operation log + .mdocx Swift 腳本授權面)。此 issue 是該線的 GitHub tracking 入口 —— 之前進度只存在 openspec/changes/word-aligned-state-sync/ 裡,跨 repo 的 round-trip 損失 bugs 沒有單一 dashboard。
Type
tracking(feature line)
Priority
P2(排程)— 回鍋此線時可升級
Current Status (2026-07-03)
Spectra change word-aligned-state-sync:10/73 tasks
Phase
內容
目標版本
狀態
Phase 0
XmlNode tree 基礎(lossless 表示、identity round-trip、golden corpus、TreeRoundTripGoldenTests)
ooxml-swift v0.30.0
✅ 10/10 完成,已釋出
Phase 1
typed views 變 tree projections(Paragraph/Run/Table/SectionProperties/Settings)
v0.31.0
○ 未開始
Phase 2
Operation log(append-only + JSONL sidecar + reducer/undo/blame)
v0.32.0
○ 未開始
Phase 3
Word-import diff / SyncOrchestrator(conflict 偵測、file watcher、Word lock)
v0.33.0
○ 未開始
Phase 4
Script transcoder(op log ↔ .mdocx Swift 腳本、log→script→log round-trip、macdoc word reverse CLI)
v0.34.0
○ 未開始
Phase 5
v1.0.0 遷移清理(移除 legacy typed-only 路徑)
v1.0.0
○ 未開始
已鎖定 specs :ooxml-roundtrip-fidelity、ooxml-roundtrip-completeness、mdocx-grammar(.mdocx 語法 locked,transcoder 實作在 Phase 4)
既有測試面 :ooxml-swift RoundTripFidelityTests / TreeRoundTripCorpusTests / TreeRoundTripGoldenTests / DocumentXmlLosslessRoundTripTests 等;che-word-mcp RealWorldDocxRoundTripSmokeTests
姊妹 change :ooxml-edit-isomorphism-foundation(11/35)
關聯的 round-trip 損失 bugs(ooxml-swift,open)
Phase 0 的 tree 表示是這些 bug 的結構性解法;Phase 1 落地後應逐一回頭驗證:
Expected
.docx 經 read → mutate → save 後,未被編輯的部分零損(round-trip fidelity)
.mdocx Swift 腳本可作為驗證面:log → script → log 等價、script → docx 可迭代(Phase 4;即使用者想寫的 Swift 測試腳本歸屬處)
上列 4 個 ooxml-swift round-trip bugs 隨 phase 推進逐一清空
Actual
Phase 0 完成(tree 基礎 + golden corpus 已 merge、v0.30.0 已 tag)
Phase 1–5 未開始:typed views 尚未接上 tree,4 個 round-trip bugs 仍 open
.mdocx 語法已 locked 但 transcoder 未實作,Swift 腳本驗證還不可用
Impact
沒有這條線,任何經 che-word-mcp / ooxml-swift 寫回的 .docx 都可能靜默丟失未觸碰的內容(shapes、AlternateContent、多 section 結構、settings)—— 對使用者是不可逆的文件損壞風險。
Next Steps
/spectra-apply word-aligned-state-sync 續作 Phase 1(typed views → tree projections,v0.31.0)
Phase 1 落地後回頭驗證上列 4 個 bugs
Phase 4 建立 .mdocx Swift 腳本 round-trip 驗證
Clarity Surface(idd-clarify run 2026-07-03T03:53:43Z)
Type
Source
Suggested canonical
Status
ambiguity
"想要用round test確保word修改不會有差的"
「round test」非標準術語;候選解讀:(a) round-trip fidelity test(read→write 無損驗證,body 採此解);(b) 一般 regression test suite
surfaced
ambiguity
"我會建立swift腳本來測試"
「Swift 腳本」雙解:(a) .mdocx script transcoder 驗證面(Phase 4,body 採此解);(b) 一般 XCTest Swift 測試碼(RoundTripFidelityTests 等既存)
surfaced
ambiguity
"我記得che-word-mcp有一個大改動"
該大改動實際主體在 ooxml-swift + macdoc(word-aligned-state-sync change);che-word-mcp 是下游消費者,attribution 需注意
surfaced
missing-context
"確保word修改不會有差"
「不會有差」的 diff 判準未指定:byte-identical / normalizedFingerprint 等價(spec 現行判準)/ 語意等價 —— 三者嚴格度不同
surfaced
Current Status
Phase : verified
Last updated : 2026-08-24 by idd-verify
Key Decisions
Canonical sidecars use the full DOCX filename; legacy stem sidecars remain read-only fallback.
Legacy-only sessions migrate on next write without deleting or overwriting old files.
PR Align Word sidecar naming contract (#127) #149 merged current main without force-push and is now mergeable.
Scope Changes
Added explicit fresh-vs-legacy scenarios and aligned CLI help after review.
Blocking
Commits
ba6d976 merge main
40f50a7 legacy migration scenario
1b3e673 CLI help alignment
Problem
使用者記憶中的「che-word-mcp 大改動」對應到 macdoc 的 Spectra change word-aligned-state-sync(把 ooxml-swift 從破壞性 typed model 改造為 lossless XmlNode tree + operation log +
.mdocxSwift 腳本授權面)。此 issue 是該線的 GitHub tracking 入口 —— 之前進度只存在openspec/changes/word-aligned-state-sync/裡,跨 repo 的 round-trip 損失 bugs 沒有單一 dashboard。Type
tracking(feature line)
Priority
P2(排程)— 回鍋此線時可升級
Current Status (2026-07-03)
Spectra change
word-aligned-state-sync:10/73 tasksTreeRoundTripGoldenTests).mdocxSwift 腳本、log→script→log round-trip、macdoc word reverseCLI)已鎖定 specs:
ooxml-roundtrip-fidelity、ooxml-roundtrip-completeness、mdocx-grammar(.mdocx語法 locked,transcoder 實作在 Phase 4)既有測試面:ooxml-swift
RoundTripFidelityTests/TreeRoundTripCorpusTests/TreeRoundTripGoldenTests/DocumentXmlLosslessRoundTripTests等;che-word-mcpRealWorldDocxRoundTripSmokeTests姊妹 change:
ooxml-edit-isomorphism-foundation(11/35)關聯的 round-trip 損失 bugs(ooxml-swift,open)
Phase 0 的 tree 表示是這些 bug 的結構性解法;Phase 1 落地後應逐一回頭驗證:
Expected
.docx經 read → mutate → save 後,未被編輯的部分零損(round-trip fidelity).mdocxSwift 腳本可作為驗證面:log → script → log 等價、script → docx 可迭代(Phase 4;即使用者想寫的 Swift 測試腳本歸屬處)Actual
.mdocx語法已 locked 但 transcoder 未實作,Swift 腳本驗證還不可用Impact
沒有這條線,任何經 che-word-mcp / ooxml-swift 寫回的
.docx都可能靜默丟失未觸碰的內容(shapes、AlternateContent、多 section 結構、settings)—— 對使用者是不可逆的文件損壞風險。Next Steps
/spectra-apply word-aligned-state-sync續作 Phase 1(typed views → tree projections,v0.31.0).mdocxSwift 腳本 round-trip 驗證Clarity Surface(idd-clarify run 2026-07-03T03:53:43Z)
.mdocxscript transcoder 驗證面(Phase 4,body 採此解);(b) 一般 XCTest Swift 測試碼(RoundTripFidelityTests 等既存)Current Status
Phase: verified
Last updated: 2026-08-24 by idd-verify
Key Decisions
Scope Changes
Blocking
Commits
ba6d976merge main40f50a7legacy migration scenario1b3e673CLI help alignment