Skip to content

test(docx-compare): characterize remaining LibreOffice note projection gaps #979

Description

@stevenobiajulu

Characterize remaining LibreOffice note projections after the reorder repair

Independent dynamic Claude Opus 5 review approved repair head a8c467c, but identified the following bounded follow-ups. Ref: #941, #973, #852.

Observed reader limitation (N1)

A synthetic document with an inline-edited footnote keeps correct in-process XML Accept/Reject projections, but LibreOffice Accept produces an empty note body. The reviewer reproduced the same result using a temporary emulation of base 31b1d8f (not an actual baseline checkout). An edited footnote combined with a moved endnote also loses note-body text in LibreOffice; the repaired head preserves paragraph projections while the emulated base does not.

The current fallback activates for copied footnotes, not merely copied endnotes. Do not claim that all mixed-kind note documents are repaired.

  • Reproduce on an actual clean baseline and current main, with public synthetic inputs, both move modes and Accept/Reject.
  • Assert anchor-to-note-body bindings separately from paragraph text.
  • Characterize inline-only edits and edited footnotes alongside moved endnotes.
  • Decide whether to extend the collision-safe separated-definition fallback across note kinds or separately repair inline-note reader handling. Preserve both projections and document history-granularity tradeoffs.

Lower-risk characterization (N3/N4 and coverage gap)

  • Probe mixed edited/moved inputs with lexical note IDs such as 01 and +1. The low-level normalizer canonicalizes IDs, but the pipeline fallback compares raw attribute strings. This was a static concern, not a reproduced regression.
  • Add a lone-stable-anchor mixed-note regression. That branch remains in original reconciliation, but the reviewer did not dynamically exercise it.
  • Evaluate whether the ordinary-property subtree allowance should explicitly exclude sectPr and non-property children. The reviewer observed annotationRef under rPr and plain sectPr under pPr pass the copy guard; the former is already schema-invalid input. No new identity collision was demonstrated.

Word is UNVERIFIED. Open-cleanly evidence is not an Accept/Reject oracle. Use public/synthetic inputs only; no private documents or derivatives. Keep the terminal-empty-paragraph limitation #891/#973 separate. Any production fix needs regression tests, full pre-submit, required real corpus, schema/projection checks and independent dynamic review.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions