@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,282 +0,0 @@
|
|
|
1
|
-
# Deferred Wave - Encrypted Intake Contracts
|
|
2
|
-
|
|
3
|
-
## Purpose
|
|
4
|
-
|
|
5
|
-
This packet preserves the previously proposed component-owned encrypted-intake contract as a deferred option.
|
|
6
|
-
|
|
7
|
-
It is not part of the active Wave 8 through Wave 10 plan because encrypted handling is currently upstream-owned.
|
|
8
|
-
|
|
9
|
-
It does not replace the Wave 1 contract set. It extends it with a narrow later-wave packet because password-to-open `.docx` handling introduces:
|
|
10
|
-
|
|
11
|
-
- pre-import container routing
|
|
12
|
-
- sensitive password handling
|
|
13
|
-
- runtime-owned challenge state
|
|
14
|
-
- explicit export warnings for decrypted sessions
|
|
15
|
-
|
|
16
|
-
## Governing Inputs
|
|
17
|
-
|
|
18
|
-
- [README.md](/home/coder/docx-react-component/README.md)
|
|
19
|
-
- [docs/reference/repository-guidance.md](/home/coder/docx-react-component/docs/reference/repository-guidance.md)
|
|
20
|
-
- [docs/reference/public-api.md](/home/coder/docx-react-component/docs/reference/public-api.md)
|
|
21
|
-
- [docs/reference/ooxml-compliance.md](/home/coder/docx-react-component/docs/reference/ooxml-compliance.md)
|
|
22
|
-
- [docs/plans/master-plan.md](/home/coder/docx-react-component/docs/plans/master-plan.md)
|
|
23
|
-
- [docs/reference/deep-research-report (15).md](/home/coder/docx-react-component/docs/reference/deep-research-report%20%2815%29.md)
|
|
24
|
-
|
|
25
|
-
## Contract Scope
|
|
26
|
-
|
|
27
|
-
This packet governs only password-to-open OOXML intake.
|
|
28
|
-
|
|
29
|
-
It covers:
|
|
30
|
-
|
|
31
|
-
- encrypted-container detection before OOXML parse
|
|
32
|
-
- decrypt-to-OPC routing for supported ECMA-376 Office encryption
|
|
33
|
-
- runtime-owned password challenge state and UI projection
|
|
34
|
-
- export posture for documents opened through decrypt
|
|
35
|
-
- dedicated encrypted-fixture proof requirements
|
|
36
|
-
|
|
37
|
-
It does not change the core OOXML feature taxonomy. After a successful decrypt, the existing import, preservation, review, export, and validation contracts apply unchanged.
|
|
38
|
-
|
|
39
|
-
## Terminology
|
|
40
|
-
|
|
41
|
-
- `password-to-open` means an encrypted Office container that must be decrypted before any OOXML part can be read.
|
|
42
|
-
- `document protection` or `restrict editing` remains in-package OOXML policy markup and is not part of this intake contract.
|
|
43
|
-
- `IRM` and policy-bound encryption remain out of scope for v1.
|
|
44
|
-
|
|
45
|
-
## Non-Negotiable Rules
|
|
46
|
-
|
|
47
|
-
- Encrypted detection happens before any normal OPC or OOXML importer logic.
|
|
48
|
-
- The normal OOXML importer must never receive encrypted bytes.
|
|
49
|
-
- Decrypt must complete before canonical import begins.
|
|
50
|
-
- Passwords, derived keys, and decrypted raw package bytes must never enter canonical state, persisted snapshots, datastore adapters, or host-visible diagnostics.
|
|
51
|
-
- Unsupported encryption must fail explicitly; do not downgrade to empty or partial import.
|
|
52
|
-
- Export after decrypt must not silently imply re-encryption.
|
|
53
|
-
|
|
54
|
-
## Public Surface Contract
|
|
55
|
-
|
|
56
|
-
The repo keeps one public component surface: `WordReviewEditor`.
|
|
57
|
-
|
|
58
|
-
The encrypted-input contract is:
|
|
59
|
-
|
|
60
|
-
- `initialDocx` and `externalDocSource.kind = "docx"` may contain either:
|
|
61
|
-
- normal OPC `.docx` bytes
|
|
62
|
-
- supported password-to-open OOXML Office containers
|
|
63
|
-
- no standalone `importDocument()` API is added in v1
|
|
64
|
-
- no host-supplied password callback is required in the baseline Wave 8 surface
|
|
65
|
-
|
|
66
|
-
Wave 8 baseline uses component-managed password UX inside the editor shell.
|
|
67
|
-
|
|
68
|
-
Future host-managed continuation is allowed only through an explicit public-API revision after pilot evidence proves the need.
|
|
69
|
-
|
|
70
|
-
## Internal Ownership
|
|
71
|
-
|
|
72
|
-
### `src/io`
|
|
73
|
-
|
|
74
|
-
Owns:
|
|
75
|
-
|
|
76
|
-
- source-byte normalization helpers used by the decrypt route
|
|
77
|
-
- container sniffing
|
|
78
|
-
- encrypted-container detection
|
|
79
|
-
- decrypt-to-OPC routing
|
|
80
|
-
- MS-OFFCRYPTO parsing and decrypt helpers
|
|
81
|
-
|
|
82
|
-
Must not:
|
|
83
|
-
|
|
84
|
-
- mutate canonical state directly
|
|
85
|
-
- render UI
|
|
86
|
-
|
|
87
|
-
### `src/runtime`
|
|
88
|
-
|
|
89
|
-
Owns:
|
|
90
|
-
|
|
91
|
-
- import state machine
|
|
92
|
-
- source-replacement lifecycle
|
|
93
|
-
- redacted status and warning projection
|
|
94
|
-
- import cancellation and cleanup orchestration
|
|
95
|
-
|
|
96
|
-
Must not:
|
|
97
|
-
|
|
98
|
-
- persist password state
|
|
99
|
-
- bypass the `src/io` decrypt route
|
|
100
|
-
|
|
101
|
-
### `src/ui`
|
|
102
|
-
|
|
103
|
-
Owns:
|
|
104
|
-
|
|
105
|
-
- password prompt UI
|
|
106
|
-
- import progress UI
|
|
107
|
-
- export warning interstitial for decrypted sessions
|
|
108
|
-
|
|
109
|
-
Must not:
|
|
110
|
-
|
|
111
|
-
- parse encrypted containers
|
|
112
|
-
- hold authoritative password state in React-owned snapshots
|
|
113
|
-
|
|
114
|
-
### `src/validation`
|
|
115
|
-
|
|
116
|
-
Owns:
|
|
117
|
-
|
|
118
|
-
- compatibility and export-risk reporting after canonical import
|
|
119
|
-
- sensitive-error redaction helpers for surfaced diagnostics
|
|
120
|
-
|
|
121
|
-
Must not:
|
|
122
|
-
|
|
123
|
-
- become the primary decrypt or package transformation engine
|
|
124
|
-
|
|
125
|
-
## Container Routing Contract
|
|
126
|
-
|
|
127
|
-
The intake order is frozen:
|
|
128
|
-
|
|
129
|
-
1. normalize source bytes
|
|
130
|
-
2. enforce source-size limits
|
|
131
|
-
3. sniff container kind
|
|
132
|
-
4. route:
|
|
133
|
-
- `opc_zip` -> normal OOXML import
|
|
134
|
-
- `encrypted_office` -> password challenge then decrypt
|
|
135
|
-
- anything else -> fail safely
|
|
136
|
-
5. if decrypt succeeds, validate decrypted bytes as OPC
|
|
137
|
-
6. only then run the existing OOXML importer
|
|
138
|
-
|
|
139
|
-
Required route outcomes:
|
|
140
|
-
|
|
141
|
-
- `opc_zip`
|
|
142
|
-
- `encrypted_office`
|
|
143
|
-
- `unsupported_file_type`
|
|
144
|
-
- `invalid_container`
|
|
145
|
-
|
|
146
|
-
## Supported Encryption Scope
|
|
147
|
-
|
|
148
|
-
Wave 8 v1 support is limited to:
|
|
149
|
-
|
|
150
|
-
- ECMA-376 Standard encryption
|
|
151
|
-
- ECMA-376 Agile encryption
|
|
152
|
-
|
|
153
|
-
Wave 8 v1 explicitly excludes:
|
|
154
|
-
|
|
155
|
-
- legacy RC4 Office encryption
|
|
156
|
-
- extensible providers
|
|
157
|
-
- IRM or policy-bound encryption
|
|
158
|
-
- binary `.doc`
|
|
159
|
-
- re-encrypt-on-export
|
|
160
|
-
|
|
161
|
-
Unsupported schemes must fail with explicit user-facing and machine-readable error codes.
|
|
162
|
-
|
|
163
|
-
## Runtime State Contract
|
|
164
|
-
|
|
165
|
-
The import state machine is runtime-owned and redacted before React sees it.
|
|
166
|
-
|
|
167
|
-
Minimum states:
|
|
168
|
-
|
|
169
|
-
- `idle`
|
|
170
|
-
- `reading_source`
|
|
171
|
-
- `sniffing_container`
|
|
172
|
-
- `password_required`
|
|
173
|
-
- `decrypting`
|
|
174
|
-
- `importing_ooxml`
|
|
175
|
-
- `ready`
|
|
176
|
-
- `failed`
|
|
177
|
-
- `cancelled`
|
|
178
|
-
|
|
179
|
-
Rules:
|
|
180
|
-
|
|
181
|
-
- React may render a projection of this state, not own the authoritative password flow
|
|
182
|
-
- starting a new source load aborts the in-flight import job and clears transient secrets
|
|
183
|
-
- failure and cancel paths clear transient decrypted buffers and password references
|
|
184
|
-
|
|
185
|
-
## Security And Cleanup Contract
|
|
186
|
-
|
|
187
|
-
- Passwords must not be stored in canonical state, persisted snapshots, local storage, or logs.
|
|
188
|
-
- Passwords must not be emitted through telemetry, `EditorError.details`, or exported diagnostics.
|
|
189
|
-
- Decrypted buffers are transient and should be actively cleared when practical after import or failure.
|
|
190
|
-
- Progress and failure reporting must stay secret-free.
|
|
191
|
-
- Wave 8 must prove that encrypted bytes do not reach the normal OOXML importer.
|
|
192
|
-
|
|
193
|
-
## Export Contract For Decrypted Sessions
|
|
194
|
-
|
|
195
|
-
Wave 8 freezes this v1 behavior:
|
|
196
|
-
|
|
197
|
-
- documents opened through decrypt export as normal unencrypted `.docx`
|
|
198
|
-
- the first export per session must warn explicitly that the output will not be encrypted
|
|
199
|
-
- cancelling the warning must cancel export
|
|
200
|
-
- automatic re-encryption is not part of v1
|
|
201
|
-
|
|
202
|
-
If a future host post-process hook is added, it must be explicit and documented as a host-side responsibility rather than editor-owned encryption.
|
|
203
|
-
|
|
204
|
-
## Error Contract
|
|
205
|
-
|
|
206
|
-
The encrypted-intake slice adds or clarifies these error codes:
|
|
207
|
-
|
|
208
|
-
- `password_required`
|
|
209
|
-
- `wrong_password`
|
|
210
|
-
- `unsupported_encryption`
|
|
211
|
-
- `malformed_encrypted_container`
|
|
212
|
-
- `decrypt_engine_failure`
|
|
213
|
-
- `invalid_decrypted_payload`
|
|
214
|
-
- `unsupported_file_type`
|
|
215
|
-
- `invalid_container`
|
|
216
|
-
- `file_too_large`
|
|
217
|
-
- `cancelled`
|
|
218
|
-
|
|
219
|
-
Rules:
|
|
220
|
-
|
|
221
|
-
- wrong password is retryable
|
|
222
|
-
- unsupported encryption is fatal
|
|
223
|
-
- malformed encrypted container is fatal
|
|
224
|
-
- decrypted bytes that are not valid OPC fail before canonical import
|
|
225
|
-
|
|
226
|
-
## Fixture Program
|
|
227
|
-
|
|
228
|
-
Encrypted intake uses a separate durable corpus under `test/fixtures/encrypted-docx/`.
|
|
229
|
-
|
|
230
|
-
Frozen fixture IDs:
|
|
231
|
-
|
|
232
|
-
- `E01` Agile encrypted basic contract
|
|
233
|
-
- `E02` Standard encrypted basic contract
|
|
234
|
-
- `E03` Wrong-password retry contract
|
|
235
|
-
- `E04` Unsupported legacy encryption
|
|
236
|
-
- `E05` Malformed encrypted container
|
|
237
|
-
- `E06` Encrypted comments-and-redlines contract
|
|
238
|
-
- `E07` Encrypted preserve-only package contract
|
|
239
|
-
- `E08` Source-size and decrypt-limit stress contract
|
|
240
|
-
|
|
241
|
-
This corpus supplements `F01` through `F21`; it does not renumber them.
|
|
242
|
-
|
|
243
|
-
## Proof Program By Wave
|
|
244
|
-
|
|
245
|
-
### Wave 8
|
|
246
|
-
|
|
247
|
-
- baseline-prove local encrypted intake
|
|
248
|
-
- prove sniff -> decrypt -> import routing on `E01` through `E08`
|
|
249
|
-
- prove the export warning for decrypted sessions
|
|
250
|
-
- prove cleanup, redaction, and wrong-password retry handling
|
|
251
|
-
|
|
252
|
-
### Wave 9
|
|
253
|
-
|
|
254
|
-
- keep the harness baseline honest about encrypted uploads and secret handling
|
|
255
|
-
- do not overclaim pilot-live encrypted editor behavior yet
|
|
256
|
-
|
|
257
|
-
### Wave 10
|
|
258
|
-
|
|
259
|
-
- pilot the encrypted editor loop on Railway with selected encrypted fixtures
|
|
260
|
-
- capture live artifacts for at least one Agile and one Standard encrypted fixture
|
|
261
|
-
|
|
262
|
-
### Wave 11
|
|
263
|
-
|
|
264
|
-
- include encrypted fixtures in the final QA bundle
|
|
265
|
-
- capture final Word reopen notes for exported decrypted sessions
|
|
266
|
-
|
|
267
|
-
## Interface Impacts
|
|
268
|
-
|
|
269
|
-
| Surface | Owner | Contract impact |
|
|
270
|
-
| --- | --- | --- |
|
|
271
|
-
| `docs/reference/public-api.md` | A9 | Keep encrypted intake on the existing component load surface; do not introduce a standalone import API in v1. |
|
|
272
|
-
| `docs/reference/ooxml-compliance.md` | A9 | Clarify that encrypted files are an intake mode, not an OOXML feature-class row. |
|
|
273
|
-
| `test/fixtures/encrypted-docx/README.md` | A5 | Freeze the encrypted-fixture registry and wave ownership. |
|
|
274
|
-
| `docs/plans/component-cutover-matrix.*` | A9 | Track the new encrypted-intake component separately from normal OOXML feature breadth. |
|
|
275
|
-
|
|
276
|
-
## Frozen Non-Goals
|
|
277
|
-
|
|
278
|
-
- re-encrypt-on-export in v1
|
|
279
|
-
- IRM or enterprise key-management integration
|
|
280
|
-
- background decrypt via Web Workers
|
|
281
|
-
- partial open without full decrypt
|
|
282
|
-
- bypassing document-protection policy markup
|
|
@@ -1,308 +0,0 @@
|
|
|
1
|
-
# Deferred Wave - Legal Fidelity Expansion
|
|
2
|
-
|
|
3
|
-
Historical note: this packet was later promoted into [docs/plans/waves/wave-12.md](/home/coder/docx-react-component/docs/plans/waves/wave-12.md). Keep this file as the precursor rationale and gap inventory; the authored Wave 12 doc is now the active plan.
|
|
4
|
-
|
|
5
|
-
**Commit message**: `Build: add post-v1 legal fidelity expansion packet`
|
|
6
|
-
|
|
7
|
-
## Component promotions
|
|
8
|
-
|
|
9
|
-
- canonical-document-model: baseline-proved
|
|
10
|
-
- command-and-transaction-runtime: baseline-proved
|
|
11
|
-
- comments-and-anchor-mapping: baseline-proved
|
|
12
|
-
- tracked-changes-and-review-actions: baseline-proved
|
|
13
|
-
- docx-import-and-normalization: baseline-proved
|
|
14
|
-
- docx-export-and-serialization: baseline-proved
|
|
15
|
-
- unsupported-ooxml-preservation: baseline-proved
|
|
16
|
-
- compatibility-and-word-validation: baseline-proved
|
|
17
|
-
- react-editor-ui: baseline-proved
|
|
18
|
-
|
|
19
|
-
## Scope note
|
|
20
|
-
|
|
21
|
-
This packet is not part of the active numbered wave sequence. It is the historical pre-promotion packet that fed the authored Wave 12 plan.
|
|
22
|
-
|
|
23
|
-
It preserves a post-v1 architecture expansion driven by legal-review feedback and
|
|
24
|
-
should only be promoted after Wave 11 closes and the current v1 surface is stable.
|
|
25
|
-
|
|
26
|
-
This packet owns:
|
|
27
|
-
|
|
28
|
-
- first-class canonical table nodes
|
|
29
|
-
- table-aware selection and command routing
|
|
30
|
-
- table-aware comment and revision mapping for the supported slice
|
|
31
|
-
- curated approximate web-font rendering for browser readability
|
|
32
|
-
- explicit font-substitution diagnostics
|
|
33
|
-
- proof expansion for table semantics and browser-font approximation
|
|
34
|
-
|
|
35
|
-
This packet does not own:
|
|
36
|
-
|
|
37
|
-
- exact Word pagination parity
|
|
38
|
-
- exact native-font parity with Word on user machines
|
|
39
|
-
- full structural tracked revisions for rows, columns, merges, or splits
|
|
40
|
-
- full Word style-definition editing
|
|
41
|
-
- editable headers, footers, notes, fields, or section layout as part of the same wave
|
|
42
|
-
- OLE, macros, or advanced Word automation
|
|
43
|
-
|
|
44
|
-
## Why This Must Not Fold Into Waves 8 Through 11
|
|
45
|
-
|
|
46
|
-
Waves 8 through 11 are already proof-first closure waves for the declared v1
|
|
47
|
-
surface:
|
|
48
|
-
|
|
49
|
-
- Wave 8: harness and validator baseline
|
|
50
|
-
- Wave 9: pilot-live editor loop
|
|
51
|
-
- Wave 10: QA certification
|
|
52
|
-
- Wave 11: fleet-ready package and demo story
|
|
53
|
-
|
|
54
|
-
Folding this packet into those waves would:
|
|
55
|
-
|
|
56
|
-
- widen the certified support boundary mid-closure
|
|
57
|
-
- mix new architecture work into proof and release waves
|
|
58
|
-
- weaken the honesty of current `baseline-proved`, `qa-proved`, and `fleet-ready`
|
|
59
|
-
claims
|
|
60
|
-
- force docs and proof bundles to overclaim support that the current runtime does
|
|
61
|
-
not yet own
|
|
62
|
-
|
|
63
|
-
This expansion was later promoted as `wave-12` after the v1 closure line was separated from the post-v1 legal-fidelity scope.
|
|
64
|
-
|
|
65
|
-
## Governing Inputs
|
|
66
|
-
|
|
67
|
-
- `README.md`
|
|
68
|
-
- `docs/legal-feedback-architecture.md`
|
|
69
|
-
- `docs/reference/public-api.md`
|
|
70
|
-
- `docs/reference/ooxml-compliance.md`
|
|
71
|
-
- `docs/plans/master-plan.md`
|
|
72
|
-
- `docs/plans/current-state.md`
|
|
73
|
-
- `docs/plans/waves/README.md`
|
|
74
|
-
- `src/model/canonical-document.ts`
|
|
75
|
-
- `src/io/ooxml/parse-main-document.ts`
|
|
76
|
-
- `src/runtime/surface-projection.ts`
|
|
77
|
-
- `src/api/public-types.ts`
|
|
78
|
-
|
|
79
|
-
## Entry criteria
|
|
80
|
-
|
|
81
|
-
- Wave 11 closure is complete or explicitly frozen enough that the active v1
|
|
82
|
-
support boundary will not change during this packet.
|
|
83
|
-
- README, public API docs, compliance docs, and current-state notes all align on
|
|
84
|
-
the existing v1 claims.
|
|
85
|
-
- The repo still treats exact pagination and native Word rendering parity as
|
|
86
|
-
non-goals.
|
|
87
|
-
- There is explicit agreement that table architecture and browser-font
|
|
88
|
-
approximation are post-v1 expansion work rather than quiet v1 widening.
|
|
89
|
-
|
|
90
|
-
## Promotion target
|
|
91
|
-
|
|
92
|
-
If promoted into the numbered sequence, this packet should target:
|
|
93
|
-
|
|
94
|
-
- `repo-landed` for new canonical and runtime surfaces
|
|
95
|
-
- `baseline-proved` for table import or export or UI or validator proof on the
|
|
96
|
-
supported slice
|
|
97
|
-
|
|
98
|
-
It should not target `pilot-live`, `qa-proved`, or `fleet-ready` in the same
|
|
99
|
-
wave. Those belong to later proof and release waves after the new support slice
|
|
100
|
-
is landed and bounded.
|
|
101
|
-
|
|
102
|
-
## Promotion conditions
|
|
103
|
-
|
|
104
|
-
- canonical content has first-class typed table nodes rather than treating all
|
|
105
|
-
body-level `w:tbl` content as opaque blocks
|
|
106
|
-
- runtime selection and command flows support in-cell editing on the supported
|
|
107
|
-
slice
|
|
108
|
-
- table import and export remain package-safe and preserve unsupported table
|
|
109
|
-
descendants honestly
|
|
110
|
-
- browser typography uses curated approximation rather than false Word parity
|
|
111
|
-
- font substitution is surfaced through explicit runtime warnings
|
|
112
|
-
- mounted-shell proof exists for the new supported table slice
|
|
113
|
-
- validator and Word reopen evidence remain explicit and bounded
|
|
114
|
-
|
|
115
|
-
## Context7 defaults
|
|
116
|
-
|
|
117
|
-
- bundle: word-editor-runtime
|
|
118
|
-
- query: "first-class table schema, table-aware selection and mapping, curated browser-font approximation, and legal-review-safe proof expansion"
|
|
119
|
-
|
|
120
|
-
## Deliverables By Subsystem
|
|
121
|
-
|
|
122
|
-
### `src/model`
|
|
123
|
-
|
|
124
|
-
Own:
|
|
125
|
-
|
|
126
|
-
- typed canonical table nodes
|
|
127
|
-
- stable table, row, and cell identity
|
|
128
|
-
- supported cell content ownership
|
|
129
|
-
- preserved unsupported table property attachments
|
|
130
|
-
|
|
131
|
-
Expected deliverables:
|
|
132
|
-
|
|
133
|
-
- canonical table subtree definitions
|
|
134
|
-
- updated document validation rules
|
|
135
|
-
- snapshot compatibility for table-bearing documents
|
|
136
|
-
|
|
137
|
-
### `src/core`
|
|
138
|
-
|
|
139
|
-
Own:
|
|
140
|
-
|
|
141
|
-
- table-aware selection primitives
|
|
142
|
-
- cell-local text routing
|
|
143
|
-
- table structural commands
|
|
144
|
-
- anchor remapping rules for comments and revisions within supported table edits
|
|
145
|
-
|
|
146
|
-
Expected deliverables:
|
|
147
|
-
|
|
148
|
-
- selection model extensions
|
|
149
|
-
- table command handlers
|
|
150
|
-
- transaction safety around structural edits
|
|
151
|
-
|
|
152
|
-
### `src/io`
|
|
153
|
-
|
|
154
|
-
Own:
|
|
155
|
-
|
|
156
|
-
- `w:tbl` import into typed canonical content
|
|
157
|
-
- supported table export back to `w:tbl`
|
|
158
|
-
- preserved unsupported descendants and properties
|
|
159
|
-
- source-backed font intent retention where possible
|
|
160
|
-
|
|
161
|
-
Expected deliverables:
|
|
162
|
-
|
|
163
|
-
- main-document importer integration for typed tables
|
|
164
|
-
- table serializer integration on the main export path
|
|
165
|
-
- explicit browser-font approximation notes that do not change OOXML export
|
|
166
|
-
guarantees silently
|
|
167
|
-
|
|
168
|
-
### `src/runtime`
|
|
169
|
-
|
|
170
|
-
Own:
|
|
171
|
-
|
|
172
|
-
- runtime snapshots for typed table blocks
|
|
173
|
-
- table-aware selection state
|
|
174
|
-
- comment and revision projection for cell-local supported edits
|
|
175
|
-
- warning emission for font substitution or degraded browser typography states
|
|
176
|
-
|
|
177
|
-
Expected deliverables:
|
|
178
|
-
|
|
179
|
-
- runtime projection additions for tables
|
|
180
|
-
- warning plumbing for `font_substitution`
|
|
181
|
-
- export posture rules that keep browser approximation non-destructive
|
|
182
|
-
|
|
183
|
-
### `src/ui`
|
|
184
|
-
|
|
185
|
-
Own:
|
|
186
|
-
|
|
187
|
-
- runtime-backed table surface rendering
|
|
188
|
-
- cell focus and selection affordances
|
|
189
|
-
- comment and revision cues inside cells
|
|
190
|
-
- curated browser typography application and substitution messaging
|
|
191
|
-
|
|
192
|
-
Expected deliverables:
|
|
193
|
-
|
|
194
|
-
- mounted table surface in the shipped `WordReviewEditor` path
|
|
195
|
-
- explicit preserve-only or degraded badges for unsupported table behaviors
|
|
196
|
-
- calm substitution and compatibility cues for approximate font rendering
|
|
197
|
-
|
|
198
|
-
### `services/react-word-editor`
|
|
199
|
-
|
|
200
|
-
Own:
|
|
201
|
-
|
|
202
|
-
- prototype and harness convergence toward the real table and font posture
|
|
203
|
-
- sample sessions that demonstrate supported tables and font approximation honestly
|
|
204
|
-
|
|
205
|
-
Expected deliverables:
|
|
206
|
-
|
|
207
|
-
- updated internal demo sessions
|
|
208
|
-
- non-production messaging that remains explicit
|
|
209
|
-
- no prototype-only behavior that overclaims runtime support
|
|
210
|
-
|
|
211
|
-
## Required Fixture Additions
|
|
212
|
-
|
|
213
|
-
The existing `F01` through `F21` corpus remains frozen as the v1 minimum.
|
|
214
|
-
|
|
215
|
-
If this packet is promoted, add a later-wave extension corpus or clearly named
|
|
216
|
-
new fixtures rather than rewriting the meaning of the existing minimum corpus.
|
|
217
|
-
|
|
218
|
-
Recommended additions:
|
|
219
|
-
|
|
220
|
-
- table fixture for typed import and in-cell edit proof
|
|
221
|
-
- merged-cell fixture that survives supported edits without opaque fallback
|
|
222
|
-
- table-comments fixture with cell-anchored comment proof
|
|
223
|
-
- table-redline fixture for supported in-cell insert and delete behavior
|
|
224
|
-
- mixed-font fixture with representative legal-document font variation
|
|
225
|
-
- missing-font substitution fixture for browser approximation warning proof
|
|
226
|
-
|
|
227
|
-
Scenario additions:
|
|
228
|
-
|
|
229
|
-
- table-heavy scenario artifact with realistic legal schedules
|
|
230
|
-
- typography-variant scenario artifact where browser approximation is visible but
|
|
231
|
-
Word reopen remains intact
|
|
232
|
-
|
|
233
|
-
## Required Proof Artifacts
|
|
234
|
-
|
|
235
|
-
If this packet is promoted, closure should require durable artifacts under a new
|
|
236
|
-
wave-specific directory such as `.tmp/wave-12-legal-fidelity/`.
|
|
237
|
-
|
|
238
|
-
Minimum proof artifacts:
|
|
239
|
-
|
|
240
|
-
- `table-runtime-roundtrip-report.json`
|
|
241
|
-
- `table-session-edit-report.json`
|
|
242
|
-
- `table-ui-interaction-report.json`
|
|
243
|
-
- `table-compatibility-report.json`
|
|
244
|
-
- `font-substitution-report.json`
|
|
245
|
-
- `font-package-preservation-report.json`
|
|
246
|
-
- `word-reopen-notes.md`
|
|
247
|
-
|
|
248
|
-
## Required Test Expansion
|
|
249
|
-
|
|
250
|
-
The proof program should extend existing repo conventions rather than inventing a
|
|
251
|
-
new style.
|
|
252
|
-
|
|
253
|
-
Required layers:
|
|
254
|
-
|
|
255
|
-
- synthetic XML tests for narrow table and font semantics
|
|
256
|
-
- package-backed session tests for real fixture truth
|
|
257
|
-
- mounted `WordReviewEditor` interaction tests
|
|
258
|
-
- compatibility taxonomy tests
|
|
259
|
-
- wave review docs with fixture-by-fixture evidence
|
|
260
|
-
|
|
261
|
-
Concrete gaps this packet must close:
|
|
262
|
-
|
|
263
|
-
- no first-class table nodes in canonical content today
|
|
264
|
-
- main-document import currently downgrades non-paragraph body children to
|
|
265
|
-
`opaque_block`
|
|
266
|
-
- table prototype support is `_prototypeOnly` today
|
|
267
|
-
- `font_substitution` exists as a warning type but is not yet an active proved
|
|
268
|
-
runtime behavior
|
|
269
|
-
|
|
270
|
-
## Shared-Doc Sync Required If Promoted
|
|
271
|
-
|
|
272
|
-
If this packet is accepted into a numbered wave, the promoting change must also
|
|
273
|
-
sync the shared planning and reference set:
|
|
274
|
-
|
|
275
|
-
- `docs/plans/master-plan.md`
|
|
276
|
-
- `docs/plans/current-state.md`
|
|
277
|
-
- `docs/roadmap.md`
|
|
278
|
-
- `docs/plans/component-cutover-matrix.md`
|
|
279
|
-
- `docs/plans/component-cutover-matrix.json`
|
|
280
|
-
- `docs/reference/public-api.md` if runtime or host contracts change
|
|
281
|
-
- `docs/reference/ooxml-compliance.md`
|
|
282
|
-
- fixture registry docs under `test/fixtures/`
|
|
283
|
-
|
|
284
|
-
The promotion must keep bounded claims bounded. No doc may imply native Word
|
|
285
|
-
visual parity or support for broader OOXML surfaces unless proof exists.
|
|
286
|
-
|
|
287
|
-
## Frozen Non-Goals
|
|
288
|
-
|
|
289
|
-
- exact Word pagination and page-break parity
|
|
290
|
-
- exact native-font rendering parity in browser environments
|
|
291
|
-
- unrestricted Word-style font pickers
|
|
292
|
-
- tracked structural revisions for rows, columns, merge, and split in the first
|
|
293
|
-
expansion slice
|
|
294
|
-
- broadening preserve-only package parts into editable surfaces by convenience
|
|
295
|
-
- OLE, macros, advanced automation, or enterprise Word edge cases
|
|
296
|
-
|
|
297
|
-
## Bottom Line
|
|
298
|
-
|
|
299
|
-
This packet is a good post-v1 expansion because it deepens legal-review
|
|
300
|
-
credibility in places the product actually needs:
|
|
301
|
-
|
|
302
|
-
- tables as meaningful legal objects
|
|
303
|
-
- browser typography that is more legible and predictable
|
|
304
|
-
- trust cues around approximation rather than false parity
|
|
305
|
-
|
|
306
|
-
It should remain deferred until the active Wave 8 through Wave 11 closure path is
|
|
307
|
-
finished, then promoted as a new bounded architecture wave rather than smuggled
|
|
308
|
-
into the current certification sequence.
|