Skip to content

Commit 3f07c48

Browse files
author
DavidQ
committed
Finalize tool design docs by removing generic bleed and locking palette-first rebuild contracts - PR_26124_023-finalize-tool-design-docs
1 parent 4357382 commit 3f07c48

30 files changed

Lines changed: 1457 additions & 6039 deletions

File tree

docs/design/tools/3d-asset-viewer/REENGINEERING_DESIGN.md

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
# 3D Asset Viewer Reengineering Design
22

3-
Task: PR_26124_022-tighten-tool-design-docs
3+
Task: PR_26124_023-finalize-tool-design-docs
44
Classification: rebuildable tool
55
Core priority: core-12
66
Source folder: `tools/3D Asset Viewer`
77
Publish target: `tools.3d-asset-viewer`
88

99
## Tool Purpose
10-
Read-only 3D asset inspection. This tool owns `asset3d` validation, inspection report generation, export, and publish to `tools.3d-asset-viewer` when a report payload is required.
10+
Read-only 3D asset inspection. 3D Asset Viewer owns `asset3d` validation, inspection report generation, export, and publish to `tools.3d-asset-viewer` when a report payload is required.
1111

1212
## Exact Folder/Files Inspected
1313
- `tools/3D Asset Viewer/how_to_use.html`
@@ -48,19 +48,16 @@ Add:
4848
- Publish `tools.3d-asset-viewer` report
4949

5050
## JSON Contract Owned By This Tool
51-
Baseline schema: `tools/schemas/tools/3d-asset-viewer.schema.json`. Required top-level fields: asset3d. Allowed top-level fields: asset3d. Additional top-level properties are rejected by the current schema. The tool owns import/load, validation, edit/process, export/save, and publish of this payload. Workspace may pass a launch payload, but nested JSON remains tool-owned.
51+
Owned JSON is the 3d-asset-viewer payload. Required field is `asset3d`; no other top-level fields are allowed. Inspection output is read-only and derived from the loaded 3D asset payload.
5252

53-
## Hosted/Launch Payload Boundary
54-
- Launch payloads may seed this tool, but they do not become workspace-owned internals.
55-
- toolState copies may be created later from the published output, but the copied JSON must still match this tool contract.
56-
- Use file/path/name fields for assets. Do not persist `imageDataUrl`.
53+
## Publish Output
54+
Publish only to `tools.3d-asset-viewer`. The published value must match the tool-owned contract above and must be produced by this folder's validation/export path.
5755

5856
## Invalid JSON Behavior
59-
- Reject malformed JSON before state mutation.
60-
- Reject missing required fields from the schema baseline.
61-
- Reject unsupported top-level fields when the schema disallows extras.
62-
- Keep export/save/publish disabled until the current payload validates.
63-
- Show a tool-specific error that names the failing field or control group.
57+
- malformed JSON
58+
- missing `asset3d`
59+
- asset data the inspector cannot summarize
60+
- unsupported top-level fields
6461

6562
## Manual Test Plan
6663
- Paste a valid `asset3d` payload and inspect it.

docs/design/tools/3d-camera-path-editor/REENGINEERING_DESIGN.md

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
# 3D Camera Path Editor Reengineering Design
22

3-
Task: PR_26124_022-tighten-tool-design-docs
3+
Task: PR_26124_023-finalize-tool-design-docs
44
Classification: rebuildable tool
55
Core priority: core-13
66
Source folder: `tools/3D Camera Path Editor`
77
Publish target: `tools.3d-camera-path-editor`
88

99
## Tool Purpose
10-
3D camera path authoring. This tool owns `cameraPath`, waypoint editing, path normalization, export, and publish to `tools.3d-camera-path-editor`.
10+
3D camera path authoring. 3D Camera Path Editor owns `cameraPath`, waypoint editing, path normalization, export, and publish to `tools.3d-camera-path-editor`.
1111

1212
## Exact Folder/Files Inspected
1313
- `tools/3D Camera Path Editor/how_to_use.html`
@@ -52,19 +52,17 @@ Add:
5252
- Publish `tools.3d-camera-path-editor`
5353

