Skip to content

Commit fcd536e

Browse files
author
DavidQ
committed
Force Workspace V2 export to workspace schema and block cross-tool session diffs - PR_11_278
1 parent bdc26e2 commit fcd536e

7 files changed

Lines changed: 478 additions & 197 deletions
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# PR_11_278 Workspace V2 workspace.schema Export Enforcement + Same-Tool Diff Guard Report
2+
3+
## Scope
4+
Workspace V2 export/import validation and Session Diff Viewer same-tool guard only.
5+
6+
## Files Changed
7+
- tools/workspace-v2/index.html
8+
- tools/workspace-v2/index.js
9+
- tools/schemas/workspace.schema.json
10+
- tests/runtime/V2CurrentSessionExport.test.mjs
11+
- docs/pr/PLAN_PR_11_278_WORKSPACE_V2_WORKSPACE_SCHEMA_EXPORT_ENFORCEMENT_AND_SAME_TOOL_DIFF_GUARD.md
12+
- docs/pr/BUILD_PR_11_278_WORKSPACE_V2_WORKSPACE_SCHEMA_EXPORT_ENFORCEMENT_AND_SAME_TOOL_DIFF_GUARD.md
13+
- docs/dev/reports/PR_11_278_workspace_schema_export_enforcement_and_same_tool_diff_guard_report.md
14+
15+
## Implementation Summary
16+
- Workspace V2 export now emits workspace schema root shape (`documentKind`, `schema`, `version`, `games`) and no custom wrapper.
17+
- Workspace V2 import/export validator now enforces workspace schema contract and rejects wrapper payloads.
18+
- Export/import contract explicitly blocks:
19+
- `workspaceV2Session`
20+
- `toolSessions`
21+
- `savedSessions`
22+
- `exportedAt`
23+
- Added the smallest workspace schema support needed for Workspace V2 session persistence by adding `games[].session`.
24+
- Diff Viewer now enforces same-tool comparisons only.
25+
- Cross-tool selections disable diff and show exact message:
26+
`Diff requires sessions from the same tool.`
27+
28+
## Validation Commands Run
29+
1. `node --check tools/workspace-v2/index.js`
30+
- PASS
31+
2. `node --check tests/runtime/V2CurrentSessionExport.test.mjs`
32+
- PASS
33+
3. `node tests/runtime/V2CurrentSessionExport.test.mjs`
34+
- PASS
35+
- Results: `tmp/v2-current-session-export-results.json`
36+
4. `node tests/runtime/V2SessionMerge.test.mjs`
37+
- PASS
38+
- Results: `tmp/v2-session-merge-results.json`
39+
40+
## Behavior Evidence
41+
- Export root shape now follows `tools/schemas/workspace.schema.json` and no longer includes `workspaceV2Session/toolSessions/savedSessions` wrappers.
42+
- Import rejects non-workspace.schema payloads with actionable error text referencing schema contract.
43+
- Cross-tool diff is blocked before compute and uses required message text.
44+
- Same-tool diff flow remains enabled.
45+
46+
## Full Samples Smoke Decision
47+
- Skipped full samples smoke test.
48+
- Reason: changes are limited to Workspace V2 export/import contract enforcement and diff guard logic; targeted runtime checks cover changed behavior.
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# BUILD_PR_11_278_WORKSPACE_V2_WORKSPACE_SCHEMA_EXPORT_ENFORCEMENT_AND_SAME_TOOL_DIFF_GUARD
2+
3+
## Purpose
4+
Implement workspace.schema-based Workspace V2 export/import enforcement and same-tool-only diff guard.
5+
6+
## Files
7+
- tools/workspace-v2/index.html
8+
- tools/workspace-v2/index.js
9+
- tools/schemas/workspace.schema.json
10+
- tests/runtime/V2CurrentSessionExport.test.mjs
11+
- docs/dev/reports/PR_11_278_workspace_schema_export_enforcement_and_same_tool_diff_guard_report.md
12+
13+
## Implementation
14+
1. Replace Workspace V2 export document builder to emit workspace schema root shape:
15+
- `documentKind`, `schema`, `version`, `games`
16+
2. Remove custom wrapper contract from Workspace V2 export/import:
17+
- no `workspaceV2Session`
18+
- no `toolSessions`
19+
- no `savedSessions`
20+
- no `exportedAt`
21+
3. Add minimal workspace schema support for Workspace V2 session payload carriage inside `games[].session` (no broad schema rewrite).
22+
4. Validate workspace export/import payloads against workspace schema rules in Workspace V2 runtime validator before export download/import apply.
23+
5. Reject wrapper/non-schema payloads with actionable error text naming `tools/schemas/workspace.schema.json`.
24+
6. Add same-tool diff guard:
25+
- disable `Compute Diff` when `Session A toolId !== Session B toolId`
26+
- show exact message: `Diff requires sessions from the same tool.`
27+
7. Keep tool/workspace separation unchanged (Workspace V2 workspace controls only; tool pages no workspace controls).
28+
29+
## Acceptance
30+
- Workspace V2 export root validates as workspace schema document shape.
31+
- Export/import rejects wrapper payloads and non-schema payloads.
32+
- Diff cannot run across different tool IDs and shows required message.
33+
- Same-tool diff behavior remains unchanged.
34+
35+
## Validation
36+
- `node --check tools/workspace-v2/index.js`
37+
- `node --check tests/runtime/V2CurrentSessionExport.test.mjs`
38+
- `node tests/runtime/V2CurrentSessionExport.test.mjs`
39+
- `node tests/runtime/V2SessionMerge.test.mjs`
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# PLAN_PR_11_278_WORKSPACE_V2_WORKSPACE_SCHEMA_EXPORT_ENFORCEMENT_AND_SAME_TOOL_DIFF_GUARD
2+
3+
## Purpose
4+
Enforce Workspace V2 workspace export/import against `tools/schemas/workspace.schema.json` and block cross-tool session diff comparisons.
5+
6+
## Scope
7+
- tools/workspace-v2/index.html
8+
- tools/workspace-v2/index.js
9+
- tools/schemas/workspace.schema.json (smallest required addition only)
10+
- tests/runtime/V2CurrentSessionExport.test.mjs
11+
- docs/dev/reports/PR_11_278_workspace_schema_export_enforcement_and_same_tool_diff_guard_report.md
12+
13+
## Goals
14+
- Workspace V2 export/import validates and uses `workspace.schema.json` shape.
15+
- Export removes `workspaceV2Session`, `toolSessions`, `savedSessions`, and `exportedAt` wrappers.
16+
- Import rejects payloads that do not match workspace schema contract.
17+
- Diff Viewer disables cross-tool comparisons and shows exact message:
18+
- `Diff requires sessions from the same tool.`
19+
- No nav mode overlap introduced.
20+
21+
## Out Of Scope
22+
- No tool schema changes.
23+
- No unrelated Workspace V2 features.
24+
- No cross-tool implementation edits.
25+
26+
## Validation
27+
- `node --check tools/workspace-v2/index.js`
28+
- `node --check tests/runtime/V2CurrentSessionExport.test.mjs`
29+
- `node tests/runtime/V2CurrentSessionExport.test.mjs`
30+
- `node tests/runtime/V2SessionMerge.test.mjs`

0 commit comments

Comments
 (0)