@beyondwork/docx-react-component 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (704) hide show
  1. package/dist/chunk-32W6IVQE.js +7725 -0
  2. package/dist/chunk-32W6IVQE.js.map +1 -0
  3. package/dist/index.cjs +23722 -0
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.d.cts +7 -0
  6. package/dist/index.d.ts +7 -0
  7. package/dist/index.js +16011 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/public-types-DqCURAz8.d.cts +1152 -0
  10. package/dist/public-types-DqCURAz8.d.ts +1152 -0
  11. package/dist/tailwind.cjs +8295 -0
  12. package/dist/tailwind.cjs.map +1 -0
  13. package/dist/tailwind.d.cts +323 -0
  14. package/dist/tailwind.d.ts +323 -0
  15. package/dist/tailwind.js +553 -0
  16. package/dist/tailwind.js.map +1 -0
  17. package/package.json +52 -31
  18. package/.codex/config.toml +0 -5
  19. package/.corepack/v1/pnpm/10.30.3/.corepack +0 -1
  20. package/.corepack/v1/pnpm/10.30.3/LICENSE +0 -22
  21. package/.corepack/v1/pnpm/10.30.3/README.md +0 -240
  22. package/.corepack/v1/pnpm/10.30.3/dist/node-gyp-bin/node-gyp +0 -6
  23. package/.corepack/v1/pnpm/10.30.3/dist/node-gyp-bin/node-gyp.cmd +0 -5
  24. package/.corepack/v1/pnpm/10.30.3/dist/pnpm.cjs +0 -195400
  25. package/.corepack/v1/pnpm/10.30.3/dist/pnpmrc +0 -2
  26. package/.corepack/v1/pnpm/10.30.3/dist/reflink.darwin-arm64-2HJ4WGO6.node +0 -0
  27. package/.corepack/v1/pnpm/10.30.3/dist/reflink.darwin-x64-3G3H6IW4.node +0 -0
  28. package/.corepack/v1/pnpm/10.30.3/dist/reflink.win32-arm64-msvc-Q6BARPPB.node +0 -0
  29. package/.corepack/v1/pnpm/10.30.3/dist/reflink.win32-x64-msvc-J2TZHRQI.node +0 -0
  30. package/.corepack/v1/pnpm/10.30.3/dist/templates/completion.bash +0 -31
  31. package/.corepack/v1/pnpm/10.30.3/dist/templates/completion.fish +0 -22
  32. package/.corepack/v1/pnpm/10.30.3/dist/templates/completion.ps1 +0 -193
  33. package/.corepack/v1/pnpm/10.30.3/dist/templates/completion.zsh +0 -27
  34. package/.corepack/v1/pnpm/10.30.3/dist/vendor/fastlist-0.3.0-x64.exe +0 -0
  35. package/.corepack/v1/pnpm/10.30.3/dist/vendor/fastlist-0.3.0-x86.exe +0 -0
  36. package/.corepack/v1/pnpm/10.30.3/dist/worker.js +0 -10119
  37. package/.corepack/v1/pnpm/10.30.3/package.json +0 -192
  38. package/.cursor/mcp.json +0 -7
  39. package/.github/workflows/ci.yml +0 -35
  40. package/.mcp.json +0 -7
  41. package/.openclaw/workspace-state.json +0 -4
  42. package/.pnpmrc.json +0 -1
  43. package/.wave-launch.sh +0 -7
  44. package/.workspace-marker +0 -1
  45. package/AGENTS.md +0 -78
  46. package/CHANGELOG.md +0 -177
  47. package/DESIGN.md +0 -929
  48. package/HEARTBEAT.md +0 -7
  49. package/IDENTITY.md +0 -23
  50. package/SOUL.md +0 -36
  51. package/TOOLS.md +0 -40
  52. package/USER.md +0 -17
  53. package/docs/README.md +0 -107
  54. package/docs/agents/wave-cont-eval-role.md +0 -36
  55. package/docs/agents/wave-cont-qa-role.md +0 -52
  56. package/docs/agents/wave-deploy-verifier-role.md +0 -34
  57. package/docs/agents/wave-design-role.md +0 -47
  58. package/docs/agents/wave-documentation-role.md +0 -34
  59. package/docs/agents/wave-infra-role.md +0 -34
  60. package/docs/agents/wave-integration-role.md +0 -37
  61. package/docs/agents/wave-launcher-role.md +0 -41
  62. package/docs/agents/wave-orchestrator-role.md +0 -52
  63. package/docs/agents/wave-planner-role.md +0 -39
  64. package/docs/agents/wave-security-role.md +0 -40
  65. package/docs/architecture/docx/README.md +0 -10
  66. package/docs/architecture/future/README.md +0 -8
  67. package/docs/architecture/ooxml-upgrade-analysis.md +0 -134
  68. package/docs/architecture/platform/shared-openxml-editor-platform.md +0 -153
  69. package/docs/architecture/xlsx/canonical-workbook-model-and-commands.md +0 -187
  70. package/docs/architecture/xlsx/spreadsheet-editor-frontend-architecture.md +0 -150
  71. package/docs/comment-redline-overview.md +0 -350
  72. package/docs/concepts/context7-vs-skills.md +0 -118
  73. package/docs/concepts/operating-modes.md +0 -91
  74. package/docs/concepts/runtime-agnostic-orchestration.md +0 -111
  75. package/docs/concepts/what-is-a-wave.md +0 -217
  76. package/docs/context7/bundles.json +0 -222
  77. package/docs/context7/planner-agent/README.md +0 -28
  78. package/docs/context7/planner-agent/manifest.json +0 -83
  79. package/docs/context7/planner-agent/papers/cooperbench-why-coding-agents-cannot-be-your-teammates-yet.md +0 -3283
  80. package/docs/context7/planner-agent/papers/dova-deliberation-first-multi-agent-orchestration-for-autonomous-research-automation.md +0 -1699
  81. package/docs/context7/planner-agent/papers/dpbench-large-language-models-struggle-with-simultaneous-coordination.md +0 -2251
  82. package/docs/context7/planner-agent/papers/incremental-planning-to-control-a-blackboard-based-problem-solver.md +0 -1729
  83. package/docs/context7/planner-agent/papers/silo-bench-a-scalable-environment-for-evaluating-distributed-coordination-in-multi-agent-llm-systems.md +0 -3747
  84. package/docs/context7/planner-agent/papers/todoevolve-learning-to-architect-agent-planning-systems.md +0 -1675
  85. package/docs/context7/planner-agent/papers/verified-multi-agent-orchestration-a-plan-execute-verify-replan-framework-for-complex-query-resolution.md +0 -1173
  86. package/docs/context7/planner-agent/papers/why-do-multi-agent-llm-systems-fail.md +0 -5211
  87. package/docs/context7/planner-agent/topics/planning-and-orchestration.md +0 -24
  88. package/docs/evals/arm-templates/README.md +0 -13
  89. package/docs/evals/arm-templates/full-wave.json +0 -15
  90. package/docs/evals/arm-templates/single-agent.json +0 -15
  91. package/docs/evals/benchmark-catalog.json +0 -670
  92. package/docs/evals/cases/README.md +0 -47
  93. package/docs/evals/cases/wave-blackboard-inbox-targeting.json +0 -73
  94. package/docs/evals/cases/wave-contradiction-conflict.json +0 -104
  95. package/docs/evals/cases/wave-expert-routing-preservation.json +0 -69
  96. package/docs/evals/cases/wave-hidden-profile-private-evidence.json +0 -81
  97. package/docs/evals/cases/wave-premature-closure-guard.json +0 -71
  98. package/docs/evals/cases/wave-silo-cross-agent-state.json +0 -77
  99. package/docs/evals/cases/wave-simultaneous-lockstep.json +0 -92
  100. package/docs/evals/external-benchmarks.json +0 -85
  101. package/docs/evals/external-command-config.sample.json +0 -9
  102. package/docs/evals/external-command-config.swe-bench-pro.json +0 -8
  103. package/docs/evals/pilots/README.md +0 -47
  104. package/docs/evals/pilots/swe-bench-pro-public-full-wave-review-10.json +0 -64
  105. package/docs/evals/pilots/swe-bench-pro-public-pilot.json +0 -111
  106. package/docs/evals/wave-benchmark-program.md +0 -302
  107. package/docs/guides/planner.md +0 -220
  108. package/docs/guides/recommendations-0.8.9.md +0 -133
  109. package/docs/guides/signal-wrappers.md +0 -165
  110. package/docs/guides/terminal-surfaces.md +0 -96
  111. package/docs/image copy.png +0 -0
  112. package/docs/image.png +0 -0
  113. package/docs/images/image.png +0 -0
  114. package/docs/legal-feedback-architecture.md +0 -498
  115. package/docs/plans/component-cutover-matrix.json +0 -1072
  116. package/docs/plans/component-cutover-matrix.md +0 -307
  117. package/docs/plans/context7-wave-orchestrator.md +0 -155
  118. package/docs/plans/current-state.md +0 -198
  119. package/docs/plans/docx/README.md +0 -9
  120. package/docs/plans/examples/wave-benchmark-improvement.md +0 -108
  121. package/docs/plans/examples/wave-example-live-proof.md +0 -435
  122. package/docs/plans/master-plan.md +0 -224
  123. package/docs/plans/migration.md +0 -538
  124. package/docs/plans/operations/README.md +0 -7
  125. package/docs/plans/operations/wave-10-word-certification.md +0 -87
  126. package/docs/plans/operations/wave-8-railway-staging.md +0 -153
  127. package/docs/plans/operations/wave-9-manual-certification.md +0 -73
  128. package/docs/plans/platform/README.md +0 -9
  129. package/docs/plans/reference/legal-checklist-coverage.md +0 -258
  130. package/docs/plans/wave-orchestrator.md +0 -423
  131. package/docs/plans/waves/README.md +0 -75
  132. package/docs/plans/waves/completed/wave-0.md +0 -195
  133. package/docs/plans/waves/completed/wave-1.md +0 -379
  134. package/docs/plans/waves/completed/wave-10.md +0 -670
  135. package/docs/plans/waves/completed/wave-11.md +0 -335
  136. package/docs/plans/waves/completed/wave-12.md +0 -417
  137. package/docs/plans/waves/completed/wave-13.md +0 -316
  138. package/docs/plans/waves/completed/wave-14.md +0 -319
  139. package/docs/plans/waves/completed/wave-15.md +0 -321
  140. package/docs/plans/waves/completed/wave-16.md +0 -316
  141. package/docs/plans/waves/completed/wave-17.md +0 -331
  142. package/docs/plans/waves/completed/wave-18.md +0 -328
  143. package/docs/plans/waves/completed/wave-2.md +0 -438
  144. package/docs/plans/waves/completed/wave-3.md +0 -435
  145. package/docs/plans/waves/completed/wave-4.md +0 -430
  146. package/docs/plans/waves/completed/wave-5.md +0 -430
  147. package/docs/plans/waves/completed/wave-6.md +0 -430
  148. package/docs/plans/waves/completed/wave-7.md +0 -526
  149. package/docs/plans/waves/completed/wave-8.md +0 -596
  150. package/docs/plans/waves/completed/wave-9.md +0 -552
  151. package/docs/plans/waves/deferred/README.md +0 -14
  152. package/docs/plans/waves/deferred/encrypted-intake-contracts.md +0 -282
  153. package/docs/plans/waves/deferred/legal-feedback-wave-expansion.md +0 -308
  154. package/docs/plans/waves/deferred/wave-encrypted-intake.md +0 -451
  155. package/docs/plans/waves/design/README.md +0 -5
  156. package/docs/plans/waves/design/wave-1-a1.md +0 -309
  157. package/docs/plans/waves/reviews/README.md +0 -5
  158. package/docs/plans/waves/reviews/wave-0-cont-qa.md +0 -151
  159. package/docs/plans/waves/reviews/wave-1-cont-qa.md +0 -46
  160. package/docs/plans/waves/reviews/wave-10-accessibility-and-design.md +0 -51
  161. package/docs/plans/waves/reviews/wave-10-cont-qa.md +0 -24
  162. package/docs/plans/waves/reviews/wave-10-dashboard-proof.md +0 -46
  163. package/docs/plans/waves/reviews/wave-10-performance-signoff.md +0 -55
  164. package/docs/plans/waves/reviews/wave-10-regression-proof.md +0 -23
  165. package/docs/plans/waves/reviews/wave-10-release-audit.md +0 -31
  166. package/docs/plans/waves/reviews/wave-10-service-proof.md +0 -83
  167. package/docs/plans/waves/reviews/wave-10-word-certification.md +0 -31
  168. package/docs/plans/waves/reviews/wave-18-ai-contract-closure.md +0 -277
  169. package/docs/plans/waves/reviews/wave-18-cont-qa.md +0 -255
  170. package/docs/plans/waves/reviews/wave-18-parity-proof.md +0 -271
  171. package/docs/plans/waves/reviews/wave-19-cont-qa.md +0 -59
  172. package/docs/plans/waves/reviews/wave-2-cont-qa.md +0 -72
  173. package/docs/plans/waves/reviews/wave-20-cont-qa.md +0 -60
  174. package/docs/plans/waves/reviews/wave-25-cont-qa.md +0 -48
  175. package/docs/plans/waves/reviews/wave-28-cont-qa.md +0 -46
  176. package/docs/plans/waves/reviews/wave-29-cont-qa.md +0 -53
  177. package/docs/plans/waves/reviews/wave-3-cont-qa.md +0 -53
  178. package/docs/plans/waves/reviews/wave-3-core-proof.md +0 -77
  179. package/docs/plans/waves/reviews/wave-3-validator-proof.md +0 -73
  180. package/docs/plans/waves/reviews/wave-32-cont-qa.md +0 -43
  181. package/docs/plans/waves/reviews/wave-33-cont-qa.md +0 -526
  182. package/docs/plans/waves/reviews/wave-34-cont-qa.md +0 -100
  183. package/docs/plans/waves/reviews/wave-35-cont-qa.md +0 -145
  184. package/docs/plans/waves/reviews/wave-4-cont-qa.md +0 -47
  185. package/docs/plans/waves/reviews/wave-4-structure-proof.md +0 -69
  186. package/docs/plans/waves/reviews/wave-5-comment-proof.md +0 -158
  187. package/docs/plans/waves/reviews/wave-5-cont-qa.md +0 -68
  188. package/docs/plans/waves/reviews/wave-6-cont-qa.md +0 -416
  189. package/docs/plans/waves/reviews/wave-6-redline-proof.md +0 -130
  190. package/docs/plans/waves/reviews/wave-7-cont-qa.md +0 -82
  191. package/docs/plans/waves/reviews/wave-7-ooxml-compliance.md +0 -85
  192. package/docs/plans/waves/reviews/wave-7-preservation-proof.md +0 -119
  193. package/docs/plans/waves/reviews/wave-7-trust-ux.md +0 -87
  194. package/docs/plans/waves/reviews/wave-8-accessibility-and-design.md +0 -128
  195. package/docs/plans/waves/reviews/wave-8-cont-qa.md +0 -92
  196. package/docs/plans/waves/reviews/wave-8-live-proof.md +0 -140
  197. package/docs/plans/waves/reviews/wave-8-security.md +0 -47
  198. package/docs/plans/waves/reviews/wave-9-editor-embedding.md +0 -39
  199. package/docs/plans/waves/reviews/wave-9-fixture-runner.md +0 -56
  200. package/docs/plans/waves/reviews/wave-9-live-proof.md +0 -105
  201. package/docs/plans/waves/reviews/wave-9-usability-and-performance.md +0 -152
  202. package/docs/plans/waves/specs/README.md +0 -5
  203. package/docs/plans/waves/specs/wave-1-component-boundaries.md +0 -322
  204. package/docs/plans/waves/specs/wave-1-ooxml-contracts.md +0 -323
  205. package/docs/plans/waves/specs/wave-1-review-and-ui-contracts.md +0 -339
  206. package/docs/plans/waves/specs/wave-1-runtime-contracts.md +0 -509
  207. package/docs/plans/waves/wave-19.md +0 -341
  208. package/docs/plans/waves/wave-20.md +0 -308
  209. package/docs/plans/waves/wave-21.md +0 -289
  210. package/docs/plans/waves/wave-22.md +0 -221
  211. package/docs/plans/waves/wave-23.md +0 -295
  212. package/docs/plans/waves/wave-24.md +0 -286
  213. package/docs/plans/waves/wave-25.md +0 -313
  214. package/docs/plans/waves/wave-26.md +0 -300
  215. package/docs/plans/waves/wave-27.md +0 -299
  216. package/docs/plans/waves/wave-28.md +0 -368
  217. package/docs/plans/waves/wave-29.md +0 -303
  218. package/docs/plans/waves/wave-30.md +0 -307
  219. package/docs/plans/waves/wave-31.md +0 -231
  220. package/docs/plans/waves/wave-32.md +0 -152
  221. package/docs/plans/waves/wave-33.md +0 -147
  222. package/docs/plans/waves/wave-34.md +0 -148
  223. package/docs/plans/waves/wave-35.md +0 -141
  224. package/docs/plans/waves/wave-36.md +0 -146
  225. package/docs/plans/xlsx/README.md +0 -14
  226. package/docs/plans/xlsx/xlsx-fixture-corpus-and-certification-plan.md +0 -126
  227. package/docs/reference/cli-reference.md +0 -600
  228. package/docs/reference/coordination-and-closure.md +0 -487
  229. package/docs/reference/deep-research-report (15).md +0 -25
  230. package/docs/reference/docx/README.md +0 -10
  231. package/docs/reference/legal-checklist.md +0 -445
  232. package/docs/reference/live-proof-waves.md +0 -199
  233. package/docs/reference/ooxml-compliance.md +0 -129
  234. package/docs/reference/ooxml-feature-parity-matrix.md +0 -172
  235. package/docs/reference/platform/shared-ooxml-platform-guidance.md +0 -77
  236. package/docs/reference/prototype-agent-prompt-legal-fidelity.md +0 -155
  237. package/docs/reference/public-api.md +0 -456
  238. package/docs/reference/repository-guidance.md +0 -58
  239. package/docs/reference/runtime-config/README.md +0 -182
  240. package/docs/reference/runtime-config/claude.md +0 -110
  241. package/docs/reference/runtime-config/codex.md +0 -82
  242. package/docs/reference/runtime-config/opencode.md +0 -93
  243. package/docs/reference/sample-waves.md +0 -105
  244. package/docs/reference/skills.md +0 -237
  245. package/docs/reference/templates/AGENTS.md +0 -78
  246. package/docs/reference/templates/HEARTBEAT.md +0 -7
  247. package/docs/reference/templates/IDENTITY.md +0 -23
  248. package/docs/reference/templates/SOUL.md +0 -36
  249. package/docs/reference/templates/TOOLS.md +0 -40
  250. package/docs/reference/templates/USER.md +0 -17
  251. package/docs/reference/wave-control.md +0 -184
  252. package/docs/reference/wave-planning-lessons.md +0 -167
  253. package/docs/reference/word-review-editor-frontend-architecture.md +0 -479
  254. package/docs/reference/word-review-editor-ux-guide.md +0 -253
  255. package/docs/reference/xlsx/xlsx-ooxml-compliance.md +0 -137
  256. package/docs/research/agent-context-sources.md +0 -178
  257. package/docs/research/coordination-failure-review.md +0 -290
  258. package/docs/research/docx-react-component/Canonical Document Schema Specification for a React-based Word-compatible Editor.md +0 -2317
  259. package/docs/research/docx-react-component/Feature Compatibility Matrix for a React Word Compatible Legal Editor v1.md +0 -219
  260. package/docs/research/docx-react-component/React Component Architecture and Front-End Structure Specification for a Word-Compatible Legal Review Editor.md +0 -1112
  261. package/docs/research/docx-react-component/document_compatibility_and_testing_spec.md +0 -751
  262. package/docs/research/xlsx/raw/README.md +0 -13
  263. package/docs/roadmap.md +0 -174
  264. package/docs/superpowers/plans/2026-03-28-harness-control-bar.md +0 -677
  265. package/docs/superpowers/specs/2026-03-28-harness-control-bar-design.md +0 -274
  266. package/docs/xlsx-react/README.md +0 -38
  267. package/docs/xlsx-react/agent-llm-interaction-layer-docx-xlsx.md +0 -621
  268. package/docs/xlsx-react/canonical-workbook-model-and-commands.md +0 -948
  269. package/docs/xlsx-react/shared-openxml-editor-platform-docx-xlsx.md +0 -228
  270. package/docs/xlsx-react/spreadsheet-editor-component-architecture.md +0 -809
  271. package/docs/xlsx-react/spreadsheet-editor-frontend-architecture.md +0 -537
  272. package/docs/xlsx-react/spreadsheet-editor-ux-guide.md +0 -520
  273. package/docs/xlsx-react/xlsx-editor-research-pack.md +0 -871
  274. package/docs/xlsx-react/xlsx-fixture-corpus-and-certification-plan.md +0 -436
  275. package/docs/xlsx-react/xlsx-ooxml-compliance.md +0 -320
  276. package/examples/README.md +0 -16
  277. package/memory/MEMORY.md +0 -24
  278. package/pnpm-workspace.yaml +0 -4
  279. package/scripts/check-no-authored-js.sh +0 -13
  280. package/scripts/context7-api-check.sh +0 -65
  281. package/scripts/context7-export-env.sh +0 -42
  282. package/scripts/run-context7-mcp.sh +0 -8
  283. package/scripts/run-workspace-tests.sh +0 -15
  284. package/scripts/start-wave-10-local.sh +0 -189
  285. package/scripts/wave-agent-attach.sh +0 -47
  286. package/scripts/wave-auto-answer.sh +0 -118
  287. package/scripts/wave-dashboard-attach.sh +0 -13
  288. package/scripts/wave-launch.sh +0 -273
  289. package/scripts/wave-overnight-supervisor.sh +0 -145
  290. package/scripts/wave-status.sh +0 -379
  291. package/scripts/wave-watch.sh +0 -231
  292. package/services/README.md +0 -17
  293. package/services/openxml-validator/Dockerfile +0 -29
  294. package/services/openxml-validator/OpenXmlValidator.Api.csproj +0 -12
  295. package/services/openxml-validator/Program.cs +0 -436
  296. package/services/openxml-validator/README.md +0 -152
  297. package/services/openxml-validator/railway.json +0 -16
  298. package/services/react-word-editor/.tmp-a4/src/api/public-types.ts +0 -318
  299. package/services/react-word-editor/.tmp-a4/src/ui/WordReviewEditor.tsx +0 -1302
  300. package/services/react-word-editor/.tmp-a4/src/ui/editor-surface/editor-surface.tsx +0 -546
  301. package/services/react-word-editor/.tmp-a4/test/ui/word-review-editor.test.tsx +0 -146
  302. package/services/react-word-editor/.tmp-a4-build/src/api/public-types.js +0 -2
  303. package/services/react-word-editor/.tmp-a4-build/src/ui/WordReviewEditor.js +0 -818
  304. package/services/react-word-editor/.tmp-a4-build/src/ui/editor-surface/editor-surface.js +0 -229
  305. package/services/react-word-editor/.tmp-a4-build/test/ui/word-review-editor.test.js +0 -121
  306. package/services/react-word-editor/.tmp-wave-4-a3-tsconfig.json +0 -21
  307. package/services/react-word-editor/.tmp-wave-4-a3-tsconfig.tsbuildinfo +0 -1
  308. package/services/react-word-editor/Dockerfile +0 -26
  309. package/services/react-word-editor/README.md +0 -254
  310. package/services/react-word-editor/app/api/certification/route.ts +0 -79
  311. package/services/react-word-editor/app/api/demo-sessions/route.ts +0 -109
  312. package/services/react-word-editor/app/api/deploy-health/route.ts +0 -23
  313. package/services/react-word-editor/app/api/exports/[exportId]/route.ts +0 -34
  314. package/services/react-word-editor/app/api/exports/route.ts +0 -81
  315. package/services/react-word-editor/app/api/fixtures/[fixtureId]/run/route.ts +0 -100
  316. package/services/react-word-editor/app/api/health/route.ts +0 -70
  317. package/services/react-word-editor/app/api/runs/[runId]/route.ts +0 -36
  318. package/services/react-word-editor/app/api/scenarios/[scenarioId]/run/route.ts +0 -85
  319. package/services/react-word-editor/app/api/sessions/[sessionId]/route.ts +0 -199
  320. package/services/react-word-editor/app/api/sessions/[sessionId]/source/route.ts +0 -45
  321. package/services/react-word-editor/app/api/uploads/route.ts +0 -70
  322. package/services/react-word-editor/app/api/validate/route.ts +0 -310
  323. package/services/react-word-editor/app/certification/[runId]/page.tsx +0 -14
  324. package/services/react-word-editor/app/certification/page.tsx +0 -32
  325. package/services/react-word-editor/app/dashboard/page.tsx +0 -7
  326. package/services/react-word-editor/app/demo/page.tsx +0 -30
  327. package/services/react-word-editor/app/demo/prototype-client.tsx +0 -1080
  328. package/services/react-word-editor/app/editor/[sessionId]/page.tsx +0 -33
  329. package/services/react-word-editor/app/fixtures/page.tsx +0 -7
  330. package/services/react-word-editor/app/globals.css +0 -121
  331. package/services/react-word-editor/app/layout.tsx +0 -32
  332. package/services/react-word-editor/app/page.tsx +0 -30
  333. package/services/react-word-editor/app/runs/[runId]/page.tsx +0 -34
  334. package/services/react-word-editor/app/wave-10-word-review/page.tsx +0 -7
  335. package/services/react-word-editor/components/harness-control-bar.tsx +0 -289
  336. package/services/react-word-editor/components/harness-editor-session-client.tsx +0 -1214
  337. package/services/react-word-editor/components/harness-workspace-page.tsx +0 -715
  338. package/services/react-word-editor/components/reduced-motion-toggle.tsx +0 -79
  339. package/services/react-word-editor/components/workspace-certification-panel.tsx +0 -307
  340. package/services/react-word-editor/lib/certification-bundle.ts +0 -796
  341. package/services/react-word-editor/lib/certification-store.ts +0 -661
  342. package/services/react-word-editor/lib/demo-fixtures.test.mjs +0 -195
  343. package/services/react-word-editor/lib/demo-fixtures.ts +0 -1519
  344. package/services/react-word-editor/lib/editor-session-summary.test.mjs +0 -68
  345. package/services/react-word-editor/lib/editor-session-summary.ts +0 -14
  346. package/services/react-word-editor/lib/editor-session.ts +0 -228
  347. package/services/react-word-editor/lib/exports-route.test.mjs +0 -32
  348. package/services/react-word-editor/lib/harness-client.ts +0 -347
  349. package/services/react-word-editor/lib/harness-config.json +0 -30
  350. package/services/react-word-editor/lib/harness-config.test.mjs +0 -31
  351. package/services/react-word-editor/lib/harness-config.ts +0 -21
  352. package/services/react-word-editor/lib/harness-editor-datastore.test.mjs +0 -220
  353. package/services/react-word-editor/lib/harness-editor-datastore.ts +0 -161
  354. package/services/react-word-editor/lib/private-mode.test.mjs +0 -42
  355. package/services/react-word-editor/lib/private-mode.ts +0 -61
  356. package/services/react-word-editor/lib/regression-report.test.mjs +0 -352
  357. package/services/react-word-editor/lib/regression-report.ts +0 -896
  358. package/services/react-word-editor/lib/run-artifacts.ts +0 -934
  359. package/services/react-word-editor/lib/run-history.ts +0 -755
  360. package/services/react-word-editor/lib/scenario-artifacts.test.mjs +0 -41
  361. package/services/react-word-editor/lib/scenario-artifacts.ts +0 -44
  362. package/services/react-word-editor/lib/storage.ts +0 -953
  363. package/services/react-word-editor/lib/validator-client.test.mjs +0 -54
  364. package/services/react-word-editor/lib/validator-client.ts +0 -95
  365. package/services/react-word-editor/lib/workspace-navigation.ts +0 -79
  366. package/services/react-word-editor/middleware.ts +0 -35
  367. package/services/react-word-editor/next-env.d.ts +0 -6
  368. package/services/react-word-editor/next.config.mjs +0 -15
  369. package/services/react-word-editor/package.json +0 -38
  370. package/services/react-word-editor/postcss.config.mjs +0 -8
  371. package/services/react-word-editor/railway.json +0 -21
  372. package/services/react-word-editor/scripts/wave-10-certification.mjs +0 -101
  373. package/services/react-word-editor/scripts/wave-9-live-usability-pilot.mjs +0 -911
  374. package/services/react-word-editor/tsconfig.json +0 -39
  375. package/services/react-word-editor/tsconfig.tsbuildinfo +0 -1
  376. package/skills/README.md +0 -48
  377. package/skills/domain-docx-compatibility/SKILL.md +0 -44
  378. package/skills/domain-docx-compatibility/skill.json +0 -19
  379. package/skills/domain-editor-architecture/SKILL.md +0 -49
  380. package/skills/domain-editor-architecture/skill.json +0 -19
  381. package/skills/domain-legal-review/SKILL.md +0 -39
  382. package/skills/domain-legal-review/skill.json +0 -19
  383. package/skills/provider-aws/SKILL.md +0 -117
  384. package/skills/provider-aws/adapters/claude.md +0 -1
  385. package/skills/provider-aws/adapters/codex.md +0 -1
  386. package/skills/provider-aws/references/service-verification.md +0 -39
  387. package/skills/provider-aws/skill.json +0 -54
  388. package/skills/provider-custom-deploy/SKILL.md +0 -64
  389. package/skills/provider-custom-deploy/skill.json +0 -50
  390. package/skills/provider-docker-compose/SKILL.md +0 -96
  391. package/skills/provider-docker-compose/adapters/local.md +0 -1
  392. package/skills/provider-docker-compose/skill.json +0 -53
  393. package/skills/provider-github-release/SKILL.md +0 -121
  394. package/skills/provider-github-release/adapters/claude.md +0 -1
  395. package/skills/provider-github-release/adapters/codex.md +0 -1
  396. package/skills/provider-github-release/skill.json +0 -55
  397. package/skills/provider-kubernetes/SKILL.md +0 -143
  398. package/skills/provider-kubernetes/adapters/claude.md +0 -1
  399. package/skills/provider-kubernetes/adapters/codex.md +0 -1
  400. package/skills/provider-kubernetes/references/kubectl-patterns.md +0 -58
  401. package/skills/provider-kubernetes/skill.json +0 -52
  402. package/skills/provider-railway/SKILL.md +0 -123
  403. package/skills/provider-railway/adapters/claude.md +0 -1
  404. package/skills/provider-railway/adapters/codex.md +0 -1
  405. package/skills/provider-railway/adapters/local.md +0 -1
  406. package/skills/provider-railway/adapters/opencode.md +0 -1
  407. package/skills/provider-railway/references/verification-commands.md +0 -39
  408. package/skills/provider-railway/skill.json +0 -71
  409. package/skills/provider-ssh-manual/SKILL.md +0 -97
  410. package/skills/provider-ssh-manual/skill.json +0 -54
  411. package/skills/repo-coding-rules/SKILL.md +0 -55
  412. package/skills/repo-coding-rules/skill.json +0 -34
  413. package/skills/role-cont-eval/SKILL.md +0 -91
  414. package/skills/role-cont-eval/adapters/codex.md +0 -1
  415. package/skills/role-cont-eval/skill.json +0 -36
  416. package/skills/role-cont-qa/SKILL.md +0 -100
  417. package/skills/role-cont-qa/adapters/claude.md +0 -1
  418. package/skills/role-cont-qa/skill.json +0 -36
  419. package/skills/role-deploy/SKILL.md +0 -97
  420. package/skills/role-deploy/skill.json +0 -36
  421. package/skills/role-design/SKILL.md +0 -50
  422. package/skills/role-design/skill.json +0 -36
  423. package/skills/role-documentation/SKILL.md +0 -76
  424. package/skills/role-documentation/skill.json +0 -36
  425. package/skills/role-implementation/SKILL.md +0 -45
  426. package/skills/role-implementation/skill.json +0 -36
  427. package/skills/role-infra/SKILL.md +0 -81
  428. package/skills/role-infra/skill.json +0 -36
  429. package/skills/role-integration/SKILL.md +0 -91
  430. package/skills/role-integration/skill.json +0 -36
  431. package/skills/role-planner/SKILL.md +0 -39
  432. package/skills/role-planner/skill.json +0 -21
  433. package/skills/role-research/SKILL.md +0 -65
  434. package/skills/role-research/skill.json +0 -36
  435. package/skills/role-security/SKILL.md +0 -60
  436. package/skills/role-security/skill.json +0 -36
  437. package/skills/runtime-claude/SKILL.md +0 -66
  438. package/skills/runtime-claude/skill.json +0 -36
  439. package/skills/runtime-codex/SKILL.md +0 -58
  440. package/skills/runtime-codex/skill.json +0 -36
  441. package/skills/runtime-local/SKILL.md +0 -46
  442. package/skills/runtime-local/skill.json +0 -36
  443. package/skills/runtime-opencode/SKILL.md +0 -58
  444. package/skills/runtime-opencode/skill.json +0 -36
  445. package/skills/signal-hygiene/SKILL.md +0 -51
  446. package/skills/signal-hygiene/skill.json +0 -20
  447. package/skills/tui-design/SKILL.md +0 -77
  448. package/skills/tui-design/references/tui-design.md +0 -259
  449. package/skills/tui-design/skill.json +0 -36
  450. package/skills/wave-core/SKILL.md +0 -141
  451. package/skills/wave-core/references/marker-syntax.md +0 -70
  452. package/skills/wave-core/skill.json +0 -35
  453. package/src/README.md +0 -85
  454. package/src/api/README.md +0 -22
  455. package/src/api/public-types.ts +0 -525
  456. package/src/component-inventory.md +0 -99
  457. package/src/core/README.md +0 -10
  458. package/src/core/commands/README.md +0 -3
  459. package/src/core/commands/formatting-commands.ts +0 -161
  460. package/src/core/commands/image-commands.ts +0 -144
  461. package/src/core/commands/index.ts +0 -1013
  462. package/src/core/commands/list-commands.ts +0 -370
  463. package/src/core/commands/review-commands.ts +0 -108
  464. package/src/core/commands/text-commands.ts +0 -119
  465. package/src/core/schema/README.md +0 -3
  466. package/src/core/schema/text-schema.ts +0 -512
  467. package/src/core/selection/README.md +0 -3
  468. package/src/core/selection/mapping.ts +0 -238
  469. package/src/core/selection/review-anchors.ts +0 -94
  470. package/src/core/state/README.md +0 -3
  471. package/src/core/state/editor-state.ts +0 -580
  472. package/src/core/state/text-transaction.ts +0 -276
  473. package/src/formats/xlsx/io/parse-shared-strings.ts +0 -41
  474. package/src/formats/xlsx/io/parse-sheet.ts +0 -289
  475. package/src/formats/xlsx/io/parse-styles.ts +0 -57
  476. package/src/formats/xlsx/io/parse-workbook.ts +0 -75
  477. package/src/formats/xlsx/io/xlsx-session.ts +0 -306
  478. package/src/formats/xlsx/model/cell.ts +0 -189
  479. package/src/formats/xlsx/model/sheet.ts +0 -244
  480. package/src/formats/xlsx/model/styles.ts +0 -118
  481. package/src/formats/xlsx/model/workbook.ts +0 -449
  482. package/src/io/README.md +0 -10
  483. package/src/io/docx-session.ts +0 -1763
  484. package/src/io/export/README.md +0 -3
  485. package/src/io/export/export-session.ts +0 -165
  486. package/src/io/export/minimal-docx.ts +0 -115
  487. package/src/io/export/reattach-preserved-parts.ts +0 -54
  488. package/src/io/export/serialize-comments.ts +0 -876
  489. package/src/io/export/serialize-footnotes.ts +0 -217
  490. package/src/io/export/serialize-headers-footers.ts +0 -200
  491. package/src/io/export/serialize-main-document.ts +0 -982
  492. package/src/io/export/serialize-numbering.ts +0 -97
  493. package/src/io/export/serialize-revisions.ts +0 -389
  494. package/src/io/export/serialize-runtime-revisions.ts +0 -265
  495. package/src/io/export/serialize-tables.ts +0 -147
  496. package/src/io/export/split-review-boundaries.ts +0 -194
  497. package/src/io/normalize/README.md +0 -3
  498. package/src/io/normalize/normalize-text.ts +0 -437
  499. package/src/io/ooxml/README.md +0 -3
  500. package/src/io/ooxml/parse-comments.ts +0 -779
  501. package/src/io/ooxml/parse-complex-content.ts +0 -287
  502. package/src/io/ooxml/parse-fields.ts +0 -438
  503. package/src/io/ooxml/parse-footnotes.ts +0 -403
  504. package/src/io/ooxml/parse-headers-footers.ts +0 -483
  505. package/src/io/ooxml/parse-inline-media.ts +0 -431
  506. package/src/io/ooxml/parse-main-document.ts +0 -1846
  507. package/src/io/ooxml/parse-numbering.ts +0 -425
  508. package/src/io/ooxml/parse-revisions.ts +0 -658
  509. package/src/io/ooxml/parse-shapes.ts +0 -271
  510. package/src/io/ooxml/parse-tables.ts +0 -568
  511. package/src/io/ooxml/parse-theme.ts +0 -314
  512. package/src/io/ooxml/part-manifest.ts +0 -136
  513. package/src/io/ooxml/revision-boundaries.ts +0 -351
  514. package/src/io/opc/README.md +0 -3
  515. package/src/io/opc/corrupt-package.ts +0 -166
  516. package/src/io/opc/docx-package.ts +0 -74
  517. package/src/io/opc/package-reader.ts +0 -320
  518. package/src/io/opc/package-writer.ts +0 -273
  519. package/src/model/README.md +0 -3
  520. package/src/model/canonical-document.ts +0 -1911
  521. package/src/model/cds-1.0.0.ts +0 -196
  522. package/src/model/snapshot.ts +0 -393
  523. package/src/preservation/README.md +0 -3
  524. package/src/preservation/markup-compatibility.ts +0 -48
  525. package/src/preservation/opaque-fragment-store.ts +0 -89
  526. package/src/preservation/opaque-region.ts +0 -233
  527. package/src/preservation/package-preservation.ts +0 -120
  528. package/src/preservation/preserved-part-manifest.ts +0 -56
  529. package/src/preservation/relationship-retention.ts +0 -57
  530. package/src/preservation/store.ts +0 -185
  531. package/src/review/README.md +0 -16
  532. package/src/review/store/README.md +0 -3
  533. package/src/review/store/comment-anchors.ts +0 -70
  534. package/src/review/store/comment-remapping.ts +0 -154
  535. package/src/review/store/comment-store.ts +0 -331
  536. package/src/review/store/comment-thread.ts +0 -109
  537. package/src/review/store/revision-actions.ts +0 -394
  538. package/src/review/store/revision-store.ts +0 -303
  539. package/src/review/store/revision-types.ts +0 -168
  540. package/src/review/store/runtime-comment-store.ts +0 -43
  541. package/src/runtime/README.md +0 -3
  542. package/src/runtime/ai-action-policy.ts +0 -764
  543. package/src/runtime/document-runtime.ts +0 -969
  544. package/src/runtime/read-only-diagnostics-runtime.ts +0 -232
  545. package/src/runtime/review-runtime.ts +0 -44
  546. package/src/runtime/revision-runtime.ts +0 -107
  547. package/src/runtime/session-capabilities.ts +0 -138
  548. package/src/runtime/surface-projection.ts +0 -570
  549. package/src/runtime/table-commands.ts +0 -84
  550. package/src/runtime/table-schema.ts +0 -125
  551. package/src/ui/README.md +0 -30
  552. package/src/ui/WordReviewEditor.tsx +0 -1283
  553. package/src/ui/comments/README.md +0 -3
  554. package/src/ui/compatibility/README.md +0 -3
  555. package/src/ui/editor-surface/README.md +0 -3
  556. package/src/ui/headless/comment-decoration-model.ts +0 -124
  557. package/src/ui/headless/revision-decoration-model.ts +0 -128
  558. package/src/ui/headless/selection-helpers.ts +0 -34
  559. package/src/ui/headless/use-editor-keyboard.ts +0 -98
  560. package/src/ui/review/README.md +0 -3
  561. package/src/ui/shared/revision-filters.ts +0 -31
  562. package/src/ui/status/README.md +0 -3
  563. package/src/ui/theme/README.md +0 -3
  564. package/src/ui/toolbar/README.md +0 -3
  565. package/src/ui-tailwind/chrome/tw-alert-banner.tsx +0 -48
  566. package/src/ui-tailwind/chrome/tw-selection-toolbar.tsx +0 -44
  567. package/src/ui-tailwind/chrome/tw-unsaved-modal.tsx +0 -58
  568. package/src/ui-tailwind/chrome/use-before-unload.ts +0 -20
  569. package/src/ui-tailwind/editor-surface/pm-command-bridge.ts +0 -139
  570. package/src/ui-tailwind/editor-surface/pm-decorations.ts +0 -98
  571. package/src/ui-tailwind/editor-surface/pm-position-map.ts +0 -123
  572. package/src/ui-tailwind/editor-surface/pm-schema.ts +0 -452
  573. package/src/ui-tailwind/editor-surface/pm-state-from-snapshot.ts +0 -327
  574. package/src/ui-tailwind/editor-surface/search-plugin.ts +0 -157
  575. package/src/ui-tailwind/editor-surface/tw-caret.tsx +0 -12
  576. package/src/ui-tailwind/editor-surface/tw-editor-surface.tsx +0 -150
  577. package/src/ui-tailwind/editor-surface/tw-inline-token.tsx +0 -118
  578. package/src/ui-tailwind/editor-surface/tw-opaque-block.tsx +0 -52
  579. package/src/ui-tailwind/editor-surface/tw-paragraph-block.tsx +0 -151
  580. package/src/ui-tailwind/editor-surface/tw-prosemirror-surface.tsx +0 -215
  581. package/src/ui-tailwind/editor-surface/tw-segment-view.tsx +0 -111
  582. package/src/ui-tailwind/editor-surface/tw-table-node-view.tsx +0 -108
  583. package/src/ui-tailwind/index.ts +0 -61
  584. package/src/ui-tailwind/review/tw-comment-sidebar.tsx +0 -276
  585. package/src/ui-tailwind/review/tw-health-panel.tsx +0 -120
  586. package/src/ui-tailwind/review/tw-review-rail.tsx +0 -120
  587. package/src/ui-tailwind/review/tw-revision-sidebar.tsx +0 -164
  588. package/src/ui-tailwind/status/tw-status-bar.tsx +0 -58
  589. package/src/ui-tailwind/theme/editor-theme.css +0 -190
  590. package/src/ui-tailwind/toolbar/tw-toolbar-icon-button.tsx +0 -48
  591. package/src/ui-tailwind/toolbar/tw-toolbar.tsx +0 -231
  592. package/src/ui-tailwind/tw-review-workspace.tsx +0 -140
  593. package/src/validation/README.md +0 -3
  594. package/src/validation/compatibility-engine.ts +0 -317
  595. package/src/validation/compatibility-report.ts +0 -160
  596. package/src/validation/diagnostics.ts +0 -203
  597. package/src/validation/import-diagnostics.ts +0 -128
  598. package/src/validation/low-priority-word-surfaces.ts +0 -373
  599. package/test/README.md +0 -16
  600. package/test/core/formatting-commands.test.ts +0 -285
  601. package/test/core/image-commands.test.ts +0 -298
  602. package/test/core/mapping.test.ts +0 -186
  603. package/test/core/text-commands.test.ts +0 -176
  604. package/test/fixtures/docx/F01-basic-contract.docx +0 -0
  605. package/test/fixtures/docx/F01-basic-contract.md +0 -33
  606. package/test/fixtures/docx/F02-headings-styles.docx +0 -0
  607. package/test/fixtures/docx/F02-headings-styles.md +0 -33
  608. package/test/fixtures/docx/F03-legal-outline-numbering.docx +0 -0
  609. package/test/fixtures/docx/F03-legal-outline-numbering.md +0 -34
  610. package/test/fixtures/docx/F04-restart-numbering-schedules.docx +0 -0
  611. package/test/fixtures/docx/F04-restart-numbering-schedules.md +0 -33
  612. package/test/fixtures/docx/F05-table-heavy-agreement.docx +0 -0
  613. package/test/fixtures/docx/F05-table-heavy-agreement.md +0 -34
  614. package/test/fixtures/docx/F06-merged-cells-signature-table.docx +0 -0
  615. package/test/fixtures/docx/F06-merged-cells-signature-table.md +0 -34
  616. package/test/fixtures/docx/F07-inline-images-exhibit.docx +0 -0
  617. package/test/fixtures/docx/F07-inline-images-exhibit.md +0 -34
  618. package/test/fixtures/docx/F08-hyperlinks.docx +0 -0
  619. package/test/fixtures/docx/F08-hyperlinks.md +0 -33
  620. package/test/fixtures/docx/F09-comments-single-paragraph.docx +0 -0
  621. package/test/fixtures/docx/F09-comments-single-paragraph.md +0 -33
  622. package/test/fixtures/docx/F10-threaded-comments-resolve.docx +0 -0
  623. package/test/fixtures/docx/F10-threaded-comments-resolve.md +0 -33
  624. package/test/fixtures/docx/F11-redlines-basic.docx +0 -0
  625. package/test/fixtures/docx/F11-redlines-basic.md +0 -33
  626. package/test/fixtures/docx/F12-redlines-paragraph-joins-splits.docx +0 -0
  627. package/test/fixtures/docx/F12-redlines-paragraph-joins-splits.md +0 -33
  628. package/test/fixtures/docx/F13-comments-on-deleted-text.docx +0 -0
  629. package/test/fixtures/docx/F13-comments-on-deleted-text.md +0 -33
  630. package/test/fixtures/docx/F14-revisions-in-tables-and-lists.docx +0 -0
  631. package/test/fixtures/docx/F14-revisions-in-tables-and-lists.md +0 -33
  632. package/test/fixtures/docx/F15-sections-headers-footers.docx +0 -0
  633. package/test/fixtures/docx/F15-sections-headers-footers.md +0 -33
  634. package/test/fixtures/docx/F16-footnotes-endnotes.docx +0 -0
  635. package/test/fixtures/docx/F16-footnotes-endnotes.md +0 -33
  636. package/test/fixtures/docx/F17-fields-and-toc.docx +0 -0
  637. package/test/fixtures/docx/F17-fields-and-toc.md +0 -33
  638. package/test/fixtures/docx/F18-content-controls-template.docx +0 -0
  639. package/test/fixtures/docx/F18-content-controls-template.md +0 -33
  640. package/test/fixtures/docx/F19-custom-xml-doc-assembly.docx +0 -0
  641. package/test/fixtures/docx/F19-custom-xml-doc-assembly.md +0 -35
  642. package/test/fixtures/docx/F20-unknown-ooxml-and-alternatecontent.docx +0 -0
  643. package/test/fixtures/docx/F20-unknown-ooxml-and-alternatecontent.md +0 -33
  644. package/test/fixtures/docx/F21-malformed-broken-docx.docx +0 -0
  645. package/test/fixtures/docx/F21-malformed-broken-docx.md +0 -33
  646. package/test/fixtures/docx/README.md +0 -74
  647. package/test/fixtures/docx/certification-manifest.json +0 -104
  648. package/test/fixtures/docx/fixtures.manifest.json +0 -196
  649. package/test/fixtures/encrypted-docx/README.md +0 -27
  650. package/test/fixtures/encrypted-docx/certification-manifest.json +0 -9
  651. package/test/fixtures/encrypted-docx/fixtures.manifest.json +0 -47
  652. package/test/fixtures/scenarios/docx/README.md +0 -25
  653. package/test/fixtures/scenarios/docx/S01-sow-template.docx +0 -0
  654. package/test/fixtures/scenarios/docx/S01-sow-template.md +0 -30
  655. package/test/fixtures/scenarios/docx/S02-bw-partner-user-licence-agreement-redlines.docx +0 -0
  656. package/test/fixtures/scenarios/docx/S02-bw-partner-user-licence-agreement-redlines.md +0 -32
  657. package/test/fixtures/scenarios/docx/scenario-manifest.json +0 -53
  658. package/test/formats/xlsx/io/xlsx-import.test.ts +0 -766
  659. package/test/formats/xlsx/model/workbook.test.ts +0 -669
  660. package/test/helpers/dom-setup.ts +0 -124
  661. package/test/io/comment-roundtrip.test.ts +0 -272
  662. package/test/io/complex-content-roundtrip.test.ts +0 -632
  663. package/test/io/docx-compatibility-regression.test.ts +0 -199
  664. package/test/io/docx-session.test.ts +0 -1495
  665. package/test/io/footnotes-roundtrip.test.ts +0 -318
  666. package/test/io/headers-footers-roundtrip.test.ts +0 -547
  667. package/test/io/numbering-roundtrip.test.ts +0 -234
  668. package/test/io/package-reader.test.ts +0 -199
  669. package/test/io/paragraph-properties-roundtrip.test.ts +0 -129
  670. package/test/io/preserved-package-roundtrip.test.ts +0 -365
  671. package/test/io/property-completeness.test.ts +0 -292
  672. package/test/io/revision-roundtrip.test.ts +0 -347
  673. package/test/io/structural-blocks.test.ts +0 -202
  674. package/test/io/table-media-roundtrip.test.ts +0 -448
  675. package/test/io/table-properties-roundtrip.test.ts +0 -569
  676. package/test/io/table-roundtrip.test.ts +0 -302
  677. package/test/io/text-roundtrip.test.ts +0 -344
  678. package/test/model/canonical-document.test.ts +0 -285
  679. package/test/preservation/opaque-fragment-store.test.ts +0 -121
  680. package/test/preservation/package-preservation.test.ts +0 -395
  681. package/test/preservation/store.test.ts +0 -84
  682. package/test/review/comment-remapping.test.ts +0 -220
  683. package/test/review/comment-store.test.ts +0 -180
  684. package/test/review/move-revisions.test.ts +0 -143
  685. package/test/review/property-change-revisions.test.ts +0 -225
  686. package/test/review/revision-actions.test.ts +0 -330
  687. package/test/review/revision-store.test.ts +0 -193
  688. package/test/runtime/session-capabilities.test.ts +0 -260
  689. package/test/runtime/table-commands.test.ts +0 -356
  690. package/test/runtime/table-schema.test.ts +0 -221
  691. package/test/runtime/tracked-changes-toggle.test.ts +0 -107
  692. package/test/ui/comment-review-surface.test.tsx +0 -114
  693. package/test/ui/reduced-motion-toggle.test.tsx +0 -137
  694. package/test/ui/word-review-editor.imported-scenarios.test.tsx +0 -169
  695. package/test/ui/word-review-editor.interaction.test.tsx +0 -1198
  696. package/test/ui/word-review-editor.test.js +0 -188
  697. package/test/ui/word-review-editor.test.tsx +0 -280
  698. package/test/ui-tailwind/search-plugin.test.ts +0 -286
  699. package/test/validation/compatibility-engine.test.ts +0 -336
  700. package/test/validation/compatibility-report.test.ts +0 -189
  701. package/test/validation/low-priority-word-surfaces.test.ts +0 -282
  702. package/test/validation/malformed-doc.test.ts +0 -113
  703. package/test-results/.last-run.json +0 -4
  704. package/wave.config.json +0 -406
