You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit a9c4a7a
Browse filesBrowse the repository at this point in the historyBrowse files
- Clarified the `game.manifest.json` boundary in `tools/schemas/game.manifest.schema.json`.
5
+
-`game.gameData` is the runtime contract.
6
+
-`game.workspace` is the editor/tool contract.
7
+
- Runtime must ignore `game.workspace`.
8
+
- Tools may read `game.gameData`.
9
+
- Tools may write `game.workspace`.
10
+
- Tools may update `game.gameData` only through explicit validated apply/build/export actions.
11
+
12
+
## Validation Alignment
13
+
- Workspace Manager V2 Active Game discovery still validates discovered `game.manifest.json` files with the dedicated game manifest schema.
14
+
-`game.gameData.workspace` is rejected with an actionable validation reason because runtime data must not depend on editor/tool workspace state.
15
+
-`game.gameData.tools` is rejected because editor/tool state belongs in `game.workspace`.
16
+
- The existing Workspace Manager V2 launch/session payload remains workspace-shaped and is derived from `game.workspace`; session/toolState behavior was not changed.
17
+
- Workspace Manager V2 now reports the boundary contract in the status log when a valid game manifest is selected or imported.
18
+
19
+
## Scope Notes
20
+
- No separate `workspace.manifest.json` was introduced.
21
+
- No sample JSON was modified.
22
+
- No roadmap content was modified.
23
+
- No cross-tool communication was added.
24
+
- Full samples smoke test was skipped because this BUILD explicitly requested targeted Workspace Manager V2 validation and to skip full samples smoke.
- PASS: JSON parse for `tools/schemas/game.manifest.schema.json`, `games/Asteroids/game.manifest.json`, `games/GravityWell/game.manifest.json`, and `games/Pong/game.manifest.json`
- Verified Workspace Manager V2 still launches from the tools index.
11
+
- Verified Active Game starts empty and disabled before repo selection.
12
+
- Verified Active Game still discovers schema-valid `game.manifest.json` files.
13
+
- Verified `game.manifest.json` remains the only required game project manifest for Active Game discovery.
14
+
- Verified `game.gameData` is present as the runtime lane.
15
+
- Verified `game.workspace` is present as the editor/tool lane and remains nested under the game manifest.
16
+
- Verified root game manifests do not expose root `documentKind` or root `tools` as runtime-required data.
17
+
- Verified `game.gameData.workspace` is rejected with an actionable boundary validation message.
18
+
- Verified the nested `game.workspace` payload still validates as the existing Workspace Manager V2 launch/session context.
19
+
- Verified Workspace Manager V2 status reporting includes the boundary contract when a game manifest is selected or imported.
20
+
21
+
## Skipped
22
+
- Full samples smoke test was skipped as requested. The targeted Workspace Manager V2 Playwright suite covers the changed schema boundary, Active Game discovery, invalid-manifest logging, and affected launch/session paths.
"description": "Schema for games/**/game.manifest.json as the single source of truth. Runtime game data lives in game.gameData; editor and workspace state lives in game.workspace.",
5
+
"description": "Schema for games/**/game.manifest.json as the single source of truth. game.gameData is the runtime contract. game.workspace is the editor/tool contract. Runtime code must ignore game.workspace. Tools may read game.gameData, may write game.workspace, and may update game.gameData only through explicit validated apply/build/export actions.",
6
6
"type": "object",
7
7
"required": ["schema", "version", "game"],
8
8
"additionalProperties": false,
@@ -38,9 +38,11 @@
38
38
"pattern": "^[^/\\\\]+$"
39
39
},
40
40
"gameData": {
41
+
"description": "Runtime contract for data the game needs to run. Editor/tool workspace state must not be required from this object.",
41
42
"$ref": "#/$defs/gameData"
42
43
},
43
44
"workspace": {
45
+
"description": "Editor/tool contract for workspace state needed to edit and build the game. Runtime code must ignore this object.",
44
46
"$ref": "#/$defs/gameWorkspace"
45
47
}
46
48
}
@@ -49,8 +51,21 @@
49
51
"$defs": {
50
52
"gameData": {
51
53
"type": "object",
54
+
"description": "Runtime-only game data. Tools may read this object; writes are limited to explicit validated apply/build/export actions.",
52
55
"required": ["launch"],
53
56
"additionalProperties": true,
57
+
"allOf": [
58
+
{
59
+
"not": {
60
+
"required": ["workspace"]
61
+
}
62
+
},
63
+
{
64
+
"not": {
65
+
"required": ["tools"]
66
+
}
67
+
}
68
+
],
54
69
"properties": {
55
70
"launch": {
56
71
"type": "object",
@@ -74,6 +89,7 @@
74
89
},
75
90
"gameWorkspace": {
76
91
"type": "object",
92
+
"description": "Editor/tool workspace state. Tools may write this object; runtime data belongs in game.gameData.",
this.statusLog.ok(`Loaded ${result.game.name} from ${result.game.manifestPath} with ${result.paletteSwatches.length} active palette colors and ${result.assetCount} managed assets.`);
154
157
this.statusLog.ok("Asset Manager V2 production launch context is session/state based only.");
155
158
}
@@ -292,6 +295,9 @@ export class WorkspaceManagerV2App {
Copy file name to clipboardExpand all lines: tools/workspace-manager-v2/js/services/WorkspaceManagerV2ContextService.js
+14Lines changed: 14 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -104,6 +104,10 @@ function isGameManifest(value) {
104
104
&&isPlainObject(value.game.workspace);
105
105
}
106
106
107
+
functiongameManifestBoundaryContractMessage(){
108
+
return"Boundary contract: game.gameData is runtime data; game.workspace is editor/tool state. Runtime ignores game.workspace; tools may read game.gameData, write game.workspace, and update game.gameData only through explicit validated apply/build/export actions.";
0 commit comments