5454
## JSON Contract Owned By This Tool
55-
Baseline schema: `tools/schemas/tools/3d-camera-path-editor.schema.json`. Required top-level fields: cameraPath. Allowed top-level fields: cameraPath. Additional top-level properties are rejected by the current schema. The tool owns import/load, validation, edit/process, export/save, and publish of this payload. Workspace may pass a launch payload, but nested JSON remains tool-owned.
55+
Owned JSON is the 3d-camera-path-editor payload. Required field is `cameraPath`; no other top-level fields are allowed. Camera path data owns waypoint order, positions, timing, and normalized path output.
5656

57-
## Hosted/Launch Payload Boundary
58-
- Launch payloads may seed this tool, but they do not become workspace-owned internals.
59-
- toolState copies may be created later from the published output, but the copied JSON must still match this tool contract.
60-
- Use file/path/name fields for assets. Do not persist `imageDataUrl`.
57+
## Publish Output
58+
Publish only to `tools.3d-camera-path-editor`. The published value must match the tool-owned contract above and must be produced by this folder's validation/export path.
6159

6260
## Invalid JSON Behavior
63-
- Reject malformed JSON before state mutation.
64-
- Reject missing required fields from the schema baseline.
65-
- Reject unsupported top-level fields when the schema disallows extras.
66-
- Keep export/save/publish disabled until the current payload validates.
67-
- Show a tool-specific error that names the failing field or control group.
61+
- malformed JSON
62+
- missing `cameraPath`
63+
- empty or invalid waypoint data
64+
- nonnumeric camera position/timing values
65+
- unsupported top-level fields
6866

6967
## Manual Test Plan
7068
- Load or paste a valid camera path.

docs/design/tools/3d-json-payload/REENGINEERING_DESIGN.md

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
# 3D JSON Payload Reengineering Design
22

3-
Task: PR_26124_022-tighten-tool-design-docs
3+
Task: PR_26124_023-finalize-tool-design-docs
44
Classification: rebuildable tool
55
Core priority: core-11
66
Source folder: `tools/3D JSON Payload`
77
Publish target: `tools.3d-json-payload`
88

99
## Tool Purpose
10-
3D map payload normalization. This tool owns `mapPayload`, normalization, invalid JSON rejection, export, and publish to `tools.3d-json-payload`.
10+
3D map payload normalization. 3D JSON Payload owns `mapPayload`, normalization, invalid JSON rejection, export, and publish to `tools.3d-json-payload`.
1111

1212
## Exact Folder/Files Inspected
1313
- `tools/3D JSON Payload/how_to_use.html`
@@ -51,19 +51,16 @@ Add:
5151
- Publish `tools.3d-json-payload`
5252

5353
## JSON Contract Owned By This Tool
54-
Baseline schema: `tools/schemas/tools/3d-json-payload.schema.json`. Required top-level fields: mapPayload. Allowed top-level fields: mapPayload. Additional top-level properties are rejected by the current schema. The tool owns import/load, validation, edit/process, export/save, and publish of this payload. Workspace may pass a launch payload, but nested JSON remains tool-owned.
54+
Owned JSON is the 3d-json-payload payload. Required field is `mapPayload`; no other top-level fields are allowed. The normalized output is derived only from the map payload text loaded in this folder.
5555

56-
## Hosted/Launch Payload Boundary
57-
- Launch payloads may seed this tool, but they do not become workspace-owned internals.
58-
- toolState copies may be created later from the published output, but the copied JSON must still match this tool contract.
59-
- Use file/path/name fields for assets. Do not persist `imageDataUrl`.
56+
## Publish Output
57+
Publish only to `tools.3d-json-payload`. The published value must match the tool-owned contract above and must be produced by this folder's validation/export path.
6058

6159
## Invalid JSON Behavior
62-
- Reject malformed JSON before state mutation.
63-
- Reject missing required fields from the schema baseline.
64-
- Reject unsupported top-level fields when the schema disallows extras.
65-
- Keep export/save/publish disabled until the current payload validates.
66-
- Show a tool-specific error that names the failing field or control group.
60+
- malformed JSON
61+
- missing `mapPayload`
62+
- map payload values the normalizer cannot process
63+
- unsupported top-level fields
6764

6865
## Manual Test Plan
6966
- Paste a valid `mapPayload` document and normalize it.
Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,35 @@
11
# Tools Reengineering Index
22

