@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.
- package/README.md +44 -104
- package/package.json +66 -15
- package/src/api/public-types.ts +1 -1
- package/src/compare/diff-engine.ts +530 -0
- package/src/compare/export-redlines.ts +162 -0
- package/src/compare/snapshot.ts +37 -0
- package/src/core/commands/index.ts +1 -1
- package/src/core/state/editor-state.ts +2 -2
- package/src/index.ts +45 -0
- package/src/legal/bookmarks.ts +196 -0
- package/src/legal/cross-references.ts +356 -0
- package/src/legal/defined-terms.ts +203 -0
- package/src/runtime/document-runtime.ts +3 -5
- package/src/runtime/table-commands.ts +4 -1
- package/src/runtime/table-schema.ts +17 -2
- package/src/runtime/virtualized-rendering.ts +258 -0
- package/src/ui/WordReviewEditor.tsx +256 -35
- package/src/ui-tailwind/editor-surface/tw-editor-surface.tsx +2 -2
- package/src/ui-tailwind/editor-surface/tw-table-node-view.tsx +16 -2
- package/.codex/config.toml +0 -5
- package/.corepack/v1/pnpm/10.30.3/.corepack +0 -1
- package/.corepack/v1/pnpm/10.30.3/LICENSE +0 -22
- package/.corepack/v1/pnpm/10.30.3/README.md +0 -240
- package/.corepack/v1/pnpm/10.30.3/dist/node-gyp-bin/node-gyp +0 -6
- package/.corepack/v1/pnpm/10.30.3/dist/node-gyp-bin/node-gyp.cmd +0 -5
- package/.corepack/v1/pnpm/10.30.3/dist/pnpm.cjs +0 -195400
- package/.corepack/v1/pnpm/10.30.3/dist/pnpmrc +0 -2
- package/.corepack/v1/pnpm/10.30.3/dist/reflink.darwin-arm64-2HJ4WGO6.node +0 -0
- package/.corepack/v1/pnpm/10.30.3/dist/reflink.darwin-x64-3G3H6IW4.node +0 -0
- package/.corepack/v1/pnpm/10.30.3/dist/reflink.win32-arm64-msvc-Q6BARPPB.node +0 -0
- package/.corepack/v1/pnpm/10.30.3/dist/reflink.win32-x64-msvc-J2TZHRQI.node +0 -0
- package/.corepack/v1/pnpm/10.30.3/dist/templates/completion.bash +0 -31
- package/.corepack/v1/pnpm/10.30.3/dist/templates/completion.fish +0 -22
- package/.corepack/v1/pnpm/10.30.3/dist/templates/completion.ps1 +0 -193
- package/.corepack/v1/pnpm/10.30.3/dist/templates/completion.zsh +0 -27
- package/.corepack/v1/pnpm/10.30.3/dist/vendor/fastlist-0.3.0-x64.exe +0 -0
- package/.corepack/v1/pnpm/10.30.3/dist/vendor/fastlist-0.3.0-x86.exe +0 -0
- package/.corepack/v1/pnpm/10.30.3/dist/worker.js +0 -10119
- package/.corepack/v1/pnpm/10.30.3/package.json +0 -192
- package/.cursor/mcp.json +0 -7
- package/.github/workflows/ci.yml +0 -35
- package/.mcp.json +0 -7
- package/.openclaw/workspace-state.json +0 -4
- package/.pnpmrc.json +0 -1
- package/.wave-launch.sh +0 -7
- package/.workspace-marker +0 -1
- package/AGENTS.md +0 -78
- package/CHANGELOG.md +0 -177
- package/DESIGN.md +0 -929
- package/HEARTBEAT.md +0 -7
- package/IDENTITY.md +0 -23
- package/SOUL.md +0 -36
- package/TOOLS.md +0 -40
- package/USER.md +0 -17
- package/docs/README.md +0 -107
- package/docs/agents/wave-cont-eval-role.md +0 -36
- package/docs/agents/wave-cont-qa-role.md +0 -52
- package/docs/agents/wave-deploy-verifier-role.md +0 -34
- package/docs/agents/wave-design-role.md +0 -47
- package/docs/agents/wave-documentation-role.md +0 -34
- package/docs/agents/wave-infra-role.md +0 -34
- package/docs/agents/wave-integration-role.md +0 -37
- package/docs/agents/wave-launcher-role.md +0 -41
- package/docs/agents/wave-orchestrator-role.md +0 -52
- package/docs/agents/wave-planner-role.md +0 -39
- package/docs/agents/wave-security-role.md +0 -40
- package/docs/architecture/docx/README.md +0 -10
- package/docs/architecture/future/README.md +0 -8
- package/docs/architecture/ooxml-upgrade-analysis.md +0 -134
- package/docs/architecture/platform/shared-openxml-editor-platform.md +0 -153
- package/docs/architecture/xlsx/canonical-workbook-model-and-commands.md +0 -187
- package/docs/architecture/xlsx/spreadsheet-editor-frontend-architecture.md +0 -150
- package/docs/comment-redline-overview.md +0 -350
- package/docs/concepts/context7-vs-skills.md +0 -118
- package/docs/concepts/operating-modes.md +0 -91
- package/docs/concepts/runtime-agnostic-orchestration.md +0 -111
- package/docs/concepts/what-is-a-wave.md +0 -217
- package/docs/context7/bundles.json +0 -222
- package/docs/context7/planner-agent/README.md +0 -28
- package/docs/context7/planner-agent/manifest.json +0 -83
- package/docs/context7/planner-agent/papers/cooperbench-why-coding-agents-cannot-be-your-teammates-yet.md +0 -3283
- package/docs/context7/planner-agent/papers/dova-deliberation-first-multi-agent-orchestration-for-autonomous-research-automation.md +0 -1699
- package/docs/context7/planner-agent/papers/dpbench-large-language-models-struggle-with-simultaneous-coordination.md +0 -2251
- package/docs/context7/planner-agent/papers/incremental-planning-to-control-a-blackboard-based-problem-solver.md +0 -1729
- package/docs/context7/planner-agent/papers/silo-bench-a-scalable-environment-for-evaluating-distributed-coordination-in-multi-agent-llm-systems.md +0 -3747
- package/docs/context7/planner-agent/papers/todoevolve-learning-to-architect-agent-planning-systems.md +0 -1675
- package/docs/context7/planner-agent/papers/verified-multi-agent-orchestration-a-plan-execute-verify-replan-framework-for-complex-query-resolution.md +0 -1173
- package/docs/context7/planner-agent/papers/why-do-multi-agent-llm-systems-fail.md +0 -5211
- package/docs/context7/planner-agent/topics/planning-and-orchestration.md +0 -24
- package/docs/evals/arm-templates/README.md +0 -13
- package/docs/evals/arm-templates/full-wave.json +0 -15
- package/docs/evals/arm-templates/single-agent.json +0 -15
- package/docs/evals/benchmark-catalog.json +0 -670
- package/docs/evals/cases/README.md +0 -47
- package/docs/evals/cases/wave-blackboard-inbox-targeting.json +0 -73
- package/docs/evals/cases/wave-contradiction-conflict.json +0 -104
- package/docs/evals/cases/wave-expert-routing-preservation.json +0 -69
- package/docs/evals/cases/wave-hidden-profile-private-evidence.json +0 -81
- package/docs/evals/cases/wave-premature-closure-guard.json +0 -71
- package/docs/evals/cases/wave-silo-cross-agent-state.json +0 -77
- package/docs/evals/cases/wave-simultaneous-lockstep.json +0 -92
- package/docs/evals/external-benchmarks.json +0 -85
- package/docs/evals/external-command-config.sample.json +0 -9
- package/docs/evals/external-command-config.swe-bench-pro.json +0 -8
- package/docs/evals/pilots/README.md +0 -47
- package/docs/evals/pilots/swe-bench-pro-public-full-wave-review-10.json +0 -64
- package/docs/evals/pilots/swe-bench-pro-public-pilot.json +0 -111
- package/docs/evals/wave-benchmark-program.md +0 -302
- package/docs/guides/planner.md +0 -220
- package/docs/guides/recommendations-0.8.9.md +0 -133
- package/docs/guides/signal-wrappers.md +0 -165
- package/docs/guides/terminal-surfaces.md +0 -96
- package/docs/image copy.png +0 -0
- package/docs/image.png +0 -0
- package/docs/images/image.png +0 -0
- package/docs/legal-feedback-architecture.md +0 -498
- package/docs/plans/component-cutover-matrix.json +0 -1072
- package/docs/plans/component-cutover-matrix.md +0 -307
- package/docs/plans/context7-wave-orchestrator.md +0 -155
- package/docs/plans/current-state.md +0 -198
- package/docs/plans/docx/README.md +0 -9
- package/docs/plans/examples/wave-benchmark-improvement.md +0 -108
- package/docs/plans/examples/wave-example-live-proof.md +0 -435
- package/docs/plans/master-plan.md +0 -224
- package/docs/plans/migration.md +0 -538
- package/docs/plans/operations/README.md +0 -7
- package/docs/plans/operations/wave-10-word-certification.md +0 -87
- package/docs/plans/operations/wave-8-railway-staging.md +0 -153
- package/docs/plans/operations/wave-9-manual-certification.md +0 -73
- package/docs/plans/platform/README.md +0 -9
- package/docs/plans/reference/legal-checklist-coverage.md +0 -258
- package/docs/plans/wave-orchestrator.md +0 -423
- package/docs/plans/waves/README.md +0 -75
- package/docs/plans/waves/completed/wave-0.md +0 -195
- package/docs/plans/waves/completed/wave-1.md +0 -379
- package/docs/plans/waves/completed/wave-10.md +0 -670
- package/docs/plans/waves/completed/wave-11.md +0 -335
- package/docs/plans/waves/completed/wave-12.md +0 -417
- package/docs/plans/waves/completed/wave-13.md +0 -316
- package/docs/plans/waves/completed/wave-14.md +0 -319
- package/docs/plans/waves/completed/wave-15.md +0 -321
- package/docs/plans/waves/completed/wave-16.md +0 -316
- package/docs/plans/waves/completed/wave-17.md +0 -331
- package/docs/plans/waves/completed/wave-18.md +0 -328
- package/docs/plans/waves/completed/wave-2.md +0 -438
- package/docs/plans/waves/completed/wave-3.md +0 -435
- package/docs/plans/waves/completed/wave-4.md +0 -430
- package/docs/plans/waves/completed/wave-5.md +0 -430
- package/docs/plans/waves/completed/wave-6.md +0 -430
- package/docs/plans/waves/completed/wave-7.md +0 -526
- package/docs/plans/waves/completed/wave-8.md +0 -596
- package/docs/plans/waves/completed/wave-9.md +0 -552
- package/docs/plans/waves/deferred/README.md +0 -14
- package/docs/plans/waves/deferred/encrypted-intake-contracts.md +0 -282
- package/docs/plans/waves/deferred/legal-feedback-wave-expansion.md +0 -308
- package/docs/plans/waves/deferred/wave-encrypted-intake.md +0 -451
- package/docs/plans/waves/design/README.md +0 -5
- package/docs/plans/waves/design/wave-1-a1.md +0 -309
- package/docs/plans/waves/reviews/README.md +0 -5
- package/docs/plans/waves/reviews/wave-0-cont-qa.md +0 -151
- package/docs/plans/waves/reviews/wave-1-cont-qa.md +0 -46
- package/docs/plans/waves/reviews/wave-10-accessibility-and-design.md +0 -51
- package/docs/plans/waves/reviews/wave-10-cont-qa.md +0 -24
- package/docs/plans/waves/reviews/wave-10-dashboard-proof.md +0 -46
- package/docs/plans/waves/reviews/wave-10-performance-signoff.md +0 -55
- package/docs/plans/waves/reviews/wave-10-regression-proof.md +0 -23
- package/docs/plans/waves/reviews/wave-10-release-audit.md +0 -31
- package/docs/plans/waves/reviews/wave-10-service-proof.md +0 -83
- package/docs/plans/waves/reviews/wave-10-word-certification.md +0 -31
- package/docs/plans/waves/reviews/wave-18-ai-contract-closure.md +0 -277
- package/docs/plans/waves/reviews/wave-18-cont-qa.md +0 -255
- package/docs/plans/waves/reviews/wave-18-parity-proof.md +0 -271
- package/docs/plans/waves/reviews/wave-19-cont-qa.md +0 -59
- package/docs/plans/waves/reviews/wave-2-cont-qa.md +0 -72
- package/docs/plans/waves/reviews/wave-20-cont-qa.md +0 -60
- package/docs/plans/waves/reviews/wave-25-cont-qa.md +0 -48
- package/docs/plans/waves/reviews/wave-28-cont-qa.md +0 -46
- package/docs/plans/waves/reviews/wave-29-cont-qa.md +0 -53
- package/docs/plans/waves/reviews/wave-3-cont-qa.md +0 -53
- package/docs/plans/waves/reviews/wave-3-core-proof.md +0 -77
- package/docs/plans/waves/reviews/wave-3-validator-proof.md +0 -73
- package/docs/plans/waves/reviews/wave-32-cont-qa.md +0 -43
- package/docs/plans/waves/reviews/wave-33-cont-qa.md +0 -526
- package/docs/plans/waves/reviews/wave-34-cont-qa.md +0 -100
- package/docs/plans/waves/reviews/wave-35-cont-qa.md +0 -145
- package/docs/plans/waves/reviews/wave-4-cont-qa.md +0 -47
- package/docs/plans/waves/reviews/wave-4-structure-proof.md +0 -69
- package/docs/plans/waves/reviews/wave-5-comment-proof.md +0 -158
- package/docs/plans/waves/reviews/wave-5-cont-qa.md +0 -68
- package/docs/plans/waves/reviews/wave-6-cont-qa.md +0 -416
- package/docs/plans/waves/reviews/wave-6-redline-proof.md +0 -130
- package/docs/plans/waves/reviews/wave-7-cont-qa.md +0 -82
- package/docs/plans/waves/reviews/wave-7-ooxml-compliance.md +0 -85
- package/docs/plans/waves/reviews/wave-7-preservation-proof.md +0 -119
- package/docs/plans/waves/reviews/wave-7-trust-ux.md +0 -87
- package/docs/plans/waves/reviews/wave-8-accessibility-and-design.md +0 -128
- package/docs/plans/waves/reviews/wave-8-cont-qa.md +0 -92
- package/docs/plans/waves/reviews/wave-8-live-proof.md +0 -140
- package/docs/plans/waves/reviews/wave-8-security.md +0 -47
- package/docs/plans/waves/reviews/wave-9-editor-embedding.md +0 -39
- package/docs/plans/waves/reviews/wave-9-fixture-runner.md +0 -56
- package/docs/plans/waves/reviews/wave-9-live-proof.md +0 -105
- package/docs/plans/waves/reviews/wave-9-usability-and-performance.md +0 -152
- package/docs/plans/waves/specs/README.md +0 -5
- package/docs/plans/waves/specs/wave-1-component-boundaries.md +0 -322
- package/docs/plans/waves/specs/wave-1-ooxml-contracts.md +0 -323
- package/docs/plans/waves/specs/wave-1-review-and-ui-contracts.md +0 -339
- package/docs/plans/waves/specs/wave-1-runtime-contracts.md +0 -509
- package/docs/plans/waves/wave-19.md +0 -341
- package/docs/plans/waves/wave-20.md +0 -308
- package/docs/plans/waves/wave-21.md +0 -289
- package/docs/plans/waves/wave-22.md +0 -221
- package/docs/plans/waves/wave-23.md +0 -295
- package/docs/plans/waves/wave-24.md +0 -286
- package/docs/plans/waves/wave-25.md +0 -313
- package/docs/plans/waves/wave-26.md +0 -300
- package/docs/plans/waves/wave-27.md +0 -299
- package/docs/plans/waves/wave-28.md +0 -368
- package/docs/plans/waves/wave-29.md +0 -303
- package/docs/plans/waves/wave-30.md +0 -307
- package/docs/plans/waves/wave-31.md +0 -231
- package/docs/plans/waves/wave-32.md +0 -152
- package/docs/plans/waves/wave-33.md +0 -147
- package/docs/plans/waves/wave-34.md +0 -148
- package/docs/plans/waves/wave-35.md +0 -141
- package/docs/plans/waves/wave-36.md +0 -146
- package/docs/plans/xlsx/README.md +0 -14
- package/docs/plans/xlsx/xlsx-fixture-corpus-and-certification-plan.md +0 -126
- package/docs/reference/cli-reference.md +0 -600
- package/docs/reference/coordination-and-closure.md +0 -487
- package/docs/reference/deep-research-report (15).md +0 -25
- package/docs/reference/docx/README.md +0 -10
- package/docs/reference/legal-checklist.md +0 -445
- package/docs/reference/live-proof-waves.md +0 -199
- package/docs/reference/ooxml-compliance.md +0 -129
- package/docs/reference/ooxml-feature-parity-matrix.md +0 -172
- package/docs/reference/platform/shared-ooxml-platform-guidance.md +0 -77
- package/docs/reference/prototype-agent-prompt-legal-fidelity.md +0 -155
- package/docs/reference/public-api.md +0 -456
- package/docs/reference/repository-guidance.md +0 -58
- package/docs/reference/runtime-config/README.md +0 -182
- package/docs/reference/runtime-config/claude.md +0 -110
- package/docs/reference/runtime-config/codex.md +0 -82
- package/docs/reference/runtime-config/opencode.md +0 -93
- package/docs/reference/sample-waves.md +0 -105
- package/docs/reference/skills.md +0 -237
- package/docs/reference/templates/AGENTS.md +0 -78
- package/docs/reference/templates/HEARTBEAT.md +0 -7
- package/docs/reference/templates/IDENTITY.md +0 -23
- package/docs/reference/templates/SOUL.md +0 -36
- package/docs/reference/templates/TOOLS.md +0 -40
- package/docs/reference/templates/USER.md +0 -17
- package/docs/reference/wave-control.md +0 -184
- package/docs/reference/wave-planning-lessons.md +0 -167
- package/docs/reference/word-review-editor-frontend-architecture.md +0 -479
- package/docs/reference/word-review-editor-ux-guide.md +0 -253
- package/docs/reference/xlsx/xlsx-ooxml-compliance.md +0 -137
- package/docs/research/agent-context-sources.md +0 -178
- package/docs/research/coordination-failure-review.md +0 -290
- package/docs/research/docx-react-component/Canonical Document Schema Specification for a React-based Word-compatible Editor.md +0 -2317
- package/docs/research/docx-react-component/Feature Compatibility Matrix for a React Word Compatible Legal Editor v1.md +0 -219
- package/docs/research/docx-react-component/React Component Architecture and Front-End Structure Specification for a Word-Compatible Legal Review Editor.md +0 -1112
- package/docs/research/docx-react-component/document_compatibility_and_testing_spec.md +0 -751
- package/docs/research/xlsx/raw/README.md +0 -13
- package/docs/roadmap.md +0 -174
- package/docs/superpowers/plans/2026-03-28-harness-control-bar.md +0 -677
- package/docs/superpowers/specs/2026-03-28-harness-control-bar-design.md +0 -274
- package/docs/xlsx-react/README.md +0 -38
- package/docs/xlsx-react/agent-llm-interaction-layer-docx-xlsx.md +0 -621
- package/docs/xlsx-react/canonical-workbook-model-and-commands.md +0 -948
- package/docs/xlsx-react/shared-openxml-editor-platform-docx-xlsx.md +0 -228
- package/docs/xlsx-react/spreadsheet-editor-component-architecture.md +0 -809
- package/docs/xlsx-react/spreadsheet-editor-frontend-architecture.md +0 -537
- package/docs/xlsx-react/spreadsheet-editor-ux-guide.md +0 -520
- package/docs/xlsx-react/xlsx-editor-research-pack.md +0 -871
- package/docs/xlsx-react/xlsx-fixture-corpus-and-certification-plan.md +0 -436
- package/docs/xlsx-react/xlsx-ooxml-compliance.md +0 -320
- package/examples/README.md +0 -16
- package/memory/MEMORY.md +0 -24
- package/pnpm-workspace.yaml +0 -4
- package/scripts/check-no-authored-js.sh +0 -13
- package/scripts/context7-api-check.sh +0 -65
- package/scripts/context7-export-env.sh +0 -42
- package/scripts/run-context7-mcp.sh +0 -8
- package/scripts/run-workspace-tests.sh +0 -15
- package/scripts/start-wave-10-local.sh +0 -189
- package/scripts/wave-agent-attach.sh +0 -47
- package/scripts/wave-auto-answer.sh +0 -118
- package/scripts/wave-dashboard-attach.sh +0 -13
- package/scripts/wave-launch.sh +0 -273
- package/scripts/wave-overnight-supervisor.sh +0 -145
- package/scripts/wave-status.sh +0 -379
- package/scripts/wave-watch.sh +0 -231
- package/services/README.md +0 -17
- package/services/openxml-validator/Dockerfile +0 -29
- package/services/openxml-validator/OpenXmlValidator.Api.csproj +0 -12
- package/services/openxml-validator/Program.cs +0 -436
- package/services/openxml-validator/README.md +0 -152
- package/services/openxml-validator/railway.json +0 -16
- package/services/react-word-editor/.tmp-a4/src/api/public-types.ts +0 -318
- package/services/react-word-editor/.tmp-a4/src/ui/WordReviewEditor.tsx +0 -1302
- package/services/react-word-editor/.tmp-a4/src/ui/editor-surface/editor-surface.tsx +0 -546
- package/services/react-word-editor/.tmp-a4/test/ui/word-review-editor.test.tsx +0 -146
- package/services/react-word-editor/.tmp-a4-build/src/api/public-types.js +0 -2
- package/services/react-word-editor/.tmp-a4-build/src/ui/WordReviewEditor.js +0 -818
- package/services/react-word-editor/.tmp-a4-build/src/ui/editor-surface/editor-surface.js +0 -229
- package/services/react-word-editor/.tmp-a4-build/test/ui/word-review-editor.test.js +0 -121
- package/services/react-word-editor/.tmp-wave-4-a3-tsconfig.json +0 -21
- package/services/react-word-editor/.tmp-wave-4-a3-tsconfig.tsbuildinfo +0 -1
- package/services/react-word-editor/Dockerfile +0 -26
- package/services/react-word-editor/README.md +0 -254
- package/services/react-word-editor/app/api/certification/route.ts +0 -79
- package/services/react-word-editor/app/api/demo-sessions/route.ts +0 -109
- package/services/react-word-editor/app/api/deploy-health/route.ts +0 -23
- package/services/react-word-editor/app/api/exports/[exportId]/route.ts +0 -34
- package/services/react-word-editor/app/api/exports/route.ts +0 -81
- package/services/react-word-editor/app/api/fixtures/[fixtureId]/run/route.ts +0 -100
- package/services/react-word-editor/app/api/health/route.ts +0 -70
- package/services/react-word-editor/app/api/runs/[runId]/route.ts +0 -36
- package/services/react-word-editor/app/api/scenarios/[scenarioId]/run/route.ts +0 -85
- package/services/react-word-editor/app/api/sessions/[sessionId]/route.ts +0 -199
- package/services/react-word-editor/app/api/sessions/[sessionId]/source/route.ts +0 -45
- package/services/react-word-editor/app/api/uploads/route.ts +0 -70
- package/services/react-word-editor/app/api/validate/route.ts +0 -310
- package/services/react-word-editor/app/certification/[runId]/page.tsx +0 -14
- package/services/react-word-editor/app/certification/page.tsx +0 -32
- package/services/react-word-editor/app/dashboard/page.tsx +0 -7
- package/services/react-word-editor/app/demo/page.tsx +0 -30
- package/services/react-word-editor/app/demo/prototype-client.tsx +0 -1080
- package/services/react-word-editor/app/editor/[sessionId]/page.tsx +0 -33
- package/services/react-word-editor/app/fixtures/page.tsx +0 -7
- package/services/react-word-editor/app/globals.css +0 -121
- package/services/react-word-editor/app/layout.tsx +0 -32
- package/services/react-word-editor/app/page.tsx +0 -30
- package/services/react-word-editor/app/runs/[runId]/page.tsx +0 -34
- package/services/react-word-editor/app/wave-10-word-review/page.tsx +0 -7
- package/services/react-word-editor/components/harness-control-bar.tsx +0 -289
- package/services/react-word-editor/components/harness-editor-session-client.tsx +0 -1214
- package/services/react-word-editor/components/harness-workspace-page.tsx +0 -715
- package/services/react-word-editor/components/reduced-motion-toggle.tsx +0 -79
- package/services/react-word-editor/components/workspace-certification-panel.tsx +0 -307
- package/services/react-word-editor/lib/certification-bundle.ts +0 -796
- package/services/react-word-editor/lib/certification-store.ts +0 -661
- package/services/react-word-editor/lib/demo-fixtures.test.mjs +0 -195
- package/services/react-word-editor/lib/demo-fixtures.ts +0 -1519
- package/services/react-word-editor/lib/editor-session-summary.test.mjs +0 -68
- package/services/react-word-editor/lib/editor-session-summary.ts +0 -14
- package/services/react-word-editor/lib/editor-session.ts +0 -228
- package/services/react-word-editor/lib/exports-route.test.mjs +0 -32
- package/services/react-word-editor/lib/harness-client.ts +0 -347
- package/services/react-word-editor/lib/harness-config.json +0 -30
- package/services/react-word-editor/lib/harness-config.test.mjs +0 -31
- package/services/react-word-editor/lib/harness-config.ts +0 -21
- package/services/react-word-editor/lib/harness-editor-datastore.test.mjs +0 -220
- package/services/react-word-editor/lib/harness-editor-datastore.ts +0 -161
- package/services/react-word-editor/lib/private-mode.test.mjs +0 -42
- package/services/react-word-editor/lib/private-mode.ts +0 -61
- package/services/react-word-editor/lib/regression-report.test.mjs +0 -352
- package/services/react-word-editor/lib/regression-report.ts +0 -896
- package/services/react-word-editor/lib/run-artifacts.ts +0 -934
- package/services/react-word-editor/lib/run-history.ts +0 -755
- package/services/react-word-editor/lib/scenario-artifacts.test.mjs +0 -41
- package/services/react-word-editor/lib/scenario-artifacts.ts +0 -44
- package/services/react-word-editor/lib/storage.ts +0 -953
- package/services/react-word-editor/lib/validator-client.test.mjs +0 -54
- package/services/react-word-editor/lib/validator-client.ts +0 -95
- package/services/react-word-editor/lib/workspace-navigation.ts +0 -79
- package/services/react-word-editor/middleware.ts +0 -35
- package/services/react-word-editor/next-env.d.ts +0 -6
- package/services/react-word-editor/next.config.mjs +0 -15
- package/services/react-word-editor/package.json +0 -38
- package/services/react-word-editor/postcss.config.mjs +0 -8
- package/services/react-word-editor/railway.json +0 -21
- package/services/react-word-editor/scripts/wave-10-certification.mjs +0 -101
- package/services/react-word-editor/scripts/wave-9-live-usability-pilot.mjs +0 -911
- package/services/react-word-editor/tsconfig.json +0 -39
- package/services/react-word-editor/tsconfig.tsbuildinfo +0 -1
- package/skills/README.md +0 -48
- package/skills/domain-docx-compatibility/SKILL.md +0 -44
- package/skills/domain-docx-compatibility/skill.json +0 -19
- package/skills/domain-editor-architecture/SKILL.md +0 -49
- package/skills/domain-editor-architecture/skill.json +0 -19
- package/skills/domain-legal-review/SKILL.md +0 -39
- package/skills/domain-legal-review/skill.json +0 -19
- package/skills/provider-aws/SKILL.md +0 -117
- package/skills/provider-aws/adapters/claude.md +0 -1
- package/skills/provider-aws/adapters/codex.md +0 -1
- package/skills/provider-aws/references/service-verification.md +0 -39
- package/skills/provider-aws/skill.json +0 -54
- package/skills/provider-custom-deploy/SKILL.md +0 -64
- package/skills/provider-custom-deploy/skill.json +0 -50
- package/skills/provider-docker-compose/SKILL.md +0 -96
- package/skills/provider-docker-compose/adapters/local.md +0 -1
- package/skills/provider-docker-compose/skill.json +0 -53
- package/skills/provider-github-release/SKILL.md +0 -121
- package/skills/provider-github-release/adapters/claude.md +0 -1
- package/skills/provider-github-release/adapters/codex.md +0 -1
- package/skills/provider-github-release/skill.json +0 -55
- package/skills/provider-kubernetes/SKILL.md +0 -143
- package/skills/provider-kubernetes/adapters/claude.md +0 -1
- package/skills/provider-kubernetes/adapters/codex.md +0 -1
- package/skills/provider-kubernetes/references/kubectl-patterns.md +0 -58
- package/skills/provider-kubernetes/skill.json +0 -52
- package/skills/provider-railway/SKILL.md +0 -123
- package/skills/provider-railway/adapters/claude.md +0 -1
- package/skills/provider-railway/adapters/codex.md +0 -1
- package/skills/provider-railway/adapters/local.md +0 -1
- package/skills/provider-railway/adapters/opencode.md +0 -1
- package/skills/provider-railway/references/verification-commands.md +0 -39
- package/skills/provider-railway/skill.json +0 -71
- package/skills/provider-ssh-manual/SKILL.md +0 -97
- package/skills/provider-ssh-manual/skill.json +0 -54
- package/skills/repo-coding-rules/SKILL.md +0 -55
- package/skills/repo-coding-rules/skill.json +0 -34
- package/skills/role-cont-eval/SKILL.md +0 -91
- package/skills/role-cont-eval/adapters/codex.md +0 -1
- package/skills/role-cont-eval/skill.json +0 -36
- package/skills/role-cont-qa/SKILL.md +0 -100
- package/skills/role-cont-qa/adapters/claude.md +0 -1
- package/skills/role-cont-qa/skill.json +0 -36
- package/skills/role-deploy/SKILL.md +0 -97
- package/skills/role-deploy/skill.json +0 -36
- package/skills/role-design/SKILL.md +0 -50
- package/skills/role-design/skill.json +0 -36
- package/skills/role-documentation/SKILL.md +0 -76
- package/skills/role-documentation/skill.json +0 -36
- package/skills/role-implementation/SKILL.md +0 -45
- package/skills/role-implementation/skill.json +0 -36
- package/skills/role-infra/SKILL.md +0 -81
- package/skills/role-infra/skill.json +0 -36
- package/skills/role-integration/SKILL.md +0 -91
- package/skills/role-integration/skill.json +0 -36
- package/skills/role-planner/SKILL.md +0 -39
- package/skills/role-planner/skill.json +0 -21
- package/skills/role-research/SKILL.md +0 -65
- package/skills/role-research/skill.json +0 -36
- package/skills/role-security/SKILL.md +0 -60
- package/skills/role-security/skill.json +0 -36
- package/skills/runtime-claude/SKILL.md +0 -66
- package/skills/runtime-claude/skill.json +0 -36
- package/skills/runtime-codex/SKILL.md +0 -58
- package/skills/runtime-codex/skill.json +0 -36
- package/skills/runtime-local/SKILL.md +0 -46
- package/skills/runtime-local/skill.json +0 -36
- package/skills/runtime-opencode/SKILL.md +0 -58
- package/skills/runtime-opencode/skill.json +0 -36
- package/skills/signal-hygiene/SKILL.md +0 -51
- package/skills/signal-hygiene/skill.json +0 -20
- package/skills/tui-design/SKILL.md +0 -77
- package/skills/tui-design/references/tui-design.md +0 -259
- package/skills/tui-design/skill.json +0 -36
- package/skills/wave-core/SKILL.md +0 -141
- package/skills/wave-core/references/marker-syntax.md +0 -70
- package/skills/wave-core/skill.json +0 -35
- package/test/README.md +0 -16
- package/test/core/formatting-commands.test.ts +0 -285
- package/test/core/image-commands.test.ts +0 -298
- package/test/core/mapping.test.ts +0 -186
- package/test/core/text-commands.test.ts +0 -176
- package/test/fixtures/docx/F01-basic-contract.docx +0 -0
- package/test/fixtures/docx/F01-basic-contract.md +0 -33
- package/test/fixtures/docx/F02-headings-styles.docx +0 -0
- package/test/fixtures/docx/F02-headings-styles.md +0 -33
- package/test/fixtures/docx/F03-legal-outline-numbering.docx +0 -0
- package/test/fixtures/docx/F03-legal-outline-numbering.md +0 -34
- package/test/fixtures/docx/F04-restart-numbering-schedules.docx +0 -0
- package/test/fixtures/docx/F04-restart-numbering-schedules.md +0 -33
- package/test/fixtures/docx/F05-table-heavy-agreement.docx +0 -0
- package/test/fixtures/docx/F05-table-heavy-agreement.md +0 -34
- package/test/fixtures/docx/F06-merged-cells-signature-table.docx +0 -0
- package/test/fixtures/docx/F06-merged-cells-signature-table.md +0 -34
- package/test/fixtures/docx/F07-inline-images-exhibit.docx +0 -0
- package/test/fixtures/docx/F07-inline-images-exhibit.md +0 -34
- package/test/fixtures/docx/F08-hyperlinks.docx +0 -0
- package/test/fixtures/docx/F08-hyperlinks.md +0 -33
- package/test/fixtures/docx/F09-comments-single-paragraph.docx +0 -0
- package/test/fixtures/docx/F09-comments-single-paragraph.md +0 -33
- package/test/fixtures/docx/F10-threaded-comments-resolve.docx +0 -0
- package/test/fixtures/docx/F10-threaded-comments-resolve.md +0 -33
- package/test/fixtures/docx/F11-redlines-basic.docx +0 -0
- package/test/fixtures/docx/F11-redlines-basic.md +0 -33
- package/test/fixtures/docx/F12-redlines-paragraph-joins-splits.docx +0 -0
- package/test/fixtures/docx/F12-redlines-paragraph-joins-splits.md +0 -33
- package/test/fixtures/docx/F13-comments-on-deleted-text.docx +0 -0
- package/test/fixtures/docx/F13-comments-on-deleted-text.md +0 -33
- package/test/fixtures/docx/F14-revisions-in-tables-and-lists.docx +0 -0
- package/test/fixtures/docx/F14-revisions-in-tables-and-lists.md +0 -33
- package/test/fixtures/docx/F15-sections-headers-footers.docx +0 -0
- package/test/fixtures/docx/F15-sections-headers-footers.md +0 -33
- package/test/fixtures/docx/F16-footnotes-endnotes.docx +0 -0
- package/test/fixtures/docx/F16-footnotes-endnotes.md +0 -33
- package/test/fixtures/docx/F17-fields-and-toc.docx +0 -0
- package/test/fixtures/docx/F17-fields-and-toc.md +0 -33
- package/test/fixtures/docx/F18-content-controls-template.docx +0 -0
- package/test/fixtures/docx/F18-content-controls-template.md +0 -33
- package/test/fixtures/docx/F19-custom-xml-doc-assembly.docx +0 -0
- package/test/fixtures/docx/F19-custom-xml-doc-assembly.md +0 -35
- package/test/fixtures/docx/F20-unknown-ooxml-and-alternatecontent.docx +0 -0
- package/test/fixtures/docx/F20-unknown-ooxml-and-alternatecontent.md +0 -33
- package/test/fixtures/docx/F21-malformed-broken-docx.docx +0 -0
- package/test/fixtures/docx/F21-malformed-broken-docx.md +0 -33
- package/test/fixtures/docx/README.md +0 -74
- package/test/fixtures/docx/certification-manifest.json +0 -104
- package/test/fixtures/docx/fixtures.manifest.json +0 -196
- package/test/fixtures/encrypted-docx/README.md +0 -27
- package/test/fixtures/encrypted-docx/certification-manifest.json +0 -9
- package/test/fixtures/encrypted-docx/fixtures.manifest.json +0 -47
- package/test/fixtures/scenarios/docx/README.md +0 -25
- package/test/fixtures/scenarios/docx/S01-sow-template.docx +0 -0
- package/test/fixtures/scenarios/docx/S01-sow-template.md +0 -30
- package/test/fixtures/scenarios/docx/S02-bw-partner-user-licence-agreement-redlines.docx +0 -0
- package/test/fixtures/scenarios/docx/S02-bw-partner-user-licence-agreement-redlines.md +0 -32
- package/test/fixtures/scenarios/docx/scenario-manifest.json +0 -53
- package/test/formats/xlsx/io/xlsx-import.test.ts +0 -766
- package/test/formats/xlsx/model/workbook.test.ts +0 -669
- package/test/helpers/dom-setup.ts +0 -124
- package/test/io/comment-roundtrip.test.ts +0 -272
- package/test/io/complex-content-roundtrip.test.ts +0 -632
- package/test/io/docx-compatibility-regression.test.ts +0 -199
- package/test/io/docx-session.test.ts +0 -1495
- package/test/io/footnotes-roundtrip.test.ts +0 -318
- package/test/io/headers-footers-roundtrip.test.ts +0 -547
- package/test/io/numbering-roundtrip.test.ts +0 -234
- package/test/io/package-reader.test.ts +0 -199
- package/test/io/paragraph-properties-roundtrip.test.ts +0 -129
- package/test/io/preserved-package-roundtrip.test.ts +0 -365
- package/test/io/property-completeness.test.ts +0 -292
- package/test/io/revision-roundtrip.test.ts +0 -347
- package/test/io/structural-blocks.test.ts +0 -202
- package/test/io/table-media-roundtrip.test.ts +0 -448
- package/test/io/table-properties-roundtrip.test.ts +0 -569
- package/test/io/table-roundtrip.test.ts +0 -302
- package/test/io/text-roundtrip.test.ts +0 -344
- package/test/model/canonical-document.test.ts +0 -285
- package/test/preservation/opaque-fragment-store.test.ts +0 -121
- package/test/preservation/package-preservation.test.ts +0 -395
- package/test/preservation/store.test.ts +0 -84
- package/test/review/comment-remapping.test.ts +0 -220
- package/test/review/comment-store.test.ts +0 -180
- package/test/review/move-revisions.test.ts +0 -143
- package/test/review/property-change-revisions.test.ts +0 -225
- package/test/review/revision-actions.test.ts +0 -330
- package/test/review/revision-store.test.ts +0 -193
- package/test/runtime/session-capabilities.test.ts +0 -260
- package/test/runtime/table-commands.test.ts +0 -356
- package/test/runtime/table-schema.test.ts +0 -221
- package/test/runtime/tracked-changes-toggle.test.ts +0 -107
- package/test/ui/comment-review-surface.test.tsx +0 -114
- package/test/ui/reduced-motion-toggle.test.tsx +0 -137
- package/test/ui/word-review-editor.imported-scenarios.test.tsx +0 -169
- package/test/ui/word-review-editor.interaction.test.tsx +0 -1198
- package/test/ui/word-review-editor.test.js +0 -188
- package/test/ui/word-review-editor.test.tsx +0 -280
- package/test/ui-tailwind/search-plugin.test.ts +0 -286
- package/test/validation/compatibility-engine.test.ts +0 -336
- package/test/validation/compatibility-report.test.ts +0 -189
- package/test/validation/low-priority-word-surfaces.test.ts +0 -282
- package/test/validation/malformed-doc.test.ts +0 -113
- package/test-results/.last-run.json +0 -4
- 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,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.
|