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
Context
Discovered during peer review of #143 ([120.8] regression suite).
packages/docx-core/SUPPORT.mdTable A row forcomments.ts:addCommentReplylists element setw:ins. The current implementation (#138) explicitly acceptsctx?: RevisionContextas 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:insfrom 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.
addCommentReplydoesn't fit the body-content revision pattern — it's inherently a side-part operation. Update SUPPORT.md to reflect that.Acceptance criteria
addCommentReplyeither: (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".canonical-emission-regression.test.tsis renamed to reflect the Table B classification.Related