Skip to content

addCommentReply should emit body revision markup OR SUPPORT.md should be softened #174

@stevenobiajulu

Description

@stevenobiajulu

Context

Discovered during peer review of #143 ([120.8] regression suite).

packages/docx-core/SUPPORT.md Table A row for comments.ts:addCommentReply lists element set w:ins. The current implementation (#138) explicitly accepts ctx?: RevisionContext as plumbing only and emits NO body revision markup — replies modify only side parts (comments.xml, commentsExtended.xml, people.xml).

The Group A regression test in #143 asserts the actual current behavior (no body markup) and is named "currently leaves revision markup untouched and updates comments.xml only" — locking the divergence into the test suite as a known limitation.

Two options

Option A: Make addCommentReply emit body revision markup

If we want acceptAIEdits({ author: 'SafeDocX' }) to be able to "reject" an AI-authored comment reply (effectively undoing it), the reply needs SOME body-anchored revision marker. But where? Comments don't have body anchors per-reply — only the root comment has a <w:commentRangeStart>/<w:commentRangeEnd> anchor in the body.

One approach: emit a tracked write to commentsExtended.xml (the reply's <w15:commentEx> entry) — but that's a side-part metadata write, which falls under the package-mutation contract (Table B), not the revisionable surface (Table A).

Option B: Soften SUPPORT.md

Remove w:ins from the addCommentReply row's element column. Instead, list it as "package mutation only" with a Table B companion entry. The reply contract becomes: side-part metadata only; no body revision; cannot be selectively rejected by author-based accept/reject.

This is the simpler resolution and matches the implementation. The selective-accept contract for replies stays in Table B (covered by #122's non-revision change manifest).

Recommendation

Option B. addCommentReply doesn't fit the body-content revision pattern — it's inherently a side-part operation. Update SUPPORT.md to reflect that.

Acceptance criteria

  • SUPPORT.md row for addCommentReply either: (a) removed from Table A and added to Table B with the package-mutation contract, OR (b) annotated explicitly as "package mutation only; no body revision marker".
  • The Group A regression test in canonical-emission-regression.test.ts is renamed to reflect the Table B classification.

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    docstracked-changesTracked changes, comments, revision markers

    Type

    No type
    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