From c1290bc2c3d027ebe377014fa9812f0d7c243220 Mon Sep 17 00:00:00 2001 From: Alfa Team Date: Sun, 28 Jun 2026 21:51:08 -0400 Subject: [PATCH] Move browser shared schemas to www --- .../PROJECT_INSTRUCTIONS.md | 2 +- .../PROJECT_INSTRUCTIONS_VERSION.md | 3 +- .../ProjectInstructions/PROJECT_STATE.md | 14 ++-- .../backlog/BACKLOG_MASTER.md | 4 +- .../canonical_repository_structure.md | 5 +- ...shared-schemas-to-www_branch-validation.md | 48 +++++++++++++ ...-schemas-to-www_manual-validation-notes.md | 11 +++ ...ve-browser-shared-schemas-to-www_report.md | 67 ++++++++++++++++++ ...ed-schemas-to-www_requirement-checklist.md | 16 +++++ ...shared-schemas-to-www_validation-report.md | 19 +++++ dev/reports/codex_changed_files.txt | Bin 540 -> 7420 bytes dev/reports/codex_review.diff | Bin 94958 -> 65340 bytes dev/scripts/validate-json-contracts.mjs | 11 +-- ...ObjectVectorStudioV2DeleteCleanup.test.mjs | 2 +- dev/tests/tools/ToolManifestBoundary.test.mjs | 6 +- .../src}/shared/contracts/replayContracts.js | 0 .../schemas/tools/3d-asset-viewer.schema.json | 0 .../tools/3d-camera-path-editor.schema.json | 0 .../schemas/tools/3d-json-payload.schema.json | 0 .../tools/asset-manager-v2.schema.json | 0 .../schemas/tools/asset-pipeline.schema.json | 0 .../tools/audio-sfx-playground-v2.schema.json | 0 .../tools/collision-inspector-v2.schema.json | 0 .../tools/input-mapping-v2.schema.json | 0 .../schemas/tools/midi-studio-v2.schema.json | 0 .../tools/object-vector-studio-v2.schema.json | 0 .../schemas/tools/palette-browser.schema.json | 0 .../tools/palette-manager-v2.schema.json | 0 .../schemas/tools/parallax-editor.schema.json | 0 .../tools/performance-profiler.schema.json | 0 .../schemas/tools/physics-sandbox.schema.json | 0 .../tools/replay-visualizer.schema.json | 0 .../schemas/tools/sprite-editor.schema.json | 0 .../schemas/tools/state-inspector.schema.json | 0 .../tools/svg-asset-studio.schema.json | 0 .../schemas/tools/text2speech-V2.schema.json | 0 .../schemas/tools/tile-map-editor.schema.json | 0 .../tools/vector-map-editor.schema.json | 0 38 files changed, 188 insertions(+), 20 deletions(-) create mode 100644 dev/reports/PR_26180_OWNER_019b-move-browser-shared-schemas-to-www_branch-validation.md create mode 100644 dev/reports/PR_26180_OWNER_019b-move-browser-shared-schemas-to-www_manual-validation-notes.md create mode 100644 dev/reports/PR_26180_OWNER_019b-move-browser-shared-schemas-to-www_report.md create mode 100644 dev/reports/PR_26180_OWNER_019b-move-browser-shared-schemas-to-www_requirement-checklist.md create mode 100644 dev/reports/PR_26180_OWNER_019b-move-browser-shared-schemas-to-www_validation-report.md rename {src => www/src}/shared/contracts/replayContracts.js (100%) rename {src => www/src}/shared/schemas/tools/3d-asset-viewer.schema.json (100%) rename {src => www/src}/shared/schemas/tools/3d-camera-path-editor.schema.json (100%) rename {src => www/src}/shared/schemas/tools/3d-json-payload.schema.json (100%) rename {src => www/src}/shared/schemas/tools/asset-manager-v2.schema.json (100%) rename {src => www/src}/shared/schemas/tools/asset-pipeline.schema.json (100%) rename {src => www/src}/shared/schemas/tools/audio-sfx-playground-v2.schema.json (100%) rename {src => www/src}/shared/schemas/tools/collision-inspector-v2.schema.json (100%) rename {src => www/src}/shared/schemas/tools/input-mapping-v2.schema.json (100%) rename {src => www/src}/shared/schemas/tools/midi-studio-v2.schema.json (100%) rename {src => www/src}/shared/schemas/tools/object-vector-studio-v2.schema.json (100%) rename {src => www/src}/shared/schemas/tools/palette-browser.schema.json (100%) rename {src => www/src}/shared/schemas/tools/palette-manager-v2.schema.json (100%) rename {src => www/src}/shared/schemas/tools/parallax-editor.schema.json (100%) rename {src => www/src}/shared/schemas/tools/performance-profiler.schema.json (100%) rename {src => www/src}/shared/schemas/tools/physics-sandbox.schema.json (100%) rename {src => www/src}/shared/schemas/tools/replay-visualizer.schema.json (100%) rename {src => www/src}/shared/schemas/tools/sprite-editor.schema.json (100%) rename {src => www/src}/shared/schemas/tools/state-inspector.schema.json (100%) rename {src => www/src}/shared/schemas/tools/svg-asset-studio.schema.json (100%) rename {src => www/src}/shared/schemas/tools/text2speech-V2.schema.json (100%) rename {src => www/src}/shared/schemas/tools/tile-map-editor.schema.json (100%) rename {src => www/src}/shared/schemas/tools/vector-map-editor.schema.json (100%) 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/.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 369bfd8536b5a86c3640ea08cbabbcc85ef84506..2bfe2de587d617a4bf96413072ce546334075547 100644 GIT binary patch literal 7420 zcmd6sT~pIQ6o$_&&iGT(0?s&k3CK98h*K0VJEdO)OHr>xL8WlnFju4O0o z&JOLsK3kiWAMKQ!9gx zSR=C`dftb_fxWj6=<_XlK4vVwLRcTNDfXVgafXHG+^2Q}?=G^8oyAl4Jc9p2E89yx za_!a>vh9^TE&qB7m)wimwrekK$6nbs^iS+7ej{{k#yj>J?@aKa3{UOzbPn~*e(-gl zr-b_jQi^WRjk=8ctnV9H^%&eq%f$aeksasAx>l?R+D(`;Z?eE+Q1sinK!KaiV>|%=h-dlNoE7txjQ%fbnp;4jPZTzwmqKr_LSY8iDRUF3 zOP*z1iv3I8tNzF`x~ncJTWY;9YW{wu@loL^Dzjza5cLzXL0;v~kW5shtyAvTPR5Kn zvTJXc6LQfxa8EuOCr%U6h}Z8ryg%Q{aqM&~ZFoBSyuSvQGLkZ|biK-u%P|yZ*^_;3@3=gxZe~HoiDBKUJnO_dak*XDG$qINqvQNve&HDNdZBJ~ zKy_5y`dm9Cj`N%z)4Fv?5UK~&N9!?9n`ORFw-`KyerU2Ko+mSOQY@mqysD9-XeSNU3}HvZ%+wO`H#F|bzW8j4rF zmCj6jR*oIF>vIdoH^);wy47AXhAmaq*XJ0HbK!c#@;-9e%N?=b@x;ekovZNv1*6kRCjbBd literal 540 zcmb`^F%H5o3vksu%3=k{6qF`TsE|j^k(F480cRh~eQ!g$Z2LOkSWsw!1!M4N rAxo2dEjyvi82@aLY^)U%etT90Uvns&SPVX2phpa975#N*Si8RgZ|cEA diff --git a/dev/reports/codex_review.diff b/dev/reports/codex_review.diff index 69d690530f1a47be033cea58ed52adf81829d634..acd7de7f861a60f8119cc4c9a137ddfbc648546c 100644 GIT binary patch literal 65340 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 literal 94958 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 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