3-
Task: PR_26124_022-tighten-tool-design-docs
3+
Task: PR_26124_023-finalize-tool-design-docs
44

5-
This index separates rebuild targets from transitional entries and support/reference folders. It uses exact folder paths under `tools/*`.
5+
This index separates rebuild anchors from transitional references and support folders. All source paths are exact folders under `tools/*`.
66

77
| Tool ID | Exact Source Folder | Classification | Core Roadmap Priority | Publish Target | Notes |
88
|---|---|---|---|---|---|
9-
| `palette-browser` | `tools/Palette Browser` | global tool | core-01 | tools.palette-browser | core rebuild path |
10-
| `workspace-manager` | `tools/Workspace Manager` | global tool | deferred | none | global launcher; deferred cleanup |
11-
| `asset-browser` | `tools/Asset Browser` | rebuildable tool | core-02 | tools.asset-browser | core rebuild path |
12-
| `asset-pipeline` | `tools/Asset Pipeline` | rebuildable tool | core-03 | tools.asset-pipeline | core rebuild path |
13-
| `svg-asset-studio` | `tools/SVG Asset Studio` | rebuildable tool | core-04 | tools.svg-asset-studio | core rebuild path |
14-
| `sprite-editor` | `tools/Sprite Editor` | rebuildable tool | core-05 | tools.sprite-editor | core rebuild path |
15-
| `skin-editor` | `tools/Skin Editor` | rebuildable tool | core-06 | tools.skin-editor | core rebuild path |
16-
| `tile-map-editor` | `tools/Tilemap Studio` | rebuildable tool | core-07 | tools.tile-map-editor | core rebuild path |
17-
| `tile-model-converter` | `tools/Tile Model Converter` | rebuildable tool | core-08 | tools.tile-model-converter | core rebuild path |
18-
| `parallax-editor` | `tools/Parallax Scene Studio` | rebuildable tool | core-09 | tools.parallax-editor | core rebuild path |
19-
| `vector-map-editor` | `tools/Vector Map Editor` | rebuildable tool | core-10 | tools.vector-map-editor | core rebuild path |
20-
| `3d-json-payload` | `tools/3D JSON Payload` | rebuildable tool | core-11 | tools.3d-json-payload | core rebuild path |
21-
| `3d-asset-viewer` | `tools/3D Asset Viewer` | rebuildable tool | core-12 | tools.3d-asset-viewer | core rebuild path |
22-
| `3d-camera-path-editor` | `tools/3D Camera Path Editor` | rebuildable tool | core-13 | tools.3d-camera-path-editor | core rebuild path |
23-
| `physics-sandbox` | `tools/Physics Sandbox` | rebuildable tool | core-14 | tools.physics-sandbox | core rebuild path |
24-
| `state-inspector` | `tools/State Inspector` | rebuildable tool | core-15 | tools.state-inspector | core rebuild path |
25-
| `replay-visualizer` | `tools/Replay Visualizer` | rebuildable tool | core-16 | tools.replay-visualizer | core rebuild path |
26-
| `performance-profiler` | `tools/Performance Profiler` | rebuildable tool | core-17 | tools.performance-profiler | core rebuild path |
27-
| `asset-manager-v2` | `tools/asset-manager-v2` | transitional/quarantine tool | deferred | none | deferred until core tool rebuilds are complete |
28-
| `palette-manager-v2` | `tools/palette-manager-v2` | transitional/quarantine tool | deferred | none | deferred until core tool rebuilds are complete |
29-
| `svg-asset-studio-v2` | `tools/svg-asset-studio-v2` | transitional/quarantine tool | deferred | none | deferred until core tool rebuilds are complete |
30-
| `tilemap-studio-v2` | `tools/tilemap-studio-v2` | transitional/quarantine tool | deferred | none | deferred until core tool rebuilds are complete |
31-
| `vector-map-editor-v2` | `tools/vector-map-editor-v2` | transitional/quarantine tool | deferred | none | deferred until core tool rebuilds are complete |
32-
| `workspace-v2` | `tools/workspace-v2` | transitional/quarantine tool | deferred | none | deferred until core tool rebuilds are complete |
9+
| `palette-browser` | `tools/Palette Browser` | global tool | core-01 | tools.palette-browser | first rebuild anchor; global palette only |
10+
| `asset-browser` | `tools/Asset Browser` | rebuildable tool | core-02 | tools.asset-browser | core rebuild lane |
11+
| `asset-pipeline` | `tools/Asset Pipeline` | rebuildable tool | core-03 | tools.asset-pipeline | core rebuild lane |
12+
| `svg-asset-studio` | `tools/SVG Asset Studio` | rebuildable tool | core-04 | tools.svg-asset-studio | core rebuild lane |
13+
| `sprite-editor` | `tools/Sprite Editor` | rebuildable tool | core-05 | tools.sprite-editor | core rebuild lane |
14+
| `skin-editor` | `tools/Skin Editor` | rebuildable tool | core-06 | tools.skin-editor | core rebuild lane |
15+
| `tile-map-editor` | `tools/Tilemap Studio` | rebuildable tool | core-07 | tools.tile-map-editor | core rebuild lane |
16+
| `tile-model-converter` | `tools/Tile Model Converter` | rebuildable tool | core-08 | tools.tile-model-converter | core rebuild lane |
17+
| `parallax-editor` | `tools/Parallax Scene Studio` | rebuildable tool | core-09 | tools.parallax-editor | core rebuild lane |
18+
| `vector-map-editor` | `tools/Vector Map Editor` | rebuildable tool | core-10 | tools.vector-map-editor | core rebuild lane |
19+
| `3d-json-payload` | `tools/3D JSON Payload` | rebuildable tool | core-11 | tools.3d-json-payload | core rebuild lane |
20+
| `3d-asset-viewer` | `tools/3D Asset Viewer` | rebuildable tool | core-12 | tools.3d-asset-viewer | core rebuild lane |
21+
| `3d-camera-path-editor` | `tools/3D Camera Path Editor` | rebuildable tool | core-13 | tools.3d-camera-path-editor | core rebuild lane |
22+
| `physics-sandbox` | `tools/Physics Sandbox` | rebuildable tool | core-14 | tools.physics-sandbox | core rebuild lane |
23+
| `state-inspector` | `tools/State Inspector` | rebuildable tool | core-15 | tools.state-inspector | core rebuild lane |
24+
| `replay-visualizer` | `tools/Replay Visualizer` | rebuildable tool | core-16 | tools.replay-visualizer | core rebuild lane |
25+
| `performance-profiler` | `tools/Performance Profiler` | rebuildable tool | core-17 | tools.performance-profiler | core rebuild lane |
26+
| `asset-manager-v2` | `tools/asset-manager-v2` | transitional/quarantine tool | deferred | none | deferred until corresponding core tool is rebuilt |
27+
| `palette-manager-v2` | `tools/palette-manager-v2` | transitional/quarantine tool | deferred | none | deferred until corresponding core tool is rebuilt |
28+
| `svg-asset-studio-v2` | `tools/svg-asset-studio-v2` | transitional/quarantine tool | deferred | none | deferred until corresponding core tool is rebuilt |
29+
| `tilemap-studio-v2` | `tools/tilemap-studio-v2` | transitional/quarantine tool | deferred | none | deferred until corresponding core tool is rebuilt |
30+
| `vector-map-editor-v2` | `tools/vector-map-editor-v2` | transitional/quarantine tool | deferred | none | deferred until corresponding core tool is rebuilt |
31+
| `workspace-manager` | `tools/Workspace Manager` | transitional/quarantine tool | deferred | none | reference only; not a rebuild anchor |
32+
| `workspace-v2` | `tools/workspace-v2` | transitional/quarantine tool | deferred | none | reference only; not a rebuild anchor |
3333
| `schemas` | `tools/schemas` | schema folder | reference-only | none | schema baseline only; no schema changes in this PR |
3434
| `codex` | `tools/codex` | support folder | reference-only | none | reference only; no normal rebuild doc |
3535
| `common` | `tools/common` | support folder | reference-only | none | reference only; no normal rebuild doc |
@@ -39,8 +39,8 @@ This index separates rebuild targets from transitional entries and support/refer
3939
| `templates` | `tools/templates` | support folder | reference-only | none | reference only; no normal rebuild doc |
4040

