@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,871 +0,0 @@
1
- # Excel-Compatible XLSX Editor Research Pack
2
-
3
- Table of contents
4
-
5
- - Interpretation of the problem
6
- - Research plan
7
- - Findings
8
- - Recommended design / decisions
9
- - Risks and open questions
10
- - Concrete deliverable in the requested format
11
- - Spreadsheet Compatibility and Testing Specification
12
- - XLSX OOXML Compliance
13
- - React Component Architecture and Front-End Structure Specification for an Excel-Compatible Spreadsheet Editor
14
- - SpreadsheetEditor UX Guide
15
- - Spreadsheet Editor — Frontend Architecture
16
- - Canonical Workbook Model, Selection Semantics, and Command/Transaction Design
17
- - Formula Engine, Recalculation Strategy, and Reference Integrity for an Excel-Compatible Editor
18
- - Review, Comment, Diff, and Change-Inspection Model for an Excel-Compatible Editor
19
- - Performance Strategy for a Main-Thread Excel-Compatible Spreadsheet Editor
20
- - XLSX Fixture Corpus, Scenario Program, and Certification Plan
21
- - Shared OpenXML Editor Platform for DOCX and XLSX
22
- - Agent / LLM Interaction Layer for DOCX and XLSX Editors
23
- - Sources
24
-
25
- ## Interpretation of the problem
26
-
27
- You are building an embeddable React spreadsheet editor that can import an `.xlsx`, allow runtime-driven edits, and export an `.xlsx` that reopens in modern Excel without repair prompts or silent supported-content loss. The workbook is the product; the UI is a projection of runtime-owned canonical state and must never become the canonical truth. All mutations must flow `command -> transaction -> commit`, not direct UI mutation.
28
-
29
- The file format must be treated as an OOXML/Open Packaging Conventions (OPC) package (parts + content types + relationships), not “some XML files in a zip”. In practice, that means correctness is (at least) three layers:
30
-
31
- - Package correctness (OPC invariants: `[Content_Types].xml`, `/_rels/.rels`, part-level `.rels`, URI/part-name rules, relationship resolution).
32
- - Markup correctness (SpreadsheetML + related schemas, plus markup compatibility / extensibility for unknown namespaces and future features).
33
- - Host correctness (Excel’s behavior, including its extensions beyond baseline OOXML, is the final standard).
34
-
35
- Unsupported-but-preservable content must be preserved byte-for-byte and relationship-for-relationship unless an explicit response policy says otherwise (preserve / lock / warn / block / fail). Excel-specific extension parts (threaded comments, persons, rich values, named sheet views, slicers, etc.) exist in real-world files and must not be dropped.
36
-
37
- A key reality constraint: the GitHub connector available in this environment does not expose the specified repository (`bwllaming/docx-react-component`), so I could not directly mirror your DOCX sibling’s existing repo-level architectural documents. The pack below is therefore written as a “repo-seeding” doc set that follows your framing constraints and cites primary/official XLSX sources, but it does not quote or align to any unobservable implementation details from your existing DOCX repo.
38
-
39
- ## Research plan
40
-
41
- Information needs (what must be true to ship a real Excel-compatible editor):
42
-
43
- - OPC invariants and operational consequences for a package-preserving editor: relationships, content types, part naming, and safe rewrite rules.
44
- - SpreadsheetML “minimum workbook” and core parts/relationships (workbook.xml, worksheets, shared strings, styles, calc chain), plus what is optional vs required.
45
- - Excel host limits that affect UI and engine design (rows/cols, cell text length, formula length, format limits), plus how those constraints influence virtualization and data structures.
46
- - Excel extensions to OOXML you will encounter in modern workbooks (threaded comments/persons/mentions, named sheet views, rich values, slicers), and explicit preservation requirements inside those extensions.
47
- - Encrypted/protected documents: when `.xlsx` is not an OPC zip at all (EncryptedPackage) and must be treated as unsupported-fatal unless you implement the cryptography structure.
48
-
49
- Execution approach:
50
-
51
- - Attempted to start with GitHub connector review (required by your instructions), but the configured GitHub account here does not list or search the specified repo, so no repo-derived evidence could be incorporated.
52
- - Performed web research prioritizing primary/official sources: Microsoft Learn (Open XML SDK docs; Microsoft Open Specifications PDFs for MS-XLSX; Office cryptography structure), and Excel limits from Microsoft Support.
53
- - Treated normative standards vs observed Excel behavior explicitly: “normative” for schema/package requirements reported as ISO/IEC/OOXML requirements; “host behavior” as Microsoft Excel behavior and Microsoft’s extension specs.
54
-
55
- ## Findings
56
-
57
- Package and document structure facts (normative baseline)
58
-
59
- - OPC packages model a document as a set of parts with typed content and explicit relationships; relationships can be package-level (source = the package) or part-level (source = a part), and relationship targets can be internal parts or external resources.
60
- - In SpreadsheetML, a workbook’s logical structure centers on `<workbook>` containing `<sheets>` and `<sheet>` elements; the `<sheet>` elements reference worksheet parts via relationship IDs, and each worksheet is stored as a separate XML part.
61
- - A “minimum workbook” requires at least one sheet with a unique `sheetId` and a relationship ID pointing to the worksheet definition; the workbook relationships part (`workbook.xml.rels`) binds those IDs to worksheet part targets.
62
- - A worksheet part contains the sheet grid data in `<sheetData>`; cells are stored with references like `A1` and can contain values and/or formulas.
63
- - Shared strings: a shared string table part (`sharedStrings.xml`) is the canonical deduplication mechanism for strings; a workbook can reference strings by index rather than inline storage, and Excel typically writes a shared string table when it saves files (though it is not required for validity).
64
- - Formulas: formula text is stored in `<f>` within a cell; cached results may be stored in `<v>`, and the cached value can be omitted (in which case the reader can recompute based on the formula).
65
- - Calculation chain (`calcChain.xml`): at most one calculation-chain part can exist; it records an ordered set of formula cells last calculated, but calculation chain information is not required because an application can construct dependencies at load-time.
66
-
67
- Host behavior and “real-world Excel” constraints
68
-
69
- - Excel hard limits that materially affect editor design include: 1,048,576 rows × 16,384 columns, 32,767 characters per cell, ~8,192 characters per formula, and constraints on format/style counts.
70
- - Excel extension specifications exist beyond baseline OOXML, and Microsoft explicitly frames MS-XLSX as extensions to ISO/IEC 29500-1/3; only certain sections are normative within that extension spec.
71
- - Modern Excel workbooks may include advanced extension parts like threaded comments, persons/mentions, named sheet views, slicers, rich value structures, etc.
72
- - Threaded comments vs legacy comments: MS-XLSX describes threaded comments as a system that “replaces and/or works in addition to legacy comments”; it specifies legacy comment placeholders used for backward compatibility and details reconciliation behavior.
73
- - Named Sheet Views: MS-XLSX specifies that the presence of a Named Sheet Views part indicates at least one named sheet view and that it must be the target of an implicit relationship from the worksheet part.
74
- - Rich values: MS-XLSX specifies “rich value” types (including spill/timeout/external errors and other structures) and explicitly states that if a rich value has an unknown rich value type, it must be preserved.
75
-
76
- Edge cases that force explicit “fail” classification
77
-
78
- - Encrypted Office documents are not editable as normal OPC packages because the document can be wrapped in the Office Document Cryptography Structure; specifically, the `\EncryptedPackage` stream contains the entire ECMA-376 source file in compressed, encrypted form, with encryption parameters found in `\EncryptionInfo`.
79
- This means “open with zip -> parse XML” fails for such files unless you implement decryption, so “unsupported-fatal” (fail) is the honest v1 stance.
80
-
81
- ## Recommended design / decisions
82
-
83
- Core principle decisions (to keep the architecture honest and “Excel-reopen safe”)
84
-
85
- - Use a package-preserving runtime that owns (a) canonical workbook state and (b) a preservation-grade representation of the OPC package graph (parts + relationships + content types + unknown bytes). Do not model “the workbook” as a React state tree. The React component subscribes to runtime projections.
86
- - Build a command/transaction system where every UI action is translated into a typed command, validated into a transaction, then committed atomically to the runtime state. This enables: undo/redo, deterministic diffs, invariants enforcement, and compatibility-aware blocking/warning.
87
- - Make “compatibility posture” first-class. Every feature/part category is either:
88
- - Supported-editable (safe import → runtime edit → export → reopen),
89
- - Preserve-only (round-trip but no semantic edits), or
90
- - Unsupported-fatal (cannot safely open or cannot safely export).
91
- Micro-stances for operations: preserve / lock / warn / block / fail.
92
- - Default: never drop unknown content. When you must remove or regenerate derived artifacts (like calc chain), do it explicitly and document it as a controlled, compatibility-motivated transformation (typically “warn” or “preserve-with-normalization”), with fixtures proving Excel accepts the result.
93
- - Certify on Excel behavior, but gate earlier with Open XML structural/schema validation where possible (Open XML SDK validation in CI, plus custom OPC invariant checks).
94
-
95
- Pragmatic v1 scope choices (blunt, on purpose)
96
-
97
- - v1 should focus on “grid-editing” and the minimal set of workbook features that can be made Excel-reopen safe with high confidence: cell values, basic formulas-as-strings (plus reference updating), row/column sizing, frozen panes and basic sheet view selection state, basic styles/number formats, merges, basic data types, sheet add/rename/reorder, and defined names (if included).
98
- - Treat most higher-order Excel objects as preserve-only in v1: pivot tables/caches, charts, slicers, timelines, external connections/data model, rich values, named sheet views, conditional formatting, and threaded comments (unless you commit to implementing their multi-part invariants).
99
- - Treat encrypted/IRM-protected documents as unsupported-fatal in v1, with a clear failure message and optional “export untouched bytes” path only if you are not required to modify.
100
-
101
- ## Risks and open questions
102
-
103
- - Standards availability vs practical implementation: ISO/ECMA specs are authoritative but not always freely retrievable programmatically (license acceptance flows blocked access here), so reliance shifts to Microsoft Learn summaries and Microsoft Open Specifications where accessible. This introduces the risk of missing a subtle normative constraint that Excel enforces.
104
- - Excel host behavior is the final standard, but some behaviors are underspecified publicly. Your certification plan must include Excel Desktop automation (Windows) to catch repair prompts and silent repairs that schema validation will not detect.
105
- - “Preserve-only” is deceptively hard: even if you don’t “edit a feature,” other edits (row insertion, copy/paste, range move) can implicitly require updating references inside that preservable feature. If you can’t update those internal references safely, you must lock/block range mutations that intersect them.
106
- - Formula engine scope: fully replicating Excel calculation semantics is enormous; v1 likely needs a staged approach (reference-parsing and dependency graph first; partial evaluation second; full function parity never). Any mismatch can cause confusing UI vs exported recalculation. Excel’s own limits and function lists shape what you can reasonably support.
107
- - Rich values, new function families, and “future features”: the MS-XLSX extension spec is updated frequently and includes modern features (rich values, external code service errors, etc.). If you parse/serialize incorrectly, you will break files users expect Excel to open cleanly. The safe stance is preserve-only with strong invariants.
108
- - Tooling limitation: the PDF screenshot requirement could not be satisfied in this environment due to safe-URL redirects when attempting screenshot extraction on MS-XLSX. The pack relies on the PDF’s extracted text plus Microsoft Learn pages rather than page-image verification.
109
-
110
- ## Concrete deliverable in the requested format
111
-
112
- Below are the requested documents. Each includes a suggested repo filename, a short purpose statement, and full markdown content. Terminology is consistent across the full set:
113
-
114
- - **Runtime**: non-React canonical state machine (workbook truth).
115
- - **Package Graph**: OPC parts/relationships/content types + preserved bytes.
116
- - **Projection**: derived view model for UI (viewport, formatting for paint, etc.).
117
- - **Command → Transaction → Commit**: the only mutation path.
118
- - **Posture**: preserve / lock / warn / block / fail (operation-level responses).
119
-
120
- ---
121
-
122
- **File:** `docs/spreadsheet-compatibility-and-testing-spec.md`
123
- **Purpose:** Define Excel-compatibility targets, posture taxonomy, certification gates, and the test matrix that proves “reopen in Excel without repair prompts or silent loss.”
124
-
125
- ### Spreadsheet Compatibility and Testing Specification
126
-
127
- **Status:** Draft v1
128
- **Non-negotiable standard:** Files exported by this editor must reopen in recent Excel environments without repair prompts and without silent loss of **supported** content.
129
-
130
- **Normative vs host correctness**
131
-
132
- - **Spec-level correctness (normative):** We satisfy OPC and SpreadsheetML structural requirements as described in ISO/IEC 29500 and related specifications; for practical implementation details, Microsoft’s Open XML SDK guidance and Microsoft Open Specifications are treated as strong references.
133
- - **Application-level correctness (host):** Microsoft Excel’s behavior is the final arbiter; passing schema validation but triggering Excel repair is a fail.
134
-
135
- **Compatibility posture model (global)**
136
-
137
- Every *feature area* and every *operation attempt* yields an explicit posture result:
138
-
139
- - **preserve**: The editor round-trips the content without semantic understanding; no user-visible mutation occurs; export must be byte/graph-preserving for that content.
140
- - **lock**: Content is visible/selectable but is read-only; attempts to modify return lock with an explanation.
141
- - **warn**: Operation proceeds but may alter semantics or cause Excel to recalc/normalize; warn must be surfaced to host and (optionally) UI.
142
- - **block**: Operation is prevented because it would risk producing a workbook that Excel repairs or that loses supported content; document state remains unchanged.
143
- - **fail**: The document cannot be opened or saved safely. Example: encrypted package without decryption support.
144
-
145
- **Supported / preserve-only / unsupported-fatal categories**
146
-
147
- - **Supported-editable**: import → runtime edit → export → reopen in Excel with no repair AND with preserved supported semantics.
148
- - **Preserve-only**: import → no semantic edits (or only cosmetic/metadata edits that are proven safe) → export → reopen; editor must not drop or corrupt.
149
- - **Unsupported-fatal**: cannot open or cannot export safely (e.g., encrypted/IRM docs).
150
-
151
- **Target Excel environments (certification set)**
152
-
153
- We certify against at least:
154
-
155
- - Excel for Microsoft 365 (current channel) on Windows
156
- - Excel 2021+ on Windows
157
- - Excel for Microsoft 365 on macOS
158
- - Excel for the web (smoke validation: open, validate calculations/visuals minimally)
159
-
160
- Rationale: Excel limits/specs are documented across versions and apply broadly; our exported files must align with these constraints.
161
-
162
- **Definition of “repair prompt” failure**
163
-
164
- Fail if any of these occur when opening export output:
165
-
166
- - Excel displays “We found a problem with some content…” and repairs.
167
- - Excel opens but silently removes/rewrites **supported** features (e.g., our supported cell values disappear, formatting disappears, sheet structure changes).
168
- - Excel writes a repair log indicating removed records in supported areas.
169
-
170
- **Test strategy tiers**
171
-
172
- 1) **Static package invariants tests (fast, required in CI)**
173
- - OPC graph traversal: all parts reachable via relationships; `[Content_Types].xml` contains entries for all parts; relationship targets resolve; no dangling relationship IDs.
174
- - SpreadsheetML minimum structure checks (workbook.xml, workbook rels, at least one worksheet).
175
-
176
- 2) **Schema and markup validation (CI, required)**
177
- - Use Open XML SDK validation tooling in CI to validate produced packages against known schemas where possible; failures block release. (Open XML SDK provides strongly-typed parts and is a standard reference toolchain.)
178
-
179
- 3) **Round-trip invariants (CI, required)**
180
- For each fixture: `import -> no-op export` must satisfy:
181
- - Byte preservation for preserve-only parts (exact bytes) OR documented normalization that is proven Excel-safe.
182
- - Relationship graph preservation (IDs may change only if we fully rewrite consistent references).
183
-
184
- 4) **Excel host automation (release gate; nightly + release candidates)**
185
- - Open exported workbook in Excel Desktop automation (Windows runner) with alerts captured.
186
- - Save-as and reopen to ensure Excel can write it back without further repair.
187
-
188
- 5) **Scenario-based functional tests (CI + nightly)**
189
- - UI-level automation: edit operations, undo/redo, copy-paste, row/column insert/delete, formatting, multi-sheet edits.
190
-
191
- **Compatibility test matrix**
192
-
193
- Each row = (feature) × (operation) × (expected posture) × (evidence fixture)
194
-
195
- Examples:
196
-
197
- - Cell value edit (number/string/bool/error): Supported-editable
198
- - Formula edit (string-level): Supported-editable for syntax-preserving edits; warn if function unsupported for evaluation but preserve formula text; block if reference rewriting can’t be guaranteed.
199
- - Shared strings conversion: warn if converting inline strings to shared strings or vice versa; Excel typically writes sharedStrings on save, so normalization toward shared strings is usually Excel-aligned, but must be proven in fixtures.
200
- - Calc chain: warn if dropping calcChain to force Excel rebuild; calcChain is not required and can be recomputed by the application.
201
- - Threaded comments: preserve-only in v1 unless we implement the multi-part invariants and reconciliation behavior.
202
- - Named sheet views: preserve-only; block operations that require rewriting their internal references unless implemented.
203
- - EncryptedPackage: fail on open (unsupported-fatal).
204
-
205
- **Release gates**
206
-
207
- - Gate A (CI): package invariants + schema validation + round-trip no-op export.
208
- - Gate B (Nightly): scenario edits across fixture corpus + Excel automation open/reopen.
209
- - Gate C (Release): full corpus Excel automation + manual spot-check for top customer files.
210
-
211
- ---
212
-
213
- **File:** `docs/xlsx-ooxml-compliance.md`
214
- **Purpose:** Define OPC and SpreadsheetML compliance boundaries, rewrite rules, normalization policy, and strict vs transitional behavior.
215
-
216
- ### XLSX OOXML Compliance
217
-
218
- **Status:** Draft v1
219
-
220
- **Baseline definition**
221
-
222
- An `.xlsx` is an OPC package: a zip-based physical container representing a logical graph of typed parts connected by relationships. Relationships exist at package level (`/_rels/.rels`) and at part level (`<partname>.rels`), and targets can be internal parts or external resources.
223
-
224
- **Compliance objectives**
225
-
226
- - Produce packages that Excel opens without repair prompts.
227
- - Preserve unknown but valid content.
228
- - Maintain relationship integrity, content types correctness, and markup compatibility behavior.
229
-
230
- **OPC invariants we enforce**
231
-
232
- - **Content types:** `[Content_Types].xml` must declare default/override content types for parts; new parts require updating content types.
233
- - **Relationships:**
234
- - Package relationships stored in `/_rels/.rels`.
235
- - Part relationships stored in `_rels/<part>.rels`.
236
- - Targets must resolve to existing parts when internal.
237
- - **Graph discoverability:** all meaningful parts must be discoverable by traversing relationships from the package root(s). (We treat this as a “must” for our editor even if some producers violate it; we preserve violations but do not create new ones.)
238
-
239
- **SpreadsheetML minimal structure invariants**
240
-
241
- - Workbook must contain sheets and each `<sheet>` references a worksheet part via relationship ID; workbook relationships bind IDs to worksheet targets.
242
- - Each worksheet contains `<sheetData>` as the cell table container.
243
- - Shared strings: if present, there is exactly one shared string table part for the workbook.
244
- - Calculation chain: if present, there is no more than one calculation chain part.
245
-
246
- **Strict vs Transitional**
247
-
248
- - We accept both strict and transitional content as input.
249
- - We default to exporting transitional-compatible structures unless a customer explicitly requires strict and we can prove strict correctness in Excel (because many Excel-produced files are transitional in practice and include Microsoft extension namespaces).
250
-
251
- **Markup compatibility / extensibility policy**
252
-
253
- - Preserve unknown namespace declarations, `mc:Ignorable` attributes, and unknown elements/attributes in ignorable namespaces. (Example worksheets may include `mc:Ignorable="x14ac"` and related namespaces.)
254
- - Never drop `extLst` or extension payloads; treat them as preserve-only unless explicitly supported.
255
-
256
- **Normalization policy (explicit and limited)**
257
-
258
- We allow a small set of “safe normalizations” that are validated by Excel fixtures:
259
-
260
- - **calcChain handling:** we may remove or rebuild `calcChain.xml` if it becomes inconsistent after edits; because calc chain is not required and does not dictate runtime calculation order, Excel can rebuild. This must be a **warn** posture and must be covered by fixtures.
261
- - **Shared strings handling:** we may normalize to shared strings on export (because Excel typically does), but only if we correctly rewrite indices and preserve rich text runs, and only after fixture proof.
262
- - **Relationship ID regeneration:** allowed only when we fully rewrite all referencing attributes. Otherwise, preserve existing IDs.
263
-
264
- Any normalization outside this list requires a design review and certification fixtures.
265
-
266
- **Unsupported-fatal compliance cases**
267
-
268
- - Office cryptography wrapper (EncryptedPackage): fail to open unless we implement decryption; this is not an OPC zip file we can parse directly.
269
-
270
- ---
271
-
272
- **File:** `docs/react-component-architecture-spec.md`
273
- **Purpose:** Specify the embeddable React component, typed public API, runtime ownership model, and front-end module boundaries.
274
-
275
- ### React Component Architecture and Front-End Structure Specification for an Excel-Compatible Spreadsheet Editor
276
-
277
- **Status:** Draft v1
278
-
279
- **Non-negotiable architecture rules**
280
-
281
- - React does not own workbook truth. Runtime owns canonical workbook state and all mutations.
282
- - UI is a projection (derived view model) that is fully reproducible from runtime state.
283
- - All mutations go through `command -> transaction -> commit`.
284
- - Unsupported content is preserved; operations that would affect it must return explicit posture results.
285
-
286
- **Suggested package layout**
287
-
288
- - `packages/ooxml-opc/` (shared)
289
- - Zip IO, content types, relationships, part addressing, graph traversal, byte preservation.
290
- - `packages/ooxml-mc/` (shared)
291
- - Markup compatibility helpers: preserve unknown namespaces, ignore rules, safe parse/serialize.
292
- - `packages/spreadsheet-runtime/` (xlsx-specific)
293
- - Canonical workbook model, command/transaction system, projections, export pipeline.
294
- - `packages/spreadsheet-react/` (xlsx-specific)
295
- - React component, event adapters, input system, virtualized grid renderer.
296
- - `packages/editor-platform/` (shared)
297
- - Command bus interfaces, transaction log, undo/redo framework, diagnostics/events.
298
- - `packages/fixtures/` (shared)
299
- - Fixture corpus and golden exports, validation harness.
300
-
301
- **Public API shape (TypeScript)**
302
-
303
- Core design goals:
304
- - Host can supply an input package, receive runtime instance, subscribe to events, and request export.
305
- - Host can inject policy decisions (posture handling) and integrate with persistence.
306
-
307
- Sketch:
308
-
309
- ```ts
310
- export type Posture = "preserve" | "lock" | "warn" | "block" | "fail";
311
-
312
- export interface PostureResult {
313
- posture: Posture;
314
- code: string;
315
- message: string;
316
- details?: Record<string, unknown>;
317
- }
318
-
319
- export interface SpreadsheetEditorHostCallbacks {
320
- onReady?: (runtime: SpreadsheetRuntimeHandle) => void;
321
- onEvent?: (event: SpreadsheetRuntimeEvent) => void;
322
- onPosture?: (result: PostureResult) => void;
323
- }
324
-
325
- export interface SpreadsheetEditorProps {
326
- input?: ArrayBuffer; // .xlsx bytes
327
- readOnly?: boolean;
328
-
329
- // Host policy hooks
330
- policy?: SpreadsheetPolicy;
331
-
332
- // Callbacks
333
- host?: SpreadsheetEditorHostCallbacks;
334
-
335
- // UI configuration
336
- theme?: SpreadsheetTheme;
337
- initialViewport?: { sheetId?: string; topRow?: number; leftCol?: number };
338
-
339
- // Optional: external persistence hooks
340
- persistence?: {
341
- requestSave?: (bytes: Uint8Array) => Promise<void>;
342
- };
343
- }
344
- ```
345
-
346
- **Runtime handle**
347
-
348
- ```ts
349
- export interface SpreadsheetRuntimeHandle {
350
- getDocId(): string;
351
- getStateVersion(): number;
352
-
353
- // Query / projection
354
- getWorkbookSummary(): WorkbookSummary;
355
- getSheetProjection(request: SheetProjectionRequest): SheetProjection;
356
-
357
- // Commands
358
- dispatch(cmd: SpreadsheetCommand): CommandDispatchResult;
359
-
360
- // Export
361
- exportXlsx(options?: ExportOptions): Promise<Uint8Array>;
362
-
363
- // Undo/redo
364
- undo(): CommandDispatchResult;
365
- redo(): CommandDispatchResult;
366
-
367
- // Diagnostics
368
- getDiagnostics(): DiagnosticItem[];
369
- }
370
- ```
371
-
372
- **Command dispatch result (explicit posture)**
373
-
374
- ```ts
375
- export interface CommandDispatchResult {
376
- ok: boolean;
377
- posture?: PostureResult; // present when ok=false or when ok=true with warn
378
- transactionId?: string;
379
- appliedVersion?: number;
380
- }
381
- ```
382
-
383
- **React component behavior**
384
-
385
- - `SpreadsheetEditor` mounts, instantiates runtime (or uses provided runtime), loads input bytes, builds initial projection, renders.
386
- - UI events (mouse/keyboard) are translated into commands (e.g., `SetCellValue`, `MoveSelection`, `Paste`, `InsertRow`) and dispatched.
387
- - Runtime emits events; React subscribes and updates projections via selectors keyed by version + viewport.
388
-
389
- **Rendering strategy**
390
-
391
- - Virtualized grid (rows/cols) is mandatory due to Excel-scale constraints.
392
- - Rendering uses a “cell paint model” projection: visible cells are materialized with computed format tokens, display value, and interaction flags.
393
- - Fine-grained invalidation: projection computed per-tile (e.g., 64×64 cells) to avoid repainting entire viewport.
394
-
395
- ---
396
-
397
- **File:** `docs/spreadsheeteditor-ux-guide.md`
398
- **Purpose:** Define UX rules for selection, editing, copy/paste, warnings/locks, and how preserve-only content is presented honestly.
399
-
400
- ### SpreadsheetEditor UX Guide
401
-
402
- **Status:** Draft v1
403
-
404
- **Core UX stance**
405
-
406
- - This is a spreadsheet editor, not a rich-text editor in a grid.
407
- - The grid’s semantics (addressing, dependencies, range operations) are first-class.
408
- - UX must surface when the runtime is preserving/locking/warning/blocking/failing.
409
-
410
- **Selection semantics (user-visible)**
411
-
412
- - Active cell + selection range are distinct:
413
- - Active cell: caret focus target (for formula bar and direct typing).
414
- - Selection: rectangular and/or multi-range selection (v1 can restrict to single range; multi-range is an explicit scope add).
415
- - Range operations (insert/delete rows/cols, sort/filter, fill handle, paste) operate on the selection, not on DOM state.
416
-
417
- **Direct editing flows**
418
-
419
- - Typing with a single cell selected enters “cell edit” mode.
420
- - Formula bar shows raw formula text (`<f>`) when present; display layer shows cached or computed value.
421
- - When formula evaluation isn’t supported for a function, UI still shows formula text and cached value (if available), and marks cell as “not locally recalculated” (warn badge).
422
-
423
- **Copy/paste flows**
424
-
425
- - Copy creates a structured clipboard payload (internal JSON) plus plain text/TSV for interoperability.
426
- - Paste dispatches a `PasteRange` command; runtime resolves relative references and updates targets.
427
-
428
- **Preserve-only content UX**
429
-
430
- Examples: charts, pivots, slicers, data model, threaded comments (v1 preserve-only unless fully supported).
431
-
432
- - Preserve-only objects must be visible as “objects” anchored to grid positions when possible.
433
- - Any attempt to edit a preserve-only object returns `lock` (read-only) or `block` (operation unsafe) with explanation.
434
- - “Export compatibility” panel lists preserved objects and any warnings emitted during session.
435
-
436
- **Warnings and blocks**
437
-
438
- - Warnings are non-modal by default but persistent in a session log; host can choose to elevate to modal.
439
- - Blocks are immediate and must explain *why* (e.g., “Row insertion intersects a preserve-only pivot cache mapping; operation blocked to avoid breaking Excel reopen.”).
440
-
441
- **Excel limits UX constraints**
442
-
443
- - UI must prevent selecting beyond max row/col bounds and must not create out-of-range references.
444
- - Pasting content bigger than max rows/cols results in `block` with an actionable message.
445
-
446
- ---
447
-
448
- **File:** `docs/spreadsheet-editor-frontend-architecture.md`
449
- **Purpose:** Describe the browser-side architecture: input system, projection pipeline, rendering, command creation, and event/diagnostics surfaces.
450
-
451
- ### Spreadsheet Editor — Frontend Architecture
452
-
453
- **Status:** Draft v1
454
-
455
- **High-level data flow**
456
-
457
- - DOM events → Input Router → Intent Model → Command Builder → Runtime Dispatch
458
- - Runtime Commit → Event Stream → Projection Selectors → React Render
459
-
460
- **Key modules (frontend)**
461
-
462
- - Input Router
463
- - Normalizes pointer/keyboard events, handles platform differences, IME entry, composition events.
464
- - Intent Model
465
- - Converts low-level events into semantic intents: “select range”, “edit cell”, “drag fill”, “resize column”, “open context menu”.
466
- - Command Builder
467
- - Constructs typed commands from intents, always referencing runtime IDs (sheetId, range, cellRef), never DOM indices.
468
- - Projection Selectors
469
- - Memoized selectors keyed by runtime version and viewport window; compute:
470
- - cell display strings (cached/computed)
471
- - format tokens
472
- - selection overlays
473
- - row/col header state
474
- - Renderer
475
- - Virtualized grid, overlays, and editor subcomponents (formula bar, name box, sheet tabs, panels).
476
-
477
- **Projection contracts**
478
-
479
- - A projection must be reproducible from runtime state; it is disposable.
480
- - Projections must not contain opaque function closures that must be preserved across frames; use IDs and stable handles only.
481
-
482
- **Diagnostics + telemetry**
483
-
484
- - Runtime emits:
485
- - posture events (warn/block/fail)
486
- - performance spans (projection time, commit time)
487
- - compatibility events (normalization happened, preserve-only encountered)
488
-
489
- ---
490
-
491
- **File:** `docs/canonical-workbook-model-and-command-system.md`
492
- **Purpose:** Define the canonical workbook state model, addressing and selection semantics, and the command/transaction/commit architecture (including undo/redo and invariants).
493
-
494
- ### Canonical Workbook Model, Selection Semantics, and Command/Transaction Design
495
-
496
- **Status:** Draft v1
497
-
498
- **Design constraints from OOXML + Excel**
499
-
500
- - Grid scale demands sparse storage and virtualization.
501
- - Formulas and cached results are separate concerns; formulas live in `<f>`, cached value in `<v>`.
502
- - Workbook structure is sheet-driven; workbook references worksheets via relationships.
503
-
504
- **Canonical workbook model (runtime-owned)**
505
-
506
- Key properties:
507
-
508
- - Canonical state must be independent of the source file’s XML layout while still being able to re-emit valid OOXML.
509
- - Canonical state must include a preservation envelope for unknown parts and unmodeled elements.
510
-
511
- Suggested core entities:
512
-
513
- - Document
514
- - docId
515
- - packageGraph (OPC parts + relationships + content types + raw bytes for unknown parts)
516
- - workbook (canonical model)
517
- - diagnostics log
518
- - Workbook
519
- - workbookId
520
- - sheets: ordered list
521
- - definedNames
522
- - calcSettings
523
- - styleTable (canonical)
524
- - Sheet
525
- - sheetId, name
526
- - gridModel (sparse)
527
- - rowColModel (sizes, hidden flags)
528
- - merges
529
- - sheetView (freeze panes, selection, zoom, etc.)
530
- - sheetObjects (preserve-only anchors: charts, slicers, etc.)
531
- - Cell
532
- - address (row, col)
533
- - value (typed)
534
- - formula (optional)
535
- - styleRef
536
- - dataValidationRef (optional; v1 can preserve-only)
537
-
538
- **Sparse grid storage**
539
-
540
- - Use chunked sparse tiles (e.g., Map<tileKey, Tile> where Tile is fixed-size).
541
- - Each Tile stores:
542
- - values map
543
- - formula map
544
- - style indices map
545
- - dirty flags (for projections and recalculation)
546
-
547
- **Selection model**
548
-
549
- - SelectionState
550
- - activeCell (sheetId + address)
551
- - selectionRanges[] (v1: length 1)
552
- - mode: “normal” | “edit” | “formula-entry” | “dragging”
553
- - This is canonical runtime state because export can embed sheet view selection state, and Excel can persist it in sheet view elements.
554
-
555
- **Command / Transaction / Commit**
556
-
557
- - **Command**: user intent, declarative, typed. Examples:
558
- - `SetCellValue(sheetId, addr, newValue)`
559
- - `SetCellFormula(sheetId, addr, formulaText)`
560
- - `InsertRows(sheetId, startRow, count)`
561
- - `InsertCols(sheetId, startCol, count)`
562
- - `DeleteRows(...)`, `DeleteCols(...)`
563
- - `SetRangeStyle(sheetId, range, styleDelta)`
564
- - `MergeCells(sheetId, range)` / `UnmergeCells(...)`
565
- - `RenameSheet(sheetId, newName)`
566
- - **Transaction**: validated, normalized set of operations with explicit invariants and posture results.
567
- - **Commit**: applies transaction atomically, emits events, updates version.
568
-
569
- **Invariant enforcement examples**
570
-
571
- - Prevent out-of-bound writes (rows > 1,048,576; cols > 16,384).
572
- - Prevent operations that would require rewriting preserve-only objects’ internal references unless implemented → `block`.
573
- - If we must normalize derived parts (calcChain), emit `warn`.
574
-
575
- **Undo/redo**
576
-
577
- - Store transaction log with inverse operations:
578
- - Each operation provides `apply()` and `invert()`.
579
- - Undo/redo is runtime-level, not UI-level.
580
-
581
- ---
582
-
583
- **File:** `docs/formula-engine-and-recalc.md`
584
- **Purpose:** Define formula parsing, reference semantics, recalculation strategy, and how to keep reference integrity without pretending to fully replicate Excel.
585
-
586
- ### Formula Engine, Recalculation Strategy, and Reference Integrity for an Excel-Compatible Editor
587
-
588
- **Status:** Draft v1
589
-
590
- **Spec-grounded facts we rely on**
591
-
592
- - Formula text is stored in `<f>` and cached value in `<v>`; cached value can be omitted, and readers can recompute.
593
- - Calculation chain (`calcChain.xml`) can exist but is not required; it records last calculation order and does not dictate runtime calculation order.
594
- - Excel imposes limits on formula length and function semantics in practice.
595
-
596
- **Design stance**
597
-
598
- Do not commit to full Excel parity in v1. Instead:
599
-
600
- - **Always preserve formula text exactly** (including functions we don’t evaluate).
601
- - **Always maintain reference integrity** for supported range operations (copy/paste, insert/delete rows/cols, move range) for the subset of reference grammar we claim to support.
602
- - Evaluation is pluggable and explicitly partial.
603
-
604
- **Formula capabilities taxonomy**
605
-
606
- - **Supported (reference integrity + parse + rewrite):**
607
- - A1 references: `A1`, `$A$1`, `A$1`, `$A1`
608
- - Ranges: `A1:B5`
609
- - Sheet-qualified: `Sheet1!A1`
610
- - 3D references (v1 preserve-only unless implemented)
611
- - Structured references (tables): preserve-only in v1 unless table engine implemented; grammar exists and is non-trivial.
612
- - **Supported evaluation (v1 optional):** limited function set (SUM, AVERAGE, MIN/MAX, IF, basic arithmetic), with clear “unsupported function” behavior.
613
- - **Preserve-only:** dynamic arrays, rich value functions, new/copilot-related functions, external code service functions; preserve text and cached result.
614
-
615
- **Recalculation modes**
616
-
617
- - Mode 0 (Display cached): show cached `<v>` values where present.
618
- - Pros: faithful to file state; minimal complexity.
619
- - Cons: edits don’t update dependent cells visually.
620
- - Mode 1 (Incremental partial): evaluate only supported formula subset; mark others as “not locally recalculated.”
621
- - Mode 2 (Full engine): out of v1 scope.
622
-
623
- **Reference rewrite strategy**
624
-
625
- - Parse formula into AST with tokens preserving original string slices.
626
- - Reference nodes carry:
627
- - kind (cell/range/structured/name)
628
- - absolute flags
629
- - sheet scope
630
- - Range operations produce a “reference transform” mapping and rewrite AST accordingly.
631
-
632
- **calcChain policy**
633
-
634
- - If we can maintain calcChain consistently, preserve.
635
- - If operations invalidate calcChain and we cannot update it safely, remove it and emit `warn`, relying on Excel to rebuild (allowed because calcChain is optional and does not define dependencies).
636
-
637
- ---
638
-
639
- **File:** `docs/review-comment-diff-model.md`
640
- **Purpose:** Define how comments (legacy and threaded), diffing, and change inspection work, with honest v1 scope and preserve-only posture for complex Excel collaboration features.
641
-
642
- ### Review, Comment, Diff, and Change-Inspection Model for an Excel-Compatible Editor
643
-
644
- **Status:** Draft v1
645
-
646
- **Key reality**
647
-
648
- Excel has multiple comment systems and collaboration metadata:
649
-
650
- - Legacy comments are defined in ISO/IEC 29500 (referenced by MS-XLSX).
651
- - Threaded comments are specified as an extension with associated parts, persons, mentions, and compatibility placeholders; reconciliation behavior is described in MS-XLSX.
652
-
653
- **v1 stance**
654
-
655
- - Legacy comments: preserve-only (visible if we can anchor to cell; editing optional).
656
- - Threaded comments/persons/mentions: preserve-only in v1 unless we implement the full multi-part invariants:
657
- - Threaded Comments part presence implies at least one threaded comment; part has a specific content type and relationship.
658
- - Persons and mentions have required ID correspondence rules.
659
- - Legacy placeholders must align with threaded comments for backward compatibility.
660
-
661
- **Diff model (editor-internal, not Excel track changes)**
662
-
663
- We implement an internal, deterministic diff for:
664
-
665
- - Workbook structure changes (sheets added/removed/renamed/reordered)
666
- - Range edits (cells changed, formulas changed, formats changed)
667
- - Named range edits
668
-
669
- Diff representation:
670
-
671
- - Based on committed transactions, not on UI events.
672
- - Each transaction includes “semantic change entries”:
673
- - `CellValueChanged`, `CellFormulaChanged`, `RangeShifted`, `StyleChanged`, etc.
674
-
675
- **Change inspection UI**
676
-
677
- - A “Changes” panel lists transactions with:
678
- - author (host-provided)
679
- - time
680
- - affected ranges
681
- - posture warnings
682
- - Clicking a change navigates to affected range and highlights before/after.
683
-
684
- **Preserve-only collision rules**
685
-
686
- If the user edits a range that intersects preserve-only objects anchored to those cells:
687
-
688
- - Default: `block` unless we can prove safe rewrite of the preserve-only object references.
689
- - Alternative: `warn` and proceed only if we can guarantee object remains valid and Excel opens. (This requires fixtures; do not do in v1 by default.)
690
-
691
- ---
692
-
693
- **File:** `docs/performance-strategy-main-thread.md`
694
- **Purpose:** Provide a performance plan that works on the main thread, with explicit budgets, data structures, and regression gates.
695
-
696
- ### Performance Strategy for a Main-Thread Excel-Compatible Spreadsheet Editor
697
-
698
- **Status:** Draft v1
699
-
700
- **Constraints**
701
-
702
- - Excel scale: grid bounds are huge; we must virtualize and avoid full materialization.
703
- - JavaScript main-thread: avoid long tasks; projection must be incremental and tile-based.
704
-
705
- **Performance budgets (targets)**
706
-
707
- - Input latency:
708
- - typing to cell display update: < 16ms average
709
- - selection movement: < 8ms average
710
- - Scroll: maintain 60fps under typical viewport sizes
711
- - Large file load (e.g., 10MB workbook): usable first paint in < 1s on modern laptop (stretch goal; dependent on parsing strategy)
712
-
713
- **Core techniques**
714
-
715
- - Tile-based sparse grid and tile-based projection cache (64×64 or 128×32).
716
- - Incremental XML parsing: parse packages and worksheets on demand (sheet-level lazy load).
717
- - Avoid allocating per-cell objects for empty cells.
718
- - String interning and shared string handling must be memory-aware; Excel uses shared strings to optimize repeated strings.
719
- - Commit batching: multiple UI micro-events coalesce into one transaction per user action when possible.
720
-
721
- **Regression gates**
722
-
723
- - Performance benchmarks in CI: load fixtures, simulate scroll, simulate 10k cell edits, record long tasks.
724
- - Fail build if median exceeds targets by threshold.
725
-
726
- ---
727
-
728
- **File:** `docs/xlsx-fixture-corpus-and-certification-plan.md`
729
- **Purpose:** Define the fixture corpus, scenario program, and the certification process (CI + nightly + release) for Excel reopen safety.
730
-
731
- ### XLSX Fixture Corpus, Scenario Program, and Certification Plan
732
-
733
- **Status:** Draft v1
734
-
735
- **Fixture corpus structure**
736
-
737
- - `fixtures/input/`
738
- - `minimal/` (minimum workbook, one sheet, basic cells)
739
- - `strings/` (shared strings, inline strings, rich text in shared string items)
740
- - `formulas/` (simple formulas, references, cross-sheet references; cached values present/absent)
741
- - `calcchain/` (with/without calcChain; broken calcChain cases)
742
- - `styles/` (num formats, fonts/fills/borders; many styles; edge counts)
743
- - `objects-preserve-only/` (charts, pivots, slicers, named sheet views, threaded comments, rich values)
744
- - `encrypted/` (encrypted package samples → must fail)
745
-
746
- **Scenario program**
747
-
748
- Each scenario is a deterministic script:
749
-
750
- - Load fixture
751
- - Apply commands
752
- - Export
753
- - Run validators
754
- - Run Excel automation open/reopen on nightly/release tiers
755
-
756
- Example scenarios:
757
-
758
- - `no-op round trip` for every fixture
759
- - `edit cells + undo/redo`
760
- - `insert rows/cols`, `delete rows/cols`
761
- - `copy/paste range`
762
- - `sheet rename/reorder`
763
- - `format range`
764
- - `formula rewrite on insert row`
765
-
766
- **Certification outcomes**
767
-
768
- - **Pass**: Excel opens without repair; supported changes preserved; preserve-only parts preserved.
769
- - **Warn-pass**: Excel opens and supported changes preserved, but a documented normalization happened (e.g., calcChain dropped).
770
- - **Fail**: repair prompt or supported loss or structural invalidity.
771
-
772
- ---
773
-
774
- **File:** `docs/shared-openxml-editor-platform.md`
775
- **Purpose:** Define the shared platform modules and contracts reused across DOCX and XLSX editors (OPC package graph, markup compatibility, command/transaction framework, preservation envelope).
776
-
777
- ### Shared OpenXML Editor Platform for DOCX and XLSX
778
-
779
- **Status:** Draft v1
780
-
781
- **Shared platform responsibilities**
782
-
783
- - OPC Package Graph abstraction
784
- - parts (URI, content type, raw bytes, parsed trees where relevant)
785
- - relationships (package/part relationships; internal/external)
786
- - content types (`[Content_Types].xml`) management
787
- - Preservation Envelope
788
- - store unknown parts + unknown XML payloads as raw bytes
789
- - preserve relationship graph even when content is not understood
790
- - Markup compatibility utilities
791
- - preserve unknown namespaces and extension lists
792
- - do not drop `extLst`-style future feature payloads
793
- - Command/Transaction framework
794
- - typed commands
795
- - validation and posture results
796
- - transaction log + undo/redo + diff
797
-
798
- **Shared contracts**
799
-
800
- - `IOoxmlPackageGraph`
801
- - `IPreservationStore`
802
- - `ICommandBus` / `ITransactionEngine`
803
- - `IPosturePolicy` (host-configurable)
804
-
805
- **Preservation rules (shared)**
806
-
807
- - Never silently drop unknown parts.
808
- - Never silently drop unknown relationship types.
809
- - If we must normalize a derived artifact, we do it explicitly with posture `warn` and fixture coverage.
810
-
811
- ---
812
-
813
- **File:** `docs/agent-llm-interaction-layer.md`
814
- **Purpose:** Specify a safe “agent interface” for both DOCX and XLSX editors: bounded command generation, explainable diffs, and posture-aware tool use.
815
-
816
- ### Agent / LLM Interaction Layer for DOCX and XLSX Editors
817
-
818
- **Status:** Draft v1
819
-
820
- **Principles**
821
-
822
- - The agent does not mutate state directly. It proposes commands.
823
- - Every command is validated by runtime; posture outcomes must be returned to the agent.
824
- - The agent must be able to explain what changed and why something was blocked.
825
-
826
- **Core abstractions**
827
-
828
- - `EditorAgentSession`
829
- - has a runtime handle
830
- - can request projections (read-only)
831
- - can propose a command batch
832
- - `AgentCommandPlan`
833
- - list of commands
834
- - expected outcomes (optional)
835
- - rollback strategy
836
-
837
- **Security + safety constraints**
838
-
839
- - No arbitrary code execution in formulas or macros via agent.
840
- - For encrypted/protected files, agent must receive `fail` and can only advise user on next steps (e.g., decrypt outside the editor).
841
-
842
- **Agent-facing schemas**
843
-
844
- - Workbook summary
845
- - Sheet projection (viewport)
846
- - Cell inspection (raw stored value, formula text, style tokens)
847
- - Diagnostics log (warnings, preserve-only objects)
848
-
849
- **Example agent flow**
850
-
851
- 1) Agent requests visible viewport projection.
852
- 2) Agent proposes commands: set values, set formulas, format a range.
853
- 3) Runtime returns {ok, posture, transactionId}.
854
- 4) Agent requests diff summary for transaction; explains to user.
855
- 5) If blocked, agent suggests alternative (e.g., edit a different range, or accept preserve-only lock).
856
-
857
- ---
858
-
859
- ## Sources
860
-
861
- - OPC relationships and packaging fundamentals (relationships as links from package or part; target modes; relationship markup).
862
- - Microsoft MSDN Magazine on OPC: `[Content_Types].xml`, `/_rels/.rels`, relationship serialization examples.
863
- - Microsoft Learn: Structure of a SpreadsheetML document (minimum workbook scenario; workbook.xml, workbook rels, worksheet parts).
864
- - Microsoft Learn: Working with sheets (worksheet part semantics; statement that a package contains one worksheet part per worksheet).
865
- - Microsoft Learn: Shared string table (sharedStrings part; “Excel always creates a shared string table when it saves a file”; optionality).
866
- - Microsoft Learn: Working with formulas (`<f>` for formula, `<v>` cached value; cached value can be omitted).
867
- - Microsoft Learn: Working with the calculation chain (calcChain optionality; at most one; semantics).
868
- - Open XML SDK reference: SpreadsheetDocument class (package/part model; relationship traversal tools; calc chain ignore helper).
869
- - Microsoft Support: Excel specifications and limits (grid size, cell text limits, formula length limits, style limits).
870
- - Microsoft Open Specifications PDF: MS-XLSX (Excel `.xlsx` extensions; threaded comments/persons/mentions; named sheet views; rich values and “unknown rich value MUST be preserved”; slicers).
871
- - Microsoft Open Specifications: Office Document Cryptography Structure (EncryptedPackage contains entire ECMA-376 source file in compressed encrypted form; EncryptionInfo stream details).