@beyondwork/docx-react-component 1.0.0 → 1.0.2

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 (560) hide show
  1. package/README.md +44 -104
  2. package/package.json +66 -15
  3. package/src/api/public-types.ts +1 -1
  4. package/src/compare/diff-engine.ts +530 -0
  5. package/src/compare/export-redlines.ts +162 -0
  6. package/src/compare/snapshot.ts +37 -0
  7. package/src/core/commands/index.ts +1 -1
  8. package/src/core/state/editor-state.ts +2 -2
  9. package/src/index.ts +45 -0
  10. package/src/legal/bookmarks.ts +196 -0
  11. package/src/legal/cross-references.ts +356 -0
  12. package/src/legal/defined-terms.ts +203 -0
  13. package/src/runtime/document-runtime.ts +3 -5
  14. package/src/runtime/table-commands.ts +4 -1
  15. package/src/runtime/table-schema.ts +17 -2
  16. package/src/runtime/virtualized-rendering.ts +258 -0
  17. package/src/ui/WordReviewEditor.tsx +256 -35
  18. package/src/ui-tailwind/editor-surface/tw-editor-surface.tsx +2 -2
  19. package/src/ui-tailwind/editor-surface/tw-table-node-view.tsx +16 -2
  20. package/.codex/config.toml +0 -5
  21. package/.corepack/v1/pnpm/10.30.3/.corepack +0 -1
  22. package/.corepack/v1/pnpm/10.30.3/LICENSE +0 -22
  23. package/.corepack/v1/pnpm/10.30.3/README.md +0 -240
  24. package/.corepack/v1/pnpm/10.30.3/dist/node-gyp-bin/node-gyp +0 -6
  25. package/.corepack/v1/pnpm/10.30.3/dist/node-gyp-bin/node-gyp.cmd +0 -5
  26. package/.corepack/v1/pnpm/10.30.3/dist/pnpm.cjs +0 -195400
  27. package/.corepack/v1/pnpm/10.30.3/dist/pnpmrc +0 -2
  28. package/.corepack/v1/pnpm/10.30.3/dist/reflink.darwin-arm64-2HJ4WGO6.node +0 -0
  29. package/.corepack/v1/pnpm/10.30.3/dist/reflink.darwin-x64-3G3H6IW4.node +0 -0
  30. package/.corepack/v1/pnpm/10.30.3/dist/reflink.win32-arm64-msvc-Q6BARPPB.node +0 -0
  31. package/.corepack/v1/pnpm/10.30.3/dist/reflink.win32-x64-msvc-J2TZHRQI.node +0 -0
  32. package/.corepack/v1/pnpm/10.30.3/dist/templates/completion.bash +0 -31
  33. package/.corepack/v1/pnpm/10.30.3/dist/templates/completion.fish +0 -22
  34. package/.corepack/v1/pnpm/10.30.3/dist/templates/completion.ps1 +0 -193
  35. package/.corepack/v1/pnpm/10.30.3/dist/templates/completion.zsh +0 -27
  36. package/.corepack/v1/pnpm/10.30.3/dist/vendor/fastlist-0.3.0-x64.exe +0 -0
  37. package/.corepack/v1/pnpm/10.30.3/dist/vendor/fastlist-0.3.0-x86.exe +0 -0
  38. package/.corepack/v1/pnpm/10.30.3/dist/worker.js +0 -10119
  39. package/.corepack/v1/pnpm/10.30.3/package.json +0 -192
  40. package/.cursor/mcp.json +0 -7
  41. package/.github/workflows/ci.yml +0 -35
  42. package/.mcp.json +0 -7
  43. package/.openclaw/workspace-state.json +0 -4
  44. package/.pnpmrc.json +0 -1
  45. package/.wave-launch.sh +0 -7
  46. package/.workspace-marker +0 -1
  47. package/AGENTS.md +0 -78
  48. package/CHANGELOG.md +0 -177
  49. package/DESIGN.md +0 -929
  50. package/HEARTBEAT.md +0 -7
  51. package/IDENTITY.md +0 -23
  52. package/SOUL.md +0 -36
  53. package/TOOLS.md +0 -40
  54. package/USER.md +0 -17
  55. package/docs/README.md +0 -107
  56. package/docs/agents/wave-cont-eval-role.md +0 -36
  57. package/docs/agents/wave-cont-qa-role.md +0 -52
  58. package/docs/agents/wave-deploy-verifier-role.md +0 -34
  59. package/docs/agents/wave-design-role.md +0 -47
  60. package/docs/agents/wave-documentation-role.md +0 -34
  61. package/docs/agents/wave-infra-role.md +0 -34
  62. package/docs/agents/wave-integration-role.md +0 -37
  63. package/docs/agents/wave-launcher-role.md +0 -41
  64. package/docs/agents/wave-orchestrator-role.md +0 -52
  65. package/docs/agents/wave-planner-role.md +0 -39
  66. package/docs/agents/wave-security-role.md +0 -40
  67. package/docs/architecture/docx/README.md +0 -10
  68. package/docs/architecture/future/README.md +0 -8
  69. package/docs/architecture/ooxml-upgrade-analysis.md +0 -134
  70. package/docs/architecture/platform/shared-openxml-editor-platform.md +0 -153
  71. package/docs/architecture/xlsx/canonical-workbook-model-and-commands.md +0 -187
  72. package/docs/architecture/xlsx/spreadsheet-editor-frontend-architecture.md +0 -150
  73. package/docs/comment-redline-overview.md +0 -350
  74. package/docs/concepts/context7-vs-skills.md +0 -118
  75. package/docs/concepts/operating-modes.md +0 -91
  76. package/docs/concepts/runtime-agnostic-orchestration.md +0 -111
  77. package/docs/concepts/what-is-a-wave.md +0 -217
  78. package/docs/context7/bundles.json +0 -222
  79. package/docs/context7/planner-agent/README.md +0 -28
  80. package/docs/context7/planner-agent/manifest.json +0 -83
  81. package/docs/context7/planner-agent/papers/cooperbench-why-coding-agents-cannot-be-your-teammates-yet.md +0 -3283
  82. package/docs/context7/planner-agent/papers/dova-deliberation-first-multi-agent-orchestration-for-autonomous-research-automation.md +0 -1699
  83. package/docs/context7/planner-agent/papers/dpbench-large-language-models-struggle-with-simultaneous-coordination.md +0 -2251
  84. package/docs/context7/planner-agent/papers/incremental-planning-to-control-a-blackboard-based-problem-solver.md +0 -1729
  85. package/docs/context7/planner-agent/papers/silo-bench-a-scalable-environment-for-evaluating-distributed-coordination-in-multi-agent-llm-systems.md +0 -3747
  86. package/docs/context7/planner-agent/papers/todoevolve-learning-to-architect-agent-planning-systems.md +0 -1675
  87. package/docs/context7/planner-agent/papers/verified-multi-agent-orchestration-a-plan-execute-verify-replan-framework-for-complex-query-resolution.md +0 -1173
  88. package/docs/context7/planner-agent/papers/why-do-multi-agent-llm-systems-fail.md +0 -5211
  89. package/docs/context7/planner-agent/topics/planning-and-orchestration.md +0 -24
  90. package/docs/evals/arm-templates/README.md +0 -13
  91. package/docs/evals/arm-templates/full-wave.json +0 -15
  92. package/docs/evals/arm-templates/single-agent.json +0 -15
  93. package/docs/evals/benchmark-catalog.json +0 -670
  94. package/docs/evals/cases/README.md +0 -47
  95. package/docs/evals/cases/wave-blackboard-inbox-targeting.json +0 -73
  96. package/docs/evals/cases/wave-contradiction-conflict.json +0 -104
  97. package/docs/evals/cases/wave-expert-routing-preservation.json +0 -69
  98. package/docs/evals/cases/wave-hidden-profile-private-evidence.json +0 -81
  99. package/docs/evals/cases/wave-premature-closure-guard.json +0 -71
  100. package/docs/evals/cases/wave-silo-cross-agent-state.json +0 -77
  101. package/docs/evals/cases/wave-simultaneous-lockstep.json +0 -92
  102. package/docs/evals/external-benchmarks.json +0 -85
  103. package/docs/evals/external-command-config.sample.json +0 -9
  104. package/docs/evals/external-command-config.swe-bench-pro.json +0 -8
  105. package/docs/evals/pilots/README.md +0 -47
  106. package/docs/evals/pilots/swe-bench-pro-public-full-wave-review-10.json +0 -64
  107. package/docs/evals/pilots/swe-bench-pro-public-pilot.json +0 -111
  108. package/docs/evals/wave-benchmark-program.md +0 -302
  109. package/docs/guides/planner.md +0 -220
  110. package/docs/guides/recommendations-0.8.9.md +0 -133
  111. package/docs/guides/signal-wrappers.md +0 -165
  112. package/docs/guides/terminal-surfaces.md +0 -96
  113. package/docs/image copy.png +0 -0
  114. package/docs/image.png +0 -0
  115. package/docs/images/image.png +0 -0
  116. package/docs/legal-feedback-architecture.md +0 -498
  117. package/docs/plans/component-cutover-matrix.json +0 -1072
  118. package/docs/plans/component-cutover-matrix.md +0 -307
  119. package/docs/plans/context7-wave-orchestrator.md +0 -155
  120. package/docs/plans/current-state.md +0 -198
  121. package/docs/plans/docx/README.md +0 -9
  122. package/docs/plans/examples/wave-benchmark-improvement.md +0 -108
  123. package/docs/plans/examples/wave-example-live-proof.md +0 -435
  124. package/docs/plans/master-plan.md +0 -224
  125. package/docs/plans/migration.md +0 -538
  126. package/docs/plans/operations/README.md +0 -7
  127. package/docs/plans/operations/wave-10-word-certification.md +0 -87
  128. package/docs/plans/operations/wave-8-railway-staging.md +0 -153
  129. package/docs/plans/operations/wave-9-manual-certification.md +0 -73
  130. package/docs/plans/platform/README.md +0 -9
  131. package/docs/plans/reference/legal-checklist-coverage.md +0 -258
  132. package/docs/plans/wave-orchestrator.md +0 -423
  133. package/docs/plans/waves/README.md +0 -75
  134. package/docs/plans/waves/completed/wave-0.md +0 -195
  135. package/docs/plans/waves/completed/wave-1.md +0 -379
  136. package/docs/plans/waves/completed/wave-10.md +0 -670
  137. package/docs/plans/waves/completed/wave-11.md +0 -335
  138. package/docs/plans/waves/completed/wave-12.md +0 -417
  139. package/docs/plans/waves/completed/wave-13.md +0 -316
  140. package/docs/plans/waves/completed/wave-14.md +0 -319
  141. package/docs/plans/waves/completed/wave-15.md +0 -321
  142. package/docs/plans/waves/completed/wave-16.md +0 -316
  143. package/docs/plans/waves/completed/wave-17.md +0 -331
  144. package/docs/plans/waves/completed/wave-18.md +0 -328
  145. package/docs/plans/waves/completed/wave-2.md +0 -438
  146. package/docs/plans/waves/completed/wave-3.md +0 -435
  147. package/docs/plans/waves/completed/wave-4.md +0 -430
  148. package/docs/plans/waves/completed/wave-5.md +0 -430
  149. package/docs/plans/waves/completed/wave-6.md +0 -430
  150. package/docs/plans/waves/completed/wave-7.md +0 -526
  151. package/docs/plans/waves/completed/wave-8.md +0 -596
  152. package/docs/plans/waves/completed/wave-9.md +0 -552
  153. package/docs/plans/waves/deferred/README.md +0 -14
  154. package/docs/plans/waves/deferred/encrypted-intake-contracts.md +0 -282
  155. package/docs/plans/waves/deferred/legal-feedback-wave-expansion.md +0 -308
  156. package/docs/plans/waves/deferred/wave-encrypted-intake.md +0 -451
  157. package/docs/plans/waves/design/README.md +0 -5
  158. package/docs/plans/waves/design/wave-1-a1.md +0 -309
  159. package/docs/plans/waves/reviews/README.md +0 -5
  160. package/docs/plans/waves/reviews/wave-0-cont-qa.md +0 -151
  161. package/docs/plans/waves/reviews/wave-1-cont-qa.md +0 -46
  162. package/docs/plans/waves/reviews/wave-10-accessibility-and-design.md +0 -51
  163. package/docs/plans/waves/reviews/wave-10-cont-qa.md +0 -24
  164. package/docs/plans/waves/reviews/wave-10-dashboard-proof.md +0 -46
  165. package/docs/plans/waves/reviews/wave-10-performance-signoff.md +0 -55
  166. package/docs/plans/waves/reviews/wave-10-regression-proof.md +0 -23
  167. package/docs/plans/waves/reviews/wave-10-release-audit.md +0 -31
  168. package/docs/plans/waves/reviews/wave-10-service-proof.md +0 -83
  169. package/docs/plans/waves/reviews/wave-10-word-certification.md +0 -31
  170. package/docs/plans/waves/reviews/wave-18-ai-contract-closure.md +0 -277
  171. package/docs/plans/waves/reviews/wave-18-cont-qa.md +0 -255
  172. package/docs/plans/waves/reviews/wave-18-parity-proof.md +0 -271
  173. package/docs/plans/waves/reviews/wave-19-cont-qa.md +0 -59
  174. package/docs/plans/waves/reviews/wave-2-cont-qa.md +0 -72
  175. package/docs/plans/waves/reviews/wave-20-cont-qa.md +0 -60
  176. package/docs/plans/waves/reviews/wave-25-cont-qa.md +0 -48
  177. package/docs/plans/waves/reviews/wave-28-cont-qa.md +0 -46
  178. package/docs/plans/waves/reviews/wave-29-cont-qa.md +0 -53
  179. package/docs/plans/waves/reviews/wave-3-cont-qa.md +0 -53
  180. package/docs/plans/waves/reviews/wave-3-core-proof.md +0 -77
  181. package/docs/plans/waves/reviews/wave-3-validator-proof.md +0 -73
  182. package/docs/plans/waves/reviews/wave-32-cont-qa.md +0 -43
  183. package/docs/plans/waves/reviews/wave-33-cont-qa.md +0 -526
  184. package/docs/plans/waves/reviews/wave-34-cont-qa.md +0 -100
  185. package/docs/plans/waves/reviews/wave-35-cont-qa.md +0 -145
  186. package/docs/plans/waves/reviews/wave-4-cont-qa.md +0 -47
  187. package/docs/plans/waves/reviews/wave-4-structure-proof.md +0 -69
  188. package/docs/plans/waves/reviews/wave-5-comment-proof.md +0 -158
  189. package/docs/plans/waves/reviews/wave-5-cont-qa.md +0 -68
  190. package/docs/plans/waves/reviews/wave-6-cont-qa.md +0 -416
  191. package/docs/plans/waves/reviews/wave-6-redline-proof.md +0 -130
  192. package/docs/plans/waves/reviews/wave-7-cont-qa.md +0 -82
  193. package/docs/plans/waves/reviews/wave-7-ooxml-compliance.md +0 -85
  194. package/docs/plans/waves/reviews/wave-7-preservation-proof.md +0 -119
  195. package/docs/plans/waves/reviews/wave-7-trust-ux.md +0 -87
  196. package/docs/plans/waves/reviews/wave-8-accessibility-and-design.md +0 -128
  197. package/docs/plans/waves/reviews/wave-8-cont-qa.md +0 -92
  198. package/docs/plans/waves/reviews/wave-8-live-proof.md +0 -140
  199. package/docs/plans/waves/reviews/wave-8-security.md +0 -47
  200. package/docs/plans/waves/reviews/wave-9-editor-embedding.md +0 -39
  201. package/docs/plans/waves/reviews/wave-9-fixture-runner.md +0 -56
  202. package/docs/plans/waves/reviews/wave-9-live-proof.md +0 -105
  203. package/docs/plans/waves/reviews/wave-9-usability-and-performance.md +0 -152
  204. package/docs/plans/waves/specs/README.md +0 -5
  205. package/docs/plans/waves/specs/wave-1-component-boundaries.md +0 -322
  206. package/docs/plans/waves/specs/wave-1-ooxml-contracts.md +0 -323
  207. package/docs/plans/waves/specs/wave-1-review-and-ui-contracts.md +0 -339
  208. package/docs/plans/waves/specs/wave-1-runtime-contracts.md +0 -509
  209. package/docs/plans/waves/wave-19.md +0 -341
  210. package/docs/plans/waves/wave-20.md +0 -308
  211. package/docs/plans/waves/wave-21.md +0 -289
  212. package/docs/plans/waves/wave-22.md +0 -221
  213. package/docs/plans/waves/wave-23.md +0 -295
  214. package/docs/plans/waves/wave-24.md +0 -286
  215. package/docs/plans/waves/wave-25.md +0 -313
  216. package/docs/plans/waves/wave-26.md +0 -300
  217. package/docs/plans/waves/wave-27.md +0 -299
  218. package/docs/plans/waves/wave-28.md +0 -368
  219. package/docs/plans/waves/wave-29.md +0 -303
  220. package/docs/plans/waves/wave-30.md +0 -307
  221. package/docs/plans/waves/wave-31.md +0 -231
  222. package/docs/plans/waves/wave-32.md +0 -152
  223. package/docs/plans/waves/wave-33.md +0 -147
  224. package/docs/plans/waves/wave-34.md +0 -148
  225. package/docs/plans/waves/wave-35.md +0 -141
  226. package/docs/plans/waves/wave-36.md +0 -146
  227. package/docs/plans/xlsx/README.md +0 -14
  228. package/docs/plans/xlsx/xlsx-fixture-corpus-and-certification-plan.md +0 -126
  229. package/docs/reference/cli-reference.md +0 -600
  230. package/docs/reference/coordination-and-closure.md +0 -487
  231. package/docs/reference/deep-research-report (15).md +0 -25
  232. package/docs/reference/docx/README.md +0 -10
  233. package/docs/reference/legal-checklist.md +0 -445
  234. package/docs/reference/live-proof-waves.md +0 -199
  235. package/docs/reference/ooxml-compliance.md +0 -129
  236. package/docs/reference/ooxml-feature-parity-matrix.md +0 -172
  237. package/docs/reference/platform/shared-ooxml-platform-guidance.md +0 -77
  238. package/docs/reference/prototype-agent-prompt-legal-fidelity.md +0 -155
  239. package/docs/reference/public-api.md +0 -456
  240. package/docs/reference/repository-guidance.md +0 -58
  241. package/docs/reference/runtime-config/README.md +0 -182
  242. package/docs/reference/runtime-config/claude.md +0 -110
  243. package/docs/reference/runtime-config/codex.md +0 -82
  244. package/docs/reference/runtime-config/opencode.md +0 -93
  245. package/docs/reference/sample-waves.md +0 -105
  246. package/docs/reference/skills.md +0 -237
  247. package/docs/reference/templates/AGENTS.md +0 -78
  248. package/docs/reference/templates/HEARTBEAT.md +0 -7
  249. package/docs/reference/templates/IDENTITY.md +0 -23
  250. package/docs/reference/templates/SOUL.md +0 -36
  251. package/docs/reference/templates/TOOLS.md +0 -40
  252. package/docs/reference/templates/USER.md +0 -17
  253. package/docs/reference/wave-control.md +0 -184
  254. package/docs/reference/wave-planning-lessons.md +0 -167
  255. package/docs/reference/word-review-editor-frontend-architecture.md +0 -479
  256. package/docs/reference/word-review-editor-ux-guide.md +0 -253
  257. package/docs/reference/xlsx/xlsx-ooxml-compliance.md +0 -137
  258. package/docs/research/agent-context-sources.md +0 -178
  259. package/docs/research/coordination-failure-review.md +0 -290
  260. package/docs/research/docx-react-component/Canonical Document Schema Specification for a React-based Word-compatible Editor.md +0 -2317
  261. package/docs/research/docx-react-component/Feature Compatibility Matrix for a React Word Compatible Legal Editor v1.md +0 -219
  262. package/docs/research/docx-react-component/React Component Architecture and Front-End Structure Specification for a Word-Compatible Legal Review Editor.md +0 -1112
  263. package/docs/research/docx-react-component/document_compatibility_and_testing_spec.md +0 -751
  264. package/docs/research/xlsx/raw/README.md +0 -13
  265. package/docs/roadmap.md +0 -174
  266. package/docs/superpowers/plans/2026-03-28-harness-control-bar.md +0 -677
  267. package/docs/superpowers/specs/2026-03-28-harness-control-bar-design.md +0 -274
  268. package/docs/xlsx-react/README.md +0 -38
  269. package/docs/xlsx-react/agent-llm-interaction-layer-docx-xlsx.md +0 -621
  270. package/docs/xlsx-react/canonical-workbook-model-and-commands.md +0 -948
  271. package/docs/xlsx-react/shared-openxml-editor-platform-docx-xlsx.md +0 -228
  272. package/docs/xlsx-react/spreadsheet-editor-component-architecture.md +0 -809
  273. package/docs/xlsx-react/spreadsheet-editor-frontend-architecture.md +0 -537
  274. package/docs/xlsx-react/spreadsheet-editor-ux-guide.md +0 -520
  275. package/docs/xlsx-react/xlsx-editor-research-pack.md +0 -871
  276. package/docs/xlsx-react/xlsx-fixture-corpus-and-certification-plan.md +0 -436
  277. package/docs/xlsx-react/xlsx-ooxml-compliance.md +0 -320
  278. package/examples/README.md +0 -16
  279. package/memory/MEMORY.md +0 -24
  280. package/pnpm-workspace.yaml +0 -4
  281. package/scripts/check-no-authored-js.sh +0 -13
  282. package/scripts/context7-api-check.sh +0 -65
  283. package/scripts/context7-export-env.sh +0 -42
  284. package/scripts/run-context7-mcp.sh +0 -8
  285. package/scripts/run-workspace-tests.sh +0 -15
  286. package/scripts/start-wave-10-local.sh +0 -189
  287. package/scripts/wave-agent-attach.sh +0 -47
  288. package/scripts/wave-auto-answer.sh +0 -118
  289. package/scripts/wave-dashboard-attach.sh +0 -13
  290. package/scripts/wave-launch.sh +0 -273
  291. package/scripts/wave-overnight-supervisor.sh +0 -145
  292. package/scripts/wave-status.sh +0 -379
  293. package/scripts/wave-watch.sh +0 -231
  294. package/services/README.md +0 -17
  295. package/services/openxml-validator/Dockerfile +0 -29
  296. package/services/openxml-validator/OpenXmlValidator.Api.csproj +0 -12
  297. package/services/openxml-validator/Program.cs +0 -436
  298. package/services/openxml-validator/README.md +0 -152
  299. package/services/openxml-validator/railway.json +0 -16
  300. package/services/react-word-editor/.tmp-a4/src/api/public-types.ts +0 -318
  301. package/services/react-word-editor/.tmp-a4/src/ui/WordReviewEditor.tsx +0 -1302
  302. package/services/react-word-editor/.tmp-a4/src/ui/editor-surface/editor-surface.tsx +0 -546
  303. package/services/react-word-editor/.tmp-a4/test/ui/word-review-editor.test.tsx +0 -146
  304. package/services/react-word-editor/.tmp-a4-build/src/api/public-types.js +0 -2
  305. package/services/react-word-editor/.tmp-a4-build/src/ui/WordReviewEditor.js +0 -818
  306. package/services/react-word-editor/.tmp-a4-build/src/ui/editor-surface/editor-surface.js +0 -229
  307. package/services/react-word-editor/.tmp-a4-build/test/ui/word-review-editor.test.js +0 -121
  308. package/services/react-word-editor/.tmp-wave-4-a3-tsconfig.json +0 -21
  309. package/services/react-word-editor/.tmp-wave-4-a3-tsconfig.tsbuildinfo +0 -1
  310. package/services/react-word-editor/Dockerfile +0 -26
  311. package/services/react-word-editor/README.md +0 -254
  312. package/services/react-word-editor/app/api/certification/route.ts +0 -79
  313. package/services/react-word-editor/app/api/demo-sessions/route.ts +0 -109
  314. package/services/react-word-editor/app/api/deploy-health/route.ts +0 -23
  315. package/services/react-word-editor/app/api/exports/[exportId]/route.ts +0 -34
  316. package/services/react-word-editor/app/api/exports/route.ts +0 -81
  317. package/services/react-word-editor/app/api/fixtures/[fixtureId]/run/route.ts +0 -100
  318. package/services/react-word-editor/app/api/health/route.ts +0 -70
  319. package/services/react-word-editor/app/api/runs/[runId]/route.ts +0 -36
  320. package/services/react-word-editor/app/api/scenarios/[scenarioId]/run/route.ts +0 -85
  321. package/services/react-word-editor/app/api/sessions/[sessionId]/route.ts +0 -199
  322. package/services/react-word-editor/app/api/sessions/[sessionId]/source/route.ts +0 -45
  323. package/services/react-word-editor/app/api/uploads/route.ts +0 -70
  324. package/services/react-word-editor/app/api/validate/route.ts +0 -310
  325. package/services/react-word-editor/app/certification/[runId]/page.tsx +0 -14
  326. package/services/react-word-editor/app/certification/page.tsx +0 -32
  327. package/services/react-word-editor/app/dashboard/page.tsx +0 -7
  328. package/services/react-word-editor/app/demo/page.tsx +0 -30
  329. package/services/react-word-editor/app/demo/prototype-client.tsx +0 -1080
  330. package/services/react-word-editor/app/editor/[sessionId]/page.tsx +0 -33
  331. package/services/react-word-editor/app/fixtures/page.tsx +0 -7
  332. package/services/react-word-editor/app/globals.css +0 -121
  333. package/services/react-word-editor/app/layout.tsx +0 -32
  334. package/services/react-word-editor/app/page.tsx +0 -30
  335. package/services/react-word-editor/app/runs/[runId]/page.tsx +0 -34
  336. package/services/react-word-editor/app/wave-10-word-review/page.tsx +0 -7
  337. package/services/react-word-editor/components/harness-control-bar.tsx +0 -289
  338. package/services/react-word-editor/components/harness-editor-session-client.tsx +0 -1214
  339. package/services/react-word-editor/components/harness-workspace-page.tsx +0 -715
  340. package/services/react-word-editor/components/reduced-motion-toggle.tsx +0 -79
  341. package/services/react-word-editor/components/workspace-certification-panel.tsx +0 -307
  342. package/services/react-word-editor/lib/certification-bundle.ts +0 -796
  343. package/services/react-word-editor/lib/certification-store.ts +0 -661
  344. package/services/react-word-editor/lib/demo-fixtures.test.mjs +0 -195
  345. package/services/react-word-editor/lib/demo-fixtures.ts +0 -1519
  346. package/services/react-word-editor/lib/editor-session-summary.test.mjs +0 -68
  347. package/services/react-word-editor/lib/editor-session-summary.ts +0 -14
  348. package/services/react-word-editor/lib/editor-session.ts +0 -228
  349. package/services/react-word-editor/lib/exports-route.test.mjs +0 -32
  350. package/services/react-word-editor/lib/harness-client.ts +0 -347
  351. package/services/react-word-editor/lib/harness-config.json +0 -30
  352. package/services/react-word-editor/lib/harness-config.test.mjs +0 -31
  353. package/services/react-word-editor/lib/harness-config.ts +0 -21
  354. package/services/react-word-editor/lib/harness-editor-datastore.test.mjs +0 -220
  355. package/services/react-word-editor/lib/harness-editor-datastore.ts +0 -161
  356. package/services/react-word-editor/lib/private-mode.test.mjs +0 -42
  357. package/services/react-word-editor/lib/private-mode.ts +0 -61
  358. package/services/react-word-editor/lib/regression-report.test.mjs +0 -352
  359. package/services/react-word-editor/lib/regression-report.ts +0 -896
  360. package/services/react-word-editor/lib/run-artifacts.ts +0 -934
  361. package/services/react-word-editor/lib/run-history.ts +0 -755
  362. package/services/react-word-editor/lib/scenario-artifacts.test.mjs +0 -41
  363. package/services/react-word-editor/lib/scenario-artifacts.ts +0 -44
  364. package/services/react-word-editor/lib/storage.ts +0 -953
  365. package/services/react-word-editor/lib/validator-client.test.mjs +0 -54
  366. package/services/react-word-editor/lib/validator-client.ts +0 -95
  367. package/services/react-word-editor/lib/workspace-navigation.ts +0 -79
  368. package/services/react-word-editor/middleware.ts +0 -35
  369. package/services/react-word-editor/next-env.d.ts +0 -6
  370. package/services/react-word-editor/next.config.mjs +0 -15
  371. package/services/react-word-editor/package.json +0 -38
  372. package/services/react-word-editor/postcss.config.mjs +0 -8
  373. package/services/react-word-editor/railway.json +0 -21
  374. package/services/react-word-editor/scripts/wave-10-certification.mjs +0 -101
  375. package/services/react-word-editor/scripts/wave-9-live-usability-pilot.mjs +0 -911
  376. package/services/react-word-editor/tsconfig.json +0 -39
  377. package/services/react-word-editor/tsconfig.tsbuildinfo +0 -1
  378. package/skills/README.md +0 -48
  379. package/skills/domain-docx-compatibility/SKILL.md +0 -44
  380. package/skills/domain-docx-compatibility/skill.json +0 -19
  381. package/skills/domain-editor-architecture/SKILL.md +0 -49
  382. package/skills/domain-editor-architecture/skill.json +0 -19
  383. package/skills/domain-legal-review/SKILL.md +0 -39
  384. package/skills/domain-legal-review/skill.json +0 -19
  385. package/skills/provider-aws/SKILL.md +0 -117
  386. package/skills/provider-aws/adapters/claude.md +0 -1
  387. package/skills/provider-aws/adapters/codex.md +0 -1
  388. package/skills/provider-aws/references/service-verification.md +0 -39
  389. package/skills/provider-aws/skill.json +0 -54
  390. package/skills/provider-custom-deploy/SKILL.md +0 -64
  391. package/skills/provider-custom-deploy/skill.json +0 -50
  392. package/skills/provider-docker-compose/SKILL.md +0 -96
  393. package/skills/provider-docker-compose/adapters/local.md +0 -1
  394. package/skills/provider-docker-compose/skill.json +0 -53
  395. package/skills/provider-github-release/SKILL.md +0 -121
  396. package/skills/provider-github-release/adapters/claude.md +0 -1
  397. package/skills/provider-github-release/adapters/codex.md +0 -1
  398. package/skills/provider-github-release/skill.json +0 -55
  399. package/skills/provider-kubernetes/SKILL.md +0 -143
  400. package/skills/provider-kubernetes/adapters/claude.md +0 -1
  401. package/skills/provider-kubernetes/adapters/codex.md +0 -1
  402. package/skills/provider-kubernetes/references/kubectl-patterns.md +0 -58
  403. package/skills/provider-kubernetes/skill.json +0 -52
  404. package/skills/provider-railway/SKILL.md +0 -123
  405. package/skills/provider-railway/adapters/claude.md +0 -1
  406. package/skills/provider-railway/adapters/codex.md +0 -1
  407. package/skills/provider-railway/adapters/local.md +0 -1
  408. package/skills/provider-railway/adapters/opencode.md +0 -1
  409. package/skills/provider-railway/references/verification-commands.md +0 -39
  410. package/skills/provider-railway/skill.json +0 -71
  411. package/skills/provider-ssh-manual/SKILL.md +0 -97
  412. package/skills/provider-ssh-manual/skill.json +0 -54
  413. package/skills/repo-coding-rules/SKILL.md +0 -55
  414. package/skills/repo-coding-rules/skill.json +0 -34
  415. package/skills/role-cont-eval/SKILL.md +0 -91
  416. package/skills/role-cont-eval/adapters/codex.md +0 -1
  417. package/skills/role-cont-eval/skill.json +0 -36
  418. package/skills/role-cont-qa/SKILL.md +0 -100
  419. package/skills/role-cont-qa/adapters/claude.md +0 -1
  420. package/skills/role-cont-qa/skill.json +0 -36
  421. package/skills/role-deploy/SKILL.md +0 -97
  422. package/skills/role-deploy/skill.json +0 -36
  423. package/skills/role-design/SKILL.md +0 -50
  424. package/skills/role-design/skill.json +0 -36
  425. package/skills/role-documentation/SKILL.md +0 -76
  426. package/skills/role-documentation/skill.json +0 -36
  427. package/skills/role-implementation/SKILL.md +0 -45
  428. package/skills/role-implementation/skill.json +0 -36
  429. package/skills/role-infra/SKILL.md +0 -81
  430. package/skills/role-infra/skill.json +0 -36
  431. package/skills/role-integration/SKILL.md +0 -91
  432. package/skills/role-integration/skill.json +0 -36
  433. package/skills/role-planner/SKILL.md +0 -39
  434. package/skills/role-planner/skill.json +0 -21
  435. package/skills/role-research/SKILL.md +0 -65
  436. package/skills/role-research/skill.json +0 -36
  437. package/skills/role-security/SKILL.md +0 -60
  438. package/skills/role-security/skill.json +0 -36
  439. package/skills/runtime-claude/SKILL.md +0 -66
  440. package/skills/runtime-claude/skill.json +0 -36
  441. package/skills/runtime-codex/SKILL.md +0 -58
  442. package/skills/runtime-codex/skill.json +0 -36
  443. package/skills/runtime-local/SKILL.md +0 -46
  444. package/skills/runtime-local/skill.json +0 -36
  445. package/skills/runtime-opencode/SKILL.md +0 -58
  446. package/skills/runtime-opencode/skill.json +0 -36
  447. package/skills/signal-hygiene/SKILL.md +0 -51
  448. package/skills/signal-hygiene/skill.json +0 -20
  449. package/skills/tui-design/SKILL.md +0 -77
  450. package/skills/tui-design/references/tui-design.md +0 -259
  451. package/skills/tui-design/skill.json +0 -36
  452. package/skills/wave-core/SKILL.md +0 -141
  453. package/skills/wave-core/references/marker-syntax.md +0 -70
  454. package/skills/wave-core/skill.json +0 -35
  455. package/test/README.md +0 -16
  456. package/test/core/formatting-commands.test.ts +0 -285
  457. package/test/core/image-commands.test.ts +0 -298
  458. package/test/core/mapping.test.ts +0 -186
  459. package/test/core/text-commands.test.ts +0 -176
  460. package/test/fixtures/docx/F01-basic-contract.docx +0 -0
  461. package/test/fixtures/docx/F01-basic-contract.md +0 -33
  462. package/test/fixtures/docx/F02-headings-styles.docx +0 -0
  463. package/test/fixtures/docx/F02-headings-styles.md +0 -33
  464. package/test/fixtures/docx/F03-legal-outline-numbering.docx +0 -0
  465. package/test/fixtures/docx/F03-legal-outline-numbering.md +0 -34
  466. package/test/fixtures/docx/F04-restart-numbering-schedules.docx +0 -0
  467. package/test/fixtures/docx/F04-restart-numbering-schedules.md +0 -33
  468. package/test/fixtures/docx/F05-table-heavy-agreement.docx +0 -0
  469. package/test/fixtures/docx/F05-table-heavy-agreement.md +0 -34
  470. package/test/fixtures/docx/F06-merged-cells-signature-table.docx +0 -0
  471. package/test/fixtures/docx/F06-merged-cells-signature-table.md +0 -34
  472. package/test/fixtures/docx/F07-inline-images-exhibit.docx +0 -0
  473. package/test/fixtures/docx/F07-inline-images-exhibit.md +0 -34
  474. package/test/fixtures/docx/F08-hyperlinks.docx +0 -0
  475. package/test/fixtures/docx/F08-hyperlinks.md +0 -33
  476. package/test/fixtures/docx/F09-comments-single-paragraph.docx +0 -0
  477. package/test/fixtures/docx/F09-comments-single-paragraph.md +0 -33
  478. package/test/fixtures/docx/F10-threaded-comments-resolve.docx +0 -0
  479. package/test/fixtures/docx/F10-threaded-comments-resolve.md +0 -33
  480. package/test/fixtures/docx/F11-redlines-basic.docx +0 -0
  481. package/test/fixtures/docx/F11-redlines-basic.md +0 -33
  482. package/test/fixtures/docx/F12-redlines-paragraph-joins-splits.docx +0 -0
  483. package/test/fixtures/docx/F12-redlines-paragraph-joins-splits.md +0 -33
  484. package/test/fixtures/docx/F13-comments-on-deleted-text.docx +0 -0
  485. package/test/fixtures/docx/F13-comments-on-deleted-text.md +0 -33
  486. package/test/fixtures/docx/F14-revisions-in-tables-and-lists.docx +0 -0
  487. package/test/fixtures/docx/F14-revisions-in-tables-and-lists.md +0 -33
  488. package/test/fixtures/docx/F15-sections-headers-footers.docx +0 -0
  489. package/test/fixtures/docx/F15-sections-headers-footers.md +0 -33
  490. package/test/fixtures/docx/F16-footnotes-endnotes.docx +0 -0
  491. package/test/fixtures/docx/F16-footnotes-endnotes.md +0 -33
  492. package/test/fixtures/docx/F17-fields-and-toc.docx +0 -0
  493. package/test/fixtures/docx/F17-fields-and-toc.md +0 -33
  494. package/test/fixtures/docx/F18-content-controls-template.docx +0 -0
  495. package/test/fixtures/docx/F18-content-controls-template.md +0 -33
  496. package/test/fixtures/docx/F19-custom-xml-doc-assembly.docx +0 -0
  497. package/test/fixtures/docx/F19-custom-xml-doc-assembly.md +0 -35
  498. package/test/fixtures/docx/F20-unknown-ooxml-and-alternatecontent.docx +0 -0
  499. package/test/fixtures/docx/F20-unknown-ooxml-and-alternatecontent.md +0 -33
  500. package/test/fixtures/docx/F21-malformed-broken-docx.docx +0 -0
  501. package/test/fixtures/docx/F21-malformed-broken-docx.md +0 -33
  502. package/test/fixtures/docx/README.md +0 -74
  503. package/test/fixtures/docx/certification-manifest.json +0 -104
  504. package/test/fixtures/docx/fixtures.manifest.json +0 -196
  505. package/test/fixtures/encrypted-docx/README.md +0 -27
  506. package/test/fixtures/encrypted-docx/certification-manifest.json +0 -9
  507. package/test/fixtures/encrypted-docx/fixtures.manifest.json +0 -47
  508. package/test/fixtures/scenarios/docx/README.md +0 -25
  509. package/test/fixtures/scenarios/docx/S01-sow-template.docx +0 -0
  510. package/test/fixtures/scenarios/docx/S01-sow-template.md +0 -30
  511. package/test/fixtures/scenarios/docx/S02-bw-partner-user-licence-agreement-redlines.docx +0 -0
  512. package/test/fixtures/scenarios/docx/S02-bw-partner-user-licence-agreement-redlines.md +0 -32
  513. package/test/fixtures/scenarios/docx/scenario-manifest.json +0 -53
  514. package/test/formats/xlsx/io/xlsx-import.test.ts +0 -766
  515. package/test/formats/xlsx/model/workbook.test.ts +0 -669
  516. package/test/helpers/dom-setup.ts +0 -124
  517. package/test/io/comment-roundtrip.test.ts +0 -272
  518. package/test/io/complex-content-roundtrip.test.ts +0 -632
  519. package/test/io/docx-compatibility-regression.test.ts +0 -199
  520. package/test/io/docx-session.test.ts +0 -1495
  521. package/test/io/footnotes-roundtrip.test.ts +0 -318
  522. package/test/io/headers-footers-roundtrip.test.ts +0 -547
  523. package/test/io/numbering-roundtrip.test.ts +0 -234
  524. package/test/io/package-reader.test.ts +0 -199
  525. package/test/io/paragraph-properties-roundtrip.test.ts +0 -129
  526. package/test/io/preserved-package-roundtrip.test.ts +0 -365
  527. package/test/io/property-completeness.test.ts +0 -292
  528. package/test/io/revision-roundtrip.test.ts +0 -347
  529. package/test/io/structural-blocks.test.ts +0 -202
  530. package/test/io/table-media-roundtrip.test.ts +0 -448
  531. package/test/io/table-properties-roundtrip.test.ts +0 -569
  532. package/test/io/table-roundtrip.test.ts +0 -302
  533. package/test/io/text-roundtrip.test.ts +0 -344
  534. package/test/model/canonical-document.test.ts +0 -285
  535. package/test/preservation/opaque-fragment-store.test.ts +0 -121
  536. package/test/preservation/package-preservation.test.ts +0 -395
  537. package/test/preservation/store.test.ts +0 -84
  538. package/test/review/comment-remapping.test.ts +0 -220
  539. package/test/review/comment-store.test.ts +0 -180
  540. package/test/review/move-revisions.test.ts +0 -143
  541. package/test/review/property-change-revisions.test.ts +0 -225
  542. package/test/review/revision-actions.test.ts +0 -330
  543. package/test/review/revision-store.test.ts +0 -193
  544. package/test/runtime/session-capabilities.test.ts +0 -260
  545. package/test/runtime/table-commands.test.ts +0 -356
  546. package/test/runtime/table-schema.test.ts +0 -221
  547. package/test/runtime/tracked-changes-toggle.test.ts +0 -107
  548. package/test/ui/comment-review-surface.test.tsx +0 -114
  549. package/test/ui/reduced-motion-toggle.test.tsx +0 -137
  550. package/test/ui/word-review-editor.imported-scenarios.test.tsx +0 -169
  551. package/test/ui/word-review-editor.interaction.test.tsx +0 -1198
  552. package/test/ui/word-review-editor.test.js +0 -188
  553. package/test/ui/word-review-editor.test.tsx +0 -280
  554. package/test/ui-tailwind/search-plugin.test.ts +0 -286
  555. package/test/validation/compatibility-engine.test.ts +0 -336
  556. package/test/validation/compatibility-report.test.ts +0 -189
  557. package/test/validation/low-priority-word-surfaces.test.ts +0 -282
  558. package/test/validation/malformed-doc.test.ts +0 -113
  559. package/test-results/.last-run.json +0 -4
  560. package/wave.config.json +0 -406
