Skip to content

Word-canonical forms 對齊 — 讓真實 Word 文件升級 DSL channel(format-alignment step 2) #131

Description

@kiki830621

Problem

Original text:
「好,開一個新的 Spectra change 或 issue 來規劃這條線,所以看起來複製是step1, 然後用合法的operation來序列化是第二步」
— Source: 使用者於 format-alignment-engine(#130)完成歸檔後的方向指示(2026-07-08 session)

format-alignment-engine(#130,已歸檔,ooxml-swift v1.1.0–v1.3.0)完成了兩步框架的第一步:

  • Step 1 複製(done):raw channel byte-equal floor。真實 Word 文件(90_template_ja.docx、thesis-fixture)reverse → script → rebuild 全部 Stage B byte-equal
  • Step 2 用合法 operation 序列化(本 issue):讓真實 Word 文件的內容能被 typed operations 表示、且 reducer + serializer 重建出 identical bytes——即通過既有的 trial-rebuild byte-equal gate(Decision 3),使 DSL coverage 從 0% 誠實爬升。

現狀(docs/format-alignment-baselines.md 實測):五層 extraction(run rPr / paragraph pPr / sections / canonical tables / text+style)對自家 writer 產物已達 57.5% DSL coverage,但對 Word-authored 文件是 0%——extraction 在 Word 的 XML forms 上誠實 bail 到 raw:rsid 屬性群、多命名空間 root(mc:Ignorable 等)、xml:space、attribute 順序、以及 ReverseExtractor.Result.rawReasons 記錄的其他 unsupported-form

Type

feature

Expected

真實 Word 文件(以 90_template_ja.docx 為 acceptance fixture,經 MACDOC_TEMPLATE_DIR env-gate):

  1. document.xml 通過 trial-rebuild byte-equal gate 升級 DSL channel,aggregate coverage 顯著 > 0%
  2. 升級後 --slot 對它可用——實用驗收:對日本心理學會 template 指定 title/body slots,填新內容產生格式完整的新投稿文件template-content-slots spec 的 title-and-body scenario 在真實 template 上成立)
  3. Stage B 恆綠(既有 UpgradeClassGuardTests + FormatAlignmentAcceptanceTests 機制保護)

Actual

  • Word-authored 文件 DSL coverage = 0.0%(90_template_ja 13 parts / 134,050 bytes 全 raw;thesis-fixture 39 parts / 1,746,868 bytes 全 raw)
  • --slot 對 raw-channel 段落 loud-fail(strict mode 設計如此)

技術方向(初步,propose 時細化)

  1. Form-gap corpus 分析:細化 rawReasons 到具體 bail 點清單(元素/屬性/form 統計),對 gated real templates 跑量測,決定詞彙擴充的優先序
  2. 詞彙擴充:rsid 屬性群(w:rsidR/rsidRDefault/...)、root namespace 集參數化(emptyAuthoringDocument 目前固定 xmlns:w + xmlns:w14)、xml:space="preserve"、rPr/pPr 長尾(szCs、rFonts hint/hAnsi/cs、lang、kern…)
  3. Sibling parts 的 typed 化(styles.xml/settings.xml 等)可作為後續 phase——分母的大宗(sibling-part class)
  4. 每一步都受既有 trial-rebuild byte-equal gate 保護:升級只在 byte-equal 證明後發生,Stage A/B binary、無 fuzzy pass

Impact

關聯

Clarity Surface(idd-clarify run 2026-07-08T15:55:37Z)

Type Source Suggested canonical Status
ambiguity "aggregate coverage 顯著 > 0%" 「顯著」未定義具體驗收閾值——propose 時需定:以 90_template_ja 的 document.xml 佔比推導目標(如 document.xml 全升級 ≈ 34%),或以 slot 可用性(Expected #2)為功能性驗收、不設數值閾值 surfaced
missing-context "Form-gap corpus 分析:…對 gated real templates 跑量測" corpus 範圍未指定——目前已知僅 2 個 gated 真實文件(90_template_ja、thesis-fixture);是否需收集更多樣本(不同 Word 版本/語言/來源)以避免詞彙擴充過擬合單一 template surfaced

Linked-Context Siblings Filed (v2.48.0+ #529)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions