-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcodex_review.diff
More file actions
479 lines (466 loc) · 63.8 KB
/
Copy pathcodex_review.diff
File metadata and controls
479 lines (466 loc) · 63.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
diff --git a/dev/build/ProjectInstructions/PROJECT_INSTRUCTIONS.md b/dev/build/ProjectInstructions/PROJECT_INSTRUCTIONS.md
index a2595051c..524ef94fb 100644
--- a/dev/build/ProjectInstructions/PROJECT_INSTRUCTIONS.md
+++ b/dev/build/ProjectInstructions/PROJECT_INSTRUCTIONS.md
@@ -117,7 +117,7 @@ Rules:
## Current Version/Date
-- Project Instructions Version: 2026.06.28.018
+- Project Instructions Version: 2026.06.28.019
- Date: 2026-06-28
- Owner: OWNER
diff --git a/dev/build/ProjectInstructions/PROJECT_INSTRUCTIONS_VERSION.md b/dev/build/ProjectInstructions/PROJECT_INSTRUCTIONS_VERSION.md
index 345bd239e..8f53d469f 100644
--- a/dev/build/ProjectInstructions/PROJECT_INSTRUCTIONS_VERSION.md
+++ b/dev/build/ProjectInstructions/PROJECT_INSTRUCTIONS_VERSION.md
@@ -1,6 +1,6 @@
# Project Instructions Version
-Current Project Instructions Version: 2026.06.28.018
+Current Project Instructions Version: 2026.06.28.019
Last Updated: 2026-06-28
@@ -26,6 +26,7 @@ Last Updated: 2026-06-28
- Removed safe empty local root directory shells and documented blocked local-only `assets/` cleanup.
- Removed the local demo `.gfsp` artifact and recorded a file-by-file `src/` destination audit for future scoped migrations.
- Moved PR017-audited browser/www-owned legacy `src/` files into `www/src/` while preserving public `/src/...` browser route compatibility under the `www` web root.
+- Moved PR019a-audited active browser/runtime shared contracts and tool schemas into `www/src/shared/` while preserving public `/src/shared/...` browser route compatibility.
- Codex must read this version file and the latest repository copy of `PROJECT_INSTRUCTIONS.md` before performing work.
- Codex must discard previously remembered Project Instructions and treat the repository copy as authoritative.
- Codex must validate canonical report and ZIP paths, branching model, and legacy path avoidance before work proceeds.
diff --git a/dev/build/ProjectInstructions/PROJECT_STATE.md b/dev/build/ProjectInstructions/PROJECT_STATE.md
index 7e01574cb..dd9f058ab 100644
--- a/dev/build/ProjectInstructions/PROJECT_STATE.md
+++ b/dev/build/ProjectInstructions/PROJECT_STATE.md
@@ -1,7 +1,7 @@
# Project State
```yaml
-project_state_version: "2026.06.28.018"
+project_state_version: "2026.06.28.019"
last_updated: "2026-06-28"
current_main_commit: "40de767476d70cadfd1292c916844c2f31b6f185"
repository_status:
@@ -10,9 +10,9 @@ repository_status:
runtime_database: "Postgres"
creator_metadata: "API to Postgres"
creator_assets: "API to R2"
-project_instructions_version: "2026.06.28.018"
-repository_structure_version: "2026.06.28.018"
-canonical_layout_version: "2026.06.28.018"
+project_instructions_version: "2026.06.28.019"
+repository_structure_version: "2026.06.28.019"
+canonical_layout_version: "2026.06.28.019"
active_teams:
- "Owner"
- "Alfa"
@@ -20,8 +20,8 @@ active_teams:
- "Charlie"
- "Delta"
- "Golf"
-latest_owner_pr: "PR_26180_OWNER_018-move-src-browser-to-www"
-latest_structure_pr: "PR_26180_OWNER_018-move-src-browser-to-www"
+latest_owner_pr: "PR_26180_OWNER_019b-move-browser-shared-schemas-to-www"
+latest_structure_pr: "PR_26180_OWNER_019b-move-browser-shared-schemas-to-www"
valid_top_level_folders:
- "api/"
- "deploy/"
@@ -40,7 +40,7 @@ valid_dev_folders:
- "dev/tools/"
- "dev/workspace/"
known_technical_debt:
- - "API/server-owned contracts, schemas, and project data store modules remain under src/shared/ until PR_26180_OWNER_019 moves them to api/."
+ - "Remaining API/server-owned contracts, validation-only schemas, and project data store modules remain under src/shared/ until scoped follow-up PRs move them to api/ or dev/."
- "Developer/source reference files remain under src/ until PR_26180_OWNER_020 moves them to dev/."
- "src/dev-runtime/admin/.gitkeep remains as a placeholder until PR_26180_OWNER_021 retires the empty root src folder."
- "repository_directory_standard.md and codex_project_instructions_startup.md are superseded pointers retained for compatibility."
diff --git a/dev/build/ProjectInstructions/backlog/BACKLOG_MASTER.md b/dev/build/ProjectInstructions/backlog/BACKLOG_MASTER.md
index 7b384c38e..2f73709cb 100644
--- a/dev/build/ProjectInstructions/backlog/BACKLOG_MASTER.md
+++ b/dev/build/ProjectInstructions/backlog/BACKLOG_MASTER.md
@@ -40,8 +40,8 @@ The backlog is the authoritative source for determining the next logical PRs.
- Product Area: Repository Architecture Simplification
- Status: Active
- Percent Complete: 99%
-- Active PR: PR_26180_OWNER_018-move-src-browser-to-www
-- Next Milestone: Move API/server-owned source to api/
+- Active PR: PR_26180_OWNER_019b-move-browser-shared-schemas-to-www
+- Next Milestone: Move remaining API/server-owned source to api/
- Source / Reference: `dev/build/ProjectInstructions/repository/repository_layout_architecture_plan.md`; `dev/build/ProjectInstructions/repository/www_migration_map.md`
## Game Journey MVP
diff --git a/dev/build/ProjectInstructions/repository/canonical_repository_structure.md b/dev/build/ProjectInstructions/repository/canonical_repository_structure.md
index 6a3115dd9..41be18217 100644
--- a/dev/build/ProjectInstructions/repository/canonical_repository_structure.md
+++ b/dev/build/ProjectInstructions/repository/canonical_repository_structure.md
@@ -28,9 +28,10 @@ Deployable application source:
Final source ownership after the repository layout simplification:
- `www/src/` owns browser-facing deployable application modules used by public pages, account/admin surfaces, Creator tools, game runtime, shared browser utilities, and browser API clients.
+- `www/src/shared/contracts/` and `www/src/shared/schemas/tools/` own browser/runtime-consumed contracts and tool schemas that must remain available through the public `/src/shared/...` route shape.
- `api/` owns deployable API/runtime service modules that back the shared Browser -> API -> Postgres/R2 contract.
- `dev/` owns developer-only source, scripts, tests, reports, local runtime orchestration, and reference material.
-- Existing root `src/shared/contracts/`, `src/shared/schemas/`, `src/shared/projectDataStore/`, and source-reference files are legacy transition buckets until explicit migration PRs move them.
+- Remaining root `src/shared/contracts/`, `src/shared/schemas/`, `src/shared/projectDataStore/`, and source-reference files are legacy transition buckets until explicit migration PRs move them.
- Browser API clients remain outside `api/`; browser-served code must use API/service contracts instead of importing top-level `api/` files directly.
- `www/src/dev-runtime/admin/` preserves the public `/src/dev-runtime/admin/...` Admin Notes browser-viewer compatibility route under the `www` web root.
- Do not add new root `src/` layer names or new root `src/` work without OWNER approval.
@@ -82,6 +83,8 @@ Legacy transition buckets:
- www/src/api/
- www/src/engine/
- www/src/shared/
+- www/src/shared/contracts/
+- www/src/shared/schemas/
- www/src/tools/
- www/src/dev-runtime/admin/
- src/shared/contracts/
diff --git a/dev/reports/PR_26180_OWNER_019b-move-browser-shared-schemas-to-www_branch-validation.md b/dev/reports/PR_26180_OWNER_019b-move-browser-shared-schemas-to-www_branch-validation.md
new file mode 100644
index 000000000..1a1d86cef
--- /dev/null
+++ b/dev/reports/PR_26180_OWNER_019b-move-browser-shared-schemas-to-www_branch-validation.md
@@ -0,0 +1,48 @@
+# PR_26180_OWNER_019b-move-browser-shared-schemas-to-www Branch Validation
+
+| Check | Status | Evidence |
+| --- | --- | --- |
+| Current branch | PASS | `PR_26180_OWNER_019b-move-browser-shared-schemas-to-www` |
+| Expected stacked base | PASS | Branch created from `PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit`. |
+| Worktree at start | PASS | Clean before branch creation. |
+| Worktree after implementation | PASS | Contains only scoped PR changes and generated reports. |
+| Branch model | PASS | Owner stacked PR based on prior direct dependency. |
+| Protected developer workspace | PASS | No protected dev workspace paths moved. |
+
+## Current Status Snapshot
+
+```text
+ M dev/build/ProjectInstructions/PROJECT_INSTRUCTIONS.md
+ M dev/build/ProjectInstructions/PROJECT_INSTRUCTIONS_VERSION.md
+ M dev/build/ProjectInstructions/PROJECT_STATE.md
+ M dev/build/ProjectInstructions/backlog/BACKLOG_MASTER.md
+ M dev/build/ProjectInstructions/repository/canonical_repository_structure.md
+ M dev/reports/codex_changed_files.txt
+ M dev/reports/codex_review.diff
+ M dev/scripts/validate-json-contracts.mjs
+ M dev/tests/tools/ObjectVectorStudioV2DeleteCleanup.test.mjs
+ M dev/tests/tools/ToolManifestBoundary.test.mjs
+R src/shared/contracts/replayContracts.js -> www/src/shared/contracts/replayContracts.js
+R src/shared/schemas/tools/3d-asset-viewer.schema.json -> www/src/shared/schemas/tools/3d-asset-viewer.schema.json
+R src/shared/schemas/tools/3d-camera-path-editor.schema.json -> www/src/shared/schemas/tools/3d-camera-path-editor.schema.json
+R src/shared/schemas/tools/3d-json-payload.schema.json -> www/src/shared/schemas/tools/3d-json-payload.schema.json
+R src/shared/schemas/tools/asset-manager-v2.schema.json -> www/src/shared/schemas/tools/asset-manager-v2.schema.json
+R src/shared/schemas/tools/asset-pipeline.schema.json -> www/src/shared/schemas/tools/asset-pipeline.schema.json
+R src/shared/schemas/tools/audio-sfx-playground-v2.schema.json -> www/src/shared/schemas/tools/audio-sfx-playground-v2.schema.json
+R src/shared/schemas/tools/collision-inspector-v2.schema.json -> www/src/shared/schemas/tools/collision-inspector-v2.schema.json
+R src/shared/schemas/tools/input-mapping-v2.schema.json -> www/src/shared/schemas/tools/input-mapping-v2.schema.json
+R src/shared/schemas/tools/midi-studio-v2.schema.json -> www/src/shared/schemas/tools/midi-studio-v2.schema.json
+R src/shared/schemas/tools/object-vector-studio-v2.schema.json -> www/src/shared/schemas/tools/object-vector-studio-v2.schema.json
+R src/shared/schemas/tools/palette-browser.schema.json -> www/src/shared/schemas/tools/palette-browser.schema.json
+R src/shared/schemas/tools/palette-manager-v2.schema.json -> www/src/shared/schemas/tools/palette-manager-v2.schema.json
+R src/shared/schemas/tools/parallax-editor.schema.json -> www/src/shared/schemas/tools/parallax-editor.schema.json
+R src/shared/schemas/tools/performance-profiler.schema.json -> www/src/shared/schemas/tools/performance-profiler.schema.json
+R src/shared/schemas/tools/physics-sandbox.schema.json -> www/src/shared/schemas/tools/physics-sandbox.schema.json
+R src/shared/schemas/tools/replay-visualizer.schema.json -> www/src/shared/schemas/tools/replay-visualizer.schema.json
+R src/shared/schemas/tools/sprite-editor.schema.json -> www/src/shared/schemas/tools/sprite-editor.schema.json
+R src/shared/schemas/tools/state-inspector.schema.json -> www/src/shared/schemas/tools/state-inspector.schema.json
+R src/shared/schemas/tools/svg-asset-studio.schema.json -> www/src/shared/schemas/tools/svg-asset-studio.schema.json
+R src/shared/schemas/tools/text2speech-V2.schema.json -> www/src/shared/schemas/tools/text2speech-V2.schema.json
+R src/shared/schemas/tools/tile-map-editor.schema.json -> www/src/shared/schemas/tools/tile-map-editor.schema.json
+R src/shared/schemas/tools/vector-map-editor.schema.json -> www/src/shared/schemas/tools/vector-map-editor.schema.json
+```
diff --git a/dev/reports/PR_26180_OWNER_019b-move-browser-shared-schemas-to-www_manual-validation-notes.md b/dev/reports/PR_26180_OWNER_019b-move-browser-shared-schemas-to-www_manual-validation-notes.md
new file mode 100644
index 000000000..308cf68ed
--- /dev/null
+++ b/dev/reports/PR_26180_OWNER_019b-move-browser-shared-schemas-to-www_manual-validation-notes.md
@@ -0,0 +1,11 @@
+# PR_26180_OWNER_019b-move-browser-shared-schemas-to-www Manual Validation Notes
+
+- Confirmed moved files match PR019a audit `Active browser/runtime dependency` rows.
+- Confirmed representative public schema URLs still resolve through the `www` web root:
+ - `/src/shared/schemas/tools/object-vector-studio-v2.schema.json`
+ - `/src/shared/schemas/tools/text2speech-V2.schema.json`
+ - `/src/shared/schemas/tools/palette-browser.schema.json`
+ - `/src/shared/contracts/replayContracts.js`
+- Confirmed no API/server files were moved.
+- Confirmed no protected developer workspace files were moved.
+- Confirmed no product/UI/database implementation files changed.
diff --git a/dev/reports/PR_26180_OWNER_019b-move-browser-shared-schemas-to-www_report.md b/dev/reports/PR_26180_OWNER_019b-move-browser-shared-schemas-to-www_report.md
new file mode 100644
index 000000000..838a5e036
--- /dev/null
+++ b/dev/reports/PR_26180_OWNER_019b-move-browser-shared-schemas-to-www_report.md
@@ -0,0 +1,67 @@
+# PR_26180_OWNER_019b-move-browser-shared-schemas-to-www Report
+
+## Executive Summary
+
+Moved the PR019a-audited active browser/runtime shared contract and tool schema files from root `src/shared/` into `www/src/shared/`.
+
+This preserves public browser route compatibility because the local/static web root serves `www/`, so URLs such as `/src/shared/schemas/tools/palette-browser.schema.json` still resolve to `www/src/shared/schemas/tools/palette-browser.schema.json`.
+
+No API/server-owned files, validation-only files, protected developer workspace files, UI pages, database files, or product behavior were moved.
+
+## Stack Context
+
+- Workstream: Repository Architecture Simplification
+- Previous dependency: `PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit`
+- Base branch: `PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit`
+- Source branch: `PR_26180_OWNER_019b-move-browser-shared-schemas-to-www`
+- Intended next dependency: remaining server/API and dev-owned `src/` retirement PRs
+
+## Source Of Truth
+
+Used `dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_audit.csv`.
+
+Only rows classified as `Active browser/runtime dependency` with recommendation `move to www/` were moved.
+
+## Moved Files
+
+- src/shared/contracts/replayContracts.js -> www/src/shared/contracts/replayContracts.js
+- src/shared/schemas/tools/3d-asset-viewer.schema.json -> www/src/shared/schemas/tools/3d-asset-viewer.schema.json
+- src/shared/schemas/tools/3d-camera-path-editor.schema.json -> www/src/shared/schemas/tools/3d-camera-path-editor.schema.json
+- src/shared/schemas/tools/3d-json-payload.schema.json -> www/src/shared/schemas/tools/3d-json-payload.schema.json
+- src/shared/schemas/tools/asset-manager-v2.schema.json -> www/src/shared/schemas/tools/asset-manager-v2.schema.json
+- src/shared/schemas/tools/asset-pipeline.schema.json -> www/src/shared/schemas/tools/asset-pipeline.schema.json
+- src/shared/schemas/tools/audio-sfx-playground-v2.schema.json -> www/src/shared/schemas/tools/audio-sfx-playground-v2.schema.json
+- src/shared/schemas/tools/collision-inspector-v2.schema.json -> www/src/shared/schemas/tools/collision-inspector-v2.schema.json
+- src/shared/schemas/tools/input-mapping-v2.schema.json -> www/src/shared/schemas/tools/input-mapping-v2.schema.json
+- src/shared/schemas/tools/midi-studio-v2.schema.json -> www/src/shared/schemas/tools/midi-studio-v2.schema.json
+- src/shared/schemas/tools/object-vector-studio-v2.schema.json -> www/src/shared/schemas/tools/object-vector-studio-v2.schema.json
+- src/shared/schemas/tools/palette-browser.schema.json -> www/src/shared/schemas/tools/palette-browser.schema.json
+- src/shared/schemas/tools/palette-manager-v2.schema.json -> www/src/shared/schemas/tools/palette-manager-v2.schema.json
+- src/shared/schemas/tools/parallax-editor.schema.json -> www/src/shared/schemas/tools/parallax-editor.schema.json
+- src/shared/schemas/tools/performance-profiler.schema.json -> www/src/shared/schemas/tools/performance-profiler.schema.json
+- src/shared/schemas/tools/physics-sandbox.schema.json -> www/src/shared/schemas/tools/physics-sandbox.schema.json
+- src/shared/schemas/tools/replay-visualizer.schema.json -> www/src/shared/schemas/tools/replay-visualizer.schema.json
+- src/shared/schemas/tools/sprite-editor.schema.json -> www/src/shared/schemas/tools/sprite-editor.schema.json
+- src/shared/schemas/tools/state-inspector.schema.json -> www/src/shared/schemas/tools/state-inspector.schema.json
+- src/shared/schemas/tools/svg-asset-studio.schema.json -> www/src/shared/schemas/tools/svg-asset-studio.schema.json
+- src/shared/schemas/tools/text2speech-V2.schema.json -> www/src/shared/schemas/tools/text2speech-V2.schema.json
+- src/shared/schemas/tools/tile-map-editor.schema.json -> www/src/shared/schemas/tools/tile-map-editor.schema.json
+- src/shared/schemas/tools/vector-map-editor.schema.json -> www/src/shared/schemas/tools/vector-map-editor.schema.json
+
+## Path Updates
+
+- Updated active tool/schema tests to read browser tool schemas from `www/src/shared/schemas/tools/`.
+- Updated `dev/scripts/validate-json-contracts.mjs` so tool schema validation indexes `www/src/shared/schemas/tools/` while still indexing remaining root `src/shared/schemas/` files.
+- Updated Project Instructions version/state/canonical structure/backlog to record the browser schema/contract ownership split.
+
+## Compatibility Decision
+
+Schema `$id` values and browser string identifiers remain in the public `src/shared/schemas/tools/...` form. This is intentional because the public browser URL shape remains `/src/shared/...` under the `www` web root.
+
+## Scope Guard
+
+- Runtime behavior changed: No
+- Product/UI pages changed: No
+- API/server files moved: No
+- Database files changed: No
+- Protected developer workspace moved: No
diff --git a/dev/reports/PR_26180_OWNER_019b-move-browser-shared-schemas-to-www_requirement-checklist.md b/dev/reports/PR_26180_OWNER_019b-move-browser-shared-schemas-to-www_requirement-checklist.md
new file mode 100644
index 000000000..a47b4d951
--- /dev/null
+++ b/dev/reports/PR_26180_OWNER_019b-move-browser-shared-schemas-to-www_requirement-checklist.md
@@ -0,0 +1,16 @@
+# PR_26180_OWNER_019b-move-browser-shared-schemas-to-www Requirement Checklist
+
+| Requirement | Status | Evidence |
+| --- | --- | --- |
+| Use PR019a audit as source of truth | PASS | Moved only `Active browser/runtime dependency` rows from PR019a audit CSV. |
+| Move active browser/runtime contracts and schemas to `www/src/shared/` | PASS | 23 audited files moved to `www/src/shared/`. |
+| Preserve dynamic browser schema loading | PASS | `/src/shared/schemas/tools/<tool>.schema.json` route shape resolves from `www/src/shared/schemas/tools/`. |
+| Preserve public `/src/shared/...` URLs | PASS | Static route resolver check passed for representative schema and replay contract URLs. |
+| Update browser/runtime imports only where required | PASS | Existing browser relative imports continued to resolve; no browser/API behavior changes required. |
+| Do not move validation-only files | PASS | Remaining root validation-only schemas/contracts were not moved. |
+| Do not move API/server files | PASS | No `api/` files moved. |
+| Do not delete schemas/contracts unless audit proves unused | PASS | No schema/contract deletion performed. |
+| Do not change product behavior | PASS | Route compatibility and focused Playwright route smoke passed. |
+| Do not move protected developer workspace files | PASS | No protected `dev/workspace/generated`, `zips`, or `tmp` files moved. |
+| Required reports under `dev/reports/` | PASS | Reports generated. |
+| Required ZIP under `dev/workspace/zips/` | PASS | ZIP generated separately after report creation. |
diff --git a/dev/reports/PR_26180_OWNER_019b-move-browser-shared-schemas-to-www_validation-report.md b/dev/reports/PR_26180_OWNER_019b-move-browser-shared-schemas-to-www_validation-report.md
new file mode 100644
index 000000000..f6b9ae2e2
--- /dev/null
+++ b/dev/reports/PR_26180_OWNER_019b-move-browser-shared-schemas-to-www_validation-report.md
@@ -0,0 +1,19 @@
+# PR_26180_OWNER_019b-move-browser-shared-schemas-to-www Validation Report
+
+| Validation | Status | Notes |
+| --- | --- | --- |
+| Startup validation | PASS | Loaded Project Instructions v2026.06.28.018 before work; PR updates version to v2026.06.28.019. |
+| Branch validation | PASS | Started from `PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit`; created stacked branch `PR_26180_OWNER_019b-move-browser-shared-schemas-to-www`. |
+| `node --check dev/scripts/validate-json-contracts.mjs` | PASS | Syntax check passed. |
+| `node --check dev/tests/tools/ToolManifestBoundary.test.mjs` | PASS | Syntax check passed. |
+| `node --check dev/tests/tools/ObjectVectorStudioV2DeleteCleanup.test.mjs` | PASS | Syntax check passed. |
+| Targeted node tests | PASS | `ToolManifestBoundary` and `StaticWebRootCompatibility` passed. |
+| Static schema URL checks | PASS | Representative `/src/shared/schemas/tools/...` and `/src/shared/contracts/replayContracts.js` routes resolve from `www/`. |
+| Browser import/reference scan | PASS | No browser code imports top-level `api/`; stale active root filesystem schema references were updated. Public schema IDs remain intentionally unchanged. |
+| Focused Playwright route smoke | PASS | `dev/tests/playwright/tools/StaticWebRootCompatibility.spec.mjs`: 2/2 passed. |
+| `npm run validate:canonical-structure` | PASS | Canonical repository structure guardrail passed. |
+| `git diff --check` | PASS | Passed; Git reported line-ending normalization warnings only. |
+
+## Notes
+
+`dev/tests/tools/ObjectVectorStudioV2DeleteCleanup.test.mjs` is not part of the active node test runner and still depends on a removed legacy Object Vector tool module path from before this PR. This PR updated only its schema file path for the moved browser schema; it did not expand into legacy test resurrection.
diff --git a/dev/reports/codex_changed_files.txt b/dev/reports/codex_changed_files.txt
index 369bfd853..6037b46d0 100644
Binary files a/dev/reports/codex_changed_files.txt and b/dev/reports/codex_changed_files.txt differ
diff --git a/dev/scripts/validate-json-contracts.mjs b/dev/scripts/validate-json-contracts.mjs
index 3e4521419..8233d7f0e 100644
--- a/dev/scripts/validate-json-contracts.mjs
+++ b/dev/scripts/validate-json-contracts.mjs
@@ -4,7 +4,10 @@ import path from "node:path";
const ROOT = process.cwd();
const REPORT_DIR = path.join(ROOT, "docs", "dev", "reports");
-const SCHEMA_ROOT = path.join(ROOT, "tools", "schemas");
+const SCHEMA_ROOTS = [
+ path.join(ROOT, "www", "src", "shared", "schemas"),
+ path.join(ROOT, "src", "shared", "schemas")
+];
const DEPRECATED_GAME_TOOL_IDS = new Set(["asset-browser", "palette-browser", "vector-map-editor"]);
function parseArgs(argv) {
@@ -110,7 +113,7 @@ function writeCsv(filePath, columns, rows) {
}
function buildSchemaIndex() {
- const schemaFiles = walkFiles(SCHEMA_ROOT, (filePath) => filePath.endsWith(".json"));
+ const schemaFiles = SCHEMA_ROOTS.flatMap((schemaRoot) => walkFiles(schemaRoot, (filePath) => filePath.endsWith(".json")));
const schemaIndex = new Map();
schemaFiles.forEach((filePath) => {
const rel = normalizeRel(filePath);
@@ -493,7 +496,7 @@ function schemaPathForToolId(toolId) {
if (!normalized) {
return "";
}
- return `src/shared/schemas/tools/${normalized}.schema.json`;
+ return `www/src/shared/schemas/tools/${normalized}.schema.json`;
}
function validateToolPayloadShallow(toolId, payload, schema, pointer) {
@@ -700,7 +703,7 @@ function validateGames(schemaIndex, validate) {
function validateToolSchemas(schemaIndex, validate) {
const rows = [];
for (const [schemaPath, schema] of schemaIndex.entries()) {
- if (!schemaPath.startsWith("src/shared/schemas/tools/") || !schemaPath.endsWith(".schema.json")) {
+ if (!schemaPath.startsWith("www/src/shared/schemas/tools/") || !schemaPath.endsWith(".schema.json")) {
continue;
}
const errors = [];
diff --git a/dev/tests/tools/ObjectVectorStudioV2DeleteCleanup.test.mjs b/dev/tests/tools/ObjectVectorStudioV2DeleteCleanup.test.mjs
index 294324bc1..88247c0b9 100644
--- a/dev/tests/tools/ObjectVectorStudioV2DeleteCleanup.test.mjs
+++ b/dev/tests/tools/ObjectVectorStudioV2DeleteCleanup.test.mjs
@@ -57,7 +57,7 @@ function createPayload() {
async function createSchemaService() {
const service = new ObjectVectorStudioV2SchemaService({
fetchRef: createLocalFetch(),
- schemaUrl: new URL("../../../src/shared/schemas/tools/object-vector-studio-v2.schema.json", import.meta.url)
+ schemaUrl: new URL("../../../www/src/shared/schemas/tools/object-vector-studio-v2.schema.json", import.meta.url)
});
await service.loadSchema();
return service;
diff --git a/dev/tests/tools/ToolManifestBoundary.test.mjs b/dev/tests/tools/ToolManifestBoundary.test.mjs
index 0aecc0d39..0c645de6c 100644
--- a/dev/tests/tools/ToolManifestBoundary.test.mjs
+++ b/dev/tests/tools/ToolManifestBoundary.test.mjs
@@ -8,10 +8,10 @@ function readJson(relativePath) {
export async function run() {
const schemaFiles = [
"dev/tests/schemas/tool.manifest.schema.json",
- "src/shared/schemas/tools/palette-browser.schema.json",
+ "www/src/shared/schemas/tools/palette-browser.schema.json",
"src/shared/schemas/samples/sample.tool-payload.schema.json",
- "src/shared/schemas/tools/svg-asset-studio.schema.json",
- "src/shared/schemas/tools/sprite-editor.schema.json"
+ "www/src/shared/schemas/tools/svg-asset-studio.schema.json",
+ "www/src/shared/schemas/tools/sprite-editor.schema.json"
];
schemaFiles.forEach((relativePath) => {
const schema = readJson(relativePath);
diff --git a/src/shared/contracts/replayContracts.js b/www/src/shared/contracts/replayContracts.js
similarity index 100%
rename from src/shared/contracts/replayContracts.js
rename to www/src/shared/contracts/replayContracts.js
diff --git a/src/shared/schemas/tools/3d-asset-viewer.schema.json b/www/src/shared/schemas/tools/3d-asset-viewer.schema.json
similarity index 100%
rename from src/shared/schemas/tools/3d-asset-viewer.schema.json
rename to www/src/shared/schemas/tools/3d-asset-viewer.schema.json
diff --git a/src/shared/schemas/tools/3d-camera-path-editor.schema.json b/www/src/shared/schemas/tools/3d-camera-path-editor.schema.json
similarity index 100%
rename from src/shared/schemas/tools/3d-camera-path-editor.schema.json
rename to www/src/shared/schemas/tools/3d-camera-path-editor.schema.json
diff --git a/src/shared/schemas/tools/3d-json-payload.schema.json b/www/src/shared/schemas/tools/3d-json-payload.schema.json
similarity index 100%
rename from src/shared/schemas/tools/3d-json-payload.schema.json
rename to www/src/shared/schemas/tools/3d-json-payload.schema.json
diff --git a/src/shared/schemas/tools/asset-manager-v2.schema.json b/www/src/shared/schemas/tools/asset-manager-v2.schema.json
similarity index 100%
rename from src/shared/schemas/tools/asset-manager-v2.schema.json
rename to www/src/shared/schemas/tools/asset-manager-v2.schema.json
diff --git a/src/shared/schemas/tools/asset-pipeline.schema.json b/www/src/shared/schemas/tools/asset-pipeline.schema.json
similarity index 100%
rename from src/shared/schemas/tools/asset-pipeline.schema.json
rename to www/src/shared/schemas/tools/asset-pipeline.schema.json
diff --git a/src/shared/schemas/tools/audio-sfx-playground-v2.schema.json b/www/src/shared/schemas/tools/audio-sfx-playground-v2.schema.json
similarity index 100%
rename from src/shared/schemas/tools/audio-sfx-playground-v2.schema.json
rename to www/src/shared/schemas/tools/audio-sfx-playground-v2.schema.json
diff --git a/src/shared/schemas/tools/collision-inspector-v2.schema.json b/www/src/shared/schemas/tools/collision-inspector-v2.schema.json
similarity index 100%
rename from src/shared/schemas/tools/collision-inspector-v2.schema.json
rename to www/src/shared/schemas/tools/collision-inspector-v2.schema.json
diff --git a/src/shared/schemas/tools/input-mapping-v2.schema.json b/www/src/shared/schemas/tools/input-mapping-v2.schema.json
similarity index 100%
rename from src/shared/schemas/tools/input-mapping-v2.schema.json
rename to www/src/shared/schemas/tools/input-mapping-v2.schema.json
diff --git a/src/shared/schemas/tools/midi-studio-v2.schema.json b/www/src/shared/schemas/tools/midi-studio-v2.schema.json
similarity index 100%
rename from src/shared/schemas/tools/midi-studio-v2.schema.json
rename to www/src/shared/schemas/tools/midi-studio-v2.schema.json
diff --git a/src/shared/schemas/tools/object-vector-studio-v2.schema.json b/www/src/shared/schemas/tools/object-vector-studio-v2.schema.json
similarity index 100%
rename from src/shared/schemas/tools/object-vector-studio-v2.schema.json
rename to www/src/shared/schemas/tools/object-vector-studio-v2.schema.json
diff --git a/src/shared/schemas/tools/palette-browser.schema.json b/www/src/shared/schemas/tools/palette-browser.schema.json
similarity index 100%
rename from src/shared/schemas/tools/palette-browser.schema.json
rename to www/src/shared/schemas/tools/palette-browser.schema.json
diff --git a/src/shared/schemas/tools/palette-manager-v2.schema.json b/www/src/shared/schemas/tools/palette-manager-v2.schema.json
similarity index 100%
rename from src/shared/schemas/tools/palette-manager-v2.schema.json
rename to www/src/shared/schemas/tools/palette-manager-v2.schema.json
diff --git a/src/shared/schemas/tools/parallax-editor.schema.json b/www/src/shared/schemas/tools/parallax-editor.schema.json
similarity index 100%
rename from src/shared/schemas/tools/parallax-editor.schema.json
rename to www/src/shared/schemas/tools/parallax-editor.schema.json
diff --git a/src/shared/schemas/tools/performance-profiler.schema.json b/www/src/shared/schemas/tools/performance-profiler.schema.json
similarity index 100%
rename from src/shared/schemas/tools/performance-profiler.schema.json
rename to www/src/shared/schemas/tools/performance-profiler.schema.json
diff --git a/src/shared/schemas/tools/physics-sandbox.schema.json b/www/src/shared/schemas/tools/physics-sandbox.schema.json
similarity index 100%
rename from src/shared/schemas/tools/physics-sandbox.schema.json
rename to www/src/shared/schemas/tools/physics-sandbox.schema.json
diff --git a/src/shared/schemas/tools/replay-visualizer.schema.json b/www/src/shared/schemas/tools/replay-visualizer.schema.json
similarity index 100%
rename from src/shared/schemas/tools/replay-visualizer.schema.json
rename to www/src/shared/schemas/tools/replay-visualizer.schema.json
diff --git a/src/shared/schemas/tools/sprite-editor.schema.json b/www/src/shared/schemas/tools/sprite-editor.schema.json
similarity index 100%
rename from src/shared/schemas/tools/sprite-editor.schema.json
rename to www/src/shared/schemas/tools/sprite-editor.schema.json
diff --git a/src/shared/schemas/tools/state-inspector.schema.json b/www/src/shared/schemas/tools/state-inspector.schema.json
similarity index 100%
rename from src/shared/schemas/tools/state-inspector.schema.json
rename to www/src/shared/schemas/tools/state-inspector.schema.json
diff --git a/src/shared/schemas/tools/svg-asset-studio.schema.json b/www/src/shared/schemas/tools/svg-asset-studio.schema.json
similarity index 100%
rename from src/shared/schemas/tools/svg-asset-studio.schema.json
rename to www/src/shared/schemas/tools/svg-asset-studio.schema.json
diff --git a/src/shared/schemas/tools/text2speech-V2.schema.json b/www/src/shared/schemas/tools/text2speech-V2.schema.json
similarity index 100%
rename from src/shared/schemas/tools/text2speech-V2.schema.json
rename to www/src/shared/schemas/tools/text2speech-V2.schema.json
diff --git a/src/shared/schemas/tools/tile-map-editor.schema.json b/www/src/shared/schemas/tools/tile-map-editor.schema.json
similarity index 100%
rename from src/shared/schemas/tools/tile-map-editor.schema.json
rename to www/src/shared/schemas/tools/tile-map-editor.schema.json
diff --git a/src/shared/schemas/tools/vector-map-editor.schema.json b/www/src/shared/schemas/tools/vector-map-editor.schema.json
similarity index 100%
rename from src/shared/schemas/tools/vector-map-editor.schema.json
rename to www/src/shared/schemas/tools/vector-map-editor.schema.json