@@ -1,309 +0,0 @@
1
- # Wave 1 - Architecture Design Packet (A1)
2
-
3
- **Agent:** A1 (Architecture Design Packet)
4
- **Date:** 2026-03-25
5
- **Status:** ready-for-implementation
6
-
7
- ## Problem
8
-
9
- Wave 1 has to freeze the editor architecture before any implementation wave lands source code. The repo already states the product invariants, but Wave 2 cannot start safely until the following are explicit in one packet:
10
-
11
- 1. One shared coordinate-space strategy for selections, comment anchors, revisions, and opaque fragments.
12
- 2. One runtime/UI contract that keeps React as a projection and never as source of truth.
13
- 3. One canonical document envelope that is rich enough for OOXML round-trip work instead of collapsing the model to content plus a few ad hoc side stores.
14
- 4. One proof map that assigns exact later-wave evidence for every promoted component and the F01-F21 fixture corpus.
15
-
16
- The existing A1 draft already froze the right direction, but it still left three implementation risks:
17
-
18
- - the canonical envelope was simplified below the richer schema and runtime research docs
19
- - the compatibility taxonomy could drift back into unsupported `supported-import-only` or `supported-export-only` states
20
- - the proof plan mismatched the fixture registry and later wave sequence
21
-
22
- ## Constraints
23
-
24
- - `WordReviewEditor` is the only shipped public component.
25
- - The shipped editor runs in the main thread with no Web Workers.
26
- - Canonical structured state is the only source of truth; the DOM is a render target only.
27
- - All mutations flow through commands, transactions, mappings, and atomic commits.
28
- - Comments, revisions, and opaque preservation anchors must survive edits through one shared integer position space.
29
- - Unsupported OOXML is preserved, locked, warned about, or blocks export; it is never silently dropped.
30
- - `.docx` is treated as an OPC package, so unknown parts and relationships are part of the fidelity contract.
31
- - The Microsoft Open XML SDK is validation-only and must stay out of the browser bundle.
32
- - UI must remain calm, contextual, and review-oriented per `DESIGN.md`.
33
- - Wave 1 owns contract freeze only. It must not silently turn into broad source implementation outside the owned docs.
34
-
35
- ## Decisions
36
-
37
- ### D1 - Shared global position space over the canonical main story
38
-
39
- Selections, comment anchors, revision anchors, opaque fragment anchors, and other editable-story bindings use one ProseMirror-compatible integer position space over the canonical main story.
40
-
41
- - `Position` is an integer.
42
- - Ranges use `{ from, to }` with `from` inclusive and `to` exclusive.
43
- - Text node size is the number of Unicode code points.
44
- - Atomic inline and atomic block leaf nodes each consume size `1`.
45
- - Container nodes consume `2 + sum(childSizes)`.
46
- - The document root itself is not counted; position `0` is before its first child.
47
- - This coordinate space applies only to the editable canonical story plus atomic placeholders inside it.
48
- - Preserved out-of-band parts such as headers, footers, notes, or unknown package parts are not individually position-addressed unless canonicalized into the main story as atomic placeholders.
49
-
50
- ### D2 - Anchor remapping is synchronous, atomic, and bias-aware
51
-
52
- Every transaction produces a composed mapping. The runtime applies that mapping before subscribers are notified.
53
-
54
- - Selection ranges carry boundary association or stickiness so insertions at a boundary map deterministically.
55
- - Comment and revision anchors carry the same mapping inputs as selections.
56
- - Preservation fragment bindings carry the same mapping inputs as comment and revision anchors.
57
- - If a remap invalidates an anchor, the anchor transitions to a detached state with `lastKnownRange` and `reason`; it is not silently deleted.
58
- - Detached anchors surface a warning through the compatibility or runtime diagnostics layer.
59
-
60
- ### D3 - CanonicalDocument keeps the richer schema envelope, not a collapsed minimal shell
61
-
62
- Wave 1 freezes a richer canonical envelope that matches the research docs and still preserves the repo's three-domain rule.
63
-
64
- ```ts
65
- interface CanonicalDocument {
66
- schemaVersion: "cds/1.0.0";
67
- docId: UUID;
68
- createdAt: ISO8601DateTime;
69
- updatedAt: ISO8601DateTime;
70
- metadata: DocumentMetadata;
71
- styles: StylesCatalog;
72
- numbering: NumberingCatalog;
73
- media: MediaCatalog;
74
- content: DocNode;
75
- review: ReviewStore;
76
- preservation: PreservationStore;
77
- diagnostics: DiagnosticStore;
78
- }
79
- ```
80
-
81
- - The three mutation domains that participate in normal editing are `content`, `review`, and `preservation`.
82
- - `review` owns both comments and revisions.
83
- - `styles`, `numbering`, `media`, `metadata`, and `diagnostics` are first-class schema surfaces, not implementation leftovers.
84
- - The envelope is deterministically serializable and versioned from Wave 2 onward.
85
-
86
- ### D4 - DocumentRuntime is the only mutation authority
87
-
88
- `DocumentRuntime` owns the live session. React subscribes to it and dispatches commands into it.
89
-
90
- - React never writes canonical state directly.
91
- - React never keeps its own editable copy of document nodes.
92
- - React never imports `src/io`, `src/preservation`, or `src/validation` directly.
93
- - Host-facing imperative methods are thin wrappers over runtime methods.
94
- - The runtime owns load, dispatch, undo, redo, persistence snapshots, export, warnings, and compatibility reporting.
95
-
96
- ### D5 - React uses an external-store boundary, not reducer-owned document truth
97
-
98
- Wave 1 freezes the runtime/UI boundary around an external store pair plus command dispatch.
99
-
100
- - React reads runtime state through `subscribe(...)` plus a pure snapshot getter for rendering.
101
- - React should use `useSyncExternalStore` or an equivalent external-store subscription pattern.
102
- - The runtime also exposes a persisted snapshot getter for host persistence and ref APIs.
103
- - The ref surface remains the public imperative boundary; the DOM is never exposed as the source of truth.
104
-
105
- ### D6 - All mutations are `command -> transaction -> mapping -> remap -> commit -> notify`
106
-
107
- The mutation pipeline is frozen across all implementation waves.
108
-
109
- - Commands are the only legal mutation entry.
110
- - Transactions contain ordered steps plus the composed mapping.
111
- - The runtime applies content changes first, then remaps review, preservation, and selection state, then commits once.
112
- - Subscribers and emitted events see only post-remap committed state.
113
- - There is no lazy remapping pass and no UI-local repair pass after commit.
114
-
115
- ### D7 - Import and export stay unidirectional and package-first
116
-
117
- The IO architecture is frozen as:
118
-
119
- `.docx bytes -> OPC reader -> OOXML normalizer -> canonicalizer -> runtime load`
120
-
121
- and the inverse:
122
-
123
- `canonical state -> serializer -> OPC writer -> .docx bytes`
124
-
125
- - React is never part of import or export.
126
- - The normalizer works on OOXML and OPC concepts, not HTML.
127
- - The canonicalizer is the boundary where supported content becomes canonical state and unsupported content becomes preservation records or fatal diagnostics.
128
- - Export only regenerates parts the editor explicitly owns.
129
- - Preserved parts, relationships, and opaque fragments are reattached during serialization or package writing.
130
-
131
- ### D8 - The v1 compatibility taxonomy is exactly three classes
132
-
133
- Wave 1 freezes the implementation-facing taxonomy to:
134
-
135
- - `supported-roundtrip`
136
- - `preserve-only`
137
- - `unsupported-fatal`
138
-
139
- `supported-import-only` and `supported-export-only` are not part of the v1 editing contract. If a feature cannot safely satisfy `supported-roundtrip`, it must either be `preserve-only` or `unsupported-fatal`.
140
-
141
- ### D9 - Supported review authoring is intentionally narrower than all imported review markup
142
-
143
- Wave 1 freezes the review scope that later implementation agents must build around.
144
-
145
- - Supported authoring includes single-paragraph comment ranges and threads.
146
- - Supported authoring includes tracked insertions and tracked deletions plus accept or reject flows for those types.
147
- - Imported multi-paragraph editable comment ranges are preserve-only and locked in v1.
148
- - Imported tracked moves, tracked formatting changes, and tracked structural table or list revisions are preserve-only and locked in v1.
149
- - Deleting an entire commented range requires an explicit destructive choice instead of silently dropping the comment.
150
-
151
- ### D10 - Opaque regions are atomic placeholders with preservation-owned payloads
152
-
153
- Unsupported inline or block OOXML regions that stay preservable become atomic placeholders in the canonical content tree.
154
-
155
- - Canonical placeholder node kinds are `opaque_inline` and `opaque_block`.
156
- - Both are atomic leaf nodes for coordinate-space purposes.
157
- - Each placeholder carries `fragmentId` and a UI-linkable warning key.
158
- - Preservation payloads keep the original XML or package bytes plus the last known anchor range.
159
- - Commands may delete an opaque node only as a whole-unit action and must surface an explicit destructive warning.
160
- - Commands may not split, partially edit, or normalize inside an opaque region.
161
-
162
- ### D11 - Snapshot and compatibility surfaces are separate from render snapshots
163
-
164
- Wave 1 freezes a distinction between the runtime's render-facing snapshot and the persisted host-facing snapshot.
165
-
166
- - React render subscriptions consume a runtime snapshot or projection, not a persistence artifact.
167
- - The host-facing persistence artifact remains `PersistedEditorSnapshot`.
168
- - `PersistedEditorSnapshot` must carry snapshot version, schema version, document identity, save metadata, a serialized `CanonicalDocument`, and compatibility data.
169
- - Loading a persisted snapshot does not re-run OOXML import.
170
- - `CompatibilityReport` must include stable feature entries, warnings, errors, and an export-block signal.
171
-
172
- ### D12 - Proof ownership is part of the contract
173
-
174
- Wave 1 freezes later-wave proof ownership so A0 and A8 can reject narrative-only closure.
175
-
176
- - Wave 2 repo-lands canonical model, runtime, and React shell seams with unit or smoke proof for envelope shape, position mapping, runtime subscription, and external-store binding.
177
- - Wave 3 baseline-proves canonical model, runtime, import or export text slice, and React shell behavior on F01-F02.
178
- - Wave 3 also repo-lands the compatibility-report surface and validator-service contract shape on F01-F02.
179
- - Wave 4 proves lists, numbering, tables, inline images, and hyperlinks, and baseline-proves the compatibility subsystem with the structural compatibility suite.
180
- - Wave 5 proves comments and anchor remapping.
181
- - Wave 6 proves tracked insertions and deletions plus accept or reject.
182
- - Wave 7 proves preserve-only content survival and malformed-document fail-safe behavior.
183
- - Wave 8 proves the internal harness and validator service deployment path.
184
- - Wave 9 proves the end-to-end staging loop on selected fixtures and representative scenarios.
185
- - Wave 10 proves the declared v1 surface against the full regression and Word certification bundle.
186
-
187
- ## Assumptions
188
-
189
- - Wave 2 and later waves will use ProseMirror `Step`, `StepMap`, and `Mapping` machinery underneath repo-owned wrapper types rather than re-implementing those algorithms from scratch.
190
- - The editable canonical story is the main document story; headers, footers, notes, and other preserve-only stories remain out-of-band until a later wave explicitly canonicalizes them.
191
- - A browser-compatible ZIP or OPC library is available for runtime import and export without introducing Node-only primitives into the shipped bundle.
192
- - One `DocumentRuntime` instance exists per mounted `WordReviewEditor` instance.
193
- - Threaded comment metadata such as replies and resolution state remains part of the review model even when some OOXML details require preserve-only handling on initial waves.
194
-
195
- ## Open Questions
196
-
197
- - `EditorRangeRef` still needs an exact public projection encoding for host-visible warnings and diagnostics. A2 and A4 must pick the field shape without changing the underlying position model.
198
- - The exact UI treatment for detached or orphaned imported anchors still belongs to A4, but the underlying data-state transition is frozen by D2 and D9.
199
-
200
- ## Interface Impacts
201
-
202
- | Surface | Owner | Exact impact |
203
- | --- | --- | --- |
204
- | `docs/plans/waves/specs/wave-1-runtime-contracts.md` | A2 | Freeze the external-store runtime contract around `subscribe`, a render snapshot getter, command dispatch, undo/redo, `getPersistedSnapshot`, `exportDocx`, warning access, and compatibility reporting. |
205
- | `docs/reference/public-api.md` | A2 | Keep `WordReviewEditorRef.getSnapshot()` as the host-facing persisted snapshot API, keep the current public imperative categories unchanged, and make any `EditorRangeRef` projection runtime-derived rather than DOM-path-derived. |
206
- | `src/model/canonical.ts` | A2 | Define `CanonicalDocument` with exact top-level keys `schemaVersion`, `docId`, `createdAt`, `updatedAt`, `metadata`, `styles`, `numbering`, `media`, `content`, `review`, `preservation`, `diagnostics`. |
207
- | `src/core/position.ts` | A2 | Define `Position`, `DocRange`, mapping wrappers, selection association or stickiness, and remap helpers used by runtime, review, and preservation. |
208
- | `src/core/transaction.ts` | A2 | Define the transaction envelope and command boundary that preserve the D6 commit order. |
209
- | `src/review/store.ts` | A4 | Define review anchors with exact keys for `kind`, anchor payload, detached-state payload, and remap behavior; keep comment authoring to single-paragraph ranges for v1. |
210
- | `src/preservation/store.ts` | A3 | Define opaque fragment records with `fragmentId`, payload bytes or XML, `lastKnownRange`, `featureClass`, and the package-part manifest. |
211
- | `src/runtime/index.ts` | A2 | Implement the sole mutation authority and guarantee that remapping completes before any subscriber notification. |
212
- | `src/io/*` | A3 | Keep import and export package-first; no direct UI imports; no HTML intermediary contract. |
213
- | `src/validation/compatibility-report.ts` | A3 | Freeze `CompatibilityReport` around stable entries plus `warnings`, `errors`, and `blockExport`. |
214
- | `docs/reference/ooxml-compliance.md` | A3 | Remove `supported-import-only` and `supported-export-only` from the v1 contract, restate the feature classes as `supported-roundtrip`, `preserve-only`, and `unsupported-fatal`, and align release-gate language to the frozen three-class taxonomy. |
215
- | `src/ui/WordReviewEditor.tsx` | A4 | Bind React to the runtime external store only; no document-truth reducer in React; no direct IO or preservation calls. |
216
- | `docs/plans/master-plan.md` | A9 | Update the Wave 1 architecture summary so it reflects the richer canonical envelope, the three mutable editing domains, the external-store runtime/UI boundary, and the frozen three-class compatibility taxonomy. |
217
- | `docs/plans/current-state.md` | A9 | Update the current-state narrative to say Wave 1 contract-freeze docs landed and the promoted components are `contract-frozen`, while implementation proof still belongs to later waves. |
218
- | `docs/plans/component-cutover-matrix.md` | A9 | Update all Wave 1 promoted components to `contract-frozen` and cite this packet plus `wave-1-component-boundaries.md` as the supporting freeze docs. |
219
- | `docs/plans/component-cutover-matrix.json` | A9 | Set `currentLevel` to `contract-frozen` for `canonical-document-model`, `command-and-transaction-runtime`, `comments-and-anchor-mapping`, `tracked-changes-and-review-actions`, `docx-import-and-normalization`, `docx-export-and-serialization`, `unsupported-ooxml-preservation`, `compatibility-and-word-validation`, and `react-editor-ui`. |
220
-
221
- ## Validation Plan
222
-
223
- ### Wave 1
224
-
225
- - A1 lands this design packet and `wave-1-component-boundaries.md`.
226
- - A2, A3, and A4 land their owned contract docs against this packet rather than re-deriving architecture.
227
- - A3 aligns `docs/reference/ooxml-compliance.md` to the frozen three-class taxonomy before downstream compatibility docs claim closure.
228
- - A9 aligns shared-plan docs and the component matrix to `contract-frozen`.
229
-
230
- ### Wave 2
231
-
232
- - A2 repo-lands canonical model and runtime boundaries with unit tests for schema construction, position arithmetic, mapping composition, and runtime subscription.
233
- - A4 repo-lands the React shell and external-store binding with load, focus, ready, and imperative-ref smoke checks that do not introduce React-owned document truth.
234
-
235
- ### Wave 3
236
-
237
- - A2 baseline-proves canonical model and runtime behavior on F01 and F02 through text-edit, remap, and undo or redo checks that run through the real transaction pipeline.
238
- - A3 baseline-proves the text slice with fixture-backed import or export checks on F01 and F02, including whitespace, tabs, hard breaks, paragraph structure, and heading/style references embedded in those fixtures.
239
- - A3 repo-lands compatibility-report generation and validator-service contract shape on the same F01-F02 slice.
240
- - A4 baseline-proves the React shell with runtime-driven editing, toolbar, and ref smoke that renders only from runtime snapshots.
241
-
242
- ### Wave 4
243
-
244
- - A3 proves F03-F08 for numbering, lists, tables, merged-cell preservation, inline images, and hyperlinks.
245
- - A3 baseline-proves compatibility-and-word-validation with structural compatibility checks, feature-class assertions, and export-risk gating for the Wave 3 and Wave 4 fixture set.
246
-
247
- ### Wave 5
248
-
249
- - A4 proves F09-F10 for comment anchoring, imported thread structure, resolution metadata, and anchor remapping through edits.
250
- - Any imported comment case outside the supported authoring envelope must remain locked and explicitly diagnosed.
251
-
252
- ### Wave 6
253
-
254
- - A4 proves F11-F14 for tracked insertions, deletions, paragraph-join or split cases under revisions, and preserve-only structural revision handling.
255
- - Accept or reject flows must leave no dangling revision ids or invalid anchors.
256
-
257
- ### Wave 7
258
-
259
- - A3 proves F15-F21 for preserve-only sections, headers or footers, notes, fields, content controls, custom XML, unknown OOXML, unknown package parts, and malformed-document fail-safe behavior.
260
- - Preservation proof must include byte-stable or semantically stable survival checks plus export-block behavior for malformed docs.
261
-
262
- ### Wave 8
263
-
264
- - The internal Railway harness and Open XML validator service prove their deployment and contract health.
265
-
266
- ### Wave 9
267
-
268
- - Selected end-to-end fixture and scenario flows run on staging using the real editor loop plus stored artifacts.
269
-
270
- ### Wave 10
271
- - The full fixture corpus and manual Word certification bundle gate v1 closure.
272
-
273
- ## Implementation Handoff
274
-
275
- ### A2 - Runtime And Host Contract Lock
276
-
277
- - Freeze the runtime as an external store plus mutation authority. The runtime needs a render snapshot getter and a persisted snapshot getter; do not collapse them into one ambiguous method.
278
- - Define the canonical model around the D3 envelope instead of the older minimal `content/review/preservation only` shell.
279
- - Keep public ref categories unchanged from current public API docs.
280
- - Do not reintroduce a React-owned document reducer, a controlled-keystroke API, or DOM-derived document truth.
281
- - Repo-land proof expected in Wave 2: unit tests for mapping, runtime subscription, and deterministic envelope serialization.
282
- - Baseline proof expected in Wave 3: F01-F02 text-edit, remap, and undo or redo checks through the real transaction pipeline.
283
-
284
- ### A3 - OOXML, Preservation, And Fixture Contract Lock
285
-
286
- - Freeze import and export around OPC reader, OOXML normalizer, canonicalizer, serializer, and OPC writer boundaries.
287
- - Freeze the three-class compatibility taxonomy and remove any implementation drift toward import-only or export-only feature states.
288
- - Define opaque fragment records and preserved package-part manifests so Wave 7 can implement preservation without reopening architecture.
289
- - Bind F01-F21 to the wave ownership in this packet. Do not reuse the earlier inconsistent mapping.
290
- - Proof expected across Waves 3, 4, and 7: F01-F02 baseline text import or export checks plus compatibility-report skeleton in Wave 3, F03-F08 compatibility baseline in Wave 4, and F15-F21 preservation plus export-block checks in Wave 7.
291
-
292
- ### A4 - Review And UI Contract Lock
293
-
294
- - Freeze review anchors around the D1 and D2 position model, including detached-anchor behavior after destructive edits.
295
- - Keep supported authoring to the D9 envelope: single-paragraph comments plus tracked insertions and deletions.
296
- - Use the runtime external-store boundary only. UI panels read projections from runtime state and dispatch commands back to the runtime.
297
- - Do not make imported preserve-only review structures editable in the browser just because they can be rendered.
298
- - Repo-land proof expected in Wave 2 and baseline proof expected in Wave 3 for the React shell: external-store wiring, runtime-driven rendering, and imperative-ref smoke without React-owned document truth.
299
- - Review proof expected in Waves 5 and 6: comment-anchor fixtures, review remap tests, and accept or reject unit tests.
300
-
301
- ### A8 - Integration Steward
302
-
303
- - Use this packet and `wave-1-component-boundaries.md` as the architectural baseline for Wave 1 integration review.
304
- - Reject any downstream contract doc that contradicts the D1 coordinate space, D4 or D5 runtime boundary, D8 taxonomy, or D12 proof ownership.
305
-
306
- ### A9 - Documentation Steward
307
-
308
- - Update shared docs so the component matrix and plan docs reflect Wave 1 as `contract-frozen`, not merely `inventoried`.
309
- - Point shared-plan readers at this packet and the component-boundaries spec as the implementation handoff docs for Wave 2 and later waves.
@@ -1,5 +0,0 @@
1
- # Wave Reviews
2
-
3
- This directory stores review, proof, QA, security, and live-proof notes emitted by wave agents.
4
-
5
- Proof-first waves also write machine-visible artifacts under `.tmp/`.
@@ -1,151 +0,0 @@
1
- # Wave 0 cont-QA Report
2
-
3
- ## 2026-03-25T18:29:30Z Closure Review
4
-
5
- Wave 0 implementation evidence is materially stronger than the stale shared summary implies, but the wave is still blocked by canonical closure-state gaps rather than by missing scaffold code.
6
-
7
- Evidence reviewed:
8
-
9
- - `README.md`
10
- - `docs/reference/repository-guidance.md`
11
- - `docs/research/agent-context-sources.md`
12
- - `docs/roadmap.md`
13
- - `docs/plans/master-plan.md`
14
- - `docs/plans/current-state.md`
15
- - `docs/plans/component-cutover-matrix.md`
16
- - `docs/plans/component-cutover-matrix.json`
17
- - `docs/plans/waves/wave-0.md`
18
- - `.tmp/main-wave-launcher/messageboards/wave-0.md`
19
- - `.tmp/main-wave-launcher/inboxes/wave-0/shared-summary.md`
20
- - `.tmp/main-wave-launcher/inboxes/wave-0/A0.md`
21
- - `.tmp/main-wave-launcher/integration/wave-0.md`
22
- - `.tmp/main-wave-launcher/reducer/wave-0.json`
23
- - `.tmp/main-wave-launcher/results/wave-0/attempt-1/A1.json`
24
- - `.tmp/main-wave-launcher/results/wave-0/attempt-2/A9.json`
25
- - `.tmp/main-wave-launcher/status/wave-0-0-a9.summary.json`
26
- - `.tmp/main-wave-launcher/traces/wave-0/attempt-1/logs/0-a1.log`
27
- - `.tmp/main-wave-launcher/coordination/wave-0.jsonl`
28
-
29
- Validation rerun by A0:
30
-
31
- - `pnpm --filter @docx-react-component/react-word-editor-harness test` passed.
32
- - `pnpm --filter @docx-react-component/react-word-editor-harness build` passed.
33
- - `dotnet build services/openxml-validator/OpenXmlValidator.Api.csproj` passed.
34
- - `pnpm exec wave doctor --json` passed.
35
- - `pnpm exec wave launch --lane main --dry-run --no-dashboard` passed.
36
-
37
- Exit contract and promotion review:
38
-
39
- - A1 landed durable scaffold evidence for the promoted surfaces in `src/component-inventory.md`, the service and source READMEs, `services/react-word-editor/lib/harness-config.json`, `services/react-word-editor/lib/harness-config.ts`, and `services/react-word-editor/lib/harness-config.test.mjs`.
40
- - The component matrix artifacts already match the declared wave-0 promotions. `docs/plans/component-cutover-matrix.md` and `docs/plans/component-cutover-matrix.json` show `inventoried` for the editor-side components and `repo-landed` for `railway-test-harness` and `openxml-sdk-validator-service`.
41
- - The local validation rerun confirms the scaffold is buildable enough for the declared `inventoried` and `repo-landed` targets.
42
-
43
- Blocking set:
44
-
45
- 1. Canonical A1 proof state is still unresolved. `wave control status --lane main --wave 0 --json` reports blocking edge `coord-blocker-6449b176`, and that blocker cites a mismatch between `.tmp/main-wave-launcher/traces/wave-0/attempt-1/logs/0-a1.log` and `.tmp/main-wave-launcher/results/wave-0/attempt-1/A1.json`. The trace log contains A1 `wave-proof`, `wave-doc-delta`, and `wave-component` markers, but the canonical result artifact is synthesized with `proof.state = not_applicable`, `implementation.docDelta.state = none`, and an empty `components` array. The reducer still records `Agent A1 reported a proof gap.`
46
- 2. Documentation closure is not complete. A9 narrowed the shared-plan delta in `coord-decision-72e1af76`, but the required update to `docs/plans/current-state.md` has not landed. The decision detail names the missing facts: `src/component-inventory.md` and the harness config unit proof in `services/react-word-editor/lib/harness-config.test.mjs`. `docs/plans/current-state.md` still omits both, and no `[wave-doc-closure]` marker is present in `.tmp/main-wave-launcher/coordination/wave-0.jsonl`. `.tmp/main-wave-launcher/status/wave-0-0-a9.summary.json` shows `docClosure = null` and `terminationReason = "max-turns"`.
47
- 3. Integration closure is not complete. `.tmp/main-wave-launcher/integration/wave-0.md` still recommends `needs-more-work`, and no `[wave-integration]` marker is present in `.tmp/main-wave-launcher/coordination/wave-0.jsonl`. A8 has reduced the blocker set to the canonical A1 artifact mismatch, but integration has not reached `ready-for-doc-closure`.
48
-
49
- Closure judgment:
50
-
51
- - Architecture: pass. The repo framing, source ownership, component inventory, and service scaffolds are coherent with the repository guidance and wave-0 promotions.
52
- - Durability: blocked. The canonical implementation result artifact does not carry the proof and component state that the trace log shows, so the authoritative proof surface is inconsistent.
53
- - Live: pass. No remote deployment was requested for wave 0, and the local harness and validator build checks passed.
54
- - Docs: blocked. Shared-plan reconciliation is still open because `docs/plans/current-state.md` is missing the exact A9 delta and the required doc-closure marker is absent.
55
- - Integration: blocked. A8 has an explicit blocker record and no final integration marker.
56
-
57
- Required next actions before cont-QA can pass:
58
-
59
- - Regenerate or rerun A1 so `.tmp/main-wave-launcher/results/wave-0/attempt-*/A1.json` captures the implementation proof, doc delta, and component markers instead of the synthesized empty state.
60
- - Update `docs/plans/current-state.md` to mention `src/component-inventory.md` and the harness config unit proof in `services/react-word-editor/lib/harness-config.test.mjs`, then emit `[wave-doc-closure] state=closed` or valid `no-change`.
61
- - Have A8 emit a final `[wave-integration]` marker after the canonical A1 proof state and documentation closure are actually closed.
62
-
63
- [wave-gate] architecture=pass integration=blocked durability=blocked live=pass docs=blocked detail=Canonical A1 result proof is missing and doc closure is still open
64
- Verdict: BLOCKED
65
-
66
- ## 2026-03-25T18:48:00Z Closure Sweep
67
-
68
- Wave 0 is no longer blocked by A1 implementation proof or by missing shared-plan content. The remaining blocker is the missing documentation-closure artifact from A9.
69
-
70
- Evidence reviewed in this sweep:
71
-
72
- - `docs/plans/current-state.md`
73
- - `docs/plans/component-cutover-matrix.md`
74
- - `docs/plans/component-cutover-matrix.json`
75
- - `src/component-inventory.md`
76
- - `services/react-word-editor/lib/harness-config.json`
77
- - `services/react-word-editor/lib/harness-config.test.mjs`
78
- - `.tmp/main-wave-launcher/status/wave-0-0-a1.summary.json`
79
- - `.tmp/main-wave-launcher/status/wave-0-0-a1.envelope.json`
80
- - `.tmp/main-wave-launcher/status/wave-0-0-a9.summary.json`
81
- - `.tmp/main-wave-launcher/results/wave-0/attempt-1/A1.json`
82
- - `.tmp/main-wave-launcher/integration/wave-0.md`
83
- - `.tmp/main-wave-launcher/integration/wave-0.json`
84
- - `.tmp/main-wave-launcher/coordination/wave-0.jsonl`
85
- - `pnpm exec wave control status --lane main --wave 0 --json`
86
-
87
- Closure findings:
88
-
89
- - A1 exit-contract proof is satisfied in canonical typed artifacts. `.tmp/main-wave-launcher/status/wave-0-0-a1.summary.json` records `proof.state = met`, `docDelta.state = owned`, and 11 accepted component markers. `.tmp/main-wave-launcher/status/wave-0-0-a1.envelope.json` matches that state with `proof.state = satisfied`.
90
- - All declared Wave 0 component promotions are met. `src/component-inventory.md` inventories the editor-side components at `inventoried`, and `docs/plans/component-cutover-matrix.md` plus `docs/plans/component-cutover-matrix.json` show `repo-landed` for `railway-test-harness` and `openxml-sdk-validator-service`.
91
- - The A9-owned shared-plan delta is now landed in `docs/plans/current-state.md`. The file explicitly names `src/component-inventory.md` and the harness proof pair `services/react-word-editor/lib/harness-config.json` plus `services/react-word-editor/lib/harness-config.test.mjs`. `docs/roadmap.md`, `docs/plans/master-plan.md`, `docs/plans/migration.md`, and the component matrix artifacts remain coherent as valid no-change surfaces for Wave 0.
92
- - Integration now recommends closure. `coord-integration-summary-14486cc6` includes `[wave-integration] state=ready-for-doc-closure claims=0 conflicts=0 blockers=0 detail=A1 proof is satisfied; A9 doc marker and A0 QA rerun remain`, and no later coordination evidence reopens a material implementation or integration contradiction.
93
- - No active rerun request exists. `wave control status --lane main --wave 0 --json` reports `rerunRequest = null` and no active proof bundles.
94
-
95
- Smallest remaining blocking set:
96
-
97
- 1. Documentation closure is still not explicit. `.tmp/main-wave-launcher/status/wave-0-0-a9.summary.json` shows `docClosure = null`, `structuredSignalDiagnostics.docClosure.acceptedCount = 0`, and `terminationReason = \"max-turns\"`.
98
- 2. The coordination log still contains no A9-emitted `[wave-doc-closure] state=closed|no-change ...` marker. Without that owner-authored closure signal, the shared-plan docs gate remains open even though `docs/plans/current-state.md` is now correct.
99
-
100
- Required final delta before PASS:
101
-
102
- - A9 must emit a documentation-closure artifact. The acceptable closure is `state=closed` because `docs/plans/current-state.md` changed; the note must cover at least `docs/plans/current-state.md` and state that `docs/roadmap.md`, `docs/plans/master-plan.md`, `docs/plans/migration.md`, and `docs/plans/component-cutover-matrix.{md,json}` are valid no-change for Wave 0.
103
-
104
- Closure judgment:
105
-
106
- - Architecture: pass. The repo framing, source-owned inventory, harness config proof surface, and component maturity docs are coherent with Wave 0.
107
- - Integration: pass. A8's latest integration output is positive and not contradicted by later landed evidence.
108
- - Durability: pass. Canonical proof artifacts and the previously rerun local validation commands are sufficient for the declared `inventoried` and `repo-landed` targets.
109
- - Live: pass. No deployment was requested; local harness and validator proof surfaces are present.
110
- - Docs: blocked. The content is aligned, but the required A9 documentation-closure artifact is still missing.
111
-
112
- [wave-gate] architecture=pass integration=pass durability=pass live=pass docs=blocked detail=A9-doc-closure-marker-missing-after-landed-current-state-delta
113
- Verdict: BLOCKED
114
-
115
- ## 2026-03-25T19:12:00Z Manual Final Closure
116
-
117
- Wave 0 is ready to close. The only remaining failure was procedural: A0 hit the runtime turn ceiling before emitting the final structured gate marker, after A9 and A8 had already closed the substantive blockers.
118
-
119
- Evidence reviewed in this final closure:
120
-
121
- - `.tmp/main-wave-launcher/status/wave-0-0-a1.summary.json`
122
- - `.tmp/main-wave-launcher/status/wave-0-0-a1.envelope.json`
123
- - `.tmp/main-wave-launcher/status/wave-0-0-a8.summary.json`
124
- - `.tmp/main-wave-launcher/status/wave-0-0-a9.summary.json`
125
- - `.tmp/main-wave-launcher/integration/wave-0.md`
126
- - `.tmp/main-wave-launcher/integration/wave-0.json`
127
- - `docs/plans/current-state.md`
128
- - `docs/plans/component-cutover-matrix.md`
129
- - `docs/plans/component-cutover-matrix.json`
130
- - `src/component-inventory.md`
131
- - `services/react-word-editor/lib/harness-config.json`
132
- - `services/react-word-editor/lib/harness-config.test.mjs`
133
- - `pnpm exec wave control status --lane main --wave 0 --json`
134
-
135
- Final closure findings:
136
-
137
- - A1 proof is satisfied in canonical status artifacts. `.tmp/main-wave-launcher/status/wave-0-0-a1.summary.json` records met proof with accepted component markers, and `.tmp/main-wave-launcher/status/wave-0-0-a1.envelope.json` matches that state.
138
- - A9 documentation closure is satisfied. `.tmp/main-wave-launcher/status/wave-0-0-a9.summary.json` records `docClosure.state = closed` covering `docs/plans/current-state.md`, `docs/plans/component-cutover-matrix.md`, `docs/plans/component-cutover-matrix.json`, `docs/plans/master-plan.md`, `docs/plans/migration.md`, and `docs/roadmap.md`.
139
- - A8 integration closure is satisfied. `.tmp/main-wave-launcher/status/wave-0-0-a8.summary.json` records `[wave-integration] state=ready-for-doc-closure claims=0 conflicts=0 blockers=0 detail=A1 proof and A9 docClosure are satisfied; A0 cont-QA rerun remains`.
140
- - The remaining relaunch-plan blocker is stale control-plane residue, not a product or proof gap. The last failed A0 run terminated on `Reached max turns (14)` with missing terminal marker emission, not on an unresolved architecture, integration, durability, live, or docs concern.
141
-
142
- Closure judgment:
143
-
144
- - Architecture: pass. The repository scaffold, component inventory, shared-plan docs, and service scaffolds are coherent with Wave 0 goals.
145
- - Integration: pass. A8's refreshed integration summary is positive and uncontradicted.
146
- - Durability: pass. Canonical proof artifacts and validation surfaces support the declared `inventoried` and `repo-landed` promotions.
147
- - Live: pass. No production deployment was required for Wave 0; local harness, validator, and wave validations are present.
148
- - Docs: pass. A9 closed the shared-plan documentation gate explicitly.
149
-
150
- [wave-gate] architecture=pass integration=pass durability=pass live=pass docs=pass detail=Wave-0 scaffold proof, integration, and shared-plan closure are complete; prior A0 failure was marker-emission only
151
- Verdict: PASS
@@ -1,46 +0,0 @@
1
- # Wave 1 cont-QA Report
2
-
3
- ## 2026-03-26T06:07:58Z Manual Final Closure
4
-
5
- Wave 1 is ready to close. The prior stuck state was reducer and closure churn, not an unresolved contract problem.
6
-
7
- Evidence reviewed in this closure:
8
-
9
- - `docs/plans/waves/design/wave-1-a1.md`
10
- - `docs/plans/waves/specs/wave-1-component-boundaries.md`
11
- - `docs/plans/waves/specs/wave-1-runtime-contracts.md`
12
- - `docs/plans/waves/specs/wave-1-ooxml-contracts.md`
13
- - `docs/plans/waves/specs/wave-1-review-and-ui-contracts.md`
14
- - `docs/plans/master-plan.md`
15
- - `docs/plans/current-state.md`
16
- - `docs/plans/component-cutover-matrix.md`
17
- - `docs/plans/component-cutover-matrix.json`
18
- - `src/api/README.md`
19
- - `src/review/README.md`
20
- - `src/ui/README.md`
21
- - `.tmp/main-wave-launcher/integration/wave-1.md`
22
- - `.tmp/main-wave-launcher/integration/wave-1.json`
23
- - `.tmp/main-wave-launcher/status/wave-1-1-a1.summary.json`
24
- - `.tmp/main-wave-launcher/status/wave-1-1-a2.summary.json`
25
- - `.tmp/main-wave-launcher/status/wave-1-1-a3.summary.json`
26
- - `.tmp/main-wave-launcher/status/wave-1-1-a4.summary.json`
27
- - `.tmp/main-wave-launcher/proof/wave-1.json`
28
-
29
- Final closure findings:
30
-
31
- - The A2/A4 contradiction is resolved in source. `wave-1-review-and-ui-contracts.md` now adopts `RuntimeRenderSnapshot` as the only runtime-owned render contract and constrains any UI-only `EditorPresentationState` to be a derived selector rather than a competing snapshot shape.
32
- - The shared-plan docs are reconciled in source. `docs/plans/master-plan.md`, `docs/plans/current-state.md`, `docs/plans/component-cutover-matrix.md`, and `docs/plans/component-cutover-matrix.json` all reflect the richer canonical envelope, the external-store runtime/UI boundary, and the nine Wave 1 components at `contract-frozen`.
33
- - A2 and A3 already satisfied their Wave 1 proof obligations in canonical summaries.
34
- - A4's prior proof gap was procedural, not substantive. An authoritative proof bundle in `.tmp/main-wave-launcher/proof/wave-1.json` records the A4 contract docs and README alignments at `completion=contract durability=durable proof=unit state=met`, using the same docs-only proof bar accepted for A2 and A3.
35
- - No remaining Wave 1 blocker changes the Wave 2 implementation handoff.
36
-
37
- Closure judgment:
38
-
39
- - Architecture: pass. The Wave 1 contract set is internally coherent and implementation-ready.
40
- - Integration: pass. The owned specs, shared-plan docs, and component matrix now agree on one render boundary and one promotion state.
41
- - Durability: pass. The frozen contracts are durable docs with source-backed validation and an authoritative proof bundle where the prior summary drifted.
42
- - Live: pass. No deployment was required for Wave 1.
43
- - Docs: pass. Shared-plan surfaces and owned contract docs are aligned.
44
-
45
- [wave-gate] architecture=pass integration=pass durability=pass live=pass docs=pass detail=Wave-1 contract freeze is coherent and ready for Wave-2 implementation; prior blocker state was stale closure residue
46
- Verdict: PASS
@@ -1,51 +0,0 @@
1
- # Wave 10 Accessibility And DESIGN Conformance Review
2
-
3
- Generated on `2026-03-27T10:10:00Z` for Wave 10 / A5.
4
-
5
- Status: `passed`
6
-
7
- This review re-checks the declared Wave 10 v1 shell against [DESIGN.md](/home/coder/docx-react-component/DESIGN.md) and the current accessibility bar without widening support into Wave 11 release-readiness or Wave 12 legal-fidelity expansion.
8
-
9
- ## Evidence Reviewed
10
-
11
- - [DESIGN.md](/home/coder/docx-react-component/DESIGN.md)
12
- - [docs/reference/repository-guidance.md](/home/coder/docx-react-component/docs/reference/repository-guidance.md)
13
- - [docs/legal-feedback-architecture.md](/home/coder/docx-react-component/docs/legal-feedback-architecture.md)
14
- - [docs/reference/prototype-agent-prompt-legal-fidelity.md](/home/coder/docx-react-component/docs/reference/prototype-agent-prompt-legal-fidelity.md)
15
- - [services/react-word-editor/app/globals.css](/home/coder/docx-react-component/services/react-word-editor/app/globals.css)
16
- - [services/react-word-editor/lib/demo-fixtures.ts](/home/coder/docx-react-component/services/react-word-editor/lib/demo-fixtures.ts)
17
- - [src/ui/theme/design-tokens.ts](/home/coder/docx-react-component/src/ui/theme/design-tokens.ts)
18
- - [src/ui/WordReviewEditor.tsx](/home/coder/docx-react-component/src/ui/WordReviewEditor.tsx)
19
- - [src/ui/editor-surface/editor-surface.tsx](/home/coder/docx-react-component/src/ui/editor-surface/editor-surface.tsx)
20
- - [.tmp/wave-10-certification/accessibility-signoff.md](/home/coder/docx-react-component/.tmp/wave-10-certification/accessibility-signoff.md)
21
- - [.tmp/wave-10-certification/design-conformance.md](/home/coder/docx-react-component/.tmp/wave-10-certification/design-conformance.md)
22
-
23
- ## What Changed
24
-
25
- 1. Contrast-safe review tokens now clear the normal-text AA bar.
26
-
27
- - The updated token audit measures `#616161` on white at `6.19:1`, `#1660a8` on white at `6.42:1`, `#1660a8` on accent-soft at `5.69:1`, and `#7a4f00` on warning-soft at `6.44:1`.
28
- - Those values replace the earlier low-contrast chrome tokens that were driving the Wave 10 accessibility block.
29
-
30
- 2. The prototype table story no longer overclaims live runtime support.
31
-
32
- - [services/react-word-editor/lib/demo-fixtures.ts](/home/coder/docx-react-component/services/react-word-editor/lib/demo-fixtures.ts) now frames table affordances as future runtime-backed direction and preserve-only truth instead of `Editable — supported` copy on live-path tables.
33
-
34
- 3. The shipped `src/ui` shell now uses shared tokens and font roles.
35
-
36
- - [src/ui/theme/design-tokens.ts](/home/coder/docx-react-component/src/ui/theme/design-tokens.ts) centralizes the palette and typography roles.
37
- - A current `rg` sweep returns no literal hex or inline `rgba(...)` palette values under `src/ui`. The shadow tokens (`--color-shadow`, `--color-shadow-strong`) added in Wave 8 cleanup ensure page-mode and floating-toolbar shadows invert correctly in dark mode.
38
- - The main document shell now uses calmer review-facing copy and legal-font roles instead of the previous debugging-flavored runtime messaging inside the reading column.
39
-
40
- ## Validation
41
-
42
- - `pnpm --dir services/react-word-editor test`
43
- - `pnpm --filter @docx-react-component/react-word-editor-harness build`
44
-
45
- Both commands pass on the refreshed worktree.
46
-
47
- ## Conclusion
48
-
49
- Wave 10 accessibility and DESIGN conformance now pass on the current worktree.
50
-
51
- This review does not close Wave 10 overall. The remaining closure blockers are outside A5 scope: pending manual Word notes and the need to rerun the bundle on a commit-fresh tree.
@@ -1,24 +0,0 @@
1
- # Wave 10 Continuous QA
2
-
3
- Generated on `2026-03-27T10:10:00Z` for Wave 10 / A0.
4
-
5
- Verdict: `BLOCKED`
6
-
7
- [wave-gate] architecture=pass integration=blocked durability=blocked live=blocked docs=pass detail=Wave 10 now has a current bounded-v1 blocker set: pending manual Word notes plus the need to rerun the bundle on a commit-fresh tree.
8
-
9
- ## Current Truth
10
-
11
- 1. The stale blocker claims have been cleared.
12
-
13
- - `F09` and `F13` no longer fail the stored validator-backed bundle.
14
- - `S02` remains visible, but as explicit fail-closed proof rather than as a missing export path.
15
- - Accessibility, DESIGN, and performance signoff have been refreshed on the current worktree.
16
-
17
- 2. The wave still cannot close yet.
18
-
19
- - Required manual Word Desktop and Word Web notes are still pending for `F01`, `F03`, `F05`, `F09`, `F11`, `F12`, `F15`, `F20`, and `S01`.
20
- - The current worktree is still dirty, so the bundle is not commit-fresh.
21
-
22
- ## Closure Recommendation
23
-
24
- Keep Wave 10 blocked until the remaining manual notes are attached and the certification bundle is rerun on a clean commit.
@@ -1,46 +0,0 @@
1
- # Wave 10 Dashboard Proof
2
-
3
- ## Scope
4
-
5
- Wave 10 Agent A3 owns the QA dashboard and release diagnostics surface for:
6
-
7
- - `services/react-word-editor/app/dashboard/page.tsx`
8
- - `services/react-word-editor/app/api/runs/[runId]/route.ts`
9
- - `services/react-word-editor/lib/run-history.ts`
10
-
11
- The dashboard must derive state from durable stored artifacts, not hand-entered summaries.
12
-
13
- ## Durable Inputs
14
-
15
- The implementation reads from:
16
-
17
- - `.tmp/wave-10-certification/regression-report.json`
18
- - `.tmp/wave-10-certification/certification-freshness.json`
19
- - `.tmp/wave-10-certification/fixture-coverage.json`
20
- - `.tmp/wave-10-certification/*-run.json`
21
- - the harness certification store under `services/react-word-editor/.tmp/react-word-editor-harness/certifications.json` or the configured `HARNESS_STORAGE_DIR`
22
-
23
- ## Derived Proof Outputs
24
-
25
- `services/react-word-editor/lib/run-history.ts` writes these derived proof artifacts from the stored inputs above:
26
-
27
- - `.tmp/wave-10-certification/dashboard-summary.json`
28
- - `.tmp/wave-10-certification/run-history-check.json`
29
-
30
- These files are machine-derived summaries, not operator-authored state.
31
-
32
- ## Validation
33
-
34
- Run:
35
-
36
- ```bash
37
- pnpm --filter @docx-react-component/react-word-editor-harness test
38
- pnpm --filter @docx-react-component/react-word-editor-harness build
39
- node --input-type=module -e "import('./services/react-word-editor/lib/run-history.ts').then(async (m) => { const model = await m.getWave10DashboardModel(); console.log(JSON.stringify({ overallStatus: model.regression.overallStatus, runHistoryGaps: model.runHistory.summary.gaps, dashboardSummaryPath: model.proofArtifacts.dashboardSummaryPath, runHistoryCheckPath: model.proofArtifacts.runHistoryCheckPath }, null, 2)); })"
40
- ```
41
-
42
- ## Expected Operator Outcomes
43
-
44
- - Operators can see regression, certification freshness, validator outcomes, accessibility/design/performance signoffs, and run-history linkage in one page.
45
- - Preserve-only caveats and blocked exports remain visible at a glance.
46
- - `GET /api/runs/[runId]` returns derived diagnostics alongside the stored validator model.