4141
## Classification Definitions
42-
- `global tool`: a launchable, global surface. Palette Browser rebuilds first; Workspace Manager is deferred launcher cleanup.
42+
- `global tool`: a launchable global surface. Palette Browser is the only core rebuild anchor in this group.
4343
- `rebuildable tool`: non-transitional launchable tool with an owned JSON contract and `tools.<toolId>` publish target.
44-
- `transitional/quarantine tool`: hosted-payload or toolState bridge retained only as reference until a later cleanup PR.
44+
- `transitional/quarantine tool`: V2 or workspace bridge retained as deferred reference only.
4545
- `support folder`: shared/reference infrastructure only; it is not a normal tool rebuild target and has no `REENGINEERING_DESIGN.md`.
4646
- `schema folder`: current contract baseline only; no schema changes are part of this PR.

docs/design/tools/asset-browser/REENGINEERING_DESIGN.md

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
# Asset Browser Reengineering Design
22

3-
Task: PR_26124_022-tighten-tool-design-docs
3+
Task: PR_26124_023-finalize-tool-design-docs
44
Classification: rebuildable tool
55
Core priority: core-02
66
Source folder: `tools/Asset Browser`
77
Publish target: `tools.asset-browser`
88

99
## Tool Purpose
10-
Approved asset browsing and import-plan authoring. This tool owns asset selection, import candidate validation, and publish to `tools.asset-browser`.
10+
Approved asset browsing and import-plan authoring. Asset Browser owns asset selection, import candidate validation, and publish to `tools.asset-browser`.
1111

