Skip to content

Commit 7f34887

Browse files
author
DavidQ
committed
Create asset-only Asset Manager V2 with Workspace V2 schema insertion - PR_26126_082-asset-manager-v2-template-validation
1 parent 172b224 commit 7f34887

34 files changed

Lines changed: 2432 additions & 17 deletions
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# PR_26126_082 Asset Manager V2 Manual Validation Notes
2+
3+
## Requested Validation
4+
5+
Command:
6+
7+
```text
8+
npm run test:workspace-v2
9+
```
10+
11+
Result: PASS, 10 Playwright tests passed.
12+
13+
## Covered Behaviors
14+
15+
- Tool mode launch: `tools/asset-manager-v2/index.html` loads with Asset Manager V2 title, tool nav visible, workspace nav hidden, and visible status/log output.
16+
- Asset-only controls: only Image, Audio, and Font controls are present; SVG, data, and other kind controls are absent.
17+
- Approved asset add: adding `image.arcade.ship` succeeds, updates the approved asset list, updates Output Summary, and writes an `OK Added ...` status line.
18+
- Schema rejection: a payload containing `svg.arcade.logo` with `kind: "svg"` is rejected and writes a visible `FAIL Schema validation failed` status line.
19+
- Workspace mode launch: `tools/workspace-v2/index.html` launches Asset Manager V2 with `launch=workspace`, `fromTool=workspace-v2`, and `hostContextId`.
20+
- Workspace insertion: adding `audio.arcade.fire` and using Insert Assets writes only to `workspaceManifest.tools["asset-browser"].assets`.
21+
- Mutation scope: Workspace insertion does not create `tools["asset-manager-v2"]`, `tools["workspace-v2"]`, or any tool-wide discovery payload.
22+
- Tools index: Asset Manager V2 renders as a first-class active tool from the registry.
23+
- Sample JSON: no sample JSON files were modified.
24+
25+
## Coverage
26+
27+
The final Playwright/V8 report is `docs/dev/reports/playwright_v8_coverage_report.txt`.
28+
29+
Changed runtime JS coverage has no advisory low-coverage warnings in `docs/dev/reports/coverage_changed_js_guardrail.txt`.
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# PR_26126_082 Asset Manager V2 Schema Validation Notes
2+
3+
## Schema Changes
4+
5+
- `tools/schemas/tools/asset-browser.schema.json` now limits asset ids and `kind` values to `image`, `audio`, and `font`.
6+
- `svg`, `data`, and `other` asset ids/kinds are rejected by the schema patterns and enum.
7+
- `asset-manager-v2` is an allowed asset entry `source` so Asset Manager V2 can create entries without reusing the legacy Asset Browser source value.
8+
- `stretchOverride` remains restricted to `image.*.bezel` entries.
9+
10+
## Direct Schema Check
11+
12+
Command:
13+
14+
```text
15+
node -e equivalent inline schema check
16+
```
17+
18+
Result: PASS
19+
20+
Observed summary:
21+
22+
```json
23+
{
24+
"kindEnum": ["image", "audio", "font"],
25+
"validIdsAccepted": true,
26+
"invalidIdsRejected": true,
27+
"assetManagerSourceAllowed": true
28+
}
29+
```
30+
31+
## Tool Schema Inventory
32+
33+
Command:
34+
35+
```text
36+
node scripts/validate-json-contracts.mjs --mode=tools --reportDir docs/dev/reports/PR_26126_082_schema_validation
37+
```
38+
39+
Result: completed with exit code 0 and wrote:
40+
41+
- `docs/dev/reports/PR_26126_082_schema_validation/schema_strictness_inventory.csv`
42+
- `docs/dev/reports/PR_26126_082_schema_validation/schema_strictness_inventory.md`
43+
- `docs/dev/reports/PR_26126_082_schema_validation/tool_payload_schema_validation.csv`
44+
- `docs/dev/reports/PR_26126_082_schema_validation/schema_usage_code_updates.md`
45+
46+
Note: the existing tool payload inventory reports payload-only schemas as missing `tool/version`; that is existing inventory behavior and not a new Asset Manager V2 runtime failure.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
filePath,status,errorCount,firstErrors
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
filePath,schemaPath,status,errorCount,firstErrors,note
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
schemaPath,jsonPointer,currentAdditionalProperties,looseReason,action
2+
tools/schemas/sample.tool-payload.schema.json,#/$defs/jsonArray/items,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
3+
tools/schemas/sample.tool-payload.schema.json,#/$defs/jsonObject/patternProperties/^.*$,pattern:^.*$,open-ended dictionary with jsonValue,narrow key pattern and value schema
4+
tools/schemas/sample.tool-payload.schema.json,#/$defs/jsonObject/patternProperties/^.*$,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
5+
tools/schemas/sample.tool-payload.schema.json,#/patternProperties/^(?!\$schema$|schema$|version$).+,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
6+
tools/schemas/tool.manifest.schema.json,#/$defs/jsonArray/items,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
7+
tools/schemas/tool.manifest.schema.json,#/$defs/jsonObject/patternProperties/^.*$,pattern:^.*$,open-ended dictionary with jsonValue,narrow key pattern and value schema
8+
tools/schemas/tool.manifest.schema.json,#/$defs/jsonObject/patternProperties/^.*$,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
9+
tools/schemas/tools/3d-asset-viewer.schema.json,#/$defs/jsonArray/items,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
10+
tools/schemas/tools/3d-asset-viewer.schema.json,#/$defs/jsonObject/patternProperties/^.*$,pattern:^.*$,open-ended dictionary with jsonValue,narrow key pattern and value schema
11+
tools/schemas/tools/3d-asset-viewer.schema.json,#/$defs/jsonObject/patternProperties/^.*$,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
12+
tools/schemas/tools/3d-asset-viewer.schema.json,#/properties/asset3d,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
13+
tools/schemas/tools/3d-camera-path-editor.schema.json,#/$defs/jsonArray/items,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
14+
tools/schemas/tools/3d-camera-path-editor.schema.json,#/$defs/jsonObject/patternProperties/^.*$,pattern:^.*$,open-ended dictionary with jsonValue,narrow key pattern and value schema
15+
tools/schemas/tools/3d-camera-path-editor.schema.json,#/$defs/jsonObject/patternProperties/^.*$,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
16+
tools/schemas/tools/3d-camera-path-editor.schema.json,#/properties/cameraPath,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
17+
tools/schemas/tools/3d-json-payload.schema.json,#/$defs/jsonArray/items,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
18+
tools/schemas/tools/3d-json-payload.schema.json,#/$defs/jsonObject/patternProperties/^.*$,pattern:^.*$,open-ended dictionary with jsonValue,narrow key pattern and value schema
19+
tools/schemas/tools/3d-json-payload.schema.json,#/$defs/jsonObject/patternProperties/^.*$,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
20+
tools/schemas/tools/3d-json-payload.schema.json,#/properties/mapPayload,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
21+
tools/schemas/tools/asset-browser.schema.json,#/$defs/jsonArray/items,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
22+
tools/schemas/tools/asset-browser.schema.json,#/$defs/jsonObject/patternProperties/^.*$,pattern:^.*$,open-ended dictionary with jsonValue,narrow key pattern and value schema
23+
tools/schemas/tools/asset-browser.schema.json,#/$defs/jsonObject/patternProperties/^.*$,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
24+
tools/schemas/tools/asset-browser.schema.json,#/properties/approvedAssets,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
25+
tools/schemas/tools/asset-browser.schema.json,#/properties/assetBrowserPreset,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
26+
tools/schemas/tools/asset-browser.schema.json,#/properties/importHubPreset,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
27+
tools/schemas/tools/asset-pipeline.schema.json,#/$defs/jsonArray/items,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
28+
tools/schemas/tools/asset-pipeline.schema.json,#/$defs/jsonObject/patternProperties/^.*$,pattern:^.*$,open-ended dictionary with jsonValue,narrow key pattern and value schema
29+
tools/schemas/tools/asset-pipeline.schema.json,#/$defs/jsonObject/patternProperties/^.*$,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
30+
tools/schemas/tools/asset-pipeline.schema.json,#/properties/pipelinePayload,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
31+
tools/schemas/tools/parallax-editor.schema.json,#/$defs/jsonArray/items,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
32+
tools/schemas/tools/parallax-editor.schema.json,#/$defs/jsonObject/patternProperties/^.*$,pattern:^.*$,open-ended dictionary with jsonValue,narrow key pattern and value schema
33+
tools/schemas/tools/parallax-editor.schema.json,#/$defs/jsonObject/patternProperties/^.*$,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
34+
tools/schemas/tools/parallax-editor.schema.json,#/properties/parallaxDocument,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
35+
tools/schemas/tools/parallax-editor.schema.json,#/properties/tilemapDocumentPath,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
36+
tools/schemas/tools/parallax-editor.schema.json,#/properties/vectorAssetSvgPath,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
37+
tools/schemas/tools/performance-profiler.schema.json,#/$defs/jsonArray/items,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
38+
tools/schemas/tools/performance-profiler.schema.json,#/$defs/jsonObject/patternProperties/^.*$,pattern:^.*$,open-ended dictionary with jsonValue,narrow key pattern and value schema
39+
tools/schemas/tools/performance-profiler.schema.json,#/$defs/jsonObject/patternProperties/^.*$,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
40+
tools/schemas/tools/performance-profiler.schema.json,#/properties/profileSettings,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
41+
tools/schemas/tools/physics-sandbox.schema.json,#/$defs/jsonArray/items,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
42+
tools/schemas/tools/physics-sandbox.schema.json,#/$defs/jsonObject/patternProperties/^.*$,pattern:^.*$,open-ended dictionary with jsonValue,narrow key pattern and value schema
43+
tools/schemas/tools/physics-sandbox.schema.json,#/$defs/jsonObject/patternProperties/^.*$,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
44+
tools/schemas/tools/physics-sandbox.schema.json,#/properties/physicsBody,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
45+
tools/schemas/tools/replay-visualizer.schema.json,#/$defs/jsonArray/items,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
46+
tools/schemas/tools/replay-visualizer.schema.json,#/$defs/jsonObject/patternProperties/^.*$,pattern:^.*$,open-ended dictionary with jsonValue,narrow key pattern and value schema
47+
tools/schemas/tools/replay-visualizer.schema.json,#/$defs/jsonObject/patternProperties/^.*$,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
48+
tools/schemas/tools/replay-visualizer.schema.json,#/properties/events,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
49+
tools/schemas/tools/skin-editor.schema.json,#/$defs/jsonArray/items,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
50+
tools/schemas/tools/skin-editor.schema.json,#/$defs/jsonObject/patternProperties/^.*$,pattern:^.*$,open-ended dictionary with jsonValue,narrow key pattern and value schema
51+
tools/schemas/tools/skin-editor.schema.json,#/$defs/jsonObject/patternProperties/^.*$,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
52+
tools/schemas/tools/skin-editor.schema.json,#/properties/skin,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
53+
tools/schemas/tools/sprite-editor.schema.json,#/$defs/jsonArray/items,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
54+
tools/schemas/tools/sprite-editor.schema.json,#/$defs/jsonObject/patternProperties/^.*$,pattern:^.*$,open-ended dictionary with jsonValue,narrow key pattern and value schema
55+
tools/schemas/tools/sprite-editor.schema.json,#/$defs/jsonObject/patternProperties/^.*$,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
56+
tools/schemas/tools/sprite-editor.schema.json,#/properties/assetRegistry,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
57+
tools/schemas/tools/sprite-editor.schema.json,#/properties/spriteProject,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
58+
tools/schemas/tools/state-inspector.schema.json,#/$defs/jsonArray/items,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
59+
tools/schemas/tools/state-inspector.schema.json,#/$defs/jsonObject/patternProperties/^.*$,pattern:^.*$,open-ended dictionary with jsonValue,narrow key pattern and value schema
60+
tools/schemas/tools/state-inspector.schema.json,#/$defs/jsonObject/patternProperties/^.*$,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
61+
tools/schemas/tools/state-inspector.schema.json,#/properties/snapshot,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
62+
tools/schemas/tools/svg-asset-studio.schema.json,#/$defs/jsonArray/items,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
63+
tools/schemas/tools/svg-asset-studio.schema.json,#/$defs/jsonObject/patternProperties/^.*$,pattern:^.*$,open-ended dictionary with jsonValue,narrow key pattern and value schema
64+
tools/schemas/tools/svg-asset-studio.schema.json,#/$defs/jsonObject/patternProperties/^.*$,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
65+
tools/schemas/tools/svg-asset-studio.schema.json,#/properties/vectorAssetDocument,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
66+
tools/schemas/tools/tile-map-editor.schema.json,#/$defs/jsonArray/items,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
67+
tools/schemas/tools/tile-map-editor.schema.json,#/$defs/jsonObject/patternProperties/^.*$,pattern:^.*$,open-ended dictionary with jsonValue,narrow key pattern and value schema
68+
tools/schemas/tools/tile-map-editor.schema.json,#/$defs/jsonObject/patternProperties/^.*$,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
69+
tools/schemas/tools/tile-map-editor.schema.json,#/properties/parallaxDocument,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
70+
tools/schemas/tools/tile-map-editor.schema.json,#/properties/tileMapDocument,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
71+
tools/schemas/tools/tile-map-editor.schema.json,#/properties/tilemapDocumentPath,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
72+
tools/schemas/tools/tile-model-converter.schema.json,#/$defs/jsonArray/items,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
73+
tools/schemas/tools/tile-model-converter.schema.json,#/$defs/jsonObject/patternProperties/^.*$,pattern:^.*$,open-ended dictionary with jsonValue,narrow key pattern and value schema
74+
tools/schemas/tools/tile-model-converter.schema.json,#/$defs/jsonObject/patternProperties/^.*$,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
75+
tools/schemas/tools/tile-model-converter.schema.json,#/properties/candidate,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
76+
tools/schemas/tools/tile-model-converter.schema.json,#/properties/conversion,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
77+
tools/schemas/tools/vector-map-editor.schema.json,#/$defs/jsonArray/items,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
78+
tools/schemas/tools/vector-map-editor.schema.json,#/$defs/jsonObject/patternProperties/^.*$,pattern:^.*$,open-ended dictionary with jsonValue,narrow key pattern and value schema
79+
tools/schemas/tools/vector-map-editor.schema.json,#/$defs/jsonObject/patternProperties/^.*$,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned
80+
tools/schemas/tools/vector-map-editor.schema.json,#/properties/vectorMapDocument,n/a,broad jsonValue escape hatch,replace with typed payload schema where repo-owned

0 commit comments

Comments
 (0)