@@ -1,219 +0,0 @@
1
- # Feature Compatibility Matrix for a React Word Compatible Legal Editor v1
2
-
3
- ## Support philosophy and integrity contract
4
-
5
- This v1 editor is engineered for **legal review workflows** (contracts, pleadings, deal docs, redlines, comment-based review), not for full Microsoft Word feature parity. The guiding rule is **“roundtrip integrity over rendering fidelity”**: exported `.docx` must reopen in modern Word without repair dialogs and without structural damage, even if the on-screen layout in the browser is simplified. citeturn15search3turn15search13turn10search3
6
-
7
- The interoperability contract is based on these WordprocessingML realities:
8
-
9
- - A Word document body is fundamentally **block structures** (e.g., paragraphs and tables) where a paragraph (`w:p`) contains runs (`w:r`) and text (`w:t`), plus annotations like comments and revisions. citeturn6search3turn4search7turn13search0turn16search1
10
- - Critical legal review constructs (comments, tracked changes, numbering, tables) are represented as **specific OOXML elements and parts** (e.g., `comments.xml`, `commentsExtended.xml`, `numbering.xml`, headers/footers parts). citeturn9search17turn11search7turn7search17turn3search2
11
- - “Unknown” or out-of-scope OOXML is commonly carried using **markup compatibility and extensibility** (e.g., `mc:AlternateContent`, ignorable namespaces). A conformant producer must avoid destroying semantics it does not understand. citeturn15search0turn15search5turn15search1
12
-
13
- Accordingly, v1 uses four operational principles:
14
-
15
- 1. **Supported features are normalized into an internal schema** and can be edited safely and serialized back to OOXML with deterministic behavior.
16
- 2. **Preserve-only features are retained byte-for-byte** (or as faithful XML subtrees) and re-emitted, but editing is intentionally constrained to prevent corruption.
17
- 3. **Import-only features are visually flattened** for reading but are not emitted as the same OOXML feature on export (used sparingly in v1 because legal workflows demand roundtrip).
18
- 4. **Unsupported-fatal conditions block save/export** (or force read-only mode) when v1 cannot guarantee Word-safe output.
19
-
20
- ## Matrix definitions and processing rules
21
-
22
- ### Support classes
23
-
24
- - **supported-roundtrip**: imported into editor model (or safely preserved), edits are safe per the rules below, export is Word-safe, and Word reopens feature intact (or with stated, bounded simplifications).
25
- - **supported-import-only**: imported for display; editing/export does not fully preserve the semantic feature.
26
- - **supported-export-only**: feature can be created on export but not reliably parsed from arbitrary input.
27
- - **preserve-only**: imported and re-emitted without semantic understanding; editing is locked or restricted to prevent damaging the preserved XML/parts.
28
- - **unsupported-fatal**: v1 cannot guarantee Word-safe export if present (or if user edits would intersect it); workflow must block editing/export in those regions or fail fast.
29
-
30
- ### Preservation rules used across the matrix
31
-
32
- - **Package-level preservation**: preserve all unknown parts and relationships in the OPC package graph unless v1 must rewrite package metadata (content types / rels). OPC concepts of parts, content types, and relationships are foundational for `.docx`. citeturn15search3turn15search13turn15search2
33
- - **Markup compatibility**: preserve `mc:AlternateContent` structures and ignorable namespaces as-is; v1 does not “pick a Choice” and discard others. citeturn15search5turn15search1turn15search0
34
- - **Atomic opaque nodes**: any unknown block-level or inline-level XML subtree is represented as an **opaque node** that is not splittable by editing operations; deletion is either disallowed or deletes the entire opaque node as a unit (explicitly called out where relevant).
35
-
36
- ## Full feature compatibility matrix
37
-
38
- The following tables are the v1 **single source of truth**. Columns are identical across categories.
39
-
40
- ### Core structure
41
-
42
- | Feature Name | Support Class | Import Status | Edit Status | Export Status | Reopen in Word Behavior | Known Caveats | Fixture Coverage | Owner |
43
- |---|---|---|---|---|---|---|---|---|
44
- | Paragraphs (`w:p`) | supported-roundtrip | Fully parsed into block schema: paragraph node + paragraph properties + inline content. Paragraph is defined as `w:p` and can contain properties, annotations, custom markup, and run-level content. citeturn6search3turn18search3 | Editable: insert/delete text; split/merge paragraphs; paragraph-level ops allowed even with tracked changes enabled (see Review section for revision markup rules). | Native serialization back to `w:p` with `w:pPr` and child content; unknown children preserved as opaque nodes if not parsed. | Fully intact. | v1 never emits an empty paragraph without at least one valid run/text structure when required by context; paragraph boundary ops must also preserve comment/revision markers order. citeturn6search3turn16search14 | “Basic legal contract” with mixed paragraphs; paragraph split/merge; with comments and revisions. | editor-core, docx-parser, serializer, preservation-layer |
45
- | Runs (`w:r`) and text containers (`w:t`) | supported-roundtrip | Fully parsed into inline schema: run properties + run children (`w:t`, `w:br`, `w:tab`, drawings, fields/hyperlinks as separate nodes). Runs are defined as `w:r`. citeturn4search7turn18search18 | Editable: run segmentation is internal; user edits text seamlessly across run boundaries (editor may re-split/merge runs deterministically). | Native run emission with normalized run boundary rules; preserve run properties precedence vs styles where present. citeturn5search6turn18search0 | Fully intact. | WordprocessingML whitespace handling requires `xml:space="preserve"` in some cases; v1 maintains this on export to prevent space loss. citeturn6search14turn6search2 | Paragraph with multiple runs and mixed formatting; leading/trailing spaces; copy/paste across runs. | editor-core, serializer |
46
- | Significant whitespace in text (`xml:space="preserve"` on `w:t`) | supported-roundtrip | Import reads `xml:space` and preserves exact text content including leading/trailing spaces. citeturn6search14 | Editable (transparent to user). Editor recalculates when `xml:space="preserve"` is required after edits. | Native emission: `xml:space="preserve"` applied whenever leading or trailing spaces would otherwise be collapsed. citeturn6search14turn6search2 | Fully intact (no unintended whitespace collapse). | v1 does not attempt to normalize multiple internal spaces; it preserves literal text exactly unless user changes it. | “Whitespace torture” fixture: leading/trailing spaces, multiple spaces, tabs, mixed revisions. | editor-core, serializer |
47
- | Hard line breaks (`w:br`) | supported-roundtrip | Parsed into inline “line break” tokens; includes explicit breaks in runs. (Drawing/inline objects use their own elements; see Media.) citeturn19search0turn3search3 | Editable: insert/delete “line break” token. | Native: serialized as `w:br` in the correct run position. | Intact; Word displays as manual line breaks. | Page/column breaks are **not** treated as `w:br` in v1 unless explicitly represented that way in OOXML; `w:br` types beyond simple line break are preserve-only unless listed elsewhere. | Contract clause with manual line breaks (addresses/signature blocks). | editor-core, serializer |
48
- | Tabs (`w:tab`) | supported-roundtrip | Parsed into inline “tab” tokens (not converted to spaces). | Editable: insert/delete tab token; no “tab stop UI” in v1. | Native: serialized as `w:tab` in runs. | Intact; tab layout depends on Word tab stops/styles. | v1 does not provide a visual ruler; display in browser is approximate and may not match Word tab alignment exactly, but OOXML roundtrips. | Legal pleadings with tab-indented captions; signature blocks using tabs. | editor-core, serializer |
49
- | Paragraph styles (`w:pPr/w:pStyle`) | supported-roundtrip | Parsed and retained as paragraph style references (`pStyle` styleId). citeturn18search0turn18search2 | Locked (not exposed): v1 can apply built-in heading styles via UI (see next row), but does not edit style definitions. | Passthrough for style references; styles part preserved. citeturn18search6turn18search2 | Intact; Word applies styles normally. | If a referenced styleId is missing/corrupt in the source, v1 preserves reference but does not synthesize a style; Word behavior depends on Word’s fallback rules. | Contract with custom paragraph styles + Normal/BodyText. | docx-parser, serializer, preservation-layer |
50
- | Headings (Heading 1–9 semantics via styles and/or `w:outlineLvl`) | supported-roundtrip | Import detects headings by styleId conventions and/or outline level when present; `w:outlineLvl` defines structural outline level (0–9) though it does not itself change appearance. citeturn17view0turn18search7turn18search0 | Partially editable: v1 exposes “Heading 1–Heading 9” which sets paragraph `pStyle` to the corresponding styleId if present; v1 does **not** edit style definitions (font/spacing) for headings. | Native: emits `pStyle` unchanged/updated; preserves any existing `outlineLvl`; does not invent `outlineLvl` unless it already exists. citeturn18search0turn18search7 | Intact; Word headings appear per styles in `styles.xml`. | If a document uses custom heading styles not named/derived from built-ins, v1 preserves them but may not classify them as headings in UI; no TOC regeneration in v1. citeturn17view0 | Contract with multi-level headings, custom style inheritance, TOC field present. | editor-core, docx-parser, serializer |
51
-
52
- ### Formatting
53
-
54
- | Feature Name | Support Class | Import Status | Edit Status | Export Status | Reopen in Word Behavior | Known Caveats | Fixture Coverage | Owner |
55
- |---|---|---|---|---|---|---|---|---|
56
- | Bold (`w:b`) | supported-roundtrip | Parsed from run properties; `w:b` is the bold toggle. citeturn5search0turn5search6 | Editable: toggle bold on selection; bold inside/outside revisions supported. | Native: emitted as `w:rPr/w:b` on the minimal set of runs required. citeturn5search6turn5search4 | Intact. | **Tracked formatting changes are not generated in v1** (no new `rPrChange` revisions). Formatting edits apply directly. Existing tracked formatting revisions are preserve-only (see Review). citeturn12search11turn14view0 | Legal contract with defined terms in bold; edits inside inserted text. | editor-core, serializer |
57
- | Italic (`w:i`) | supported-roundtrip | Parsed from run properties; `w:i` is italics toggle. citeturn5search8turn5search6 | Editable: toggle italic on selection. | Native emission as `w:rPr/w:i`. citeturn5search6turn5search5 | Intact. | Same tracked-formatting caveat as bold. | Clause with italic emphasis; mixed bold+italic runs. | editor-core, serializer |
58
- | Underline (`w:u`) | supported-roundtrip | Parsed including underline style values; `w:u` defines underline and “none” removes it. citeturn6search0turn5search6 | Editable: underline toggle exposes a single default underline style; UI does not expose full underline style enumeration. | Native: emits `w:u` with `val` as needed; preserves original underline styles when not edited. citeturn6search0 | Intact; style may simplify if user re-applies underline (falls back to default single underline). | If source uses uncommon underline styles, v1 preserves unless the underline is edited, in which case the style normalizes to default underline. citeturn6search0 | Contract with underlined headings/signature lines. | editor-core, serializer |
59
- | Strikethrough (`w:strike`) | supported-roundtrip | Parsed from run properties; strike draws a horizontal line through text. citeturn5search7turn5search3 | Editable: toggle strikethrough as formatting (distinct from tracked deletion). | Native emission as `w:strike`. citeturn5search13 | Intact. | Users must not confuse strikethrough formatting with tracked deletions; tracked deletions use `w:del` containers (see Review). citeturn12search5turn13search0 | Doc with strikethrough used for “reserved/deleted” text without track changes. | editor-core, serializer |
60
- | Font family (`w:rFonts`) | supported-roundtrip | Parsed from run fonts; can specify ASCII / High ANSI / CS / East Asian font faces. citeturn6search1turn6search9 | Partially editable: v1 UI may allow selecting a font family; advanced script-specific font slots are not exposed. | Native: emits `w:rFonts` for ASCII+High ANSI; preserves CS/East Asian slots if unchanged. citeturn6search1 | Intact in Word. | Browser rendering depends on installed fonts; visual differences vs Word are expected, but OOXML values roundtrip. citeturn6search1 | Contract with mixed fonts (Times New Roman/Calibri) and defined-term styling. | editor-core, serializer |
61
- | Font size (`w:sz`) | supported-roundtrip | Parsed; `w:sz` stores half-points for non-complex script. citeturn4search22turn5search6 | Partially editable: v1 UI may expose a limited size picker. | Native: emits `w:sz`; preserves related `szCs` if present and unchanged. citeturn4search22 | Intact. | If the source uses complex-script-specific sizing, v1 preserves but does not author new complex-script sizes. citeturn4search22 | Pleading with small footers; contract with 10/12/14 pt variations. | editor-core, serializer |
62
- | Font color (`w:color`) | supported-roundtrip | Parsed; `w:color` defines run color or auto behavior. citeturn4search3turn5search6 | Partially editable: v1 may expose a restricted palette; “theme color” editing not exposed. | Native: emits `w:color`; preserves theme-related attributes if unchanged. citeturn4search3 | Intact. | Many legal workflows avoid color; if color is edited, v1 writes explicit RGB and may drop theme linkage. citeturn4search3 | Doc with red/blue markup (non-track-changes) plus normal text. | editor-core, serializer |
63
- | Paragraph alignment (`w:jc`) | supported-roundtrip | Parsed from paragraph properties; `w:jc` controls alignment. citeturn4search0turn4search9 | Partially editable: left/center/right/justify exposed. | Native: emits `w:jc` in `w:pPr` only when needed; preserves inherited style behavior when not overridden. citeturn4search0 | Intact. | Alignment may be inherited through style hierarchy; v1 does not compute a full cascade for UI display but preserves stored values. citeturn4search0turn18search0 | Signature blocks (right-aligned), centered titles, justified body. | editor-core, serializer |
64
- | Indentation (`w:ind`) | supported-roundtrip | Parsed with full attribute set (start/end/firstLine/hanging, etc.). citeturn4search1turn4search17 | Locked (not exposed in v1 UI): indentation is preserved and survives edits to text. | Passthrough/native: emitted exactly as imported if paragraph exists; no recomputation. citeturn4search1 | Intact. | v1 does not attempt to reconcile indentation vs numbering indentation; list rendering in browser may be approximate for complex styles. citeturn7search17turn4search1 | Contract with indented block quotes/recitals; list paragraphs with hanging indents. | serializer, preservation-layer |
65
- | Spacing before/after and line spacing (`w:spacing`) | supported-roundtrip | Parsed from paragraph properties. citeturn4search2turn4search6 | Locked (not exposed): spacing preserved through text edits. | Passthrough/native: emitted as imported, including before/after/line and autos. citeturn4search2 | Intact. | Browser line layout does not replicate Word pagination; spacing values roundtrip but on-screen measurement is approximate. citeturn4search2 | Contract with spacing rules; title blocks with large before/after spacing. | serializer, preservation-layer |
66
- | Character styles (`w:rPr/w:rStyle`) | preserve-only | Imported and preserved as character style references; character styles are referenced via `rStyle`. citeturn18search1turn18search5 | Not exposed: v1 does not provide a style editor or style picker for arbitrary character styles. | Passthrough: preserved and re-emitted; styles part preserved. citeturn18search6turn18search5 | Intact. | If user edits inside styled text, v1 may split runs but retains `rStyle` on resulting runs; it does not guarantee minimal run diffs. citeturn18search5turn4search7 | Doc with Hyperlink style; custom character style for defined terms. | preservation-layer, serializer |
67
-
68
- ### Lists
69
-
70
- | Feature Name | Support Class | Import Status | Edit Status | Export Status | Reopen in Word Behavior | Known Caveats | Fixture Coverage | Owner |
71
- |---|---|---|---|---|---|---|---|---|
72
- | Bullet lists (Word numbering system) | supported-roundtrip | Parsed via paragraph numbering properties `w:numPr` referencing numbering instances (`w:numId`) and levels (`w:ilvl`). citeturn7search2turn7search9turn7search13 | Editable: toggle bullet list; indent/outdent 0–8 levels; split/merge list items. | Native: updates `w:numPr` bindings; preserves existing numbering definitions unless v1 must create a new list instance. citeturn7search17turn7search12 | Intact; Word renders bullets per numbering definitions. | v1 supports common bullet formats; uncommon bullet glyphs are preserved but may render as generic bullets in-browser. citeturn7search17 | Legal outline with bullets under numbered sections; nested bullets. | numbering-engine, serializer |
73
- | Numbered lists | supported-roundtrip | Parsed using the same numbering model: abstract numbering definitions + numbering instances. citeturn7search17turn7search18turn7search12 | Editable: toggle numbered list; indent/outdent; continue numbering across adjacent items. | Native: updates `numId/ilvl` and preserves abstractNum/num structures; v1 does not rewrite list templates unless needed. citeturn7search17turn7search12 | Intact. | Number formatting (`numFmt`) variety is broad; v1 guarantees correct roundtrip but only guarantees accurate in-browser numbering for common formats (decimal, alpha, roman, bullet). citeturn7search11turn7search17 | Contract with multi-level numbering (1., 1.1, (a), (i)). | numbering-engine, serializer |
74
- | Nested lists (up to 9 levels in Word, 0–8 in `ilvl`) | supported-roundtrip | Parsed: `w:ilvl` is stored per paragraph and preserved. citeturn7search13turn7search16 | Editable: indent/outdent list items across levels; maintains list structure deterministically. | Native: emits correct `ilvl` in `numPr`. citeturn7search13 | Intact. | v1 does not provide a UI for editing `lvlText` templates; it preserves what exists. citeturn7search11 | “Deal outline” fixture: 4–6 nested levels with mixed punctuation. | numbering-engine, editor-core |
75
- | Restart numbering | supported-roundtrip | Imported restarts are detected either by new numbering instances (`w:num`) or by level overrides with `startOverride` when present. citeturn7search12turn7search0turn7search5 | Editable: “Restart numbering” command creates a new numbering instance referencing the same abstract definition or emits a level override start value at level 0. citeturn7search0turn7search12 | Native: emits new `w:num` instance and/or `lvlOverride/startOverride` depending on document constraints; preserves existing restart model if already present. citeturn7search6turn7search0 | Intact; Word restarts at specified values. | Restart semantics can also be affected by `lvlRestart` rules; v1 does not author complex restart policies—only explicit restarts requested by user. citeturn7search0 | “Schedules” exhibit: multiple separate numbered lists restarting at 1. | numbering-engine, serializer |
76
- | Numbering definitions and overrides (`abstractNum`, `num`, `lvlOverride`) | preserve-only | Imported and preserved; v1 reads enough for accurate list structure binding but does not expose definition editing. citeturn7search18turn7search12turn7search6 | Locked: no list-template editor in v1. | Passthrough: preserves numbering part; emits minimal deltas for paragraph bindings and explicit restarts. citeturn7search17turn7search12 | Intact. | If the source numbering part is internally inconsistent but Word tolerates it, v1 preserves it; if v1 must modify it, it may normalize/repair into a Word-safe form (logged as a warning). citeturn7search17turn15search3 | “Numbering zoo”: custom list templates, overrides, style-linked numbering. | preservation-layer, numbering-engine, serializer |
77
-
78
- ### Tables
79
-
80
- | Feature Name | Support Class | Import Status | Edit Status | Export Status | Reopen in Word Behavior | Known Caveats | Fixture Coverage | Owner |
81
- |---|---|---|---|---|---|---|---|---|
82
- | Basic tables (`w:tbl` / `w:tr` / `w:tc`) | supported-roundtrip | Fully parsed into table schema: rows, cells, and cell block content; `w:tbl` defines table. citeturn8search0turn8search8 | Partially editable: edit text inside cells; select cells; delete/insert **cell content**. Table structure edit (add/remove rows/cols) is **not exposed** in v1 to protect layout + merges. | Native: serialize to `w:tbl` with preserved tblPr/tblGrid; ensures each cell contains at least one paragraph. citeturn8search0turn8search12 | Intact. | WordprocessingML requires valid cell content; v1 guarantees every exported `w:tc` contains at least one `w:p` (empty paragraph allowed) to avoid corruption/repair prompts. citeturn8search12turn8search0 | “Table heavy contract”: definitions table; signature table; exhibits table. | table-engine, serializer |
83
- | Merged cells horizontal (`w:gridSpan`) | supported-roundtrip | Parsed from cell properties; `gridSpan` describes grid columns spanned. citeturn2search4turn8search1 | Locked: v1 does not expose merge/split UI. Cell text editing allowed without affecting merge metadata. | Passthrough/native: preserves `gridSpan` exactly. citeturn2search4 | Intact; Word shows merged cell. | If a user deletes an entire merged cell’s content, merge metadata remains; deleting the cell itself is not supported in v1. | Table fixture with multi-column header cells + merged signature blocks. | table-engine, preservation-layer |
84
- | Merged cells vertical (`w:vMerge`) | supported-roundtrip | Parsed from `tcPr`; `vMerge` specifies vertical merge state (restart/continue semantics). citeturn1search1turn8search1 | Locked: no merge/split UI. | Passthrough/native: preserves `vMerge` exactly. citeturn1search1 | Intact. | v1 does not recompute row heights and does not attempt to “repair” invalid vertical merge grids; it preserves what it imported unless structure editing is attempted (blocked). citeturn1search1turn8search12 | Table fixture with vertically merged stub columns. | table-engine, preservation-layer |
85
- | Table-wide properties (`w:tblPr`) | supported-roundtrip | Parsed and retained; includes borders, widths, and other table-wide properties. citeturn8search2turn8search0 | Locked: not exposed for editing. | Passthrough: emitted exactly as imported. citeturn8search2 | Intact. | Browser rendering may not match Word’s border collapsing/layout; OOXML is preserved. citeturn8search7turn8search2 | Table fixture with explicit borders, widths, and style-based formatting. | preservation-layer, serializer |
86
- | Table grid and column definitions (`w:tblGrid`) | supported-roundtrip | Preserved; grid defines shared vertical edges and default widths. citeturn2search8turn8search0 | Locked. | Passthrough. citeturn2search8 | Intact. | Because v1 does not expose column add/remove, tblGrid can be preserved safely without recomputation. citeturn2search8 | “Fixed-width comparison table” fixture with explicit grid columns. | preservation-layer |
87
- | Table layout algorithm (`w:tblLayout` fixed/auto) | preserve-only | Imported and preserved (table may be fixed or AutoFit). citeturn8search7turn8search3 | Not exposed. | Passthrough. citeturn8search7 | Intact. | Word may still adjust column widths on open depending on content and AutoFit rules; v1 does not attempt to predict these adjustments. citeturn8search7turn8search19 | AutoFit stress table: long text cells vs fixed width. | preservation-layer |
88
-
89
- ### Media
90
-
91
- | Feature Name | Support Class | Import Status | Edit Status | Export Status | Reopen in Word Behavior | Known Caveats | Fixture Coverage | Owner |
92
- |---|---|---|---|---|---|---|---|---|
93
- | Images inline (`w:drawing` with `wp:inline`) | supported-roundtrip | Parsed into inline “image” objects referencing package media parts and relationships; drawing objects are represented via `w:drawing`. citeturn3search3turn3search11 | Partially editable: select, cut/paste as a single object, delete; no crop, no wrap style editing. | Native: preserves image part + relationship IDs if unchanged; new images create new relationships and media parts with proper content types. citeturn3search3turn15search3 | Intact; Word shows image inline with text. | v1 does not support floating wrap; if an inline image is converted to floating in Word and re-imported, it becomes preserve-only (next row). citeturn3search3turn3search11 | Contract with logos; exhibits with scanned signature images inline. | media-manager, serializer |
94
- | Images floating/anchored (`wp:anchor`) | preserve-only | Imported as opaque object: v1 does not parse anchor positioning; stores original DrawingML subtree and relationships. citeturn3search3turn3search19 | Not exposed; rendered as placeholder (thumbnail if possible). | Passthrough: emits original anchor subtree unchanged. citeturn3search3turn15search0 | Intact; Word preserves floating positioning. | Editing text around anchored objects is allowed, but deleting/splitting inside the anchored object’s XML is blocked; object is atomic in v1. citeturn15search0turn15search5 | Doc with floating signature stamp/watermark-like images; inline + anchored mix. | preservation-layer, media-manager |
95
- | Captions | preserve-only | Imported as ordinary paragraphs (often via a “Caption” style) and may include sequence fields; v1 preserves style refs and fields rather than implementing caption semantics. citeturn18search0turn2search2turn2search6 | Not exposed as a special feature; caption text is editable like normal paragraph, but caption numbering is not recomputed. | Passthrough for fields/style references; paragraph text emitted normally. citeturn2search2turn18search0 | Visually intact; numbering may be stale until Word updates fields. | Caption auto-numbering typically relies on fields (e.g., SEQ); v1 does not update field results and therefore does not guarantee correct caption numbering after edits. citeturn2search6turn2search2 | Exhibit with figure/table captions using fields; edit caption text and reopen. | preservation-layer, serializer |
96
-
97
- ### Links
98
-
99
- | Feature Name | Support Class | Import Status | Edit Status | Export Status | Reopen in Word Behavior | Known Caveats | Fixture Coverage | Owner |
100
- |---|---|---|---|---|---|---|---|---|
101
- | Hyperlinks external (`w:hyperlink` with `r:id`) | supported-roundtrip | Fully parsed: `w:hyperlink` element with relationship target. citeturn2search1turn0search7 | Editable: edit display text; edit URL; remove hyperlink (keeps text). | Native: emits `w:hyperlink` and maintains relationship in `.rels`. citeturn2search1turn15search3 | Intact; clickable links in Word. | v1 preserves hyperlink history/visited flags if present; does not expose them in UI. citeturn0search7turn2search1 | Contract with external exhibit links and defined-term references to URLs. | hyperlink-manager, serializer |
102
- | Hyperlinks internal (`w:hyperlink` with `w:anchor` to bookmarks) | preserve-only | Parsed enough to render as a link; bookmark targets are preserved but bookmark management is not implemented. citeturn2search1turn6search18 | Not exposed: cannot create new internal anchors; can remove link wrapper (keeps text). | Passthrough for anchor attribute and bookmark structures. citeturn6search18turn2search1 | Intact; Word resolves links if bookmarks exist. | If the user deletes the target bookmark paragraph, Word may break the internal link; v1 does not validate bookmark integrity. citeturn6search18 | Brief with internal cross-references; bookmarks + hyperlinks. | preservation-layer, serializer |
103
-
104
- ### Review
105
-
106
- | Feature Name | Support Class | Import Status | Edit Status | Export Status | Reopen in Word Behavior | Known Caveats | Fixture Coverage | Owner |
107
- |---|---|---|---|---|---|---|---|---|
108
- | Comments anchors (range) (`w:commentRangeStart`, `w:commentRangeEnd`, `w:commentReference`) | supported-roundtrip | Fully parsed for **single-paragraph ranges**: v1 maps start/end markers and reference marks by `w:id`. Spec defines start/end range markers and reference-to-comment linkage by id. citeturn16search1turn16search3turn9search9turn9search17 | Partially editable: can add, delete, and move comment ranges within a single paragraph; editing inside range updates anchors deterministically. | Native: emits range markers and reference in correct ordering; preserves ids and ensures `comments.xml` has matching comment entries. citeturn16search1turn9search17 | Intact; Word shows anchored comments. | Comment ranges can be structurally complex (start/end markers may fall in different nestings); v1 guarantees correctness for ranges fully contained in one paragraph and not crossing opaque nodes. citeturn16search7turn16search14 | “Redline + comments” contract: comment on defined term; edit inside range; move anchor. | comment-engine, editor-core, serializer |
109
- | Comments text bodies (`/word/comments.xml`) | supported-roundtrip | Parsed into comment objects (author/date/text); comments part contains comment content. citeturn9search17turn9search4 | Editable: add/edit/delete comment text. | Native: emits `comments.xml` with stable ids and required entries. citeturn9search17 | Intact. | v1 preserves comment metadata fields (author/date). If missing, v1 writes system defaults (e.g., “Unknown”) but does not fabricate identity parts. citeturn10search14 | Comment-only fixture: multiple comments with authors/dates. | comment-engine, serializer |
110
- | Comment replies (threading via `commentsExtended.xml` / `w15:commentEx` / `paraIdParent`) | supported-roundtrip | Parsed when present: v1 reads `commentsExtended.xml` to link replies using `paraIdParent`. citeturn11search7turn11search4turn11search11 | Editable: add replies; reorder not supported (chronological only). | Native: emits/updates `commentsExtended.xml` (`commentsEx`) and `commentEx` entries so Word recognizes threads. citeturn11search7turn11search11turn10search5 | Intact; Word displays replies as threaded. | Thread linkage depends on `paraId`/`paraIdParent` consistency; v1 assigns stable paraIds and does not change them on simple edits to comment text. citeturn11search7turn11search3 | Threaded comments fixture (Word 2013+): root comment + 3 replies + reopen. | comment-engine, serializer |
111
- | Comment resolution status (done/resolved via `w15:commentEx` `done`) | supported-roundtrip | Imported from `commentEx` “done” flag when present. citeturn10search1turn10search8 | Editable: resolve/unresolve supported (per-thread root). | Native: toggles `w15:done` on the root comment’s `commentEx`. citeturn10search1turn11search7 | Intact; Word shows resolved/done state. | Some Word clients treat “resolved” semantics differently across versions; v1 writes the standards-based flag and does not attempt client-specific variants. citeturn9search7turn10search1 | Threaded comments + resolved state fixture. | comment-engine, serializer |
112
- | Track changes global setting (`w:trackRevisions` in settings) | supported-roundtrip | Imported and preserved; `trackRevisions` specifies revisions tracking is enabled in the document settings. citeturn3search12turn0search5 | Partially editable: v1 exposes a document-level “Track changes mode” toggle that controls whether edits generate revision markup. | Native: emits/updates `w:trackRevisions` in settings when toggled. citeturn3search12turn13search7 | Intact; Word respects track changes being enabled. | Even if `trackRevisions` is on, Word does not automatically “track” changes unless the correct revision markup exists; v1 must generate `w:ins`/`w:del` (next rows). citeturn3search12turn13search0 | Fixture: same document edited with toggle off vs on; compare OOXML output. | review-engine, serializer |
113
- | Tracked insertions (run-level) (`w:ins` inserted run content) | supported-roundtrip | Fully parsed: inserted content containers are recognized and rendered as insertions. citeturn13search0turn13search1 | Editable: insert text while tracking is on creates `w:ins` around inserted runs; edits inside an inserted region keep the region inserted. | Native: emits `w:ins` with required metadata (author/date/id as configured) and correct child runs. citeturn13search0turn3search12 | Intact redlines in Word. | v1 does not generate “move” revisions; move operations become insert+delete (see “revisions overlap” and “moves” rows). citeturn12search10turn12search2 | “Redlines basic”: insertions across multiple runs with formatting. | review-engine, serializer |
114
- | Tracked deletions (run-level) (`w:del` deleted run content) | supported-roundtrip | Fully parsed and rendered as deletion with deleted text representation. citeturn12search5turn13search19 | Editable: delete text while tracking is on creates `w:del` containers; backspace/delete across run boundaries supported. | Native: emits `w:del` with required metadata; deleted inner text is emitted as deleted content (Word shows strikethrough per view). citeturn12search5turn16search12 | Intact redlines in Word. | v1 does not guarantee “minimal diff” for deletions; deleting across formatting boundaries may produce multiple adjacent `w:del` segments. | “Redlines basic”: deletions with mixed formatting + reopen. | review-engine, serializer |
115
- | Paragraph mark deletion/merge (`w:del` on paragraph mark run properties) | supported-roundtrip | Imported and preserved; deletion of paragraph mark merges paragraphs in tracked-change semantics. citeturn3search1turn14view0 | Editable: deleting a paragraph boundary while tracking is on generates paragraph mark deletion revision (join paragraphs with tracked marker). | Native: emits `w:del` in paragraph mark properties as Word expects. citeturn3search1turn14view0 | Intact; Word shows paragraph merge as tracked change. | This is distinct from deleting all text in a paragraph; v1 uses the paragraph-mark mechanism for boundary deletions only. citeturn3search1turn6search3 | Fixture: delete paragraph boundary between two clauses with comments + redlines enabled. | review-engine, serializer |
116
- | Paragraph mark insertion/split (`w:ins` on paragraph mark run properties) | supported-roundtrip | Imported and preserved; insertion of a paragraph mark is tracked via paragraph mark ins semantics. citeturn12search4turn12search8 | Editable: pressing Enter while tracking is on generates paragraph mark insertion revision (split paragraph). | Native: emits paragraph mark insertion markup. citeturn12search8 | Intact. | v1 does not generate “formatting change” revisions for paragraph property changes; splitting paragraphs preserves the imported paragraph properties deterministically. citeturn14view0turn4search5 | Fixture: split a numbered paragraph; split inside comment range (single-paragraph only). | review-engine, serializer |
117
- | Accept/reject insertions and deletions | supported-roundtrip | Imported revision markup is recognized for supported revision types (`w:ins` / `w:del` run content and paragraph-mark ins/del). citeturn13search0turn12search5turn14view0 | Editable: accept/reject per change and “accept all / reject all” supported for those types. | Native: accept = unwrap insertions / remove deletions; reject = remove insertions / unwrap deletions. This mirrors common Open XML revision processing patterns. citeturn14view0turn13search1turn13search19 | Intact; Word opens with changes applied. | For preserve-only revision types (moves, formatting changes, table-row revisions, numberingChange), accept/reject UI is disabled to avoid partial corruption. citeturn12search2turn12search11turn3search5turn1search8 | Fixture: accept/reject flow across paragraph joins, list items, and table-cell text. | review-engine |
118
- | Tracked moves (`moveFrom`/`moveTo` and range markers) | preserve-only | Imported and preserved; v1 renders as delete+insert visually to user (labelled “move (preserved)”). citeturn12search10turn14view0 | Not exposed: cannot create new move revisions; cannot accept/reject moves in v1 UI (must use Word). | Passthrough: emits move markup unchanged. citeturn12search10turn14view0 | Intact; Word shows move tracking as in source. | Editing within a moved range is blocked because move ranges can cross structural boundaries; user must accept/reject in Word first for safe editing. citeturn14view0turn12search10 | Fixture: Word-generated “Move text” revision spanning multiple paragraphs. | preservation-layer, review-engine |
119
- | Tracked formatting changes (`rPrChange`, `pPrChange`) | preserve-only | Imported and retained; v1 does not attempt to interpret these revisions beyond marking them as “format change (preserved)”. citeturn12search11turn14view0 | Not exposed: cannot create new tracked formatting changes; cannot accept/reject these in v1. | Passthrough unchanged. citeturn12search11turn14view0 | Intact; Word shows formatting revisions. | If a user edits a paragraph/run that contains formatting-change revisions, v1 blocks the edit unless the user first accepts/rejects formatting changes in Word. citeturn12search11turn14view0 | Fixture: toggle bold with “Track formatting” enabled in Word; reopen after v1 view-only. | preservation-layer, review-engine |
120
- | Comments on deleted text (edge case) | preserve-only | Imported: comment anchors and deletions may overlap; v1 preserves the exact marker placement and renders comment thread with an indicator “anchored to deleted text”. citeturn16search0turn12search5turn16search1 | Not editable: v1 blocks edits that would require re-anchoring comments whose anchor text is deleted. | Passthrough: preserves overlap in markup. | Word behavior varies by view; Word can hide comments associated with text marked for deletion in Track Changes views. citeturn16search0turn16search8 | This is a known Word UX behavior; v1 preserves data but cannot force Word to display hidden comments in certain markup views. citeturn16search0turn16search8 | Fixture: comment anchored to a word, then that word is deleted with Track Changes on. | preservation-layer, comment-engine |
121
- | Edits inside commented ranges (edge case) | supported-roundtrip | For single-paragraph comment ranges only: v1 updates anchor offsets deterministically as text is inserted/deleted inside the range. citeturn16search1turn16search14 | Partially editable: allowed within same paragraph; if edit would cause range to cross paragraphs or opaque nodes, edit is blocked. | Native: emits updated comment range markers positions. citeturn16search1turn16search3 | Intact. | Multi-paragraph comment ranges are preserve-only (next row). citeturn16search7 | Fixture: insert text mid-range; delete part of range; add reply. | comment-engine, editor-core |
122
- | Multi-paragraph comment ranges | preserve-only | Imported and preserved as opaque “comment-range spanning blocks” because start/end markers can cross complex nestings. citeturn16search7turn16search14 | Not exposed: cannot create/edit multi-paragraph comment ranges. | Passthrough unchanged. | Intact. | v1 UI still shows the comment thread, but highlight mapping in-browser is simplified (e.g., highlights first paragraph only) while preserving OOXML anchors. | Fixture: comment spanning two paragraphs in Word. | preservation-layer, comment-engine |
123
- | Revisions overlapping lists (edge case) | preserve-only | Imported revisions that structurally affect numbering/list properties (e.g., numbering changes) are preserved. Numbering changes can be tracked with dedicated elements like `numberingChange`. citeturn1search8turn7search17 | Not exposed: v1 blocks operations that would create list-structure revisions beyond run-level insert/delete inside a list item. | Passthrough (including `numberingChange` if present). citeturn1search8 | Intact. | v1 supports redlines **within** list item text, but does not support tracked changes that alter list definitions/levels as revisions. citeturn1search8turn7search13 | Fixture: change list level/numbering style with Track Changes on in Word. | preservation-layer, review-engine, numbering-engine |
124
- | Revisions overlapping tables (edge case) | preserve-only | Imported structural table revisions (row insert/delete, cell merge revisions) are preserved; table row insertion/deletion revisions use `ins`/`del` on row properties. citeturn3search4turn3search5turn1search5 | Not exposed: v1 blocks table structural edits when Track Changes on; only run-level insert/delete inside cell paragraphs is supported. | Passthrough. citeturn3search4turn3search5 | Intact. | Accept/reject for these structural table revisions is disabled in v1; use Word for that operation. citeturn3search4turn3search5turn14view0 | Fixture: insert/delete table row with Track Changes on; cell merge with Track Changes. | preservation-layer, review-engine, table-engine |
125
- | Nested revisions (edge case) | preserve-only | Imported nested/overlapping `w:ins`/`w:del` structures are preserved as-is; v1 does not normalize by rewriting. citeturn13search0turn12search5turn3search17 | Not exposed: cannot edit inside nested revision regions; cannot accept/reject them in v1. | Passthrough unchanged. | Intact. | Nested revisions can be semantically involved (many elements participate in revision tracking); v1 intentionally avoids rewriting to prevent corruption. citeturn3search17turn14view0 | Fixture: multiple authors produce nested revisions; ensure v1 preserves and reopens in Word. | preservation-layer, review-engine |
126
- | Deleting content with comments attached (edge case) | supported-roundtrip | v1 supports tracked deletions of text inside a comment range; the comment anchor range is updated if it remains within the same paragraph and not fully deleted. citeturn16search1turn12search5turn16search0 | Partially editable: if deletion would remove the entire anchor, v1 prompts and requires explicit action: “Delete comment too” or “Cancel deletion.” | Native: either (a) delete comment and remove markers, or (b) block deletion to keep anchor, matching Word’s anchoring constraint that deleting anchor text often deletes the comment. citeturn16search2turn16search6 | Intact per chosen action. | Word commonly deletes comments when the anchored text is deleted unless a workaround keeps at least one anchored character; v1 exposes this explicitly to prevent silent loss. citeturn16search2turn16search6 | Fixture: delete entire commented phrase with Track Changes on/off; verify comment retention rules. | comment-engine, review-engine |
127
- | Mixed formatting within revisions (edge case) | supported-roundtrip | Inserted/deleted content can contain runs with independent formatting; v1 imports runs inside `w:ins` and `w:del` normally. citeturn13search0turn12search5turn5search6 | Editable: formatting can be applied inside inserted text; formatting across inserted/deleted boundaries is supported as direct formatting (not as tracked formatting change). | Native: emits formatting as run properties within revision containers. citeturn5search6turn13search0 | Intact. | v1 never creates `rPrChange` to represent formatting changes as tracked revisions; Word will show formatting but not as a tracked “format change.” citeturn12search11turn14view0 | Fixture: insert bold text; delete italic text; accept/reject. | editor-core, review-engine, serializer |
128
-
129
- ### Document structure
130
-
131
- | Feature Name | Support Class | Import Status | Edit Status | Export Status | Reopen in Word Behavior | Known Caveats | Fixture Coverage | Owner |
132
- |---|---|---|---|---|---|---|---|---|
133
- | Section breaks and section properties (`w:sectPr`) | preserve-only | Imported and preserved; OOXML locates section properties at the end of the section (often in last paragraph) and final `sectPr` as child of body. citeturn1search2turn2search3 | Not exposed: cannot insert/delete section breaks in v1. | Passthrough: emits section properties exactly as imported. citeturn1search2 | Intact; Word maintains page layout, margins, columns defined by sections. | Because section breaks affect pagination and headers/footers, v1 treats them as immutable to avoid breaking the document layout graph. citeturn1search2turn3search2 | Fixture: contract with multiple sections (portrait/landscape), continuous break, different header/footer. | preservation-layer, section-engine |
134
- | Headers and footers (references and parts) (`w:headerReference`, `w:footerReference`, header/footer parts) | preserve-only | Imported and preserved: section `sectPr` references header/footer parts via relationship ids. citeturn3search2turn3search6turn3search18 | Not exposed: cannot edit header/footer content in v1. | Passthrough: preserves header/footer parts and relationships. citeturn3search2turn3search6turn15search3 | Intact; page numbers, logos, etc. preserved. | Headers/footers often include fields (PAGE/NUMPAGES) and layout constructs; v1 preserves but does not update fields. citeturn2search6turn3search18 | Fixture: page numbering in footer + “FIRST” header; reopen and verify. | preservation-layer, header-footer-engine |
135
- | Footnotes (references + footnote part) | preserve-only | Imported and preserved: footnotes have reference marks in body and a footnote story part with `footnote` elements. citeturn1search11turn1search7 | Not exposed for editing in v1: footnote content is readable (rendered in a side panel/popover) but locked. | Passthrough for footnotes part and references. citeturn1search11turn1search7 | Intact. | Footnote placement/numbering is controlled by Word; v1 does not add/remove footnotes and does not validate advanced conformance constraints beyond preserving what was imported. citeturn1search11turn1search3 | Fixture: contract with multiple footnotes; footnote inside table cell. | preservation-layer, notes-engine |
136
- | Endnotes (references + endnote part) | preserve-only | Imported and preserved; endnote references use `endnoteReference`. citeturn1search3turn1search11 | Not exposed (same behavior as footnotes). | Passthrough unchanged. citeturn1search3 | Intact. | Spec notes conformance constraints (e.g., endnote references inside notes can be non-conformant); v1 preserves but will not create new such constructs. citeturn1search3 | Fixture: endnotes at end of document; mixed footnotes/endnotes. | preservation-layer, notes-engine |
137
-
138
- ### Advanced and edge features
139
-
140
- | Feature Name | Support Class | Import Status | Edit Status | Export Status | Reopen in Word Behavior | Known Caveats | Fixture Coverage | Owner |
141
- |---|---|---|---|---|---|---|---|---|
142
- | Fields (simple fields `w:fldSimple`) | preserve-only | Imported and preserved as opaque inline nodes; v1 renders the current field result text but does not interpret field codes. Fields can be represented using `fldSimple`. citeturn2search2turn2search6 | Not exposed: cannot insert/update fields in v1. | Passthrough: preserves original field XML and existing field result runs. citeturn2search2turn2search6 | Intact; Word updates field results when user updates fields. | Since v1 does not recompute field results, any changes to surrounding text may require Word to update fields for correct display (TOC, page numbers, cross refs). citeturn2search6turn9search17 | Fixture: PAGE/REF/TOC/SEQ fields; reopen and update fields in Word. | preservation-layer |
143
- | Fields (complex fields via `w:fldChar` + `w:instrText`) | preserve-only | Imported and preserved as opaque inline sequences; v1 does not attempt to restructure begin/separate/end runs. citeturn2search6turn2search10turn6search10 | Not exposed. | Passthrough unchanged. citeturn2search10turn2search6 | Intact. | Editing inside a complex field region is blocked; user must edit in Word or convert field to text there. citeturn2search10turn2search6 | Fixture: TOC field, REF field cross-reference, DATE field, hyperlink-as-field variants. | preservation-layer |
144
- | Content controls (SDTs) block-level (`w:sdt` block) | preserve-only | Imported as opaque blocks: SDT properties and content preserved. SDTs encapsulate block-level structures via `sdtPr` and `sdtContent`. citeturn19search11turn2search11 | Not exposed: v1 does not create or edit content control properties; content inside SDT is locked in v1 to avoid breaking bindings/locks. | Passthrough unchanged. citeturn19search11turn2search11 | Intact. | Locked SDTs can be “undeletable” or behave unexpectedly across clients when combined with track changes/comments; v1 avoids editing them. citeturn12search13turn2search11 | Fixture: template doc with content controls (repeating sections, locked sections). | preservation-layer |
145
- | Content controls (SDTs) inline-level (`w:sdt` inline) | preserve-only | Imported as opaque inline nodes. citeturn19search19turn2search11 | Not exposed. | Passthrough unchanged. citeturn19search19 | Intact. | Same as block SDTs: editing inside is blocked. | Fixture: inline SDTs around party names/defined terms. | preservation-layer |
146
- | Embedded objects (`w:object`, OLE, VML positioning) | preserve-only | Imported as opaque inline objects; `w:object` indicates embedded object and positioning is via VML. citeturn19search0turn19search16 | Not exposed; displayed as placeholder. | Passthrough: preserves object parts, relationships, and VML. citeturn19search0turn15search3 | Intact; Word shows embedded object. | Embedded objects can include additional linked field codes; v1 preserves but does not validate them. citeturn19search8turn19search0 | Fixture: embedded Excel object; embedded Visio; reopen in Word. | preservation-layer, media-manager |
147
- | External content imports (`w:altChunk`) | preserve-only | Imported and preserved as opaque block; `altChunk` anchors external content to be imported by Word. citeturn19search1turn19search9 | Not exposed; cannot expand/convert altChunk in v1. | Passthrough unchanged. citeturn19search1 | Intact; Word may convert/import on open/save. | AltChunk behavior depends on Word processing; v1 does not “apply” the chunk. If the legal workflow requires editing imported content, open and save in Word first to materialize it. citeturn19search5turn19search1 | Fixture: doc with altChunk from HTML; reopen in Word to confirm non-damage. | preservation-layer |
148
- | Custom XML markup (`w:customXml` wrappers and custom XML parts) | preserve-only | Imported and preserved; custom XML can wrap inline runs, paragraphs, tables, rows, or cells. citeturn19search14turn19search6turn19search2 | Not exposed; editing inside customXml-wrapped regions is blocked unless the wrapper encloses only supported plain text and can be maintained without splitting (rare; disabled in v1). | Passthrough: preserves wrappers + associated custom XML parts and relationships. citeturn19search6turn15search3 | Intact. | Custom XML is frequently used for document assembly systems; splitting paragraphs/runs inside wrappers can break bindings, so v1 locks these regions. citeturn19search6turn19search14 | Fixture: doc assembly template with customXml tags around party names and clauses. | preservation-layer |
149
- | Unknown OOXML elements in body | preserve-only | Imported as opaque nodes at the smallest safe granularity (block or inline) and preserved as XML subtrees. Supported structures remain editable; unknown nodes are atomic. Markup compatibility constructs are preserved. citeturn15search0turn15search5turn15search1 | Not exposed: cannot edit inside unknown nodes; delete/cut allowed only as a whole-node operation. | Passthrough: exact subtree is re-emitted; ignorable namespaces and AlternateContent preserved. citeturn15search5turn15search1 | Intact in Word. | If an unknown node is removed, Word may lose that feature; v1 requires explicit user confirmation for deleting opaque nodes (“This may remove unsupported Word features”). citeturn15search0turn15search5 | Fixture: doc containing SmartArt/diagrams, custom namespaces, AlternateContent blocks. | preservation-layer |
150
- | Unknown OOXML parts/relationships in package | preserve-only | Imported into package manifest and preserved. OPC relies on parts, relationships, and content types; v1 preserves unknown relationships and parts unless it must rewrite `[Content_Types].xml` due to new media. citeturn15search3turn15search13turn15search2 | Not exposed. | Passthrough with minimal necessary updates for new parts (images/comments). citeturn15search3turn15search13 | Intact. | When new parts are added (e.g., images), v1 must update content types and relationships carefully; QA must validate Word opens without repair prompts. citeturn15search3turn15search13 | Fixture: doc with custom parts + add a comment + add an image; verify relationships remain valid. | preservation-layer, serializer |
151
- | Malformed OOXML (not well-formed XML, broken relationships/content types) | unsupported-fatal | Import validates: XML must be well-formed; relationship targets must be resolvable enough to preserve. | Not editable; v1 opens in “read-only diagnostics” mode only and blocks export. | No export permitted. | N/A (export blocked). | This is the only safe stance for high-integrity legal workflows: emitting a repaired guess risks silent corruption. citeturn15search3turn15search13 | Fixture: intentionally corrupted `.docx` with missing rel target / malformed XML. | docx-parser, serializer |
152
-
153
- ## Safety guarantees and scope boundaries
154
-
155
- ### Guaranteed safe features
156
-
157
- The following are guaranteed **supported-roundtrip** in v1 (import → edit within stated bounds → export → reopen in Word intact):
158
-
159
- - Paragraphs, runs/text, whitespace preservation, hard line breaks, tabs. citeturn6search3turn4search7turn6search14
160
- - Headings via paragraph style references (no style editing). citeturn18search0turn18search2
161
- - Inline formatting: bold, italic, underline (default style), strikethrough. citeturn5search0turn5search8turn6search0turn5search7
162
- - Lists (including nested) and explicit restart numbering. citeturn7search17turn7search13turn7search0
163
- - Tables: table body structure, merged cells preserved, cell text editing safe. citeturn8search0turn2search4turn1search1
164
- - Inline images (`wp:inline`). citeturn3search3turn3search11
165
- - Hyperlinks (external via relationships). citeturn2search1turn0search7turn15search3
166
- - Comments (single-paragraph ranges), replies (threading), and resolution state. citeturn16search1turn11search7turn10search1
167
- - Tracked insertions and deletions (run-level and paragraph-mark level) and accept/reject for those types. citeturn13search0turn12search5turn14view0
168
-
169
- ### Preserve-only features
170
-
171
- These features are preserved and roundtrip to Word, but are not editable (or are editable only as atomic objects):
172
-
173
- - Section breaks and section properties, headers/footers, footnotes/endnotes. citeturn1search2turn3search2turn1search11
174
- - Fields (simple and complex). citeturn2search2turn2search6turn2search10
175
- - Content controls (SDTs). citeturn19search11turn19search19
176
- - Embedded objects (OLE/VML), floating/anchored drawings, altChunk, custom XML wrappers. citeturn19search0turn3search3turn19search1turn19search6
177
- - Tracked moves, tracked formatting changes, tracked structural revisions for tables/lists beyond run-level insert/delete inside content. citeturn12search10turn12search11turn3search4turn1search8
178
- - Unknown OOXML in body or unknown package parts/relationships (opaque preservation). citeturn15search0turn15search5turn15search3
179
-
180
- ### Known risk areas
181
-
182
- These are specifically called out for engineering and QA because they can produce subtle corruption if mishandled:
183
-
184
- - **Comments vs deletions**: Word may hide comments anchored to deleted text in certain Track Changes views; v1 preserves the markup but cannot control Word UI behavior. citeturn16search0turn16search8
185
- - **Multi-paragraph comment ranges**: marker placement can cross complex XML nesting; v1 preserves but does not edit. citeturn16search7turn16search14
186
- - **Structural revisions in tables/lists**: OOXML uses specialized revision elements (e.g., row ins/del, numberingChange, cellMerge). v1 preserves but does not author or accept/reject them. citeturn3search4turn1search8turn1search5
187
- - **Markup compatibility**: incorrect handling of `mc:AlternateContent` (e.g., dropping unchosen branches) can destroy content; v1 preserves all branches. citeturn15search5turn15search1
188
- - **OPC relationship integrity**: any serializer bug in relationships or content types can trigger Word repair dialogs. citeturn15search3turn15search13turn15search2
189
-
190
- ## Test fixture map for QA and interoperability
191
-
192
- This section defines the **required `.docx` fixtures** that QA must maintain. Fixtures are intentionally legal-workflow-shaped (contracts, exhibits, redlines) and must be validated by:
193
- (1) import → (2) edit operations → (3) export → (4) reopen in Word and confirm no repair + intended display.
194
-
195
- | Fixture ID | Fixture name | Required contents | Primary features validated |
196
- |---|---|---|---|
197
- | F01 | Basic contract skeleton | 10–20 paragraphs, mixed runs, leading/trailing whitespace cases | Paragraphs, runs/text, whitespace preservation, split/merge paragraphs citeturn6search3turn6search14 |
198
- | F02 | Headings and styles contract | Heading 1–4, custom paragraph styles, outline level present in some styles | Headings, `pStyle`, style preservation citeturn18search0turn18search7 |
199
- | F03 | Legal outline numbering | Multi-level numbered list (1., 1.1, (a), (i)), nested bullets | Lists, nested lists, numbering preservation citeturn7search13turn7search17 |
200
- | F04 | Restart numbering schedules | Two separate numbered lists restarting at 1; one uses `startOverride` | Restart numbering, overrides citeturn7search0turn7search6 |
201
- | F05 | Table-heavy agreement | 3–5 tables with borders, fixed grid columns, long text in cells | Basic tables, tblGrid preservation, cell paragraph validity citeturn8search0turn2search8turn8search12 |
202
- | F06 | Merged-cells signature table | Horizontal `gridSpan` merges + vertical `vMerge` merges | Merged cells preservation citeturn2search4turn1search1 |
203
- | F07 | Inline images exhibit | Inline logo and scanned signature images | Inline images + OPC rel correctness citeturn3search11turn15search3 |
204
- | F08 | Hyperlinks exhibit list | External hyperlinks (http/https/mailto) in body and in a table cell | Hyperlink import/edit/export + rels citeturn2search1turn15search3 |
205
- | F09 | Comments anchored single paragraph | Several comments with overlapping ranges inside one paragraph; edit inside ranges | Comment anchors (single-paragraph) + edits inside range citeturn16search1turn16search14 |
206
- | F10 | Threaded comments and resolve | Root comment + 2 replies, resolved/done state set, mix of authors | Replies via commentsExtended + done flag citeturn11search7turn10search1 |
207
- | F11 | Redlines basic | Insertions, deletions, mixed formatting within revisions, accept/reject flows | `w:ins`/`w:del`, accept/reject, mixed formatting in revisions citeturn13search0turn12search5turn14view0 |
208
- | F12 | Redlines paragraph joins/splits | Delete a paragraph mark; insert paragraph mark; accept/reject | Paragraph mark ins/del semantics citeturn3search1turn12search8 |
209
- | F13 | Comments on deleted text | Comment anchored to a word that is later deleted under Track Changes | Edge case: comment+deletion overlap; Word visibility caveat citeturn16search0turn12search5 |
210
- | F14 | Revisions in tables and lists | Table row inserted/deleted with Track Changes; numberingChange present | Preserve-only structural revisions; ensure no damage on roundtrip citeturn3search4turn1search8 |
211
- | F15 | Sections + headers/footers | Two sections with different header/footer, page numbers fields | Preserve-only sections + headers/footers + fields citeturn1search2turn3search2turn2search6 |
212
- | F16 | Footnotes and endnotes | Multiple footnotes and endnotes; references in body and in table | Preserve-only notes; rendering/read-only behavior citeturn1search11turn1search3 |
213
- | F17 | Fields and TOC | TOC (complex field), cross-references, PAGE fields in footer | Preserve-only fields; ensure no structural damage citeturn2search6turn2search10 |
214
- | F18 | Content controls template | SDT blocks and inline SDTs with locking properties | Preserve-only SDTs; locked editing enforcement citeturn19search11turn19search19 |
215
- | F19 | Custom XML doc assembly | `w:customXml` wrappers around paragraphs/runs, custom XML parts | Preserve-only custom XML; block edits inside wrappers citeturn19search6turn19search14 |
216
- | F20 | Unknown OOXML and AlternateContent | `mc:AlternateContent`, ignorable namespaces, SmartArt/diagrams | Unknown OOXML preservation + markup compatibility rules citeturn15search5turn15search1turn3search19 |
217
- | F21 | Malformed/broken docx | Missing relationship target and/or malformed XML | Unsupported-fatal behavior (block export) citeturn15search3turn15search13 |
218
-
219
- This fixture set is the minimum required for the matrix above. Any new feature request must (a) add rows to the matrix and (b) add at least one new fixture or extend an existing fixture with explicit Word reopen assertions.