1212
## Exact Folder/Files Inspected
1313
- `tools/Asset Browser/assetBrowser.css`
@@ -69,30 +69,28 @@ Keep:
6969
- Download Plan JSON
7070

7171
Remove or rename:
72-
- ambiguous `Use In Active Tool` handoff as a persisted JSON owner
72+
- treat `Use In Active Tool` as a transient handoff, not a JSON ownership path
7373

7474
Add:
75-
- Load asset-browser JSON
75+
- Load Asset Browser JSON
7676
- Validate asset catalog/import plan
7777
- Publish `tools.asset-browser`
78-
- copy selected asset as launch payload only
7978

8079
## JSON Contract Owned By This Tool
81-
Baseline schema: `tools/schemas/tools/asset-browser.schema.json`. Required top-level fields: assets. Allowed top-level fields: assets, assetBrowserPreset, approvedAssets, importHubPreset. Additional top-level properties are rejected by the current schema. The tool owns import/load, validation, edit/process, export/save, and publish of this payload. Workspace may pass a launch payload, but nested JSON remains tool-owned.
80+
Owned JSON is the asset-browser payload. Required field is `assets`. Optional fields are `assetBrowserPreset`, `approvedAssets`, and `importHubPreset`. Import-plan output must use asset ids, categories, destinations, and path/name metadata produced by Asset Browser controls.
8281

83-
## Hosted/Launch Payload Boundary
84-
- Launch payloads may seed this tool, but they do not become workspace-owned internals.
85-
- toolState copies may be created later from the published output, but the copied JSON must still match this tool contract.
86-
- Use file/path/name fields for assets. Do not persist `imageDataUrl`.
82+
## Publish Output
83+
Publish only to `tools.asset-browser`. The published value must match the tool-owned contract above and must be produced by this folder's validation/export path.
8784

8885
## Invalid JSON Behavior
89-
- Reject malformed JSON before state mutation.
90-
- Reject missing required fields from the schema baseline.
91-
- Reject unsupported top-level fields when the schema disallows extras.
92-
- Keep export/save/publish disabled until the current payload validates.
93-
- Show a tool-specific error that names the failing field or control group.
86+
- malformed JSON
87+
- missing `assets`
88+
- `assets` that is not the expected asset collection
89+
- invalid import category/destination/name values
90+
- unsupported top-level fields
9491

9592
## Manual Test Plan
9693
- Filter assets by category and search term.
9794
- Select an asset and confirm preview/meta text updates.
98-
- Build an import plan, validate it, download it, and confirm invalid category/destination/name combinations are blocked.
95+
- Build an import plan, validate it, download it, and re-load it.
96+
- Try bad category/destination/name combinations; validation must block publish.

0 commit comments

Comments
 (0)