@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,436 +0,0 @@
1
- # XLSX Fixture Corpus, Scenario Program, and Certification Plan
2
-
3
- This research paper is source material.
4
-
5
- Canonical repo-aligned planned doc:
6
-
7
- - `docs/plans/xlsx/xlsx-fixture-corpus-and-certification-plan.md`
8
-
9
- ## Interpretation of the problem
10
-
11
- You’re not asking how to build an XLSX editor. You’re asking for the **permanent compatibility program** that keeps an XLSX editor honest over time: a fixture corpus, scenario runner, automated validation, and manual Excel certification gates that enforce the principle “exported files must reopen in recent Excel environments without repair prompts or silent supported-content loss.”
12
-
13
- Key constraints that drive this plan:
14
-
15
- An `.xlsx` file is an **OOXML / Open Packaging Conventions (OPC) package** (ZIP physical mapping; parts + relationships as a directed graph), not “some XML.” The package has required structural items like the content types part and package relationships part, with strict relationship-part naming conventions.
16
-
17
- The editor must support **import → runtime edit → export → reopen** as the standard for “supported.” Where that cannot be guaranteed, the feature must be explicitly classified as **preserve-only** or **unsupported-fatal**, not “best effort.” This is aligned with how the OOXML ecosystem expects forward compatibility via **Markup Compatibility and Extensibility** mechanisms (e.g., `mc:Ignorable`, `AlternateContent`, `extLst`) and vendor extensions (notably Excel’s `.xlsx` extensions) so older consumers can ignore unknown markup without breaking.
18
-
19
- Schema conformance is necessary but insufficient: the Open XML SDK exposes validators (e.g., `OpenXmlValidator`) and strongly-typed part models, but Excel can still surface “repair” behavior even when validators pass, and conversely validators can flag issues that Excel tolerates. Therefore, “Excel reopen without repair prompts” must be a **manual certification** (and later possibly semi-automated) release gate.
20
-
21
- Source constraints for this response: you asked to start with your GitHub connector and the repo `bwllaming/docx-react-component`, but the GitHub connector was not actually accessible in this environment (tooling reported no repo selection / no results), so this plan is built from primary OOXML/OPC sources and Microsoft/OpenXML documentation instead.
22
-
23
- ## Research plan
24
-
25
- Information that must be true to produce an implementation-ready compatibility program:
26
-
27
- OPC/OOXML packaging invariants to validate for every fixture (content types stream, relationship graph invariants, relationship part naming rules, minimal SpreadsheetML package structure).
28
-
29
- SpreadsheetML part topology and “minimum workbook scenario” (workbook + worksheets + relationship IDs), plus major feature part families: shared strings, styles, calc chain, tables, pivot tables/caches, conditional formatting, formulas, drawings/charts.
30
-
31
- Excel-specific extensions and forward-compat contract: which parts and relationships are used by Excel extensions (e.g., threaded comments; slicers; persons list; named sheet views), what “MUST” relationships exist, and what compatibility mechanisms Excel relies on (`mc:Ignorable`, `extLst`).
32
-
33
- Validation tooling surface area: Open XML SDK creation and validation entrypoints; validator configuration by Office version (e.g., `FileFormatVersions` enum).
34
-
35
- Host matrix facts that matter for certification and “reopen expectations”: which Excel versions/products are relevant, worksheet limits for stress fixtures, and cross-origin export realities (Google Sheets and LibreOffice both export `.xlsx`, but conversion limitations exist and must be treated as a hostile input class).
36
-
37
- ## Findings
38
-
39
- OPC structure is graph-first: packages are navigated starting at `/_rels/.rels`, then following relationships to locate parts; relationship parts live in `_rels` folders and are named by appending `.rels` to the source part’s name. This implies fixture validation must treat **missing / dangling / mis-targeted relationships** as first-class failures independent of XML element validity.
40
-
41
- A SpreadsheetML package has hard minimums: it “shall contain” at least a content-type item and package-relationship item, with a required relationship to exactly one workbook part, and worksheets referenced by relationship IDs from the workbook. The Microsoft Open XML SDK documentation mirrors this minimum structure (workbook part + at least one worksheet part).
42
-
43
- The ecosystem expects “future content” survival: SpreadsheetML frequently uses extension/compatibility constructs (e.g., `extLst`, `mc:Ignorable`) and Excel documents can embed non-core parts and markup that are required for fidelity in newer Excel. Microsoft’s `.xlsx` extensions spec explicitly requires that compatibility mechanisms like `Ignorable`, `AlternateContent`, or `extLst` be used to maintain compatibility with base ISO/IEC 29500 consumers. A concrete example: the Excel threaded comments feature is stored in a dedicated part type with a defined content type, sourced via a relationship from the worksheet, and includes additional reconciliation behavior with legacy comment placeholders.
44
-
45
- Validation has two different “truths”: OpenXmlValidator exists, is configurable by Office version, and is useful for schema-level sanity checks, but real-world evidence (and developer reports) show Excel can still repair files even when OpenXmlValidator reports no errors. That means the certification program must treat OpenXmlValidator as **necessary but not sufficient**, and include explicit Excel-open certification.
46
-
47
- Cross-origin exporters are guaranteed fixture sources, not edge cases:
48
- - Google Sheets explicitly supports downloading spreadsheets as “Microsoft Excel (.xlsx).”
49
- - LibreOffice explicitly states it can load/save Office Open XML formats (including `.xlsx`) while warning that complex Microsoft Office features can be handled differently or be unsupported, requiring manual reformatting.
50
- These exporters therefore produce “valid-looking but hostile” packages that your editor must either support end-to-end, preserve-only, or reject as unsupported-fatal.
51
-
52
- Performance/stress fixtures must be aligned to Excel’s published limits: Microsoft documents worksheet limits such as 1,048,576 rows by 16,384 columns, maximum characters per cell, and limits on unique cell formats. Stress fixtures should be sized to trigger algorithmic pitfalls (sharedStrings explosion, style record blowups, dense sheetData) without requiring maximum theoretical size.
53
-
54
- ## Recommended design / decisions
55
-
56
- This section is the core: the fixture corpus and certification plan are as important to architecture as your runtime state model, because they define “what correctness is.”
57
-
58
- ### Decision: split the corpus into “release-gate fixtures” and “representative scenarios,” with explicit support classification
59
-
60
- **Release-gate fixtures** are the permanent, minimal set that blocks a release if they regress. They must be deterministic, small, and cover every supported feature and every preservation contract. Their goal is to catch correctness regressions early, not to be exhaustive.
61
-
62
- **Representative scenarios** are larger, more realistic workbooks (including cross-origin exports) used for broader confidence, manual exploration, and periodic certification. They can be noisy and are allowed to evolve.
63
-
64
- Each fixture must carry an explicit classification per feature scope:
65
-
66
- - **supported**: must survive import → edit (at least a no-op or scoped edit) → export → reopen in Excel without repair prompts, and with specified semantics preserved.
67
- - **preserve-only**: editor must load and round-trip without dropping content, but must not claim correctness for edits affecting that feature; the UI should lock/warn. (This is aligned with OOXML forward-compat constructs and Excel extensions: you will see `mc:Ignorable`, `extLst`, and vendor parts you don’t implement.)
68
- - **unsupported-fatal**: the editor must refuse to export (block/fail) if a user attempts to load or modify the workbook in a way that cannot be safely round-tripped without causing Excel repair prompts or silent loss.
69
-
70
- ### Decision: preservation is tested structurally (package graph + byte preservation for unknown parts), not only semantically
71
-
72
- Because OPC navigation is relationship-graph-based and relationship parts have strict naming conventions, the lowest-level preservation contract is:
73
-
74
- - Every unknown package part and relationship must be preserved in the output OPC graph, unless explicitly stripped by a declared policy.
75
- - Relationship part naming and placement must remain valid (e.g., `/a/b/_rels/c.xml.rels`).
76
- - Content types must still map every part; content types are required for consumers and are central to OPC characterization.
77
-
78
- For unknown parts, the only safe automated assertion is **byte-for-byte identity** (or, if your pipeline normalizes ZIP ordering/deflate metadata, at least a stable hash of the part payload stream). For known parts, allow canonicalization (namespace prefix differences, attribute ordering) but enforce semantic invariants.
79
-
80
- ### Decision: automated validation is multi-layered and version-targeted; Excel-open certification is the release truth
81
-
82
- Automated validation layers:
83
-
84
- - **OPC structural validator**: checks existence and correctness of `[Content_Types].xml`, `/_rels/.rels`, relationship-part naming conventions, reachable part graph, dangling relationship targets, invalid TargetMode usage, and content-type coverage.
85
- - **SpreadsheetML schema/structure baseline**: minimum workbook scenario validation (workbook, sheets, worksheet parts), plus constraints like “one Worksheet part per worksheet.”
86
- - **Open XML SDK validator lane** (CI optional but strongly recommended): run `OpenXmlValidator` against exported packages for multiple file format versions (Office2007…Microsoft365). This catches a class of schema errors and version-gating differences.
87
-
88
- Manual Excel certification:
89
-
90
- - For each release candidate, open and save exported fixtures in recent Excel hosts (Windows/Mac/Web minimum) and verify: no repair prompt, no repair log, and no silent loss of supported content (checked by predeclared “audit fields” per fixture).
91
- - This is required because schema validators are not equivalent to Excel acceptance.
92
-
93
- ### Decision: host matrix is explicit, and “Excel for Microsoft 365” is the primary bar
94
-
95
- Your stated standard is “recent Excel environments.” Microsoft’s own Open XML format guidance is scoped across Microsoft 365 and recent perpetual releases. The certification host matrix must include:
96
-
97
- - Excel Desktop on Windows (Microsoft 365 current channel) — primary truth bar.
98
- - Excel Desktop on macOS (Microsoft 365) — necessary for feature parity differences (rendering, fonts, some chart behaviours).
99
- - Excel for the web — important because Excel web-origin files are a required corpus category, and because web can reserialize workbooks differently.
100
-
101
- Optional expansion hosts (phase-based): Excel LTSC/perpetual (e.g., 2021/2024), and at least one “older but still common” version if your customers demand it.
102
-
103
- ### Decision: waves/phases aligned to feature support maturity and fixture enforcement
104
-
105
- Wave planning prevents “premature support claims.” Example alignment:
106
-
107
- - **Wave 0 (Foundation)**: OPC correctness + minimal workbook + basic grid editing + styles baseline; unknown part preservation with strict byte preservation.
108
- - **Wave 1 (Spreadsheet core)**: formulas, shared strings, styles, merged cells, freeze panes, filters, hyperlinks, notes/comments (legacy).
109
- - **Wave 2 (Structured features)**: tables, conditional formatting, data validation, drawings/images.
110
- - **Wave 3 (Advanced Excel objects)**: charts, pivot tables, slicers, threaded comments, data model — initially preserve-only unless you also implement the coupled parts/relationships and Excel’s behavioral invariants.
111
-
112
- ## Risks and open questions
113
-
114
- Excel behavior drift vs standard: Excel implements ISO/ECMA plus extensions and product behaviors that change over time; Microsoft provides “implementation information” documents for ECMA-376 and ISO/IEC 29500 support, but some materials require authorization in certain contexts. You should expect mismatches and treat Excel as the arbiter.
115
-
116
- Validator mismatch risk: `OpenXmlValidator` can be version-targeted but will not guarantee Excel-open success; relying on it as a gate will produce false confidence.
117
-
118
- Cross-origin hostility: Google Sheets and LibreOffice exports are explicitly supported workflows, but both can produce edge-case constructs; LibreOffice explicitly warns about conversion challenges and unsupported features. Your corpus must include these to prevent “works on Excel-made files only” bias.
119
-
120
- Preserve-only complexity: Preservation is not free. If your editor rewrites parts it doesn’t understand (or drops unrecognized relationships), you can easily produce Excel repair prompts or quiet content loss. This is why unknown-part fixtures must be first-class and release-gated. The risk is highest in areas where Excel uses extension parts and compatibility constructs such as threaded comments and their legacy placeholders.
121
-
122
- “Malformed package” scope question: decide what “malformed” means for your product. Some malformed inputs should be rejected immediately (unsupported-fatal), but others might be salvageable as preserve-only under a “best-effort import with warnings” mode. OPC and minimum workbook requirements give you the hard floor for “cannot proceed.”
123
-
124
- Stress fixture realism: Excel’s published worksheet limits are enormous; fixtures near those maxima are hard to keep deterministic and will be slow in CI. The open question is what practical “large” sizes match your runtime constraints while still surfacing algorithmic performance failures.
125
-
126
- ## Concrete deliverable in the requested format
127
-
128
- This is the repo-ready spec you can drop into a new `xlsx-compat` or `fixtures/` directory and implement against.
129
-
130
- ### Repository layout
131
-
132
- - `fixtures/`
133
- - `README.md` (how to run corpus + certification)
134
- - `schema/fixture-metadata.schema.json`
135
- - `schema/scenario-run.schema.json`
136
- - `gates/`
137
- - `release-gate-manifest.json` (ordered list of gate fixture IDs)
138
- - `scenario-manifest.json` (grouped scenario sets)
139
- - `cases/<fixtureId>/`
140
- - `input/original.xlsx` (canonical “as received”)
141
- - `input/origin-notes.md` (creation steps + origin app/version)
142
- - `expected/expectations.json` (expected results)
143
- - `expected/part-hashes.json` (hashes for preserve-only parts)
144
- - `expected/audit.xlsx.json` (optional: expected cell/style audits)
145
- - `scripts/scenario.ts` (optional: scenario program for edit steps)
146
- - `artifacts/` (generated outputs per run; ignored by git)
147
- - `tools/`
148
- - `fixture-runner/` (Node CLI: import → edit → export → validate)
149
- - `opc-lint/` (OPC structural validator)
150
- - `excel-cert/` (manual certification harness + checklists)
151
- - `reports/`
152
- - `latest/` (CI outputs + Excel cert logs archived per release)
153
-
154
- ### Fixture metadata schema (authoritative contract)
155
-
156
- Each fixture has a `fixture.json` embedded into `expected/expectations.json` under `meta`:
157
-
158
- **Required fields**
159
-
160
- - `id`: string (stable, kebab-case, never reused)
161
- - `title`: string
162
- - `category`: one of the minimum categories below (multi-valued allowed)
163
- - `origin`:
164
- - `producer`: enum: `excel-desktop-win`, `excel-desktop-mac`, `excel-web`, `google-sheets`, `libreoffice-calc`, `generated`, `third-party`
165
- - `producerVersion`: string (freeform; required for non-generated)
166
- - `createdAt`: ISO date
167
- - `creationSteps`: string (human instructions)
168
- - `size`:
169
- - `bytes`: integer
170
- - `sheets`: integer
171
- - `usedRangeSummary`: per sheet, `(maxRow, maxCol, usedCells)`
172
- - `featureFlags`: map of feature → `supported|preserve-only|unsupported-fatal`
173
- - `expectedImport`:
174
- - `result`: enum `ok|warn|block|fail`
175
- - `warnings`: array of stable warning codes
176
- - `locks`: array of lock codes (UI should lock these features)
177
- - `expectedExport`:
178
- - `result`: enum `ok|warn|block|fail`
179
- - `warnings`: array
180
- - `preservationContract`:
181
- - `unknownPartsPolicy`: `preserve-bytes` (default) | `strip-with-manifest` (rare)
182
- - `partHashAlgorithm`: `sha256`
183
- - `mustPreserveParts`: array of OPC part names (exact)
184
- - `mustPreserveRelationships`: array of `{sourcePartName, relType, target}` triples
185
- - `excelCertification`:
186
- - `gateLevel`: `release-gate` | `scenario-only`
187
- - `requiredHosts`: array from the host matrix
188
- - `openChecks`: checklist IDs
189
- - `saveChecks`: checklist IDs (if “open+save” is required)
190
-
191
- **Stable warning/lock vocabulary (shared across product + tests)**
192
- These are the compliance states you require (preserve, lock, warn, block, fail), made testable:
193
-
194
- - `warn/*`: e.g. `warn/unsupported-feature-present`, `warn/will-preserve-only-pivot`, `warn/calcchain-dropped`
195
- - `lock/*`: e.g. `lock/pivot-editing`, `lock/threaded-comments-editing`, `lock/protection-locked`
196
- - `block/*`: e.g. `block/malformed-opc`, `block/encrypted-package`, `block/unsupported-fatal-feature`
197
- - `fail/*`: internal invariant breaks (export must not proceed)
198
-
199
- ### Minimum fixture categories and required coverage
200
-
201
- The corpus must include at least the following **minimum categories**, each split into **release-gate fixtures** (small, deterministic) and **scenario fixtures** (realistic, possibly larger). The list below is not a loose brainstorm; it defines *what must exist* and what gets gated.
202
-
203
- For each category: create **at least 2 release-gate fixtures** (one “clean”, one “hostile/edge”), and **at least 1 representative scenario**.
204
-
205
- **Simple sheets**
206
- - Gate fixtures:
207
- - `minimal-blank-1sheet`: minimum workbook scenario (workbook + one sheet + basic sheetData).
208
- - `cells-types-mix`: numbers, strings (sharedStrings), booleans, dates (as numeric + format), blanks.
209
- - Scenarios:
210
- - `simple-budget-sheet`: realistic grid with formats and totals.
211
-
212
- **Multi-sheet workbooks**
213
- - Gate fixtures: 3+ sheets with cross-sheet references; hidden sheet; veryHidden sheet.
214
- - Scenarios: workbook with named ranges and hyperlinks across sheets.
215
-
216
- **Style-heavy files**
217
- - Gate fixtures:
218
- - `styles-baseline`: fonts/fills/borders/number formats; verify styles part round-trip and “unique cell formats” stress within reason (avoid Excel’s 65,490 unique format ceiling in gates).
219
- - `conditional-numberformats`: mixed date/currency/percent.
220
- - Scenario: “design-heavy report” workbook.
221
-
222
- **Formula-heavy files**
223
- - Gate fixtures:
224
- - `formula-arithmetic`: relative/absolute refs, ranges, SUM/IF.
225
- - `formula-cross-sheet`: 3D refs; named ranges.
226
- - Scenario: model sheet that forces recalculation and checks cached results. (Be explicit whether your editor recalculates or preserves cached values.)
227
-
228
- **Merged cells**
229
- - Gate fixtures:
230
- - `merge-rectangular`: standard merges with styles.
231
- - `merge-overlap-invalid`: malformed merge definitions → expectedImport `block` or `warn` depending on salvage policy.
232
- - Scenario: printable layout with merged headers.
233
-
234
- **Comments/notes**
235
- - Gate fixtures:
236
- - `legacy-notes`: classic comments/notes stored in the standard comment mechanisms.
237
- - `threaded-comments-preserve-only`: threaded comments part + legacy placeholders; editing locked; preserve-only.
238
- - Scenario: collaboration annotation workbook exported from Excel web.
239
-
240
- **Hyperlinks**
241
- - Gate fixtures: internal hyperlink (sheet/cell), external hyperlink (URL, mailto).
242
- - Scenario: workbook used as a navigation hub.
243
-
244
- **Tables**
245
- - Gate fixtures: one structured table with header row; filters; table styles.
246
- - Scenario: import from a business report exported by another system.
247
-
248
- **Filters/frozen panes**
249
- - Gate fixtures: autoFilter + freeze panes + split panes; verify view state survives.
250
- - Scenario: large table with frozen headers.
251
-
252
- **Data validation**
253
- - Gate fixtures: list validation (dropdown), numeric range, custom formula validation.
254
- - Scenario: form-like sheet mapping to validations.
255
-
256
- **Conditional formatting**
257
- - Gate fixtures: simple color scale + icon set + formula-based rule.
258
- - Scenario: KPI dashboard.
259
-
260
- **Images/drawings**
261
- - Gate fixtures:
262
- - `image-anchored`: one image anchored to cells (drawing part relationships).
263
- - `unknown-drawing-extension`: include ignorable extensions around drawing markup; preserve-only.
264
- - Scenario: marketing sheet with multiple images.
265
-
266
- **Charts**
267
- - Gate fixtures: one basic chart linked to a data range; verify chart parts + drawing relationships survive.
268
- - Scenario: dashboard with multiple chart types.
269
- - Default classification: **preserve-only** until you can guarantee edits won’t break chart caches/relationships.
270
-
271
- **Pivot tables**
272
- - Gate fixtures: existing pivot table + cache parts; preserve-only by default.
273
- - Scenario: pivot workbook exported from Excel desktop.
274
- - Upgrade to supported only when you can maintain pivot cache integrity and Excel-open behavior.
275
-
276
- **Workbook/sheet protection**
277
- - Gate fixtures:
278
- - `sheet-protection`: protected worksheet with unlockable ranges.
279
- - `workbook-protection`: structure protected.
280
- - Classification: If you cannot correctly update hashes/flags when editing, treat as **lock + preserve-only** or **unsupported-fatal** for edits that would violate protection semantics.
281
-
282
- **Unknown OOXML / unknown package parts**
283
- - Gate fixtures (these are non-negotiable):
284
- - `unknown-part-unreferenced`: extra part not referenced by any relationship (tests whether your exporter drops “garbage”; expected behavior: preserve if policy says so, or strip only with explicit manifest).
285
- - `unknown-part-referenced`: unknown part reachable via relationships from workbook/worksheet; must be preserved and relationship graph must remain valid.
286
- - `mc-ignorable-markup`: ignorable namespaces in worksheet/drawing; verify your XML round-tripper doesn’t erase ignorable markup nodes.
287
-
288
- **Files originating from Excel web**
289
- - Scenario fixtures:
290
- - `excel-web-export-basic`
291
- - `excel-web-collab-comments` (often includes modern comment systems; likely preserve-only initially).
292
-
293
- **Files exported from Google Sheets then reopened in Excel**
294
- - Scenario fixtures:
295
- - `gsheets-export-formulas`
296
- - `gsheets-export-formatting`
297
- - `gsheets-export-validation`
298
- - These are grounded by the fact that Google Sheets supports downloading as `.xlsx`.
299
-
300
- **Files exported from LibreOffice then reopened in Excel**
301
- - Scenario fixtures:
302
- - `libreoffice-export-basic`
303
- - `libreoffice-export-chart`
304
- - `libreoffice-export-validation`
305
- - Treat as hostile: LibreOffice explicitly warns about conversion differences and unsupported features for complex documents.
306
-
307
- **Malformed packages**
308
- - Gate fixtures (block/fail by design):
309
- - `missing-content-types`: no `[Content_Types].xml` → `block/malformed-opc`.
310
- - `missing-root-rels`: no `/_rels/.rels` → `block/malformed-opc`.
311
- - `dangling-relationship-target`: relationship to missing part.
312
- - `bad-rels-naming`: incorrect relationship part placement/name.
313
- - Policy: malformed fixtures must clearly assert expected behavior (`block` vs `fail`) and required diagnostic codes.
314
-
315
- **Very large workbooks**
316
- - Scenario + performance suite (not always release-gate):
317
- - `wide-sheet-16k`: near 16,384 columns but modest rows.
318
- - `tall-sheet-1m-lite`: large rows but sparse data to test streaming import.
319
- - `dense-sharedstrings`: many repeated strings to stress shared string table behavior.
320
- - Release-gate should include at least one “medium large” workbook that runs quickly in CI but still triggers your virtualized grid and serialization paths.
321
-
322
- ### Release-gate fixture policy
323
-
324
- A fixture is **release-gate** if any of the following are true:
325
-
326
- - It covers a feature marked `supported` in product docs.
327
- - It covers a preservation contract (unknown parts, ignorable markup) that, if violated, would cause silent loss or Excel repair risk.
328
- - It is a regression reproducer for a previously shipped bug.
329
-
330
- Release-gate fixtures must be:
331
- - Under a size cap (e.g., ≤2–5 MB uncompressed total parts unless justified).
332
- - Deterministic: generated or accompanied by precise creation steps and “expected audit” files.
333
- - Version-pinned: `origin.producerVersion` recorded and never “floating.”
334
-
335
- ### Representative scenario policy
336
-
337
- Scenario fixtures can be larger/noisier and should represent:
338
- - Real business sheets (financial models, reports, dashboards).
339
- - Cross-origin files (Excel web, Google Sheets export, LibreOffice export).
340
- - “Kitchen sink” workbooks with many features combined.
341
-
342
- Scenarios are not automatically release blockers unless promoted to gate via regression policy.
343
-
344
- ### Regression fixture policy
345
-
346
- When a bug is found in production or during certification:
347
-
348
- - Create the **smallest possible reproducer** fixture (prefer generated or simplified Excel-created).
349
- - Add the fixture with:
350
- - `meta.regression`: `{issueId, introducedInVersion?, fixedInVersion}`
351
- - `expectedImport/Export` states for the failing and fixed behavior.
352
- - Promote to `release-gate` if the bug affected:
353
- - Supported features,
354
- - Preservation contracts,
355
- - Any “Excel repair prompt” incident.
356
-
357
- ### Source-baseline-neutral cases
358
-
359
- To avoid “Excel as fixture generator” bias, include **generated** fixtures constructed to satisfy OPC and minimum SpreadsheetML structure requirements. This is justified by the published minimum workbook scenario and package structure requirements.
360
-
361
- Required generated fixture types:
362
- - Minimal workbook (1 sheet).
363
- - Minimal workbook with sharedStrings and styles.
364
- - Relationships edge cases (but still valid).
365
- - Unknown-part injection (extra part + relationship) to test preservation.
366
-
367
- Generated fixtures should be built by your own fixture generator (Node or small .NET tool) so your corpus can evolve without relying on proprietary UI actions.
368
-
369
- ### Automated validation program
370
-
371
- Implement a single CLI runner that executes:
372
-
373
- 1) **Import**: parse OPC package, build internal “package manifest” (list parts, relationships, content types).
374
- 2) **Normalize**: canonicalize ZIP and XML for comparison where allowed.
375
- 3) **Scenario program** (optional per fixture): execute a bounded edit script (no direct mutation; this is your command/transaction system under test).
376
- 4) **Export**: write `.xlsx`.
377
- 5) **Validate**:
378
- - OPC lint: graph integrity, naming conventions, required parts.
379
- - SpreadsheetML structure checks: workbook/sheets/worksheet parts, required relationships.
380
- - Preservation checks:
381
- - Unknown parts: payload hash equality against `part-hashes.json`.
382
- - Relationship triples preserved.
383
- - Optional: Open XML SDK validator lane (matrix by Office version enum; include `Microsoft365` at minimum).
384
-
385
- **Outputs**:
386
- - `reports/<runId>/fixture-results.json` with per-fixture pass/fail, warnings, diffs, and hashes.
387
- - `reports/<runId>/exported/<fixtureId>.xlsx` for manual Excel certification.
388
-
389
- ### Manual Excel certification program
390
-
391
- A release candidate cannot ship until the following is complete:
392
-
393
- **Host matrix (minimum bar)**
394
- - `excel-desktop-win-m365`
395
- - `excel-desktop-mac-m365`
396
- - `excel-web`
397
-
398
- Rationale: Microsoft’s published Open XML format guidance targets Microsoft 365 and recent Excel releases, and Excel web is explicitly a core product surface.
399
-
400
- **Manual procedure per release-gate fixture**
401
- - Open exported file.
402
- - Confirm:
403
- - No “Repair” prompt (and no repair log generated).
404
- - Worksheet count and names match expected.
405
- - Key audit cells match expected values and formats (from `audit.xlsx.json`).
406
- - For preserve-only features: confirm feature still exists when viewed in Excel (e.g., pivot table present; chart renders; threaded comments visible).
407
- - Save-as (same format `.xlsx`) and re-open:
408
- - Confirm no repair prompt.
409
- - Compare the re-saved file to expected “Excel-normalized” tolerances (you will need separate expectations because Excel can reserialize). This prevents “passes on open but breaks on save,” which is a common hidden failure mode.
410
-
411
- **Certification artifacts**
412
- - Store results in `reports/cert/<releaseVersion>/host/<hostId>/…`
413
- - Include screenshots or logs of any failures.
414
- - Promote any discovered failure into a regression fixture.
415
-
416
- ## Sources
417
-
418
- ECMA-376 standard landing page (parts and editions; downloads).
419
-
420
- Open Packaging Conventions overview and requirements (content types stream, relationships-based discovery, relationship parts).
421
-
422
- SpreadsheetML structure and minimum workbook scenario; key parts (workbook, worksheets, shared strings, calc chain, pivot parts, conditional formatting, formulas).
423
-
424
- Microsoft Open XML SDK documentation for spreadsheet creation and part model (SpreadsheetDocument, WorkbookPart, WorksheetPart).
425
-
426
- OpenXmlValidator API surface and version targeting; Open XML file format version enum (Office2007…Microsoft365).
427
-
428
- Evidence and risk that validator success ≠ Excel success (Excel repair despite validation).
429
-
430
- Microsoft Excel `.xlsx` extensions and compatibility mechanisms (`extLst`, `mc:Ignorable` usage requirements) and explicit part definitions (threaded comments part and requirements; slicer cache part requirements; legacy comment placeholder behavior).
431
-
432
- Microsoft Support: Open XML formats applicability across recent Excel products; Excel workbook limits (rows/cols, cell character limits, unique formats).
433
-
434
- Google Sheets export capability to `.xlsx` (official Google Docs Editors Help). and Microsoft Support guidance referencing Google Sheets “Download → Microsoft Excel (.xlsx)”.
435
-
436
- LibreOffice ability to load/save `.xlsx` and warning about conversion limitations (official LibreOffice help + documentation).