From b513b9af0d3b9a53b1c7ae5475899d6fc8e1d8a9 Mon Sep 17 00:00:00 2001 From: Alfa Team Date: Sun, 28 Jun 2026 21:32:19 -0400 Subject: [PATCH] Audit contracts and schemas obsolescence --- ...racts-schemas-obsolescence-audit_audit.csv | 90 + ...as-obsolescence-audit_branch-validation.md | 10 + ...olescence-audit_manual-validation-notes.md | 7 + ...racts-schemas-obsolescence-audit_report.md | 1113 ++ ...bsolescence-audit_requirement-checklist.md | 21 + ...as-obsolescence-audit_validation-report.md | 11 + dev/reports/codex_changed_files.txt | 743 +- dev/reports/codex_review.diff | 10670 ++-------------- 8 files changed, 2514 insertions(+), 10151 deletions(-) create mode 100644 dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_audit.csv create mode 100644 dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_branch-validation.md create mode 100644 dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_manual-validation-notes.md create mode 100644 dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_report.md create mode 100644 dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_requirement-checklist.md create mode 100644 dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_validation-report.md diff --git a/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_audit.csv b/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_audit.csv new file mode 100644 index 000000000..ead7a0be1 --- /dev/null +++ b/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_audit.csv @@ -0,0 +1,90 @@ +file,classification,recommendation,www_refs,api_refs,dev_test_refs,dev_script_refs,package_refs,db_api_superseded +"src/shared/contracts/auditEventContract.js","Active test/validation dependency","keep temporarily","0","0","2","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/backupSnapshotContract.js","Active test/validation dependency","keep temporarily","0","0","2","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/collaborationRoleContract.js","Active test/validation dependency","keep temporarily","0","0","2","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/creatorProfileContract.js","Active test/validation dependency","keep temporarily","0","0","2","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/downloadGrantContract.js","Active test/validation dependency","keep temporarily","0","0","2","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/entitlementContract.js","Active test/validation dependency","keep temporarily","0","0","9","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/gameManifestContract.js","Active test/validation dependency","keep temporarily","0","0","6","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/identityPermissionsContract.js","Active test/validation dependency","keep temporarily","0","0","25","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/installReceiptContract.js","Active test/validation dependency","keep temporarily","0","0","5","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/libraryItemContract.js","Active test/validation dependency","keep temporarily","0","0","6","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/marketplaceListingContract.js","Active test/validation dependency","keep temporarily","0","0","10","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/marketplaceTransactionBoundaryContract.js","Active test/validation dependency","keep temporarily","0","0","2","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/migrationPlanContract.js","Active test/validation dependency","keep temporarily","0","0","2","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/moderationQueueContract.js","Active test/validation dependency","keep temporarily","0","0","2","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/notificationContract.js","Active test/validation dependency","keep temporarily","0","0","2","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/organizationContract.js","Active test/validation dependency","keep temporarily","0","0","2","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/projectContract.js","Active test/validation dependency","keep temporarily","0","0","16","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/projectDataStoreContract.js","Active test/validation dependency","keep temporarily","0","0","2","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/projectWorkspaceRuntimeContract.js","Active test/validation dependency","keep temporarily","0","0","9","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/publishContract.js","Active test/validation dependency","keep temporarily","0","0","11","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/releaseContract.js","Active test/validation dependency","keep temporarily","0","0","12","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/replayContracts.js","Active browser/runtime dependency","move to www/","2","0","0","0","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." +"src/shared/contracts/restoreSnapshotContract.js","Active test/validation dependency","keep temporarily","0","0","2","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/reviewRatingContract.js","Active test/validation dependency","keep temporarily","0","0","2","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/sharedStateContracts.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/toolStateContract.js","Active test/validation dependency","keep temporarily","0","0","9","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/aiAssistantContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/animationStudioContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/assetManagerContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/assetPipelineContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/assetStudioContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/audioSfxPlaygroundContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/codeStudioContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/collisionInspectorContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/gameDesignStudioContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/inputMappingContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/inputStudioContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/localizationStudioContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/midiStudioContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/objectVectorStudioContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/paletteManagerContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/parallaxEditorContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/particleStudioContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/performanceProfilerContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/physicsSandboxContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/previewGeneratorContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/publishStudioContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/replayVisualizerContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/soundStudioContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/spriteEditorContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/stateInspectorContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/storageInspectorContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/textToSpeechContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/threeDAssetViewerContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/threeDCameraPathEditorContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/threeDJsonPayloadContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/tileMapEditorContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/toolContract.js","Active test/validation dependency","keep temporarily","0","0","9","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/toolContractsIndex.js","Active test/validation dependency","keep temporarily","0","0","7","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/workspaceManagerContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/tools/worldVectorStudioContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/updateChannelContract.js","Active test/validation dependency","keep temporarily","0","0","4","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/contracts/versionCompatibilityContract.js","Active test/validation dependency","keep temporarily","0","0","3","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/schemas/README.md","Unknown / needs Owner decision","move to dev/","0","0","0","0","0","Unknown; Owner decision required." +"src/shared/schemas/game.manifest.schema.json","Active test/validation dependency","keep temporarily","0","0","1","2","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/schemas/samples/sample.tool-payload.schema.json","Active test/validation dependency","keep temporarily","0","0","4","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." +"src/shared/schemas/tools/3d-asset-viewer.schema.json","Active browser/runtime dependency","move to www/","1","0","0","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." +"src/shared/schemas/tools/3d-camera-path-editor.schema.json","Active browser/runtime dependency","move to www/","1","0","0","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." +"src/shared/schemas/tools/3d-json-payload.schema.json","Active browser/runtime dependency","move to www/","1","0","0","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." +"src/shared/schemas/tools/README.md","Unknown / needs Owner decision","move to dev/","0","0","0","0","0","Unknown; Owner decision required." +"src/shared/schemas/tools/asset-manager-v2.schema.json","Active browser/runtime dependency","move to www/","1","0","1","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." +"src/shared/schemas/tools/asset-pipeline.schema.json","Active browser/runtime dependency","move to www/","1","0","0","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." +"src/shared/schemas/tools/audio-sfx-playground-v2.schema.json","Active browser/runtime dependency","move to www/","1","0","0","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." +"src/shared/schemas/tools/collision-inspector-v2.schema.json","Active browser/runtime dependency","move to www/","1","0","0","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." +"src/shared/schemas/tools/input-mapping-v2.schema.json","Active browser/runtime dependency","move to www/","1","0","0","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." +"src/shared/schemas/tools/midi-studio-v2.schema.json","Active browser/runtime dependency","move to www/","1","0","0","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." +"src/shared/schemas/tools/object-vector-studio-v2.schema.json","Active browser/runtime dependency","move to www/","2","0","1","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." +"src/shared/schemas/tools/palette-browser.schema.json","Active browser/runtime dependency","move to www/","1","0","1","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." +"src/shared/schemas/tools/palette-manager-v2.schema.json","Active browser/runtime dependency","move to www/","1","0","1","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." +"src/shared/schemas/tools/parallax-editor.schema.json","Active browser/runtime dependency","move to www/","1","0","0","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." +"src/shared/schemas/tools/performance-profiler.schema.json","Active browser/runtime dependency","move to www/","1","0","0","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." +"src/shared/schemas/tools/physics-sandbox.schema.json","Active browser/runtime dependency","move to www/","1","0","0","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." +"src/shared/schemas/tools/replay-visualizer.schema.json","Active browser/runtime dependency","move to www/","1","0","0","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." +"src/shared/schemas/tools/sprite-editor.schema.json","Active browser/runtime dependency","move to www/","1","0","1","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." +"src/shared/schemas/tools/state-inspector.schema.json","Active browser/runtime dependency","move to www/","1","0","0","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." +"src/shared/schemas/tools/svg-asset-studio.schema.json","Active browser/runtime dependency","move to www/","1","0","1","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." +"src/shared/schemas/tools/text2speech-V2.schema.json","Active browser/runtime dependency","move to www/","2","0","0","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." +"src/shared/schemas/tools/tile-map-editor.schema.json","Active browser/runtime dependency","move to www/","1","0","0","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." +"src/shared/schemas/tools/vector-map-editor.schema.json","Active browser/runtime dependency","move to www/","1","0","0","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." diff --git a/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_branch-validation.md b/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_branch-validation.md new file mode 100644 index 000000000..0fc2b82d6 --- /dev/null +++ b/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_branch-validation.md @@ -0,0 +1,10 @@ +# PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit Branch Validation + +| Check | Status | Evidence | +| --- | --- | --- | +| Current branch | PASS | `PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit` | +| Expected stacked base | PASS | Created from `PR_26180_OWNER_018-move-src-browser-to-www`. | +| Worktree start | PASS | Clean before report generation after preserving prior PR019 hard-stop artifacts in a stash. | +| Branch model | PASS | Owner stacked governance/report PR from previous dependency branch. | +| Protected dev workspace | PASS | No protected `dev/workspace/**` files were moved or modified by this audit. | +| Source movement | PASS | No files moved or deleted. | diff --git a/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_manual-validation-notes.md b/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_manual-validation-notes.md new file mode 100644 index 000000000..802923c5c --- /dev/null +++ b/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_manual-validation-notes.md @@ -0,0 +1,7 @@ +# PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit Manual Validation Notes + +- Reviewed active reference surfaces requested by Owner: `www/`, `api/`, `dev/tests/`, `dev/scripts/`, and `package.json` scripts. +- Treated `www/src/shared/toolbox/schemaOnlyToolPresetValidation.js` as a dynamic browser/runtime reference for all tool schema JSON files because it builds `/src/shared/schemas/tools/.schema.json` at runtime. +- No source files were moved, deleted, or rewritten. +- No protected developer workspace files were moved. +- Recommended next action is to split/move browser-consumed contracts and schemas to `www/src/shared/...` before retrying API-only migration. diff --git a/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_report.md b/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_report.md new file mode 100644 index 000000000..bc7a550c8 --- /dev/null +++ b/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_report.md @@ -0,0 +1,1113 @@ +# PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit Report + +## Executive Summary + +Reviewed 89 tracked files under `src/shared/contracts/**` and `src/shared/schemas/**` without moving or deleting any source file. + +The audit found active browser/runtime dependencies, active test/validation dependencies, and README/reference files needing Owner disposition. The current repository does not support a simple bulk move of these files to `api/`. + +A dynamic browser schema loader in `www/src/shared/toolbox/schemaOnlyToolPresetValidation.js` builds `/src/shared/schemas/tools/.schema.json`, so tool schema files must be treated as browser/runtime dependencies unless a follow-up PR replaces that runtime contract. + +## Classification Totals + +| Classification | Count | +| --- | ---: | +| Active browser/runtime dependency | 23 | +| Active test/validation dependency | 64 | +| Unknown / needs Owner decision | 2 | + +## Recommendation Totals + +| Recommendation | Count | +| --- | ---: | +| keep temporarily | 64 | +| move to dev/ | 2 | +| move to www/ | 23 | + +## Owner Recommendation + +- Do not bulk-move `src/shared/contracts/**` and `src/shared/schemas/**` to `api/`. +- Move browser/runtime-consumed contracts and tool schemas to `www/src/shared/...` or split browser-safe public contracts before API-only migration. +- Move API/server-only dependencies to `api/src/...` only after browser imports are separated. This audit found no direct `api/` references from the requested active surfaces. +- Keep test/validation-only files temporarily until their validation ownership is moved to `dev/` or replaced. +- Move README/reference docs to `dev/` or archive them after Owner review. +- Archive reference-free manifest-era artifacts only in a dedicated follow-up PR after Owner approval. + +## Protected Developer Workspace Confirmation + +No files under `dev/workspace/generated/**`, `dev/workspace/generated/tool-images/**`, `dev/workspace/zips/**`, or `dev/workspace/tmp/**` were moved or modified by this audit. + +## File-by-File Audit + +| File | Classification | www refs | api refs | dev/tests refs | dev/scripts refs | package refs | DB/API superseded? | Recommendation | +| --- | --- | ---: | ---: | ---: | ---: | ---: | --- | --- | +| `src/shared/contracts/auditEventContract.js` | Active test/validation dependency | 0 | 0 | 2 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/backupSnapshotContract.js` | Active test/validation dependency | 0 | 0 | 2 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/collaborationRoleContract.js` | Active test/validation dependency | 0 | 0 | 2 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/creatorProfileContract.js` | Active test/validation dependency | 0 | 0 | 2 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/downloadGrantContract.js` | Active test/validation dependency | 0 | 0 | 2 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/entitlementContract.js` | Active test/validation dependency | 0 | 0 | 9 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/gameManifestContract.js` | Active test/validation dependency | 0 | 0 | 6 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/identityPermissionsContract.js` | Active test/validation dependency | 0 | 0 | 25 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/installReceiptContract.js` | Active test/validation dependency | 0 | 0 | 5 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/libraryItemContract.js` | Active test/validation dependency | 0 | 0 | 6 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/marketplaceListingContract.js` | Active test/validation dependency | 0 | 0 | 10 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/marketplaceTransactionBoundaryContract.js` | Active test/validation dependency | 0 | 0 | 2 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/migrationPlanContract.js` | Active test/validation dependency | 0 | 0 | 2 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/moderationQueueContract.js` | Active test/validation dependency | 0 | 0 | 2 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/notificationContract.js` | Active test/validation dependency | 0 | 0 | 2 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/organizationContract.js` | Active test/validation dependency | 0 | 0 | 2 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/projectContract.js` | Active test/validation dependency | 0 | 0 | 16 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/projectDataStoreContract.js` | Active test/validation dependency | 0 | 0 | 2 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/projectWorkspaceRuntimeContract.js` | Active test/validation dependency | 0 | 0 | 9 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/publishContract.js` | Active test/validation dependency | 0 | 0 | 11 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/releaseContract.js` | Active test/validation dependency | 0 | 0 | 12 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/replayContracts.js` | Active browser/runtime dependency | 2 | 0 | 0 | 0 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | +| `src/shared/contracts/restoreSnapshotContract.js` | Active test/validation dependency | 0 | 0 | 2 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/reviewRatingContract.js` | Active test/validation dependency | 0 | 0 | 2 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/sharedStateContracts.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/toolStateContract.js` | Active test/validation dependency | 0 | 0 | 9 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/aiAssistantContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/animationStudioContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/assetManagerContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/assetPipelineContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/assetStudioContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/audioSfxPlaygroundContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/codeStudioContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/collisionInspectorContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/gameDesignStudioContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/inputMappingContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/inputStudioContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/localizationStudioContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/midiStudioContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/objectVectorStudioContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/paletteManagerContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/parallaxEditorContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/particleStudioContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/performanceProfilerContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/physicsSandboxContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/previewGeneratorContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/publishStudioContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/replayVisualizerContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/soundStudioContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/spriteEditorContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/stateInspectorContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/storageInspectorContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/textToSpeechContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/threeDAssetViewerContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/threeDCameraPathEditorContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/threeDJsonPayloadContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/tileMapEditorContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/toolContract.js` | Active test/validation dependency | 0 | 0 | 9 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/toolContractsIndex.js` | Active test/validation dependency | 0 | 0 | 7 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/workspaceManagerContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/tools/worldVectorStudioContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/updateChannelContract.js` | Active test/validation dependency | 0 | 0 | 4 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/contracts/versionCompatibilityContract.js` | Active test/validation dependency | 0 | 0 | 3 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/schemas/README.md` | Unknown / needs Owner decision | 0 | 0 | 0 | 0 | 0 | Unknown; Owner decision required. | move to dev/ | +| `src/shared/schemas/game.manifest.schema.json` | Active test/validation dependency | 0 | 0 | 1 | 2 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/schemas/samples/sample.tool-payload.schema.json` | Active test/validation dependency | 0 | 0 | 4 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | +| `src/shared/schemas/tools/3d-asset-viewer.schema.json` | Active browser/runtime dependency | 1 | 0 | 0 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | +| `src/shared/schemas/tools/3d-camera-path-editor.schema.json` | Active browser/runtime dependency | 1 | 0 | 0 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | +| `src/shared/schemas/tools/3d-json-payload.schema.json` | Active browser/runtime dependency | 1 | 0 | 0 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | +| `src/shared/schemas/tools/README.md` | Unknown / needs Owner decision | 0 | 0 | 0 | 0 | 0 | Unknown; Owner decision required. | move to dev/ | +| `src/shared/schemas/tools/asset-manager-v2.schema.json` | Active browser/runtime dependency | 1 | 0 | 1 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | +| `src/shared/schemas/tools/asset-pipeline.schema.json` | Active browser/runtime dependency | 1 | 0 | 0 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | +| `src/shared/schemas/tools/audio-sfx-playground-v2.schema.json` | Active browser/runtime dependency | 1 | 0 | 0 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | +| `src/shared/schemas/tools/collision-inspector-v2.schema.json` | Active browser/runtime dependency | 1 | 0 | 0 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | +| `src/shared/schemas/tools/input-mapping-v2.schema.json` | Active browser/runtime dependency | 1 | 0 | 0 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | +| `src/shared/schemas/tools/midi-studio-v2.schema.json` | Active browser/runtime dependency | 1 | 0 | 0 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | +| `src/shared/schemas/tools/object-vector-studio-v2.schema.json` | Active browser/runtime dependency | 2 | 0 | 1 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | +| `src/shared/schemas/tools/palette-browser.schema.json` | Active browser/runtime dependency | 1 | 0 | 1 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | +| `src/shared/schemas/tools/palette-manager-v2.schema.json` | Active browser/runtime dependency | 1 | 0 | 1 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | +| `src/shared/schemas/tools/parallax-editor.schema.json` | Active browser/runtime dependency | 1 | 0 | 0 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | +| `src/shared/schemas/tools/performance-profiler.schema.json` | Active browser/runtime dependency | 1 | 0 | 0 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | +| `src/shared/schemas/tools/physics-sandbox.schema.json` | Active browser/runtime dependency | 1 | 0 | 0 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | +| `src/shared/schemas/tools/replay-visualizer.schema.json` | Active browser/runtime dependency | 1 | 0 | 0 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | +| `src/shared/schemas/tools/sprite-editor.schema.json` | Active browser/runtime dependency | 1 | 0 | 1 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | +| `src/shared/schemas/tools/state-inspector.schema.json` | Active browser/runtime dependency | 1 | 0 | 0 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | +| `src/shared/schemas/tools/svg-asset-studio.schema.json` | Active browser/runtime dependency | 1 | 0 | 1 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | +| `src/shared/schemas/tools/text2speech-V2.schema.json` | Active browser/runtime dependency | 2 | 0 | 0 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | +| `src/shared/schemas/tools/tile-map-editor.schema.json` | Active browser/runtime dependency | 1 | 0 | 0 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | +| `src/shared/schemas/tools/vector-map-editor.schema.json` | Active browser/runtime dependency | 1 | 0 | 0 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | + +## Reference Detail + +### src/shared/contracts/auditEventContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/AuditEventContract.test.mjs:28
dev/tests/shared/ContractChainValidation.test.mjs:11 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/backupSnapshotContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/BackupSnapshotContract.test.mjs:32
dev/tests/shared/ContractChainValidation.test.mjs:14 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/collaborationRoleContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/CollaborationRoleContract.test.mjs:29
dev/tests/shared/ContractChainValidation.test.mjs:17 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/creatorProfileContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:20
dev/tests/shared/CreatorProfileContract.test.mjs:27 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/downloadGrantContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:23
dev/tests/shared/DownloadGrantContract.test.mjs:42 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/entitlementContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:26
dev/tests/shared/DownloadGrantContract.test.mjs:18
dev/tests/shared/EntitlementContract.test.mjs:39
dev/tests/shared/InstallReceiptContract.test.mjs:18
dev/tests/shared/LibraryItemContract.test.mjs:18
dev/tests/shared/MarketplaceTransactionBoundaryContract.test.mjs:12
dev/tests/shared/MigrationPlanContract.test.mjs:18
dev/tests/shared/UpdateChannelContract.test.mjs:18
dev/tests/shared/VersionCompatibilityContract.test.mjs:18 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/gameManifestContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/GameManifestContract.test.mjs:41
dev/tests/shared/ProjectWorkspaceManifestHandoffBoundaryValidation.test.mjs:12
dev/tests/shared/ReleaseContract.test.mjs:18
dev/tests/shared/Wave1ToolContractBaselineValidation.test.mjs:12
dev/tests/shared/Wave2ToolContractBaselineValidation.test.mjs:12
dev/tests/shared/Wave3ToolContractBaselineValidation.test.mjs:12 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/identityPermissionsContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/AuditEventContract.test.mjs:13
dev/tests/shared/BackupSnapshotContract.test.mjs:14
dev/tests/shared/CollaborationRoleContract.test.mjs:13
dev/tests/shared/CreatorProfileContract.test.mjs:13
dev/tests/shared/DownloadGrantContract.test.mjs:14
dev/tests/shared/EntitlementContract.test.mjs:14
dev/tests/shared/GameManifestContract.test.mjs:13
dev/tests/shared/IdentityPermissionsContract.test.mjs:30
dev/tests/shared/InstallReceiptContract.test.mjs:14
dev/tests/shared/LibraryItemContract.test.mjs:14
dev/tests/shared/MarketplaceListingContract.test.mjs:14
dev/tests/shared/MarketplaceTransactionBoundaryContract.test.mjs:16
dev/tests/shared/MigrationPlanContract.test.mjs:14
dev/tests/shared/ModerationQueueContract.test.mjs:13
dev/tests/shared/NotificationContract.test.mjs:13
dev/tests/shared/OrganizationContract.test.mjs:13
dev/tests/shared/ProjectContract.test.mjs:14
dev/tests/shared/PublishContract.test.mjs:13
dev/tests/shared/ReleaseContract.test.mjs:13
dev/tests/shared/RestoreSnapshotContract.test.mjs:14
dev/tests/shared/ReviewRatingContract.test.mjs:13
dev/tests/shared/ToolStateContract.test.mjs:13
dev/tests/shared/UpdateChannelContract.test.mjs:14
dev/tests/shared/VersionCompatibilityContract.test.mjs:14
dev/tests/shared/tools/ToolContractCoverage.test.mjs:13 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/installReceiptContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:29
dev/tests/shared/InstallReceiptContract.test.mjs:42
dev/tests/shared/MigrationPlanContract.test.mjs:22
dev/tests/shared/UpdateChannelContract.test.mjs:22
dev/tests/shared/VersionCompatibilityContract.test.mjs:22 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/libraryItemContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:32
dev/tests/shared/InstallReceiptContract.test.mjs:46
dev/tests/shared/LibraryItemContract.test.mjs:41
dev/tests/shared/MigrationPlanContract.test.mjs:26
dev/tests/shared/UpdateChannelContract.test.mjs:26
dev/tests/shared/VersionCompatibilityContract.test.mjs:26 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/marketplaceListingContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:35
dev/tests/shared/DownloadGrantContract.test.mjs:46
dev/tests/shared/EntitlementContract.test.mjs:43
dev/tests/shared/InstallReceiptContract.test.mjs:50
dev/tests/shared/LibraryItemContract.test.mjs:45
dev/tests/shared/MarketplaceListingContract.test.mjs:42
dev/tests/shared/MarketplaceTransactionBoundaryContract.test.mjs:19
dev/tests/shared/MigrationPlanContract.test.mjs:30
dev/tests/shared/UpdateChannelContract.test.mjs:30
dev/tests/shared/VersionCompatibilityContract.test.mjs:30 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/marketplaceTransactionBoundaryContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:38
dev/tests/shared/MarketplaceTransactionBoundaryContract.test.mjs:37 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/migrationPlanContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:41
dev/tests/shared/MigrationPlanContract.test.mjs:76 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/moderationQueueContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:44
dev/tests/shared/ModerationQueueContract.test.mjs:27 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/notificationContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:47
dev/tests/shared/NotificationContract.test.mjs:29 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/organizationContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:50
dev/tests/shared/OrganizationContract.test.mjs:27 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/projectContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:53
dev/tests/shared/DownloadGrantContract.test.mjs:55
dev/tests/shared/EntitlementContract.test.mjs:19
dev/tests/shared/GameManifestContract.test.mjs:47
dev/tests/shared/InstallReceiptContract.test.mjs:59
dev/tests/shared/LibraryItemContract.test.mjs:54
dev/tests/shared/MarketplaceListingContract.test.mjs:20
dev/tests/shared/MigrationPlanContract.test.mjs:39
dev/tests/shared/ProjectContract.test.mjs:44
dev/tests/shared/ProjectWorkspaceRuntimeContract.test.mjs:12
dev/tests/shared/PublishContract.test.mjs:19
dev/tests/shared/ReleaseContract.test.mjs:24
dev/tests/shared/ToolStateContract.test.mjs:19
dev/tests/shared/UpdateChannelContract.test.mjs:39
dev/tests/shared/VersionCompatibilityContract.test.mjs:39
dev/tests/shared/tools/ToolContractCoverage.test.mjs:18 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/projectDataStoreContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/InMemoryProjectDataStore.test.mjs:14
dev/tests/shared/ProjectDataStoreContract.test.mjs:34 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/projectWorkspaceRuntimeContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/ProjectWorkspaceLaunchBoundaryValidation.test.mjs:12
dev/tests/shared/ProjectWorkspaceLifecycleValidation.test.mjs:13
dev/tests/shared/ProjectWorkspaceManifestHandoffBoundaryValidation.test.mjs:15
dev/tests/shared/ProjectWorkspaceRuntimeContract.test.mjs:40
dev/tests/shared/ProjectWorkspaceStateBoundaryValidation.test.mjs:17
dev/tests/shared/ProjectWorkspaceToolComplianceValidation.test.mjs:12
dev/tests/shared/Wave1ToolContractBaselineValidation.test.mjs:15
dev/tests/shared/Wave2ToolContractBaselineValidation.test.mjs:15
dev/tests/shared/Wave3ToolContractBaselineValidation.test.mjs:15 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/publishContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:56
dev/tests/shared/DownloadGrantContract.test.mjs:50
dev/tests/shared/EntitlementContract.test.mjs:47
dev/tests/shared/InstallReceiptContract.test.mjs:54
dev/tests/shared/LibraryItemContract.test.mjs:49
dev/tests/shared/MarketplaceListingContract.test.mjs:46
dev/tests/shared/MarketplaceTransactionBoundaryContract.test.mjs:40
dev/tests/shared/MigrationPlanContract.test.mjs:34
dev/tests/shared/PublishContract.test.mjs:38
dev/tests/shared/UpdateChannelContract.test.mjs:34
dev/tests/shared/VersionCompatibilityContract.test.mjs:34 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/releaseContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:59
dev/tests/shared/DownloadGrantContract.test.mjs:59
dev/tests/shared/EntitlementContract.test.mjs:51
dev/tests/shared/InstallReceiptContract.test.mjs:63
dev/tests/shared/LibraryItemContract.test.mjs:58
dev/tests/shared/MarketplaceListingContract.test.mjs:50
dev/tests/shared/MarketplaceTransactionBoundaryContract.test.mjs:43
dev/tests/shared/MigrationPlanContract.test.mjs:43
dev/tests/shared/PublishContract.test.mjs:42
dev/tests/shared/ReleaseContract.test.mjs:46
dev/tests/shared/UpdateChannelContract.test.mjs:43
dev/tests/shared/VersionCompatibilityContract.test.mjs:43 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/replayContracts.js + +- Classification: Active browser/runtime dependency +- Recommendation: move to www/ +- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. +- www refs: www/src/engine/replay/ReplayModel.js:9
www/src/engine/replay/ReplayTimeline.js:10 +- api refs: None +- dev/tests refs: None +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/restoreSnapshotContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:62
dev/tests/shared/RestoreSnapshotContract.test.mjs:31 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/reviewRatingContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:65
dev/tests/shared/ReviewRatingContract.test.mjs:28 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/sharedStateContracts.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/SharedFoundationCombinedPass.test.mjs:45 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/toolStateContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/GameManifestContract.test.mjs:51
dev/tests/shared/ProjectWorkspaceRuntimeContract.test.mjs:18
dev/tests/shared/ProjectWorkspaceStateBoundaryValidation.test.mjs:20
dev/tests/shared/ProjectWorkspaceToolComplianceValidation.test.mjs:15
dev/tests/shared/ToolStateContract.test.mjs:54
dev/tests/shared/Wave1ToolStateBoundaryValidation.test.mjs:12
dev/tests/shared/Wave2ToolStateBoundaryValidation.test.mjs:12
dev/tests/shared/Wave3ToolStateBoundaryValidation.test.mjs:12
dev/tests/shared/tools/ToolContractCoverage.test.mjs:23 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/aiAssistantContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/tools/AiAssistantToolContract.test.mjs:9 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/animationStudioContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/tools/AnimationStudioToolContract.test.mjs:9 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/assetManagerContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/tools/AssetManagerV2ToolContract.test.mjs:9 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/assetPipelineContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/tools/AssetPipelineToolContract.test.mjs:9 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/assetStudioContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/tools/AssetStudioToolContract.test.mjs:9 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/audioSfxPlaygroundContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/tools/AudioSfxPlaygroundV2ToolContract.test.mjs:9 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/codeStudioContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/tools/CodeStudioToolContract.test.mjs:9 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/collisionInspectorContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/tools/CollisionInspectorV2ToolContract.test.mjs:9 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/gameDesignStudioContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/tools/GameDesignStudioToolContract.test.mjs:9 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/inputMappingContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/tools/InputMappingV2ToolContract.test.mjs:9 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/inputStudioContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/tools/InputStudioToolContract.test.mjs:9 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/localizationStudioContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/tools/LocalizationStudioToolContract.test.mjs:9 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/midiStudioContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/tools/MidiStudioV2ToolContract.test.mjs:9 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/objectVectorStudioContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/tools/ObjectVectorStudioV2ToolContract.test.mjs:9 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/paletteManagerContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/tools/PaletteManagerV2ToolContract.test.mjs:9 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/parallaxEditorContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/tools/ParallaxEditorToolContract.test.mjs:9 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/particleStudioContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/tools/ParticleStudioToolContract.test.mjs:9 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/performanceProfilerContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/tools/PerformanceProfilerToolContract.test.mjs:9 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/physicsSandboxContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/tools/PhysicsSandboxToolContract.test.mjs:9 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/previewGeneratorContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/tools/PreviewGeneratorV2ToolContract.test.mjs:9 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/publishStudioContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/tools/PublishStudioToolContract.test.mjs:9 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/replayVisualizerContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/tools/ReplayVisualizerToolContract.test.mjs:9 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/soundStudioContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/tools/SoundStudioToolContract.test.mjs:9 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/spriteEditorContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/tools/SpriteEditorToolContract.test.mjs:9 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/stateInspectorContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/tools/StateInspectorToolContract.test.mjs:9 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/storageInspectorContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/tools/StorageInspectorV2ToolContract.test.mjs:9 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/textToSpeechContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/tools/Text2SpeechV2ToolContract.test.mjs:9 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/threeDAssetViewerContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/tools/ThreeDAssetViewerToolContract.test.mjs:9 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/threeDCameraPathEditorContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/tools/ThreeDCameraPathEditorToolContract.test.mjs:9 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/threeDJsonPayloadContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/tools/ThreeDJsonPayloadToolContract.test.mjs:9 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/tileMapEditorContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/tools/TileMapEditorToolContract.test.mjs:9 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/toolContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/ProjectWorkspaceToolComplianceValidation.test.mjs:22
dev/tests/shared/Wave1ToolContractBaselineValidation.test.mjs:25
dev/tests/shared/Wave1ToolStateBoundaryValidation.test.mjs:15
dev/tests/shared/Wave2ToolContractBaselineValidation.test.mjs:25
dev/tests/shared/Wave2ToolStateBoundaryValidation.test.mjs:15
dev/tests/shared/Wave3ToolContractBaselineValidation.test.mjs:25
dev/tests/shared/Wave3ToolStateBoundaryValidation.test.mjs:15
dev/tests/shared/tools/ToolContractCoverage.test.mjs:55
dev/tests/shared/tools/ToolOutputDeclarationContract.test.mjs:17 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/toolContractsIndex.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/ProjectWorkspaceToolComplianceValidation.test.mjs:18
dev/tests/shared/ProjectWorkspaceToolRegistrationValidation.test.mjs:10
dev/tests/shared/Wave1ToolContractBaselineValidation.test.mjs:18
dev/tests/shared/Wave2ToolContractBaselineValidation.test.mjs:18
dev/tests/shared/Wave3ToolContractBaselineValidation.test.mjs:18
dev/tests/shared/tools/ToolContractCoverage.test.mjs:60
dev/tests/shared/tools/ToolOutputDeclarationContract.test.mjs:21 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/workspaceManagerContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/tools/WorkspaceManagerV2ToolContract.test.mjs:9 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/tools/worldVectorStudioContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/tools/WorldVectorStudioV2ToolContract.test.mjs:9 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/updateChannelContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:68
dev/tests/shared/MigrationPlanContract.test.mjs:47
dev/tests/shared/UpdateChannelContract.test.mjs:64
dev/tests/shared/VersionCompatibilityContract.test.mjs:47 +- dev/scripts refs: None +- package refs: None + +### src/shared/contracts/versionCompatibilityContract.js + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:71
dev/tests/shared/MigrationPlanContract.test.mjs:51
dev/tests/shared/VersionCompatibilityContract.test.mjs:73 +- dev/scripts refs: None +- package refs: None + +### src/shared/schemas/README.md + +- Classification: Unknown / needs Owner decision +- Recommendation: move to dev/ +- DB/API migration supersedes: Unknown; Owner decision required. +- www refs: None +- api refs: None +- dev/tests refs: None +- dev/scripts refs: None +- package refs: None + +### src/shared/schemas/game.manifest.schema.json + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/fixtures/workspace-v2/uat.manifest.json:2 +- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:650
dev/scripts/validate-json-contracts.mjs:662 +- package refs: None + +### src/shared/schemas/samples/sample.tool-payload.schema.json + +- Classification: Active test/validation dependency +- Recommendation: keep temporarily +- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. +- www refs: None +- api refs: None +- dev/tests refs: dev/tests/tools/ToolManifestBoundary.test.mjs:12
dev/tests/validation/samples.curriculum.validation.json:2
dev/tests/validation/samples.runtime.validation.report.json:2
dev/tests/validation/samples.shared.boundaries.report.json:2 +- dev/scripts refs: None +- package refs: None + +### src/shared/schemas/tools/3d-asset-viewer.schema.json + +- Classification: Active browser/runtime dependency +- Recommendation: move to www/ +- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. +- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) +- api refs: None +- dev/tests refs: None +- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) +- package refs: None + +### src/shared/schemas/tools/3d-camera-path-editor.schema.json + +- Classification: Active browser/runtime dependency +- Recommendation: move to www/ +- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. +- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) +- api refs: None +- dev/tests refs: None +- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) +- package refs: None + +### src/shared/schemas/tools/3d-json-payload.schema.json + +- Classification: Active browser/runtime dependency +- Recommendation: move to www/ +- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. +- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) +- api refs: None +- dev/tests refs: None +- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) +- package refs: None + +### src/shared/schemas/tools/README.md + +- Classification: Unknown / needs Owner decision +- Recommendation: move to dev/ +- DB/API migration supersedes: Unknown; Owner decision required. +- www refs: None +- api refs: None +- dev/tests refs: None +- dev/scripts refs: None +- package refs: None + +### src/shared/schemas/tools/asset-manager-v2.schema.json + +- Classification: Active browser/runtime dependency +- Recommendation: move to www/ +- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. +- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) +- api refs: None +- dev/tests refs: dev/tests/fixtures/workspace-v2/uat.manifest.json:59 +- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) +- package refs: None + +### src/shared/schemas/tools/asset-pipeline.schema.json + +- Classification: Active browser/runtime dependency +- Recommendation: move to www/ +- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. +- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) +- api refs: None +- dev/tests refs: None +- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) +- package refs: None + +### src/shared/schemas/tools/audio-sfx-playground-v2.schema.json + +- Classification: Active browser/runtime dependency +- Recommendation: move to www/ +- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. +- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) +- api refs: None +- dev/tests refs: None +- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) +- package refs: None + +### src/shared/schemas/tools/collision-inspector-v2.schema.json + +- Classification: Active browser/runtime dependency +- Recommendation: move to www/ +- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. +- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) +- api refs: None +- dev/tests refs: None +- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) +- package refs: None + +### src/shared/schemas/tools/input-mapping-v2.schema.json + +- Classification: Active browser/runtime dependency +- Recommendation: move to www/ +- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. +- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) +- api refs: None +- dev/tests refs: None +- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) +- package refs: None + +### src/shared/schemas/tools/midi-studio-v2.schema.json + +- Classification: Active browser/runtime dependency +- Recommendation: move to www/ +- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. +- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) +- api refs: None +- dev/tests refs: None +- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) +- package refs: None + +### src/shared/schemas/tools/object-vector-studio-v2.schema.json + +- Classification: Active browser/runtime dependency +- Recommendation: move to www/ +- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. +- www refs: www/src/engine/rendering/ObjectVectorRuntimeAssetService.js:14
www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) +- api refs: None +- dev/tests refs: dev/tests/tools/ObjectVectorStudioV2DeleteCleanup.test.mjs:60 +- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) +- package refs: None + +### src/shared/schemas/tools/palette-browser.schema.json + +- Classification: Active browser/runtime dependency +- Recommendation: move to www/ +- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. +- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) +- api refs: None +- dev/tests refs: dev/tests/tools/ToolManifestBoundary.test.mjs:11 +- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) +- package refs: None + +### src/shared/schemas/tools/palette-manager-v2.schema.json + +- Classification: Active browser/runtime dependency +- Recommendation: move to www/ +- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. +- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) +- api refs: None +- dev/tests refs: dev/tests/fixtures/workspace-v2/uat.manifest.json:17 +- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) +- package refs: None + +### src/shared/schemas/tools/parallax-editor.schema.json + +- Classification: Active browser/runtime dependency +- Recommendation: move to www/ +- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. +- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) +- api refs: None +- dev/tests refs: None +- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) +- package refs: None + +### src/shared/schemas/tools/performance-profiler.schema.json + +- Classification: Active browser/runtime dependency +- Recommendation: move to www/ +- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. +- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) +- api refs: None +- dev/tests refs: None +- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) +- package refs: None + +### src/shared/schemas/tools/physics-sandbox.schema.json + +- Classification: Active browser/runtime dependency +- Recommendation: move to www/ +- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. +- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) +- api refs: None +- dev/tests refs: None +- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) +- package refs: None + +### src/shared/schemas/tools/replay-visualizer.schema.json + +- Classification: Active browser/runtime dependency +- Recommendation: move to www/ +- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. +- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) +- api refs: None +- dev/tests refs: None +- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) +- package refs: None + +### src/shared/schemas/tools/sprite-editor.schema.json + +- Classification: Active browser/runtime dependency +- Recommendation: move to www/ +- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. +- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) +- api refs: None +- dev/tests refs: dev/tests/tools/ToolManifestBoundary.test.mjs:14 +- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) +- package refs: None + +### src/shared/schemas/tools/state-inspector.schema.json + +- Classification: Active browser/runtime dependency +- Recommendation: move to www/ +- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. +- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) +- api refs: None +- dev/tests refs: None +- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) +- package refs: None + +### src/shared/schemas/tools/svg-asset-studio.schema.json + +- Classification: Active browser/runtime dependency +- Recommendation: move to www/ +- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. +- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) +- api refs: None +- dev/tests refs: dev/tests/tools/ToolManifestBoundary.test.mjs:13 +- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) +- package refs: None + +### src/shared/schemas/tools/text2speech-V2.schema.json + +- Classification: Active browser/runtime dependency +- Recommendation: move to www/ +- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. +- www refs: www/src/engine/audio/TextToSpeechDefaults.js:2
www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) +- api refs: None +- dev/tests refs: None +- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) +- package refs: None + +### src/shared/schemas/tools/tile-map-editor.schema.json + +- Classification: Active browser/runtime dependency +- Recommendation: move to www/ +- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. +- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) +- api refs: None +- dev/tests refs: None +- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) +- package refs: None + +### src/shared/schemas/tools/vector-map-editor.schema.json + +- Classification: Active browser/runtime dependency +- Recommendation: move to www/ +- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. +- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) +- api refs: None +- dev/tests refs: None +- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) +- package refs: None diff --git a/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_requirement-checklist.md b/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_requirement-checklist.md new file mode 100644 index 000000000..72e1b49cf --- /dev/null +++ b/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_requirement-checklist.md @@ -0,0 +1,21 @@ +# PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit Requirement Checklist + +| Requirement | Status | Evidence | +| --- | --- | --- | +| Base is PR018 | PASS | Branch created from `PR_26180_OWNER_018-move-src-browser-to-www`. | +| List every file under src/shared/contracts and src/shared/schemas | PASS | Detailed report and CSV list 89 tracked files. | +| Identify references from www | PASS | Exact and dynamic browser schema references captured. | +| Identify references from api | PASS | No direct active `api/` references found from requested surfaces. | +| Identify references from dev/tests | PASS | Test references captured per file. | +| Identify references from dev/scripts | PASS | Script references captured per file, including dynamic schema validation path. | +| Identify package script references | PASS | `package.json` scanned; no package refs found. | +| Classify every file | PASS | Classification totals: Active test/validation dependency: 64; Active browser/runtime dependency: 23; Unknown / needs Owner decision: 2. | +| Determine DB/API supersession | PASS | Per-file supersession recommendation documented. | +| Recommend exact action per file | PASS | Per-file action documented as move to www, move to dev, or keep temporarily. | +| Do not delete active runtime/test references | PASS | No files deleted. | +| Do not move browser-consumed files into api | PASS | No files moved; report recommends browser-consumed files move to `www/`. | +| Do not leave authoritative product data in browser-owned files | PASS | Audit recommends preserving boundary and does not add product data. | +| Preserve protected dev workspace | PASS | No protected workspace files moved. | +| git diff --check | PASS | Passed. | +| npm run validate:canonical-structure | PASS | Passed with 0 blocking violations. | +| Required reports and ZIP | PASS | Reports generated under `dev/reports/`; ZIP generated under `dev/workspace/zips/`. | diff --git a/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_validation-report.md b/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_validation-report.md new file mode 100644 index 000000000..378c357df --- /dev/null +++ b/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_validation-report.md @@ -0,0 +1,11 @@ +# PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit Validation Report + +| Validation | Result | Notes | +| --- | --- | --- | +| Startup validation | PASS | Loaded Project Instructions v2026.06.28.018 from repository; cached memory discarded. | +| Branch/base validation | PASS | `PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit` from `PR_26180_OWNER_018-move-src-browser-to-www`. | +| Audit generation | PASS | 89 tracked contracts/schema files audited. | +| Protected workspace check | PASS | No protected `dev/workspace/generated/**`, `dev/workspace/zips/**`, or `dev/workspace/tmp/**` movement. | +| git diff --check | PASS | No whitespace errors. | +| npm run validate:canonical-structure | PASS | Blocking violations: 0; approved legacy exceptions: 499. | +| Runtime/API/UI/database changes | PASS | None. Governance/report-only audit. | diff --git a/dev/reports/codex_changed_files.txt b/dev/reports/codex_changed_files.txt index d516995cc..369bfd853 100644 --- a/dev/reports/codex_changed_files.txt +++ b/dev/reports/codex_changed_files.txt @@ -1,737 +1,6 @@ -M api/API_RUNTIME_BOUNDARY.md -M api/admin/admin-notes-menu.mjs -M api/guest-seeds/tool-metadata-inventory.js -M api/server/local-api-router.mjs -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/build/ProjectInstructions/repository/www_migration_map.md -A dev/reports/PR_26180_OWNER_018-move-src-browser-to-www_branch-validation.md -A dev/reports/PR_26180_OWNER_018-move-src-browser-to-www_manual-validation-notes.md -A dev/reports/PR_26180_OWNER_018-move-src-browser-to-www_report.md -A dev/reports/PR_26180_OWNER_018-move-src-browser-to-www_requirement-checklist.md -A dev/reports/PR_26180_OWNER_018-move-src-browser-to-www_validation-report.md -M dev/reports/asset_ownership_strategy_validation.txt -M dev/scripts/run-platform-validation-suite.mjs -M dev/scripts/validate-asset-ownership-strategy.mjs -M dev/scripts/validate-browser-env-agnostic.mjs -M dev/scripts/validate-canonical-repository-structure.mjs -M dev/scripts/validate-dev-runtime-boundary.mjs -M dev/tests/ai/AIBehaviors.test.mjs -M dev/tests/assets/AssetLoaderSystem.test.mjs -M dev/tests/audio/AudioService.test.mjs -M dev/tests/combat/Combat.test.mjs -M dev/tests/config/ConfigStore.test.mjs -M dev/tests/core/BackgroundImageAndFullscreenBezel.test.mjs -M dev/tests/core/Engine2DCapabilityCombinedFoundation.test.mjs -M dev/tests/core/Engine3DPhysicsHookIsolation.test.mjs -M dev/tests/core/EngineCoreBoundaryBaseline.test.mjs -M dev/tests/core/EngineFullscreen.test.mjs -M dev/tests/core/EngineSceneLifecycle.test.mjs -M dev/tests/core/EngineTiming.test.mjs -M dev/tests/core/Section1FinalResidueStructure.test.mjs -M dev/tests/dev-runtime/AdminNotesBoundary.test.mjs -M dev/tests/dev-runtime/ApiMenuPathCleanup.test.mjs -M dev/tests/dev-runtime/ArchitectureCleanupApiNavInvitations.test.mjs -M dev/tests/dev-runtime/PublicApiUrlClient.test.mjs -M dev/tests/dev-runtime/ServerApiClientStandardization.test.mjs -M dev/tests/engine/EngineV2AbilitySystem.test.mjs -M dev/tests/engine/EngineV2AnimationRuntime.test.mjs -M dev/tests/engine/EngineV2AudioRuntime.test.mjs -M dev/tests/engine/EngineV2CameraRuntime.test.mjs -M dev/tests/engine/EngineV2ChaseFleeBehavior.test.mjs -M dev/tests/engine/EngineV2CheckpointSystem.test.mjs -M dev/tests/engine/EngineV2ConfigDrivenProofScene.test.mjs -M dev/tests/engine/EngineV2ContainerSystem.test.mjs -M dev/tests/engine/EngineV2CraftingFoundation.test.mjs -M dev/tests/engine/EngineV2CustomExtensionsHookRuntime.test.mjs -M dev/tests/engine/EngineV2DialogueSystem.test.mjs -M dev/tests/engine/EngineV2EconomyAndCurrency.test.mjs -M dev/tests/engine/EngineV2EffectRuntime.test.mjs -M dev/tests/engine/EngineV2EquipmentSystem.test.mjs -M dev/tests/engine/EngineV2InteractionSystem.test.mjs -M dev/tests/engine/EngineV2InventorySystem.test.mjs -M dev/tests/engine/EngineV2ItemAndLootSystem.test.mjs -M dev/tests/engine/EngineV2ModifierStack.test.mjs -M dev/tests/engine/EngineV2ObjectiveSystem.test.mjs -M dev/tests/engine/EngineV2PathfindingBaseline.test.mjs -M dev/tests/engine/EngineV2PatrolBehavior.test.mjs -M dev/tests/engine/EngineV2PersistenceRuntime.test.mjs -M dev/tests/engine/EngineV2ProfileStateSystem.test.mjs -M dev/tests/engine/EngineV2ProjectileSystem.test.mjs -M dev/tests/engine/EngineV2QuestSystem.test.mjs -M dev/tests/engine/EngineV2SaveLoadValidation.test.mjs -M dev/tests/engine/EngineV2SaveStateModel.test.mjs -M dev/tests/engine/EngineV2StateMachineRuntime.test.mjs -M dev/tests/engine/EngineV2StatusEffectSystem.test.mjs -M dev/tests/engine/EngineV2UiRuntime.test.mjs -M dev/tests/engine/EngineV2VendorSystem.test.mjs -M dev/tests/engine/EngineV2WeaponSystem.test.mjs -M dev/tests/engine/FirstManifestDrivenPlayableScene.test.mjs -M dev/tests/engine/HitboxCollisionContract.test.mjs -M dev/tests/engine/ManifestRuntimeParser.test.mjs -M dev/tests/engine/ObjectDefinitionReader.test.mjs -M dev/tests/engine/ObjectModelContract.test.mjs -M dev/tests/engine/RuleDefinitionReader.test.mjs -M dev/tests/engine/RuntimeActionSystem.test.mjs -M dev/tests/engine/RuntimeBehaviorComposition.test.mjs -M dev/tests/engine/RuntimeCollisionProcessing.test.mjs -M dev/tests/engine/RuntimeConditionSystem.test.mjs -M dev/tests/engine/RuntimeCooldownProcessing.test.mjs -M dev/tests/engine/RuntimeDamageProcessing.test.mjs -M dev/tests/engine/RuntimeDeterminismValidation.test.mjs -M dev/tests/engine/RuntimeEnvironmentEffects.test.mjs -M dev/tests/engine/RuntimeEnvironmentForceInstantiation.test.mjs -M dev/tests/engine/RuntimeErrorReporting.test.mjs -M dev/tests/engine/RuntimeEventSystem.test.mjs -M dev/tests/engine/RuntimeHealthModel.test.mjs -M dev/tests/engine/RuntimeInputPipeline.test.mjs -M dev/tests/engine/RuntimeLivesAndRespawn.test.mjs -M dev/tests/engine/RuntimeLoaderValidation.test.mjs -M dev/tests/engine/RuntimeManifestFixtureHardening.test.mjs -M dev/tests/engine/RuntimeMovementProcessing.test.mjs -M dev/tests/engine/RuntimeMultiSceneLoading.test.mjs -M dev/tests/engine/RuntimeObjectDefaultRejection.test.mjs -M dev/tests/engine/RuntimeObjectInstantiation.test.mjs -M dev/tests/engine/RuntimeObjectRecordFactory.test.mjs -M dev/tests/engine/RuntimeObjectRecordValidation.test.mjs -M dev/tests/engine/RuntimeObjectTypeValidation.test.mjs -M dev/tests/engine/RuntimeOutcomeProcessing.test.mjs -M dev/tests/engine/RuntimePlayableLoop.test.mjs -M dev/tests/engine/RuntimePlayableSceneUat.test.mjs -M dev/tests/engine/RuntimeRenderPipeline.test.mjs -M dev/tests/engine/RuntimeRenderingBootstrap.test.mjs -M dev/tests/engine/RuntimeRuleAttachment.test.mjs -M dev/tests/engine/RuntimeSceneDefinitionSupport.test.mjs -M dev/tests/engine/RuntimeScoringAndStateProcessing.test.mjs -M dev/tests/engine/RuntimeSpawnDespawnProcessing.test.mjs -M dev/tests/engine/RuntimeTerrainEffects.test.mjs -M dev/tests/engine/RuntimeTerrainMaterialInstantiation.test.mjs -M dev/tests/engine/RuntimeTickLoop.test.mjs -M dev/tests/engine/RuntimeTriggerProcessing.test.mjs -M dev/tests/engine/core/FixedTicker.test.mjs -M dev/tests/engine/core/FrameClock.test.mjs -M dev/tests/engine/core/RuntimeMetrics.test.mjs -M dev/tests/entity/Entity.test.mjs -M dev/tests/events/EventBus.test.mjs -M dev/tests/events/EventBusNaming.test.mjs -M dev/tests/final/DebugObservabilityMaturity.test.mjs -M dev/tests/final/DeveloperToolingSystems.test.mjs -M dev/tests/final/EditorAutomationSecurityPipeline.test.mjs -M dev/tests/final/FinalSystems.test.mjs -M dev/tests/final/FullscreenService.test.mjs -M dev/tests/final/MultiplayerNetworkingStack.test.mjs -M dev/tests/final/NetworkDebugAndServerDashboardCloseout.test.mjs -M dev/tests/final/PlatformUxSystems.test.mjs -M dev/tests/final/PrecisionCollisionSystems.test.mjs -M dev/tests/final/ReleaseReadinessSystems.test.mjs -M dev/tests/fx/ParticleSystem.test.mjs -M dev/tests/games/AsteroidsHardening.test.mjs -M dev/tests/games/AsteroidsPlatformDemo.test.mjs -M dev/tests/games/AsteroidsValidation.test.mjs -M dev/tests/helpers/runtimeSceneLoaderHotReload.helpers.mjs -M dev/tests/input/GamepadHapticsService.test.mjs -M dev/tests/input/GamepadInputAdapter.test.mjs -M dev/tests/input/GamepadState.test.mjs -M dev/tests/input/InputMap.test.mjs -M dev/tests/input/InputService.test.mjs -M dev/tests/input/KeyboardState.test.mjs -M dev/tests/input/MouseState.test.mjs -M dev/tests/input/NormalizedInputRegistry.test.mjs -M dev/tests/persistence/StorageService.test.mjs -M dev/tests/playwright/tools/AdminNotesLocalViewer.spec.mjs -M dev/tests/playwright/tools/InputMappingV2Tool.spec.mjs -M dev/tests/playwright/tools/ToolboxRoutePages.spec.mjs -M dev/tests/production/ProductionReadiness.test.mjs -M dev/tests/regression/CanonicalRepositoryStructureGuardrail.test.mjs -M dev/tests/render/Renderer.test.mjs -M dev/tests/replay/ReplaySystem.test.mjs -M dev/tests/replay/ReplayTimeline.test.mjs -M dev/tests/runtime/Phase19RuntimeLifecycleValidation.test.mjs -M dev/tests/runtime/RuntimeMonitoringHooks.test.mjs -M dev/tests/scenes/AttractModeController.test.mjs -M dev/tests/scenes/SceneManager.test.mjs -M dev/tests/scenes/TransitionScene.test.mjs -M dev/tests/shared/ColorFoundation.test.mjs -M dev/tests/shared/GeometryFoundation.test.mjs -M dev/tests/shared/GetStateVariantClassification.test.mjs -M dev/tests/shared/HashFoundation.test.mjs -M dev/tests/shared/NoiseFoundation.test.mjs -M dev/tests/shared/Random.test.mjs -M dev/tests/shared/RandomHelpers.test.mjs -M dev/tests/shared/RandomSeed.test.mjs -M dev/tests/shared/SharedFoundationCombinedPass.test.mjs -M dev/tests/shared/SharedNumberStringIdCloseout.test.mjs -M dev/tests/shared/TextFoundation.test.mjs -M dev/tests/shared/TimeFoundation.test.mjs -M dev/tests/tools/AiAuthoringAssistant.test.mjs -M dev/tests/tools/AssetErrorHandlingStandard.test.mjs -M dev/tests/tools/AssetManifestLoader.test.mjs -M dev/tests/tools/AssetMarketplace.test.mjs -M dev/tests/tools/AssetPipelineTooling.test.mjs -M dev/tests/tools/AssetRemediationSystem.test.mjs -M dev/tests/tools/AssetUsageIntegration.test.mjs -M dev/tests/tools/AssetValidationEngine.test.mjs -M dev/tests/tools/CameraDebugPanel.test.mjs -M dev/tests/tools/CiValidationPipeline.test.mjs -M dev/tests/tools/CloudRuntime.test.mjs -M dev/tests/tools/CollaborationSystem.test.mjs -M dev/tests/tools/CollisionOverlaysDebugPanel.test.mjs -M dev/tests/tools/DebugVisualizationLayer.test.mjs -M dev/tests/tools/DevConsoleDebugOverlay.test.mjs -M dev/tests/tools/EditorExperienceLayer.test.mjs -M dev/tests/tools/GameAssetManifestCoordinator.test.mjs -M dev/tests/tools/GameAssetManifestDiscovery.test.mjs -M dev/tests/tools/GameTemplates.test.mjs -M dev/tests/tools/GameplaySystemLayer.test.mjs -M dev/tests/tools/HotReloadSystem.test.mjs -M dev/tests/tools/MultiTargetExport.test.mjs -M dev/tests/tools/ObjectVectorFinalRuntimeCleanup.test.mjs -M dev/tests/tools/PerformanceBenchmarks.test.mjs -M dev/tests/tools/PerformanceProfiler.test.mjs -M dev/tests/tools/PlatformValidationSuite.test.mjs -M dev/tests/tools/PluginArchitectureSystem.test.mjs -M dev/tests/tools/ProjectPackagingSystem.test.mjs -M dev/tests/tools/ProjectToolDataContracts.test.mjs -M dev/tests/tools/ProjectVersioningSystem.test.mjs -M dev/tests/tools/PublishingPipeline.test.mjs -M dev/tests/tools/RenderPipelineContractAll4Tools.test.mjs -M dev/tests/tools/RenderPipelineStagesDebugPanel.test.mjs -M dev/tests/tools/RuntimeAssetBinding.test.mjs -M dev/tests/tools/RuntimeAssetLoader.test.mjs -M dev/tests/tools/RuntimeAssetLookupConsolidation.test.mjs -M dev/tests/tools/RuntimeAssetValidation.test.mjs -M dev/tests/tools/RuntimeStreamingSystem.test.mjs -M dev/tests/tools/SceneGraphInspectorDebugPanel.test.mjs -M dev/tests/tools/ToolLayoutDockingControlNormalization.test.mjs -M dev/tests/tools/TransformInspectorDebugPanel.test.mjs -M dev/tests/tools/VectorAssetSystem.test.mjs -M dev/tests/tools/VectorGeometryRuntime.test.mjs -M dev/tests/tools/VectorNativeTemplate.test.mjs -M dev/tests/vector/VectorMath.test.mjs -M dev/tests/world/WorldGameStateAuthoritativeHandoff.test.mjs -M dev/tests/world/WorldGameStateAuthoritativeScore.test.mjs -M dev/tests/world/WorldGameStateSystem.test.mjs -M dev/tests/world/WorldSystems.test.mjs -M dev/tools/toolbox-dev/advanced/debugMacroExecutor.js -M dev/tools/toolbox-dev/advanced/debugMacroRegistry.js -M dev/tools/toolbox-dev/advanced/debugPanelGroupRegistry.js -M dev/tools/toolbox-dev/canvasDebugHudRenderer.js -M dev/tools/toolbox-dev/checkSharedExtractionGuard.baseline.json -M dev/tools/toolbox-dev/commandPacks/groupCommandPack.js -M dev/tools/toolbox-dev/commandPacks/inspectorCommandPack.js -M dev/tools/toolbox-dev/commandPacks/macroCommandPack.js -M dev/tools/toolbox-dev/commandPacks/overlayCommandPack.js -M dev/tools/toolbox-dev/commandPacks/packUtils.js -M dev/tools/toolbox-dev/commandPacks/presetCommandPack.js -M dev/tools/toolbox-dev/devConsoleCommandRegistry.js -M dev/tools/toolbox-dev/devConsoleIntegration.js -M dev/tools/toolbox-dev/inspectors/inspectorStore.js -M dev/tools/toolbox-dev/interactiveDevConsoleRenderer.js -M dev/tools/toolbox-dev/plugins/debugPluginSystem.js -M dev/tools/toolbox-dev/presets/debugPresetApplier.js -M dev/tools/toolbox-dev/presets/debugPresetRegistry.js -M dev/tools/toolbox-dev/presets/registerPresetCommands.js -R100 src/advanced/promotion/createPromotionGate.js www/src/advanced/promotion/createPromotionGate.js -R100 src/advanced/state/constants.js www/src/advanced/state/constants.js -R100 src/advanced/state/consumers/createObjectiveProgressMirrorConsumer.js www/src/advanced/state/consumers/createObjectiveProgressMirrorConsumer.js -R100 src/advanced/state/createWorldGameStateSystem.js www/src/advanced/state/createWorldGameStateSystem.js -R100 src/advanced/state/events.js www/src/advanced/state/events.js -R100 src/advanced/state/initialState.js www/src/advanced/state/initialState.js -R100 src/advanced/state/integration/registerWorldGameStateSystem.js www/src/advanced/state/integration/registerWorldGameStateSystem.js -R100 src/advanced/state/selectors.js www/src/advanced/state/selectors.js -R100 src/advanced/state/transitions.js www/src/advanced/state/transitions.js -R100 src/advanced/state/utils.js www/src/advanced/state/utils.js -R100 src/api/admin-infrastructure-api-client.js www/src/api/admin-infrastructure-api-client.js -R100 src/api/admin-invitations-api-client.js www/src/api/admin-invitations-api-client.js -R100 src/api/admin-operations-api-client.js www/src/api/admin-operations-api-client.js -R100 src/api/admin-owner-navigation.js www/src/api/admin-owner-navigation.js -R100 src/api/admin-setup-api-client.js www/src/api/admin-setup-api-client.js -R100 src/api/admin-system-health-api-client.js www/src/api/admin-system-health-api-client.js -R100 src/api/ai-credits-api-client.js www/src/api/ai-credits-api-client.js -R100 src/api/db-viewer-api-client.js www/src/api/db-viewer-api-client.js -R100 src/api/db-viewer-ui.js www/src/api/db-viewer-ui.js -R100 src/api/game-journey-completion-api-client.js www/src/api/game-journey-completion-api-client.js -R100 src/api/legal-api-client.js www/src/api/legal-api-client.js -R100 src/api/marketplace-api-client.js www/src/api/marketplace-api-client.js -R100 src/api/memberships-api-client.js www/src/api/memberships-api-client.js -R100 src/api/owner-ai-credits-api-client.js www/src/api/owner-ai-credits-api-client.js -R100 src/api/owner-memberships-api-client.js www/src/api/owner-memberships-api-client.js -R100 src/api/platform-settings-api-client.js www/src/api/platform-settings-api-client.js -R100 src/api/public-config-client.js www/src/api/public-config-client.js -R100 src/api/server-api-client.js www/src/api/server-api-client.js -R100 src/api/session-api-client.js www/src/api/session-api-client.js -R100 src/api/toolbox-votes-api-client.js www/src/api/toolbox-votes-api-client.js -R100 src/dev-runtime/admin/admin-notes-viewer.js www/src/dev-runtime/admin/admin-notes-viewer.js -R100 src/dev-runtime/admin/header-nav.local.html www/src/dev-runtime/admin/header-nav.local.html -R100 src/dev-runtime/admin/notes.html www/src/dev-runtime/admin/notes.html -R100 src/engine/ai/AIStateController.js www/src/engine/ai/AIStateController.js -R100 src/engine/ai/GridPathfinding.js www/src/engine/ai/GridPathfinding.js -R100 src/engine/ai/GroupBehaviors.js www/src/engine/ai/GroupBehaviors.js -R100 src/engine/ai/PatrolSystem.js www/src/engine/ai/PatrolSystem.js -R100 src/engine/ai/SteeringBehaviors.js www/src/engine/ai/SteeringBehaviors.js -R100 src/engine/animation/AnimationController.js www/src/engine/animation/AnimationController.js -R100 src/engine/assets/AssetLoaderSystem.js www/src/engine/assets/AssetLoaderSystem.js -R100 src/engine/assets/AssetOptimizer.js www/src/engine/assets/AssetOptimizer.js -R100 src/engine/assets/AssetRegistry.js www/src/engine/assets/AssetRegistry.js -R100 src/engine/assets/ImageAssetLoader.js www/src/engine/assets/ImageAssetLoader.js -R100 src/engine/assets/SpriteAtlas.js www/src/engine/assets/SpriteAtlas.js -R100 src/engine/audio/AudioService.js www/src/engine/audio/AudioService.js -R100 src/engine/audio/FrequencyPlayer.js www/src/engine/audio/FrequencyPlayer.js -R100 src/engine/audio/GaplessLoopPlayer.js www/src/engine/audio/GaplessLoopPlayer.js -R100 src/engine/audio/HtmlAudioMediaBackend.js www/src/engine/audio/HtmlAudioMediaBackend.js -R100 src/engine/audio/InstrumentGridParser.js www/src/engine/audio/InstrumentGridParser.js -R100 src/engine/audio/MediaTrackService.js www/src/engine/audio/MediaTrackService.js -R100 src/engine/audio/MidiPlayer.js www/src/engine/audio/MidiPlayer.js -R100 src/engine/audio/MidiSourceMetadataParser.js www/src/engine/audio/MidiSourceMetadataParser.js -R100 src/engine/audio/PlaylistManager.js www/src/engine/audio/PlaylistManager.js -R100 src/engine/audio/PreviewInstrumentPacks.js www/src/engine/audio/PreviewInstrumentPacks.js -R100 src/engine/audio/PreviewSynthEngine.js www/src/engine/audio/PreviewSynthEngine.js -R100 src/engine/audio/SongSheetParser.js www/src/engine/audio/SongSheetParser.js -R100 src/engine/audio/SoundFontPreviewEngine.js www/src/engine/audio/SoundFontPreviewEngine.js -R100 src/engine/audio/Synthesizer.js www/src/engine/audio/Synthesizer.js -R100 src/engine/audio/TextToSpeechDefaults.js www/src/engine/audio/TextToSpeechDefaults.js -R100 src/engine/audio/TextToSpeechEngine.js www/src/engine/audio/TextToSpeechEngine.js -R100 src/engine/audio/WebAudioToneBackend.js www/src/engine/audio/WebAudioToneBackend.js -R100 src/engine/automation/AutomatedTestRunner.js www/src/engine/automation/AutomatedTestRunner.js -R100 src/engine/automation/BenchmarkRunner.js www/src/engine/automation/BenchmarkRunner.js -R100 src/engine/automation/CIValidationFlow.js www/src/engine/automation/CIValidationFlow.js -R100 src/engine/automation/RegressionPlaybackHarness.js www/src/engine/automation/RegressionPlaybackHarness.js -R100 src/engine/camera/Camera2D.js www/src/engine/camera/Camera2D.js -R100 src/engine/camera/Camera3D.js www/src/engine/camera/Camera3D.js -R100 src/engine/camera/CameraSystem.js www/src/engine/camera/CameraSystem.js -R100 src/engine/camera/ZoneCameraSystem.js www/src/engine/camera/ZoneCameraSystem.js -R100 src/engine/collision/aabb.js www/src/engine/collision/aabb.js -R100 src/engine/collision/combat/Combat.js www/src/engine/collision/combat/Combat.js -R100 src/engine/collision/hitboxCollision.js www/src/engine/collision/hitboxCollision.js -R100 src/engine/collision/hybrid.js www/src/engine/collision/hybrid.js -R100 src/engine/collision/objectVector.js www/src/engine/collision/objectVector.js -R100 src/engine/collision/polygon.js www/src/engine/collision/polygon.js -R100 src/engine/collision/raster.js www/src/engine/collision/raster.js -R100 src/engine/components/Components.js www/src/engine/components/Components.js -R100 src/engine/config/ConfigStore.js www/src/engine/config/ConfigStore.js -R100 src/engine/core/Engine.js www/src/engine/core/Engine.js -R100 src/engine/core/FixedTicker.js www/src/engine/core/FixedTicker.js -R100 src/engine/core/FrameClock.js www/src/engine/core/FrameClock.js -R100 src/engine/core/RuntimeMetrics.js www/src/engine/core/RuntimeMetrics.js -R100 src/engine/debug/CombatDebugOverlay.js www/src/engine/debug/CombatDebugOverlay.js -R100 src/engine/debug/DebugOverlayLayout.js www/src/engine/debug/DebugOverlayLayout.js -R100 src/engine/debug/DebugPanel.js www/src/engine/debug/DebugPanel.js -R100 src/engine/debug/DebugTools.js www/src/engine/debug/DebugTools.js -R100 src/engine/debug/Minimap.js www/src/engine/debug/Minimap.js -R100 src/engine/debug/PerformanceMetricsPanel.js www/src/engine/debug/PerformanceMetricsPanel.js -R100 src/engine/debug/StatsTracker.js www/src/engine/debug/StatsTracker.js -R100 src/engine/debug/Validation.js www/src/engine/debug/Validation.js -R100 src/engine/debug/inspectors/bootstrap/createInspectorSurfaceIntegration.js www/src/engine/debug/inspectors/bootstrap/createInspectorSurfaceIntegration.js -R100 src/engine/debug/inspectors/commands/registerInspectorCommands.js www/src/engine/debug/inspectors/commands/registerInspectorCommands.js -R100 src/engine/debug/inspectors/host/debugInspectorHost.js www/src/engine/debug/inspectors/host/debugInspectorHost.js -R100 src/engine/debug/inspectors/presets/registerAdvancedInspectorDebugPresets.js www/src/engine/debug/inspectors/presets/registerAdvancedInspectorDebugPresets.js -R100 src/engine/debug/inspectors/registry/debugInspectorRegistry.js www/src/engine/debug/inspectors/registry/debugInspectorRegistry.js -R100 src/engine/debug/inspectors/shared/inspectorUtils.js www/src/engine/debug/inspectors/shared/inspectorUtils.js -R100 src/engine/debug/inspectors/viewModels/componentInspectorViewModel.js www/src/engine/debug/inspectors/viewModels/componentInspectorViewModel.js -R100 src/engine/debug/inspectors/viewModels/entityInspectorViewModel.js www/src/engine/debug/inspectors/viewModels/entityInspectorViewModel.js -R100 src/engine/debug/inspectors/viewModels/eventStreamInspectorViewModel.js www/src/engine/debug/inspectors/viewModels/eventStreamInspectorViewModel.js -R100 src/engine/debug/inspectors/viewModels/stateDiffInspectorViewModel.js www/src/engine/debug/inspectors/viewModels/stateDiffInspectorViewModel.js -R100 src/engine/debug/inspectors/viewModels/timelineInspectorViewModel.js www/src/engine/debug/inspectors/viewModels/timelineInspectorViewModel.js -R100 src/engine/debug/network/bootstrap/createNetworkDebugSurfaceIntegration.js www/src/engine/debug/network/bootstrap/createNetworkDebugSurfaceIntegration.js -R100 src/engine/debug/network/commands/networkDebugCommandPackBridge.js www/src/engine/debug/network/commands/networkDebugCommandPackBridge.js -R100 src/engine/debug/network/dashboard/registerDashboardCommands.js www/src/engine/debug/network/dashboard/registerDashboardCommands.js -R100 src/engine/debug/network/dashboard/serverDashboardHost.js www/src/engine/debug/network/dashboard/serverDashboardHost.js -R100 src/engine/debug/network/dashboard/serverDashboardMetrics.js www/src/engine/debug/network/dashboard/serverDashboardMetrics.js -R100 src/engine/debug/network/dashboard/serverDashboardProviders.js www/src/engine/debug/network/dashboard/serverDashboardProviders.js -R100 src/engine/debug/network/dashboard/serverDashboardRefreshModes.js www/src/engine/debug/network/dashboard/serverDashboardRefreshModes.js -R100 src/engine/debug/network/dashboard/serverDashboardRegistry.js www/src/engine/debug/network/dashboard/serverDashboardRegistry.js -R100 src/engine/debug/network/dashboard/serverDashboardRenderer.js www/src/engine/debug/network/dashboard/serverDashboardRenderer.js -R100 src/engine/debug/network/dashboard/serverDashboardViewModel.js www/src/engine/debug/network/dashboard/serverDashboardViewModel.js -R100 src/engine/debug/network/diagnostics/divergenceDiagnosticsModel.js www/src/engine/debug/network/diagnostics/divergenceDiagnosticsModel.js -R100 src/engine/debug/network/diagnostics/latencyDiagnosticsModel.js www/src/engine/debug/network/diagnostics/latencyDiagnosticsModel.js -R100 src/engine/debug/network/diagnostics/networkPromotionRecommendation.js www/src/engine/debug/network/diagnostics/networkPromotionRecommendation.js -R100 src/engine/debug/network/diagnostics/replicationDiagnosticsModel.js www/src/engine/debug/network/diagnostics/replicationDiagnosticsModel.js -R100 src/engine/debug/network/panels/networkDebugPanelRegistry.js www/src/engine/debug/network/panels/networkDebugPanelRegistry.js -R100 src/engine/debug/network/panels/networkObservabilityPanels.js www/src/engine/debug/network/panels/networkObservabilityPanels.js -R100 src/engine/debug/network/providers/networkDebugProviderRegistry.js www/src/engine/debug/network/providers/networkDebugProviderRegistry.js -R100 src/engine/debug/network/shared/hostReadUtils.js www/src/engine/debug/network/shared/hostReadUtils.js -R100 src/engine/debug/network/shared/networkDebugUtils.js www/src/engine/debug/network/shared/networkDebugUtils.js -R100 src/engine/debug/panels/PromotionGatePanel.js www/src/engine/debug/panels/PromotionGatePanel.js -R100 src/engine/debug/shared/debugCommandResultUtils.js www/src/engine/debug/shared/debugCommandResultUtils.js -R100 src/engine/debug/standard/threeD/bootstrap/createStandard3dDebugSurfaceIntegration.js www/src/engine/debug/standard/threeD/bootstrap/createStandard3dDebugSurfaceIntegration.js -R100 src/engine/debug/standard/threeD/panels/panel3dCamera.js www/src/engine/debug/standard/threeD/panels/panel3dCamera.js -R100 src/engine/debug/standard/threeD/panels/panel3dCollision.js www/src/engine/debug/standard/threeD/panels/panel3dCollision.js -R100 src/engine/debug/standard/threeD/panels/panel3dCollisionOverlays.js www/src/engine/debug/standard/threeD/panels/panel3dCollisionOverlays.js -R100 src/engine/debug/standard/threeD/panels/panel3dRenderPipelineStages.js www/src/engine/debug/standard/threeD/panels/panel3dRenderPipelineStages.js -R100 src/engine/debug/standard/threeD/panels/panel3dRenderStages.js www/src/engine/debug/standard/threeD/panels/panel3dRenderStages.js -R100 src/engine/debug/standard/threeD/panels/panel3dSceneGraph.js www/src/engine/debug/standard/threeD/panels/panel3dSceneGraph.js -R100 src/engine/debug/standard/threeD/panels/panel3dSceneGraphInspector.js www/src/engine/debug/standard/threeD/panels/panel3dSceneGraphInspector.js -R100 src/engine/debug/standard/threeD/panels/panel3dTransform.js www/src/engine/debug/standard/threeD/panels/panel3dTransform.js -R100 src/engine/debug/standard/threeD/panels/panel3dTransformInspector.js www/src/engine/debug/standard/threeD/panels/panel3dTransformInspector.js -R100 src/engine/debug/standard/threeD/panels/registerStandard3dPanels.js www/src/engine/debug/standard/threeD/panels/registerStandard3dPanels.js -R100 src/engine/debug/standard/threeD/presets/registerStandard3dDebugPresets.js www/src/engine/debug/standard/threeD/presets/registerStandard3dDebugPresets.js -R100 src/engine/debug/standard/threeD/providers/cameraSummaryProvider.js www/src/engine/debug/standard/threeD/providers/cameraSummaryProvider.js -R100 src/engine/debug/standard/threeD/providers/collisionOverlaysProvider.js www/src/engine/debug/standard/threeD/providers/collisionOverlaysProvider.js -R100 src/engine/debug/standard/threeD/providers/collisionSummaryProvider.js www/src/engine/debug/standard/threeD/providers/collisionSummaryProvider.js -R100 src/engine/debug/standard/threeD/providers/registerStandard3dProviders.js www/src/engine/debug/standard/threeD/providers/registerStandard3dProviders.js -R100 src/engine/debug/standard/threeD/providers/renderPipelineStagesProvider.js www/src/engine/debug/standard/threeD/providers/renderPipelineStagesProvider.js -R100 src/engine/debug/standard/threeD/providers/renderStageSummaryProvider.js www/src/engine/debug/standard/threeD/providers/renderStageSummaryProvider.js -R100 src/engine/debug/standard/threeD/providers/sceneGraphInspectorProvider.js www/src/engine/debug/standard/threeD/providers/sceneGraphInspectorProvider.js -R100 src/engine/debug/standard/threeD/providers/sceneGraphSummaryProvider.js www/src/engine/debug/standard/threeD/providers/sceneGraphSummaryProvider.js -R100 src/engine/debug/standard/threeD/providers/transformInspectorProvider.js www/src/engine/debug/standard/threeD/providers/transformInspectorProvider.js -R100 src/engine/debug/standard/threeD/providers/transformSummaryProvider.js www/src/engine/debug/standard/threeD/providers/transformSummaryProvider.js -R100 src/engine/debug/standard/threeD/shared/threeDDebugUtils.js www/src/engine/debug/standard/threeD/shared/threeDDebugUtils.js -R100 src/engine/ecs/World.js www/src/engine/ecs/World.js -R100 src/engine/entity/Bounds.js www/src/engine/entity/Bounds.js -R100 src/engine/entity/Entity.js www/src/engine/entity/Entity.js -R100 src/engine/entity/Transform.js www/src/engine/entity/Transform.js -R100 src/engine/entity/Velocity.js www/src/engine/entity/Velocity.js -R100 src/engine/events/EventBus.js www/src/engine/events/EventBus.js -R100 src/engine/fx/ParticleSystem.js www/src/engine/fx/ParticleSystem.js -R100 src/engine/game/GameModeState.js www/src/engine/game/GameModeState.js -R100 src/engine/game/gameplayHooks.js www/src/engine/game/gameplayHooks.js -R100 src/engine/input/ActionInputDebugOverlay.js www/src/engine/input/ActionInputDebugOverlay.js -R100 src/engine/input/ActionInputMap.js www/src/engine/input/ActionInputMap.js -R100 src/engine/input/ActionInputService.js www/src/engine/input/ActionInputService.js -R100 src/engine/input/GamepadHapticsService.js www/src/engine/input/GamepadHapticsService.js -R100 src/engine/input/GamepadInputAdapter.js www/src/engine/input/GamepadInputAdapter.js -R100 src/engine/input/GamepadInputClassifier.js www/src/engine/input/GamepadInputClassifier.js -R100 src/engine/input/GamepadState.js www/src/engine/input/GamepadState.js -R100 src/engine/input/InputCapabilityDescriptors.js www/src/engine/input/InputCapabilityDescriptors.js -R100 src/engine/input/InputCaptureService.js www/src/engine/input/InputCaptureService.js -R100 src/engine/input/InputCaptureSession.js www/src/engine/input/InputCaptureSession.js -R100 src/engine/input/InputComboState.js www/src/engine/input/InputComboState.js -R100 src/engine/input/InputContextService.js www/src/engine/input/InputContextService.js -R100 src/engine/input/InputMap.js www/src/engine/input/InputMap.js -R100 src/engine/input/InputMappingManifest.js www/src/engine/input/InputMappingManifest.js -R100 src/engine/input/InputService.js www/src/engine/input/InputService.js -R100 src/engine/input/KeyboardState.js www/src/engine/input/KeyboardState.js -R100 src/engine/input/MouseState.js www/src/engine/input/MouseState.js -R100 src/engine/input/NormalizedInputRegistry.js www/src/engine/input/NormalizedInputRegistry.js -R100 src/engine/input/PointerDragState.js www/src/engine/input/PointerDragState.js -R100 src/engine/interaction/InteractionSystem.js www/src/engine/interaction/InteractionSystem.js -R100 src/engine/level/LevelLoader.js www/src/engine/level/LevelLoader.js -R100 src/engine/localization/LocalizationService.js www/src/engine/localization/LocalizationService.js -R100 src/engine/logging/ErrorBoundary.js www/src/engine/logging/ErrorBoundary.js -R100 src/engine/logging/Logger.js www/src/engine/logging/Logger.js -R100 src/engine/memory/DisposableStore.js www/src/engine/memory/DisposableStore.js -R100 src/engine/memory/ObjectPool.js www/src/engine/memory/ObjectPool.js -R100 src/engine/network/bootstrap/HostServerBootstrap.js www/src/engine/network/bootstrap/HostServerBootstrap.js -R100 src/engine/network/bootstrap/NetworkingLayer.js www/src/engine/network/bootstrap/NetworkingLayer.js -R100 src/engine/network/client/ClientReconciliationStrategy.js www/src/engine/network/client/ClientReconciliationStrategy.js -R100 src/engine/network/client/ClientReplicationApplicationLayer.js www/src/engine/network/client/ClientReplicationApplicationLayer.js -R100 src/engine/network/client/PredictionReconciler.js www/src/engine/network/client/PredictionReconciler.js -R100 src/engine/network/client/RemoteInterpolationBuffer.js www/src/engine/network/client/RemoteInterpolationBuffer.js -R100 src/engine/network/debug/NetworkDebugOverlay.js www/src/engine/network/debug/NetworkDebugOverlay.js -R100 src/engine/network/replication/ReplicationMessageContract.js www/src/engine/network/replication/ReplicationMessageContract.js -R100 src/engine/network/replication/StateReplication.js www/src/engine/network/replication/StateReplication.js -R100 src/engine/network/server/AuthoritativeInputIngestionContract.js www/src/engine/network/server/AuthoritativeInputIngestionContract.js -R100 src/engine/network/server/AuthoritativeServerRuntime.js www/src/engine/network/server/AuthoritativeServerRuntime.js -R100 src/engine/network/server/InterestManager.js www/src/engine/network/server/InterestManager.js -R100 src/engine/network/server/RollbackDiagnostics.js www/src/engine/network/server/RollbackDiagnostics.js -R100 src/engine/network/session/ChatPresenceLayer.js www/src/engine/network/session/ChatPresenceLayer.js -R100 src/engine/network/session/HandshakeSimulator.js www/src/engine/network/session/HandshakeSimulator.js -R100 src/engine/network/session/LobbySessionManager.js www/src/engine/network/session/LobbySessionManager.js -R100 src/engine/network/session/SessionLifecycleContract.js www/src/engine/network/session/SessionLifecycleContract.js -R100 src/engine/network/transport/LoopbackTransport.js www/src/engine/network/transport/LoopbackTransport.js -R100 src/engine/network/transport/NetworkConditionSimulator.js www/src/engine/network/transport/NetworkConditionSimulator.js -R100 src/engine/network/transport/Serializer.js www/src/engine/network/transport/Serializer.js -R100 src/engine/network/transport/TransportContract.js www/src/engine/network/transport/TransportContract.js -R100 src/engine/object-model/index.js www/src/engine/object-model/index.js -R100 src/engine/object-model/objectDefinitionSchema.js www/src/engine/object-model/objectDefinitionSchema.js -R100 src/engine/object-model/objectDefinitionValidator.js www/src/engine/object-model/objectDefinitionValidator.js -R100 src/engine/object-model/objectModelRegistry.js www/src/engine/object-model/objectModelRegistry.js -R100 src/engine/paletteList.js www/src/engine/paletteList.js -R100 src/engine/persistence/BrowserStorageService.js www/src/engine/persistence/BrowserStorageService.js -R100 src/engine/persistence/CompressionService.js www/src/engine/persistence/CompressionService.js -R100 src/engine/persistence/CookieStorageService.js www/src/engine/persistence/CookieStorageService.js -R100 src/engine/persistence/FilePersistenceService.js www/src/engine/persistence/FilePersistenceService.js -R100 src/engine/persistence/LocalStorageService.js www/src/engine/persistence/LocalStorageService.js -R100 src/engine/persistence/SaveSlotManager.js www/src/engine/persistence/SaveSlotManager.js -R100 src/engine/persistence/SessionStorageService.js www/src/engine/persistence/SessionStorageService.js -R100 src/engine/persistence/StorageService.js www/src/engine/persistence/StorageService.js -R100 src/engine/persistence/WorldSerializer.js www/src/engine/persistence/WorldSerializer.js -R100 src/engine/physics/arcadeBody.js www/src/engine/physics/arcadeBody.js -R100 src/engine/physics/collision3d.js www/src/engine/physics/collision3d.js -R100 src/engine/physics/drag.js www/src/engine/physics/drag.js -R100 src/engine/physics/integration.js www/src/engine/physics/integration.js -R100 src/engine/physics/integration3d.js www/src/engine/physics/integration3d.js -R100 src/engine/physics/scene3d.js www/src/engine/physics/scene3d.js -R100 src/engine/prefabs/PrefabFactory.js www/src/engine/prefabs/PrefabFactory.js -R100 src/engine/release/AccessibilityOptions.js www/src/engine/release/AccessibilityOptions.js -R100 src/engine/release/CrashRecoveryManager.js www/src/engine/release/CrashRecoveryManager.js -R100 src/engine/release/DeploymentProfiles.js www/src/engine/release/DeploymentProfiles.js -R100 src/engine/release/DistributionPackager.js www/src/engine/release/DistributionPackager.js -R100 src/engine/release/ReleaseValidationChecklist.js www/src/engine/release/ReleaseValidationChecklist.js -R100 src/engine/release/SettingsSystem.js www/src/engine/release/SettingsSystem.js -R100 src/engine/rendering/CanvasRenderer.js www/src/engine/rendering/CanvasRenderer.js -R100 src/engine/rendering/LayeredRenderSystem.js www/src/engine/rendering/LayeredRenderSystem.js -R100 src/engine/rendering/ObjectVectorRuntimeAssetService.js www/src/engine/rendering/ObjectVectorRuntimeAssetService.js -R100 src/engine/rendering/ObjectVectorTransformService.js www/src/engine/rendering/ObjectVectorTransformService.js -R100 src/engine/rendering/OrientationTransform.js www/src/engine/rendering/OrientationTransform.js -R100 src/engine/rendering/Renderer.js www/src/engine/rendering/Renderer.js -R100 src/engine/rendering/ResolutionScaler.js www/src/engine/rendering/ResolutionScaler.js -R100 src/engine/rendering/SpriteRenderSystem.js www/src/engine/rendering/SpriteRenderSystem.js -R100 src/engine/rendering/VectorDrawing.js www/src/engine/rendering/VectorDrawing.js -R100 src/engine/rendering/WorldScreenTransform.js www/src/engine/rendering/WorldScreenTransform.js -R100 src/engine/rendering/WorldScreenTransformService.js www/src/engine/rendering/WorldScreenTransformService.js -R100 src/engine/replay/ReplayModel.js www/src/engine/replay/ReplayModel.js -R100 src/engine/replay/ReplaySystem.js www/src/engine/replay/ReplaySystem.js -R100 src/engine/replay/ReplayTimeline.js www/src/engine/replay/ReplayTimeline.js -R100 src/engine/runtime/BrowserDownloadService.js www/src/engine/runtime/BrowserDownloadService.js -R100 src/engine/runtime/FullscreenService.js www/src/engine/runtime/FullscreenService.js -R100 src/engine/runtime/MobileRuntimeTweaks.js www/src/engine/runtime/MobileRuntimeTweaks.js -R100 src/engine/runtime/RuntimeMonitoringHooks.js www/src/engine/runtime/RuntimeMonitoringHooks.js -R100 src/engine/runtime/backgroundColor.js www/src/engine/runtime/backgroundColor.js -R100 src/engine/runtime/backgroundImage.js www/src/engine/runtime/backgroundImage.js -R100 src/engine/runtime/engineV2AbilitySystem.js www/src/engine/runtime/engineV2AbilitySystem.js -R100 src/engine/runtime/engineV2AnimationRuntime.js www/src/engine/runtime/engineV2AnimationRuntime.js -R100 src/engine/runtime/engineV2AudioRuntime.js www/src/engine/runtime/engineV2AudioRuntime.js -R100 src/engine/runtime/engineV2CameraRuntime.js www/src/engine/runtime/engineV2CameraRuntime.js -R100 src/engine/runtime/engineV2ChaseFleeBehavior.js www/src/engine/runtime/engineV2ChaseFleeBehavior.js -R100 src/engine/runtime/engineV2CheckpointSystem.js www/src/engine/runtime/engineV2CheckpointSystem.js -R100 src/engine/runtime/engineV2ConfigDrivenProofScene.js www/src/engine/runtime/engineV2ConfigDrivenProofScene.js -R100 src/engine/runtime/engineV2ContainerSystem.js www/src/engine/runtime/engineV2ContainerSystem.js -R100 src/engine/runtime/engineV2CraftingFoundation.js www/src/engine/runtime/engineV2CraftingFoundation.js -R100 src/engine/runtime/engineV2CustomExtensionsHookRuntime.js www/src/engine/runtime/engineV2CustomExtensionsHookRuntime.js -R100 src/engine/runtime/engineV2DialogueSystem.js www/src/engine/runtime/engineV2DialogueSystem.js -R100 src/engine/runtime/engineV2EconomyAndCurrency.js www/src/engine/runtime/engineV2EconomyAndCurrency.js -R100 src/engine/runtime/engineV2EffectRuntime.js www/src/engine/runtime/engineV2EffectRuntime.js -R100 src/engine/runtime/engineV2EquipmentSystem.js www/src/engine/runtime/engineV2EquipmentSystem.js -R100 src/engine/runtime/engineV2InteractionSystem.js www/src/engine/runtime/engineV2InteractionSystem.js -R100 src/engine/runtime/engineV2InventorySystem.js www/src/engine/runtime/engineV2InventorySystem.js -R100 src/engine/runtime/engineV2ItemAndLootSystem.js www/src/engine/runtime/engineV2ItemAndLootSystem.js -R100 src/engine/runtime/engineV2ModifierStack.js www/src/engine/runtime/engineV2ModifierStack.js -R100 src/engine/runtime/engineV2ObjectiveSystem.js www/src/engine/runtime/engineV2ObjectiveSystem.js -R100 src/engine/runtime/engineV2PathfindingBaseline.js www/src/engine/runtime/engineV2PathfindingBaseline.js -R100 src/engine/runtime/engineV2PatrolBehavior.js www/src/engine/runtime/engineV2PatrolBehavior.js -R100 src/engine/runtime/engineV2PersistenceRuntime.js www/src/engine/runtime/engineV2PersistenceRuntime.js -R100 src/engine/runtime/engineV2ProfileStateSystem.js www/src/engine/runtime/engineV2ProfileStateSystem.js -R100 src/engine/runtime/engineV2ProjectileSystem.js www/src/engine/runtime/engineV2ProjectileSystem.js -R100 src/engine/runtime/engineV2QuestSystem.js www/src/engine/runtime/engineV2QuestSystem.js -R100 src/engine/runtime/engineV2SaveLoadValidation.js www/src/engine/runtime/engineV2SaveLoadValidation.js -R100 src/engine/runtime/engineV2SaveStateModel.js www/src/engine/runtime/engineV2SaveStateModel.js -R100 src/engine/runtime/engineV2StateMachineRuntime.js www/src/engine/runtime/engineV2StateMachineRuntime.js -R100 src/engine/runtime/engineV2StatusEffectSystem.js www/src/engine/runtime/engineV2StatusEffectSystem.js -R100 src/engine/runtime/engineV2UiRuntime.js www/src/engine/runtime/engineV2UiRuntime.js -R100 src/engine/runtime/engineV2VendorSystem.js www/src/engine/runtime/engineV2VendorSystem.js -R100 src/engine/runtime/engineV2WeaponSystem.js www/src/engine/runtime/engineV2WeaponSystem.js -R100 src/engine/runtime/firstManifestDrivenPlayableScene.js www/src/engine/runtime/firstManifestDrivenPlayableScene.js -R100 src/engine/runtime/fullscreenBezel.js www/src/engine/runtime/fullscreenBezel.js -R100 src/engine/runtime/gameImageConvention.js www/src/engine/runtime/gameImageConvention.js -R100 src/engine/runtime/manifestRuntimeParser.js www/src/engine/runtime/manifestRuntimeParser.js -R100 src/engine/runtime/objectDefinitionReader.js www/src/engine/runtime/objectDefinitionReader.js -R100 src/engine/runtime/ruleDefinitionReader.js www/src/engine/runtime/ruleDefinitionReader.js -R100 src/engine/runtime/runtimeActionSystem.js www/src/engine/runtime/runtimeActionSystem.js -R100 src/engine/runtime/runtimeBehaviorComposition.js www/src/engine/runtime/runtimeBehaviorComposition.js -R100 src/engine/runtime/runtimeCollisionProcessing.js www/src/engine/runtime/runtimeCollisionProcessing.js -R100 src/engine/runtime/runtimeConditionSystem.js www/src/engine/runtime/runtimeConditionSystem.js -R100 src/engine/runtime/runtimeCooldownProcessing.js www/src/engine/runtime/runtimeCooldownProcessing.js -R100 src/engine/runtime/runtimeDamageProcessing.js www/src/engine/runtime/runtimeDamageProcessing.js -R100 src/engine/runtime/runtimeEnvironmentEffects.js www/src/engine/runtime/runtimeEnvironmentEffects.js -R100 src/engine/runtime/runtimeEnvironmentForceInstantiation.js www/src/engine/runtime/runtimeEnvironmentForceInstantiation.js -R100 src/engine/runtime/runtimeErrorReporting.js www/src/engine/runtime/runtimeErrorReporting.js -R100 src/engine/runtime/runtimeEventSystem.js www/src/engine/runtime/runtimeEventSystem.js -R100 src/engine/runtime/runtimeHealthModel.js www/src/engine/runtime/runtimeHealthModel.js -R100 src/engine/runtime/runtimeInputPipeline.js www/src/engine/runtime/runtimeInputPipeline.js -R100 src/engine/runtime/runtimeLivesAndRespawn.js www/src/engine/runtime/runtimeLivesAndRespawn.js -R100 src/engine/runtime/runtimeMovementProcessing.js www/src/engine/runtime/runtimeMovementProcessing.js -R100 src/engine/runtime/runtimeMultiSceneLoading.js www/src/engine/runtime/runtimeMultiSceneLoading.js -R100 src/engine/runtime/runtimeObjectInstantiation.js www/src/engine/runtime/runtimeObjectInstantiation.js -R100 src/engine/runtime/runtimeObjectRecordFactory.js www/src/engine/runtime/runtimeObjectRecordFactory.js -R100 src/engine/runtime/runtimeOutcomeProcessing.js www/src/engine/runtime/runtimeOutcomeProcessing.js -R100 src/engine/runtime/runtimePlayableLoop.js www/src/engine/runtime/runtimePlayableLoop.js -R100 src/engine/runtime/runtimeRenderPipeline.js www/src/engine/runtime/runtimeRenderPipeline.js -R100 src/engine/runtime/runtimeRenderingBootstrap.js www/src/engine/runtime/runtimeRenderingBootstrap.js -R100 src/engine/runtime/runtimeRuleAttachment.js www/src/engine/runtime/runtimeRuleAttachment.js -R100 src/engine/runtime/runtimeSceneDefinitionSupport.js www/src/engine/runtime/runtimeSceneDefinitionSupport.js -R100 src/engine/runtime/runtimeScoringAndStateProcessing.js www/src/engine/runtime/runtimeScoringAndStateProcessing.js -R100 src/engine/runtime/runtimeSpawnDespawnProcessing.js www/src/engine/runtime/runtimeSpawnDespawnProcessing.js -R100 src/engine/runtime/runtimeTerrainEffects.js www/src/engine/runtime/runtimeTerrainEffects.js -R100 src/engine/runtime/runtimeTerrainMaterialInstantiation.js www/src/engine/runtime/runtimeTerrainMaterialInstantiation.js -R100 src/engine/runtime/runtimeTickLoop.js www/src/engine/runtime/runtimeTickLoop.js -R100 src/engine/runtime/runtimeTriggerProcessing.js www/src/engine/runtime/runtimeTriggerProcessing.js -R100 src/engine/scene/AttractModeController.js www/src/engine/scene/AttractModeController.js -R100 src/engine/scene/Scene.js www/src/engine/scene/Scene.js -R100 src/engine/scene/SceneManager.js www/src/engine/scene/SceneManager.js -R100 src/engine/scene/SceneTransition.js www/src/engine/scene/SceneTransition.js -R100 src/engine/scene/SceneTransitionController.js www/src/engine/scene/SceneTransitionController.js -R100 src/engine/scene/TransitionScene.js www/src/engine/scene/TransitionScene.js -R100 src/engine/security/DataIntegrityService.js www/src/engine/security/DataIntegrityService.js -R100 src/engine/security/PacketValidator.js www/src/engine/security/PacketValidator.js -R100 src/engine/security/PermissionGate.js www/src/engine/security/PermissionGate.js -R100 src/engine/security/SessionTrustValidator.js www/src/engine/security/SessionTrustValidator.js -R100 src/engine/state/StateMachine.js www/src/engine/state/StateMachine.js -R100 src/engine/systems/BounceSystem.js www/src/engine/systems/BounceSystem.js -R100 src/engine/systems/BoundsSystem.js www/src/engine/systems/BoundsSystem.js -R100 src/engine/systems/CollectSystem.js www/src/engine/systems/CollectSystem.js -R100 src/engine/systems/CollisionResolutionSystem.js www/src/engine/systems/CollisionResolutionSystem.js -R100 src/engine/systems/CollisionSystem.js www/src/engine/systems/CollisionSystem.js -R100 src/engine/systems/InputControlSystem.js www/src/engine/systems/InputControlSystem.js -R100 src/engine/systems/LifecycleSystem.js www/src/engine/systems/LifecycleSystem.js -R100 src/engine/systems/MovementSystem.js www/src/engine/systems/MovementSystem.js -R100 src/engine/systems/PhysicsSystem.js www/src/engine/systems/PhysicsSystem.js -R100 src/engine/systems/ProjectileSystem.js www/src/engine/systems/ProjectileSystem.js -R100 src/engine/systems/RenderSystem.js www/src/engine/systems/RenderSystem.js -R100 src/engine/systems/SystemUtils.js www/src/engine/systems/SystemUtils.js -R100 src/engine/tilemap/TileMetadata.js www/src/engine/tilemap/TileMetadata.js -R100 src/engine/tilemap/Tilemap.js www/src/engine/tilemap/Tilemap.js -R100 src/engine/tilemap/TilemapCollision.js www/src/engine/tilemap/TilemapCollision.js -R100 src/engine/tilemap/TilemapRenderSystem.js www/src/engine/tilemap/TilemapRenderSystem.js -R100 src/engine/ui/CanvasDialogPrimitives.js www/src/engine/ui/CanvasDialogPrimitives.js -R100 src/engine/ui/CanvasPopupInteractions.js www/src/engine/ui/CanvasPopupInteractions.js -R100 src/engine/ui/CanvasPopupState.js www/src/engine/ui/CanvasPopupState.js -R100 src/engine/ui/UIFramework.js www/src/engine/ui/UIFramework.js -R100 src/engine/ui/assets/icons/pin-monocolor-filled.svg www/src/engine/ui/assets/icons/pin-monocolor-filled.svg -R100 src/engine/ui/assets/icons/pin-monocolor.svg www/src/engine/ui/assets/icons/pin-monocolor.svg -R100 src/engine/ui/baseLayout.css www/src/engine/ui/baseLayout.css -R100 src/engine/ui/hubCommon.css www/src/engine/ui/hubCommon.css -R100 src/engine/ui/spriteEditor.css www/src/engine/ui/spriteEditor.css -R100 src/engine/world/AchievementSystem.js www/src/engine/world/AchievementSystem.js -R100 src/engine/world/CutsceneSystem.js www/src/engine/world/CutsceneSystem.js -R100 src/engine/world/DayNightCycle.js www/src/engine/world/DayNightCycle.js -R100 src/engine/world/EventScriptSystem.js www/src/engine/world/EventScriptSystem.js -R100 src/engine/world/QuestSystem.js www/src/engine/world/QuestSystem.js -R100 src/engine/world/SpawnSystem.js www/src/engine/world/SpawnSystem.js -R100 src/engine/world/WeatherSystem.js www/src/engine/world/WeatherSystem.js -R100 src/engine/world/WorldStreamingSystem.js www/src/engine/world/WorldStreamingSystem.js -R100 src/shared/array/arrays.js www/src/shared/array/arrays.js -R100 src/shared/array/recordArrays.js www/src/shared/array/recordArrays.js -R100 src/shared/color/color.js www/src/shared/color/color.js -R100 src/shared/game/highScores.js www/src/shared/game/highScores.js -R100 src/shared/game/initialsEntry.js www/src/shared/game/initialsEntry.js -R100 src/shared/geometry/geometry.js www/src/shared/geometry/geometry.js -R100 src/shared/hash/hash.js www/src/shared/hash/hash.js -R100 src/shared/id/ids.js www/src/shared/id/ids.js -R100 src/shared/json/clone.js www/src/shared/json/clone.js -R100 src/shared/json/jsonIO.js www/src/shared/json/jsonIO.js -R100 src/shared/math/Random.js www/src/shared/math/Random.js -R100 src/shared/math/RandomSeed.js www/src/shared/math/RandomSeed.js -R100 src/shared/math/directions.js www/src/shared/math/directions.js -R100 src/shared/math/geometry.js www/src/shared/math/geometry.js -R100 src/shared/math/numberNormalization.js www/src/shared/math/numberNormalization.js -R100 src/shared/math/randomHelpers.js www/src/shared/math/randomHelpers.js -R100 src/shared/math/scalars.js www/src/shared/math/scalars.js -R100 src/shared/math/vectorMath.js www/src/shared/math/vectorMath.js -R100 src/shared/math/vectorNormalize.js www/src/shared/math/vectorNormalize.js -R100 src/shared/noise/noise.js www/src/shared/noise/noise.js -R100 src/shared/number/numbers.js www/src/shared/number/numbers.js -R100 src/shared/object/objects.js www/src/shared/object/objects.js -R100 src/shared/runtime/registry.js www/src/shared/runtime/registry.js -R100 src/shared/runtime/snapshotClone.js www/src/shared/runtime/snapshotClone.js -R100 src/shared/state/createPromotionStateSnapshot.js www/src/shared/state/createPromotionStateSnapshot.js -R100 src/shared/state/getState.js www/src/shared/state/getState.js -R100 src/shared/state/getStateVariantClassification.js www/src/shared/state/getStateVariantClassification.js -R100 src/shared/state/guards.js www/src/shared/state/guards.js -R100 src/shared/state/normalization.js www/src/shared/state/normalization.js -R100 src/shared/state/selectors.js www/src/shared/state/selectors.js -R100 src/shared/string/commandText.js www/src/shared/string/commandText.js -R100 src/shared/string/fuzzyMatchScore.js www/src/shared/string/fuzzyMatchScore.js -R100 src/shared/string/stringifyValue.js www/src/shared/string/stringifyValue.js -R100 src/shared/string/strings.js www/src/shared/string/strings.js -R100 src/shared/string/textWrap.js www/src/shared/string/textWrap.js -R100 src/shared/text/text.js www/src/shared/text/text.js -R100 src/shared/time/time.js www/src/shared/time/time.js -R100 src/shared/toolbox/aiAuthoringAssistant.js www/src/shared/toolbox/aiAuthoringAssistant.js -R100 src/shared/toolbox/assetMarketplace.js www/src/shared/toolbox/assetMarketplace.js -R100 src/shared/toolbox/assetPipelineConverters.js www/src/shared/toolbox/assetPipelineConverters.js -R100 src/shared/toolbox/assetPipelineFoundation.js www/src/shared/toolbox/assetPipelineFoundation.js -R100 src/shared/toolbox/assetPipelineValidationOutput.js www/src/shared/toolbox/assetPipelineValidationOutput.js -R100 src/shared/toolbox/assetUsageIntegration.js www/src/shared/toolbox/assetUsageIntegration.js -R100 src/shared/toolbox/ciValidationPipeline.js www/src/shared/toolbox/ciValidationPipeline.js -R100 src/shared/toolbox/cloudRuntime.js www/src/shared/toolbox/cloudRuntime.js -R100 src/shared/toolbox/collaborationSystem.js www/src/shared/toolbox/collaborationSystem.js -R100 src/shared/toolbox/contractVersioning.js www/src/shared/toolbox/contractVersioning.js -R100 src/shared/toolbox/debugInspectorData.js www/src/shared/toolbox/debugInspectorData.js -R100 src/shared/toolbox/debugInspectorTools.css www/src/shared/toolbox/debugInspectorTools.css -R100 src/shared/toolbox/debugToolInteractionFlow.js www/src/shared/toolbox/debugToolInteractionFlow.js -R100 src/shared/toolbox/debugVisualizationLayer.js www/src/shared/toolbox/debugVisualizationLayer.js -R100 src/shared/toolbox/devConsoleDebugOverlay.js www/src/shared/toolbox/devConsoleDebugOverlay.js -R100 src/shared/toolbox/documentModeGuards.js www/src/shared/toolbox/documentModeGuards.js -R100 src/shared/toolbox/editor/EntityPlacementEditor.js www/src/shared/toolbox/editor/EntityPlacementEditor.js -R100 src/shared/toolbox/editor/LevelEditor.js www/src/shared/toolbox/editor/LevelEditor.js -R100 src/shared/toolbox/editor/TileMapEditor.js www/src/shared/toolbox/editor/TileMapEditor.js -R100 src/shared/toolbox/editor/TimelineEditor.js www/src/shared/toolbox/editor/TimelineEditor.js -R100 src/shared/toolbox/editorExperienceLayer.js www/src/shared/toolbox/editorExperienceLayer.js -R100 src/shared/toolbox/eventCommandUtils.js www/src/shared/toolbox/eventCommandUtils.js -R100 src/shared/toolbox/gameTemplates.js www/src/shared/toolbox/gameTemplates.js -R100 src/shared/toolbox/gameplaySystemLayer.js www/src/shared/toolbox/gameplaySystemLayer.js -R100 src/shared/toolbox/hotReloadSystem.js www/src/shared/toolbox/hotReloadSystem.js -R100 src/shared/toolbox/livePreviewSyncChannel.js www/src/shared/toolbox/livePreviewSyncChannel.js -R100 src/shared/toolbox/multiTargetExport.js www/src/shared/toolbox/multiTargetExport.js -R100 src/shared/toolbox/paletteDocumentContract.js www/src/shared/toolbox/paletteDocumentContract.js -R100 src/shared/toolbox/performanceBenchmarks.js www/src/shared/toolbox/performanceBenchmarks.js -R100 src/shared/toolbox/performanceProfiler.js www/src/shared/toolbox/performanceProfiler.js -R100 src/shared/toolbox/pipeline/AssetImportPipeline.js www/src/shared/toolbox/pipeline/AssetImportPipeline.js -R100 src/shared/toolbox/pipeline/AudioPreprocessPipeline.js www/src/shared/toolbox/pipeline/AudioPreprocessPipeline.js -R100 src/shared/toolbox/pipeline/BuildAssetManifestSystem.js www/src/shared/toolbox/pipeline/BuildAssetManifestSystem.js -R100 src/shared/toolbox/pipeline/ContentMigrationSystem.js www/src/shared/toolbox/pipeline/ContentMigrationSystem.js -R100 src/shared/toolbox/pipeline/ContentValidationPipeline.js www/src/shared/toolbox/pipeline/ContentValidationPipeline.js -R100 src/shared/toolbox/pipeline/TexturePreprocessPipeline.js www/src/shared/toolbox/pipeline/TexturePreprocessPipeline.js -R100 src/shared/toolbox/pipeline/assetErrorHandling.js www/src/shared/toolbox/pipeline/assetErrorHandling.js -R100 src/shared/toolbox/pipeline/assetManifestLoader.js www/src/shared/toolbox/pipeline/assetManifestLoader.js -R100 src/shared/toolbox/pipeline/assetPipelineTooling.js www/src/shared/toolbox/pipeline/assetPipelineTooling.js -R100 src/shared/toolbox/pipeline/gameAssetManifestCoordinator.js www/src/shared/toolbox/pipeline/gameAssetManifestCoordinator.js -R100 src/shared/toolbox/pipeline/gameAssetManifestDiscovery.js www/src/shared/toolbox/pipeline/gameAssetManifestDiscovery.js -R100 src/shared/toolbox/pipeline/runtimeAssetBinding.js www/src/shared/toolbox/pipeline/runtimeAssetBinding.js -R100 src/shared/toolbox/pipeline/runtimeAssetLookup.js www/src/shared/toolbox/pipeline/runtimeAssetLookup.js -R100 src/shared/toolbox/pipeline/runtimeAssetValidation.js www/src/shared/toolbox/pipeline/runtimeAssetValidation.js -R100 src/shared/toolbox/platformShell.css www/src/shared/toolbox/platformShell.css -R100 src/shared/toolbox/platformShell.js www/src/shared/toolbox/platformShell.js -R100 src/shared/toolbox/platformValidationSuite.js www/src/shared/toolbox/platformValidationSuite.js -R100 src/shared/toolbox/pluginArchitecture.js www/src/shared/toolbox/pluginArchitecture.js -R100 src/shared/toolbox/powerShell/find_dupes_called.ps1 www/src/shared/toolbox/powerShell/find_dupes_called.ps1 -R100 src/shared/toolbox/projectAssetRegistry.js www/src/shared/toolbox/projectAssetRegistry.js -R100 src/shared/toolbox/projectAssetRemediation.js www/src/shared/toolbox/projectAssetRemediation.js -R100 src/shared/toolbox/projectAssetValidation.js www/src/shared/toolbox/projectAssetValidation.js -R100 src/shared/toolbox/projectManifestContract.js www/src/shared/toolbox/projectManifestContract.js -R100 src/shared/toolbox/projectPackaging.js www/src/shared/toolbox/projectPackaging.js -R100 src/shared/toolbox/projectSystem.js www/src/shared/toolbox/projectSystem.js -R100 src/shared/toolbox/projectSystemAdapters.js www/src/shared/toolbox/projectSystemAdapters.js -R100 src/shared/toolbox/projectSystemValueUtils.js www/src/shared/toolbox/projectSystemValueUtils.js -R100 src/shared/toolbox/projectToolIntegration.js www/src/shared/toolbox/projectToolIntegration.js -R100 src/shared/toolbox/projectVersioning.js www/src/shared/toolbox/projectVersioning.js -R100 src/shared/toolbox/publishingPipeline.js www/src/shared/toolbox/publishingPipeline.js -R100 src/shared/toolbox/renderPipelineContract.js www/src/shared/toolbox/renderPipelineContract.js -R100 src/shared/toolbox/runtimeAssetLoader.js www/src/shared/toolbox/runtimeAssetLoader.js -R100 src/shared/toolbox/runtimeAssetSharedUtils.js www/src/shared/toolbox/runtimeAssetSharedUtils.js -R100 src/shared/toolbox/runtimeAssetValidationUtils.js www/src/shared/toolbox/runtimeAssetValidationUtils.js -R100 src/shared/toolbox/runtimeSceneLoaderHotReload.js www/src/shared/toolbox/runtimeSceneLoaderHotReload.js -R100 src/shared/toolbox/runtimeStreaming.js www/src/shared/toolbox/runtimeStreaming.js -R100 src/shared/toolbox/samples/project-asset-registry-demo/assets/images/clouds-layer.svg www/src/shared/toolbox/samples/project-asset-registry-demo/assets/images/clouds-layer.svg -R100 src/shared/toolbox/samples/project-asset-registry-demo/assets/parallax/overworld-main.parallax.json www/src/shared/toolbox/samples/project-asset-registry-demo/assets/parallax/overworld-main.parallax.json -R100 src/shared/toolbox/samples/project-asset-registry-demo/assets/sprites/hero-idle.sprite.json www/src/shared/toolbox/samples/project-asset-registry-demo/assets/sprites/hero-idle.sprite.json -R100 src/shared/toolbox/samples/project-asset-registry-demo/assets/tilemaps/overworld-main.tilemap.json www/src/shared/toolbox/samples/project-asset-registry-demo/assets/tilemaps/overworld-main.tilemap.json -R100 src/shared/toolbox/samples/project-asset-registry-demo/assets/tiles/overworld-main.png www/src/shared/toolbox/samples/project-asset-registry-demo/assets/tiles/overworld-main.png -R070 src/shared/toolbox/samples/project-asset-registry-demo/project.assets.json www/src/shared/toolbox/samples/project-asset-registry-demo/project.assets.json -R100 src/shared/toolbox/schemaOnlyToolPresetValidation.js www/src/shared/toolbox/schemaOnlyToolPresetValidation.js -R100 src/shared/toolbox/tool-metadata-inventory.js www/src/shared/toolbox/tool-metadata-inventory.js -R100 src/shared/toolbox/toolBootContract.js www/src/shared/toolbox/toolBootContract.js -R100 src/shared/toolbox/toolHostManifest.js www/src/shared/toolbox/toolHostManifest.js -R100 src/shared/toolbox/toolHostRuntime.js www/src/shared/toolbox/toolHostRuntime.js -R100 src/shared/toolbox/toolHostSharedContext.js www/src/shared/toolbox/toolHostSharedContext.js -R100 src/shared/toolbox/toolLaunchSSoT.js www/src/shared/toolbox/toolLaunchSSoT.js -R100 src/shared/toolbox/toolLaunchSSoTData.js www/src/shared/toolbox/toolLaunchSSoTData.js -R100 src/shared/toolbox/toolLoadDiagnostics.js www/src/shared/toolbox/toolLoadDiagnostics.js -R100 src/shared/toolbox/toolSampleCatalog.js www/src/shared/toolbox/toolSampleCatalog.js -R100 src/shared/toolbox/tooling/AssetBrowser.js www/src/shared/toolbox/tooling/AssetBrowser.js -R100 src/shared/toolbox/tooling/DeveloperConsole.js www/src/shared/toolbox/tooling/DeveloperConsole.js -R100 src/shared/toolbox/tooling/LiveTuningService.js www/src/shared/toolbox/tooling/LiveTuningService.js -R100 src/shared/toolbox/tooling/PropertyEditor.js www/src/shared/toolbox/tooling/PropertyEditor.js -R100 src/shared/toolbox/tooling/RuntimeInspector.js www/src/shared/toolbox/tooling/RuntimeInspector.js -R100 src/shared/toolbox/tooling/SceneGraphViewer.js www/src/shared/toolbox/tooling/SceneGraphViewer.js -R100 src/shared/toolbox/uiSafeUtils.js www/src/shared/toolbox/uiSafeUtils.js -R100 src/shared/toolbox/unifiedToolUxContract.js www/src/shared/toolbox/unifiedToolUxContract.js -R100 src/shared/toolbox/vector/vectorAssetBridge.js www/src/shared/toolbox/vector/vectorAssetBridge.js -R100 src/shared/toolbox/vector/vectorAssetContract.js www/src/shared/toolbox/vector/vectorAssetContract.js -R100 src/shared/toolbox/vector/vectorGeometryMath.js www/src/shared/toolbox/vector/vectorGeometryMath.js -R100 src/shared/toolbox/vector/vectorRenderPrep.js www/src/shared/toolbox/vector/vectorRenderPrep.js -R100 src/shared/toolbox/vector/vectorSafeValueUtils.js www/src/shared/toolbox/vector/vectorSafeValueUtils.js -R100 src/shared/toolbox/vectorAssetSystem.js www/src/shared/toolbox/vectorAssetSystem.js -R100 src/shared/toolbox/vectorGeometryRuntime.js www/src/shared/toolbox/vectorGeometryRuntime.js -R100 src/shared/toolbox/vectorNativeTemplate.js www/src/shared/toolbox/vectorNativeTemplate.js -R100 src/shared/toolbox/vectorTemplateSampleGame.js www/src/shared/toolbox/vectorTemplateSampleGame.js -R100 src/shared/toolbox/workspaceShell.js www/src/shared/toolbox/workspaceShell.js -R100 src/shared/types/typeGuards.js www/src/shared/types/typeGuards.js -R100 src/shared/validation/assert.js www/src/shared/validation/assert.js -R100 src/shared/validation/invariant.js www/src/shared/validation/invariant.js -R100 src/tools/common/GameManifestLoader.js www/src/tools/common/GameManifestLoader.js -R100 src/tools/common/WorkspaceDirtyNotifier.js www/src/tools/common/WorkspaceDirtyNotifier.js +A dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_audit.csv +A dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_branch-validation.md +A dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_manual-validation-notes.md +A dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_report.md +A dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_requirement-checklist.md +A dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_validation-report.md diff --git a/dev/reports/codex_review.diff b/dev/reports/codex_review.diff index fecc49b4f..69d690530 100644 --- a/dev/reports/codex_review.diff +++ b/dev/reports/codex_review.diff @@ -1,9446 +1,1288 @@ -diff --git a/api/API_RUNTIME_BOUNDARY.md b/api/API_RUNTIME_BOUNDARY.md -index ba4c12c6b..8dd2ff870 100644 ---- a/api/API_RUNTIME_BOUNDARY.md -+++ b/api/API_RUNTIME_BOUNDARY.md -@@ -11,6 +11,6 @@ It is intentionally not `dev/tests/dev-runtime`: - Deployment boundary: - - - DEV validation may execute `api/` through local server commands. --- Browser pages, Theme V2 scripts, toolbox pages, and `src/engine` runtime code must use declared API/service contracts instead of importing `api/` directly. -+- Browser pages, Theme V2 scripts, toolbox pages, and `www/src/engine` runtime code must use declared API/service contracts instead of importing `api/` directly. - - If a dev-only adapter is needed by a browser page, expose it through the Local API contract while keeping the implementation under `api/`. - - Developer-only local bootstrap/orchestration remains outside `api/` until the scoped `dev/local-runtime/` migration PR. -diff --git a/api/admin/admin-notes-menu.mjs b/api/admin/admin-notes-menu.mjs -index 3e6d13e5d..1320d7216 100644 ---- a/api/admin/admin-notes-menu.mjs -+++ b/api/admin/admin-notes-menu.mjs -@@ -6,7 +6,7 @@ export const ADMIN_NOTES_LOCAL_MENU_LABEL = "Notes"; - export const ADMIN_MY_STUFF_MENU_LABEL = "My Stuff"; - - const HEADER_PARTIAL_PATH = "www/assets/theme-v2/partials/header-nav.html"; --const LOCAL_HEADER_PARTIAL_PATH = "src/dev-runtime/admin/header-nav.local.html"; -+const LOCAL_HEADER_PARTIAL_PATH = "www/src/dev-runtime/admin/header-nav.local.html"; - - function repoRelativePath(repoRoot, targetPath) { - return path.relative(repoRoot, targetPath).replaceAll(path.sep, "/"); -diff --git a/api/guest-seeds/tool-metadata-inventory.js b/api/guest-seeds/tool-metadata-inventory.js -index 2a7efcf29..36a2e01e5 100644 ---- a/api/guest-seeds/tool-metadata-inventory.js -+++ b/api/guest-seeds/tool-metadata-inventory.js -@@ -1 +1 @@ --export * from "../../src/shared/toolbox/tool-metadata-inventory.js"; -+export * from "../../www/src/shared/toolbox/tool-metadata-inventory.js"; -diff --git a/api/server/local-api-router.mjs b/api/server/local-api-router.mjs -index cd315eee8..9151feb52 100644 ---- a/api/server/local-api-router.mjs -+++ b/api/server/local-api-router.mjs -@@ -133,7 +133,7 @@ import { - import { - getAdminNavigationItems, - getOwnerNavigationItems, --} from "../../src/api/admin-owner-navigation.js"; -+} from "../../www/src/api/admin-owner-navigation.js"; - import { createPaletteSourceMockDbRows } from "../guest-seeds/palette-source-mock-db.js"; - import { - SUPABASE_AUTH_PROVIDER_ID, -@@ -6929,8 +6929,8 @@ SELECT pg_database_size(current_database()) AS database_size_bytes, - adminMainItems: getAdminNavigationItems(), - ownerMenuItems: getOwnerNavigationItems(), - ownership: { -- adminMainItems: "src/api/admin-owner-navigation.js", -- ownerMenuItems: "src/api/admin-owner-navigation.js", -+ adminMainItems: "www/src/api/admin-owner-navigation.js", -+ ownerMenuItems: "www/src/api/admin-owner-navigation.js", - routeMap: "static shell route resolution", - }, - source: "server-api", -diff --git a/dev/build/ProjectInstructions/PROJECT_INSTRUCTIONS.md b/dev/build/ProjectInstructions/PROJECT_INSTRUCTIONS.md -index 76a4ca47c..a2595051c 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.017 -+- Project Instructions Version: 2026.06.28.018 - - 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 e0fb5fb57..345bd239e 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.017 -+Current Project Instructions Version: 2026.06.28.018 - - Last Updated: 2026-06-28 - -@@ -25,6 +25,7 @@ Last Updated: 2026-06-28 - - Added root leftover audit and `src/` transition plan for the final repository layout cleanup stage. - - 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. - - 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 d768977a8..7e01574cb 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.017" -+project_state_version: "2026.06.28.018" - 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.017" --repository_structure_version: "2026.06.28.017" --canonical_layout_version: "2026.06.28.017" -+project_instructions_version: "2026.06.28.018" -+repository_structure_version: "2026.06.28.018" -+canonical_layout_version: "2026.06.28.018" - active_teams: - - "Owner" - - "Alfa" -@@ -20,8 +20,8 @@ active_teams: - - "Charlie" - - "Delta" - - "Golf" --latest_owner_pr: "PR_26180_OWNER_017-src-dissection-and-demo-cleanup" --latest_structure_pr: "PR_26180_OWNER_017-src-dissection-and-demo-cleanup" -+latest_owner_pr: "PR_26180_OWNER_018-move-src-browser-to-www" -+latest_structure_pr: "PR_26180_OWNER_018-move-src-browser-to-www" - valid_top_level_folders: - - "api/" - - "deploy/" -@@ -40,7 +40,8 @@ valid_dev_folders: - - "dev/tools/" - - "dev/workspace/" - known_technical_debt: -- - "Browser API client modules remain under src/api/ until the final src layer migration moves them into src/web/ or src/runtime/." -- - "src/dev-runtime/admin/ remains as a legacy Admin Notes browser-viewer compatibility path until a scoped browser admin migration retires it." -+ - "API/server-owned contracts, schemas, and project data store modules remain under src/shared/ until PR_26180_OWNER_019 moves them to api/." -+ - "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 980ac2308..7b384c38e 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_017-src-dissection-and-demo-cleanup --- Next Milestone: Final layout validation and completion report -+- Active PR: PR_26180_OWNER_018-move-src-browser-to-www -+- Next Milestone: Move 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 f1561c28e..6a3115dd9 100644 ---- a/dev/build/ProjectInstructions/repository/canonical_repository_structure.md -+++ b/dev/build/ProjectInstructions/repository/canonical_repository_structure.md -@@ -14,7 +14,7 @@ Valid top-level folders: - - www/ - - Root product and repo sections: --- www/ owns browser-served production website sections, Creator toolbox pages, public game discovery, production Docs & Help, and browser assets. -+- www/ owns browser-served production website sections, Creator toolbox pages, public game discovery, production Docs & Help, browser assets, and browser-owned runtime/client modules under `www/src/`. - - api/ is the Node/API/server application surface for server entry points, API routing, API services, database access, storage access, auth, setup, publishing, and admin server logic. - - deploy/ contains deployment configuration. - - dev/ contains the development workspace. -@@ -26,14 +26,14 @@ Deployable application source: - - src/api-runtime/{feature-name}/ - - src/runtime/{feature-name}/ - --Final src layer ownership: --- src/web/ owns browser-facing deployable application modules used by public pages, account/admin surfaces, and Creator tools. --- src/api-runtime/ owns deployable API/runtime service modules that back the shared Browser -> API -> Postgres/R2 contract. --- src/runtime/ owns deployable game, tool, engine, and shared runtime capabilities. --- Existing top-level src/advanced/, src/api/, src/engine/, src/shared/, and src/tools/ directories are legacy transition buckets until explicit migration PRs move them. -+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. -+- `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. - - Browser API clients remain outside `api/`; browser-served code must use API/service contracts instead of importing top-level `api/` files directly. --- `src/dev-runtime/admin/` remains only as a legacy Admin Notes browser-viewer compatibility path until a scoped browser admin migration retires it. --- Do not add new top-level src/ layer names outside src/web/, src/api-runtime/, or src/runtime/ without OWNER approval. -+- `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. - - Do not use team names in runtime source filenames. - - Valid dev workspace folders: -@@ -60,6 +60,9 @@ Dev workspace ownership: - - dev/tools/ owns development-only tooling. - - dev/workspace/ owns generated output: tmp, zips, logs, generated files, and test-results. - -+Browser-served runtime/client source: -+- www/src/ -+ - Browser-served tools: - - www/toolbox/{tool-name}/index.html - -@@ -75,14 +78,18 @@ Shared JavaScript: - - www/assets/js/shared/ - - Legacy transition buckets: --- src/advanced/ --- src/api/ --- src/engine/ --- src/shared/ --- src/tools/ --- src/dev-runtime/admin/ -- --These legacy transition buckets may remain until explicit migration PRs move them into `src/web/`, `src/api-runtime/`, or `src/runtime/`. -+- www/src/advanced/ -+- www/src/api/ -+- www/src/engine/ -+- www/src/shared/ -+- www/src/tools/ -+- www/src/dev-runtime/admin/ -+- src/shared/contracts/ -+- src/shared/schemas/ -+- src/shared/projectDataStore/ -+- src/dev-runtime/admin/.gitkeep -+ -+The `www/src/` legacy transition buckets preserve public `/src/...` browser import compatibility during source retirement. Remaining root `src/` buckets may remain only until explicit stacked migration PRs move them to `api/` or `dev/`. - - ## Rules - -@@ -102,7 +109,8 @@ These legacy transition buckets may remain until explicit migration PRs move the - - Do not create new folders unless they fit the documented canonical structure. - - If a requested or generated path does not clearly fit the canonical structure, Codex must HARD STOP and report the proposed path. - - New development follows the canonical structure. --- New deployable `src/` work follows `src/web/`, `src/api-runtime/`, or `src/runtime/`. -+- New browser-owned source belongs under `www/` according to the browser source and asset rules above. -+- New API/server source belongs under `api/`. - - New non-deployable work belongs under `dev/`. - - Required reports belong under flat `dev/reports/`. - - Required ZIPs belong under `dev/workspace/zips/`; generated temporary artifacts belong under `dev/workspace/tmp/`. -diff --git a/dev/build/ProjectInstructions/repository/www_migration_map.md b/dev/build/ProjectInstructions/repository/www_migration_map.md -index a41ddc297..8f822299e 100644 ---- a/dev/build/ProjectInstructions/repository/www_migration_map.md -+++ b/dev/build/ProjectInstructions/repository/www_migration_map.md -@@ -1,9 +1,9 @@ - # www Migration Map - --Status: Implemented migration map -+Status: Implemented migration map and browser source migration - Owner: Owner - Workstream: Repository Architecture Simplification --PR: PR_26180_OWNER_006-www-migration-map; PR_26180_OWNER_008-move-www-application -+PR: PR_26180_OWNER_006-www-migration-map; PR_26180_OWNER_008-move-www-application; PR_26180_OWNER_018-move-src-browser-to-www - - ## Purpose - -@@ -15,9 +15,11 @@ This map began as a no-runtime-change governance artifact. `PR_26180_OWNER_008-m - - The browser-served application now lives under `www/`. - -+PR_26180_OWNER_018 moved the PR017-audited browser/www-owned legacy `src/` files into `www/src/`. -+ - Current local runtime, test helpers, and browser pages keep URLs such as `/index.html`, `/toolbox/index.html`, `/assets/theme-v2/css/theme.css`, `/account/sign-in.html`, `/admin/system-health.html`, and `/games/index.html` while resolving browser-served files from `www/`. - --The move preserved public route URLs while changing the filesystem lookup root. Repository-root fallback remains available for transition-only compatibility, including browser imports that still reference root-level `src/`. -+The move preserved public route URLs while changing the filesystem lookup root. Browser imports that use `/src/...` or relative paths resolving to `/src/...` now resolve under `www/src/` when `www/` is the served web root. - - ## Current Browser-Served Surface - -@@ -54,7 +56,7 @@ Broad active-reference search across browser roots, `src/`, `dev/scripts/`, and - | `legal/` | 13 | Footer/navigation route references and page links. | - | `learn/` | 9 | Learn route links and navigation. | - | `play/` | 7 | No root folder exists; review references manually before introducing a route. | --| `src/` | 451 | Browser imports, server imports, tests, validation aliases, and current runtime/source modules. | -+| `src/` | 451 | Browser imports, server imports, tests, validation aliases, and legacy runtime/source modules before the browser-owned subset moved to `www/src/`. | - - The high `src/` count means the browser migration cannot be treated as static files only. Several browser-facing pages import modules from root-level `src/`, including account/admin/toolbox flows. - -@@ -103,7 +105,7 @@ Examples of current references that depend on root-level path relationships: - - `toolbox/toolRegistry.js` imports from `../src/shared/toolbox/tool-metadata-inventory.js`. - - `assets/toolbox/*/js/index.js` imports from `../../../../src/` or `../../../../toolbox/` in several tool flows. - --These references can be preserved temporarily by serving compatibility paths from the repository root, but the final architecture should move browser-facing runtime modules into `www/` or an approved deployable browser module surface. -+These references are preserved by serving the browser-owned source modules from `www/src/` while keeping public `/src/...` URL compatibility. - - ## Current Local Web Server Root Behavior - -diff --git a/dev/reports/PR_26180_OWNER_018-move-src-browser-to-www_branch-validation.md b/dev/reports/PR_26180_OWNER_018-move-src-browser-to-www_branch-validation.md +diff --git a/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_audit.csv b/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_audit.csv new file mode 100644 -index 000000000..b45424059 +index 000000000..ead7a0be1 --- /dev/null -+++ b/dev/reports/PR_26180_OWNER_018-move-src-browser-to-www_branch-validation.md -@@ -0,0 +1,9 @@ -+# PR_26180_OWNER_018-move-src-browser-to-www Branch Validation ++++ b/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_audit.csv +@@ -0,0 +1,90 @@ ++file,classification,recommendation,www_refs,api_refs,dev_test_refs,dev_script_refs,package_refs,db_api_superseded ++"src/shared/contracts/auditEventContract.js","Active test/validation dependency","keep temporarily","0","0","2","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/backupSnapshotContract.js","Active test/validation dependency","keep temporarily","0","0","2","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/collaborationRoleContract.js","Active test/validation dependency","keep temporarily","0","0","2","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/creatorProfileContract.js","Active test/validation dependency","keep temporarily","0","0","2","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/downloadGrantContract.js","Active test/validation dependency","keep temporarily","0","0","2","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/entitlementContract.js","Active test/validation dependency","keep temporarily","0","0","9","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/gameManifestContract.js","Active test/validation dependency","keep temporarily","0","0","6","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/identityPermissionsContract.js","Active test/validation dependency","keep temporarily","0","0","25","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/installReceiptContract.js","Active test/validation dependency","keep temporarily","0","0","5","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/libraryItemContract.js","Active test/validation dependency","keep temporarily","0","0","6","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/marketplaceListingContract.js","Active test/validation dependency","keep temporarily","0","0","10","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/marketplaceTransactionBoundaryContract.js","Active test/validation dependency","keep temporarily","0","0","2","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/migrationPlanContract.js","Active test/validation dependency","keep temporarily","0","0","2","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/moderationQueueContract.js","Active test/validation dependency","keep temporarily","0","0","2","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/notificationContract.js","Active test/validation dependency","keep temporarily","0","0","2","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/organizationContract.js","Active test/validation dependency","keep temporarily","0","0","2","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/projectContract.js","Active test/validation dependency","keep temporarily","0","0","16","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/projectDataStoreContract.js","Active test/validation dependency","keep temporarily","0","0","2","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/projectWorkspaceRuntimeContract.js","Active test/validation dependency","keep temporarily","0","0","9","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/publishContract.js","Active test/validation dependency","keep temporarily","0","0","11","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/releaseContract.js","Active test/validation dependency","keep temporarily","0","0","12","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/replayContracts.js","Active browser/runtime dependency","move to www/","2","0","0","0","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." ++"src/shared/contracts/restoreSnapshotContract.js","Active test/validation dependency","keep temporarily","0","0","2","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/reviewRatingContract.js","Active test/validation dependency","keep temporarily","0","0","2","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/sharedStateContracts.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/toolStateContract.js","Active test/validation dependency","keep temporarily","0","0","9","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/aiAssistantContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/animationStudioContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/assetManagerContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/assetPipelineContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/assetStudioContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/audioSfxPlaygroundContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/codeStudioContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/collisionInspectorContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/gameDesignStudioContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/inputMappingContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/inputStudioContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/localizationStudioContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/midiStudioContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/objectVectorStudioContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/paletteManagerContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/parallaxEditorContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/particleStudioContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/performanceProfilerContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/physicsSandboxContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/previewGeneratorContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/publishStudioContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/replayVisualizerContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/soundStudioContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/spriteEditorContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/stateInspectorContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/storageInspectorContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/textToSpeechContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/threeDAssetViewerContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/threeDCameraPathEditorContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/threeDJsonPayloadContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/tileMapEditorContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/toolContract.js","Active test/validation dependency","keep temporarily","0","0","9","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/toolContractsIndex.js","Active test/validation dependency","keep temporarily","0","0","7","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/workspaceManagerContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/tools/worldVectorStudioContract.js","Active test/validation dependency","keep temporarily","0","0","1","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/updateChannelContract.js","Active test/validation dependency","keep temporarily","0","0","4","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/contracts/versionCompatibilityContract.js","Active test/validation dependency","keep temporarily","0","0","3","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/schemas/README.md","Unknown / needs Owner decision","move to dev/","0","0","0","0","0","Unknown; Owner decision required." ++"src/shared/schemas/game.manifest.schema.json","Active test/validation dependency","keep temporarily","0","0","1","2","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/schemas/samples/sample.tool-payload.schema.json","Active test/validation dependency","keep temporarily","0","0","4","0","0","Not yet. It remains a validation contract until replacement tests/docs are updated." ++"src/shared/schemas/tools/3d-asset-viewer.schema.json","Active browser/runtime dependency","move to www/","1","0","0","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." ++"src/shared/schemas/tools/3d-camera-path-editor.schema.json","Active browser/runtime dependency","move to www/","1","0","0","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." ++"src/shared/schemas/tools/3d-json-payload.schema.json","Active browser/runtime dependency","move to www/","1","0","0","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." ++"src/shared/schemas/tools/README.md","Unknown / needs Owner decision","move to dev/","0","0","0","0","0","Unknown; Owner decision required." ++"src/shared/schemas/tools/asset-manager-v2.schema.json","Active browser/runtime dependency","move to www/","1","0","1","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." ++"src/shared/schemas/tools/asset-pipeline.schema.json","Active browser/runtime dependency","move to www/","1","0","0","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." ++"src/shared/schemas/tools/audio-sfx-playground-v2.schema.json","Active browser/runtime dependency","move to www/","1","0","0","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." ++"src/shared/schemas/tools/collision-inspector-v2.schema.json","Active browser/runtime dependency","move to www/","1","0","0","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." ++"src/shared/schemas/tools/input-mapping-v2.schema.json","Active browser/runtime dependency","move to www/","1","0","0","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." ++"src/shared/schemas/tools/midi-studio-v2.schema.json","Active browser/runtime dependency","move to www/","1","0","0","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." ++"src/shared/schemas/tools/object-vector-studio-v2.schema.json","Active browser/runtime dependency","move to www/","2","0","1","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." ++"src/shared/schemas/tools/palette-browser.schema.json","Active browser/runtime dependency","move to www/","1","0","1","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." ++"src/shared/schemas/tools/palette-manager-v2.schema.json","Active browser/runtime dependency","move to www/","1","0","1","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." ++"src/shared/schemas/tools/parallax-editor.schema.json","Active browser/runtime dependency","move to www/","1","0","0","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." ++"src/shared/schemas/tools/performance-profiler.schema.json","Active browser/runtime dependency","move to www/","1","0","0","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." ++"src/shared/schemas/tools/physics-sandbox.schema.json","Active browser/runtime dependency","move to www/","1","0","0","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." ++"src/shared/schemas/tools/replay-visualizer.schema.json","Active browser/runtime dependency","move to www/","1","0","0","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." ++"src/shared/schemas/tools/sprite-editor.schema.json","Active browser/runtime dependency","move to www/","1","0","1","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." ++"src/shared/schemas/tools/state-inspector.schema.json","Active browser/runtime dependency","move to www/","1","0","0","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." ++"src/shared/schemas/tools/svg-asset-studio.schema.json","Active browser/runtime dependency","move to www/","1","0","1","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." ++"src/shared/schemas/tools/text2speech-V2.schema.json","Active browser/runtime dependency","move to www/","2","0","0","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." ++"src/shared/schemas/tools/tile-map-editor.schema.json","Active browser/runtime dependency","move to www/","1","0","0","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." ++"src/shared/schemas/tools/vector-map-editor.schema.json","Active browser/runtime dependency","move to www/","1","0","0","1","0","No. Browser/runtime still references it; DB/API migration cannot silently replace it." +diff --git a/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_branch-validation.md b/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_branch-validation.md +new file mode 100644 +index 000000000..0fc2b82d6 +--- /dev/null ++++ b/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_branch-validation.md +@@ -0,0 +1,10 @@ ++# PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit Branch Validation + +| Check | Status | Evidence | +| --- | --- | --- | -+| Current branch | PASS | `PR_26180_OWNER_018-move-src-browser-to-www` | -+| Expected stacked base | PASS | Created from `PR_26180_OWNER_017-src-dissection-and-demo-cleanup` workstream branch. | -+| Worktree scope | PASS | Staged changes are source relocation, reference updates, targeted tests, and governance/report artifacts. | -+| Reports path | PASS | `dev/reports/` | -+| ZIP path | PASS | `dev/workspace/zips/PR_26180_OWNER_018-move-src-browser-to-www_delta.zip` generated for this outcome. | -diff --git a/dev/reports/PR_26180_OWNER_018-move-src-browser-to-www_manual-validation-notes.md b/dev/reports/PR_26180_OWNER_018-move-src-browser-to-www_manual-validation-notes.md ++| Current branch | PASS | `PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit` | ++| Expected stacked base | PASS | Created from `PR_26180_OWNER_018-move-src-browser-to-www`. | ++| Worktree start | PASS | Clean before report generation after preserving prior PR019 hard-stop artifacts in a stash. | ++| Branch model | PASS | Owner stacked governance/report PR from previous dependency branch. | ++| Protected dev workspace | PASS | No protected `dev/workspace/**` files were moved or modified by this audit. | ++| Source movement | PASS | No files moved or deleted. | +diff --git a/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_manual-validation-notes.md b/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_manual-validation-notes.md new file mode 100644 -index 000000000..428998e73 +index 000000000..802923c5c --- /dev/null -+++ b/dev/reports/PR_26180_OWNER_018-move-src-browser-to-www_manual-validation-notes.md -@@ -0,0 +1,6 @@ -+# PR_26180_OWNER_018-move-src-browser-to-www Manual Validation Notes -+ -+- No manual browser launch was required beyond targeted Playwright route smoke. -+- Public browser route compatibility was manually smoke-checked through `resolveStaticRouteTarget` for representative browser, toolbox, admin, and `/src/...` routes. -+- Product behavior is expected to remain unchanged because public URLs are preserved and moved files keep their relative browser module relationships under `www/src/`. -+- The guard self-test intentionally retains a legacy `src/shared` import string as a violation fixture; it was allowlisted in the path scan and not treated as an active dependency. -diff --git a/dev/reports/PR_26180_OWNER_018-move-src-browser-to-www_report.md b/dev/reports/PR_26180_OWNER_018-move-src-browser-to-www_report.md ++++ b/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_manual-validation-notes.md +@@ -0,0 +1,7 @@ ++# PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit Manual Validation Notes ++ ++- Reviewed active reference surfaces requested by Owner: `www/`, `api/`, `dev/tests/`, `dev/scripts/`, and `package.json` scripts. ++- Treated `www/src/shared/toolbox/schemaOnlyToolPresetValidation.js` as a dynamic browser/runtime reference for all tool schema JSON files because it builds `/src/shared/schemas/tools/.schema.json` at runtime. ++- No source files were moved, deleted, or rewritten. ++- No protected developer workspace files were moved. ++- Recommended next action is to split/move browser-consumed contracts and schemas to `www/src/shared/...` before retrying API-only migration. +diff --git a/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_report.md b/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_report.md new file mode 100644 -index 000000000..c7f9301da +index 000000000..bc7a550c8 --- /dev/null -+++ b/dev/reports/PR_26180_OWNER_018-move-src-browser-to-www_report.md -@@ -0,0 +1,39 @@ -+# PR_26180_OWNER_018-move-src-browser-to-www Report ++++ b/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_report.md +@@ -0,0 +1,1113 @@ ++# PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit Report + +## Executive Summary + -+Moved PR017-audited browser/www-owned legacy `src/` files into `www/src/` so public browser imports such as `/src/...` continue to resolve under the `www` web root. This PR does not move API/server-owned or dev-owned `src` files and does not change product behavior. ++Reviewed 89 tracked files under `src/shared/contracts/**` and `src/shared/schemas/**` without moving or deleting any source file. ++ ++The audit found active browser/runtime dependencies, active test/validation dependencies, and README/reference files needing Owner disposition. The current repository does not support a simple bulk move of these files to `api/`. ++ ++A dynamic browser schema loader in `www/src/shared/toolbox/schemaOnlyToolPresetValidation.js` builds `/src/shared/schemas/tools/.schema.json`, so tool schema files must be treated as browser/runtime dependencies unless a follow-up PR replaces that runtime contract. ++ ++## Classification Totals ++ ++| Classification | Count | ++| --- | ---: | ++| Active browser/runtime dependency | 23 | ++| Active test/validation dependency | 64 | ++| Unknown / needs Owner decision | 2 | ++ ++## Recommendation Totals ++ ++| Recommendation | Count | ++| --- | ---: | ++| keep temporarily | 64 | ++| move to dev/ | 2 | ++| move to www/ | 23 | ++ ++## Owner Recommendation ++ ++- Do not bulk-move `src/shared/contracts/**` and `src/shared/schemas/**` to `api/`. ++- Move browser/runtime-consumed contracts and tool schemas to `www/src/shared/...` or split browser-safe public contracts before API-only migration. ++- Move API/server-only dependencies to `api/src/...` only after browser imports are separated. This audit found no direct `api/` references from the requested active surfaces. ++- Keep test/validation-only files temporarily until their validation ownership is moved to `dev/` or replaced. ++- Move README/reference docs to `dev/` or archive them after Owner review. ++- Archive reference-free manifest-era artifacts only in a dedicated follow-up PR after Owner approval. ++ ++## Protected Developer Workspace Confirmation ++ ++No files under `dev/workspace/generated/**`, `dev/workspace/generated/tool-images/**`, `dev/workspace/zips/**`, or `dev/workspace/tmp/**` were moved or modified by this audit. ++ ++## File-by-File Audit ++ ++| File | Classification | www refs | api refs | dev/tests refs | dev/scripts refs | package refs | DB/API superseded? | Recommendation | ++| --- | --- | ---: | ---: | ---: | ---: | ---: | --- | --- | ++| `src/shared/contracts/auditEventContract.js` | Active test/validation dependency | 0 | 0 | 2 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/backupSnapshotContract.js` | Active test/validation dependency | 0 | 0 | 2 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/collaborationRoleContract.js` | Active test/validation dependency | 0 | 0 | 2 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/creatorProfileContract.js` | Active test/validation dependency | 0 | 0 | 2 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/downloadGrantContract.js` | Active test/validation dependency | 0 | 0 | 2 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/entitlementContract.js` | Active test/validation dependency | 0 | 0 | 9 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/gameManifestContract.js` | Active test/validation dependency | 0 | 0 | 6 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/identityPermissionsContract.js` | Active test/validation dependency | 0 | 0 | 25 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/installReceiptContract.js` | Active test/validation dependency | 0 | 0 | 5 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/libraryItemContract.js` | Active test/validation dependency | 0 | 0 | 6 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/marketplaceListingContract.js` | Active test/validation dependency | 0 | 0 | 10 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/marketplaceTransactionBoundaryContract.js` | Active test/validation dependency | 0 | 0 | 2 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/migrationPlanContract.js` | Active test/validation dependency | 0 | 0 | 2 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/moderationQueueContract.js` | Active test/validation dependency | 0 | 0 | 2 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/notificationContract.js` | Active test/validation dependency | 0 | 0 | 2 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/organizationContract.js` | Active test/validation dependency | 0 | 0 | 2 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/projectContract.js` | Active test/validation dependency | 0 | 0 | 16 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/projectDataStoreContract.js` | Active test/validation dependency | 0 | 0 | 2 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/projectWorkspaceRuntimeContract.js` | Active test/validation dependency | 0 | 0 | 9 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/publishContract.js` | Active test/validation dependency | 0 | 0 | 11 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/releaseContract.js` | Active test/validation dependency | 0 | 0 | 12 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/replayContracts.js` | Active browser/runtime dependency | 2 | 0 | 0 | 0 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | ++| `src/shared/contracts/restoreSnapshotContract.js` | Active test/validation dependency | 0 | 0 | 2 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/reviewRatingContract.js` | Active test/validation dependency | 0 | 0 | 2 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/sharedStateContracts.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/toolStateContract.js` | Active test/validation dependency | 0 | 0 | 9 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/aiAssistantContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/animationStudioContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/assetManagerContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/assetPipelineContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/assetStudioContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/audioSfxPlaygroundContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/codeStudioContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/collisionInspectorContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/gameDesignStudioContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/inputMappingContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/inputStudioContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/localizationStudioContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/midiStudioContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/objectVectorStudioContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/paletteManagerContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/parallaxEditorContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/particleStudioContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/performanceProfilerContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/physicsSandboxContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/previewGeneratorContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/publishStudioContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/replayVisualizerContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/soundStudioContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/spriteEditorContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/stateInspectorContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/storageInspectorContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/textToSpeechContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/threeDAssetViewerContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/threeDCameraPathEditorContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/threeDJsonPayloadContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/tileMapEditorContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/toolContract.js` | Active test/validation dependency | 0 | 0 | 9 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/toolContractsIndex.js` | Active test/validation dependency | 0 | 0 | 7 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/workspaceManagerContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/tools/worldVectorStudioContract.js` | Active test/validation dependency | 0 | 0 | 1 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/updateChannelContract.js` | Active test/validation dependency | 0 | 0 | 4 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/contracts/versionCompatibilityContract.js` | Active test/validation dependency | 0 | 0 | 3 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/schemas/README.md` | Unknown / needs Owner decision | 0 | 0 | 0 | 0 | 0 | Unknown; Owner decision required. | move to dev/ | ++| `src/shared/schemas/game.manifest.schema.json` | Active test/validation dependency | 0 | 0 | 1 | 2 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/schemas/samples/sample.tool-payload.schema.json` | Active test/validation dependency | 0 | 0 | 4 | 0 | 0 | Not yet. It remains a validation contract until replacement tests/docs are updated. | keep temporarily | ++| `src/shared/schemas/tools/3d-asset-viewer.schema.json` | Active browser/runtime dependency | 1 | 0 | 0 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | ++| `src/shared/schemas/tools/3d-camera-path-editor.schema.json` | Active browser/runtime dependency | 1 | 0 | 0 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | ++| `src/shared/schemas/tools/3d-json-payload.schema.json` | Active browser/runtime dependency | 1 | 0 | 0 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | ++| `src/shared/schemas/tools/README.md` | Unknown / needs Owner decision | 0 | 0 | 0 | 0 | 0 | Unknown; Owner decision required. | move to dev/ | ++| `src/shared/schemas/tools/asset-manager-v2.schema.json` | Active browser/runtime dependency | 1 | 0 | 1 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | ++| `src/shared/schemas/tools/asset-pipeline.schema.json` | Active browser/runtime dependency | 1 | 0 | 0 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | ++| `src/shared/schemas/tools/audio-sfx-playground-v2.schema.json` | Active browser/runtime dependency | 1 | 0 | 0 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | ++| `src/shared/schemas/tools/collision-inspector-v2.schema.json` | Active browser/runtime dependency | 1 | 0 | 0 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | ++| `src/shared/schemas/tools/input-mapping-v2.schema.json` | Active browser/runtime dependency | 1 | 0 | 0 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | ++| `src/shared/schemas/tools/midi-studio-v2.schema.json` | Active browser/runtime dependency | 1 | 0 | 0 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | ++| `src/shared/schemas/tools/object-vector-studio-v2.schema.json` | Active browser/runtime dependency | 2 | 0 | 1 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | ++| `src/shared/schemas/tools/palette-browser.schema.json` | Active browser/runtime dependency | 1 | 0 | 1 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | ++| `src/shared/schemas/tools/palette-manager-v2.schema.json` | Active browser/runtime dependency | 1 | 0 | 1 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | ++| `src/shared/schemas/tools/parallax-editor.schema.json` | Active browser/runtime dependency | 1 | 0 | 0 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | ++| `src/shared/schemas/tools/performance-profiler.schema.json` | Active browser/runtime dependency | 1 | 0 | 0 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | ++| `src/shared/schemas/tools/physics-sandbox.schema.json` | Active browser/runtime dependency | 1 | 0 | 0 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | ++| `src/shared/schemas/tools/replay-visualizer.schema.json` | Active browser/runtime dependency | 1 | 0 | 0 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | ++| `src/shared/schemas/tools/sprite-editor.schema.json` | Active browser/runtime dependency | 1 | 0 | 1 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | ++| `src/shared/schemas/tools/state-inspector.schema.json` | Active browser/runtime dependency | 1 | 0 | 0 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | ++| `src/shared/schemas/tools/svg-asset-studio.schema.json` | Active browser/runtime dependency | 1 | 0 | 1 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | ++| `src/shared/schemas/tools/text2speech-V2.schema.json` | Active browser/runtime dependency | 2 | 0 | 0 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | ++| `src/shared/schemas/tools/tile-map-editor.schema.json` | Active browser/runtime dependency | 1 | 0 | 0 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | ++| `src/shared/schemas/tools/vector-map-editor.schema.json` | Active browser/runtime dependency | 1 | 0 | 0 | 1 | 0 | No. Browser/runtime still references it; DB/API migration cannot silently replace it. | move to www/ | ++ ++## Reference Detail ++ ++### src/shared/contracts/auditEventContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/AuditEventContract.test.mjs:28
dev/tests/shared/ContractChainValidation.test.mjs:11 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/backupSnapshotContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/BackupSnapshotContract.test.mjs:32
dev/tests/shared/ContractChainValidation.test.mjs:14 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/collaborationRoleContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/CollaborationRoleContract.test.mjs:29
dev/tests/shared/ContractChainValidation.test.mjs:17 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/creatorProfileContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:20
dev/tests/shared/CreatorProfileContract.test.mjs:27 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/downloadGrantContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:23
dev/tests/shared/DownloadGrantContract.test.mjs:42 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/entitlementContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:26
dev/tests/shared/DownloadGrantContract.test.mjs:18
dev/tests/shared/EntitlementContract.test.mjs:39
dev/tests/shared/InstallReceiptContract.test.mjs:18
dev/tests/shared/LibraryItemContract.test.mjs:18
dev/tests/shared/MarketplaceTransactionBoundaryContract.test.mjs:12
dev/tests/shared/MigrationPlanContract.test.mjs:18
dev/tests/shared/UpdateChannelContract.test.mjs:18
dev/tests/shared/VersionCompatibilityContract.test.mjs:18 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/gameManifestContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/GameManifestContract.test.mjs:41
dev/tests/shared/ProjectWorkspaceManifestHandoffBoundaryValidation.test.mjs:12
dev/tests/shared/ReleaseContract.test.mjs:18
dev/tests/shared/Wave1ToolContractBaselineValidation.test.mjs:12
dev/tests/shared/Wave2ToolContractBaselineValidation.test.mjs:12
dev/tests/shared/Wave3ToolContractBaselineValidation.test.mjs:12 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/identityPermissionsContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/AuditEventContract.test.mjs:13
dev/tests/shared/BackupSnapshotContract.test.mjs:14
dev/tests/shared/CollaborationRoleContract.test.mjs:13
dev/tests/shared/CreatorProfileContract.test.mjs:13
dev/tests/shared/DownloadGrantContract.test.mjs:14
dev/tests/shared/EntitlementContract.test.mjs:14
dev/tests/shared/GameManifestContract.test.mjs:13
dev/tests/shared/IdentityPermissionsContract.test.mjs:30
dev/tests/shared/InstallReceiptContract.test.mjs:14
dev/tests/shared/LibraryItemContract.test.mjs:14
dev/tests/shared/MarketplaceListingContract.test.mjs:14
dev/tests/shared/MarketplaceTransactionBoundaryContract.test.mjs:16
dev/tests/shared/MigrationPlanContract.test.mjs:14
dev/tests/shared/ModerationQueueContract.test.mjs:13
dev/tests/shared/NotificationContract.test.mjs:13
dev/tests/shared/OrganizationContract.test.mjs:13
dev/tests/shared/ProjectContract.test.mjs:14
dev/tests/shared/PublishContract.test.mjs:13
dev/tests/shared/ReleaseContract.test.mjs:13
dev/tests/shared/RestoreSnapshotContract.test.mjs:14
dev/tests/shared/ReviewRatingContract.test.mjs:13
dev/tests/shared/ToolStateContract.test.mjs:13
dev/tests/shared/UpdateChannelContract.test.mjs:14
dev/tests/shared/VersionCompatibilityContract.test.mjs:14
dev/tests/shared/tools/ToolContractCoverage.test.mjs:13 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/installReceiptContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:29
dev/tests/shared/InstallReceiptContract.test.mjs:42
dev/tests/shared/MigrationPlanContract.test.mjs:22
dev/tests/shared/UpdateChannelContract.test.mjs:22
dev/tests/shared/VersionCompatibilityContract.test.mjs:22 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/libraryItemContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:32
dev/tests/shared/InstallReceiptContract.test.mjs:46
dev/tests/shared/LibraryItemContract.test.mjs:41
dev/tests/shared/MigrationPlanContract.test.mjs:26
dev/tests/shared/UpdateChannelContract.test.mjs:26
dev/tests/shared/VersionCompatibilityContract.test.mjs:26 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/marketplaceListingContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:35
dev/tests/shared/DownloadGrantContract.test.mjs:46
dev/tests/shared/EntitlementContract.test.mjs:43
dev/tests/shared/InstallReceiptContract.test.mjs:50
dev/tests/shared/LibraryItemContract.test.mjs:45
dev/tests/shared/MarketplaceListingContract.test.mjs:42
dev/tests/shared/MarketplaceTransactionBoundaryContract.test.mjs:19
dev/tests/shared/MigrationPlanContract.test.mjs:30
dev/tests/shared/UpdateChannelContract.test.mjs:30
dev/tests/shared/VersionCompatibilityContract.test.mjs:30 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/marketplaceTransactionBoundaryContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:38
dev/tests/shared/MarketplaceTransactionBoundaryContract.test.mjs:37 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/migrationPlanContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:41
dev/tests/shared/MigrationPlanContract.test.mjs:76 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/moderationQueueContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:44
dev/tests/shared/ModerationQueueContract.test.mjs:27 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/notificationContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:47
dev/tests/shared/NotificationContract.test.mjs:29 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/organizationContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:50
dev/tests/shared/OrganizationContract.test.mjs:27 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/projectContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:53
dev/tests/shared/DownloadGrantContract.test.mjs:55
dev/tests/shared/EntitlementContract.test.mjs:19
dev/tests/shared/GameManifestContract.test.mjs:47
dev/tests/shared/InstallReceiptContract.test.mjs:59
dev/tests/shared/LibraryItemContract.test.mjs:54
dev/tests/shared/MarketplaceListingContract.test.mjs:20
dev/tests/shared/MigrationPlanContract.test.mjs:39
dev/tests/shared/ProjectContract.test.mjs:44
dev/tests/shared/ProjectWorkspaceRuntimeContract.test.mjs:12
dev/tests/shared/PublishContract.test.mjs:19
dev/tests/shared/ReleaseContract.test.mjs:24
dev/tests/shared/ToolStateContract.test.mjs:19
dev/tests/shared/UpdateChannelContract.test.mjs:39
dev/tests/shared/VersionCompatibilityContract.test.mjs:39
dev/tests/shared/tools/ToolContractCoverage.test.mjs:18 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/projectDataStoreContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/InMemoryProjectDataStore.test.mjs:14
dev/tests/shared/ProjectDataStoreContract.test.mjs:34 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/projectWorkspaceRuntimeContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/ProjectWorkspaceLaunchBoundaryValidation.test.mjs:12
dev/tests/shared/ProjectWorkspaceLifecycleValidation.test.mjs:13
dev/tests/shared/ProjectWorkspaceManifestHandoffBoundaryValidation.test.mjs:15
dev/tests/shared/ProjectWorkspaceRuntimeContract.test.mjs:40
dev/tests/shared/ProjectWorkspaceStateBoundaryValidation.test.mjs:17
dev/tests/shared/ProjectWorkspaceToolComplianceValidation.test.mjs:12
dev/tests/shared/Wave1ToolContractBaselineValidation.test.mjs:15
dev/tests/shared/Wave2ToolContractBaselineValidation.test.mjs:15
dev/tests/shared/Wave3ToolContractBaselineValidation.test.mjs:15 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/publishContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:56
dev/tests/shared/DownloadGrantContract.test.mjs:50
dev/tests/shared/EntitlementContract.test.mjs:47
dev/tests/shared/InstallReceiptContract.test.mjs:54
dev/tests/shared/LibraryItemContract.test.mjs:49
dev/tests/shared/MarketplaceListingContract.test.mjs:46
dev/tests/shared/MarketplaceTransactionBoundaryContract.test.mjs:40
dev/tests/shared/MigrationPlanContract.test.mjs:34
dev/tests/shared/PublishContract.test.mjs:38
dev/tests/shared/UpdateChannelContract.test.mjs:34
dev/tests/shared/VersionCompatibilityContract.test.mjs:34 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/releaseContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:59
dev/tests/shared/DownloadGrantContract.test.mjs:59
dev/tests/shared/EntitlementContract.test.mjs:51
dev/tests/shared/InstallReceiptContract.test.mjs:63
dev/tests/shared/LibraryItemContract.test.mjs:58
dev/tests/shared/MarketplaceListingContract.test.mjs:50
dev/tests/shared/MarketplaceTransactionBoundaryContract.test.mjs:43
dev/tests/shared/MigrationPlanContract.test.mjs:43
dev/tests/shared/PublishContract.test.mjs:42
dev/tests/shared/ReleaseContract.test.mjs:46
dev/tests/shared/UpdateChannelContract.test.mjs:43
dev/tests/shared/VersionCompatibilityContract.test.mjs:43 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/replayContracts.js ++ ++- Classification: Active browser/runtime dependency ++- Recommendation: move to www/ ++- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. ++- www refs: www/src/engine/replay/ReplayModel.js:9
www/src/engine/replay/ReplayTimeline.js:10 ++- api refs: None ++- dev/tests refs: None ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/restoreSnapshotContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:62
dev/tests/shared/RestoreSnapshotContract.test.mjs:31 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/reviewRatingContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:65
dev/tests/shared/ReviewRatingContract.test.mjs:28 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/sharedStateContracts.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/SharedFoundationCombinedPass.test.mjs:45 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/toolStateContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/GameManifestContract.test.mjs:51
dev/tests/shared/ProjectWorkspaceRuntimeContract.test.mjs:18
dev/tests/shared/ProjectWorkspaceStateBoundaryValidation.test.mjs:20
dev/tests/shared/ProjectWorkspaceToolComplianceValidation.test.mjs:15
dev/tests/shared/ToolStateContract.test.mjs:54
dev/tests/shared/Wave1ToolStateBoundaryValidation.test.mjs:12
dev/tests/shared/Wave2ToolStateBoundaryValidation.test.mjs:12
dev/tests/shared/Wave3ToolStateBoundaryValidation.test.mjs:12
dev/tests/shared/tools/ToolContractCoverage.test.mjs:23 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/aiAssistantContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/tools/AiAssistantToolContract.test.mjs:9 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/animationStudioContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/tools/AnimationStudioToolContract.test.mjs:9 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/assetManagerContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/tools/AssetManagerV2ToolContract.test.mjs:9 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/assetPipelineContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/tools/AssetPipelineToolContract.test.mjs:9 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/assetStudioContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/tools/AssetStudioToolContract.test.mjs:9 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/audioSfxPlaygroundContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/tools/AudioSfxPlaygroundV2ToolContract.test.mjs:9 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/codeStudioContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/tools/CodeStudioToolContract.test.mjs:9 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/collisionInspectorContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/tools/CollisionInspectorV2ToolContract.test.mjs:9 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/gameDesignStudioContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/tools/GameDesignStudioToolContract.test.mjs:9 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/inputMappingContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/tools/InputMappingV2ToolContract.test.mjs:9 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/inputStudioContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/tools/InputStudioToolContract.test.mjs:9 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/localizationStudioContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/tools/LocalizationStudioToolContract.test.mjs:9 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/midiStudioContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/tools/MidiStudioV2ToolContract.test.mjs:9 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/objectVectorStudioContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/tools/ObjectVectorStudioV2ToolContract.test.mjs:9 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/paletteManagerContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/tools/PaletteManagerV2ToolContract.test.mjs:9 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/parallaxEditorContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/tools/ParallaxEditorToolContract.test.mjs:9 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/particleStudioContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/tools/ParticleStudioToolContract.test.mjs:9 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/performanceProfilerContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/tools/PerformanceProfilerToolContract.test.mjs:9 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/physicsSandboxContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/tools/PhysicsSandboxToolContract.test.mjs:9 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/previewGeneratorContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/tools/PreviewGeneratorV2ToolContract.test.mjs:9 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/publishStudioContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/tools/PublishStudioToolContract.test.mjs:9 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/replayVisualizerContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/tools/ReplayVisualizerToolContract.test.mjs:9 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/soundStudioContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/tools/SoundStudioToolContract.test.mjs:9 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/spriteEditorContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/tools/SpriteEditorToolContract.test.mjs:9 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/stateInspectorContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/tools/StateInspectorToolContract.test.mjs:9 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/storageInspectorContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/tools/StorageInspectorV2ToolContract.test.mjs:9 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/textToSpeechContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/tools/Text2SpeechV2ToolContract.test.mjs:9 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/threeDAssetViewerContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/tools/ThreeDAssetViewerToolContract.test.mjs:9 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/threeDCameraPathEditorContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/tools/ThreeDCameraPathEditorToolContract.test.mjs:9 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/threeDJsonPayloadContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/tools/ThreeDJsonPayloadToolContract.test.mjs:9 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/tileMapEditorContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/tools/TileMapEditorToolContract.test.mjs:9 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/toolContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/ProjectWorkspaceToolComplianceValidation.test.mjs:22
dev/tests/shared/Wave1ToolContractBaselineValidation.test.mjs:25
dev/tests/shared/Wave1ToolStateBoundaryValidation.test.mjs:15
dev/tests/shared/Wave2ToolContractBaselineValidation.test.mjs:25
dev/tests/shared/Wave2ToolStateBoundaryValidation.test.mjs:15
dev/tests/shared/Wave3ToolContractBaselineValidation.test.mjs:25
dev/tests/shared/Wave3ToolStateBoundaryValidation.test.mjs:15
dev/tests/shared/tools/ToolContractCoverage.test.mjs:55
dev/tests/shared/tools/ToolOutputDeclarationContract.test.mjs:17 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/toolContractsIndex.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/ProjectWorkspaceToolComplianceValidation.test.mjs:18
dev/tests/shared/ProjectWorkspaceToolRegistrationValidation.test.mjs:10
dev/tests/shared/Wave1ToolContractBaselineValidation.test.mjs:18
dev/tests/shared/Wave2ToolContractBaselineValidation.test.mjs:18
dev/tests/shared/Wave3ToolContractBaselineValidation.test.mjs:18
dev/tests/shared/tools/ToolContractCoverage.test.mjs:60
dev/tests/shared/tools/ToolOutputDeclarationContract.test.mjs:21 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/workspaceManagerContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/tools/WorkspaceManagerV2ToolContract.test.mjs:9 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/tools/worldVectorStudioContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/tools/WorldVectorStudioV2ToolContract.test.mjs:9 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/updateChannelContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:68
dev/tests/shared/MigrationPlanContract.test.mjs:47
dev/tests/shared/UpdateChannelContract.test.mjs:64
dev/tests/shared/VersionCompatibilityContract.test.mjs:47 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/contracts/versionCompatibilityContract.js ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/shared/ContractChainValidation.test.mjs:71
dev/tests/shared/MigrationPlanContract.test.mjs:51
dev/tests/shared/VersionCompatibilityContract.test.mjs:73 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/schemas/README.md ++ ++- Classification: Unknown / needs Owner decision ++- Recommendation: move to dev/ ++- DB/API migration supersedes: Unknown; Owner decision required. ++- www refs: None ++- api refs: None ++- dev/tests refs: None ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/schemas/game.manifest.schema.json ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/fixtures/workspace-v2/uat.manifest.json:2 ++- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:650
dev/scripts/validate-json-contracts.mjs:662 ++- package refs: None ++ ++### src/shared/schemas/samples/sample.tool-payload.schema.json ++ ++- Classification: Active test/validation dependency ++- Recommendation: keep temporarily ++- DB/API migration supersedes: Not yet. It remains a validation contract until replacement tests/docs are updated. ++- www refs: None ++- api refs: None ++- dev/tests refs: dev/tests/tools/ToolManifestBoundary.test.mjs:12
dev/tests/validation/samples.curriculum.validation.json:2
dev/tests/validation/samples.runtime.validation.report.json:2
dev/tests/validation/samples.shared.boundaries.report.json:2 ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/schemas/tools/3d-asset-viewer.schema.json ++ ++- Classification: Active browser/runtime dependency ++- Recommendation: move to www/ ++- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. ++- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) ++- api refs: None ++- dev/tests refs: None ++- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) ++- package refs: None ++ ++### src/shared/schemas/tools/3d-camera-path-editor.schema.json ++ ++- Classification: Active browser/runtime dependency ++- Recommendation: move to www/ ++- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. ++- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) ++- api refs: None ++- dev/tests refs: None ++- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) ++- package refs: None ++ ++### src/shared/schemas/tools/3d-json-payload.schema.json ++ ++- Classification: Active browser/runtime dependency ++- Recommendation: move to www/ ++- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. ++- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) ++- api refs: None ++- dev/tests refs: None ++- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) ++- package refs: None ++ ++### src/shared/schemas/tools/README.md ++ ++- Classification: Unknown / needs Owner decision ++- Recommendation: move to dev/ ++- DB/API migration supersedes: Unknown; Owner decision required. ++- www refs: None ++- api refs: None ++- dev/tests refs: None ++- dev/scripts refs: None ++- package refs: None ++ ++### src/shared/schemas/tools/asset-manager-v2.schema.json ++ ++- Classification: Active browser/runtime dependency ++- Recommendation: move to www/ ++- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. ++- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) ++- api refs: None ++- dev/tests refs: dev/tests/fixtures/workspace-v2/uat.manifest.json:59 ++- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) ++- package refs: None ++ ++### src/shared/schemas/tools/asset-pipeline.schema.json ++ ++- Classification: Active browser/runtime dependency ++- Recommendation: move to www/ ++- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. ++- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) ++- api refs: None ++- dev/tests refs: None ++- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) ++- package refs: None ++ ++### src/shared/schemas/tools/audio-sfx-playground-v2.schema.json ++ ++- Classification: Active browser/runtime dependency ++- Recommendation: move to www/ ++- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. ++- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) ++- api refs: None ++- dev/tests refs: None ++- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) ++- package refs: None ++ ++### src/shared/schemas/tools/collision-inspector-v2.schema.json ++ ++- Classification: Active browser/runtime dependency ++- Recommendation: move to www/ ++- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. ++- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) ++- api refs: None ++- dev/tests refs: None ++- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) ++- package refs: None ++ ++### src/shared/schemas/tools/input-mapping-v2.schema.json ++ ++- Classification: Active browser/runtime dependency ++- Recommendation: move to www/ ++- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. ++- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) ++- api refs: None ++- dev/tests refs: None ++- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) ++- package refs: None ++ ++### src/shared/schemas/tools/midi-studio-v2.schema.json ++ ++- Classification: Active browser/runtime dependency ++- Recommendation: move to www/ ++- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. ++- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) ++- api refs: None ++- dev/tests refs: None ++- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) ++- package refs: None ++ ++### src/shared/schemas/tools/object-vector-studio-v2.schema.json ++ ++- Classification: Active browser/runtime dependency ++- Recommendation: move to www/ ++- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. ++- www refs: www/src/engine/rendering/ObjectVectorRuntimeAssetService.js:14
www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) ++- api refs: None ++- dev/tests refs: dev/tests/tools/ObjectVectorStudioV2DeleteCleanup.test.mjs:60 ++- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) ++- package refs: None ++ ++### src/shared/schemas/tools/palette-browser.schema.json ++ ++- Classification: Active browser/runtime dependency ++- Recommendation: move to www/ ++- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. ++- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) ++- api refs: None ++- dev/tests refs: dev/tests/tools/ToolManifestBoundary.test.mjs:11 ++- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) ++- package refs: None ++ ++### src/shared/schemas/tools/palette-manager-v2.schema.json ++ ++- Classification: Active browser/runtime dependency ++- Recommendation: move to www/ ++- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. ++- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) ++- api refs: None ++- dev/tests refs: dev/tests/fixtures/workspace-v2/uat.manifest.json:17 ++- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) ++- package refs: None ++ ++### src/shared/schemas/tools/parallax-editor.schema.json ++ ++- Classification: Active browser/runtime dependency ++- Recommendation: move to www/ ++- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. ++- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) ++- api refs: None ++- dev/tests refs: None ++- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) ++- package refs: None ++ ++### src/shared/schemas/tools/performance-profiler.schema.json ++ ++- Classification: Active browser/runtime dependency ++- Recommendation: move to www/ ++- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. ++- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) ++- api refs: None ++- dev/tests refs: None ++- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) ++- package refs: None ++ ++### src/shared/schemas/tools/physics-sandbox.schema.json ++ ++- Classification: Active browser/runtime dependency ++- Recommendation: move to www/ ++- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. ++- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) ++- api refs: None ++- dev/tests refs: None ++- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) ++- package refs: None ++ ++### src/shared/schemas/tools/replay-visualizer.schema.json ++ ++- Classification: Active browser/runtime dependency ++- Recommendation: move to www/ ++- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. ++- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) ++- api refs: None ++- dev/tests refs: None ++- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) ++- package refs: None ++ ++### src/shared/schemas/tools/sprite-editor.schema.json ++ ++- Classification: Active browser/runtime dependency ++- Recommendation: move to www/ ++- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. ++- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) ++- api refs: None ++- dev/tests refs: dev/tests/tools/ToolManifestBoundary.test.mjs:14 ++- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) ++- package refs: None ++ ++### src/shared/schemas/tools/state-inspector.schema.json ++ ++- Classification: Active browser/runtime dependency ++- Recommendation: move to www/ ++- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. ++- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) ++- api refs: None ++- dev/tests refs: None ++- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) ++- package refs: None + -+## Scope Confirmation ++### src/shared/schemas/tools/svg-asset-studio.schema.json + -+- Branch: `PR_26180_OWNER_018-move-src-browser-to-www` -+- Base workstream: `PR_26180_OWNER_017-src-dissection-and-demo-cleanup` -+- Current HEAD before commit: `f4be737bbfcccd0f04f5298963ac7573362df7ca` -+- Browser/www-owned files moved: 501 -+- Modified reference/test/governance files: 231 -+- Runtime behavior changes: None intended; public route/import URLs are preserved. -+- API/server-owned files moved: None. -+- Dev-owned files moved: None. ++- Classification: Active browser/runtime dependency ++- Recommendation: move to www/ ++- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. ++- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) ++- api refs: None ++- dev/tests refs: dev/tests/tools/ToolManifestBoundary.test.mjs:13 ++- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) ++- package refs: None + -+## Implementation Notes ++### src/shared/schemas/tools/text2speech-V2.schema.json + -+- Moved browser-owned `src/advanced`, `src/api` browser clients, `src/dev-runtime/admin` browser viewer files, `src/engine`, browser/shared helpers, toolbox browser modules, and browser tool helpers into `www/src/` according to the PR017 destination audit. -+- Updated active API/dev/test imports that load these browser-owned modules to point at `www/src/` filesystem paths. -+- Preserved public browser URLs such as `/src/engine/core/Engine.js`, `/src/api/admin-owner-navigation.js`, and `/src/dev-runtime/admin/notes.html` through the existing static web root compatibility layer. -+- Updated Project Instructions, repository structure docs, migration map, Project State, and Backlog to record the PR018 migration state. -+- Updated targeted tests to reflect the current encoded Admin Notes source path and current toolbox registry release-channel counts. ++- Classification: Active browser/runtime dependency ++- Recommendation: move to www/ ++- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. ++- www refs: www/src/engine/audio/TextToSpeechDefaults.js:2
www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) ++- api refs: None ++- dev/tests refs: None ++- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) ++- package refs: None + -+## Files/Folders Moved ++### src/shared/schemas/tools/tile-map-editor.schema.json + -+- `src/advanced/**` -> `www/src/advanced/**` -+- `src/api/**` browser API clients -> `www/src/api/**` -+- `src/dev-runtime/admin/**` browser viewer files -> `www/src/dev-runtime/admin/**` -+- `src/engine/**` browser/runtime engine modules -> `www/src/engine/**` -+- Browser-owned `src/shared/**` helper/toolbox modules -> `www/src/shared/**` -+- `src/tools/**` browser tool helpers -> `www/src/tools/**` ++- Classification: Active browser/runtime dependency ++- Recommendation: move to www/ ++- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. ++- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) ++- api refs: None ++- dev/tests refs: None ++- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) ++- package refs: None + -+## Remaining Source Buckets ++### src/shared/schemas/tools/vector-map-editor.schema.json + -+- `src/shared/contracts/**`, `src/shared/schemas/**`, and `src/shared/projectDataStore/**` remain for PR019 API/server migration. -+- `src/dev-runtime/admin/.gitkeep` and any remaining dev/reference ownership remain for later scoped PRs. -+- `src/` is not retired in this PR. -diff --git a/dev/reports/PR_26180_OWNER_018-move-src-browser-to-www_requirement-checklist.md b/dev/reports/PR_26180_OWNER_018-move-src-browser-to-www_requirement-checklist.md ++- Classification: Active browser/runtime dependency ++- Recommendation: move to www/ ++- DB/API migration supersedes: No. Browser/runtime still references it; DB/API migration cannot silently replace it. ++- www refs: www/src/shared/toolbox/schemaOnlyToolPresetValidation.js:264 (dynamic) ++- api refs: None ++- dev/tests refs: None ++- dev/scripts refs: dev/scripts/validate-json-contracts.mjs:496 (dynamic) ++- package refs: None +diff --git a/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_requirement-checklist.md b/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_requirement-checklist.md new file mode 100644 -index 000000000..2d6888956 +index 000000000..72e1b49cf --- /dev/null -+++ b/dev/reports/PR_26180_OWNER_018-move-src-browser-to-www_requirement-checklist.md -@@ -0,0 +1,16 @@ -+# PR_26180_OWNER_018-move-src-browser-to-www Requirement Checklist ++++ b/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_requirement-checklist.md +@@ -0,0 +1,21 @@ ++# PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit Requirement Checklist + +| Requirement | Status | Evidence | +| --- | --- | --- | -+| Use PR017 src destination audit as source of truth | PASS | Moved only audit-classified browser/www-owned source buckets. | -+| Move browser/www-owned src files into www/src | PASS | 501 staged renames into `www/src/`. | -+| Preserve public browser import URLs such as /src/... | PASS | Static route check resolves public `/src/...` URLs into `www/src/...`. | -+| Update references only where required | PASS | Active API/dev/test filesystem imports updated for moved browser modules. | -+| Do not move API/server-owned files | PASS | API/server-owned root `src/shared/contracts`, schemas, and project data store remain for PR019. | -+| Do not move dev-owned files | PASS | Dev-owned source remains for later PR020 scope. | -+| Do not change product behavior | PASS | Migration preserves public URLs and route behavior. | -+| Stop on ambiguous ownership | PASS | No ambiguous files were moved; remaining source buckets are documented for later PRs. | -+| Stop if browser file depends directly on api runtime internals | PASS | No direct browser-to-`api/` import introduced. | -+| Stop if preserving public URLs requires API/server behavior changes | PASS | Existing static web-root compatibility resolved routes without API behavior changes. | -+| Required reports under dev/reports | PASS | Report bundle generated. | -+| Required ZIP under dev/workspace/zips | PASS | `dev/workspace/zips/PR_26180_OWNER_018-move-src-browser-to-www_delta.zip` generated for this outcome. | -diff --git a/dev/reports/PR_26180_OWNER_018-move-src-browser-to-www_validation-report.md b/dev/reports/PR_26180_OWNER_018-move-src-browser-to-www_validation-report.md ++| Base is PR018 | PASS | Branch created from `PR_26180_OWNER_018-move-src-browser-to-www`. | ++| List every file under src/shared/contracts and src/shared/schemas | PASS | Detailed report and CSV list 89 tracked files. | ++| Identify references from www | PASS | Exact and dynamic browser schema references captured. | ++| Identify references from api | PASS | No direct active `api/` references found from requested surfaces. | ++| Identify references from dev/tests | PASS | Test references captured per file. | ++| Identify references from dev/scripts | PASS | Script references captured per file, including dynamic schema validation path. | ++| Identify package script references | PASS | `package.json` scanned; no package refs found. | ++| Classify every file | PASS | Classification totals: Active test/validation dependency: 64; Active browser/runtime dependency: 23; Unknown / needs Owner decision: 2. | ++| Determine DB/API supersession | PASS | Per-file supersession recommendation documented. | ++| Recommend exact action per file | PASS | Per-file action documented as move to www, move to dev, or keep temporarily. | ++| Do not delete active runtime/test references | PASS | No files deleted. | ++| Do not move browser-consumed files into api | PASS | No files moved; report recommends browser-consumed files move to `www/`. | ++| Do not leave authoritative product data in browser-owned files | PASS | Audit recommends preserving boundary and does not add product data. | ++| Preserve protected dev workspace | PASS | No protected workspace files moved. | ++| git diff --check | PASS | Passed. | ++| npm run validate:canonical-structure | PASS | Passed with 0 blocking violations. | ++| Required reports and ZIP | PASS | Reports generated under `dev/reports/`; ZIP generated under `dev/workspace/zips/`. | +diff --git a/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_validation-report.md b/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_validation-report.md new file mode 100644 -index 000000000..0488dbf3d +index 000000000..378c357df --- /dev/null -+++ b/dev/reports/PR_26180_OWNER_018-move-src-browser-to-www_validation-report.md -@@ -0,0 +1,14 @@ -+# PR_26180_OWNER_018-move-src-browser-to-www Validation Report ++++ b/dev/reports/PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit_validation-report.md +@@ -0,0 +1,11 @@ ++# PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit Validation Report + +| Validation | Result | Notes | +| --- | --- | --- | -+| Startup Validation | PASS | Loaded Project Instructions v2026.06.28.018 from repository; cached memory discarded. | ++| Startup validation | PASS | Loaded Project Instructions v2026.06.28.018 from repository; cached memory discarded. | ++| Branch/base validation | PASS | `PR_26180_OWNER_019a-contracts-schemas-obsolescence-audit` from `PR_26180_OWNER_018-move-src-browser-to-www`. | ++| Audit generation | PASS | 89 tracked contracts/schema files audited. | ++| Protected workspace check | PASS | No protected `dev/workspace/generated/**`, `dev/workspace/zips/**`, or `dev/workspace/tmp/**` movement. | +| git diff --check | PASS | No whitespace errors. | +| npm run validate:canonical-structure | PASS | Blocking violations: 0; approved legacy exceptions: 499. | -+| node ./dev/scripts/run-platform-validation-suite.mjs | PASS | 8/8 deterministic platform scenarios passed. | -+| Static route resolution smoke | PASS | /index.html, /toolbox/index.html, /admin/site-setup.html, /admin/admin-notes.html, and representative /src/... URLs resolve. | -+| Targeted active import scan | PASS | No active relative imports point to moved root src browser files; intentional guard self-test fixture allowlisted. | -+| Targeted Node tests | PASS | 11/11 targeted files passed; 37 assertions passed. | -+| npm run test:playwright:static | PASS | Static preflight report status PASS. | -+| Targeted Playwright route smoke | PASS | 18/18 tests passed for Admin Notes, Static Web Root Compatibility, and Toolbox route pages. | -+| Runtime/API/UI/database implementation changes | PASS | No API/server files moved; changes are migration references/tests/docs for browser-owned source relocation. | -diff --git a/dev/reports/asset_ownership_strategy_validation.txt b/dev/reports/asset_ownership_strategy_validation.txt -index 8d72dcf59..5612cc026 100644 ---- a/dev/reports/asset_ownership_strategy_validation.txt -+++ b/dev/reports/asset_ownership_strategy_validation.txt -@@ -9,7 +9,7 @@ Checks: - - Validated template ownership manifest: dev/archive/v1-v2/games/_template/assets/tools.manifest.json - - Archived sample has no inline asset path entries: dev/archive/v1-v2/samples/phase-15/1505/AssetBrowserScene.js - - Validated sample ownership path: dev/archive/v1-v2/samples/phase-15/1505/AssetBrowserScene.js --- Validated tool demo ownership path: src/shared/toolbox/samples/project-asset-registry-demo/project.assets.json -+- Validated tool demo ownership path: www/src/shared/toolbox/samples/project-asset-registry-demo/project.assets.json - - Issues: - - none -diff --git a/dev/scripts/run-platform-validation-suite.mjs b/dev/scripts/run-platform-validation-suite.mjs -index 020c862f2..441012b5c 100644 ---- a/dev/scripts/run-platform-validation-suite.mjs -+++ b/dev/scripts/run-platform-validation-suite.mjs -@@ -1,5 +1,5 @@ --import { runPlatformValidationSuite } from "../../src/shared/toolbox/platformValidationSuite.js"; --import { runCiValidationPipeline } from "../../src/shared/toolbox/ciValidationPipeline.js"; -+import { runPlatformValidationSuite } from "../../www/src/shared/toolbox/platformValidationSuite.js"; -+import { runCiValidationPipeline } from "../../www/src/shared/toolbox/ciValidationPipeline.js"; - - const suiteResult = await runPlatformValidationSuite(); - const ciResult = await runCiValidationPipeline({ -diff --git a/dev/scripts/validate-asset-ownership-strategy.mjs b/dev/scripts/validate-asset-ownership-strategy.mjs -index 69c371973..f59305399 100644 ---- a/dev/scripts/validate-asset-ownership-strategy.mjs -+++ b/dev/scripts/validate-asset-ownership-strategy.mjs -@@ -17,7 +17,7 @@ const REGISTRY_PATH_CANDIDATES = [ - const ASTEROIDS_MANIFEST_PATH = "dev/archive/v1-v2/games/Asteroids/game.manifest.json"; - const TEMPLATE_MANIFEST_PATH = "dev/archive/v1-v2/games/_template/assets/tools.manifest.json"; - const SAMPLE_ASSET_BROWSER_SCENE_PATH = "dev/archive/v1-v2/samples/phase-15/1505/AssetBrowserScene.js"; --const TOOL_DEMO_PROJECT_ASSETS_PATH = "src/shared/toolbox/samples/project-asset-registry-demo/project.assets.json"; -+const TOOL_DEMO_PROJECT_ASSETS_PATH = "www/src/shared/toolbox/samples/project-asset-registry-demo/project.assets.json"; - const REPORT_PATH = "dev/reports/asset_ownership_strategy_validation.txt"; - - function toRepoPath(value) { -@@ -66,7 +66,7 @@ function ownerPrefixForPath(repoPath) { - if (segments[0] === "tools" && segments.length >= 2) { - // keep demo ownership under the tool/demo root path depth - if (segments[1] === "shared" && segments.length >= 5 && segments[2] === "samples") { -- return `src/shared/toolbox/samples/${segments[3]}`; -+ return `www/src/shared/toolbox/samples/${segments[3]}`; - } - return `toolbox/${segments[1]}`; - } -@@ -199,7 +199,7 @@ export async function validateAssetOwnershipStrategy({ emitLogs = true } = {}) { - - const projectAssets = await readJson(TOOL_DEMO_PROJECT_ASSETS_PATH); - const toolDemoEntries = collectProjectAssetEntries(projectAssets); -- const toolDemoOwnerPrefix = "src/shared/toolbox/samples/project-asset-registry-demo"; -+ const toolDemoOwnerPrefix = "www/src/shared/toolbox/samples/project-asset-registry-demo"; - const seenPaths = new Set(); - for (const entry of toolDemoEntries) { - if (!entry.path) { -diff --git a/dev/scripts/validate-browser-env-agnostic.mjs b/dev/scripts/validate-browser-env-agnostic.mjs -index 239739aa7..cc5a28b7f 100644 ---- a/dev/scripts/validate-browser-env-agnostic.mjs -+++ b/dev/scripts/validate-browser-env-agnostic.mjs -@@ -317,10 +317,10 @@ async function validateProductServiceContract() { - requireSnippet(registryClient, "www/toolbox/tool-registry-api-client.js", "safeRequestServerApi(\"/toolbox/registry/snapshot\")", findings, "Toolbox registry must read through the server API service contract."); - rejectPattern(registryClient, "www/toolbox/tool-registry-api-client.js", providerLeakPattern, findings, "Toolbox registry client must not expose provider/environment implementation details."); - -- const votesClient = await readRequiredRepoFile("src/api/toolbox-votes-api-client.js", findings, "Toolbox votes API client is missing"); -- requireSnippet(votesClient, "src/api/toolbox-votes-api-client.js", "safeRequestServerApi(\"/toolbox/votes/snapshot\")", findings, "Toolbox votes must read through the server API service contract."); -- requireSnippet(votesClient, "src/api/toolbox-votes-api-client.js", "safeRequestServerApi(\"/toolbox/votes/cast\"", findings, "Toolbox votes must write through the server API service contract."); -- rejectPattern(votesClient, "src/api/toolbox-votes-api-client.js", providerLeakPattern, findings, "Toolbox votes client must not expose provider/environment implementation details."); -+ const votesClient = await readRequiredRepoFile("www/src/api/toolbox-votes-api-client.js", findings, "Toolbox votes API client is missing"); -+ requireSnippet(votesClient, "www/src/api/toolbox-votes-api-client.js", "safeRequestServerApi(\"/toolbox/votes/snapshot\")", findings, "Toolbox votes must read through the server API service contract."); -+ requireSnippet(votesClient, "www/src/api/toolbox-votes-api-client.js", "safeRequestServerApi(\"/toolbox/votes/cast\"", findings, "Toolbox votes must write through the server API service contract."); -+ rejectPattern(votesClient, "www/src/api/toolbox-votes-api-client.js", providerLeakPattern, findings, "Toolbox votes client must not expose provider/environment implementation details."); - - for (const filePath of productApiClientFiles) { - const contents = await readRequiredRepoFile(filePath, findings, "Product API client is missing"); -diff --git a/dev/scripts/validate-canonical-repository-structure.mjs b/dev/scripts/validate-canonical-repository-structure.mjs -index 405e2c5ea..da5a4805a 100644 ---- a/dev/scripts/validate-canonical-repository-structure.mjs -+++ b/dev/scripts/validate-canonical-repository-structure.mjs -@@ -14,13 +14,13 @@ export const APPROVED_LEGACY_JS_PATHS = Object.freeze(new Set([ - "www/toolbox/tool-registry-api-client.js", - "www/toolbox/toolRegistry.js", - "www/toolbox/tools-page-accordions.js", -- "src/engine/paletteList.js", -+ "www/src/engine/paletteList.js", - ])); - - export const APPROVED_LEGACY_CSS_PATHS = Object.freeze(new Set([ -- "src/engine/ui/baseLayout.css", -- "src/engine/ui/hubCommon.css", -- "src/engine/ui/spriteEditor.css", -+ "www/src/engine/ui/baseLayout.css", -+ "www/src/engine/ui/hubCommon.css", -+ "www/src/engine/ui/spriteEditor.css", - ])); - - export const APPROVED_LEGACY_TEST_SEGMENTS = Object.freeze(new Set([ -diff --git a/dev/scripts/validate-dev-runtime-boundary.mjs b/dev/scripts/validate-dev-runtime-boundary.mjs -index 51cefc332..4e9ab8b99 100644 ---- a/dev/scripts/validate-dev-runtime-boundary.mjs -+++ b/dev/scripts/validate-dev-runtime-boundary.mjs -@@ -13,8 +13,8 @@ const roots = [ - "www/marketplace", - "www/memberships", - "www/owner", -- "src/api", -- "src/engine", -+ "www/src/api", -+ "www/src/engine", - "www/toolbox", - ]; - const filePattern = /\.(html|js|mjs)$/; -diff --git a/dev/tests/ai/AIBehaviors.test.mjs b/dev/tests/ai/AIBehaviors.test.mjs -index 29bdb533d..b48c9ae4d 100644 ---- a/dev/tests/ai/AIBehaviors.test.mjs -+++ b/dev/tests/ai/AIBehaviors.test.mjs -@@ -5,11 +5,11 @@ David Quesenberry - AIBehaviors.test.mjs - */ - import assert from 'node:assert/strict'; --import AIStateController from '../../../src/engine/ai/AIStateController.js'; --import { advancePatrolRoute } from '../../../src/engine/ai/PatrolSystem.js'; --import { computeGroupSteering } from '../../../src/engine/ai/GroupBehaviors.js'; --import { findGridPath } from '../../../src/engine/ai/GridPathfinding.js'; --import { stepChaseBehavior, stepEvadeBehavior } from '../../../src/engine/ai/SteeringBehaviors.js'; -+import AIStateController from '../../../www/src/engine/ai/AIStateController.js'; -+import { advancePatrolRoute } from '../../../www/src/engine/ai/PatrolSystem.js'; -+import { computeGroupSteering } from '../../../www/src/engine/ai/GroupBehaviors.js'; -+import { findGridPath } from '../../../www/src/engine/ai/GridPathfinding.js'; -+import { stepChaseBehavior, stepEvadeBehavior } from '../../../www/src/engine/ai/SteeringBehaviors.js'; - - export function run() { - const grid = [ -diff --git a/dev/tests/assets/AssetLoaderSystem.test.mjs b/dev/tests/assets/AssetLoaderSystem.test.mjs -index fd90e920b..1d6254e62 100644 ---- a/dev/tests/assets/AssetLoaderSystem.test.mjs -+++ b/dev/tests/assets/AssetLoaderSystem.test.mjs -@@ -5,9 +5,9 @@ David Quesenberry - AssetLoaderSystem.test.mjs - */ - import assert from 'node:assert/strict'; --import AssetRegistry from '../../../src/engine/assets/AssetRegistry.js'; --import ImageAssetLoader from '../../../src/engine/assets/ImageAssetLoader.js'; --import AssetLoaderSystem from '../../../src/engine/assets/AssetLoaderSystem.js'; -+import AssetRegistry from '../../../www/src/engine/assets/AssetRegistry.js'; -+import ImageAssetLoader from '../../../www/src/engine/assets/ImageAssetLoader.js'; -+import AssetLoaderSystem from '../../../www/src/engine/assets/AssetLoaderSystem.js'; - - export async function run() { - const registry = new AssetRegistry(); -diff --git a/dev/tests/audio/AudioService.test.mjs b/dev/tests/audio/AudioService.test.mjs -index 9dc76ac42..bf6ef5e25 100644 ---- a/dev/tests/audio/AudioService.test.mjs -+++ b/dev/tests/audio/AudioService.test.mjs -@@ -5,7 +5,7 @@ David Quesenberry - AudioService.test.mjs - */ - import assert from 'node:assert/strict'; --import AudioService from '../../../src/engine/audio/AudioService.js'; -+import AudioService from '../../../www/src/engine/audio/AudioService.js'; - - function createTarget() { - const listeners = new Map(); -diff --git a/dev/tests/combat/Combat.test.mjs b/dev/tests/combat/Combat.test.mjs -index 8c7e949af..538422c8a 100644 ---- a/dev/tests/combat/Combat.test.mjs -+++ b/dev/tests/combat/Combat.test.mjs -@@ -14,7 +14,7 @@ import { - startAttack, - updateAttackState, - updateCombatant, --} from '../../../src/engine/combat/Combat.js'; -+} from '../../../www/src/engine/collision/combat/Combat.js'; - - export function run() { - const attacker = createCombatant({ x: 100, y: 100, width: 30, height: 30, facing: 1 }); -diff --git a/dev/tests/config/ConfigStore.test.mjs b/dev/tests/config/ConfigStore.test.mjs -index b79dd8d14..2d877f509 100644 ---- a/dev/tests/config/ConfigStore.test.mjs -+++ b/dev/tests/config/ConfigStore.test.mjs -@@ -5,7 +5,7 @@ David Quesenberry - ConfigStore.test.mjs - */ - import assert from 'node:assert/strict'; --import ConfigStore from '../../../src/engine/config/ConfigStore.js'; -+import ConfigStore from '../../../www/src/engine/config/ConfigStore.js'; - - export function run() { - const store = new ConfigStore(); -diff --git a/dev/tests/core/BackgroundImageAndFullscreenBezel.test.mjs b/dev/tests/core/BackgroundImageAndFullscreenBezel.test.mjs -index 0c3067813..46786d2ce 100644 ---- a/dev/tests/core/BackgroundImageAndFullscreenBezel.test.mjs -+++ b/dev/tests/core/BackgroundImageAndFullscreenBezel.test.mjs -@@ -2,8 +2,8 @@ import assert from "node:assert/strict"; - import os from "node:os"; - import path from "node:path"; - import { mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; --import Engine from "../../../src/engine/core/Engine.js"; --import backgroundImage from "../../../src/engine/runtime/backgroundImage.js"; -+import Engine from "../../../www/src/engine/core/Engine.js"; -+import backgroundImage from "../../../www/src/engine/runtime/backgroundImage.js"; - import fullscreenBezel, { - chooseBestOpeningFit, - ensureBezelStretchConfigFile, -@@ -11,13 +11,13 @@ import fullscreenBezel, { - findTransparencyWindowFromEdges, - fitAspectRatio, - resolvePreferredFullscreenTarget --} from "../../../src/engine/runtime/fullscreenBezel.js"; -+} from "../../../www/src/engine/runtime/fullscreenBezel.js"; - import { - resolveBezelStretchOverridePath, - resolveGameImageConventionPaths, - resolveManifestChromeAssetPaths, - resolveRuntimeAssetUrl --} from "../../../src/engine/runtime/gameImageConvention.js"; -+} from "../../../www/src/engine/runtime/gameImageConvention.js"; - - const ASTEROIDS_BACKGROUND_RUNTIME_PATH = "/archive/v1-v2/games/Asteroids/assets/images/deluxe.png"; - const ASTEROIDS_BEZEL_RUNTIME_PATH = "/archive/v1-v2/games/Asteroids/assets/images/bezel.png"; -diff --git a/dev/tests/core/Engine2DCapabilityCombinedFoundation.test.mjs b/dev/tests/core/Engine2DCapabilityCombinedFoundation.test.mjs -index 561f5538c..3cf3a05d7 100644 ---- a/dev/tests/core/Engine2DCapabilityCombinedFoundation.test.mjs -+++ b/dev/tests/core/Engine2DCapabilityCombinedFoundation.test.mjs -@@ -5,17 +5,17 @@ David Quesenberry - Engine2DCapabilityCombinedFoundation.test.mjs - */ - import assert from 'node:assert/strict'; --import Engine from '../../../src/engine/core/Engine.js'; --import Scene from '../../../src/engine/scene/Scene.js'; --import Camera2D from '../../../src/engine/camera/Camera2D.js'; --import { followCameraTarget, worldRectToScreen } from '../../../src/engine/camera/CameraSystem.js'; --import Tilemap from '../../../src/engine/tilemap/Tilemap.js'; --import { renderTilemap } from '../../../src/engine/tilemap/TilemapRenderSystem.js'; --import { isColliding } from '../../../src/engine/collision/aabb.js'; --import { runHybridCollision } from '../../../src/engine/collision/hybrid.js'; --import { moveRectWithTilemapCollision } from '../../../src/engine/systems/CollisionResolutionSystem.js'; --import GameModeState from '../../../src/engine/game/GameModeState.js'; --import { runIfGameplayMode } from '../../../src/engine/game/gameplayHooks.js'; -+import Engine from '../../../www/src/engine/core/Engine.js'; -+import Scene from '../../../www/src/engine/scene/Scene.js'; -+import Camera2D from '../../../www/src/engine/camera/Camera2D.js'; -+import { followCameraTarget, worldRectToScreen } from '../../../www/src/engine/camera/CameraSystem.js'; -+import Tilemap from '../../../www/src/engine/tilemap/Tilemap.js'; -+import { renderTilemap } from '../../../www/src/engine/tilemap/TilemapRenderSystem.js'; -+import { isColliding } from '../../../www/src/engine/collision/aabb.js'; -+import { runHybridCollision } from '../../../www/src/engine/collision/hybrid.js'; -+import { moveRectWithTilemapCollision } from '../../../www/src/engine/systems/CollisionResolutionSystem.js'; -+import GameModeState from '../../../www/src/engine/game/GameModeState.js'; -+import { runIfGameplayMode } from '../../../www/src/engine/game/gameplayHooks.js'; - - function createCanvasHarness() { - const calls = []; -diff --git a/dev/tests/core/Engine3DPhysicsHookIsolation.test.mjs b/dev/tests/core/Engine3DPhysicsHookIsolation.test.mjs -index de3ff6724..af9700ed3 100644 ---- a/dev/tests/core/Engine3DPhysicsHookIsolation.test.mjs -+++ b/dev/tests/core/Engine3DPhysicsHookIsolation.test.mjs -@@ -5,9 +5,9 @@ - Engine3DPhysicsHookIsolation.test.mjs - */ - import assert from 'node:assert/strict'; --import Engine from '../../../src/engine/core/Engine.js'; --import Camera2D from '../../../src/engine/camera/Camera2D.js'; --import { stepSceneBodies3D } from '../../../src/engine/physics/scene3d.js'; -+import Engine from '../../../www/src/engine/core/Engine.js'; -+import Camera2D from '../../../www/src/engine/camera/Camera2D.js'; -+import { stepSceneBodies3D } from '../../../www/src/engine/physics/scene3d.js'; - - function createCanvas() { - const canvas = { -diff --git a/dev/tests/core/EngineCoreBoundaryBaseline.test.mjs b/dev/tests/core/EngineCoreBoundaryBaseline.test.mjs -index ddf7ea170..2c33a8a79 100644 ---- a/dev/tests/core/EngineCoreBoundaryBaseline.test.mjs -+++ b/dev/tests/core/EngineCoreBoundaryBaseline.test.mjs -@@ -5,28 +5,28 @@ David Quesenberry - EngineCoreBoundaryBaseline.test.mjs - */ - import assert from 'node:assert/strict'; --import Engine from '../../../src/engine/core/Engine.js'; --import FrameClock from '../../../src/engine/core/FrameClock.js'; --import FixedTicker from '../../../src/engine/core/FixedTicker.js'; --import RuntimeMetrics from '../../../src/engine/core/RuntimeMetrics.js'; --import EventBus from '../../../src/engine/events/EventBus.js'; --import Camera2D from '../../../src/engine/camera/Camera2D.js'; --import Camera3D from '../../../src/engine/camera/Camera3D.js'; --import { followCameraTarget, worldRectToScreen } from '../../../src/engine/camera/CameraSystem.js'; --import Scene from '../../../src/engine/scene/Scene.js'; --import SceneManager from '../../../src/engine/scene/SceneManager.js'; --import CanvasRenderer from '../../../src/engine/rendering/CanvasRenderer.js'; --import { renderByLayers } from '../../../src/engine/rendering/LayeredRenderSystem.js'; --import InputService from '../../../src/engine/input/InputService.js'; --import ActionInputService from '../../../src/engine/input/ActionInputService.js'; --import { stepArcadeBody } from '../../../src/engine/physics/arcadeBody.js'; --import { applyDrag } from '../../../src/engine/physics/drag.js'; --import { integrateVelocity3D } from '../../../src/engine/physics/integration3d.js'; --import { isAabbColliding3D, resolveAabbCollision3D } from '../../../src/engine/physics/collision3d.js'; --import { stepSceneBodies3D } from '../../../src/engine/physics/scene3d.js'; --import AudioService from '../../../src/engine/audio/AudioService.js'; --import { moveEntities, moveEntities3D } from '../../../src/engine/systems/MovementSystem.js'; --import { stepWorldPhysics3D } from '../../../src/engine/systems/PhysicsSystem.js'; -+import Engine from '../../../www/src/engine/core/Engine.js'; -+import FrameClock from '../../../www/src/engine/core/FrameClock.js'; -+import FixedTicker from '../../../www/src/engine/core/FixedTicker.js'; -+import RuntimeMetrics from '../../../www/src/engine/core/RuntimeMetrics.js'; -+import EventBus from '../../../www/src/engine/events/EventBus.js'; -+import Camera2D from '../../../www/src/engine/camera/Camera2D.js'; -+import Camera3D from '../../../www/src/engine/camera/Camera3D.js'; -+import { followCameraTarget, worldRectToScreen } from '../../../www/src/engine/camera/CameraSystem.js'; -+import Scene from '../../../www/src/engine/scene/Scene.js'; -+import SceneManager from '../../../www/src/engine/scene/SceneManager.js'; -+import CanvasRenderer from '../../../www/src/engine/rendering/CanvasRenderer.js'; -+import { renderByLayers } from '../../../www/src/engine/rendering/LayeredRenderSystem.js'; -+import InputService from '../../../www/src/engine/input/InputService.js'; -+import ActionInputService from '../../../www/src/engine/input/ActionInputService.js'; -+import { stepArcadeBody } from '../../../www/src/engine/physics/arcadeBody.js'; -+import { applyDrag } from '../../../www/src/engine/physics/drag.js'; -+import { integrateVelocity3D } from '../../../www/src/engine/physics/integration3d.js'; -+import { isAabbColliding3D, resolveAabbCollision3D } from '../../../www/src/engine/physics/collision3d.js'; -+import { stepSceneBodies3D } from '../../../www/src/engine/physics/scene3d.js'; -+import AudioService from '../../../www/src/engine/audio/AudioService.js'; -+import { moveEntities, moveEntities3D } from '../../../www/src/engine/systems/MovementSystem.js'; -+import { stepWorldPhysics3D } from '../../../www/src/engine/systems/PhysicsSystem.js'; - - export function run() { - // Core boot/timing boundaries. -diff --git a/dev/tests/core/EngineFullscreen.test.mjs b/dev/tests/core/EngineFullscreen.test.mjs -index df7426007..605a02417 100644 ---- a/dev/tests/core/EngineFullscreen.test.mjs -+++ b/dev/tests/core/EngineFullscreen.test.mjs -@@ -5,8 +5,8 @@ - EngineFullscreen.test.mjs - */ - import assert from 'node:assert/strict'; --import Engine from '../../../src/engine/core/Engine.js'; --import FullscreenService from '../../../src/engine/runtime/FullscreenService.js'; -+import Engine from '../../../www/src/engine/core/Engine.js'; -+import FullscreenService from '../../../www/src/engine/runtime/FullscreenService.js'; - - function createCanvas() { - const canvas = { -diff --git a/dev/tests/core/EngineSceneLifecycle.test.mjs b/dev/tests/core/EngineSceneLifecycle.test.mjs -index be895b9fc..f81890b80 100644 ---- a/dev/tests/core/EngineSceneLifecycle.test.mjs -+++ b/dev/tests/core/EngineSceneLifecycle.test.mjs -@@ -5,10 +5,10 @@ - EngineSceneLifecycle.test.mjs - */ - import assert from 'node:assert/strict'; --import Engine from '../../../src/engine/core/Engine.js'; --import SceneTransition from '../../../src/engine/scene/SceneTransition.js'; --import TransitionScene from '../../../src/engine/scene/TransitionScene.js'; --import Camera3D from '../../../src/engine/camera/Camera3D.js'; -+import Engine from '../../../www/src/engine/core/Engine.js'; -+import SceneTransition from '../../../www/src/engine/scene/SceneTransition.js'; -+import TransitionScene from '../../../www/src/engine/scene/TransitionScene.js'; -+import Camera3D from '../../../www/src/engine/camera/Camera3D.js'; - - function createCanvas() { - const canvas = { -diff --git a/dev/tests/core/EngineTiming.test.mjs b/dev/tests/core/EngineTiming.test.mjs -index 4f3eb41e3..c4904cfbe 100644 ---- a/dev/tests/core/EngineTiming.test.mjs -+++ b/dev/tests/core/EngineTiming.test.mjs -@@ -5,9 +5,9 @@ - EngineTiming.test.mjs - */ - import assert from 'node:assert/strict'; --import Engine from '../../../src/engine/core/Engine.js'; --import FrameClock from '../../../src/engine/core/FrameClock.js'; --import FixedTicker from '../../../src/engine/core/FixedTicker.js'; -+import Engine from '../../../www/src/engine/core/Engine.js'; -+import FrameClock from '../../../www/src/engine/core/FrameClock.js'; -+import FixedTicker from '../../../www/src/engine/core/FixedTicker.js'; - - function createCanvas() { - const canvas = { -diff --git a/dev/tests/core/Section1FinalResidueStructure.test.mjs b/dev/tests/core/Section1FinalResidueStructure.test.mjs -index d061ca187..daad2ec44 100644 ---- a/dev/tests/core/Section1FinalResidueStructure.test.mjs -+++ b/dev/tests/core/Section1FinalResidueStructure.test.mjs -@@ -5,21 +5,21 @@ David Quesenberry - Section1FinalResidueStructure.test.mjs - */ - import assert from 'node:assert/strict'; --import CanvasRenderer from '../../../src/engine/rendering/CanvasRenderer.js'; --import ResolutionScaler from '../../../src/engine/rendering/ResolutionScaler.js'; --import { renderByLayers } from '../../../src/engine/rendering/LayeredRenderSystem.js'; --import { renderSpriteReadyEntities } from '../../../src/engine/rendering/SpriteRenderSystem.js'; --import Scene from '../../../src/engine/scene/Scene.js'; --import SceneManager from '../../../src/engine/scene/SceneManager.js'; --import SceneTransition from '../../../src/engine/scene/SceneTransition.js'; --import TransitionScene from '../../../src/engine/scene/TransitionScene.js'; --import SceneTransitionController from '../../../src/engine/scene/SceneTransitionController.js'; --import AttractModeController from '../../../src/engine/scene/AttractModeController.js'; --import { DEFAULT_ATTRACT_CONFIG } from '../../../src/engine/scene/AttractModeController.js'; --import { isColliding } from '../../../src/engine/collision/aabb.js'; --import { applyDrag } from '../../../src/engine/physics/drag.js'; --import { stepArcadeBody } from '../../../src/engine/physics/arcadeBody.js'; --import { integrateVelocity2D } from '../../../src/engine/physics/integration.js'; -+import CanvasRenderer from '../../../www/src/engine/rendering/CanvasRenderer.js'; -+import ResolutionScaler from '../../../www/src/engine/rendering/ResolutionScaler.js'; -+import { renderByLayers } from '../../../www/src/engine/rendering/LayeredRenderSystem.js'; -+import { renderSpriteReadyEntities } from '../../../www/src/engine/rendering/SpriteRenderSystem.js'; -+import Scene from '../../../www/src/engine/scene/Scene.js'; -+import SceneManager from '../../../www/src/engine/scene/SceneManager.js'; -+import SceneTransition from '../../../www/src/engine/scene/SceneTransition.js'; -+import TransitionScene from '../../../www/src/engine/scene/TransitionScene.js'; -+import SceneTransitionController from '../../../www/src/engine/scene/SceneTransitionController.js'; -+import AttractModeController from '../../../www/src/engine/scene/AttractModeController.js'; -+import { DEFAULT_ATTRACT_CONFIG } from '../../../www/src/engine/scene/AttractModeController.js'; -+import { isColliding } from '../../../www/src/engine/collision/aabb.js'; -+import { applyDrag } from '../../../www/src/engine/physics/drag.js'; -+import { stepArcadeBody } from '../../../www/src/engine/physics/arcadeBody.js'; -+import { integrateVelocity2D } from '../../../www/src/engine/physics/integration.js'; - - assert.equal(typeof CanvasRenderer, 'function'); - assert.equal(typeof ResolutionScaler, 'function'); -diff --git a/dev/tests/dev-runtime/AdminNotesBoundary.test.mjs b/dev/tests/dev-runtime/AdminNotesBoundary.test.mjs -index c75f6c641..449c519db 100644 ---- a/dev/tests/dev-runtime/AdminNotesBoundary.test.mjs -+++ b/dev/tests/dev-runtime/AdminNotesBoundary.test.mjs -@@ -18,8 +18,8 @@ const productionRoots = [ - "www/admin", - "www/assets", - "www/owner", -- "src/engine", -- "src/shared", -+ "www/src/engine", -+ "www/src/shared", - "www/toolbox", - ]; - -@@ -32,7 +32,7 @@ const expectedDevNotes = [ - "dev/archive/legacy-docs-build/admin-notes/roadmap2MVP.txt", - "dev/archive/legacy-docs-build/admin-notes/sample.txt", - "dev/archive/legacy-docs-build/admin-notes/tools/index.txt", -- "src/dev-runtime/admin/notes.html", -+ "www/src/dev-runtime/admin/notes.html", - ]; - - const retiredProductionFiles = [ -@@ -149,9 +149,9 @@ test("Admin Notes dev files and local viewer entrypoint exist", () => { - }); - }); - --test("Admin Notes browser viewer stays under src/dev-runtime/admin while server helpers live under api/admin", () => { -+test("Admin Notes browser viewer stays under www/src/dev-runtime/admin while server helpers live under api/admin", () => { - assert.equal( -- fs.existsSync(repoPath("src/dev-runtime/admin/admin-notes-viewer.js")), -+ fs.existsSync(repoPath("www/src/dev-runtime/admin/admin-notes-viewer.js")), - true, - "legacy Admin Notes viewer exists", - ); -@@ -166,14 +166,14 @@ test("Admin Notes browser viewer stays under src/dev-runtime/admin while server - "API Admin Notes local menu route helper exists", - ); - assert.equal( -- fs.existsSync(repoPath("src/dev-runtime/admin/header-nav.local.html")), -+ fs.existsSync(repoPath("www/src/dev-runtime/admin/header-nav.local.html")), - true, - "dev-runtime local header partial exists", - ); - }); - - test("Admin Notes local viewer page uses external dev-runtime JavaScript only", () => { -- const viewerSource = fs.readFileSync(repoPath("src/dev-runtime/admin/notes.html"), "utf8"); -+ const viewerSource = fs.readFileSync(repoPath("www/src/dev-runtime/admin/notes.html"), "utf8"); - assert.doesNotMatch(viewerSource, /]*\bsrc=)/i, "viewer page must not contain inline scripts"); - assert.doesNotMatch(viewerSource, / - const localHeaderPath = localAdminNotesHeaderPartialPath(repoRoot, headerPath); - const servedHeader = fs.readFileSync(localHeaderPath, "utf8"); - -- assert.equal(relativePath(localHeaderPath), "src/dev-runtime/admin/header-nav.local.html"); -+ assert.equal(relativePath(localHeaderPath), "www/src/dev-runtime/admin/header-nav.local.html"); - assert.doesNotMatch(servedHeader, /data-admin-notes-local-menu|data-admin-my-stuff-menu|data-admin-my-stuff-separator|Admin Notes/); - assert.doesNotMatch(servedHeader, new RegExp(ADMIN_NOTES_LOCAL_SOURCE_PATH.replace(/\//g, "\\/"))); - assert.doesNotMatch(servedHeader, new RegExp(ADMIN_NOTES_LOCAL_VIEWER_PATH.replace(/\//g, "\\/"))); -diff --git a/dev/tests/dev-runtime/ApiMenuPathCleanup.test.mjs b/dev/tests/dev-runtime/ApiMenuPathCleanup.test.mjs -index 82ee5db82..7349f4a47 100644 ---- a/dev/tests/dev-runtime/ApiMenuPathCleanup.test.mjs -+++ b/dev/tests/dev-runtime/ApiMenuPathCleanup.test.mjs -@@ -5,11 +5,12 @@ import assert from "node:assert/strict"; - import { - getAdminNavigationItems, - getOwnerNavigationItems, --} from "../../../src/api/admin-owner-navigation.js"; -+} from "../../../www/src/api/admin-owner-navigation.js"; - - const ACTIVE_SCAN_ROOTS = Object.freeze([ - "api", - "src", -+ "www/src", - "www/account", - "www/admin", - "www/assets", -@@ -82,8 +83,8 @@ function assertActivePathExists(item) { - assert.equal(fs.existsSync(browserFilePath), true, `${item.label} active menu path should exist: ${browserFilePath}`); - } - --test("server API client lives under src/api and active code does not reference src/engine/api", () => { -- assert.equal(fs.existsSync("src/api/server-api-client.js"), true); -+test("server API client lives under www/src/api and active code does not reference src/engine/api", () => { -+ assert.equal(fs.existsSync("www/src/api/server-api-client.js"), true); - assert.deepEqual(fs.existsSync("src/engine/api") ? fs.readdirSync("src/engine/api").sort() : [], []); - const offenders = activeTextSources() - .filter(({ source }) => /src\/engine\/api\/server-api-client|src\\engine\\api\\server-api-client|engine\/api\/server-api-client/.test(source)) -diff --git a/dev/tests/dev-runtime/ArchitectureCleanupApiNavInvitations.test.mjs b/dev/tests/dev-runtime/ArchitectureCleanupApiNavInvitations.test.mjs -index a2bdd03d6..790706acc 100644 ---- a/dev/tests/dev-runtime/ArchitectureCleanupApiNavInvitations.test.mjs -+++ b/dev/tests/dev-runtime/ArchitectureCleanupApiNavInvitations.test.mjs -@@ -6,7 +6,7 @@ import { createLocalApiRouter } from "../../../api/server/local-api-router.mjs"; - import { - getAdminNavigationItems, - getOwnerNavigationItems, --} from "../../../src/api/admin-owner-navigation.js"; -+} from "../../../www/src/api/admin-owner-navigation.js"; - import { SEED_DB_KEYS } from "../../../api/seed/seed-db-keys.mjs"; - - const MOVED_API_CLIENTS = Object.freeze([ -@@ -80,11 +80,11 @@ async function apiJson(baseUrl, pathName, request = {}) { - return payload.data; - } - --test("product and web API clients live under src/api while engine API keeps only shared server plumbing", () => { -+test("product and web API clients live under www/src/api while engine API keeps only shared server plumbing", () => { - assert.equal(fs.existsSync("src/engine/api"), false); -- assert.equal(fs.existsSync("src/api/server-api-client.js"), true); -+ assert.equal(fs.existsSync("www/src/api/server-api-client.js"), true); - MOVED_API_CLIENTS.forEach((fileName) => { -- assert.equal(fs.existsSync(`src/api/${fileName}`), true, `${fileName} should live under src/api`); -+ assert.equal(fs.existsSync(`www/src/api/${fileName}`), true, `${fileName} should live under www/src/api`); - assert.equal(fs.existsSync(`src/engine/api/${fileName}`), false, `${fileName} should not remain under src/engine/api`); - }); - }); -@@ -111,8 +111,8 @@ test("Admin and Owner navigation are shared and include present operational/busi - const payload = await apiJson(server.baseUrl, "/api/navigation/admin-menu"); - assert.deepEqual(payload.adminMainItems.map((item) => item.label), adminLabels); - assert.deepEqual(payload.ownerMenuItems.map((item) => item.label), ownerLabels); -- assert.equal(payload.ownership.adminMainItems, "src/api/admin-owner-navigation.js"); -- assert.equal(payload.ownership.ownerMenuItems, "src/api/admin-owner-navigation.js"); -+ assert.equal(payload.ownership.adminMainItems, "www/src/api/admin-owner-navigation.js"); -+ assert.equal(payload.ownership.ownerMenuItems, "www/src/api/admin-owner-navigation.js"); - } finally { - await server.close(); - } -@@ -153,7 +153,7 @@ test("API runtime boundary is documented for runtime implementation and not test - const source = fs.readFileSync("api/API_RUNTIME_BOUNDARY.md", "utf8"); - assert.match(source, /server\/API application runtime implementation/i); - assert.match(source, /not `dev\/tests\/dev-runtime`/); -- assert.match(source, /Browser pages, Theme V2 scripts, toolbox pages, and `src\/engine` runtime code must use declared API\/service contracts instead of importing `api\/` directly/); -+ assert.match(source, /Browser pages, Theme V2 scripts, toolbox pages, and `www\/src\/engine` runtime code must use declared API\/service contracts instead of importing `api\/` directly/); - }); - - test("Toolbox registry consumes shared metadata without importing dev-runtime", () => { -@@ -161,6 +161,6 @@ test("Toolbox registry consumes shared metadata without importing dev-runtime", - const devRuntimeShim = fs.readFileSync("api/guest-seeds/tool-metadata-inventory.js", "utf8"); - assert.match(registrySource, /src\/shared\/toolbox\/tool-metadata-inventory\.js/); - assert.doesNotMatch(registrySource, /src\/dev-runtime|src\\dev-runtime|dev-runtime\/guest-seeds/); -- assert.match(devRuntimeShim, /\.\.\/\.\.\/src\/shared\/toolbox\/tool-metadata-inventory\.js/); -- assert.equal(fs.existsSync("src/shared/toolbox/tool-metadata-inventory.js"), true); -+ assert.match(devRuntimeShim, /\.\.\/\.\.\/www\/src\/shared\/toolbox\/tool-metadata-inventory\.js/); -+ assert.equal(fs.existsSync("www/src/shared/toolbox/tool-metadata-inventory.js"), true); - }); -diff --git a/dev/tests/dev-runtime/PublicApiUrlClient.test.mjs b/dev/tests/dev-runtime/PublicApiUrlClient.test.mjs -index 0a3654781..881d4a4a9 100644 ---- a/dev/tests/dev-runtime/PublicApiUrlClient.test.mjs -+++ b/dev/tests/dev-runtime/PublicApiUrlClient.test.mjs -@@ -4,7 +4,7 @@ import { - clearPublicConfigCache, - getPublicConfigDiagnostics, - resolveServerApiUrl, --} from "../../../src/api/public-config-client.js"; -+} from "../../../www/src/api/public-config-client.js"; - - function installMockBrowser(origin, responses) { - const calls = []; -diff --git a/dev/tests/dev-runtime/ServerApiClientStandardization.test.mjs b/dev/tests/dev-runtime/ServerApiClientStandardization.test.mjs -index c2f051d2d..d03e149de 100644 ---- a/dev/tests/dev-runtime/ServerApiClientStandardization.test.mjs -+++ b/dev/tests/dev-runtime/ServerApiClientStandardization.test.mjs -@@ -1,7 +1,7 @@ - import assert from "node:assert/strict"; - import test from "node:test"; - --import { clearPublicConfigCache } from "../../../src/api/public-config-client.js"; -+import { clearPublicConfigCache } from "../../../www/src/api/public-config-client.js"; - import { - callServerToolFunction, - clearServerApiDiagnostics, -@@ -10,8 +10,8 @@ import { - requireServerApiData, - SERVER_DATA_BOUNDARY_RULE, - safeRequestServerApi, --} from "../../../src/api/server-api-client.js"; --import { logoutSessionUser } from "../../../src/api/session-api-client.js"; -+} from "../../../www/src/api/server-api-client.js"; -+import { logoutSessionUser } from "../../../www/src/api/session-api-client.js"; - - function installMockServerApi(routes) { - const calls = []; -diff --git a/dev/tests/engine/EngineV2AbilitySystem.test.mjs b/dev/tests/engine/EngineV2AbilitySystem.test.mjs -index 9bd282ce3..9b5835345 100644 ---- a/dev/tests/engine/EngineV2AbilitySystem.test.mjs -+++ b/dev/tests/engine/EngineV2AbilitySystem.test.mjs -@@ -9,7 +9,7 @@ import assert from "node:assert/strict"; - import { - ENGINE_V2_ABILITY_ERRORS, - resolveEngineV2Abilities, --} from "../../../src/engine/runtime/engineV2AbilitySystem.js"; -+} from "../../../www/src/engine/runtime/engineV2AbilitySystem.js"; - import { createEngineV2CombatRuntimeFixture } from "./EngineV2CombatRuntimeFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/EngineV2AnimationRuntime.test.mjs b/dev/tests/engine/EngineV2AnimationRuntime.test.mjs -index 013126375..b263f7780 100644 ---- a/dev/tests/engine/EngineV2AnimationRuntime.test.mjs -+++ b/dev/tests/engine/EngineV2AnimationRuntime.test.mjs -@@ -9,7 +9,7 @@ import assert from "node:assert/strict"; - import { - ENGINE_V2_ANIMATION_ERRORS, - updateEngineV2Animations, --} from "../../../src/engine/runtime/engineV2AnimationRuntime.js"; -+} from "../../../www/src/engine/runtime/engineV2AnimationRuntime.js"; - import { createEngineV2MediaRuntimeFixture } from "./EngineV2MediaRuntimeFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/EngineV2AudioRuntime.test.mjs b/dev/tests/engine/EngineV2AudioRuntime.test.mjs -index a866d4836..79bf7c3a4 100644 ---- a/dev/tests/engine/EngineV2AudioRuntime.test.mjs -+++ b/dev/tests/engine/EngineV2AudioRuntime.test.mjs -@@ -9,7 +9,7 @@ import assert from "node:assert/strict"; - import { - ENGINE_V2_AUDIO_ERRORS, - resolveEngineV2AudioRuntime, --} from "../../../src/engine/runtime/engineV2AudioRuntime.js"; -+} from "../../../www/src/engine/runtime/engineV2AudioRuntime.js"; - import { createEngineV2MediaRuntimeFixture } from "./EngineV2MediaRuntimeFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/EngineV2CameraRuntime.test.mjs b/dev/tests/engine/EngineV2CameraRuntime.test.mjs -index 8e3e5e715..26718ec91 100644 ---- a/dev/tests/engine/EngineV2CameraRuntime.test.mjs -+++ b/dev/tests/engine/EngineV2CameraRuntime.test.mjs -@@ -9,7 +9,7 @@ import assert from "node:assert/strict"; - import { - ENGINE_V2_CAMERA_ERRORS, - resolveEngineV2Camera, --} from "../../../src/engine/runtime/engineV2CameraRuntime.js"; -+} from "../../../www/src/engine/runtime/engineV2CameraRuntime.js"; - import { createEngineV2MediaRuntimeFixture } from "./EngineV2MediaRuntimeFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/EngineV2ChaseFleeBehavior.test.mjs b/dev/tests/engine/EngineV2ChaseFleeBehavior.test.mjs -index 0db3e3cab..f739592db 100644 ---- a/dev/tests/engine/EngineV2ChaseFleeBehavior.test.mjs -+++ b/dev/tests/engine/EngineV2ChaseFleeBehavior.test.mjs -@@ -9,7 +9,7 @@ import assert from "node:assert/strict"; - import { - ENGINE_V2_CHASE_FLEE_ERRORS, - resolveEngineV2ChaseFleeBehaviors, --} from "../../../src/engine/runtime/engineV2ChaseFleeBehavior.js"; -+} from "../../../www/src/engine/runtime/engineV2ChaseFleeBehavior.js"; - import { createEngineV2AiBehaviorFixture } from "./EngineV2AiBehaviorFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/EngineV2CheckpointSystem.test.mjs b/dev/tests/engine/EngineV2CheckpointSystem.test.mjs -index 7784fa77a..058699885 100644 ---- a/dev/tests/engine/EngineV2CheckpointSystem.test.mjs -+++ b/dev/tests/engine/EngineV2CheckpointSystem.test.mjs -@@ -9,7 +9,7 @@ import assert from "node:assert/strict"; - import { - ENGINE_V2_CHECKPOINT_ERRORS, - processEngineV2Checkpoints, --} from "../../../src/engine/runtime/engineV2CheckpointSystem.js"; -+} from "../../../www/src/engine/runtime/engineV2CheckpointSystem.js"; - import { createEngineV2PersistenceRuntimeFixture } from "./EngineV2PersistenceRuntimeFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/EngineV2ConfigDrivenProofScene.test.mjs b/dev/tests/engine/EngineV2ConfigDrivenProofScene.test.mjs -index 53f56a970..930531612 100644 ---- a/dev/tests/engine/EngineV2ConfigDrivenProofScene.test.mjs -+++ b/dev/tests/engine/EngineV2ConfigDrivenProofScene.test.mjs -@@ -9,7 +9,7 @@ import assert from "node:assert/strict"; - import { - ENGINE_V2_PROOF_SCENE_ERRORS, - runEngineV2ConfigDrivenProofScene, --} from "../../../src/engine/runtime/engineV2ConfigDrivenProofScene.js"; -+} from "../../../www/src/engine/runtime/engineV2ConfigDrivenProofScene.js"; - import { createEngineV2FeatureCompleteFixture } from "./EngineV2FeatureCompleteFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/EngineV2ContainerSystem.test.mjs b/dev/tests/engine/EngineV2ContainerSystem.test.mjs -index 0c38f90e1..d75489410 100644 ---- a/dev/tests/engine/EngineV2ContainerSystem.test.mjs -+++ b/dev/tests/engine/EngineV2ContainerSystem.test.mjs -@@ -9,7 +9,7 @@ import assert from "node:assert/strict"; - import { - ENGINE_V2_CONTAINER_ERRORS, - resolveEngineV2Containers, --} from "../../../src/engine/runtime/engineV2ContainerSystem.js"; -+} from "../../../www/src/engine/runtime/engineV2ContainerSystem.js"; - import { createEngineV2InteractionRuntimeFixture } from "./EngineV2InteractionRuntimeFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/EngineV2CraftingFoundation.test.mjs b/dev/tests/engine/EngineV2CraftingFoundation.test.mjs -index c0014f2a2..6e48c5364 100644 ---- a/dev/tests/engine/EngineV2CraftingFoundation.test.mjs -+++ b/dev/tests/engine/EngineV2CraftingFoundation.test.mjs -@@ -9,7 +9,7 @@ import assert from "node:assert/strict"; - import { - ENGINE_V2_CRAFTING_ERRORS, - resolveEngineV2Crafting, --} from "../../../src/engine/runtime/engineV2CraftingFoundation.js"; -+} from "../../../www/src/engine/runtime/engineV2CraftingFoundation.js"; - import { createEngineV2InteractionRuntimeFixture } from "./EngineV2InteractionRuntimeFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/EngineV2CustomExtensionsHookRuntime.test.mjs b/dev/tests/engine/EngineV2CustomExtensionsHookRuntime.test.mjs -index 4e20b69a8..658ebab27 100644 ---- a/dev/tests/engine/EngineV2CustomExtensionsHookRuntime.test.mjs -+++ b/dev/tests/engine/EngineV2CustomExtensionsHookRuntime.test.mjs -@@ -15,7 +15,7 @@ import { - dispatchEngineV2CustomExtensionHook, - registerEngineV2CustomExtensionHooks, - resolveEngineV2AdminCustomExtensionApprovalBoundary, --} from "../../../src/engine/runtime/engineV2CustomExtensionsHookRuntime.js"; -+} from "../../../www/src/engine/runtime/engineV2CustomExtensionsHookRuntime.js"; - - function createExtensionDefinition(overrides = {}) { - return { -@@ -214,7 +214,7 @@ export function run() { - assert.equal(sourceFieldResult.valid, false); - assert.deepEqual(sourceFieldResult.errors.map((error) => error.code), [ENGINE_V2_CUSTOM_EXTENSION_ERRORS.FIELD_FORBIDDEN]); - -- const runtimeSource = fs.readFileSync("src/engine/runtime/engineV2CustomExtensionsHookRuntime.js", "utf8"); -+ const runtimeSource = fs.readFileSync("www/src/engine/runtime/engineV2CustomExtensionsHookRuntime.js", "utf8"); - assert.equal(/\beval\s*\(/.test(runtimeSource), false); - assert.equal(/\bnew\s+Function\b/.test(runtimeSource), false); - } -diff --git a/dev/tests/engine/EngineV2DialogueSystem.test.mjs b/dev/tests/engine/EngineV2DialogueSystem.test.mjs -index f355dfbe6..2d8fab621 100644 ---- a/dev/tests/engine/EngineV2DialogueSystem.test.mjs -+++ b/dev/tests/engine/EngineV2DialogueSystem.test.mjs -@@ -9,7 +9,7 @@ import assert from "node:assert/strict"; - import { - ENGINE_V2_DIALOGUE_ERRORS, - processEngineV2Dialogue, --} from "../../../src/engine/runtime/engineV2DialogueSystem.js"; -+} from "../../../www/src/engine/runtime/engineV2DialogueSystem.js"; - import { createEngineV2PlayerRuntimeFixture } from "./EngineV2PlayerRuntimeFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/EngineV2EconomyAndCurrency.test.mjs b/dev/tests/engine/EngineV2EconomyAndCurrency.test.mjs -index a1b029822..7cfaa20fb 100644 ---- a/dev/tests/engine/EngineV2EconomyAndCurrency.test.mjs -+++ b/dev/tests/engine/EngineV2EconomyAndCurrency.test.mjs -@@ -9,7 +9,7 @@ import assert from "node:assert/strict"; - import { - ENGINE_V2_ECONOMY_ERRORS, - resolveEngineV2EconomyAndCurrency, --} from "../../../src/engine/runtime/engineV2EconomyAndCurrency.js"; -+} from "../../../www/src/engine/runtime/engineV2EconomyAndCurrency.js"; - import { createEngineV2PossessionRuntimeFixture } from "./EngineV2PossessionRuntimeFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/EngineV2EffectRuntime.test.mjs b/dev/tests/engine/EngineV2EffectRuntime.test.mjs -index de15e110b..ec66bc500 100644 ---- a/dev/tests/engine/EngineV2EffectRuntime.test.mjs -+++ b/dev/tests/engine/EngineV2EffectRuntime.test.mjs -@@ -9,7 +9,7 @@ import assert from "node:assert/strict"; - import { - ENGINE_V2_EFFECT_ERRORS, - processEngineV2Effects, --} from "../../../src/engine/runtime/engineV2EffectRuntime.js"; -+} from "../../../www/src/engine/runtime/engineV2EffectRuntime.js"; - import { createEngineV2FeatureCompleteFixture } from "./EngineV2FeatureCompleteFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/EngineV2EquipmentSystem.test.mjs b/dev/tests/engine/EngineV2EquipmentSystem.test.mjs -index ffaaa6dbb..67b2ae883 100644 ---- a/dev/tests/engine/EngineV2EquipmentSystem.test.mjs -+++ b/dev/tests/engine/EngineV2EquipmentSystem.test.mjs -@@ -9,7 +9,7 @@ import assert from "node:assert/strict"; - import { - ENGINE_V2_EQUIPMENT_ERRORS, - resolveEngineV2Equipment, --} from "../../../src/engine/runtime/engineV2EquipmentSystem.js"; -+} from "../../../www/src/engine/runtime/engineV2EquipmentSystem.js"; - import { createEngineV2PossessionRuntimeFixture } from "./EngineV2PossessionRuntimeFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/EngineV2InteractionSystem.test.mjs b/dev/tests/engine/EngineV2InteractionSystem.test.mjs -index 8f4b4a8c4..366ab40ce 100644 ---- a/dev/tests/engine/EngineV2InteractionSystem.test.mjs -+++ b/dev/tests/engine/EngineV2InteractionSystem.test.mjs -@@ -9,7 +9,7 @@ import assert from "node:assert/strict"; - import { - ENGINE_V2_INTERACTION_ERRORS, - resolveEngineV2Interactions, --} from "../../../src/engine/runtime/engineV2InteractionSystem.js"; -+} from "../../../www/src/engine/runtime/engineV2InteractionSystem.js"; - import { createEngineV2InteractionRuntimeFixture } from "./EngineV2InteractionRuntimeFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/EngineV2InventorySystem.test.mjs b/dev/tests/engine/EngineV2InventorySystem.test.mjs -index c2ca3f6c8..4b622d87d 100644 ---- a/dev/tests/engine/EngineV2InventorySystem.test.mjs -+++ b/dev/tests/engine/EngineV2InventorySystem.test.mjs -@@ -9,7 +9,7 @@ import assert from "node:assert/strict"; - import { - ENGINE_V2_INVENTORY_ERRORS, - resolveEngineV2Inventory, --} from "../../../src/engine/runtime/engineV2InventorySystem.js"; -+} from "../../../www/src/engine/runtime/engineV2InventorySystem.js"; - import { createEngineV2PossessionRuntimeFixture } from "./EngineV2PossessionRuntimeFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/EngineV2ItemAndLootSystem.test.mjs b/dev/tests/engine/EngineV2ItemAndLootSystem.test.mjs -index 6b4e6aff1..d0ca274d7 100644 ---- a/dev/tests/engine/EngineV2ItemAndLootSystem.test.mjs -+++ b/dev/tests/engine/EngineV2ItemAndLootSystem.test.mjs -@@ -9,7 +9,7 @@ import assert from "node:assert/strict"; - import { - ENGINE_V2_ITEM_LOOT_ERRORS, - resolveEngineV2ItemAndLoot, --} from "../../../src/engine/runtime/engineV2ItemAndLootSystem.js"; -+} from "../../../www/src/engine/runtime/engineV2ItemAndLootSystem.js"; - import { createEngineV2PossessionRuntimeFixture } from "./EngineV2PossessionRuntimeFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/EngineV2ModifierStack.test.mjs b/dev/tests/engine/EngineV2ModifierStack.test.mjs -index 4af797d3c..e80dd0ab7 100644 ---- a/dev/tests/engine/EngineV2ModifierStack.test.mjs -+++ b/dev/tests/engine/EngineV2ModifierStack.test.mjs -@@ -9,7 +9,7 @@ import assert from "node:assert/strict"; - import { - ENGINE_V2_MODIFIER_ERRORS, - resolveEngineV2ModifierStack, --} from "../../../src/engine/runtime/engineV2ModifierStack.js"; -+} from "../../../www/src/engine/runtime/engineV2ModifierStack.js"; - import { createEngineV2FeatureCompleteFixture } from "./EngineV2FeatureCompleteFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/EngineV2ObjectiveSystem.test.mjs b/dev/tests/engine/EngineV2ObjectiveSystem.test.mjs -index 2f29495f1..2e2e499ae 100644 ---- a/dev/tests/engine/EngineV2ObjectiveSystem.test.mjs -+++ b/dev/tests/engine/EngineV2ObjectiveSystem.test.mjs -@@ -9,7 +9,7 @@ import assert from "node:assert/strict"; - import { - ENGINE_V2_OBJECTIVE_ERRORS, - processEngineV2Objectives, --} from "../../../src/engine/runtime/engineV2ObjectiveSystem.js"; -+} from "../../../www/src/engine/runtime/engineV2ObjectiveSystem.js"; - import { createEngineV2PlayerRuntimeFixture } from "./EngineV2PlayerRuntimeFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/EngineV2PathfindingBaseline.test.mjs b/dev/tests/engine/EngineV2PathfindingBaseline.test.mjs -index 120e6e500..15baf0c77 100644 ---- a/dev/tests/engine/EngineV2PathfindingBaseline.test.mjs -+++ b/dev/tests/engine/EngineV2PathfindingBaseline.test.mjs -@@ -9,7 +9,7 @@ import assert from "node:assert/strict"; - import { - ENGINE_V2_PATHFINDING_ERRORS, - resolveEngineV2PathRequests, --} from "../../../src/engine/runtime/engineV2PathfindingBaseline.js"; -+} from "../../../www/src/engine/runtime/engineV2PathfindingBaseline.js"; - import { createEngineV2AiBehaviorFixture } from "./EngineV2AiBehaviorFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/EngineV2PatrolBehavior.test.mjs b/dev/tests/engine/EngineV2PatrolBehavior.test.mjs -index 73403faf8..758fa8d4b 100644 ---- a/dev/tests/engine/EngineV2PatrolBehavior.test.mjs -+++ b/dev/tests/engine/EngineV2PatrolBehavior.test.mjs -@@ -9,7 +9,7 @@ import assert from "node:assert/strict"; - import { - ENGINE_V2_PATROL_ERRORS, - updateEngineV2PatrolBehaviors, --} from "../../../src/engine/runtime/engineV2PatrolBehavior.js"; -+} from "../../../www/src/engine/runtime/engineV2PatrolBehavior.js"; - import { createEngineV2AiBehaviorFixture } from "./EngineV2AiBehaviorFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/EngineV2PersistenceRuntime.test.mjs b/dev/tests/engine/EngineV2PersistenceRuntime.test.mjs -index 4fb75e969..31a3d4709 100644 ---- a/dev/tests/engine/EngineV2PersistenceRuntime.test.mjs -+++ b/dev/tests/engine/EngineV2PersistenceRuntime.test.mjs -@@ -9,8 +9,8 @@ import assert from "node:assert/strict"; - import { - ENGINE_V2_PERSISTENCE_ERRORS, - processEngineV2Persistence, --} from "../../../src/engine/runtime/engineV2PersistenceRuntime.js"; --import { createEngineV2SaveState } from "../../../src/engine/runtime/engineV2SaveStateModel.js"; -+} from "../../../www/src/engine/runtime/engineV2PersistenceRuntime.js"; -+import { createEngineV2SaveState } from "../../../www/src/engine/runtime/engineV2SaveStateModel.js"; - import { createEngineV2PersistenceRuntimeFixture } from "./EngineV2PersistenceRuntimeFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/EngineV2ProfileStateSystem.test.mjs b/dev/tests/engine/EngineV2ProfileStateSystem.test.mjs -index aadc7456d..5887c29dd 100644 ---- a/dev/tests/engine/EngineV2ProfileStateSystem.test.mjs -+++ b/dev/tests/engine/EngineV2ProfileStateSystem.test.mjs -@@ -9,7 +9,7 @@ import assert from "node:assert/strict"; - import { - ENGINE_V2_PROFILE_ERRORS, - processEngineV2ProfileState, --} from "../../../src/engine/runtime/engineV2ProfileStateSystem.js"; -+} from "../../../www/src/engine/runtime/engineV2ProfileStateSystem.js"; - import { createEngineV2PersistenceRuntimeFixture } from "./EngineV2PersistenceRuntimeFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/EngineV2ProjectileSystem.test.mjs b/dev/tests/engine/EngineV2ProjectileSystem.test.mjs -index d69e97543..4b55765c2 100644 ---- a/dev/tests/engine/EngineV2ProjectileSystem.test.mjs -+++ b/dev/tests/engine/EngineV2ProjectileSystem.test.mjs -@@ -9,7 +9,7 @@ import assert from "node:assert/strict"; - import { - ENGINE_V2_PROJECTILE_ERRORS, - resolveEngineV2Projectiles, --} from "../../../src/engine/runtime/engineV2ProjectileSystem.js"; -+} from "../../../www/src/engine/runtime/engineV2ProjectileSystem.js"; - import { createEngineV2CombatRuntimeFixture } from "./EngineV2CombatRuntimeFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/EngineV2QuestSystem.test.mjs b/dev/tests/engine/EngineV2QuestSystem.test.mjs -index aba557962..e93d67bcb 100644 ---- a/dev/tests/engine/EngineV2QuestSystem.test.mjs -+++ b/dev/tests/engine/EngineV2QuestSystem.test.mjs -@@ -6,11 +6,11 @@ EngineV2QuestSystem.test.mjs - */ - - import assert from "node:assert/strict"; --import { processEngineV2Objectives } from "../../../src/engine/runtime/engineV2ObjectiveSystem.js"; -+import { processEngineV2Objectives } from "../../../www/src/engine/runtime/engineV2ObjectiveSystem.js"; - import { - ENGINE_V2_QUEST_ERRORS, - processEngineV2Quests, --} from "../../../src/engine/runtime/engineV2QuestSystem.js"; -+} from "../../../www/src/engine/runtime/engineV2QuestSystem.js"; - import { createEngineV2PlayerRuntimeFixture } from "./EngineV2PlayerRuntimeFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/EngineV2SaveLoadValidation.test.mjs b/dev/tests/engine/EngineV2SaveLoadValidation.test.mjs -index cb323bd44..bf13ac352 100644 ---- a/dev/tests/engine/EngineV2SaveLoadValidation.test.mjs -+++ b/dev/tests/engine/EngineV2SaveLoadValidation.test.mjs -@@ -9,7 +9,7 @@ import assert from "node:assert/strict"; - import { - ENGINE_V2_SAVE_LOAD_ERRORS, - validateEngineV2SaveLoadFlow, --} from "../../../src/engine/runtime/engineV2SaveLoadValidation.js"; -+} from "../../../www/src/engine/runtime/engineV2SaveLoadValidation.js"; - import { createEngineV2FeatureCompleteFixture } from "./EngineV2FeatureCompleteFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/EngineV2SaveStateModel.test.mjs b/dev/tests/engine/EngineV2SaveStateModel.test.mjs -index c841ab327..ebe06169d 100644 ---- a/dev/tests/engine/EngineV2SaveStateModel.test.mjs -+++ b/dev/tests/engine/EngineV2SaveStateModel.test.mjs -@@ -9,7 +9,7 @@ import assert from "node:assert/strict"; - import { - ENGINE_V2_SAVE_STATE_ERRORS, - createEngineV2SaveState, --} from "../../../src/engine/runtime/engineV2SaveStateModel.js"; -+} from "../../../www/src/engine/runtime/engineV2SaveStateModel.js"; - import { createEngineV2PersistenceRuntimeFixture } from "./EngineV2PersistenceRuntimeFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/EngineV2StateMachineRuntime.test.mjs b/dev/tests/engine/EngineV2StateMachineRuntime.test.mjs -index b7ca10b6a..0a20b50d4 100644 ---- a/dev/tests/engine/EngineV2StateMachineRuntime.test.mjs -+++ b/dev/tests/engine/EngineV2StateMachineRuntime.test.mjs -@@ -9,7 +9,7 @@ import assert from "node:assert/strict"; - import { - ENGINE_V2_STATE_MACHINE_ERRORS, - processEngineV2StateMachineRuntime, --} from "../../../src/engine/runtime/engineV2StateMachineRuntime.js"; -+} from "../../../www/src/engine/runtime/engineV2StateMachineRuntime.js"; - import { createEngineV2FeatureCompleteFixture } from "./EngineV2FeatureCompleteFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/EngineV2StatusEffectSystem.test.mjs b/dev/tests/engine/EngineV2StatusEffectSystem.test.mjs -index 86e2f4f60..00fe32fec 100644 ---- a/dev/tests/engine/EngineV2StatusEffectSystem.test.mjs -+++ b/dev/tests/engine/EngineV2StatusEffectSystem.test.mjs -@@ -9,7 +9,7 @@ import assert from "node:assert/strict"; - import { - ENGINE_V2_STATUS_EFFECT_ERRORS, - processEngineV2StatusEffects, --} from "../../../src/engine/runtime/engineV2StatusEffectSystem.js"; -+} from "../../../www/src/engine/runtime/engineV2StatusEffectSystem.js"; - import { createEngineV2CombatRuntimeFixture } from "./EngineV2CombatRuntimeFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/EngineV2UiRuntime.test.mjs b/dev/tests/engine/EngineV2UiRuntime.test.mjs -index 1559c392c..e48a55b50 100644 ---- a/dev/tests/engine/EngineV2UiRuntime.test.mjs -+++ b/dev/tests/engine/EngineV2UiRuntime.test.mjs -@@ -9,7 +9,7 @@ import assert from "node:assert/strict"; - import { - ENGINE_V2_UI_ERRORS, - resolveEngineV2GameUi, --} from "../../../src/engine/runtime/engineV2UiRuntime.js"; -+} from "../../../www/src/engine/runtime/engineV2UiRuntime.js"; - import { createEngineV2FeatureCompleteFixture } from "./EngineV2FeatureCompleteFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/EngineV2VendorSystem.test.mjs b/dev/tests/engine/EngineV2VendorSystem.test.mjs -index 33702705c..c7fec7c63 100644 ---- a/dev/tests/engine/EngineV2VendorSystem.test.mjs -+++ b/dev/tests/engine/EngineV2VendorSystem.test.mjs -@@ -9,7 +9,7 @@ import assert from "node:assert/strict"; - import { - ENGINE_V2_VENDOR_ERRORS, - resolveEngineV2Vendor, --} from "../../../src/engine/runtime/engineV2VendorSystem.js"; -+} from "../../../www/src/engine/runtime/engineV2VendorSystem.js"; - import { createEngineV2InteractionRuntimeFixture } from "./EngineV2InteractionRuntimeFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/EngineV2WeaponSystem.test.mjs b/dev/tests/engine/EngineV2WeaponSystem.test.mjs -index 9c12a91ba..88d100446 100644 ---- a/dev/tests/engine/EngineV2WeaponSystem.test.mjs -+++ b/dev/tests/engine/EngineV2WeaponSystem.test.mjs -@@ -9,7 +9,7 @@ import assert from "node:assert/strict"; - import { - ENGINE_V2_WEAPON_ERRORS, - resolveEngineV2Weapons, --} from "../../../src/engine/runtime/engineV2WeaponSystem.js"; -+} from "../../../www/src/engine/runtime/engineV2WeaponSystem.js"; - import { createEngineV2CombatRuntimeFixture } from "./EngineV2CombatRuntimeFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/FirstManifestDrivenPlayableScene.test.mjs b/dev/tests/engine/FirstManifestDrivenPlayableScene.test.mjs -index 263b14994..d655db451 100644 ---- a/dev/tests/engine/FirstManifestDrivenPlayableScene.test.mjs -+++ b/dev/tests/engine/FirstManifestDrivenPlayableScene.test.mjs -@@ -8,7 +8,7 @@ import assert from "node:assert/strict"; - import { - FIRST_MANIFEST_DRIVEN_SCENE_ERRORS, - createFirstManifestDrivenPlayableScene, --} from "../../../src/engine/runtime/firstManifestDrivenPlayableScene.js"; -+} from "../../../www/src/engine/runtime/firstManifestDrivenPlayableScene.js"; - import { createManifestDrivenRuntimeFixture } from "./RuntimeManifestDrivenFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/HitboxCollisionContract.test.mjs b/dev/tests/engine/HitboxCollisionContract.test.mjs -index 829e55b34..6d095bc45 100644 ---- a/dev/tests/engine/HitboxCollisionContract.test.mjs -+++ b/dev/tests/engine/HitboxCollisionContract.test.mjs -@@ -5,7 +5,7 @@ import { - collisionTime, - normalizeBoundingBox, - sweptAabb, --} from "../../../src/engine/collision/hitboxCollision.js"; -+} from "../../../www/src/engine/collision/hitboxCollision.js"; - - export function run() { - const normalized = normalizeBoundingBox({ height: -8, width: 10, x: 5, y: 12 }); -diff --git a/dev/tests/engine/ManifestRuntimeParser.test.mjs b/dev/tests/engine/ManifestRuntimeParser.test.mjs -index 61108e018..f3810f680 100644 ---- a/dev/tests/engine/ManifestRuntimeParser.test.mjs -+++ b/dev/tests/engine/ManifestRuntimeParser.test.mjs -@@ -9,7 +9,7 @@ import { - MANIFEST_RUNTIME_PARSER_ERRORS, - MANIFEST_RUNTIME_SCHEMA, - parseManifestRuntimePayload, --} from "../../../src/engine/runtime/manifestRuntimeParser.js"; -+} from "../../../www/src/engine/runtime/manifestRuntimeParser.js"; - - export function createValidManifestRuntimePayload() { - return { -diff --git a/dev/tests/engine/ObjectDefinitionReader.test.mjs b/dev/tests/engine/ObjectDefinitionReader.test.mjs -index a66524a72..9743c450e 100644 ---- a/dev/tests/engine/ObjectDefinitionReader.test.mjs -+++ b/dev/tests/engine/ObjectDefinitionReader.test.mjs -@@ -11,7 +11,7 @@ import { - RUNTIME_OBJECT_TYPES, - isRuntimeObjectType, - readManifestObjectDefinitions, --} from "../../../src/engine/runtime/objectDefinitionReader.js"; -+} from "../../../www/src/engine/runtime/objectDefinitionReader.js"; - - export function createObjectDefinitionManifest() { - return { -diff --git a/dev/tests/engine/ObjectModelContract.test.mjs b/dev/tests/engine/ObjectModelContract.test.mjs -index 874622cc6..ea0dac9cc 100644 ---- a/dev/tests/engine/ObjectModelContract.test.mjs -+++ b/dev/tests/engine/ObjectModelContract.test.mjs -@@ -14,7 +14,7 @@ import { - getObjectModelType, - validateObjectDefinition, - validateObjectDefinitionList, --} from "../../../src/engine/object-model/index.js"; -+} from "../../../www/src/engine/object-model/index.js"; - - export function run() { - assert.deepEqual(OBJECT_MODEL_TYPE_LIST.map((objectType) => objectType.id), [ -diff --git a/dev/tests/engine/RuleDefinitionReader.test.mjs b/dev/tests/engine/RuleDefinitionReader.test.mjs -index 37198e78e..4321e9d76 100644 ---- a/dev/tests/engine/RuleDefinitionReader.test.mjs -+++ b/dev/tests/engine/RuleDefinitionReader.test.mjs -@@ -11,7 +11,7 @@ import { - RUNTIME_RULE_TYPES, - isRuntimeRuleType, - readManifestRuleDefinitions, --} from "../../../src/engine/runtime/ruleDefinitionReader.js"; -+} from "../../../www/src/engine/runtime/ruleDefinitionReader.js"; - - export function createRuleDefinitionManifest() { - return { -diff --git a/dev/tests/engine/RuntimeActionSystem.test.mjs b/dev/tests/engine/RuntimeActionSystem.test.mjs -index eb71bef3d..6ea6c14ce 100644 ---- a/dev/tests/engine/RuntimeActionSystem.test.mjs -+++ b/dev/tests/engine/RuntimeActionSystem.test.mjs -@@ -6,13 +6,13 @@ RuntimeActionSystem.test.mjs - */ - - import assert from "node:assert/strict"; --import { evaluateRuntimeConditions } from "../../../src/engine/runtime/runtimeConditionSystem.js"; --import { publishRuntimeEvents } from "../../../src/engine/runtime/runtimeEventSystem.js"; -+import { evaluateRuntimeConditions } from "../../../www/src/engine/runtime/runtimeConditionSystem.js"; -+import { publishRuntimeEvents } from "../../../www/src/engine/runtime/runtimeEventSystem.js"; - import { - RUNTIME_ACTION_ERRORS, - readManifestActionDefinitions, - resolveRuntimeActions, --} from "../../../src/engine/runtime/runtimeActionSystem.js"; -+} from "../../../www/src/engine/runtime/runtimeActionSystem.js"; - import { createRuntimeGameRuleFixture } from "./RuntimeGameRuleFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/RuntimeBehaviorComposition.test.mjs b/dev/tests/engine/RuntimeBehaviorComposition.test.mjs -index a9500251d..08e1d7d73 100644 ---- a/dev/tests/engine/RuntimeBehaviorComposition.test.mjs -+++ b/dev/tests/engine/RuntimeBehaviorComposition.test.mjs -@@ -8,12 +8,12 @@ import assert from "node:assert/strict"; - import { - RUNTIME_BEHAVIOR_COMPOSITION_ERRORS, - composeRuntimeBehavior, --} from "../../../src/engine/runtime/runtimeBehaviorComposition.js"; --import { readManifestObjectDefinitions } from "../../../src/engine/runtime/objectDefinitionReader.js"; --import { createRuntimeObjectRecords } from "../../../src/engine/runtime/runtimeObjectRecordFactory.js"; --import { instantiateEnvironmentForces } from "../../../src/engine/runtime/runtimeEnvironmentForceInstantiation.js"; --import { instantiateRuntimeObjects } from "../../../src/engine/runtime/runtimeObjectInstantiation.js"; --import { instantiateTerrainMaterials } from "../../../src/engine/runtime/runtimeTerrainMaterialInstantiation.js"; -+} from "../../../www/src/engine/runtime/runtimeBehaviorComposition.js"; -+import { readManifestObjectDefinitions } from "../../../www/src/engine/runtime/objectDefinitionReader.js"; -+import { createRuntimeObjectRecords } from "../../../www/src/engine/runtime/runtimeObjectRecordFactory.js"; -+import { instantiateEnvironmentForces } from "../../../www/src/engine/runtime/runtimeEnvironmentForceInstantiation.js"; -+import { instantiateRuntimeObjects } from "../../../www/src/engine/runtime/runtimeObjectInstantiation.js"; -+import { instantiateTerrainMaterials } from "../../../www/src/engine/runtime/runtimeTerrainMaterialInstantiation.js"; - import { createManifestDrivenRuntimeFixture } from "./RuntimeManifestDrivenFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/RuntimeCollisionProcessing.test.mjs b/dev/tests/engine/RuntimeCollisionProcessing.test.mjs -index 4e8517435..ff673343a 100644 ---- a/dev/tests/engine/RuntimeCollisionProcessing.test.mjs -+++ b/dev/tests/engine/RuntimeCollisionProcessing.test.mjs -@@ -8,7 +8,7 @@ import assert from "node:assert/strict"; - import { - RUNTIME_COLLISION_ERRORS, - processRuntimeCollisions, --} from "../../../src/engine/runtime/runtimeCollisionProcessing.js"; -+} from "../../../www/src/engine/runtime/runtimeCollisionProcessing.js"; - - export function run() { - const terrainTiles = [ -diff --git a/dev/tests/engine/RuntimeConditionSystem.test.mjs b/dev/tests/engine/RuntimeConditionSystem.test.mjs -index 9def5948d..db313a89a 100644 ---- a/dev/tests/engine/RuntimeConditionSystem.test.mjs -+++ b/dev/tests/engine/RuntimeConditionSystem.test.mjs -@@ -10,7 +10,7 @@ import { - RUNTIME_CONDITION_ERRORS, - evaluateRuntimeConditions, - readManifestConditionDefinitions, --} from "../../../src/engine/runtime/runtimeConditionSystem.js"; -+} from "../../../www/src/engine/runtime/runtimeConditionSystem.js"; - import { createRuntimeGameRuleFixture } from "./RuntimeGameRuleFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/RuntimeCooldownProcessing.test.mjs b/dev/tests/engine/RuntimeCooldownProcessing.test.mjs -index 3bd52c936..a89d79141 100644 ---- a/dev/tests/engine/RuntimeCooldownProcessing.test.mjs -+++ b/dev/tests/engine/RuntimeCooldownProcessing.test.mjs -@@ -9,7 +9,7 @@ import assert from "node:assert/strict"; - import { - RUNTIME_COOLDOWN_ERRORS, - processRuntimeCooldowns, --} from "../../../src/engine/runtime/runtimeCooldownProcessing.js"; -+} from "../../../www/src/engine/runtime/runtimeCooldownProcessing.js"; - import { createRuntimeHealthOutcomeFixture } from "./RuntimeHealthOutcomeFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/RuntimeDamageProcessing.test.mjs b/dev/tests/engine/RuntimeDamageProcessing.test.mjs -index 9f84cce68..d043562d7 100644 ---- a/dev/tests/engine/RuntimeDamageProcessing.test.mjs -+++ b/dev/tests/engine/RuntimeDamageProcessing.test.mjs -@@ -6,11 +6,11 @@ RuntimeDamageProcessing.test.mjs - */ - - import assert from "node:assert/strict"; --import { createRuntimeHealthRecords } from "../../../src/engine/runtime/runtimeHealthModel.js"; -+import { createRuntimeHealthRecords } from "../../../www/src/engine/runtime/runtimeHealthModel.js"; - import { - RUNTIME_DAMAGE_ERRORS, - processRuntimeDamage, --} from "../../../src/engine/runtime/runtimeDamageProcessing.js"; -+} from "../../../www/src/engine/runtime/runtimeDamageProcessing.js"; - import { createRuntimeHealthOutcomeFixture } from "./RuntimeHealthOutcomeFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/RuntimeDeterminismValidation.test.mjs b/dev/tests/engine/RuntimeDeterminismValidation.test.mjs -index 8c7f94121..fa086a78c 100644 ---- a/dev/tests/engine/RuntimeDeterminismValidation.test.mjs -+++ b/dev/tests/engine/RuntimeDeterminismValidation.test.mjs -@@ -5,7 +5,7 @@ David Quesenberry - RuntimeDeterminismValidation.test.mjs - */ - import assert from "node:assert/strict"; --import { createFirstManifestDrivenPlayableScene } from "../../../src/engine/runtime/firstManifestDrivenPlayableScene.js"; -+import { createFirstManifestDrivenPlayableScene } from "../../../www/src/engine/runtime/firstManifestDrivenPlayableScene.js"; - import { createManifestDrivenRuntimeFixture } from "./RuntimeManifestDrivenFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/RuntimeEnvironmentEffects.test.mjs b/dev/tests/engine/RuntimeEnvironmentEffects.test.mjs -index b6e001bd4..871a9fa40 100644 ---- a/dev/tests/engine/RuntimeEnvironmentEffects.test.mjs -+++ b/dev/tests/engine/RuntimeEnvironmentEffects.test.mjs -@@ -8,7 +8,7 @@ import assert from "node:assert/strict"; - import { - RUNTIME_ENVIRONMENT_EFFECT_ERRORS, - applyRuntimeEnvironmentEffects, --} from "../../../src/engine/runtime/runtimeEnvironmentEffects.js"; -+} from "../../../www/src/engine/runtime/runtimeEnvironmentEffects.js"; - - export function run() { - const runtimeObjects = [ -diff --git a/dev/tests/engine/RuntimeEnvironmentForceInstantiation.test.mjs b/dev/tests/engine/RuntimeEnvironmentForceInstantiation.test.mjs -index 92b48bf5a..f6db4f2fb 100644 ---- a/dev/tests/engine/RuntimeEnvironmentForceInstantiation.test.mjs -+++ b/dev/tests/engine/RuntimeEnvironmentForceInstantiation.test.mjs -@@ -8,7 +8,7 @@ import assert from "node:assert/strict"; - import { - RUNTIME_ENVIRONMENT_FORCE_ERRORS, - instantiateEnvironmentForces, --} from "../../../src/engine/runtime/runtimeEnvironmentForceInstantiation.js"; -+} from "../../../www/src/engine/runtime/runtimeEnvironmentForceInstantiation.js"; - import { createManifestDrivenRuntimeFixture } from "./RuntimeManifestDrivenFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/RuntimeErrorReporting.test.mjs b/dev/tests/engine/RuntimeErrorReporting.test.mjs -index 7cce56505..4a3db8dbc 100644 ---- a/dev/tests/engine/RuntimeErrorReporting.test.mjs -+++ b/dev/tests/engine/RuntimeErrorReporting.test.mjs -@@ -9,7 +9,7 @@ import { - RUNTIME_ERROR_REPORTING_ERRORS, - RUNTIME_ERROR_REPORT_STAGE_LIST, - createRuntimeErrorReport, --} from "../../../src/engine/runtime/runtimeErrorReporting.js"; -+} from "../../../www/src/engine/runtime/runtimeErrorReporting.js"; - - export function run() { - RUNTIME_ERROR_REPORT_STAGE_LIST.forEach((stage) => { -diff --git a/dev/tests/engine/RuntimeEventSystem.test.mjs b/dev/tests/engine/RuntimeEventSystem.test.mjs -index e047b1ab5..a1fdf1d8a 100644 ---- a/dev/tests/engine/RuntimeEventSystem.test.mjs -+++ b/dev/tests/engine/RuntimeEventSystem.test.mjs -@@ -6,11 +6,11 @@ RuntimeEventSystem.test.mjs - */ - - import assert from "node:assert/strict"; --import { evaluateRuntimeConditions } from "../../../src/engine/runtime/runtimeConditionSystem.js"; -+import { evaluateRuntimeConditions } from "../../../www/src/engine/runtime/runtimeConditionSystem.js"; - import { - RUNTIME_EVENT_ERRORS, - publishRuntimeEvents, --} from "../../../src/engine/runtime/runtimeEventSystem.js"; -+} from "../../../www/src/engine/runtime/runtimeEventSystem.js"; - import { createRuntimeGameRuleFixture } from "./RuntimeGameRuleFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/RuntimeHealthModel.test.mjs b/dev/tests/engine/RuntimeHealthModel.test.mjs -index 1fd73a459..4cdc446b2 100644 ---- a/dev/tests/engine/RuntimeHealthModel.test.mjs -+++ b/dev/tests/engine/RuntimeHealthModel.test.mjs -@@ -9,7 +9,7 @@ import assert from "node:assert/strict"; - import { - RUNTIME_HEALTH_ERRORS, - createRuntimeHealthRecords, --} from "../../../src/engine/runtime/runtimeHealthModel.js"; -+} from "../../../www/src/engine/runtime/runtimeHealthModel.js"; - import { createRuntimeHealthOutcomeFixture } from "./RuntimeHealthOutcomeFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/RuntimeInputPipeline.test.mjs b/dev/tests/engine/RuntimeInputPipeline.test.mjs -index c24069a71..c5ace7d97 100644 ---- a/dev/tests/engine/RuntimeInputPipeline.test.mjs -+++ b/dev/tests/engine/RuntimeInputPipeline.test.mjs -@@ -9,7 +9,7 @@ import { - RUNTIME_INPUT_PIPELINE_ERRORS, - createRuntimeInputPipeline, - resolveRuntimeInputActions, --} from "../../../src/engine/runtime/runtimeInputPipeline.js"; -+} from "../../../www/src/engine/runtime/runtimeInputPipeline.js"; - import { createManifestDrivenRuntimeFixture } from "./RuntimeManifestDrivenFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/RuntimeLivesAndRespawn.test.mjs b/dev/tests/engine/RuntimeLivesAndRespawn.test.mjs -index 73deb78a3..01905c12a 100644 ---- a/dev/tests/engine/RuntimeLivesAndRespawn.test.mjs -+++ b/dev/tests/engine/RuntimeLivesAndRespawn.test.mjs -@@ -9,7 +9,7 @@ import assert from "node:assert/strict"; - import { - RUNTIME_LIVES_RESPAWN_ERRORS, - processRuntimeLivesAndRespawn, --} from "../../../src/engine/runtime/runtimeLivesAndRespawn.js"; -+} from "../../../www/src/engine/runtime/runtimeLivesAndRespawn.js"; - import { createRuntimeHealthOutcomeFixture } from "./RuntimeHealthOutcomeFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/RuntimeLoaderValidation.test.mjs b/dev/tests/engine/RuntimeLoaderValidation.test.mjs -index 6df3243ee..e65980372 100644 ---- a/dev/tests/engine/RuntimeLoaderValidation.test.mjs -+++ b/dev/tests/engine/RuntimeLoaderValidation.test.mjs -@@ -8,15 +8,15 @@ import assert from "node:assert/strict"; - import { - MANIFEST_RUNTIME_PARSER_ERRORS, - parseManifestRuntimePayload, --} from "../../../src/engine/runtime/manifestRuntimeParser.js"; -+} from "../../../www/src/engine/runtime/manifestRuntimeParser.js"; - import { - OBJECT_DEFINITION_READER_ERRORS, - readManifestObjectDefinitions, --} from "../../../src/engine/runtime/objectDefinitionReader.js"; -+} from "../../../www/src/engine/runtime/objectDefinitionReader.js"; - import { - RULE_DEFINITION_READER_ERRORS, - readManifestRuleDefinitions, --} from "../../../src/engine/runtime/ruleDefinitionReader.js"; -+} from "../../../www/src/engine/runtime/ruleDefinitionReader.js"; - import { createValidManifestRuntimePayload } from "./ManifestRuntimeParser.test.mjs"; - - export function run() { -diff --git a/dev/tests/engine/RuntimeManifestFixtureHardening.test.mjs b/dev/tests/engine/RuntimeManifestFixtureHardening.test.mjs -index 749e64973..5ccf00459 100644 ---- a/dev/tests/engine/RuntimeManifestFixtureHardening.test.mjs -+++ b/dev/tests/engine/RuntimeManifestFixtureHardening.test.mjs -@@ -5,11 +5,11 @@ David Quesenberry - RuntimeManifestFixtureHardening.test.mjs - */ - import assert from "node:assert/strict"; --import { createFirstManifestDrivenPlayableScene } from "../../../src/engine/runtime/firstManifestDrivenPlayableScene.js"; --import { parseManifestRuntimePayload } from "../../../src/engine/runtime/manifestRuntimeParser.js"; --import { createRuntimeInputPipeline } from "../../../src/engine/runtime/runtimeInputPipeline.js"; --import { instantiateEnvironmentForces } from "../../../src/engine/runtime/runtimeEnvironmentForceInstantiation.js"; --import { instantiateTerrainMaterials } from "../../../src/engine/runtime/runtimeTerrainMaterialInstantiation.js"; -+import { createFirstManifestDrivenPlayableScene } from "../../../www/src/engine/runtime/firstManifestDrivenPlayableScene.js"; -+import { parseManifestRuntimePayload } from "../../../www/src/engine/runtime/manifestRuntimeParser.js"; -+import { createRuntimeInputPipeline } from "../../../www/src/engine/runtime/runtimeInputPipeline.js"; -+import { instantiateEnvironmentForces } from "../../../www/src/engine/runtime/runtimeEnvironmentForceInstantiation.js"; -+import { instantiateTerrainMaterials } from "../../../www/src/engine/runtime/runtimeTerrainMaterialInstantiation.js"; - import { - createInvalidEngineFixtures, - createValidEngineFixture, -diff --git a/dev/tests/engine/RuntimeMovementProcessing.test.mjs b/dev/tests/engine/RuntimeMovementProcessing.test.mjs -index fd0d42775..26bd8922b 100644 ---- a/dev/tests/engine/RuntimeMovementProcessing.test.mjs -+++ b/dev/tests/engine/RuntimeMovementProcessing.test.mjs -@@ -8,7 +8,7 @@ import assert from "node:assert/strict"; - import { - RUNTIME_MOVEMENT_ERRORS, - processRuntimeMovement, --} from "../../../src/engine/runtime/runtimeMovementProcessing.js"; -+} from "../../../www/src/engine/runtime/runtimeMovementProcessing.js"; - - export function run() { - const runtimeObjects = [ -diff --git a/dev/tests/engine/RuntimeMultiSceneLoading.test.mjs b/dev/tests/engine/RuntimeMultiSceneLoading.test.mjs -index c0dd56283..67f8b22cd 100644 ---- a/dev/tests/engine/RuntimeMultiSceneLoading.test.mjs -+++ b/dev/tests/engine/RuntimeMultiSceneLoading.test.mjs -@@ -10,7 +10,7 @@ import { - createRuntimeSceneRegistry, - loadRuntimeScene, - validateRuntimeSceneTransition, --} from "../../../src/engine/runtime/runtimeMultiSceneLoading.js"; -+} from "../../../www/src/engine/runtime/runtimeMultiSceneLoading.js"; - import { createRuntimeGameplayLoopManifest } from "./RuntimeGameplayLoopFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/RuntimeObjectDefaultRejection.test.mjs b/dev/tests/engine/RuntimeObjectDefaultRejection.test.mjs -index d888b5e43..9458ce13e 100644 ---- a/dev/tests/engine/RuntimeObjectDefaultRejection.test.mjs -+++ b/dev/tests/engine/RuntimeObjectDefaultRejection.test.mjs -@@ -9,7 +9,7 @@ import { - RUNTIME_OBJECT_RECORD_FACTORY_ERRORS, - RUNTIME_OBJECT_RECORD_FORBIDDEN_DEFAULT_FIELDS, - createRuntimeObjectRecord, --} from "../../../src/engine/runtime/runtimeObjectRecordFactory.js"; -+} from "../../../www/src/engine/runtime/runtimeObjectRecordFactory.js"; - - export function run() { - assertErrorCodes( -diff --git a/dev/tests/engine/RuntimeObjectInstantiation.test.mjs b/dev/tests/engine/RuntimeObjectInstantiation.test.mjs -index 2a0f81bbf..78e14ff12 100644 ---- a/dev/tests/engine/RuntimeObjectInstantiation.test.mjs -+++ b/dev/tests/engine/RuntimeObjectInstantiation.test.mjs -@@ -8,9 +8,9 @@ import assert from "node:assert/strict"; - import { - RUNTIME_OBJECT_INSTANTIATION_ERRORS, - instantiateRuntimeObjects, --} from "../../../src/engine/runtime/runtimeObjectInstantiation.js"; --import { readManifestObjectDefinitions } from "../../../src/engine/runtime/objectDefinitionReader.js"; --import { createRuntimeObjectRecords } from "../../../src/engine/runtime/runtimeObjectRecordFactory.js"; -+} from "../../../www/src/engine/runtime/runtimeObjectInstantiation.js"; -+import { readManifestObjectDefinitions } from "../../../www/src/engine/runtime/objectDefinitionReader.js"; -+import { createRuntimeObjectRecords } from "../../../www/src/engine/runtime/runtimeObjectRecordFactory.js"; - import { createManifestDrivenRuntimeFixture } from "./RuntimeManifestDrivenFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/RuntimeObjectRecordFactory.test.mjs b/dev/tests/engine/RuntimeObjectRecordFactory.test.mjs -index 55f1536ad..08345d276 100644 ---- a/dev/tests/engine/RuntimeObjectRecordFactory.test.mjs -+++ b/dev/tests/engine/RuntimeObjectRecordFactory.test.mjs -@@ -5,13 +5,13 @@ David Quesenberry - RuntimeObjectRecordFactory.test.mjs - */ - import assert from "node:assert/strict"; --import { RUNTIME_OBJECT_TYPE_LIST, readManifestObjectDefinitions } from "../../../src/engine/runtime/objectDefinitionReader.js"; -+import { RUNTIME_OBJECT_TYPE_LIST, readManifestObjectDefinitions } from "../../../www/src/engine/runtime/objectDefinitionReader.js"; - import { - RUNTIME_OBJECT_RECORD_FORBIDDEN_DEFAULT_FIELDS, - createRuntimeObjectRecord, - createRuntimeObjectRecords, - validateRuntimeObjectRecord, --} from "../../../src/engine/runtime/runtimeObjectRecordFactory.js"; -+} from "../../../www/src/engine/runtime/runtimeObjectRecordFactory.js"; - import { createObjectDefinitionManifest } from "./ObjectDefinitionReader.test.mjs"; - - export function run() { -diff --git a/dev/tests/engine/RuntimeObjectRecordValidation.test.mjs b/dev/tests/engine/RuntimeObjectRecordValidation.test.mjs -index a552aeb07..252e01520 100644 ---- a/dev/tests/engine/RuntimeObjectRecordValidation.test.mjs -+++ b/dev/tests/engine/RuntimeObjectRecordValidation.test.mjs -@@ -9,7 +9,7 @@ import { - RUNTIME_OBJECT_RECORD_FACTORY_ERRORS, - createRuntimeObjectRecord, - validateRuntimeObjectRecord, --} from "../../../src/engine/runtime/runtimeObjectRecordFactory.js"; -+} from "../../../www/src/engine/runtime/runtimeObjectRecordFactory.js"; - - export function run() { - const manifestDefinition = Object.freeze({ -diff --git a/dev/tests/engine/RuntimeObjectTypeValidation.test.mjs b/dev/tests/engine/RuntimeObjectTypeValidation.test.mjs -index 2c8289313..5cc3ad76d 100644 ---- a/dev/tests/engine/RuntimeObjectTypeValidation.test.mjs -+++ b/dev/tests/engine/RuntimeObjectTypeValidation.test.mjs -@@ -5,12 +5,12 @@ David Quesenberry - RuntimeObjectTypeValidation.test.mjs - */ - import assert from "node:assert/strict"; --import { RUNTIME_OBJECT_TYPE_LIST } from "../../../src/engine/runtime/objectDefinitionReader.js"; -+import { RUNTIME_OBJECT_TYPE_LIST } from "../../../www/src/engine/runtime/objectDefinitionReader.js"; - import { - RUNTIME_OBJECT_RECORD_FACTORY_ERRORS, - createRuntimeObjectRecord, - isRuntimeObjectRecordType, --} from "../../../src/engine/runtime/runtimeObjectRecordFactory.js"; -+} from "../../../www/src/engine/runtime/runtimeObjectRecordFactory.js"; - - export function run() { - RUNTIME_OBJECT_TYPE_LIST.forEach((objectType) => { -diff --git a/dev/tests/engine/RuntimeOutcomeProcessing.test.mjs b/dev/tests/engine/RuntimeOutcomeProcessing.test.mjs -index 23d7dbd4e..3dcdcb8cf 100644 ---- a/dev/tests/engine/RuntimeOutcomeProcessing.test.mjs -+++ b/dev/tests/engine/RuntimeOutcomeProcessing.test.mjs -@@ -9,7 +9,7 @@ import assert from "node:assert/strict"; - import { - RUNTIME_OUTCOME_ERRORS, - evaluateRuntimeOutcomes, --} from "../../../src/engine/runtime/runtimeOutcomeProcessing.js"; -+} from "../../../www/src/engine/runtime/runtimeOutcomeProcessing.js"; - import { createRuntimeHealthOutcomeFixture } from "./RuntimeHealthOutcomeFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/RuntimePlayableLoop.test.mjs b/dev/tests/engine/RuntimePlayableLoop.test.mjs -index ee1c8ef48..02096c6e2 100644 ---- a/dev/tests/engine/RuntimePlayableLoop.test.mjs -+++ b/dev/tests/engine/RuntimePlayableLoop.test.mjs -@@ -5,7 +5,7 @@ David Quesenberry - RuntimePlayableLoop.test.mjs - */ - import assert from "node:assert/strict"; --import { runRuntimePlayableFrame } from "../../../src/engine/runtime/runtimePlayableLoop.js"; -+import { runRuntimePlayableFrame } from "../../../www/src/engine/runtime/runtimePlayableLoop.js"; - - export function run() { - const world = Object.freeze({ -diff --git a/dev/tests/engine/RuntimePlayableSceneUat.test.mjs b/dev/tests/engine/RuntimePlayableSceneUat.test.mjs -index 54a9d3157..3277cfa95 100644 ---- a/dev/tests/engine/RuntimePlayableSceneUat.test.mjs -+++ b/dev/tests/engine/RuntimePlayableSceneUat.test.mjs -@@ -5,7 +5,7 @@ David Quesenberry - RuntimePlayableSceneUat.test.mjs - */ - import assert from "node:assert/strict"; --import { createFirstManifestDrivenPlayableScene } from "../../../src/engine/runtime/firstManifestDrivenPlayableScene.js"; -+import { createFirstManifestDrivenPlayableScene } from "../../../www/src/engine/runtime/firstManifestDrivenPlayableScene.js"; - import { - createInvalidEngineFixtures, - createValidEngineFixture, -diff --git a/dev/tests/engine/RuntimeRenderPipeline.test.mjs b/dev/tests/engine/RuntimeRenderPipeline.test.mjs -index c822845ef..0f289c864 100644 ---- a/dev/tests/engine/RuntimeRenderPipeline.test.mjs -+++ b/dev/tests/engine/RuntimeRenderPipeline.test.mjs -@@ -8,7 +8,7 @@ import assert from "node:assert/strict"; - import { - RUNTIME_RENDER_PIPELINE_ERRORS, - renderRuntimeFrame, --} from "../../../src/engine/runtime/runtimeRenderPipeline.js"; -+} from "../../../www/src/engine/runtime/runtimeRenderPipeline.js"; - - export function run() { - const renderState = Object.freeze({ -diff --git a/dev/tests/engine/RuntimeRenderingBootstrap.test.mjs b/dev/tests/engine/RuntimeRenderingBootstrap.test.mjs -index 9762989c6..7510dd205 100644 ---- a/dev/tests/engine/RuntimeRenderingBootstrap.test.mjs -+++ b/dev/tests/engine/RuntimeRenderingBootstrap.test.mjs -@@ -8,7 +8,7 @@ import assert from "node:assert/strict"; - import { - RUNTIME_RENDERING_BOOTSTRAP_ERRORS, - createRuntimeRenderingBootstrap, --} from "../../../src/engine/runtime/runtimeRenderingBootstrap.js"; -+} from "../../../www/src/engine/runtime/runtimeRenderingBootstrap.js"; - import { createManifestDrivenRuntimeFixture } from "./RuntimeManifestDrivenFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/RuntimeRuleAttachment.test.mjs b/dev/tests/engine/RuntimeRuleAttachment.test.mjs -index c1c9cd7f5..20b8d2838 100644 ---- a/dev/tests/engine/RuntimeRuleAttachment.test.mjs -+++ b/dev/tests/engine/RuntimeRuleAttachment.test.mjs -@@ -8,11 +8,11 @@ import assert from "node:assert/strict"; - import { - RUNTIME_RULE_ATTACHMENT_ERRORS, - attachRuntimeRules, --} from "../../../src/engine/runtime/runtimeRuleAttachment.js"; --import { readManifestObjectDefinitions } from "../../../src/engine/runtime/objectDefinitionReader.js"; --import { readManifestRuleDefinitions } from "../../../src/engine/runtime/ruleDefinitionReader.js"; --import { createRuntimeObjectRecords } from "../../../src/engine/runtime/runtimeObjectRecordFactory.js"; --import { instantiateRuntimeObjects } from "../../../src/engine/runtime/runtimeObjectInstantiation.js"; -+} from "../../../www/src/engine/runtime/runtimeRuleAttachment.js"; -+import { readManifestObjectDefinitions } from "../../../www/src/engine/runtime/objectDefinitionReader.js"; -+import { readManifestRuleDefinitions } from "../../../www/src/engine/runtime/ruleDefinitionReader.js"; -+import { createRuntimeObjectRecords } from "../../../www/src/engine/runtime/runtimeObjectRecordFactory.js"; -+import { instantiateRuntimeObjects } from "../../../www/src/engine/runtime/runtimeObjectInstantiation.js"; - import { createManifestDrivenRuntimeFixture } from "./RuntimeManifestDrivenFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/RuntimeSceneDefinitionSupport.test.mjs b/dev/tests/engine/RuntimeSceneDefinitionSupport.test.mjs -index 95d68e7dd..ab5ee5d35 100644 ---- a/dev/tests/engine/RuntimeSceneDefinitionSupport.test.mjs -+++ b/dev/tests/engine/RuntimeSceneDefinitionSupport.test.mjs -@@ -8,7 +8,7 @@ import assert from "node:assert/strict"; - import { - RUNTIME_SCENE_DEFINITION_ERRORS, - readManifestSceneDefinitions, --} from "../../../src/engine/runtime/runtimeSceneDefinitionSupport.js"; -+} from "../../../www/src/engine/runtime/runtimeSceneDefinitionSupport.js"; - import { createRuntimeGameplayLoopManifest } from "./RuntimeGameplayLoopFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/RuntimeScoringAndStateProcessing.test.mjs b/dev/tests/engine/RuntimeScoringAndStateProcessing.test.mjs -index 76fa48ef3..ef66a3ebd 100644 ---- a/dev/tests/engine/RuntimeScoringAndStateProcessing.test.mjs -+++ b/dev/tests/engine/RuntimeScoringAndStateProcessing.test.mjs -@@ -8,8 +8,8 @@ import assert from "node:assert/strict"; - import { - RUNTIME_SCORING_STATE_ERRORS, - processRuntimeScoringAndState, --} from "../../../src/engine/runtime/runtimeScoringAndStateProcessing.js"; --import { readManifestSceneDefinitions } from "../../../src/engine/runtime/runtimeSceneDefinitionSupport.js"; -+} from "../../../www/src/engine/runtime/runtimeScoringAndStateProcessing.js"; -+import { readManifestSceneDefinitions } from "../../../www/src/engine/runtime/runtimeSceneDefinitionSupport.js"; - import { createRuntimeGameplayLoopManifest } from "./RuntimeGameplayLoopFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/RuntimeSpawnDespawnProcessing.test.mjs b/dev/tests/engine/RuntimeSpawnDespawnProcessing.test.mjs -index d2a60d929..5283f361d 100644 ---- a/dev/tests/engine/RuntimeSpawnDespawnProcessing.test.mjs -+++ b/dev/tests/engine/RuntimeSpawnDespawnProcessing.test.mjs -@@ -5,14 +5,14 @@ David Quesenberry - RuntimeSpawnDespawnProcessing.test.mjs - */ - import assert from "node:assert/strict"; --import { readManifestObjectDefinitions } from "../../../src/engine/runtime/objectDefinitionReader.js"; --import { createRuntimeObjectRecords } from "../../../src/engine/runtime/runtimeObjectRecordFactory.js"; --import { instantiateRuntimeObjects } from "../../../src/engine/runtime/runtimeObjectInstantiation.js"; -+import { readManifestObjectDefinitions } from "../../../www/src/engine/runtime/objectDefinitionReader.js"; -+import { createRuntimeObjectRecords } from "../../../www/src/engine/runtime/runtimeObjectRecordFactory.js"; -+import { instantiateRuntimeObjects } from "../../../www/src/engine/runtime/runtimeObjectInstantiation.js"; - import { - RUNTIME_SPAWN_DESPAWN_ERRORS, - processRuntimeSpawnDespawn, --} from "../../../src/engine/runtime/runtimeSpawnDespawnProcessing.js"; --import { readManifestSceneDefinitions } from "../../../src/engine/runtime/runtimeSceneDefinitionSupport.js"; -+} from "../../../www/src/engine/runtime/runtimeSpawnDespawnProcessing.js"; -+import { readManifestSceneDefinitions } from "../../../www/src/engine/runtime/runtimeSceneDefinitionSupport.js"; - import { createRuntimeGameplayLoopManifest } from "./RuntimeGameplayLoopFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/RuntimeTerrainEffects.test.mjs b/dev/tests/engine/RuntimeTerrainEffects.test.mjs -index 108eb451a..e608bf334 100644 ---- a/dev/tests/engine/RuntimeTerrainEffects.test.mjs -+++ b/dev/tests/engine/RuntimeTerrainEffects.test.mjs -@@ -8,7 +8,7 @@ import assert from "node:assert/strict"; - import { - RUNTIME_TERRAIN_EFFECT_ERRORS, - applyRuntimeTerrainEffects, --} from "../../../src/engine/runtime/runtimeTerrainEffects.js"; -+} from "../../../www/src/engine/runtime/runtimeTerrainEffects.js"; - - export function run() { - const runtimeObjects = [ -diff --git a/dev/tests/engine/RuntimeTerrainMaterialInstantiation.test.mjs b/dev/tests/engine/RuntimeTerrainMaterialInstantiation.test.mjs -index 35e700597..e4536c26d 100644 ---- a/dev/tests/engine/RuntimeTerrainMaterialInstantiation.test.mjs -+++ b/dev/tests/engine/RuntimeTerrainMaterialInstantiation.test.mjs -@@ -8,7 +8,7 @@ import assert from "node:assert/strict"; - import { - RUNTIME_TERRAIN_MATERIAL_ERRORS, - instantiateTerrainMaterials, --} from "../../../src/engine/runtime/runtimeTerrainMaterialInstantiation.js"; -+} from "../../../www/src/engine/runtime/runtimeTerrainMaterialInstantiation.js"; - import { createManifestDrivenRuntimeFixture } from "./RuntimeManifestDrivenFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/RuntimeTickLoop.test.mjs b/dev/tests/engine/RuntimeTickLoop.test.mjs -index 3664ca702..b91ad2157 100644 ---- a/dev/tests/engine/RuntimeTickLoop.test.mjs -+++ b/dev/tests/engine/RuntimeTickLoop.test.mjs -@@ -9,7 +9,7 @@ import { - RUNTIME_TICK_LOOP_ERRORS, - advanceRuntimeTick, - createRuntimeTickLoop, --} from "../../../src/engine/runtime/runtimeTickLoop.js"; -+} from "../../../www/src/engine/runtime/runtimeTickLoop.js"; - - export function run() { - const startResult = createRuntimeTickLoop({ fixedDeltaMs: 100 }); -diff --git a/dev/tests/engine/RuntimeTriggerProcessing.test.mjs b/dev/tests/engine/RuntimeTriggerProcessing.test.mjs -index 9b8996f8d..8bf06b86c 100644 ---- a/dev/tests/engine/RuntimeTriggerProcessing.test.mjs -+++ b/dev/tests/engine/RuntimeTriggerProcessing.test.mjs -@@ -6,11 +6,11 @@ RuntimeTriggerProcessing.test.mjs - */ - - import assert from "node:assert/strict"; --import { RUNTIME_CONDITION_ERRORS } from "../../../src/engine/runtime/runtimeConditionSystem.js"; -+import { RUNTIME_CONDITION_ERRORS } from "../../../www/src/engine/runtime/runtimeConditionSystem.js"; - import { - RUNTIME_TRIGGER_PROCESSING_ERRORS, - processRuntimeTriggers, --} from "../../../src/engine/runtime/runtimeTriggerProcessing.js"; -+} from "../../../www/src/engine/runtime/runtimeTriggerProcessing.js"; - import { createRuntimeGameRuleFixture } from "./RuntimeGameRuleFixture.mjs"; - - export function run() { -diff --git a/dev/tests/engine/core/FixedTicker.test.mjs b/dev/tests/engine/core/FixedTicker.test.mjs -index 566633c2e..9b9859c8d 100644 ---- a/dev/tests/engine/core/FixedTicker.test.mjs -+++ b/dev/tests/engine/core/FixedTicker.test.mjs -@@ -5,7 +5,7 @@ David Quesenberry - FixedTicker.test.mjs - */ - import assert from "node:assert/strict"; --import FixedTicker from "../../../../src/engine/core/FixedTicker.js"; -+import FixedTicker from "../../../../www/src/engine/core/FixedTicker.js"; - - export function run() { - const ticker = new FixedTicker({ stepMs: 10, maxCatchUpSteps: 3 }); -diff --git a/dev/tests/engine/core/FrameClock.test.mjs b/dev/tests/engine/core/FrameClock.test.mjs -index cdb1c68b6..a51d771a2 100644 ---- a/dev/tests/engine/core/FrameClock.test.mjs -+++ b/dev/tests/engine/core/FrameClock.test.mjs -@@ -5,7 +5,7 @@ David Quesenberry - FrameClock.test.mjs - */ - import assert from "node:assert/strict"; --import FrameClock from "../../../../src/engine/core/FrameClock.js"; -+import FrameClock from "../../../../www/src/engine/core/FrameClock.js"; - - export function run() { - const clock = new FrameClock({ maxDeltaMs: 50 }); -diff --git a/dev/tests/engine/core/RuntimeMetrics.test.mjs b/dev/tests/engine/core/RuntimeMetrics.test.mjs -index be882226e..22723b684 100644 ---- a/dev/tests/engine/core/RuntimeMetrics.test.mjs -+++ b/dev/tests/engine/core/RuntimeMetrics.test.mjs -@@ -5,7 +5,7 @@ David Quesenberry - RuntimeMetrics.test.mjs - */ - import assert from 'node:assert/strict'; --import RuntimeMetrics from '../../../../src/engine/core/RuntimeMetrics.js'; -+import RuntimeMetrics from '../../../../www/src/engine/core/RuntimeMetrics.js'; - - export function run() { - const metrics = new RuntimeMetrics({ sampleWindowSeconds: 0.25 }); -diff --git a/dev/tests/entity/Entity.test.mjs b/dev/tests/entity/Entity.test.mjs -index 9893e5353..4b3376bf2 100644 ---- a/dev/tests/entity/Entity.test.mjs -+++ b/dev/tests/entity/Entity.test.mjs -@@ -4,10 +4,10 @@ David Quesenberry - 03/21/2026 - Entity.test.mjs - */ --import Entity from '../../../src/engine/entity/Entity.js'; --import Transform from '../../../src/engine/entity/Transform.js'; --import Velocity from '../../../src/engine/entity/Velocity.js'; --import Bounds from '../../../src/engine/entity/Bounds.js'; -+import Entity from '../../../www/src/engine/entity/Entity.js'; -+import Transform from '../../../www/src/engine/entity/Transform.js'; -+import Velocity from '../../../www/src/engine/entity/Velocity.js'; -+import Bounds from '../../../www/src/engine/entity/Bounds.js'; - - function assert(condition, message) { - if (!condition) { -diff --git a/dev/tests/events/EventBus.test.mjs b/dev/tests/events/EventBus.test.mjs -index 17b48393d..2fc8595e7 100644 ---- a/dev/tests/events/EventBus.test.mjs -+++ b/dev/tests/events/EventBus.test.mjs -@@ -5,7 +5,7 @@ David Quesenberry - EventBus.test.mjs - */ - import assert from 'node:assert/strict'; --import EventBus from '../../../src/engine/events/EventBus.js'; -+import EventBus from '../../../www/src/engine/events/EventBus.js'; - - export function run() { - const bus = new EventBus(); -diff --git a/dev/tests/events/EventBusNaming.test.mjs b/dev/tests/events/EventBusNaming.test.mjs -index f11de2e90..6636b45c4 100644 ---- a/dev/tests/events/EventBusNaming.test.mjs -+++ b/dev/tests/events/EventBusNaming.test.mjs -@@ -6,8 +6,8 @@ - */ - import assert from 'node:assert/strict'; - import { readdirSync, readFileSync } from 'node:fs'; --import Engine from '../../../src/engine/core/Engine.js'; --import EventBus from '../../../src/engine/events/EventBus.js'; -+import Engine from '../../../www/src/engine/core/Engine.js'; -+import EventBus from '../../../www/src/engine/events/EventBus.js'; - - function createCanvas() { - const canvas = { -@@ -66,13 +66,13 @@ function createEngine(overrides = {}) { - } - - export function run() { -- const eventFiles = readdirSync(new URL('../../../src/engine/events/', import.meta.url)); -+ const eventFiles = readdirSync(new URL('../../../www/src/engine/events/', import.meta.url)); - assert.equal(eventFiles.includes('EventBus.js'), true); - assert.equal(eventFiles.includes('eventBus.js'), false); - - [ -- '../../../src/engine/core/Engine.js', -- '../../../src/engine/events/index.js', -+ '../../../www/src/engine/core/Engine.js', -+ '../../../www/src/engine/events/EventBus.js', - '../../tests/events/EventBus.test.mjs', - '../../tests/world/WorldSystems.test.mjs', - ].forEach((relativePath) => { -diff --git a/dev/tests/final/DebugObservabilityMaturity.test.mjs b/dev/tests/final/DebugObservabilityMaturity.test.mjs -index bb5d207ed..ae47d0198 100644 ---- a/dev/tests/final/DebugObservabilityMaturity.test.mjs -+++ b/dev/tests/final/DebugObservabilityMaturity.test.mjs -@@ -5,12 +5,12 @@ David Quesenberry - DebugObservabilityMaturity.test.mjs - */ - import assert from "node:assert/strict"; --import { drawPerformanceMetricsPanel } from "../../../src/engine/debug/PerformanceMetricsPanel.js"; --import { create3dCollisionOverlaysPanel } from '../../../src/engine/debug/standard/threeD/panels/panel3dCollisionOverlays.js'; --import { createCollisionOverlaysProvider } from '../../../src/engine/debug/standard/threeD/providers/collisionOverlaysProvider.js'; --import { createAdvancedInspectorDebugPluginDefinition } from '../../../src/engine/debug/inspectors/bootstrap/createInspectorSurfaceIntegration.js'; --import { createNetworkObservabilityPanels } from '../../../src/engine/debug/network/panels/networkObservabilityPanels.js'; --import { drawActionInputDebugOverlay } from "../../../src/engine/input/ActionInputDebugOverlay.js"; -+import { drawPerformanceMetricsPanel } from "../../../www/src/engine/debug/PerformanceMetricsPanel.js"; -+import { create3dCollisionOverlaysPanel } from '../../../www/src/engine/debug/standard/threeD/panels/panel3dCollisionOverlays.js'; -+import { createCollisionOverlaysProvider } from '../../../www/src/engine/debug/standard/threeD/providers/collisionOverlaysProvider.js'; -+import { createAdvancedInspectorDebugPluginDefinition } from '../../../www/src/engine/debug/inspectors/bootstrap/createInspectorSurfaceIntegration.js'; -+import { createNetworkObservabilityPanels } from '../../../www/src/engine/debug/network/panels/networkObservabilityPanels.js'; -+import { drawActionInputDebugOverlay } from "../../../www/src/engine/input/ActionInputDebugOverlay.js"; - - function createRendererProbe() { - const texts = []; -diff --git a/dev/tests/final/DeveloperToolingSystems.test.mjs b/dev/tests/final/DeveloperToolingSystems.test.mjs -index ee0daefa4..d83ffb625 100644 ---- a/dev/tests/final/DeveloperToolingSystems.test.mjs -+++ b/dev/tests/final/DeveloperToolingSystems.test.mjs -@@ -5,12 +5,12 @@ David Quesenberry - DeveloperToolingSystems.test.mjs - */ - import assert from 'node:assert/strict'; --import AssetBrowser from '../../../src/shared/toolbox/tooling/AssetBrowser.js'; --import DeveloperConsole from '../../../src/shared/toolbox/tooling/DeveloperConsole.js'; --import LiveTuningService from '../../../src/shared/toolbox/tooling/LiveTuningService.js'; --import PropertyEditor from '../../../src/shared/toolbox/tooling/PropertyEditor.js'; --import RuntimeInspector from '../../../src/shared/toolbox/tooling/RuntimeInspector.js'; --import SceneGraphViewer from '../../../src/shared/toolbox/tooling/SceneGraphViewer.js'; -+import AssetBrowser from '../../../www/src/shared/toolbox/tooling/AssetBrowser.js'; -+import DeveloperConsole from '../../../www/src/shared/toolbox/tooling/DeveloperConsole.js'; -+import LiveTuningService from '../../../www/src/shared/toolbox/tooling/LiveTuningService.js'; -+import PropertyEditor from '../../../www/src/shared/toolbox/tooling/PropertyEditor.js'; -+import RuntimeInspector from '../../../www/src/shared/toolbox/tooling/RuntimeInspector.js'; -+import SceneGraphViewer from '../../../www/src/shared/toolbox/tooling/SceneGraphViewer.js'; - - export async function run() { - const consoleTool = new DeveloperConsole(); -diff --git a/dev/tests/final/EditorAutomationSecurityPipeline.test.mjs b/dev/tests/final/EditorAutomationSecurityPipeline.test.mjs -index 86ddff44c..df41b1e8a 100644 ---- a/dev/tests/final/EditorAutomationSecurityPipeline.test.mjs -+++ b/dev/tests/final/EditorAutomationSecurityPipeline.test.mjs -@@ -5,24 +5,24 @@ David Quesenberry - EditorAutomationSecurityPipeline.test.mjs - */ - import assert from 'node:assert/strict'; --import LevelEditor from '../../../src/shared/toolbox/editor/LevelEditor.js'; --import TileMapEditor from '../../../src/shared/toolbox/editor/TileMapEditor.js'; --import EntityPlacementEditor from '../../../src/shared/toolbox/editor/EntityPlacementEditor.js'; --import TimelineEditor from '../../../src/shared/toolbox/editor/TimelineEditor.js'; --import AutomatedTestRunner from '../../../src/engine/automation/AutomatedTestRunner.js'; --import RegressionPlaybackHarness from '../../../src/engine/automation/RegressionPlaybackHarness.js'; --import BenchmarkRunner from '../../../src/engine/automation/BenchmarkRunner.js'; --import CIValidationFlow from '../../../src/engine/automation/CIValidationFlow.js'; --import PacketValidator from '../../../src/engine/security/PacketValidator.js'; --import DataIntegrityService from '../../../src/engine/security/DataIntegrityService.js'; --import PermissionGate from '../../../src/engine/security/PermissionGate.js'; --import SessionTrustValidator from '../../../src/engine/security/SessionTrustValidator.js'; --import AssetImportPipeline from '../../../src/shared/toolbox/pipeline/AssetImportPipeline.js'; --import TexturePreprocessPipeline from '../../../src/shared/toolbox/pipeline/TexturePreprocessPipeline.js'; --import AudioPreprocessPipeline from '../../../src/shared/toolbox/pipeline/AudioPreprocessPipeline.js'; --import ContentMigrationSystem from '../../../src/shared/toolbox/pipeline/ContentMigrationSystem.js'; --import BuildAssetManifestSystem from '../../../src/shared/toolbox/pipeline/BuildAssetManifestSystem.js'; --import ContentValidationPipeline from '../../../src/shared/toolbox/pipeline/ContentValidationPipeline.js'; -+import LevelEditor from '../../../www/src/shared/toolbox/editor/LevelEditor.js'; -+import TileMapEditor from '../../../www/src/shared/toolbox/editor/TileMapEditor.js'; -+import EntityPlacementEditor from '../../../www/src/shared/toolbox/editor/EntityPlacementEditor.js'; -+import TimelineEditor from '../../../www/src/shared/toolbox/editor/TimelineEditor.js'; -+import AutomatedTestRunner from '../../../www/src/engine/automation/AutomatedTestRunner.js'; -+import RegressionPlaybackHarness from '../../../www/src/engine/automation/RegressionPlaybackHarness.js'; -+import BenchmarkRunner from '../../../www/src/engine/automation/BenchmarkRunner.js'; -+import CIValidationFlow from '../../../www/src/engine/automation/CIValidationFlow.js'; -+import PacketValidator from '../../../www/src/engine/security/PacketValidator.js'; -+import DataIntegrityService from '../../../www/src/engine/security/DataIntegrityService.js'; -+import PermissionGate from '../../../www/src/engine/security/PermissionGate.js'; -+import SessionTrustValidator from '../../../www/src/engine/security/SessionTrustValidator.js'; -+import AssetImportPipeline from '../../../www/src/shared/toolbox/pipeline/AssetImportPipeline.js'; -+import TexturePreprocessPipeline from '../../../www/src/shared/toolbox/pipeline/TexturePreprocessPipeline.js'; -+import AudioPreprocessPipeline from '../../../www/src/shared/toolbox/pipeline/AudioPreprocessPipeline.js'; -+import ContentMigrationSystem from '../../../www/src/shared/toolbox/pipeline/ContentMigrationSystem.js'; -+import BuildAssetManifestSystem from '../../../www/src/shared/toolbox/pipeline/BuildAssetManifestSystem.js'; -+import ContentValidationPipeline from '../../../www/src/shared/toolbox/pipeline/ContentValidationPipeline.js'; - - export async function run() { - const level = new LevelEditor({ width: 4, height: 3 }); -diff --git a/dev/tests/final/FinalSystems.test.mjs b/dev/tests/final/FinalSystems.test.mjs -index 40115de20..ef865333b 100644 ---- a/dev/tests/final/FinalSystems.test.mjs -+++ b/dev/tests/final/FinalSystems.test.mjs -@@ -5,10 +5,10 @@ David Quesenberry - FinalSystems.test.mjs - */ - import assert from 'node:assert/strict'; --import { compressJson, decompressJson } from '../../../src/engine/persistence/CompressionService.js'; --import ReplaySystem from '../../../src/engine/replay/ReplaySystem.js'; --import AchievementSystem from '../../../src/engine/world/AchievementSystem.js'; --import LocalizationService from '../../../src/engine/localization/LocalizationService.js'; -+import { compressJson, decompressJson } from '../../../www/src/engine/persistence/CompressionService.js'; -+import ReplaySystem from '../../../www/src/engine/replay/ReplaySystem.js'; -+import AchievementSystem from '../../../www/src/engine/world/AchievementSystem.js'; -+import LocalizationService from '../../../www/src/engine/localization/LocalizationService.js'; - - export function run() { - const compressed = compressJson({ hp: 3, coins: 12 }); -diff --git a/dev/tests/final/FullscreenService.test.mjs b/dev/tests/final/FullscreenService.test.mjs -index 8fbbb678e..6a1ad68a4 100644 ---- a/dev/tests/final/FullscreenService.test.mjs -+++ b/dev/tests/final/FullscreenService.test.mjs -@@ -5,7 +5,7 @@ David Quesenberry - FullscreenService.test.mjs - */ - import assert from 'node:assert/strict'; --import FullscreenService from '../../../src/engine/runtime/FullscreenService.js'; -+import FullscreenService from '../../../www/src/engine/runtime/FullscreenService.js'; - - export async function run() { - let fullscreenElement = null; -diff --git a/dev/tests/final/MultiplayerNetworkingStack.test.mjs b/dev/tests/final/MultiplayerNetworkingStack.test.mjs -index a19f20284..c7a7ab622 100644 ---- a/dev/tests/final/MultiplayerNetworkingStack.test.mjs -+++ b/dev/tests/final/MultiplayerNetworkingStack.test.mjs -@@ -5,35 +5,35 @@ David Quesenberry - MultiplayerNetworkingStack.test.mjs - */ - import assert from 'node:assert/strict'; --import AuthoritativeInputIngestionContract, { INPUT_INGESTION_REJECTION_CODES } from '../../../src/engine/network/server/AuthoritativeInputIngestionContract.js'; -+import AuthoritativeInputIngestionContract, { INPUT_INGESTION_REJECTION_CODES } from '../../../www/src/engine/network/server/AuthoritativeInputIngestionContract.js'; - import AuthoritativeServerRuntime, { - SERVER_RUNTIME_INGEST_REJECTION_CODES, - SERVER_RUNTIME_PHASES --} from '../../../src/engine/network/server/AuthoritativeServerRuntime.js'; --import ClientReplicationApplicationLayer from '../../../src/engine/network/client/ClientReplicationApplicationLayer.js'; --import ClientReconciliationStrategy, { REPLICATION_IGNORE_REASONS } from '../../../src/engine/network/client/ClientReconciliationStrategy.js'; --import ChatPresenceLayer from '../../../src/engine/network/session/ChatPresenceLayer.js'; --import HandshakeSimulator, { getHandshakeContract } from '../../../src/engine/network/session/HandshakeSimulator.js'; --import HostServerBootstrap from '../../../src/engine/network/bootstrap/HostServerBootstrap.js'; --import InterestManager from '../../../src/engine/network/server/InterestManager.js'; --import LoopbackTransport from '../../../src/engine/network/transport/LoopbackTransport.js'; --import NetworkConditionSimulator from '../../../src/engine/network/transport/NetworkConditionSimulator.js'; --import NetworkingLayer from '../../../src/engine/network/bootstrap/NetworkingLayer.js'; --import PredictionReconciler from '../../../src/engine/network/client/PredictionReconciler.js'; -+} from '../../../www/src/engine/network/server/AuthoritativeServerRuntime.js'; -+import ClientReplicationApplicationLayer from '../../../www/src/engine/network/client/ClientReplicationApplicationLayer.js'; -+import ClientReconciliationStrategy, { REPLICATION_IGNORE_REASONS } from '../../../www/src/engine/network/client/ClientReconciliationStrategy.js'; -+import ChatPresenceLayer from '../../../www/src/engine/network/session/ChatPresenceLayer.js'; -+import HandshakeSimulator, { getHandshakeContract } from '../../../www/src/engine/network/session/HandshakeSimulator.js'; -+import HostServerBootstrap from '../../../www/src/engine/network/bootstrap/HostServerBootstrap.js'; -+import InterestManager from '../../../www/src/engine/network/server/InterestManager.js'; -+import LoopbackTransport from '../../../www/src/engine/network/transport/LoopbackTransport.js'; -+import NetworkConditionSimulator from '../../../www/src/engine/network/transport/NetworkConditionSimulator.js'; -+import NetworkingLayer from '../../../www/src/engine/network/bootstrap/NetworkingLayer.js'; -+import PredictionReconciler from '../../../www/src/engine/network/client/PredictionReconciler.js'; - import ReplicationMessageContract, { - REPLICATION_MESSAGE_REJECTION_CODES, - REPLICATION_SNAPSHOT_TYPES --} from '../../../src/engine/network/replication/ReplicationMessageContract.js'; --import RemoteInterpolationBuffer from '../../../src/engine/network/client/RemoteInterpolationBuffer.js'; --import RollbackDiagnostics from '../../../src/engine/network/server/RollbackDiagnostics.js'; -+} from '../../../www/src/engine/network/replication/ReplicationMessageContract.js'; -+import RemoteInterpolationBuffer from '../../../www/src/engine/network/client/RemoteInterpolationBuffer.js'; -+import RollbackDiagnostics from '../../../www/src/engine/network/server/RollbackDiagnostics.js'; - import { - SESSION_STATES, - createSessionLifecycle, - getSessionLifecycleContract --} from '../../../src/engine/network/session/SessionLifecycleContract.js'; --import Serializer from '../../../src/engine/network/transport/Serializer.js'; --import StateReplication from '../../../src/engine/network/replication/StateReplication.js'; --import { getTransportContract } from '../../../src/engine/network/transport/TransportContract.js'; -+} from '../../../www/src/engine/network/session/SessionLifecycleContract.js'; -+import Serializer from '../../../www/src/engine/network/transport/Serializer.js'; -+import StateReplication from '../../../www/src/engine/network/replication/StateReplication.js'; -+import { getTransportContract } from '../../../www/src/engine/network/transport/TransportContract.js'; - - export async function run() { - const serializer = new Serializer({ version: 2 }); -diff --git a/dev/tests/final/NetworkDebugAndServerDashboardCloseout.test.mjs b/dev/tests/final/NetworkDebugAndServerDashboardCloseout.test.mjs -index 7f30b7fb7..7dbcf188c 100644 ---- a/dev/tests/final/NetworkDebugAndServerDashboardCloseout.test.mjs -+++ b/dev/tests/final/NetworkDebugAndServerDashboardCloseout.test.mjs -@@ -5,15 +5,15 @@ David Quesenberry - NetworkDebugAndServerDashboardCloseout.test.mjs - */ - import assert from "node:assert/strict"; --import { createLatencyDiagnosticsModel } from '../../../src/engine/debug/network/diagnostics/latencyDiagnosticsModel.js'; --import { createReplicationDiagnosticsModel } from '../../../src/engine/debug/network/diagnostics/replicationDiagnosticsModel.js'; --import { createLatencyRttPanel, createReplicationStatePanel, createNetworkObservabilityPanels } from '../../../src/engine/debug/network/panels/networkObservabilityPanels.js'; --import { createNetworkHelpCommand, createNetworkReplicationCommand, createNetworkStatusCommand, createNetworkCommandPack } from '../../../src/engine/debug/network/commands/networkDebugCommandPackBridge.js'; --import { createReadOnlyNetworkProviders } from '../../../src/engine/debug/network/providers/networkDebugProviderRegistry.js'; --import { createServerDashboardRegistry } from '../../../src/engine/debug/network/dashboard/serverDashboardRegistry.js'; --import { createServerDashboardHost } from '../../../src/engine/debug/network/dashboard/serverDashboardHost.js'; --import { createServerDashboardCommandPack } from '../../../src/engine/debug/network/dashboard/registerDashboardCommands.js'; --import { createNetworkPromotionRecommendation } from '../../../src/engine/debug/network/diagnostics/networkPromotionRecommendation.js'; -+import { createLatencyDiagnosticsModel } from '../../../www/src/engine/debug/network/diagnostics/latencyDiagnosticsModel.js'; -+import { createReplicationDiagnosticsModel } from '../../../www/src/engine/debug/network/diagnostics/replicationDiagnosticsModel.js'; -+import { createLatencyRttPanel, createReplicationStatePanel, createNetworkObservabilityPanels } from '../../../www/src/engine/debug/network/panels/networkObservabilityPanels.js'; -+import { createNetworkHelpCommand, createNetworkReplicationCommand, createNetworkStatusCommand, createNetworkCommandPack } from '../../../www/src/engine/debug/network/commands/networkDebugCommandPackBridge.js'; -+import { createReadOnlyNetworkProviders } from '../../../www/src/engine/debug/network/providers/networkDebugProviderRegistry.js'; -+import { createServerDashboardRegistry } from '../../../www/src/engine/debug/network/dashboard/serverDashboardRegistry.js'; -+import { createServerDashboardHost } from '../../../www/src/engine/debug/network/dashboard/serverDashboardHost.js'; -+import { createServerDashboardCommandPack } from '../../../www/src/engine/debug/network/dashboard/registerDashboardCommands.js'; -+import { createNetworkPromotionRecommendation } from '../../../www/src/engine/debug/network/diagnostics/networkPromotionRecommendation.js'; - - function createSampleSnapshot() { - return { -diff --git a/dev/tests/final/PlatformUxSystems.test.mjs b/dev/tests/final/PlatformUxSystems.test.mjs -index ad0acf088..d78fb8c78 100644 ---- a/dev/tests/final/PlatformUxSystems.test.mjs -+++ b/dev/tests/final/PlatformUxSystems.test.mjs -@@ -5,21 +5,21 @@ David Quesenberry - PlatformUxSystems.test.mjs - */ - import assert from 'node:assert/strict'; --import AudioService from '../../../src/engine/audio/AudioService.js'; --import MidiPlayer from '../../../src/engine/audio/MidiPlayer.js'; --import FrequencyPlayer from '../../../src/engine/audio/FrequencyPlayer.js'; --import Synthesizer from '../../../src/engine/audio/Synthesizer.js'; --import MediaTrackService from '../../../src/engine/audio/MediaTrackService.js'; --import PlaylistManager from '../../../src/engine/audio/PlaylistManager.js'; --import ParticleSystem from '../../../src/engine/fx/ParticleSystem.js'; --import UIFramework from '../../../src/engine/ui/UIFramework.js'; --import InputContextService from '../../../src/engine/input/InputContextService.js'; --import SceneTransitionController from '../../../src/engine/scene/SceneTransitionController.js'; --import SaveSlotManager from '../../../src/engine/persistence/SaveSlotManager.js'; --import StorageService from '../../../src/engine/persistence/StorageService.js'; --import CookieStorageService from '../../../src/engine/persistence/CookieStorageService.js'; --import Logger from '../../../src/engine/logging/Logger.js'; --import ErrorBoundary from '../../../src/engine/logging/ErrorBoundary.js'; -+import AudioService from '../../../www/src/engine/audio/AudioService.js'; -+import MidiPlayer from '../../../www/src/engine/audio/MidiPlayer.js'; -+import FrequencyPlayer from '../../../www/src/engine/audio/FrequencyPlayer.js'; -+import Synthesizer from '../../../www/src/engine/audio/Synthesizer.js'; -+import MediaTrackService from '../../../www/src/engine/audio/MediaTrackService.js'; -+import PlaylistManager from '../../../www/src/engine/audio/PlaylistManager.js'; -+import ParticleSystem from '../../../www/src/engine/fx/ParticleSystem.js'; -+import UIFramework from '../../../www/src/engine/ui/UIFramework.js'; -+import InputContextService from '../../../www/src/engine/input/InputContextService.js'; -+import SceneTransitionController from '../../../www/src/engine/scene/SceneTransitionController.js'; -+import SaveSlotManager from '../../../www/src/engine/persistence/SaveSlotManager.js'; -+import StorageService from '../../../www/src/engine/persistence/StorageService.js'; -+import CookieStorageService from '../../../www/src/engine/persistence/CookieStorageService.js'; -+import Logger from '../../../www/src/engine/logging/Logger.js'; -+import ErrorBoundary from '../../../www/src/engine/logging/ErrorBoundary.js'; - - class MemoryStorage { - constructor() { -diff --git a/dev/tests/final/PrecisionCollisionSystems.test.mjs b/dev/tests/final/PrecisionCollisionSystems.test.mjs -index f54d4420c..6696bf874 100644 ---- a/dev/tests/final/PrecisionCollisionSystems.test.mjs -+++ b/dev/tests/final/PrecisionCollisionSystems.test.mjs -@@ -5,11 +5,11 @@ David Quesenberry - PrecisionCollisionSystems.test.mjs - */ - import assert from 'node:assert/strict'; --import { transformPoints } from '../../../src/engine/rendering/VectorDrawing.js'; --import { arePolygonsColliding, isPointInPolygon, getPolygonBounds } from '../../../src/engine/collision/polygon.js'; --import { createRasterMask, areMasksColliding } from '../../../src/engine/collision/raster.js'; --import { evaluateObjectVectorCollisionPair, getObjectVectorCollisionOutlinePoints, transformCollisionPoints } from '../../../src/engine/collision/objectVector.js'; --import { runHybridCollision } from '../../../src/engine/collision/hybrid.js'; -+import { transformPoints } from '../../../www/src/engine/rendering/VectorDrawing.js'; -+import { arePolygonsColliding, isPointInPolygon, getPolygonBounds } from '../../../www/src/engine/collision/polygon.js'; -+import { createRasterMask, areMasksColliding } from '../../../www/src/engine/collision/raster.js'; -+import { evaluateObjectVectorCollisionPair, getObjectVectorCollisionOutlinePoints, transformCollisionPoints } from '../../../www/src/engine/collision/objectVector.js'; -+import { runHybridCollision } from '../../../www/src/engine/collision/hybrid.js'; - - export function run() { - const transformed = transformPoints( -@@ -130,7 +130,7 @@ export function run() { - }); - assert.equal(objectVectorHit.mode, 'vector'); - assert.equal(objectVectorHit.collided, true); -- assert.equal(objectVectorHit.enginePath, 'src/engine/collision/objectVector.js'); -+ assert.equal(objectVectorHit.enginePath, 'www/src/engine/collision/objectVector.js'); - assert.equal(getObjectVectorCollisionOutlinePoints(objectA).length, polyA.length); - const collisionTransform = transformCollisionPoints([{ x: 10, y: 0 }], { x: 4, y: 5, rotation: Math.PI / 2 }); - assert.equal(Math.abs(collisionTransform[0].x - 4) < 1e-9, true); -diff --git a/dev/tests/final/ReleaseReadinessSystems.test.mjs b/dev/tests/final/ReleaseReadinessSystems.test.mjs -index 0b6d03b35..20ddbb21c 100644 ---- a/dev/tests/final/ReleaseReadinessSystems.test.mjs -+++ b/dev/tests/final/ReleaseReadinessSystems.test.mjs -@@ -5,14 +5,14 @@ David Quesenberry - ReleaseReadinessSystems.test.mjs - */ - import assert from 'node:assert/strict'; --import AccessibilityOptions from '../../../src/engine/release/AccessibilityOptions.js'; --import CrashRecoveryManager from '../../../src/engine/release/CrashRecoveryManager.js'; --import DeploymentProfiles from '../../../src/engine/release/DeploymentProfiles.js'; --import DistributionPackager from '../../../src/engine/release/DistributionPackager.js'; --import ReleaseValidationChecklist from '../../../src/engine/release/ReleaseValidationChecklist.js'; --import SettingsSystem from '../../../src/engine/release/SettingsSystem.js'; --import Logger from '../../../src/engine/logging/Logger.js'; --import StorageService from '../../../src/engine/persistence/StorageService.js'; -+import AccessibilityOptions from '../../../www/src/engine/release/AccessibilityOptions.js'; -+import CrashRecoveryManager from '../../../www/src/engine/release/CrashRecoveryManager.js'; -+import DeploymentProfiles from '../../../www/src/engine/release/DeploymentProfiles.js'; -+import DistributionPackager from '../../../www/src/engine/release/DistributionPackager.js'; -+import ReleaseValidationChecklist from '../../../www/src/engine/release/ReleaseValidationChecklist.js'; -+import SettingsSystem from '../../../www/src/engine/release/SettingsSystem.js'; -+import Logger from '../../../www/src/engine/logging/Logger.js'; -+import StorageService from '../../../www/src/engine/persistence/StorageService.js'; - - class MemoryStorage { - constructor() { -diff --git a/dev/tests/fx/ParticleSystem.test.mjs b/dev/tests/fx/ParticleSystem.test.mjs -index cb59337ef..1df5846cc 100644 ---- a/dev/tests/fx/ParticleSystem.test.mjs -+++ b/dev/tests/fx/ParticleSystem.test.mjs -@@ -5,7 +5,7 @@ - ParticleSystem.test.mjs - */ - import assert from 'node:assert/strict'; --import ParticleSystem from '../../../src/engine/fx/ParticleSystem.js'; -+import ParticleSystem from '../../../www/src/engine/fx/ParticleSystem.js'; - - function createSequenceRandom(values) { - let index = 0; -diff --git a/dev/tests/games/AsteroidsHardening.test.mjs b/dev/tests/games/AsteroidsHardening.test.mjs -index 6ee9a4714..6a01df9ff 100644 ---- a/dev/tests/games/AsteroidsHardening.test.mjs -+++ b/dev/tests/games/AsteroidsHardening.test.mjs -@@ -5,7 +5,7 @@ David Quesenberry - AsteroidsHardening.test.mjs - */ - import assert from 'node:assert/strict'; --import { wrap } from '../../../src/shared/math/scalars.js'; -+import { wrap } from '../../../www/src/shared/math/scalars.js'; - import AsteroidsGameScene from '../../../games/Asteroids/game/AsteroidsGameScene.js'; - import AsteroidsSession from '../../../games/Asteroids/game/AsteroidsSession.js'; - import AsteroidsWorld from '../../../games/Asteroids/game/AsteroidsWorld.js'; -diff --git a/dev/tests/games/AsteroidsPlatformDemo.test.mjs b/dev/tests/games/AsteroidsPlatformDemo.test.mjs -index 0058b9092..5f42d1b19 100644 ---- a/dev/tests/games/AsteroidsPlatformDemo.test.mjs -+++ b/dev/tests/games/AsteroidsPlatformDemo.test.mjs -@@ -1,7 +1,7 @@ - import assert from 'node:assert/strict'; - import fs from 'node:fs'; - import { fileURLToPath } from 'node:url'; --import ObjectVectorRuntimeAssetService from '../../../src/engine/rendering/ObjectVectorRuntimeAssetService.js'; -+import ObjectVectorRuntimeAssetService from '../../../www/src/engine/rendering/ObjectVectorRuntimeAssetService.js'; - import { - createAsteroidsTestGeometryProfiles, - loadAsteroidsManifest, -diff --git a/dev/tests/games/AsteroidsValidation.test.mjs b/dev/tests/games/AsteroidsValidation.test.mjs -index ad2f2c9b9..63fb358d8 100644 ---- a/dev/tests/games/AsteroidsValidation.test.mjs -+++ b/dev/tests/games/AsteroidsValidation.test.mjs -@@ -5,7 +5,7 @@ - AsteroidsValidation.test.mjs - */ - import assert from 'node:assert/strict'; --import Engine from '../../../src/engine/core/Engine.js'; -+import Engine from '../../../www/src/engine/core/Engine.js'; - import AsteroidsGameScene from '../../../games/Asteroids/game/AsteroidsGameScene.js'; - import AsteroidsSession from '../../../games/Asteroids/game/AsteroidsSession.js'; - import AsteroidsWorld from '../../../games/Asteroids/game/AsteroidsWorld.js'; -diff --git a/dev/tests/helpers/runtimeSceneLoaderHotReload.helpers.mjs b/dev/tests/helpers/runtimeSceneLoaderHotReload.helpers.mjs -index af861e628..ad8ff90d6 100644 ---- a/dev/tests/helpers/runtimeSceneLoaderHotReload.helpers.mjs -+++ b/dev/tests/helpers/runtimeSceneLoaderHotReload.helpers.mjs -@@ -3,12 +3,12 @@ import { - createHotReloadCoordinator, - createWatcherBridge, - summarizeRuntimeSceneHotReload --} from "../../../src/shared/toolbox/runtimeSceneLoaderHotReload.js"; -+} from "../../../www/src/shared/toolbox/runtimeSceneLoaderHotReload.js"; - import { - ASSET_DOCUMENT_TYPE, - COMPOSITION_DOCUMENT_TYPE, - RENDER_CONTRACT_VERSION --} from "../../../src/shared/toolbox/renderPipelineContract.js"; -+} from "../../../www/src/shared/toolbox/renderPipelineContract.js"; - - function createAssetDocument(tool, docId, kind, path, zIndex = 0, itemOrder = [0]) { - return { -diff --git a/dev/tests/input/GamepadHapticsService.test.mjs b/dev/tests/input/GamepadHapticsService.test.mjs -index 1f3ffaa34..228d8f699 100644 ---- a/dev/tests/input/GamepadHapticsService.test.mjs -+++ b/dev/tests/input/GamepadHapticsService.test.mjs -@@ -5,7 +5,7 @@ David Quesenberry - GamepadHapticsService.test.mjs - */ - --import GamepadHapticsService from '../../../src/engine/input/GamepadHapticsService.js'; -+import GamepadHapticsService from '../../../www/src/engine/input/GamepadHapticsService.js'; - - function assert(condition, message) { - if (!condition) { -diff --git a/dev/tests/input/GamepadInputAdapter.test.mjs b/dev/tests/input/GamepadInputAdapter.test.mjs -index e3a4e45db..16b0b7cf0 100644 ---- a/dev/tests/input/GamepadInputAdapter.test.mjs -+++ b/dev/tests/input/GamepadInputAdapter.test.mjs -@@ -5,7 +5,7 @@ David Quesenberry - GamepadInputAdapter.test.mjs - */ - import assert from 'node:assert/strict'; --import GamepadInputAdapter from '../../../src/engine/input/GamepadInputAdapter.js'; -+import GamepadInputAdapter from '../../../www/src/engine/input/GamepadInputAdapter.js'; - - function createInputService({ - axes = [0, 0, 0, 0], -diff --git a/dev/tests/input/GamepadState.test.mjs b/dev/tests/input/GamepadState.test.mjs -index fbd3f8773..0eb05828f 100644 ---- a/dev/tests/input/GamepadState.test.mjs -+++ b/dev/tests/input/GamepadState.test.mjs -@@ -5,7 +5,7 @@ David Quesenberry - GamepadState.test.mjs - */ - import assert from 'node:assert/strict'; --import GamepadState from '../../../src/engine/input/GamepadState.js'; -+import GamepadState from '../../../www/src/engine/input/GamepadState.js'; - - function testStoresMultipleConcurrentGamepads() { - const gamepads = new GamepadState(); -diff --git a/dev/tests/input/InputMap.test.mjs b/dev/tests/input/InputMap.test.mjs -index ecfc4ec07..dce7af42b 100644 ---- a/dev/tests/input/InputMap.test.mjs -+++ b/dev/tests/input/InputMap.test.mjs -@@ -4,7 +4,7 @@ David Quesenberry - 03/21/2026 - InputMap.test.mjs - */ --import InputMap from '../../../src/engine/input/InputMap.js'; -+import InputMap from '../../../www/src/engine/input/InputMap.js'; - - function assert(condition, message) { - if (!condition) { -diff --git a/dev/tests/input/InputService.test.mjs b/dev/tests/input/InputService.test.mjs -index 6ad459693..b88942814 100644 ---- a/dev/tests/input/InputService.test.mjs -+++ b/dev/tests/input/InputService.test.mjs -@@ -4,8 +4,8 @@ David Quesenberry - 03/21/2026 - InputService.test.mjs - */ --import InputService from '../../../src/engine/input/InputService.js'; --import InputMap from '../../../src/engine/input/InputMap.js'; -+import InputService from '../../../www/src/engine/input/InputService.js'; -+import InputMap from '../../../www/src/engine/input/InputMap.js'; - - function assert(condition, message) { - if (!condition) { -diff --git a/dev/tests/input/KeyboardState.test.mjs b/dev/tests/input/KeyboardState.test.mjs -index 7f141c084..0febee36b 100644 ---- a/dev/tests/input/KeyboardState.test.mjs -+++ b/dev/tests/input/KeyboardState.test.mjs -@@ -4,7 +4,7 @@ David Quesenberry - 03/21/2026 - KeyboardState.test.mjs - */ --import KeyboardState from '../../../src/engine/input/KeyboardState.js'; -+import KeyboardState from '../../../www/src/engine/input/KeyboardState.js'; - - function assert(condition, message) { - if (!condition) { -diff --git a/dev/tests/input/MouseState.test.mjs b/dev/tests/input/MouseState.test.mjs -index 9567d3c1e..a71b2be73 100644 ---- a/dev/tests/input/MouseState.test.mjs -+++ b/dev/tests/input/MouseState.test.mjs -@@ -4,7 +4,7 @@ David Quesenberry - 03/21/2026 - MouseState.test.mjs - */ --import MouseState from '../../../src/engine/input/MouseState.js'; -+import MouseState from '../../../www/src/engine/input/MouseState.js'; - - function assert(condition, message) { - if (!condition) { -diff --git a/dev/tests/input/NormalizedInputRegistry.test.mjs b/dev/tests/input/NormalizedInputRegistry.test.mjs -index 7d4f306ae..bf97e8f05 100644 ---- a/dev/tests/input/NormalizedInputRegistry.test.mjs -+++ b/dev/tests/input/NormalizedInputRegistry.test.mjs -@@ -16,7 +16,7 @@ import { - resolveNormalizedInputProfile, - resolvePhysicalAxisNormalizedInput, - systemDefaultProfileForDevice, --} from '../../../src/engine/input/NormalizedInputRegistry.js'; -+} from '../../../www/src/engine/input/NormalizedInputRegistry.js'; - - function testRegistryContainsPlayableNormalizedInputs() { - assert.deepEqual(normalizedInputOptions().map((option) => option.value), [ -diff --git a/dev/tests/persistence/StorageService.test.mjs b/dev/tests/persistence/StorageService.test.mjs -index 099960e4f..ffa3b365f 100644 ---- a/dev/tests/persistence/StorageService.test.mjs -+++ b/dev/tests/persistence/StorageService.test.mjs -@@ -5,8 +5,8 @@ - StorageService.test.mjs - */ - import assert from 'node:assert/strict'; --import StorageService from '../../../src/engine/persistence/StorageService.js'; --import SettingsSystem from '../../../src/engine/release/SettingsSystem.js'; -+import StorageService from '../../../www/src/engine/persistence/StorageService.js'; -+import SettingsSystem from '../../../www/src/engine/release/SettingsSystem.js'; - - function withBlockedLocalStorage(run) { - const originalDescriptor = Object.getOwnPropertyDescriptor(globalThis, 'localStorage'); -diff --git a/dev/tests/playwright/tools/AdminNotesLocalViewer.spec.mjs b/dev/tests/playwright/tools/AdminNotesLocalViewer.spec.mjs -index 363be32b3..51a246bb7 100644 ---- a/dev/tests/playwright/tools/AdminNotesLocalViewer.spec.mjs -+++ b/dev/tests/playwright/tools/AdminNotesLocalViewer.spec.mjs -@@ -168,7 +168,7 @@ test("Owner Notes route reads the shared admin-notes source", async ({ page }) = - ]); - - await page.getByRole("link", { name: "sample.txt" }).click(); -- await expect(page).toHaveURL(/\/owner\/notes\.html\?file=legacy-docs-build%2Fadmin-notes%2Fsample\.txt$/); -+ await expect(page).toHaveURL(/\/owner\/notes\.html\?file=dev%2Farchive%2Flegacy-docs-build%2Fadmin-notes%2Fsample\.txt$/); - await expect(page.locator("[data-admin-notes-title]")).toHaveText("sample.txt"); - await expect(page.locator("[data-admin-notes-content]")).toContainText("Capture admin-only project ideas here."); - await expect(page.locator("nav[aria-label='Admin tool pages'] a", { hasText: "Notes" })).toHaveCount(0); -@@ -203,7 +203,7 @@ test("Admin Notes viewer shows a visible missing-directory diagnostic", async ({ - expect(failures.consoleErrors).toHaveLength(1); - expect(failures.consoleErrors[0]).toContain("404"); - expect(failures.failedRequests).toEqual([ -- `404 ${failures.server.baseUrl}/api/dev/admin-notes/directory?folder=legacy-docs-build%2Fadmin-notes`, -+ `404 ${failures.server.baseUrl}/api/dev/admin-notes/directory?folder=dev%2Farchive%2Flegacy-docs-build%2Fadmin-notes`, - ]); - } finally { - await closeWithCoverage(page, failures); -diff --git a/dev/tests/playwright/tools/InputMappingV2Tool.spec.mjs b/dev/tests/playwright/tools/InputMappingV2Tool.spec.mjs -index 514084095..d23e8c161 100644 ---- a/dev/tests/playwright/tools/InputMappingV2Tool.spec.mjs -+++ b/dev/tests/playwright/tools/InputMappingV2Tool.spec.mjs -@@ -1477,14 +1477,14 @@ test("Controls split keeps shared engine input contracts in the account surface" - ]); - return { accountControls, controls }; - }); -- expect(sources.controls).toContain("../../src/engine/input/NormalizedInputRegistry.js"); -- expect(sources.controls).not.toContain("../../src/engine/input/InputService.js"); -+ expect(sources.controls).toContain("../../www/src/engine/input/NormalizedInputRegistry.js"); -+ expect(sources.controls).not.toContain("../../www/src/engine/input/InputService.js"); - expect(sources.controls).not.toContain("DEVICE_POLL_INTERVAL_MS"); - expect(sources.controls).not.toContain("GAME_CONTROL_PRESETS"); - expect(sources.controls).not.toContain("applyGameControlPreset"); -- expect(sources.accountControls).toContain("../src/engine/input/InputService.js"); -- expect(sources.accountControls).toContain("../src/engine/input/NormalizedInputRegistry.js"); -- expect(sources.accountControls).toContain("../src/engine/input/GamepadInputClassifier.js"); -+ expect(sources.accountControls).toContain("../www/src/engine/input/InputService.js"); -+ expect(sources.accountControls).toContain("../www/src/engine/input/NormalizedInputRegistry.js"); -+ expect(sources.accountControls).toContain("../www/src/engine/input/GamepadInputClassifier.js"); - expect(sources.accountControls).toContain("DEVICE_POLL_INTERVAL_MS"); - for (const source of [sources.controls, sources.accountControls]) { - expect(source).not.toMatch(/addEventListener\(\s*["']keydown/); -diff --git a/dev/tests/playwright/tools/ToolboxRoutePages.spec.mjs b/dev/tests/playwright/tools/ToolboxRoutePages.spec.mjs -index 648cfa758..53b2b3477 100644 ---- a/dev/tests/playwright/tools/ToolboxRoutePages.spec.mjs -+++ b/dev/tests/playwright/tools/ToolboxRoutePages.spec.mjs -@@ -564,10 +564,10 @@ test("toolbox index shows wireframe and beta tools while Planned remains opt-in" - await expect(page.locator("[data-toolbox-tool-name-link='Game Hub']")).toHaveAttribute("href", "/toolbox/game-hub/index.html"); - await expect(page.locator("[data-toolbox-tool-name-link='Text To Speech']")).toHaveAttribute("href", "/toolbox/text-to-speech/index.html"); - await expect(page.locator("[data-toolbox-tool-name-link='Publish']")).toHaveCount(0); -- await expect(page.locator("[data-tools-count]")).toHaveText("Tool Count: 15/43"); -+ await expect(page.locator("[data-tools-count]")).toHaveText("Tool Count: 16/43"); - await page.locator("[data-toolbox-status-filter='planned']").click(); - await expect(page.locator("[data-toolbox-status-filter='planned']")).toHaveAttribute("aria-pressed", "true"); -- await expect(page.locator("[data-toolbox-tool-card][data-toolbox-release-channel='planned']")).toHaveCount(27); -+ await expect(page.locator("[data-toolbox-tool-card][data-toolbox-release-channel='planned']")).toHaveCount(26); - await expect(page.locator("[data-toolbox-tool-card]")).toHaveCount(42); - await expect(page.locator("[data-tools-count]")).toHaveText("Tool Count: 42/43"); - await expect(page.locator("[data-toolbox-tool-name-link='AI Command Center']")).toBeVisible(); -@@ -641,8 +641,8 @@ test("toolbox status kickers, filters, card order, and voting controls work from - await page.goto(`${server.baseUrl}/toolbox/index.html`, { waitUntil: "networkidle" }); - - await expect(page.locator("[data-toolbox-status-filter]")).toHaveText([ -- "Planned (27)", -- "Wireframe (4)", -+ "Planned (26)", -+ "Wireframe (5)", - "Beta (8)", - "Complete (3)", - "Deprecated (1)", -@@ -658,8 +658,8 @@ test("toolbox status kickers, filters, card order, and voting controls work from - - await page.locator("[data-tools-view='build-path']").click(); - await expect(page.locator("[data-toolbox-status-filter]")).toHaveText([ -- "Planned (27)", -- "Wireframe (4)", -+ "Planned (26)", -+ "Wireframe (5)", - "Beta (8)", - "Complete (3)", - "Deprecated (1)", -@@ -1378,8 +1378,8 @@ test("toolbox Build Path status filters support multi-select registry-matched to - await expect(page.locator("[data-tools-sort='grouped']")).not.toHaveClass(/primary/); - - await expect(page.locator("[data-toolbox-status-filter]")).toHaveText([ -- "Planned (27)", -- "Wireframe (4)", -+ "Planned (26)", -+ "Wireframe (5)", - "Beta (8)", - "Complete (3)", - "Deprecated (1)", -@@ -1391,14 +1391,14 @@ test("toolbox Build Path status filters support multi-select registry-matched to - - await page.locator("[data-toolbox-status-filter='planned']").click(); - await expectActiveFilters(["planned", "complete"]); -- await expectBuildPathChannels(["planned", "complete"], 30); -+ await expectBuildPathChannels(["planned", "complete"], 29); - await expect(page.locator("[data-build-path-tool='AI Command Center']")).toBeVisible(); - await expectBuildPathOrder("AI Command Center", registryById.get("ai-assistant").order); - await expectBuildPathOrder("Colors", registryById.get("colors").order); - - await page.locator("[data-toolbox-status-filter='complete']").click(); - await expectActiveFilters(["planned"]); -- await expectBuildPathChannels(["planned"], 27); -+ await expectBuildPathChannels(["planned"], 26); - await expect(page.locator("[data-build-path-tool='Colors']")).toHaveCount(0); - await expect(page.locator("[data-build-path-tool='AI Command Center']")).toBeVisible(); - -diff --git a/dev/tests/production/ProductionReadiness.test.mjs b/dev/tests/production/ProductionReadiness.test.mjs -index baef7a740..da954ed44 100644 ---- a/dev/tests/production/ProductionReadiness.test.mjs -+++ b/dev/tests/production/ProductionReadiness.test.mjs -@@ -5,11 +5,11 @@ David Quesenberry - ProductionReadiness.test.mjs - */ - import assert from 'node:assert/strict'; --import ActionInputMap from '../../../src/engine/input/ActionInputMap.js'; --import ActionInputService from '../../../src/engine/input/ActionInputService.js'; --import ResolutionScaler from '../../../src/engine/rendering/ResolutionScaler.js'; --import AssetOptimizer from '../../../src/engine/assets/AssetOptimizer.js'; --import ObjectPool from '../../../src/engine/memory/ObjectPool.js'; -+import ActionInputMap from '../../../www/src/engine/input/ActionInputMap.js'; -+import ActionInputService from '../../../www/src/engine/input/ActionInputService.js'; -+import ResolutionScaler from '../../../www/src/engine/rendering/ResolutionScaler.js'; -+import AssetOptimizer from '../../../www/src/engine/assets/AssetOptimizer.js'; -+import ObjectPool from '../../../www/src/engine/memory/ObjectPool.js'; - - export async function run() { - const map = new ActionInputMap({ jump: ['Space'] }); -diff --git a/dev/tests/regression/CanonicalRepositoryStructureGuardrail.test.mjs b/dev/tests/regression/CanonicalRepositoryStructureGuardrail.test.mjs -index 3a7cbedcd..6efc9354c 100644 ---- a/dev/tests/regression/CanonicalRepositoryStructureGuardrail.test.mjs -+++ b/dev/tests/regression/CanonicalRepositoryStructureGuardrail.test.mjs -@@ -14,8 +14,8 @@ test("canonical repository structure guardrail accepts canonical paths and appro - "assets/theme-v2/js/admin-system-health.js", - "assets/theme-v2/css/theme.css", - "assets/toolbox/assets/js/assets-upload-worker.js", -- "src/engine/rendering/Renderer.js", -- "src/engine/ui/baseLayout.css", -+ "www/src/engine/rendering/Renderer.js", -+ "www/src/engine/ui/baseLayout.css", - "dev/tests/regression/CanonicalRepositoryStructureGuardrail.test.mjs", - "dev/tests/runtime/V2SessionValidation.test.mjs", - ]); -diff --git a/dev/tests/render/Renderer.test.mjs b/dev/tests/render/Renderer.test.mjs -index 688d23850..c8c0b8e54 100644 ---- a/dev/tests/render/Renderer.test.mjs -+++ b/dev/tests/render/Renderer.test.mjs -@@ -5,7 +5,7 @@ David Quesenberry - Renderer.test.mjs - */ - import assert from 'node:assert/strict'; --import CanvasRenderer from '../../../src/engine/rendering/CanvasRenderer.js'; -+import CanvasRenderer from '../../../www/src/engine/rendering/CanvasRenderer.js'; - - function createFakeContext() { - const calls = []; -diff --git a/dev/tests/replay/ReplaySystem.test.mjs b/dev/tests/replay/ReplaySystem.test.mjs -index f00c98f73..da3deebfe 100644 ---- a/dev/tests/replay/ReplaySystem.test.mjs -+++ b/dev/tests/replay/ReplaySystem.test.mjs -@@ -5,7 +5,7 @@ - ReplaySystem.test.mjs - */ - import assert from 'node:assert/strict'; --import ReplaySystem from '../../../src/engine/replay/ReplaySystem.js'; -+import ReplaySystem from '../../../www/src/engine/replay/ReplaySystem.js'; - - export function run() { - const replay = new ReplaySystem(); -diff --git a/dev/tests/replay/ReplayTimeline.test.mjs b/dev/tests/replay/ReplayTimeline.test.mjs -index a81253f40..43629fee2 100644 ---- a/dev/tests/replay/ReplayTimeline.test.mjs -+++ b/dev/tests/replay/ReplayTimeline.test.mjs -@@ -5,7 +5,7 @@ David Quesenberry - ReplayTimeline.test.mjs - */ - import assert from 'node:assert/strict'; --import { ReplayTimeline } from '../../../src/engine/replay/ReplayTimeline.js'; -+import { ReplayTimeline } from '../../../www/src/engine/replay/ReplayTimeline.js'; - - export function run() { - const timeline = new ReplayTimeline({ maxFrames: 3 }); -diff --git a/dev/tests/runtime/Phase19RuntimeLifecycleValidation.test.mjs b/dev/tests/runtime/Phase19RuntimeLifecycleValidation.test.mjs -index 066ca8ae7..fffc278c6 100644 ---- a/dev/tests/runtime/Phase19RuntimeLifecycleValidation.test.mjs -+++ b/dev/tests/runtime/Phase19RuntimeLifecycleValidation.test.mjs -@@ -5,8 +5,8 @@ David Quesenberry - Phase19RuntimeLifecycleValidation.test.mjs - */ - import assert from 'node:assert/strict'; --import Engine from '../../../src/engine/core/Engine.js'; --import Logger from '../../../src/engine/logging/Logger.js'; -+import Engine from '../../../www/src/engine/core/Engine.js'; -+import Logger from '../../../www/src/engine/logging/Logger.js'; - - function createCanvas() { - const canvas = { -diff --git a/dev/tests/runtime/RuntimeMonitoringHooks.test.mjs b/dev/tests/runtime/RuntimeMonitoringHooks.test.mjs -index d6dacae08..0e0b4e57e 100644 ---- a/dev/tests/runtime/RuntimeMonitoringHooks.test.mjs -+++ b/dev/tests/runtime/RuntimeMonitoringHooks.test.mjs -@@ -5,8 +5,8 @@ David Quesenberry - RuntimeMonitoringHooks.test.mjs - */ - import assert from 'node:assert/strict'; --import { createRuntimeMonitoringHooks } from '../../../src/engine/runtime/RuntimeMonitoringHooks.js'; --import Logger from '../../../src/engine/logging/Logger.js'; -+import { createRuntimeMonitoringHooks } from '../../../www/src/engine/runtime/RuntimeMonitoringHooks.js'; -+import Logger from '../../../www/src/engine/logging/Logger.js'; - - function createWindowStub() { - const listeners = new Map(); -diff --git a/dev/tests/scenes/AttractModeController.test.mjs b/dev/tests/scenes/AttractModeController.test.mjs -index 532193eea..93efe8b18 100644 ---- a/dev/tests/scenes/AttractModeController.test.mjs -+++ b/dev/tests/scenes/AttractModeController.test.mjs -@@ -5,8 +5,8 @@ David Quesenberry - AttractModeController.test.mjs - */ - import assert from 'node:assert/strict'; --import AttractModeController from '../../../src/engine/scene/AttractModeController.js'; --import { DEFAULT_ATTRACT_CONFIG } from '../../../src/engine/scene/AttractModeController.js'; -+import AttractModeController from '../../../www/src/engine/scene/AttractModeController.js'; -+import { DEFAULT_ATTRACT_CONFIG } from '../../../www/src/engine/scene/AttractModeController.js'; - - function testIdleEnterAndPhaseCycle() { - const phases = []; -diff --git a/dev/tests/scenes/SceneManager.test.mjs b/dev/tests/scenes/SceneManager.test.mjs -index 03ddbb6e8..4f077056c 100644 ---- a/dev/tests/scenes/SceneManager.test.mjs -+++ b/dev/tests/scenes/SceneManager.test.mjs -@@ -5,8 +5,8 @@ David Quesenberry - SceneManager.test.mjs - */ - import assert from "node:assert/strict"; --import Scene from "../../../src/engine/scene/Scene.js"; --import SceneManager from "../../../src/engine/scene/SceneManager.js"; -+import Scene from "../../../www/src/engine/scene/Scene.js"; -+import SceneManager from "../../../www/src/engine/scene/SceneManager.js"; - - class TestScene extends Scene { - constructor(name, log) { -diff --git a/dev/tests/scenes/TransitionScene.test.mjs b/dev/tests/scenes/TransitionScene.test.mjs -index 3ea141ae0..6ada9e6d5 100644 ---- a/dev/tests/scenes/TransitionScene.test.mjs -+++ b/dev/tests/scenes/TransitionScene.test.mjs -@@ -5,8 +5,8 @@ - TransitionScene.test.mjs - */ - import assert from 'node:assert/strict'; --import SceneTransition from '../../../src/engine/scene/SceneTransition.js'; --import TransitionScene from '../../../src/engine/scene/TransitionScene.js'; -+import SceneTransition from '../../../www/src/engine/scene/SceneTransition.js'; -+import TransitionScene from '../../../www/src/engine/scene/TransitionScene.js'; - - function createRenderer(log) { - const renderer = { -diff --git a/dev/tests/shared/ColorFoundation.test.mjs b/dev/tests/shared/ColorFoundation.test.mjs -index 363a64475..012d27641 100644 ---- a/dev/tests/shared/ColorFoundation.test.mjs -+++ b/dev/tests/shared/ColorFoundation.test.mjs -@@ -16,7 +16,7 @@ import { - relativeLuminance, - rgbToHex, - rgbToHsl, --} from "../../../src/shared/color/color.js"; -+} from "../../../www/src/shared/color/color.js"; - - export function run() { - assert.equal(clamp01(2), 1); -diff --git a/dev/tests/shared/GeometryFoundation.test.mjs b/dev/tests/shared/GeometryFoundation.test.mjs -index 971bc3d48..dbfde3419 100644 ---- a/dev/tests/shared/GeometryFoundation.test.mjs -+++ b/dev/tests/shared/GeometryFoundation.test.mjs -@@ -17,7 +17,7 @@ import { - scaleVector, - subtractVectors, - vector2, --} from "../../../src/shared/geometry/geometry.js"; -+} from "../../../www/src/shared/geometry/geometry.js"; - - export function run() { - assert.equal(clamp(12, 0, 10), 10); -diff --git a/dev/tests/shared/GetStateVariantClassification.test.mjs b/dev/tests/shared/GetStateVariantClassification.test.mjs -index 47f5e3f92..f60397b93 100644 ---- a/dev/tests/shared/GetStateVariantClassification.test.mjs -+++ b/dev/tests/shared/GetStateVariantClassification.test.mjs -@@ -13,7 +13,7 @@ import { - classifyGetStateVariantLayer, - extractGetStateVariantNames, - bucketGetStateVariants, --} from "../../../src/shared/state/getStateVariantClassification.js"; -+} from "../../../www/src/shared/state/getStateVariantClassification.js"; - - const ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../../.."); - const TARGET_ROOTS = ["src", "games", "samples", "tools"]; -diff --git a/dev/tests/shared/HashFoundation.test.mjs b/dev/tests/shared/HashFoundation.test.mjs -index 37b18b939..28199ee45 100644 ---- a/dev/tests/shared/HashFoundation.test.mjs -+++ b/dev/tests/shared/HashFoundation.test.mjs -@@ -12,7 +12,7 @@ import { - hashToUnitInterval, - hashValue32, - toStableHashString, --} from "../../../src/shared/hash/hash.js"; -+} from "../../../www/src/shared/hash/hash.js"; - - export function run() { - assert.equal(hashString32("Game Foundry"), hashString32("Game Foundry")); -diff --git a/dev/tests/shared/NoiseFoundation.test.mjs b/dev/tests/shared/NoiseFoundation.test.mjs -index 3f0f6e07e..500408657 100644 ---- a/dev/tests/shared/NoiseFoundation.test.mjs -+++ b/dev/tests/shared/NoiseFoundation.test.mjs -@@ -11,7 +11,7 @@ import { - perlinNoise2D, - simplexNoise2D, - valueNoise2D, --} from "../../../src/shared/noise/noise.js"; -+} from "../../../www/src/shared/noise/noise.js"; - - function assertInRange(value, min, max) { - assert.equal(Number.isFinite(value), true); -diff --git a/dev/tests/shared/Random.test.mjs b/dev/tests/shared/Random.test.mjs -index 8f486a656..4c7a11128 100644 ---- a/dev/tests/shared/Random.test.mjs -+++ b/dev/tests/shared/Random.test.mjs -@@ -5,7 +5,7 @@ David Quesenberry - Random.test.mjs - */ - import assert from "node:assert/strict"; --import { Random } from "../../../src/shared/math/Random.js"; -+import { Random } from "../../../www/src/shared/math/Random.js"; - - const UUID_V4_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/; - -diff --git a/dev/tests/shared/RandomHelpers.test.mjs b/dev/tests/shared/RandomHelpers.test.mjs -index 52199708e..47633d612 100644 ---- a/dev/tests/shared/RandomHelpers.test.mjs -+++ b/dev/tests/shared/RandomHelpers.test.mjs -@@ -12,7 +12,7 @@ import { - pick, - shuffle, - weightedPick, --} from "../../../src/shared/math/randomHelpers.js"; -+} from "../../../www/src/shared/math/randomHelpers.js"; - - function sequence(values) { - let index = 0; -diff --git a/dev/tests/shared/RandomSeed.test.mjs b/dev/tests/shared/RandomSeed.test.mjs -index 12806552a..191d5faa8 100644 ---- a/dev/tests/shared/RandomSeed.test.mjs -+++ b/dev/tests/shared/RandomSeed.test.mjs -@@ -5,7 +5,7 @@ David Quesenberry - RandomSeed.test.mjs - */ - import assert from "node:assert/strict"; --import { RandomSeed } from "../../../src/shared/math/RandomSeed.js"; -+import { RandomSeed } from "../../../www/src/shared/math/RandomSeed.js"; - - function takeSequence(generator, count) { - return Array.from({ length: count }, () => generator.next()); -diff --git a/dev/tests/shared/SharedFoundationCombinedPass.test.mjs b/dev/tests/shared/SharedFoundationCombinedPass.test.mjs -index 3104f90f3..a08f5c4f1 100644 ---- a/dev/tests/shared/SharedFoundationCombinedPass.test.mjs -+++ b/dev/tests/shared/SharedFoundationCombinedPass.test.mjs -@@ -9,34 +9,34 @@ import { - ensureArray, - asArray, - asStringArray --} from "../../../src/shared/array/arrays.js"; -+} from "../../../www/src/shared/array/arrays.js"; - import { - sanitizeText, - escapeHtml --} from "../../../src/shared/string/strings.js"; -+} from "../../../www/src/shared/string/strings.js"; - import { - normalizeId, - createId, - createStableId, - isValidId, --} from "../../../src/shared/id/ids.js"; -+} from "../../../www/src/shared/id/ids.js"; - import { - asPositiveInteger, - roundNumber, --} from "../../../src/shared/math/numberNormalization.js"; -+} from "../../../www/src/shared/math/numberNormalization.js"; - import { - vectorFromAngle, --} from "../../../src/shared/math/vectorMath.js"; -+} from "../../../www/src/shared/math/vectorMath.js"; - import { - safeNormalize, --} from "../../../src/shared/math/vectorNormalize.js"; --import { normalizeRecord } from "../../../src/shared/object/objects.js"; --import { normalizeArray } from "../../../src/shared/array/arrays.js"; --import { normalizeRecordArray } from "../../../src/shared/array/recordArrays.js"; --import { safeJsonParse, safeJsonStringify, cloneJsonData } from "../../../src/shared/json/jsonIO.js"; --import { isRecord } from "../../../src/shared/object/objects.js"; --import { isFunction, isBoolean } from "../../../src/shared/types/typeGuards.js"; --import { isNonEmptyString } from "../../../src/shared/string/strings.js"; -+} from "../../../www/src/shared/math/vectorNormalize.js"; -+import { normalizeRecord } from "../../../www/src/shared/object/objects.js"; -+import { normalizeArray } from "../../../www/src/shared/array/arrays.js"; -+import { normalizeRecordArray } from "../../../www/src/shared/array/recordArrays.js"; -+import { safeJsonParse, safeJsonStringify, cloneJsonData } from "../../../www/src/shared/json/jsonIO.js"; -+import { isRecord } from "../../../www/src/shared/object/objects.js"; -+import { isFunction, isBoolean } from "../../../www/src/shared/types/typeGuards.js"; -+import { isNonEmptyString } from "../../../www/src/shared/string/strings.js"; - import { - SHARED_PROMOTION_CONTRACT_ID, - SHARED_PROMOTION_CONTRACT_VERSION, -@@ -46,16 +46,16 @@ import { - import { - normalizePromotionStateInput, - createNormalizedPromotionSnapshot, --} from "../../../src/shared/state/normalization.js"; -+} from "../../../www/src/shared/state/normalization.js"; - import { - isStateContainer, - isPromotionStateSnapshot, --} from "../../../src/shared/state/guards.js"; -+} from "../../../www/src/shared/state/guards.js"; - import { - getSimulationState, - getReplayState, - getEditorState, --} from "../../../src/shared/state/selectors.js"; -+} from "../../../www/src/shared/state/selectors.js"; - - export function run() { - assert.deepEqual(ensureArray(null), []); -diff --git a/dev/tests/shared/SharedNumberStringIdCloseout.test.mjs b/dev/tests/shared/SharedNumberStringIdCloseout.test.mjs -index 0f69666a0..a8fa822e1 100644 ---- a/dev/tests/shared/SharedNumberStringIdCloseout.test.mjs -+++ b/dev/tests/shared/SharedNumberStringIdCloseout.test.mjs -@@ -4,17 +4,17 @@ import { - sanitizeText, - normalizeString, - escapeHtml --} from "../../../src/shared/string/strings.js"; -+} from "../../../www/src/shared/string/strings.js"; - import { - normalizeId, - createStableId, - isValidId --} from "../../../src/shared/id/ids.js"; -+} from "../../../www/src/shared/id/ids.js"; - import { - isFiniteNumber, - asPositiveNumber, - toFiniteNumber --} from "../../../src/shared/number/numbers.js"; -+} from "../../../www/src/shared/number/numbers.js"; - - export function run() { - assert.equal(sanitizeText(" hello "), "hello"); -diff --git a/dev/tests/shared/TextFoundation.test.mjs b/dev/tests/shared/TextFoundation.test.mjs -index 2c6098e7d..932970f66 100644 ---- a/dev/tests/shared/TextFoundation.test.mjs -+++ b/dev/tests/shared/TextFoundation.test.mjs -@@ -12,7 +12,7 @@ import { - toCamelCase, - toTitleCase, - truncate, --} from "../../../src/shared/text/text.js"; -+} from "../../../www/src/shared/text/text.js"; - - export function run() { - assert.equal(normalizeWhitespace(" Alpha\n\tBeta Gamma "), "Alpha Beta Gamma"); -diff --git a/dev/tests/shared/TimeFoundation.test.mjs b/dev/tests/shared/TimeFoundation.test.mjs -index b9c96ce99..47cdc3c5f 100644 ---- a/dev/tests/shared/TimeFoundation.test.mjs -+++ b/dev/tests/shared/TimeFoundation.test.mjs -@@ -12,7 +12,7 @@ import { - throttle, - toIsoTimestamp, - toUnixMilliseconds, --} from "../../../src/shared/time/time.js"; -+} from "../../../www/src/shared/time/time.js"; - - export async function run() { - assert.equal(formatDuration(500), "500ms"); -diff --git a/dev/tests/tools/AiAuthoringAssistant.test.mjs b/dev/tests/tools/AiAuthoringAssistant.test.mjs -index faa347a30..a9647bec5 100644 ---- a/dev/tests/tools/AiAuthoringAssistant.test.mjs -+++ b/dev/tests/tools/AiAuthoringAssistant.test.mjs -@@ -1,5 +1,5 @@ - import assert from "node:assert/strict"; --import { buildAiAuthoringAssistant, summarizeAiAuthoringAssistant } from "../../../src/shared/toolbox/aiAuthoringAssistant.js"; -+import { buildAiAuthoringAssistant, summarizeAiAuthoringAssistant } from "../../../www/src/shared/toolbox/aiAuthoringAssistant.js"; - - export async function run() { - const result = buildAiAuthoringAssistant({ -diff --git a/dev/tests/tools/AssetErrorHandlingStandard.test.mjs b/dev/tests/tools/AssetErrorHandlingStandard.test.mjs -index 3377c73d3..742aeab25 100644 ---- a/dev/tests/tools/AssetErrorHandlingStandard.test.mjs -+++ b/dev/tests/tools/AssetErrorHandlingStandard.test.mjs -@@ -1,5 +1,5 @@ - import assert from "node:assert/strict"; --import { createAssetError, appendAssetError, appendAssetErrors } from "../../../src/shared/toolbox/pipeline/assetErrorHandling.js"; -+import { createAssetError, appendAssetError, appendAssetErrors } from "../../../www/src/shared/toolbox/pipeline/assetErrorHandling.js"; - - export async function run() { - const normalized = createAssetError({ -diff --git a/dev/tests/tools/AssetManifestLoader.test.mjs b/dev/tests/tools/AssetManifestLoader.test.mjs -index 35225bede..4d193e1c0 100644 ---- a/dev/tests/tools/AssetManifestLoader.test.mjs -+++ b/dev/tests/tools/AssetManifestLoader.test.mjs -@@ -3,7 +3,7 @@ import { - discoverRuntimeAssets, - getAssetManifestRelativePath, - loadAssetManifest --} from "../../../src/shared/toolbox/pipeline/assetManifestLoader.js"; -+} from "../../../www/src/shared/toolbox/pipeline/assetManifestLoader.js"; - - function normalizePath(value) { - return String(value || "").replace(/\\/g, "/"); -diff --git a/dev/tests/tools/AssetMarketplace.test.mjs b/dev/tests/tools/AssetMarketplace.test.mjs -index 147aff9b2..df244a491 100644 ---- a/dev/tests/tools/AssetMarketplace.test.mjs -+++ b/dev/tests/tools/AssetMarketplace.test.mjs -@@ -1,5 +1,5 @@ - import assert from "node:assert/strict"; --import { buildAssetMarketplace, summarizeAssetMarketplace } from "../../../src/shared/toolbox/assetMarketplace.js"; -+import { buildAssetMarketplace, summarizeAssetMarketplace } from "../../../www/src/shared/toolbox/assetMarketplace.js"; - - export async function run() { - const result = buildAssetMarketplace({ -diff --git a/dev/tests/tools/AssetPipelineTooling.test.mjs b/dev/tests/tools/AssetPipelineTooling.test.mjs -index b4f3e3571..92ba286ec 100644 ---- a/dev/tests/tools/AssetPipelineTooling.test.mjs -+++ b/dev/tests/tools/AssetPipelineTooling.test.mjs -@@ -1,5 +1,5 @@ - import assert from "node:assert/strict"; --import { runAssetPipelineTooling } from "../../../src/shared/toolbox/pipeline/assetPipelineTooling.js"; -+import { runAssetPipelineTooling } from "../../../www/src/shared/toolbox/pipeline/assetPipelineTooling.js"; - - export async function run() { - const ready = runAssetPipelineTooling({ -diff --git a/dev/tests/tools/AssetRemediationSystem.test.mjs b/dev/tests/tools/AssetRemediationSystem.test.mjs -index 3e8beea8c..f016620c5 100644 ---- a/dev/tests/tools/AssetRemediationSystem.test.mjs -+++ b/dev/tests/tools/AssetRemediationSystem.test.mjs -@@ -1,5 +1,5 @@ - import assert from "node:assert/strict"; --import { buildProjectAssetRemediation, getPrimaryRemediationAction, summarizeProjectAssetRemediation } from "../../../src/shared/toolbox/projectAssetRemediation.js"; -+import { buildProjectAssetRemediation, getPrimaryRemediationAction, summarizeProjectAssetRemediation } from "../../../www/src/shared/toolbox/projectAssetRemediation.js"; - - export async function run() { - const registry = { -diff --git a/dev/tests/tools/AssetUsageIntegration.test.mjs b/dev/tests/tools/AssetUsageIntegration.test.mjs -index 51f956bbd..8ee08e7c4 100644 ---- a/dev/tests/tools/AssetUsageIntegration.test.mjs -+++ b/dev/tests/tools/AssetUsageIntegration.test.mjs -@@ -10,7 +10,7 @@ import { - readSharedPaletteHandoff, - writeSharedAssetHandoff, - writeSharedPaletteHandoff --} from "../../../src/shared/toolbox/assetUsageIntegration.js"; -+} from "../../../www/src/shared/toolbox/assetUsageIntegration.js"; - - function createLocalStorageHarness() { - const store = new Map(); -diff --git a/dev/tests/tools/AssetValidationEngine.test.mjs b/dev/tests/tools/AssetValidationEngine.test.mjs -index 2bf43ab01..3945a9a35 100644 ---- a/dev/tests/tools/AssetValidationEngine.test.mjs -+++ b/dev/tests/tools/AssetValidationEngine.test.mjs -@@ -4,7 +4,7 @@ import { - hasBlockingAssetValidationFindings, - summarizeAssetValidation, - validateProjectAssetState --} from "../../../src/shared/toolbox/projectAssetValidation.js"; -+} from "../../../www/src/shared/toolbox/projectAssetValidation.js"; - - export async function run() { - const validRegistry = { -diff --git a/dev/tests/tools/CameraDebugPanel.test.mjs b/dev/tests/tools/CameraDebugPanel.test.mjs -index fb0a45b73..7aec623d1 100644 ---- a/dev/tests/tools/CameraDebugPanel.test.mjs -+++ b/dev/tests/tools/CameraDebugPanel.test.mjs -@@ -5,8 +5,8 @@ David Quesenberry - CameraDebugPanel.test.mjs - */ - import assert from "node:assert/strict"; --import { create3dCameraPanel } from '../../../src/engine/debug/standard/threeD/panels/panel3dCamera.js'; --import { createCameraSummaryProvider } from '../../../src/engine/debug/standard/threeD/providers/cameraSummaryProvider.js'; -+import { create3dCameraPanel } from '../../../www/src/engine/debug/standard/threeD/panels/panel3dCamera.js'; -+import { createCameraSummaryProvider } from '../../../www/src/engine/debug/standard/threeD/providers/cameraSummaryProvider.js'; - - export async function run() { - const provider = createCameraSummaryProvider({ -diff --git a/dev/tests/tools/CiValidationPipeline.test.mjs b/dev/tests/tools/CiValidationPipeline.test.mjs -index fcb446270..cf44e170c 100644 ---- a/dev/tests/tools/CiValidationPipeline.test.mjs -+++ b/dev/tests/tools/CiValidationPipeline.test.mjs -@@ -1,5 +1,5 @@ - import assert from "node:assert/strict"; --import { runCiValidationPipeline, summarizeCiValidationPipeline } from "../../../src/shared/toolbox/ciValidationPipeline.js"; -+import { runCiValidationPipeline, summarizeCiValidationPipeline } from "../../../www/src/shared/toolbox/ciValidationPipeline.js"; - - export async function run() { - const result = await runCiValidationPipeline({ branch: "main", trigger: "pull_request" }); -diff --git a/dev/tests/tools/CloudRuntime.test.mjs b/dev/tests/tools/CloudRuntime.test.mjs -index 2f03972e5..9f33fa982 100644 ---- a/dev/tests/tools/CloudRuntime.test.mjs -+++ b/dev/tests/tools/CloudRuntime.test.mjs -@@ -1,5 +1,5 @@ - import assert from "node:assert/strict"; --import { buildCloudRuntime, summarizeCloudRuntime } from "../../../src/shared/toolbox/cloudRuntime.js"; -+import { buildCloudRuntime, summarizeCloudRuntime } from "../../../www/src/shared/toolbox/cloudRuntime.js"; - - export async function run() { - const result = buildCloudRuntime({ -diff --git a/dev/tests/tools/CollaborationSystem.test.mjs b/dev/tests/tools/CollaborationSystem.test.mjs -index 646a9fd17..d8a0d2fd9 100644 ---- a/dev/tests/tools/CollaborationSystem.test.mjs -+++ b/dev/tests/tools/CollaborationSystem.test.mjs -@@ -1,5 +1,5 @@ - import assert from "node:assert/strict"; --import { buildCollaborationSystem, summarizeCollaborationSystem } from "../../../src/shared/toolbox/collaborationSystem.js"; -+import { buildCollaborationSystem, summarizeCollaborationSystem } from "../../../www/src/shared/toolbox/collaborationSystem.js"; - - export async function run() { - const result = buildCollaborationSystem({ -diff --git a/dev/tests/tools/CollisionOverlaysDebugPanel.test.mjs b/dev/tests/tools/CollisionOverlaysDebugPanel.test.mjs -index 487ed682e..8b4cb6c2f 100644 ---- a/dev/tests/tools/CollisionOverlaysDebugPanel.test.mjs -+++ b/dev/tests/tools/CollisionOverlaysDebugPanel.test.mjs -@@ -5,10 +5,10 @@ David Quesenberry - CollisionOverlaysDebugPanel.test.mjs - */ - import assert from "node:assert/strict"; --import { createStandard3dPanels } from '../../../src/engine/debug/standard/threeD/panels/registerStandard3dPanels.js'; --import { PANEL_3D_COLLISION_OVERLAYS, create3dCollisionOverlaysPanel } from '../../../src/engine/debug/standard/threeD/panels/panel3dCollisionOverlays.js'; --import { createStandard3dProviders } from '../../../src/engine/debug/standard/threeD/providers/registerStandard3dProviders.js'; --import { PROVIDER_3D_COLLISION_OVERLAYS, createCollisionOverlaysProvider } from '../../../src/engine/debug/standard/threeD/providers/collisionOverlaysProvider.js'; -+import { createStandard3dPanels } from '../../../www/src/engine/debug/standard/threeD/panels/registerStandard3dPanels.js'; -+import { PANEL_3D_COLLISION_OVERLAYS, create3dCollisionOverlaysPanel } from '../../../www/src/engine/debug/standard/threeD/panels/panel3dCollisionOverlays.js'; -+import { createStandard3dProviders } from '../../../www/src/engine/debug/standard/threeD/providers/registerStandard3dProviders.js'; -+import { PROVIDER_3D_COLLISION_OVERLAYS, createCollisionOverlaysProvider } from '../../../www/src/engine/debug/standard/threeD/providers/collisionOverlaysProvider.js'; - - export async function run() { - const provider = createCollisionOverlaysProvider({ -diff --git a/dev/tests/tools/DebugVisualizationLayer.test.mjs b/dev/tests/tools/DebugVisualizationLayer.test.mjs -index afa48febb..2b142bd5c 100644 ---- a/dev/tests/tools/DebugVisualizationLayer.test.mjs -+++ b/dev/tests/tools/DebugVisualizationLayer.test.mjs -@@ -1,5 +1,5 @@ - import assert from "node:assert/strict"; --import { buildDebugVisualizationLayer, summarizeDebugVisualizationLayer } from "../../../src/shared/toolbox/debugVisualizationLayer.js"; -+import { buildDebugVisualizationLayer, summarizeDebugVisualizationLayer } from "../../../www/src/shared/toolbox/debugVisualizationLayer.js"; - - export async function run() { - const result = buildDebugVisualizationLayer({ -diff --git a/dev/tests/tools/DevConsoleDebugOverlay.test.mjs b/dev/tests/tools/DevConsoleDebugOverlay.test.mjs -index e1e0906f2..8ea1a5f2d 100644 ---- a/dev/tests/tools/DevConsoleDebugOverlay.test.mjs -+++ b/dev/tests/tools/DevConsoleDebugOverlay.test.mjs -@@ -14,7 +14,7 @@ import { - getDevDiagnosticsContractVersionMetadata, - getDeterministicRenderOrder, - summarizeDevConsoleDebugOverlay --} from "../../../src/shared/toolbox/devConsoleDebugOverlay.js"; -+} from "../../../www/src/shared/toolbox/devConsoleDebugOverlay.js"; - - export async function run() { - const metadata = getDevDiagnosticsContractVersionMetadata(); -diff --git a/dev/tests/tools/EditorExperienceLayer.test.mjs b/dev/tests/tools/EditorExperienceLayer.test.mjs -index 4c889b97b..6f407181f 100644 ---- a/dev/tests/tools/EditorExperienceLayer.test.mjs -+++ b/dev/tests/tools/EditorExperienceLayer.test.mjs -@@ -1,5 +1,5 @@ - import assert from "node:assert/strict"; --import { buildEditorExperienceLayer, summarizeEditorExperienceLayer } from "../../../src/shared/toolbox/editorExperienceLayer.js"; -+import { buildEditorExperienceLayer, summarizeEditorExperienceLayer } from "../../../www/src/shared/toolbox/editorExperienceLayer.js"; - - export async function run() { - const result = buildEditorExperienceLayer({ -diff --git a/dev/tests/tools/GameAssetManifestCoordinator.test.mjs b/dev/tests/tools/GameAssetManifestCoordinator.test.mjs -index 27f23a677..d4050dd2f 100644 ---- a/dev/tests/tools/GameAssetManifestCoordinator.test.mjs -+++ b/dev/tests/tools/GameAssetManifestCoordinator.test.mjs -@@ -1,5 +1,5 @@ - import assert from "node:assert/strict"; --import { coordinateGameAssetManifest } from "../../../src/shared/toolbox/pipeline/gameAssetManifestCoordinator.js"; -+import { coordinateGameAssetManifest } from "../../../www/src/shared/toolbox/pipeline/gameAssetManifestCoordinator.js"; - - export async function run() { - const coordinated = coordinateGameAssetManifest({ -diff --git a/dev/tests/tools/GameAssetManifestDiscovery.test.mjs b/dev/tests/tools/GameAssetManifestDiscovery.test.mjs -index be4b55705..9c7b03251 100644 ---- a/dev/tests/tools/GameAssetManifestDiscovery.test.mjs -+++ b/dev/tests/tools/GameAssetManifestDiscovery.test.mjs -@@ -4,8 +4,8 @@ import asteroidsGameManifest from "../../../dev/archive/v1-v2/games/Asteroids/ga - import { - discoverRuntimeAssetSourcesFromManifest, - validateGameAssetManifestStructure --} from "../../../src/shared/toolbox/pipeline/gameAssetManifestDiscovery.js"; --import { createRuntimeManifestAssetLookup } from "../../../src/shared/toolbox/pipeline/runtimeAssetLookup.js"; -+} from "../../../www/src/shared/toolbox/pipeline/gameAssetManifestDiscovery.js"; -+import { createRuntimeManifestAssetLookup } from "../../../www/src/shared/toolbox/pipeline/runtimeAssetLookup.js"; - - export async function run() { - const asteroidsManifest = { -diff --git a/dev/tests/tools/GameTemplates.test.mjs b/dev/tests/tools/GameTemplates.test.mjs -index 2cf5b1bae..1f2bdeabc 100644 ---- a/dev/tests/tools/GameTemplates.test.mjs -+++ b/dev/tests/tools/GameTemplates.test.mjs -@@ -1,5 +1,5 @@ - import assert from "node:assert/strict"; --import { buildGameTemplates, summarizeGameTemplates } from "../../../src/shared/toolbox/gameTemplates.js"; -+import { buildGameTemplates, summarizeGameTemplates } from "../../../www/src/shared/toolbox/gameTemplates.js"; - - export async function run() { - const result = buildGameTemplates({ -diff --git a/dev/tests/tools/GameplaySystemLayer.test.mjs b/dev/tests/tools/GameplaySystemLayer.test.mjs -index 33ee734ea..ec648bcc2 100644 ---- a/dev/tests/tools/GameplaySystemLayer.test.mjs -+++ b/dev/tests/tools/GameplaySystemLayer.test.mjs -@@ -1,5 +1,5 @@ - import assert from "node:assert/strict"; --import { buildGameplaySystemLayer, summarizeGameplaySystemLayer } from "../../../src/shared/toolbox/gameplaySystemLayer.js"; -+import { buildGameplaySystemLayer, summarizeGameplaySystemLayer } from "../../../www/src/shared/toolbox/gameplaySystemLayer.js"; - - export async function run() { - const result = buildGameplaySystemLayer({ -diff --git a/dev/tests/tools/HotReloadSystem.test.mjs b/dev/tests/tools/HotReloadSystem.test.mjs -index 5f2349295..3bd3f6b0a 100644 ---- a/dev/tests/tools/HotReloadSystem.test.mjs -+++ b/dev/tests/tools/HotReloadSystem.test.mjs -@@ -1,5 +1,5 @@ - import assert from "node:assert/strict"; --import { runHotReloadSystem, summarizeHotReloadSystem } from "../../../src/shared/toolbox/hotReloadSystem.js"; -+import { runHotReloadSystem, summarizeHotReloadSystem } from "../../../www/src/shared/toolbox/hotReloadSystem.js"; - - export async function run() { - const registry = { -diff --git a/dev/tests/tools/MultiTargetExport.test.mjs b/dev/tests/tools/MultiTargetExport.test.mjs -index 3f7e07170..10cac36c4 100644 ---- a/dev/tests/tools/MultiTargetExport.test.mjs -+++ b/dev/tests/tools/MultiTargetExport.test.mjs -@@ -1,5 +1,5 @@ - import assert from "node:assert/strict"; --import { buildMultiTargetExport, summarizeMultiTargetExport } from "../../../src/shared/toolbox/multiTargetExport.js"; -+import { buildMultiTargetExport, summarizeMultiTargetExport } from "../../../www/src/shared/toolbox/multiTargetExport.js"; - - export async function run() { - const registry = { -diff --git a/dev/tests/tools/ObjectVectorFinalRuntimeCleanup.test.mjs b/dev/tests/tools/ObjectVectorFinalRuntimeCleanup.test.mjs -index fe0f92027..d3ed25da6 100644 ---- a/dev/tests/tools/ObjectVectorFinalRuntimeCleanup.test.mjs -+++ b/dev/tests/tools/ObjectVectorFinalRuntimeCleanup.test.mjs -@@ -12,7 +12,7 @@ const ACTIVE_OBJECT_VECTOR_PATHS = Object.freeze([ - "games/Asteroids/flow", - "toolbox/workspace-manager-v2/js", - "toolbox/object-vector-studio-v2/js", -- "src/engine/rendering/ObjectVectorRuntimeAssetService.js" -+ "www/src/engine/rendering/ObjectVectorRuntimeAssetService.js" - ]); - const DEPRECATED_VECTOR_MAPS_GUARD = "toolbox/object-vector-studio-v2/js/services/ObjectVectorStudioV2SchemaService.js"; - -diff --git a/dev/tests/tools/PerformanceBenchmarks.test.mjs b/dev/tests/tools/PerformanceBenchmarks.test.mjs -index 83df5460a..14192de60 100644 ---- a/dev/tests/tools/PerformanceBenchmarks.test.mjs -+++ b/dev/tests/tools/PerformanceBenchmarks.test.mjs -@@ -12,7 +12,7 @@ import { - createPerformanceBenchmarkSuite, - runPerformanceBenchmarkSuite, - summarizePerformanceBenchmarkSuite --} from "../../../src/shared/toolbox/performanceBenchmarks.js"; -+} from "../../../www/src/shared/toolbox/performanceBenchmarks.js"; - - export async function run() { - const suite = createPerformanceBenchmarkSuite({ -diff --git a/dev/tests/tools/PerformanceProfiler.test.mjs b/dev/tests/tools/PerformanceProfiler.test.mjs -index d0986f5bf..9c4746060 100644 ---- a/dev/tests/tools/PerformanceProfiler.test.mjs -+++ b/dev/tests/tools/PerformanceProfiler.test.mjs -@@ -1,5 +1,5 @@ - import assert from "node:assert/strict"; --import { buildPerformanceProfiler, summarizePerformanceProfiler } from "../../../src/shared/toolbox/performanceProfiler.js"; -+import { buildPerformanceProfiler, summarizePerformanceProfiler } from "../../../www/src/shared/toolbox/performanceProfiler.js"; - - export async function run() { - const result = buildPerformanceProfiler({ -diff --git a/dev/tests/tools/PlatformValidationSuite.test.mjs b/dev/tests/tools/PlatformValidationSuite.test.mjs -index 041f75fe6..1881666ac 100644 ---- a/dev/tests/tools/PlatformValidationSuite.test.mjs -+++ b/dev/tests/tools/PlatformValidationSuite.test.mjs -@@ -1,5 +1,5 @@ - import assert from "node:assert/strict"; --import { runPlatformValidationSuite, summarizePlatformValidationSuite } from "../../../src/shared/toolbox/platformValidationSuite.js"; -+import { runPlatformValidationSuite, summarizePlatformValidationSuite } from "../../../www/src/shared/toolbox/platformValidationSuite.js"; - - export async function run() { - const first = await runPlatformValidationSuite(); -diff --git a/dev/tests/tools/PluginArchitectureSystem.test.mjs b/dev/tests/tools/PluginArchitectureSystem.test.mjs -index cd68338fc..aace0d0c4 100644 ---- a/dev/tests/tools/PluginArchitectureSystem.test.mjs -+++ b/dev/tests/tools/PluginArchitectureSystem.test.mjs -@@ -1,5 +1,5 @@ - import assert from "node:assert/strict"; --import { buildPluginArchitecture, summarizePluginArchitecture } from "../../../src/shared/toolbox/pluginArchitecture.js"; -+import { buildPluginArchitecture, summarizePluginArchitecture } from "../../../www/src/shared/toolbox/pluginArchitecture.js"; - - export async function run() { - const hostPackageManifest = { -diff --git a/dev/tests/tools/ProjectPackagingSystem.test.mjs b/dev/tests/tools/ProjectPackagingSystem.test.mjs -index a5f7e251d..ba7d28f9a 100644 ---- a/dev/tests/tools/ProjectPackagingSystem.test.mjs -+++ b/dev/tests/tools/ProjectPackagingSystem.test.mjs -@@ -1,5 +1,5 @@ - import assert from "node:assert/strict"; --import { buildProjectPackage, summarizeProjectPackaging } from "../../../src/shared/toolbox/projectPackaging.js"; -+import { buildProjectPackage, summarizeProjectPackaging } from "../../../www/src/shared/toolbox/projectPackaging.js"; - - export async function run() { - const registry = { -diff --git a/dev/tests/tools/ProjectToolDataContracts.test.mjs b/dev/tests/tools/ProjectToolDataContracts.test.mjs -index cfcc85326..59b8acd09 100644 ---- a/dev/tests/tools/ProjectToolDataContracts.test.mjs -+++ b/dev/tests/tools/ProjectToolDataContracts.test.mjs -@@ -4,7 +4,7 @@ import { - TOOL_DATA_CONTRACT_VERSION, - buildProjectToolIntegration, - validateToolStateContract --} from "../../../src/shared/toolbox/projectToolIntegration.js"; -+} from "../../../www/src/shared/toolbox/projectToolIntegration.js"; - - export async function run() { - const validTileState = { -diff --git a/dev/tests/tools/ProjectVersioningSystem.test.mjs b/dev/tests/tools/ProjectVersioningSystem.test.mjs -index 96384801d..ee5f91444 100644 ---- a/dev/tests/tools/ProjectVersioningSystem.test.mjs -+++ b/dev/tests/tools/ProjectVersioningSystem.test.mjs -@@ -1,5 +1,5 @@ - import assert from "node:assert/strict"; --import { buildProjectVersioning, summarizeProjectVersioning } from "../../../src/shared/toolbox/projectVersioning.js"; -+import { buildProjectVersioning, summarizeProjectVersioning } from "../../../www/src/shared/toolbox/projectVersioning.js"; - - export async function run() { - const compatible = buildProjectVersioning({ -diff --git a/dev/tests/tools/PublishingPipeline.test.mjs b/dev/tests/tools/PublishingPipeline.test.mjs -index b8dc523bf..6168c2361 100644 ---- a/dev/tests/tools/PublishingPipeline.test.mjs -+++ b/dev/tests/tools/PublishingPipeline.test.mjs -@@ -1,5 +1,5 @@ - import assert from "node:assert/strict"; --import { runPublishingPipeline, summarizePublishingPipeline } from "../../../src/shared/toolbox/publishingPipeline.js"; -+import { runPublishingPipeline, summarizePublishingPipeline } from "../../../www/src/shared/toolbox/publishingPipeline.js"; - - export async function run() { - const result = await runPublishingPipeline({ -diff --git a/dev/tests/tools/RenderPipelineContractAll4Tools.test.mjs b/dev/tests/tools/RenderPipelineContractAll4Tools.test.mjs -index 3e6d580fd..40788ff59 100644 ---- a/dev/tests/tools/RenderPipelineContractAll4Tools.test.mjs -+++ b/dev/tests/tools/RenderPipelineContractAll4Tools.test.mjs -@@ -13,7 +13,7 @@ import { - getRenderPipelineStageOrder, - runRenderContractRuntimePath, - summarizeRenderContractRuntimePath --} from "../../../src/shared/toolbox/renderPipelineContract.js"; -+} from "../../../www/src/shared/toolbox/renderPipelineContract.js"; - - function createAsset(id, type, path) { - return { -diff --git a/dev/tests/tools/RenderPipelineStagesDebugPanel.test.mjs b/dev/tests/tools/RenderPipelineStagesDebugPanel.test.mjs -index f7f1cf039..1c34c1a7b 100644 ---- a/dev/tests/tools/RenderPipelineStagesDebugPanel.test.mjs -+++ b/dev/tests/tools/RenderPipelineStagesDebugPanel.test.mjs -@@ -5,10 +5,10 @@ David Quesenberry - RenderPipelineStagesDebugPanel.test.mjs - */ - import assert from "node:assert/strict"; --import { createStandard3dPanels } from '../../../src/engine/debug/standard/threeD/panels/registerStandard3dPanels.js'; --import { PANEL_3D_RENDER_PIPELINE_STAGES, create3dRenderPipelineStagesPanel } from '../../../src/engine/debug/standard/threeD/panels/panel3dRenderPipelineStages.js'; --import { createStandard3dProviders } from '../../../src/engine/debug/standard/threeD/providers/registerStandard3dProviders.js'; --import { PROVIDER_3D_RENDER_PIPELINE_STAGES, createRenderPipelineStagesProvider } from '../../../src/engine/debug/standard/threeD/providers/renderPipelineStagesProvider.js'; -+import { createStandard3dPanels } from '../../../www/src/engine/debug/standard/threeD/panels/registerStandard3dPanels.js'; -+import { PANEL_3D_RENDER_PIPELINE_STAGES, create3dRenderPipelineStagesPanel } from '../../../www/src/engine/debug/standard/threeD/panels/panel3dRenderPipelineStages.js'; -+import { createStandard3dProviders } from '../../../www/src/engine/debug/standard/threeD/providers/registerStandard3dProviders.js'; -+import { PROVIDER_3D_RENDER_PIPELINE_STAGES, createRenderPipelineStagesProvider } from '../../../www/src/engine/debug/standard/threeD/providers/renderPipelineStagesProvider.js'; - - export async function run() { - const provider = createRenderPipelineStagesProvider({ -diff --git a/dev/tests/tools/RuntimeAssetBinding.test.mjs b/dev/tests/tools/RuntimeAssetBinding.test.mjs -index 95082be5e..5f5c0f592 100644 ---- a/dev/tests/tools/RuntimeAssetBinding.test.mjs -+++ b/dev/tests/tools/RuntimeAssetBinding.test.mjs -@@ -1,6 +1,6 @@ - import assert from "node:assert/strict"; --import { createRuntimeAssetBinding, resolveRuntimeAsset } from "../../../src/shared/toolbox/pipeline/runtimeAssetBinding.js"; --import { coordinateGameAssetManifest } from "../../../src/shared/toolbox/pipeline/gameAssetManifestCoordinator.js"; -+import { createRuntimeAssetBinding, resolveRuntimeAsset } from "../../../www/src/shared/toolbox/pipeline/runtimeAssetBinding.js"; -+import { coordinateGameAssetManifest } from "../../../www/src/shared/toolbox/pipeline/gameAssetManifestCoordinator.js"; - - export async function run() { - const coordinated = coordinateGameAssetManifest({ -diff --git a/dev/tests/tools/RuntimeAssetLoader.test.mjs b/dev/tests/tools/RuntimeAssetLoader.test.mjs -index 4a04985be..8f4555b63 100644 ---- a/dev/tests/tools/RuntimeAssetLoader.test.mjs -+++ b/dev/tests/tools/RuntimeAssetLoader.test.mjs -@@ -1,5 +1,5 @@ - import assert from "node:assert/strict"; --import { loadPackagedProjectRuntime, summarizeRuntimeAssetLoader } from "../../../src/shared/toolbox/runtimeAssetLoader.js"; -+import { loadPackagedProjectRuntime, summarizeRuntimeAssetLoader } from "../../../www/src/shared/toolbox/runtimeAssetLoader.js"; - - export async function run() { - const packageManifest = { -diff --git a/dev/tests/tools/RuntimeAssetLookupConsolidation.test.mjs b/dev/tests/tools/RuntimeAssetLookupConsolidation.test.mjs -index e1663f934..dc40c63bd 100644 ---- a/dev/tests/tools/RuntimeAssetLookupConsolidation.test.mjs -+++ b/dev/tests/tools/RuntimeAssetLookupConsolidation.test.mjs -@@ -1,5 +1,5 @@ - import assert from "node:assert/strict"; --import { createRuntimeManifestAssetLookup, getRuntimeBindingDomain } from "../../../src/shared/toolbox/pipeline/runtimeAssetLookup.js"; -+import { createRuntimeManifestAssetLookup, getRuntimeBindingDomain } from "../../../www/src/shared/toolbox/pipeline/runtimeAssetLookup.js"; - - export async function run() { - assert.equal(getRuntimeBindingDomain("vector.ship"), "vectors"); -diff --git a/dev/tests/tools/RuntimeAssetValidation.test.mjs b/dev/tests/tools/RuntimeAssetValidation.test.mjs -index af611d8ba..49b874cd0 100644 ---- a/dev/tests/tools/RuntimeAssetValidation.test.mjs -+++ b/dev/tests/tools/RuntimeAssetValidation.test.mjs -@@ -1,5 +1,5 @@ - import assert from "node:assert/strict"; --import { validateRuntimeResolvedAsset } from "../../../src/shared/toolbox/pipeline/runtimeAssetValidation.js"; -+import { validateRuntimeResolvedAsset } from "../../../www/src/shared/toolbox/pipeline/runtimeAssetValidation.js"; - - export async function run() { - const validVector = validateRuntimeResolvedAsset({ -diff --git a/dev/tests/tools/RuntimeStreamingSystem.test.mjs b/dev/tests/tools/RuntimeStreamingSystem.test.mjs -index a3f5d6724..cfaf64347 100644 ---- a/dev/tests/tools/RuntimeStreamingSystem.test.mjs -+++ b/dev/tests/tools/RuntimeStreamingSystem.test.mjs -@@ -1,5 +1,5 @@ - import assert from "node:assert/strict"; --import { buildRuntimeStreamingManifest, loadRuntimeStreamingChunks, summarizeRuntimeStreaming } from "../../../src/shared/toolbox/runtimeStreaming.js"; -+import { buildRuntimeStreamingManifest, loadRuntimeStreamingChunks, summarizeRuntimeStreaming } from "../../../www/src/shared/toolbox/runtimeStreaming.js"; - - export async function run() { - const packageManifest = { -diff --git a/dev/tests/tools/SceneGraphInspectorDebugPanel.test.mjs b/dev/tests/tools/SceneGraphInspectorDebugPanel.test.mjs -index e8ef02ab8..a520421a6 100644 ---- a/dev/tests/tools/SceneGraphInspectorDebugPanel.test.mjs -+++ b/dev/tests/tools/SceneGraphInspectorDebugPanel.test.mjs -@@ -5,10 +5,10 @@ David Quesenberry - SceneGraphInspectorDebugPanel.test.mjs - */ - import assert from "node:assert/strict"; --import { createStandard3dPanels } from '../../../src/engine/debug/standard/threeD/panels/registerStandard3dPanels.js'; --import { PANEL_3D_SCENE_GRAPH_INSPECTOR, create3dSceneGraphInspectorPanel } from '../../../src/engine/debug/standard/threeD/panels/panel3dSceneGraphInspector.js'; --import { createStandard3dProviders } from '../../../src/engine/debug/standard/threeD/providers/registerStandard3dProviders.js'; --import { PROVIDER_3D_SCENE_GRAPH_INSPECTOR, createSceneGraphInspectorProvider } from '../../../src/engine/debug/standard/threeD/providers/sceneGraphInspectorProvider.js'; -+import { createStandard3dPanels } from '../../../www/src/engine/debug/standard/threeD/panels/registerStandard3dPanels.js'; -+import { PANEL_3D_SCENE_GRAPH_INSPECTOR, create3dSceneGraphInspectorPanel } from '../../../www/src/engine/debug/standard/threeD/panels/panel3dSceneGraphInspector.js'; -+import { createStandard3dProviders } from '../../../www/src/engine/debug/standard/threeD/providers/registerStandard3dProviders.js'; -+import { PROVIDER_3D_SCENE_GRAPH_INSPECTOR, createSceneGraphInspectorProvider } from '../../../www/src/engine/debug/standard/threeD/providers/sceneGraphInspectorProvider.js'; - - export async function run() { - const provider = createSceneGraphInspectorProvider({ -diff --git a/dev/tests/tools/ToolLayoutDockingControlNormalization.test.mjs b/dev/tests/tools/ToolLayoutDockingControlNormalization.test.mjs -index a62321d5e..eb58a9213 100644 ---- a/dev/tests/tools/ToolLayoutDockingControlNormalization.test.mjs -+++ b/dev/tests/tools/ToolLayoutDockingControlNormalization.test.mjs -@@ -17,7 +17,7 @@ function assertIncludesAll(relativePath, patterns) { - } - - export async function run() { -- assertIncludesAll("src/shared/toolbox/platformShell.css", [ -+ assertIncludesAll("www/src/shared/toolbox/platformShell.css", [ - /\.tools-platform-layout-grid/, - /\.tools-platform-control-cluster--primary/, - /\.tools-platform-control-cluster--workflow/, -diff --git a/dev/tests/tools/TransformInspectorDebugPanel.test.mjs b/dev/tests/tools/TransformInspectorDebugPanel.test.mjs -index ab523c486..7e62624cb 100644 ---- a/dev/tests/tools/TransformInspectorDebugPanel.test.mjs -+++ b/dev/tests/tools/TransformInspectorDebugPanel.test.mjs -@@ -5,10 +5,10 @@ David Quesenberry - TransformInspectorDebugPanel.test.mjs - */ - import assert from "node:assert/strict"; --import { createStandard3dPanels } from '../../../src/engine/debug/standard/threeD/panels/registerStandard3dPanels.js'; --import { PANEL_3D_TRANSFORM_INSPECTOR, create3dTransformInspectorPanel } from '../../../src/engine/debug/standard/threeD/panels/panel3dTransformInspector.js'; --import { createStandard3dProviders } from '../../../src/engine/debug/standard/threeD/providers/registerStandard3dProviders.js'; --import { PROVIDER_3D_TRANSFORM_INSPECTOR, createTransformInspectorProvider } from '../../../src/engine/debug/standard/threeD/providers/transformInspectorProvider.js'; -+import { createStandard3dPanels } from '../../../www/src/engine/debug/standard/threeD/panels/registerStandard3dPanels.js'; -+import { PANEL_3D_TRANSFORM_INSPECTOR, create3dTransformInspectorPanel } from '../../../www/src/engine/debug/standard/threeD/panels/panel3dTransformInspector.js'; -+import { createStandard3dProviders } from '../../../www/src/engine/debug/standard/threeD/providers/registerStandard3dProviders.js'; -+import { PROVIDER_3D_TRANSFORM_INSPECTOR, createTransformInspectorProvider } from '../../../www/src/engine/debug/standard/threeD/providers/transformInspectorProvider.js'; - - export async function run() { - const provider = createTransformInspectorProvider({ -diff --git a/dev/tests/tools/VectorAssetSystem.test.mjs b/dev/tests/tools/VectorAssetSystem.test.mjs -index 4dad9e634..c58b963d2 100644 ---- a/dev/tests/tools/VectorAssetSystem.test.mjs -+++ b/dev/tests/tools/VectorAssetSystem.test.mjs -@@ -1,10 +1,10 @@ - import assert from "node:assert/strict"; --import { validateProjectAssetState } from "../../../src/shared/toolbox/projectAssetValidation.js"; --import { buildProjectPackage } from "../../../src/shared/toolbox/projectPackaging.js"; --import { loadPackagedProjectRuntime } from "../../../src/shared/toolbox/runtimeAssetLoader.js"; --import { buildVectorAssetSystem, createVectorAssetSystemFixture } from "../../../src/shared/toolbox/vectorAssetSystem.js"; --import { normalizeSvgToVectorAsset, summarizeVectorAssetDefinition } from "../../../src/shared/toolbox/vector/vectorAssetBridge.js"; --import { VECTOR_ASSET_FORMAT } from "../../../src/shared/toolbox/vector/vectorAssetContract.js"; -+import { validateProjectAssetState } from "../../../www/src/shared/toolbox/projectAssetValidation.js"; -+import { buildProjectPackage } from "../../../www/src/shared/toolbox/projectPackaging.js"; -+import { loadPackagedProjectRuntime } from "../../../www/src/shared/toolbox/runtimeAssetLoader.js"; -+import { buildVectorAssetSystem, createVectorAssetSystemFixture } from "../../../www/src/shared/toolbox/vectorAssetSystem.js"; -+import { normalizeSvgToVectorAsset, summarizeVectorAssetDefinition } from "../../../www/src/shared/toolbox/vector/vectorAssetBridge.js"; -+import { VECTOR_ASSET_FORMAT } from "../../../www/src/shared/toolbox/vector/vectorAssetContract.js"; - - export async function run() { - const normalized = normalizeSvgToVectorAsset({ -diff --git a/dev/tests/tools/VectorGeometryRuntime.test.mjs b/dev/tests/tools/VectorGeometryRuntime.test.mjs -index 52a7b1d9d..417752f0c 100644 ---- a/dev/tests/tools/VectorGeometryRuntime.test.mjs -+++ b/dev/tests/tools/VectorGeometryRuntime.test.mjs -@@ -1,13 +1,13 @@ - import assert from "node:assert/strict"; --import { loadPackagedProjectRuntime } from "../../../src/shared/toolbox/runtimeAssetLoader.js"; -+import { loadPackagedProjectRuntime } from "../../../www/src/shared/toolbox/runtimeAssetLoader.js"; - import { - inspectVectorGeometryRuntimeAsset, - prepareVectorGeometryRuntimeAsset, - summarizeVectorGeometryRuntime, - VECTOR_GEOMETRY_RUNTIME_POLICY --} from "../../../src/shared/toolbox/vectorGeometryRuntime.js"; --import { normalizeSvgToVectorAsset } from "../../../src/shared/toolbox/vector/vectorAssetBridge.js"; --import { VECTOR_ASSET_FORMAT } from "../../../src/shared/toolbox/vector/vectorAssetContract.js"; -+} from "../../../www/src/shared/toolbox/vectorGeometryRuntime.js"; -+import { normalizeSvgToVectorAsset } from "../../../www/src/shared/toolbox/vector/vectorAssetBridge.js"; -+import { VECTOR_ASSET_FORMAT } from "../../../www/src/shared/toolbox/vector/vectorAssetContract.js"; - import { - computeBoundsFromPoints, - createPoint, -@@ -16,7 +16,7 @@ import { - scalePoint, - transformPoint, - translatePoint --} from "../../../src/shared/toolbox/vector/vectorGeometryMath.js"; -+} from "../../../www/src/shared/toolbox/vector/vectorGeometryMath.js"; - - function createContractAsset() { - return { -diff --git a/dev/tests/tools/VectorNativeTemplate.test.mjs b/dev/tests/tools/VectorNativeTemplate.test.mjs -index a9fea5e08..f4a3f9b6a 100644 ---- a/dev/tests/tools/VectorNativeTemplate.test.mjs -+++ b/dev/tests/tools/VectorNativeTemplate.test.mjs -@@ -1,5 +1,5 @@ - import assert from "node:assert/strict"; --import { buildVectorNativeTemplate, createVectorNativeTemplateDefinition, summarizeVectorNativeTemplate } from "../../../src/shared/toolbox/vectorNativeTemplate.js"; -+import { buildVectorNativeTemplate, createVectorNativeTemplateDefinition, summarizeVectorNativeTemplate } from "../../../www/src/shared/toolbox/vectorNativeTemplate.js"; - - export async function run() { - const definition = createVectorNativeTemplateDefinition(); -diff --git a/dev/tests/vector/VectorMath.test.mjs b/dev/tests/vector/VectorMath.test.mjs -index 776b44610..f7d493055 100644 ---- a/dev/tests/vector/VectorMath.test.mjs -+++ b/dev/tests/vector/VectorMath.test.mjs -@@ -5,7 +5,7 @@ - VectorMath.test.mjs - */ - import assert from 'node:assert/strict'; --import { vectorFromAngle } from '../../../src/shared/math/vectorMath.js'; -+import { vectorFromAngle } from '../../../www/src/shared/math/vectorMath.js'; - - function assertClose(actual, expected, tolerance = 1e-9) { - assert.equal(Math.abs(actual - expected) <= tolerance, true); -diff --git a/dev/tests/world/WorldGameStateAuthoritativeHandoff.test.mjs b/dev/tests/world/WorldGameStateAuthoritativeHandoff.test.mjs -index a7e6f48d0..62874163e 100644 ---- a/dev/tests/world/WorldGameStateAuthoritativeHandoff.test.mjs -+++ b/dev/tests/world/WorldGameStateAuthoritativeHandoff.test.mjs -@@ -8,9 +8,9 @@ import assert from 'node:assert/strict'; - import { - WORLD_GAME_STATE_EVENT_TYPES, - WORLD_GAME_STATE_FEATURE_GATES --} from '../../../src/advanced/state/constants.js'; --import { createWorldGameStateSystem } from '../../../src/advanced/state/createWorldGameStateSystem.js'; --import { registerWorldGameStateSystem } from '../../../src/advanced/state/integration/registerWorldGameStateSystem.js'; -+} from '../../../www/src/advanced/state/constants.js'; -+import { createWorldGameStateSystem } from '../../../www/src/advanced/state/createWorldGameStateSystem.js'; -+import { registerWorldGameStateSystem } from '../../../www/src/advanced/state/integration/registerWorldGameStateSystem.js'; - - function createEventPipeline() { - const listenersByType = new Map(); -diff --git a/dev/tests/world/WorldGameStateAuthoritativeScore.test.mjs b/dev/tests/world/WorldGameStateAuthoritativeScore.test.mjs -index 86421e098..ecb5ffab1 100644 ---- a/dev/tests/world/WorldGameStateAuthoritativeScore.test.mjs -+++ b/dev/tests/world/WorldGameStateAuthoritativeScore.test.mjs -@@ -5,9 +5,9 @@ David Quesenberry - WorldGameStateAuthoritativeScore.test.mjs - */ - import assert from 'node:assert/strict'; --import { WORLD_GAME_STATE_FEATURE_GATES } from '../../../src/advanced/state/constants.js'; --import { createWorldGameStateSystem } from '../../../src/advanced/state/createWorldGameStateSystem.js'; --import { registerWorldGameStateSystem } from '../../../src/advanced/state/integration/registerWorldGameStateSystem.js'; -+import { WORLD_GAME_STATE_FEATURE_GATES } from '../../../www/src/advanced/state/constants.js'; -+import { createWorldGameStateSystem } from '../../../www/src/advanced/state/createWorldGameStateSystem.js'; -+import { registerWorldGameStateSystem } from '../../../www/src/advanced/state/integration/registerWorldGameStateSystem.js'; - - function createEventPipeline() { - const listenersByType = new Map(); -diff --git a/dev/tests/world/WorldGameStateSystem.test.mjs b/dev/tests/world/WorldGameStateSystem.test.mjs -index 89410ecfe..40a67eb02 100644 ---- a/dev/tests/world/WorldGameStateSystem.test.mjs -+++ b/dev/tests/world/WorldGameStateSystem.test.mjs -@@ -8,14 +8,14 @@ import assert from 'node:assert/strict'; - import { - WORLD_GAME_STATE_EVENT_TYPES, - WORLD_GAME_STATE_SYSTEM_ID --} from '../../../src/advanced/state/constants.js'; --import { createInitialWorldGameState } from '../../../src/advanced/state/initialState.js'; --import { createObjectiveProgressMirrorConsumer } from '../../../src/advanced/state/consumers/createObjectiveProgressMirrorConsumer.js'; -+} from '../../../www/src/advanced/state/constants.js'; -+import { createInitialWorldGameState } from '../../../www/src/advanced/state/initialState.js'; -+import { createObjectiveProgressMirrorConsumer } from '../../../www/src/advanced/state/consumers/createObjectiveProgressMirrorConsumer.js'; - import { - createStateEventEnvelope as createStateContractEventEnvelope, --} from '../../../src/advanced/state/events.js'; --import { createWorldGameStateSystem } from '../../../src/advanced/state/createWorldGameStateSystem.js'; --import { registerWorldGameStateSystem } from '../../../src/advanced/state/integration/registerWorldGameStateSystem.js'; -+} from '../../../www/src/advanced/state/events.js'; -+import { createWorldGameStateSystem } from '../../../www/src/advanced/state/createWorldGameStateSystem.js'; -+import { registerWorldGameStateSystem } from '../../../www/src/advanced/state/integration/registerWorldGameStateSystem.js'; - - function createLocalEventPipeline() { - const listenersByType = new Map(); -diff --git a/dev/tests/world/WorldSystems.test.mjs b/dev/tests/world/WorldSystems.test.mjs -index 3b9105850..5c67e7483 100644 ---- a/dev/tests/world/WorldSystems.test.mjs -+++ b/dev/tests/world/WorldSystems.test.mjs -@@ -5,14 +5,14 @@ David Quesenberry - WorldSystems.test.mjs - */ - import assert from 'node:assert/strict'; --import EventBus from '../../../src/engine/events/EventBus.js'; --import CutsceneSystem from '../../../src/engine/world/CutsceneSystem.js'; --import DayNightCycle from '../../../src/engine/world/DayNightCycle.js'; --import EventScriptSystem from '../../../src/engine/world/EventScriptSystem.js'; --import QuestSystem from '../../../src/engine/world/QuestSystem.js'; --import SpawnSystem from '../../../src/engine/world/SpawnSystem.js'; --import WeatherSystem from '../../../src/engine/world/WeatherSystem.js'; --import WorldStreamingSystem from '../../../src/engine/world/WorldStreamingSystem.js'; -+import EventBus from '../../../www/src/engine/events/EventBus.js'; -+import CutsceneSystem from '../../../www/src/engine/world/CutsceneSystem.js'; -+import DayNightCycle from '../../../www/src/engine/world/DayNightCycle.js'; -+import EventScriptSystem from '../../../www/src/engine/world/EventScriptSystem.js'; -+import QuestSystem from '../../../www/src/engine/world/QuestSystem.js'; -+import SpawnSystem from '../../../www/src/engine/world/SpawnSystem.js'; -+import WeatherSystem from '../../../www/src/engine/world/WeatherSystem.js'; -+import WorldStreamingSystem from '../../../www/src/engine/world/WorldStreamingSystem.js'; - - export function run() { - const quests = new QuestSystem([{ id: 'collect', required: 2 }]); -diff --git a/dev/tools/toolbox-dev/advanced/debugMacroExecutor.js b/dev/tools/toolbox-dev/advanced/debugMacroExecutor.js -index 8eb740336..1de3aded3 100644 ---- a/dev/tools/toolbox-dev/advanced/debugMacroExecutor.js -+++ b/dev/tools/toolbox-dev/advanced/debugMacroExecutor.js -@@ -5,7 +5,7 @@ David Quesenberry - debugMacroExecutor.js - */ - --import { sanitizeText } from "../../../../src/engine/debug/inspectors/shared/inspectorUtils.js"; -+import { sanitizeText } from "../../../../www/src/engine/debug/inspectors/shared/inspectorUtils.js"; - - function parseCommandName(commandLine) { - const line = sanitizeText(commandLine); -diff --git a/dev/tools/toolbox-dev/advanced/debugMacroRegistry.js b/dev/tools/toolbox-dev/advanced/debugMacroRegistry.js -index 0d862a099..6178d2931 100644 ---- a/dev/tools/toolbox-dev/advanced/debugMacroRegistry.js -+++ b/dev/tools/toolbox-dev/advanced/debugMacroRegistry.js -@@ -5,8 +5,8 @@ David Quesenberry - debugMacroRegistry.js - */ - --import { sanitizeText } from "../../../../src/engine/debug/inspectors/shared/inspectorUtils.js"; --import { cloneJson } from "../../../../src/shared/json/clone.js"; -+import { sanitizeText } from "../../../../www/src/engine/debug/inspectors/shared/inspectorUtils.js"; -+import { cloneJson } from "../../../../www/src/shared/json/clone.js"; - - function asStepArray(value) { - if (!Array.isArray(value)) { -diff --git a/dev/tools/toolbox-dev/advanced/debugPanelGroupRegistry.js b/dev/tools/toolbox-dev/advanced/debugPanelGroupRegistry.js -index 357f4d490..0734216c4 100644 ---- a/dev/tools/toolbox-dev/advanced/debugPanelGroupRegistry.js -+++ b/dev/tools/toolbox-dev/advanced/debugPanelGroupRegistry.js -@@ -5,9 +5,9 @@ David Quesenberry - debugPanelGroupRegistry.js - */ - --import { sanitizeText } from "../../../../src/engine/debug/inspectors/shared/inspectorUtils.js"; --import { asStringArray } from "../../../../src/shared/array/arrays.js"; --import { cloneJson } from "../../../../src/shared/json/clone.js"; -+import { sanitizeText } from "../../../../www/src/engine/debug/inspectors/shared/inspectorUtils.js"; -+import { asStringArray } from "../../../../www/src/shared/array/arrays.js"; -+import { cloneJson } from "../../../../www/src/shared/json/clone.js"; - - function normalizeGroupDescriptor(descriptor = {}) { - const groupId = sanitizeText(descriptor.groupId); -diff --git a/dev/tools/toolbox-dev/canvasDebugHudRenderer.js b/dev/tools/toolbox-dev/canvasDebugHudRenderer.js -index 691b1941b..530fbe50e 100644 ---- a/dev/tools/toolbox-dev/canvasDebugHudRenderer.js -+++ b/dev/tools/toolbox-dev/canvasDebugHudRenderer.js -@@ -5,7 +5,7 @@ David Quesenberry - canvasDebugHudRenderer.js - */ - --import { sanitizeText } from "../../../src/engine/debug/inspectors/shared/inspectorUtils.js"; -+import { sanitizeText } from "../../../www/src/engine/debug/inspectors/shared/inspectorUtils.js"; - - function toArrayLines(lines) { - return Array.isArray(lines) -diff --git a/dev/tools/toolbox-dev/checkSharedExtractionGuard.baseline.json b/dev/tools/toolbox-dev/checkSharedExtractionGuard.baseline.json -index 00919e7a3..c4a7df71b 100644 ---- a/dev/tools/toolbox-dev/checkSharedExtractionGuard.baseline.json -+++ b/dev/tools/toolbox-dev/checkSharedExtractionGuard.baseline.json -@@ -842,167 +842,167 @@ - "match": "rule:helper-fn-isPlainObject" - }, - { -- "file": "src/advanced/promotion/createPromotionGate.js", -+ "file": "www/src/advanced/promotion/createPromotionGate.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/advanced/promotion/createPromotionGate.js", -+ "file": "www/src/advanced/promotion/createPromotionGate.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/advanced/promotion/createPromotionGate.js", -+ "file": "www/src/advanced/promotion/createPromotionGate.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/advanced/promotion/createPromotionGate.js", -+ "file": "www/src/advanced/promotion/createPromotionGate.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/advanced/promotion/createPromotionGate.js", -+ "file": "www/src/advanced/promotion/createPromotionGate.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/advanced/promotion/createPromotionGate.js", -+ "file": "www/src/advanced/promotion/createPromotionGate.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/advanced/state/createWorldGameStateSystem.js", -+ "file": "www/src/advanced/state/createWorldGameStateSystem.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/advanced/state/createWorldGameStateSystem.js", -+ "file": "www/src/advanced/state/createWorldGameStateSystem.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/advanced/state/createWorldGameStateSystem.js", -+ "file": "www/src/advanced/state/createWorldGameStateSystem.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/advanced/state/createWorldGameStateSystem.js", -+ "file": "www/src/advanced/state/createWorldGameStateSystem.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/advanced/state/createWorldGameStateSystem.js", -+ "file": "www/src/advanced/state/createWorldGameStateSystem.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/advanced/state/createWorldGameStateSystem.js", -+ "file": "www/src/advanced/state/createWorldGameStateSystem.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/advanced/state/createWorldGameStateSystem.js", -+ "file": "www/src/advanced/state/createWorldGameStateSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/advanced/state/createWorldGameStateSystem.js", -+ "file": "www/src/advanced/state/createWorldGameStateSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/advanced/state/createWorldGameStateSystem.js", -+ "file": "www/src/advanced/state/createWorldGameStateSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/advanced/state/events.js", -+ "file": "www/src/advanced/state/events.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/advanced/state/events.js", -+ "file": "www/src/advanced/state/events.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/advanced/state/events.js", -+ "file": "www/src/advanced/state/events.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/advanced/state/initialState.js", -+ "file": "www/src/advanced/state/initialState.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/advanced/state/initialState.js", -+ "file": "www/src/advanced/state/initialState.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/advanced/state/transitions.js", -+ "file": "www/src/advanced/state/transitions.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/advanced/state/transitions.js", -+ "file": "www/src/advanced/state/transitions.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/advanced/state/transitions.js", -+ "file": "www/src/advanced/state/transitions.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/advanced/state/transitions.js", -+ "file": "www/src/advanced/state/transitions.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/advanced/state/transitions.js", -+ "file": "www/src/advanced/state/transitions.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/advanced/state/transitions.js", -+ "file": "www/src/advanced/state/transitions.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/advanced/state/transitions.js", -+ "file": "www/src/advanced/state/transitions.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/advanced/state/transitions.js", -+ "file": "www/src/advanced/state/transitions.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/advanced/state/transitions.js", -+ "file": "www/src/advanced/state/transitions.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/advanced/state/utils.js", -+ "file": "www/src/advanced/state/utils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/advanced/state/utils.js", -+ "file": "www/src/advanced/state/utils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/advanced/state/utils.js", -+ "file": "www/src/advanced/state/utils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/advanced/state/utils.js", -+ "file": "www/src/advanced/state/utils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, -@@ -1137,1967 +1137,1967 @@ - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/ai/GroupBehaviors.js", -+ "file": "www/src/engine/ai/GroupBehaviors.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/ai/GroupBehaviors.js", -+ "file": "www/src/engine/ai/GroupBehaviors.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/audio/MediaTrackService.js", -+ "file": "www/src/engine/audio/MediaTrackService.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/audio/PreviewSynthEngine.js", -+ "file": "www/src/engine/audio/PreviewSynthEngine.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/audio/PreviewSynthEngine.js", -+ "file": "www/src/engine/audio/PreviewSynthEngine.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/audio/PreviewSynthEngine.js", -+ "file": "www/src/engine/audio/PreviewSynthEngine.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/audio/PreviewSynthEngine.js", -+ "file": "www/src/engine/audio/PreviewSynthEngine.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/audio/PreviewSynthEngine.js", -+ "file": "www/src/engine/audio/PreviewSynthEngine.js", - "type": "renamed-helper-clone", - "match": "rule:renamed-helper-finiteNumber" - }, - { -- "file": "src/engine/audio/SongSheetParser.js", -+ "file": "www/src/engine/audio/SongSheetParser.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/audio/SoundFontPreviewEngine.js", -+ "file": "www/src/engine/audio/SoundFontPreviewEngine.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/audio/SoundFontPreviewEngine.js", -+ "file": "www/src/engine/audio/SoundFontPreviewEngine.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/audio/SoundFontPreviewEngine.js", -+ "file": "www/src/engine/audio/SoundFontPreviewEngine.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/audio/SoundFontPreviewEngine.js", -+ "file": "www/src/engine/audio/SoundFontPreviewEngine.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/audio/SoundFontPreviewEngine.js", -+ "file": "www/src/engine/audio/SoundFontPreviewEngine.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/audio/SoundFontPreviewEngine.js", -+ "file": "www/src/engine/audio/SoundFontPreviewEngine.js", - "type": "renamed-helper-clone", - "match": "rule:renamed-helper-finiteNumber" - }, - { -- "file": "src/engine/audio/TextToSpeechEngine.js", -+ "file": "www/src/engine/audio/TextToSpeechEngine.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/audio/TextToSpeechEngine.js", -+ "file": "www/src/engine/audio/TextToSpeechEngine.js", - "type": "renamed-helper-clone", - "match": "rule:renamed-helper-finiteNumber" - }, - { -- "file": "src/engine/camera/Camera2D.js", -+ "file": "www/src/engine/camera/Camera2D.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/camera/Camera2D.js", -+ "file": "www/src/engine/camera/Camera2D.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/camera/Camera3D.js", -+ "file": "www/src/engine/camera/Camera3D.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/camera/Camera3D.js", -+ "file": "www/src/engine/camera/Camera3D.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/camera/Camera3D.js", -+ "file": "www/src/engine/camera/Camera3D.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/camera/Camera3D.js", -+ "file": "www/src/engine/camera/Camera3D.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/camera/Camera3D.js", -+ "file": "www/src/engine/camera/Camera3D.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/camera/Camera3D.js", -+ "file": "www/src/engine/camera/Camera3D.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/camera/Camera3D.js", -+ "file": "www/src/engine/camera/Camera3D.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/camera/Camera3D.js", -+ "file": "www/src/engine/camera/Camera3D.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/camera/Camera3D.js", -+ "file": "www/src/engine/camera/Camera3D.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/camera/ZoneCameraSystem.js", -+ "file": "www/src/engine/camera/ZoneCameraSystem.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/camera/ZoneCameraSystem.js", -+ "file": "www/src/engine/camera/ZoneCameraSystem.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/collision/combat/Combat.js", -+ "file": "www/src/engine/collision/combat/Combat.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/collision/combat/Combat.js", -+ "file": "www/src/engine/collision/combat/Combat.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/collision/hitboxCollision.js", -+ "file": "www/src/engine/collision/hitboxCollision.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/collision/hitboxCollision.js", -+ "file": "www/src/engine/collision/hitboxCollision.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/collision/hitboxCollision.js", -+ "file": "www/src/engine/collision/hitboxCollision.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/collision/hitboxCollision.js", -+ "file": "www/src/engine/collision/hitboxCollision.js", - "type": "renamed-helper-clone", - "match": "rule:renamed-helper-finiteNumber" - }, - { -- "file": "src/engine/collision/objectVector.js", -+ "file": "www/src/engine/collision/objectVector.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/collision/objectVector.js", -+ "file": "www/src/engine/collision/objectVector.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/collision/objectVector.js", -+ "file": "www/src/engine/collision/objectVector.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/collision/objectVector.js", -+ "file": "www/src/engine/collision/objectVector.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/collision/objectVector.js", -+ "file": "www/src/engine/collision/objectVector.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/collision/objectVector.js", -+ "file": "www/src/engine/collision/objectVector.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/collision/polygon.js", -+ "file": "www/src/engine/collision/polygon.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/collision/polygon.js", -+ "file": "www/src/engine/collision/polygon.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/core/FixedTicker.js", -+ "file": "www/src/engine/core/FixedTicker.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/core/FixedTicker.js", -+ "file": "www/src/engine/core/FixedTicker.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/core/FrameClock.js", -+ "file": "www/src/engine/core/FrameClock.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/core/FrameClock.js", -+ "file": "www/src/engine/core/FrameClock.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/debug/DebugOverlayLayout.js", -+ "file": "www/src/engine/debug/DebugOverlayLayout.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/debug/inspectors/bootstrap/createInspectorSurfaceIntegration.js", -+ "file": "www/src/engine/debug/inspectors/bootstrap/createInspectorSurfaceIntegration.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/inspectors/bootstrap/createInspectorSurfaceIntegration.js", -+ "file": "www/src/engine/debug/inspectors/bootstrap/createInspectorSurfaceIntegration.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/debug/inspectors/commands/registerInspectorCommands.js", -+ "file": "www/src/engine/debug/inspectors/commands/registerInspectorCommands.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/inspectors/commands/registerInspectorCommands.js", -+ "file": "www/src/engine/debug/inspectors/commands/registerInspectorCommands.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/inspectors/commands/registerInspectorCommands.js", -+ "file": "www/src/engine/debug/inspectors/commands/registerInspectorCommands.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/debug/inspectors/host/debugInspectorHost.js", -+ "file": "www/src/engine/debug/inspectors/host/debugInspectorHost.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/inspectors/host/debugInspectorHost.js", -+ "file": "www/src/engine/debug/inspectors/host/debugInspectorHost.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/debug/inspectors/host/debugInspectorHost.js", -+ "file": "www/src/engine/debug/inspectors/host/debugInspectorHost.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/debug/inspectors/host/debugInspectorHost.js", -+ "file": "www/src/engine/debug/inspectors/host/debugInspectorHost.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/debug/inspectors/registry/debugInspectorRegistry.js", -+ "file": "www/src/engine/debug/inspectors/registry/debugInspectorRegistry.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/inspectors/shared/inspectorUtils.js", -+ "file": "www/src/engine/debug/inspectors/shared/inspectorUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/inspectors/shared/inspectorUtils.js", -+ "file": "www/src/engine/debug/inspectors/shared/inspectorUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/inspectors/shared/inspectorUtils.js", -+ "file": "www/src/engine/debug/inspectors/shared/inspectorUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/inspectors/shared/inspectorUtils.js", -+ "file": "www/src/engine/debug/inspectors/shared/inspectorUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/inspectors/shared/inspectorUtils.js", -+ "file": "www/src/engine/debug/inspectors/shared/inspectorUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/debug/inspectors/shared/inspectorUtils.js", -+ "file": "www/src/engine/debug/inspectors/shared/inspectorUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/debug/inspectors/shared/inspectorUtils.js", -+ "file": "www/src/engine/debug/inspectors/shared/inspectorUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/debug/inspectors/shared/inspectorUtils.js", -+ "file": "www/src/engine/debug/inspectors/shared/inspectorUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/debug/inspectors/shared/inspectorUtils.js", -+ "file": "www/src/engine/debug/inspectors/shared/inspectorUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-4" - }, - { -- "file": "src/engine/debug/inspectors/shared/inspectorUtils.js", -+ "file": "www/src/engine/debug/inspectors/shared/inspectorUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-4" - }, - { -- "file": "src/engine/debug/inspectors/shared/inspectorUtils.js", -+ "file": "www/src/engine/debug/inspectors/shared/inspectorUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-4" - }, - { -- "file": "src/engine/debug/inspectors/shared/inspectorUtils.js", -+ "file": "www/src/engine/debug/inspectors/shared/inspectorUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-4" - }, - { -- "file": "src/engine/debug/inspectors/viewModels/componentInspectorViewModel.js", -+ "file": "www/src/engine/debug/inspectors/viewModels/componentInspectorViewModel.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/inspectors/viewModels/entityInspectorViewModel.js", -+ "file": "www/src/engine/debug/inspectors/viewModels/entityInspectorViewModel.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/inspectors/viewModels/entityInspectorViewModel.js", -+ "file": "www/src/engine/debug/inspectors/viewModels/entityInspectorViewModel.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/debug/inspectors/viewModels/eventStreamInspectorViewModel.js", -+ "file": "www/src/engine/debug/inspectors/viewModels/eventStreamInspectorViewModel.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/inspectors/viewModels/eventStreamInspectorViewModel.js", -+ "file": "www/src/engine/debug/inspectors/viewModels/eventStreamInspectorViewModel.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/debug/inspectors/viewModels/stateDiffInspectorViewModel.js", -+ "file": "www/src/engine/debug/inspectors/viewModels/stateDiffInspectorViewModel.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/inspectors/viewModels/stateDiffInspectorViewModel.js", -+ "file": "www/src/engine/debug/inspectors/viewModels/stateDiffInspectorViewModel.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/inspectors/viewModels/stateDiffInspectorViewModel.js", -+ "file": "www/src/engine/debug/inspectors/viewModels/stateDiffInspectorViewModel.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/debug/inspectors/viewModels/stateDiffInspectorViewModel.js", -+ "file": "www/src/engine/debug/inspectors/viewModels/stateDiffInspectorViewModel.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-4" - }, - { -- "file": "src/engine/debug/inspectors/viewModels/timelineInspectorViewModel.js", -+ "file": "www/src/engine/debug/inspectors/viewModels/timelineInspectorViewModel.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/inspectors/viewModels/timelineInspectorViewModel.js", -+ "file": "www/src/engine/debug/inspectors/viewModels/timelineInspectorViewModel.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/debug/inspectors/viewModels/timelineInspectorViewModel.js", -+ "file": "www/src/engine/debug/inspectors/viewModels/timelineInspectorViewModel.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/debug/network/bootstrap/createNetworkDebugSurfaceIntegration.js", -+ "file": "www/src/engine/debug/network/bootstrap/createNetworkDebugSurfaceIntegration.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/network/commands/networkDebugCommandPackBridge.js", -+ "file": "www/src/engine/debug/network/commands/networkDebugCommandPackBridge.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/network/dashboard/registerDashboardCommands.js", -+ "file": "www/src/engine/debug/network/dashboard/registerDashboardCommands.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/network/dashboard/registerDashboardCommands.js", -+ "file": "www/src/engine/debug/network/dashboard/registerDashboardCommands.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/network/dashboard/serverDashboardHost.js", -+ "file": "www/src/engine/debug/network/dashboard/serverDashboardHost.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/network/dashboard/serverDashboardMetrics.js", -+ "file": "www/src/engine/debug/network/dashboard/serverDashboardMetrics.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/network/dashboard/serverDashboardMetrics.js", -+ "file": "www/src/engine/debug/network/dashboard/serverDashboardMetrics.js", - "type": "inline-helper-clone", - "match": "rule:inline-arrow-number-is-finite" - }, - { -- "file": "src/engine/debug/network/dashboard/serverDashboardMetrics.js", -+ "file": "www/src/engine/debug/network/dashboard/serverDashboardMetrics.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/debug/network/dashboard/serverDashboardProviders.js", -+ "file": "www/src/engine/debug/network/dashboard/serverDashboardProviders.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/network/dashboard/serverDashboardRefreshModes.js", -+ "file": "www/src/engine/debug/network/dashboard/serverDashboardRefreshModes.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/network/dashboard/serverDashboardRegistry.js", -+ "file": "www/src/engine/debug/network/dashboard/serverDashboardRegistry.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/network/dashboard/serverDashboardRenderer.js", -+ "file": "www/src/engine/debug/network/dashboard/serverDashboardRenderer.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/network/dashboard/serverDashboardViewModel.js", -+ "file": "www/src/engine/debug/network/dashboard/serverDashboardViewModel.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/network/diagnostics/divergenceDiagnosticsModel.js", -+ "file": "www/src/engine/debug/network/diagnostics/divergenceDiagnosticsModel.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/network/diagnostics/latencyDiagnosticsModel.js", -+ "file": "www/src/engine/debug/network/diagnostics/latencyDiagnosticsModel.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/network/diagnostics/networkPromotionRecommendation.js", -+ "file": "www/src/engine/debug/network/diagnostics/networkPromotionRecommendation.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/network/diagnostics/replicationDiagnosticsModel.js", -+ "file": "www/src/engine/debug/network/diagnostics/replicationDiagnosticsModel.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/network/panels/networkDebugPanelRegistry.js", -+ "file": "www/src/engine/debug/network/panels/networkDebugPanelRegistry.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/network/panels/networkObservabilityPanels.js", -+ "file": "www/src/engine/debug/network/panels/networkObservabilityPanels.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/network/providers/networkDebugProviderRegistry.js", -+ "file": "www/src/engine/debug/network/providers/networkDebugProviderRegistry.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/network/shared/hostReadUtils.js", -+ "file": "www/src/engine/debug/network/shared/hostReadUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/network/shared/hostReadUtils.js", -+ "file": "www/src/engine/debug/network/shared/hostReadUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/debug/network/shared/hostReadUtils.js", -+ "file": "www/src/engine/debug/network/shared/hostReadUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-4" - }, - { -- "file": "src/engine/debug/network/shared/networkDebugUtils.js", -+ "file": "www/src/engine/debug/network/shared/networkDebugUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/network/shared/networkDebugUtils.js", -+ "file": "www/src/engine/debug/network/shared/networkDebugUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/network/shared/networkDebugUtils.js", -+ "file": "www/src/engine/debug/network/shared/networkDebugUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/network/shared/networkDebugUtils.js", -+ "file": "www/src/engine/debug/network/shared/networkDebugUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/network/shared/networkDebugUtils.js", -+ "file": "www/src/engine/debug/network/shared/networkDebugUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/network/shared/networkDebugUtils.js", -+ "file": "www/src/engine/debug/network/shared/networkDebugUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/network/shared/networkDebugUtils.js", -+ "file": "www/src/engine/debug/network/shared/networkDebugUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/debug/network/shared/networkDebugUtils.js", -+ "file": "www/src/engine/debug/network/shared/networkDebugUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/debug/network/shared/networkDebugUtils.js", -+ "file": "www/src/engine/debug/network/shared/networkDebugUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/debug/network/shared/networkDebugUtils.js", -+ "file": "www/src/engine/debug/network/shared/networkDebugUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/debug/network/shared/networkDebugUtils.js", -+ "file": "www/src/engine/debug/network/shared/networkDebugUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/debug/network/shared/networkDebugUtils.js", -+ "file": "www/src/engine/debug/network/shared/networkDebugUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/debug/network/shared/networkDebugUtils.js", -+ "file": "www/src/engine/debug/network/shared/networkDebugUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-4" - }, - { -- "file": "src/engine/debug/network/shared/networkDebugUtils.js", -+ "file": "www/src/engine/debug/network/shared/networkDebugUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-4" - }, - { -- "file": "src/engine/debug/network/shared/networkDebugUtils.js", -+ "file": "www/src/engine/debug/network/shared/networkDebugUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-4" - }, - { -- "file": "src/engine/debug/network/shared/networkDebugUtils.js", -+ "file": "www/src/engine/debug/network/shared/networkDebugUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-4" - }, - { -- "file": "src/engine/debug/network/shared/networkDebugUtils.js", -+ "file": "www/src/engine/debug/network/shared/networkDebugUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-4" - }, - { -- "file": "src/engine/debug/network/shared/networkDebugUtils.js", -+ "file": "www/src/engine/debug/network/shared/networkDebugUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-4" - }, - { -- "file": "src/engine/debug/network/shared/networkDebugUtils.js", -+ "file": "www/src/engine/debug/network/shared/networkDebugUtils.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/debug/panels/PromotionGatePanel.js", -+ "file": "www/src/engine/debug/panels/PromotionGatePanel.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/panels/PromotionGatePanel.js", -+ "file": "www/src/engine/debug/panels/PromotionGatePanel.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/debug/standard/threeD/bootstrap/createStandard3dDebugSurfaceIntegration.js", -+ "file": "www/src/engine/debug/standard/threeD/bootstrap/createStandard3dDebugSurfaceIntegration.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/standard/threeD/panels/panel3dCamera.js", -+ "file": "www/src/engine/debug/standard/threeD/panels/panel3dCamera.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/standard/threeD/panels/panel3dCamera.js", -+ "file": "www/src/engine/debug/standard/threeD/panels/panel3dCamera.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/debug/standard/threeD/panels/panel3dCamera.js", -+ "file": "www/src/engine/debug/standard/threeD/panels/panel3dCamera.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/debug/standard/threeD/panels/panel3dCamera.js", -+ "file": "www/src/engine/debug/standard/threeD/panels/panel3dCamera.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/debug/standard/threeD/panels/panel3dCollision.js", -+ "file": "www/src/engine/debug/standard/threeD/panels/panel3dCollision.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/standard/threeD/panels/panel3dCollisionOverlays.js", -+ "file": "www/src/engine/debug/standard/threeD/panels/panel3dCollisionOverlays.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/standard/threeD/panels/panel3dRenderPipelineStages.js", -+ "file": "www/src/engine/debug/standard/threeD/panels/panel3dRenderPipelineStages.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/standard/threeD/panels/panel3dRenderStages.js", -+ "file": "www/src/engine/debug/standard/threeD/panels/panel3dRenderStages.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/standard/threeD/panels/panel3dSceneGraph.js", -+ "file": "www/src/engine/debug/standard/threeD/panels/panel3dSceneGraph.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/standard/threeD/panels/panel3dSceneGraphInspector.js", -+ "file": "www/src/engine/debug/standard/threeD/panels/panel3dSceneGraphInspector.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/standard/threeD/panels/panel3dTransform.js", -+ "file": "www/src/engine/debug/standard/threeD/panels/panel3dTransform.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/standard/threeD/panels/panel3dTransformInspector.js", -+ "file": "www/src/engine/debug/standard/threeD/panels/panel3dTransformInspector.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/standard/threeD/panels/panel3dTransformInspector.js", -+ "file": "www/src/engine/debug/standard/threeD/panels/panel3dTransformInspector.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/debug/standard/threeD/panels/panel3dTransformInspector.js", -+ "file": "www/src/engine/debug/standard/threeD/panels/panel3dTransformInspector.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/debug/standard/threeD/panels/panel3dTransformInspector.js", -+ "file": "www/src/engine/debug/standard/threeD/panels/panel3dTransformInspector.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/debug/standard/threeD/providers/cameraSummaryProvider.js", -+ "file": "www/src/engine/debug/standard/threeD/providers/cameraSummaryProvider.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/standard/threeD/providers/collisionOverlaysProvider.js", -+ "file": "www/src/engine/debug/standard/threeD/providers/collisionOverlaysProvider.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/standard/threeD/providers/collisionSummaryProvider.js", -+ "file": "www/src/engine/debug/standard/threeD/providers/collisionSummaryProvider.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/standard/threeD/providers/renderPipelineStagesProvider.js", -+ "file": "www/src/engine/debug/standard/threeD/providers/renderPipelineStagesProvider.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/standard/threeD/providers/renderStageSummaryProvider.js", -+ "file": "www/src/engine/debug/standard/threeD/providers/renderStageSummaryProvider.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/standard/threeD/providers/sceneGraphInspectorProvider.js", -+ "file": "www/src/engine/debug/standard/threeD/providers/sceneGraphInspectorProvider.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/standard/threeD/providers/sceneGraphSummaryProvider.js", -+ "file": "www/src/engine/debug/standard/threeD/providers/sceneGraphSummaryProvider.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/standard/threeD/providers/transformInspectorProvider.js", -+ "file": "www/src/engine/debug/standard/threeD/providers/transformInspectorProvider.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/standard/threeD/providers/transformInspectorProvider.js", -+ "file": "www/src/engine/debug/standard/threeD/providers/transformInspectorProvider.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/debug/standard/threeD/providers/transformSummaryProvider.js", -+ "file": "www/src/engine/debug/standard/threeD/providers/transformSummaryProvider.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/standard/threeD/shared/threeDDebugUtils.js", -+ "file": "www/src/engine/debug/standard/threeD/shared/threeDDebugUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/standard/threeD/shared/threeDDebugUtils.js", -+ "file": "www/src/engine/debug/standard/threeD/shared/threeDDebugUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/standard/threeD/shared/threeDDebugUtils.js", -+ "file": "www/src/engine/debug/standard/threeD/shared/threeDDebugUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/standard/threeD/shared/threeDDebugUtils.js", -+ "file": "www/src/engine/debug/standard/threeD/shared/threeDDebugUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/debug/standard/threeD/shared/threeDDebugUtils.js", -+ "file": "www/src/engine/debug/standard/threeD/shared/threeDDebugUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/debug/standard/threeD/shared/threeDDebugUtils.js", -+ "file": "www/src/engine/debug/standard/threeD/shared/threeDDebugUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/debug/standard/threeD/shared/threeDDebugUtils.js", -+ "file": "www/src/engine/debug/standard/threeD/shared/threeDDebugUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/debug/standard/threeD/shared/threeDDebugUtils.js", -+ "file": "www/src/engine/debug/standard/threeD/shared/threeDDebugUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/debug/standard/threeD/shared/threeDDebugUtils.js", -+ "file": "www/src/engine/debug/standard/threeD/shared/threeDDebugUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-4" - }, - { -- "file": "src/engine/debug/standard/threeD/shared/threeDDebugUtils.js", -+ "file": "www/src/engine/debug/standard/threeD/shared/threeDDebugUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-4" - }, - { -- "file": "src/engine/debug/standard/threeD/shared/threeDDebugUtils.js", -+ "file": "www/src/engine/debug/standard/threeD/shared/threeDDebugUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-4" - }, - { -- "file": "src/engine/debug/standard/threeD/shared/threeDDebugUtils.js", -+ "file": "www/src/engine/debug/standard/threeD/shared/threeDDebugUtils.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-4" - }, - { -- "file": "src/engine/debug/standard/threeD/shared/threeDDebugUtils.js", -+ "file": "www/src/engine/debug/standard/threeD/shared/threeDDebugUtils.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/input/GamepadHapticsService.js", -+ "file": "www/src/engine/input/GamepadHapticsService.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/input/InputCaptureSession.js", -+ "file": "www/src/engine/input/InputCaptureSession.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/input/NormalizedInputRegistry.js", -+ "file": "www/src/engine/input/NormalizedInputRegistry.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/input/NormalizedInputRegistry.js", -+ "file": "www/src/engine/input/NormalizedInputRegistry.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/input/NormalizedInputRegistry.js", -+ "file": "www/src/engine/input/NormalizedInputRegistry.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/input/PointerDragState.js", -+ "file": "www/src/engine/input/PointerDragState.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/input/PointerDragState.js", -+ "file": "www/src/engine/input/PointerDragState.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/input/PointerDragState.js", -+ "file": "www/src/engine/input/PointerDragState.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/input/PointerDragState.js", -+ "file": "www/src/engine/input/PointerDragState.js", - "type": "renamed-helper-clone", - "match": "rule:renamed-helper-finiteNumber" - }, - { -- "file": "src/engine/network/bootstrap/NetworkingLayer.js", -+ "file": "www/src/engine/network/bootstrap/NetworkingLayer.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/network/bootstrap/NetworkingLayer.js", -+ "file": "www/src/engine/network/bootstrap/NetworkingLayer.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/network/client/ClientReplicationApplicationLayer.js", -+ "file": "www/src/engine/network/client/ClientReplicationApplicationLayer.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/network/client/ClientReplicationApplicationLayer.js", -+ "file": "www/src/engine/network/client/ClientReplicationApplicationLayer.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/network/client/PredictionReconciler.js", -+ "file": "www/src/engine/network/client/PredictionReconciler.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/network/client/PredictionReconciler.js", -+ "file": "www/src/engine/network/client/PredictionReconciler.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/network/replication/ReplicationMessageContract.js", -+ "file": "www/src/engine/network/replication/ReplicationMessageContract.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/network/replication/ReplicationMessageContract.js", -+ "file": "www/src/engine/network/replication/ReplicationMessageContract.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/network/replication/ReplicationMessageContract.js", -+ "file": "www/src/engine/network/replication/ReplicationMessageContract.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/network/replication/ReplicationMessageContract.js", -+ "file": "www/src/engine/network/replication/ReplicationMessageContract.js", - "type": "local-helper-definition", - "match": "rule:helper-fn-isPlainObject" - }, - { -- "file": "src/engine/network/replication/StateReplication.js", -+ "file": "www/src/engine/network/replication/StateReplication.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/network/replication/StateReplication.js", -+ "file": "www/src/engine/network/replication/StateReplication.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/network/server/AuthoritativeInputIngestionContract.js", -+ "file": "www/src/engine/network/server/AuthoritativeInputIngestionContract.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/network/server/AuthoritativeInputIngestionContract.js", -+ "file": "www/src/engine/network/server/AuthoritativeInputIngestionContract.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/network/server/AuthoritativeInputIngestionContract.js", -+ "file": "www/src/engine/network/server/AuthoritativeInputIngestionContract.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/network/server/AuthoritativeInputIngestionContract.js", -+ "file": "www/src/engine/network/server/AuthoritativeInputIngestionContract.js", - "type": "local-helper-definition", - "match": "rule:helper-fn-isPlainObject" - }, - { -- "file": "src/engine/network/server/AuthoritativeServerRuntime.js", -+ "file": "www/src/engine/network/server/AuthoritativeServerRuntime.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/network/server/AuthoritativeServerRuntime.js", -+ "file": "www/src/engine/network/server/AuthoritativeServerRuntime.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/network/server/AuthoritativeServerRuntime.js", -+ "file": "www/src/engine/network/server/AuthoritativeServerRuntime.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/network/server/AuthoritativeServerRuntime.js", -+ "file": "www/src/engine/network/server/AuthoritativeServerRuntime.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/network/session/ChatPresenceLayer.js", -+ "file": "www/src/engine/network/session/ChatPresenceLayer.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/network/session/ChatPresenceLayer.js", -+ "file": "www/src/engine/network/session/ChatPresenceLayer.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/network/session/HandshakeSimulator.js", -+ "file": "www/src/engine/network/session/HandshakeSimulator.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/network/session/HandshakeSimulator.js", -+ "file": "www/src/engine/network/session/HandshakeSimulator.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/network/session/LobbySessionManager.js", -+ "file": "www/src/engine/network/session/LobbySessionManager.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/network/session/LobbySessionManager.js", -+ "file": "www/src/engine/network/session/LobbySessionManager.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/network/transport/LoopbackTransport.js", -+ "file": "www/src/engine/network/transport/LoopbackTransport.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/network/transport/LoopbackTransport.js", -+ "file": "www/src/engine/network/transport/LoopbackTransport.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/network/transport/Serializer.js", -+ "file": "www/src/engine/network/transport/Serializer.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/network/transport/Serializer.js", -+ "file": "www/src/engine/network/transport/Serializer.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/physics/arcadeBody.js", -+ "file": "www/src/engine/physics/arcadeBody.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/physics/arcadeBody.js", -+ "file": "www/src/engine/physics/arcadeBody.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/physics/collision3d.js", -+ "file": "www/src/engine/physics/collision3d.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/physics/collision3d.js", -+ "file": "www/src/engine/physics/collision3d.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/physics/integration3d.js", -+ "file": "www/src/engine/physics/integration3d.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/physics/integration3d.js", -+ "file": "www/src/engine/physics/integration3d.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/release/SettingsSystem.js", -+ "file": "www/src/engine/release/SettingsSystem.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/release/SettingsSystem.js", -+ "file": "www/src/engine/release/SettingsSystem.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/rendering/ObjectVectorRuntimeAssetService.js", -+ "file": "www/src/engine/rendering/ObjectVectorRuntimeAssetService.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/rendering/ObjectVectorRuntimeAssetService.js", -+ "file": "www/src/engine/rendering/ObjectVectorRuntimeAssetService.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/rendering/ObjectVectorRuntimeAssetService.js", -+ "file": "www/src/engine/rendering/ObjectVectorRuntimeAssetService.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/rendering/ObjectVectorRuntimeAssetService.js", -+ "file": "www/src/engine/rendering/ObjectVectorRuntimeAssetService.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/rendering/ObjectVectorRuntimeAssetService.js", -+ "file": "www/src/engine/rendering/ObjectVectorRuntimeAssetService.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/rendering/ObjectVectorRuntimeAssetService.js", -+ "file": "www/src/engine/rendering/ObjectVectorRuntimeAssetService.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/rendering/ObjectVectorRuntimeAssetService.js", -+ "file": "www/src/engine/rendering/ObjectVectorRuntimeAssetService.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/rendering/ObjectVectorRuntimeAssetService.js", -+ "file": "www/src/engine/rendering/ObjectVectorRuntimeAssetService.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/rendering/ObjectVectorRuntimeAssetService.js", -+ "file": "www/src/engine/rendering/ObjectVectorRuntimeAssetService.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/rendering/ObjectVectorRuntimeAssetService.js", -+ "file": "www/src/engine/rendering/ObjectVectorRuntimeAssetService.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/rendering/ObjectVectorRuntimeAssetService.js", -+ "file": "www/src/engine/rendering/ObjectVectorRuntimeAssetService.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/rendering/ObjectVectorRuntimeAssetService.js", -+ "file": "www/src/engine/rendering/ObjectVectorRuntimeAssetService.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/rendering/ObjectVectorTransformService.js", -+ "file": "www/src/engine/rendering/ObjectVectorTransformService.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/rendering/ObjectVectorTransformService.js", -+ "file": "www/src/engine/rendering/ObjectVectorTransformService.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/rendering/ObjectVectorTransformService.js", -+ "file": "www/src/engine/rendering/ObjectVectorTransformService.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/rendering/ObjectVectorTransformService.js", -+ "file": "www/src/engine/rendering/ObjectVectorTransformService.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/rendering/ObjectVectorTransformService.js", -+ "file": "www/src/engine/rendering/ObjectVectorTransformService.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/rendering/ObjectVectorTransformService.js", -+ "file": "www/src/engine/rendering/ObjectVectorTransformService.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/rendering/ObjectVectorTransformService.js", -+ "file": "www/src/engine/rendering/ObjectVectorTransformService.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/rendering/ObjectVectorTransformService.js", -+ "file": "www/src/engine/rendering/ObjectVectorTransformService.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/rendering/ObjectVectorTransformService.js", -+ "file": "www/src/engine/rendering/ObjectVectorTransformService.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/rendering/ObjectVectorTransformService.js", -+ "file": "www/src/engine/rendering/ObjectVectorTransformService.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/rendering/WorldScreenTransformService.js", -+ "file": "www/src/engine/rendering/WorldScreenTransformService.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/rendering/WorldScreenTransformService.js", -+ "file": "www/src/engine/rendering/WorldScreenTransformService.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/rendering/WorldScreenTransformService.js", -+ "file": "www/src/engine/rendering/WorldScreenTransformService.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/rendering/WorldScreenTransformService.js", -+ "file": "www/src/engine/rendering/WorldScreenTransformService.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/rendering/WorldScreenTransformService.js", -+ "file": "www/src/engine/rendering/WorldScreenTransformService.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/rendering/WorldScreenTransformService.js", -+ "file": "www/src/engine/rendering/WorldScreenTransformService.js", - "type": "renamed-helper-clone", - "match": "rule:renamed-helper-finiteNumber" - }, - { -- "file": "src/engine/replay/ReplayModel.js", -+ "file": "www/src/engine/replay/ReplayModel.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/replay/ReplayModel.js", -+ "file": "www/src/engine/replay/ReplayModel.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/replay/ReplayModel.js", -+ "file": "www/src/engine/replay/ReplayModel.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/replay/ReplayModel.js", -+ "file": "www/src/engine/replay/ReplayModel.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/replay/ReplayModel.js", -+ "file": "www/src/engine/replay/ReplayModel.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/replay/ReplaySystem.js", -+ "file": "www/src/engine/replay/ReplaySystem.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/replay/ReplaySystem.js", -+ "file": "www/src/engine/replay/ReplaySystem.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/replay/ReplaySystem.js", -+ "file": "www/src/engine/replay/ReplaySystem.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/replay/ReplaySystem.js", -+ "file": "www/src/engine/replay/ReplaySystem.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/replay/ReplayTimeline.js", -+ "file": "www/src/engine/replay/ReplayTimeline.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/replay/ReplayTimeline.js", -+ "file": "www/src/engine/replay/ReplayTimeline.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/replay/ReplayTimeline.js", -+ "file": "www/src/engine/replay/ReplayTimeline.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/replay/ReplayTimeline.js", -+ "file": "www/src/engine/replay/ReplayTimeline.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/replay/ReplayTimeline.js", -+ "file": "www/src/engine/replay/ReplayTimeline.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/replay/ReplayTimeline.js", -+ "file": "www/src/engine/replay/ReplayTimeline.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/runtime/engineV2AnimationRuntime.js", -+ "file": "www/src/engine/runtime/engineV2AnimationRuntime.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2AnimationRuntime.js", -+ "file": "www/src/engine/runtime/engineV2AnimationRuntime.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2AnimationRuntime.js", -+ "file": "www/src/engine/runtime/engineV2AnimationRuntime.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2AudioRuntime.js", -+ "file": "www/src/engine/runtime/engineV2AudioRuntime.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2CameraRuntime.js", -+ "file": "www/src/engine/runtime/engineV2CameraRuntime.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/runtime/engineV2CameraRuntime.js", -+ "file": "www/src/engine/runtime/engineV2CameraRuntime.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/runtime/engineV2CameraRuntime.js", -+ "file": "www/src/engine/runtime/engineV2CameraRuntime.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2CameraRuntime.js", -+ "file": "www/src/engine/runtime/engineV2CameraRuntime.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2CameraRuntime.js", -+ "file": "www/src/engine/runtime/engineV2CameraRuntime.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2CameraRuntime.js", -+ "file": "www/src/engine/runtime/engineV2CameraRuntime.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2CameraRuntime.js", -+ "file": "www/src/engine/runtime/engineV2CameraRuntime.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2CameraRuntime.js", -+ "file": "www/src/engine/runtime/engineV2CameraRuntime.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2CameraRuntime.js", -+ "file": "www/src/engine/runtime/engineV2CameraRuntime.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2CameraRuntime.js", -+ "file": "www/src/engine/runtime/engineV2CameraRuntime.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2CameraRuntime.js", -+ "file": "www/src/engine/runtime/engineV2CameraRuntime.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2ChaseFleeBehavior.js", -+ "file": "www/src/engine/runtime/engineV2ChaseFleeBehavior.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2ChaseFleeBehavior.js", -+ "file": "www/src/engine/runtime/engineV2ChaseFleeBehavior.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2ChaseFleeBehavior.js", -+ "file": "www/src/engine/runtime/engineV2ChaseFleeBehavior.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2ChaseFleeBehavior.js", -+ "file": "www/src/engine/runtime/engineV2ChaseFleeBehavior.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2CheckpointSystem.js", -+ "file": "www/src/engine/runtime/engineV2CheckpointSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2CheckpointSystem.js", -+ "file": "www/src/engine/runtime/engineV2CheckpointSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2EconomyAndCurrency.js", -+ "file": "www/src/engine/runtime/engineV2EconomyAndCurrency.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2EconomyAndCurrency.js", -+ "file": "www/src/engine/runtime/engineV2EconomyAndCurrency.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2EconomyAndCurrency.js", -+ "file": "www/src/engine/runtime/engineV2EconomyAndCurrency.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2EffectRuntime.js", -+ "file": "www/src/engine/runtime/engineV2EffectRuntime.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2EffectRuntime.js", -+ "file": "www/src/engine/runtime/engineV2EffectRuntime.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2EffectRuntime.js", -+ "file": "www/src/engine/runtime/engineV2EffectRuntime.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2EffectRuntime.js", -+ "file": "www/src/engine/runtime/engineV2EffectRuntime.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2EffectRuntime.js", -+ "file": "www/src/engine/runtime/engineV2EffectRuntime.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2EffectRuntime.js", -+ "file": "www/src/engine/runtime/engineV2EffectRuntime.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2ModifierStack.js", -+ "file": "www/src/engine/runtime/engineV2ModifierStack.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2ModifierStack.js", -+ "file": "www/src/engine/runtime/engineV2ModifierStack.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2ModifierStack.js", -+ "file": "www/src/engine/runtime/engineV2ModifierStack.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2ObjectiveSystem.js", -+ "file": "www/src/engine/runtime/engineV2ObjectiveSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2ObjectiveSystem.js", -+ "file": "www/src/engine/runtime/engineV2ObjectiveSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2ObjectiveSystem.js", -+ "file": "www/src/engine/runtime/engineV2ObjectiveSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2ObjectiveSystem.js", -+ "file": "www/src/engine/runtime/engineV2ObjectiveSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2ObjectiveSystem.js", -+ "file": "www/src/engine/runtime/engineV2ObjectiveSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2PatrolBehavior.js", -+ "file": "www/src/engine/runtime/engineV2PatrolBehavior.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2PatrolBehavior.js", -+ "file": "www/src/engine/runtime/engineV2PatrolBehavior.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2PatrolBehavior.js", -+ "file": "www/src/engine/runtime/engineV2PatrolBehavior.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2PatrolBehavior.js", -+ "file": "www/src/engine/runtime/engineV2PatrolBehavior.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2PatrolBehavior.js", -+ "file": "www/src/engine/runtime/engineV2PatrolBehavior.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2PatrolBehavior.js", -+ "file": "www/src/engine/runtime/engineV2PatrolBehavior.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2PatrolBehavior.js", -+ "file": "www/src/engine/runtime/engineV2PatrolBehavior.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2ProfileStateSystem.js", -+ "file": "www/src/engine/runtime/engineV2ProfileStateSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2ProfileStateSystem.js", -+ "file": "www/src/engine/runtime/engineV2ProfileStateSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2ProjectileSystem.js", -+ "file": "www/src/engine/runtime/engineV2ProjectileSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2ProjectileSystem.js", -+ "file": "www/src/engine/runtime/engineV2ProjectileSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2ProjectileSystem.js", -+ "file": "www/src/engine/runtime/engineV2ProjectileSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2ProjectileSystem.js", -+ "file": "www/src/engine/runtime/engineV2ProjectileSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2ProjectileSystem.js", -+ "file": "www/src/engine/runtime/engineV2ProjectileSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2ProjectileSystem.js", -+ "file": "www/src/engine/runtime/engineV2ProjectileSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2ProjectileSystem.js", -+ "file": "www/src/engine/runtime/engineV2ProjectileSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2ProjectileSystem.js", -+ "file": "www/src/engine/runtime/engineV2ProjectileSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2ProjectileSystem.js", -+ "file": "www/src/engine/runtime/engineV2ProjectileSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2StatusEffectSystem.js", -+ "file": "www/src/engine/runtime/engineV2StatusEffectSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2StatusEffectSystem.js", -+ "file": "www/src/engine/runtime/engineV2StatusEffectSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2StatusEffectSystem.js", -+ "file": "www/src/engine/runtime/engineV2StatusEffectSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2StatusEffectSystem.js", -+ "file": "www/src/engine/runtime/engineV2StatusEffectSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2StatusEffectSystem.js", -+ "file": "www/src/engine/runtime/engineV2StatusEffectSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2StatusEffectSystem.js", -+ "file": "www/src/engine/runtime/engineV2StatusEffectSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2StatusEffectSystem.js", -+ "file": "www/src/engine/runtime/engineV2StatusEffectSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2StatusEffectSystem.js", -+ "file": "www/src/engine/runtime/engineV2StatusEffectSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2VendorSystem.js", -+ "file": "www/src/engine/runtime/engineV2VendorSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/engineV2WeaponSystem.js", -+ "file": "www/src/engine/runtime/engineV2WeaponSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/fullscreenBezel.js", -+ "file": "www/src/engine/runtime/fullscreenBezel.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/fullscreenBezel.js", -+ "file": "www/src/engine/runtime/fullscreenBezel.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/fullscreenBezel.js", -+ "file": "www/src/engine/runtime/fullscreenBezel.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/gameImageConvention.js", -+ "file": "www/src/engine/runtime/gameImageConvention.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/runtime/gameImageConvention.js", -+ "file": "www/src/engine/runtime/gameImageConvention.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/runtime/gameImageConvention.js", -+ "file": "www/src/engine/runtime/gameImageConvention.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/runtime/gameImageConvention.js", -+ "file": "www/src/engine/runtime/gameImageConvention.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/runtime/runtimeActionSystem.js", -+ "file": "www/src/engine/runtime/runtimeActionSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeActionSystem.js", -+ "file": "www/src/engine/runtime/runtimeActionSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeActionSystem.js", -+ "file": "www/src/engine/runtime/runtimeActionSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeConditionSystem.js", -+ "file": "www/src/engine/runtime/runtimeConditionSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeConditionSystem.js", -+ "file": "www/src/engine/runtime/runtimeConditionSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeConditionSystem.js", -+ "file": "www/src/engine/runtime/runtimeConditionSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeConditionSystem.js", -+ "file": "www/src/engine/runtime/runtimeConditionSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeCooldownProcessing.js", -+ "file": "www/src/engine/runtime/runtimeCooldownProcessing.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeCooldownProcessing.js", -+ "file": "www/src/engine/runtime/runtimeCooldownProcessing.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeCooldownProcessing.js", -+ "file": "www/src/engine/runtime/runtimeCooldownProcessing.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeDamageProcessing.js", -+ "file": "www/src/engine/runtime/runtimeDamageProcessing.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeDamageProcessing.js", -+ "file": "www/src/engine/runtime/runtimeDamageProcessing.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeDamageProcessing.js", -+ "file": "www/src/engine/runtime/runtimeDamageProcessing.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeDamageProcessing.js", -+ "file": "www/src/engine/runtime/runtimeDamageProcessing.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeDamageProcessing.js", -+ "file": "www/src/engine/runtime/runtimeDamageProcessing.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeEnvironmentEffects.js", -+ "file": "www/src/engine/runtime/runtimeEnvironmentEffects.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeEnvironmentEffects.js", -+ "file": "www/src/engine/runtime/runtimeEnvironmentEffects.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeEnvironmentForceInstantiation.js", -+ "file": "www/src/engine/runtime/runtimeEnvironmentForceInstantiation.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeEnvironmentForceInstantiation.js", -+ "file": "www/src/engine/runtime/runtimeEnvironmentForceInstantiation.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeEnvironmentForceInstantiation.js", -+ "file": "www/src/engine/runtime/runtimeEnvironmentForceInstantiation.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeEventSystem.js", -+ "file": "www/src/engine/runtime/runtimeEventSystem.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/runtime/runtimeEventSystem.js", -+ "file": "www/src/engine/runtime/runtimeEventSystem.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/runtime/runtimeHealthModel.js", -+ "file": "www/src/engine/runtime/runtimeHealthModel.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeHealthModel.js", -+ "file": "www/src/engine/runtime/runtimeHealthModel.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeHealthModel.js", -+ "file": "www/src/engine/runtime/runtimeHealthModel.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeHealthModel.js", -+ "file": "www/src/engine/runtime/runtimeHealthModel.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeHealthModel.js", -+ "file": "www/src/engine/runtime/runtimeHealthModel.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeHealthModel.js", -+ "file": "www/src/engine/runtime/runtimeHealthModel.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeHealthModel.js", -+ "file": "www/src/engine/runtime/runtimeHealthModel.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeInputPipeline.js", -+ "file": "www/src/engine/runtime/runtimeInputPipeline.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeInputPipeline.js", -+ "file": "www/src/engine/runtime/runtimeInputPipeline.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeLivesAndRespawn.js", -+ "file": "www/src/engine/runtime/runtimeLivesAndRespawn.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeLivesAndRespawn.js", -+ "file": "www/src/engine/runtime/runtimeLivesAndRespawn.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeMovementProcessing.js", -+ "file": "www/src/engine/runtime/runtimeMovementProcessing.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeMovementProcessing.js", -+ "file": "www/src/engine/runtime/runtimeMovementProcessing.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeMovementProcessing.js", -+ "file": "www/src/engine/runtime/runtimeMovementProcessing.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeObjectInstantiation.js", -+ "file": "www/src/engine/runtime/runtimeObjectInstantiation.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeObjectInstantiation.js", -+ "file": "www/src/engine/runtime/runtimeObjectInstantiation.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeObjectInstantiation.js", -+ "file": "www/src/engine/runtime/runtimeObjectInstantiation.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeObjectInstantiation.js", -+ "file": "www/src/engine/runtime/runtimeObjectInstantiation.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeObjectInstantiation.js", -+ "file": "www/src/engine/runtime/runtimeObjectInstantiation.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeOutcomeProcessing.js", -+ "file": "www/src/engine/runtime/runtimeOutcomeProcessing.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeOutcomeProcessing.js", -+ "file": "www/src/engine/runtime/runtimeOutcomeProcessing.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeOutcomeProcessing.js", -+ "file": "www/src/engine/runtime/runtimeOutcomeProcessing.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeOutcomeProcessing.js", -+ "file": "www/src/engine/runtime/runtimeOutcomeProcessing.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeOutcomeProcessing.js", -+ "file": "www/src/engine/runtime/runtimeOutcomeProcessing.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeScoringAndStateProcessing.js", -+ "file": "www/src/engine/runtime/runtimeScoringAndStateProcessing.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeScoringAndStateProcessing.js", -+ "file": "www/src/engine/runtime/runtimeScoringAndStateProcessing.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeTerrainEffects.js", -+ "file": "www/src/engine/runtime/runtimeTerrainEffects.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeTerrainEffects.js", -+ "file": "www/src/engine/runtime/runtimeTerrainEffects.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeTerrainEffects.js", -+ "file": "www/src/engine/runtime/runtimeTerrainEffects.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeTerrainMaterialInstantiation.js", -+ "file": "www/src/engine/runtime/runtimeTerrainMaterialInstantiation.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeTerrainMaterialInstantiation.js", -+ "file": "www/src/engine/runtime/runtimeTerrainMaterialInstantiation.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeTerrainMaterialInstantiation.js", -+ "file": "www/src/engine/runtime/runtimeTerrainMaterialInstantiation.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeTickLoop.js", -+ "file": "www/src/engine/runtime/runtimeTickLoop.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeTickLoop.js", -+ "file": "www/src/engine/runtime/runtimeTickLoop.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/runtime/runtimeTickLoop.js", -+ "file": "www/src/engine/runtime/runtimeTickLoop.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/engine/scene/SceneManager.js", -+ "file": "www/src/engine/scene/SceneManager.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/scene/SceneManager.js", -+ "file": "www/src/engine/scene/SceneManager.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/systems/BoundsSystem.js", -+ "file": "www/src/engine/systems/BoundsSystem.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/systems/BoundsSystem.js", -+ "file": "www/src/engine/systems/BoundsSystem.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/engine/systems/MovementSystem.js", -+ "file": "www/src/engine/systems/MovementSystem.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/engine/systems/MovementSystem.js", -+ "file": "www/src/engine/systems/MovementSystem.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/shared/color/color.js", -+ "file": "www/src/shared/color/color.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, -@@ -3222,582 +3222,582 @@ - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/game/highScores.js", -+ "file": "www/src/shared/game/highScores.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/geometry/geometry.js", -+ "file": "www/src/shared/geometry/geometry.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/math/geometry.js", -+ "file": "www/src/shared/math/geometry.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/math/geometry.js", -+ "file": "www/src/shared/math/geometry.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/math/numberNormalization.js", -+ "file": "www/src/shared/math/numberNormalization.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/math/numberNormalization.js", -+ "file": "www/src/shared/math/numberNormalization.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/math/numberNormalization.js", -+ "file": "www/src/shared/math/numberNormalization.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/math/numberNormalization.js", -+ "file": "www/src/shared/math/numberNormalization.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/math/numberNormalization.js", -+ "file": "www/src/shared/math/numberNormalization.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/math/numberNormalization.js", -+ "file": "www/src/shared/math/numberNormalization.js", - "type": "local-helper-definition", - "match": "rule:helper-fn-asFiniteNumber" - }, - { -- "file": "src/shared/math/numberNormalization.js", -+ "file": "www/src/shared/math/numberNormalization.js", - "type": "local-helper-definition", - "match": "rule:helper-fn-asPositiveInteger" - }, - { -- "file": "src/shared/math/randomHelpers.js", -+ "file": "www/src/shared/math/randomHelpers.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/math/randomHelpers.js", -+ "file": "www/src/shared/math/randomHelpers.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/noise/noise.js", -+ "file": "www/src/shared/noise/noise.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/noise/noise.js", -+ "file": "www/src/shared/noise/noise.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/noise/noise.js", -+ "file": "www/src/shared/noise/noise.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/number/numbers.js", -+ "file": "www/src/shared/number/numbers.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/object/objects.js", -+ "file": "www/src/shared/object/objects.js", - "type": "local-helper-definition", - "match": "rule:helper-fn-isPlainObject" - }, - { -- "file": "src/shared/state/normalization.js", -+ "file": "www/src/shared/state/normalization.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/state/normalization.js", -+ "file": "www/src/shared/state/normalization.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/time/time.js", -+ "file": "www/src/shared/time/time.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/assetMarketplace.js", -+ "file": "www/src/shared/toolbox/assetMarketplace.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/assetMarketplace.js", -+ "file": "www/src/shared/toolbox/assetMarketplace.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/collaborationSystem.js", -+ "file": "www/src/shared/toolbox/collaborationSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/collaborationSystem.js", -+ "file": "www/src/shared/toolbox/collaborationSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/collaborationSystem.js", -+ "file": "www/src/shared/toolbox/collaborationSystem.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/debugVisualizationLayer.js", -+ "file": "www/src/shared/toolbox/debugVisualizationLayer.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/debugVisualizationLayer.js", -+ "file": "www/src/shared/toolbox/debugVisualizationLayer.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/debugVisualizationLayer.js", -+ "file": "www/src/shared/toolbox/debugVisualizationLayer.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/devConsoleDebugOverlay.js", -+ "file": "www/src/shared/toolbox/devConsoleDebugOverlay.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/devConsoleDebugOverlay.js", -+ "file": "www/src/shared/toolbox/devConsoleDebugOverlay.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/devConsoleDebugOverlay.js", -+ "file": "www/src/shared/toolbox/devConsoleDebugOverlay.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/devConsoleDebugOverlay.js", -+ "file": "www/src/shared/toolbox/devConsoleDebugOverlay.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/devConsoleDebugOverlay.js", -+ "file": "www/src/shared/toolbox/devConsoleDebugOverlay.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/devConsoleDebugOverlay.js", -+ "file": "www/src/shared/toolbox/devConsoleDebugOverlay.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/devConsoleDebugOverlay.js", -+ "file": "www/src/shared/toolbox/devConsoleDebugOverlay.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/devConsoleDebugOverlay.js", -+ "file": "www/src/shared/toolbox/devConsoleDebugOverlay.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/devConsoleDebugOverlay.js", -+ "file": "www/src/shared/toolbox/devConsoleDebugOverlay.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/documentModeGuards.js", -+ "file": "www/src/shared/toolbox/documentModeGuards.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/documentModeGuards.js", -+ "file": "www/src/shared/toolbox/documentModeGuards.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/livePreviewSyncChannel.js", -+ "file": "www/src/shared/toolbox/livePreviewSyncChannel.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/livePreviewSyncChannel.js", -+ "file": "www/src/shared/toolbox/livePreviewSyncChannel.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/livePreviewSyncChannel.js", -+ "file": "www/src/shared/toolbox/livePreviewSyncChannel.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/livePreviewSyncChannel.js", -+ "file": "www/src/shared/toolbox/livePreviewSyncChannel.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/paletteDocumentContract.js", -+ "file": "www/src/shared/toolbox/paletteDocumentContract.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/paletteDocumentContract.js", -+ "file": "www/src/shared/toolbox/paletteDocumentContract.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/paletteDocumentContract.js", -+ "file": "www/src/shared/toolbox/paletteDocumentContract.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/performanceBenchmarks.js", -+ "file": "www/src/shared/toolbox/performanceBenchmarks.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/performanceBenchmarks.js", -+ "file": "www/src/shared/toolbox/performanceBenchmarks.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/performanceBenchmarks.js", -+ "file": "www/src/shared/toolbox/performanceBenchmarks.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/performanceProfiler.js", -+ "file": "www/src/shared/toolbox/performanceProfiler.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/pluginArchitecture.js", -+ "file": "www/src/shared/toolbox/pluginArchitecture.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/projectAssetRegistry.js", -+ "file": "www/src/shared/toolbox/projectAssetRegistry.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/projectAssetRegistry.js", -+ "file": "www/src/shared/toolbox/projectAssetRegistry.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/projectAssetRegistry.js", -+ "file": "www/src/shared/toolbox/projectAssetRegistry.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/projectAssetValidation.js", -+ "file": "www/src/shared/toolbox/projectAssetValidation.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/projectPackaging.js", -+ "file": "www/src/shared/toolbox/projectPackaging.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/projectPackaging.js", -+ "file": "www/src/shared/toolbox/projectPackaging.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/projectPackaging.js", -+ "file": "www/src/shared/toolbox/projectPackaging.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/projectPackaging.js", -+ "file": "www/src/shared/toolbox/projectPackaging.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/projectSystemAdapters.js", -+ "file": "www/src/shared/toolbox/projectSystemAdapters.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/projectSystemAdapters.js", -+ "file": "www/src/shared/toolbox/projectSystemAdapters.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/projectSystemAdapters.js", -+ "file": "www/src/shared/toolbox/projectSystemAdapters.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/projectSystemAdapters.js", -+ "file": "www/src/shared/toolbox/projectSystemAdapters.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/projectVersioning.js", -+ "file": "www/src/shared/toolbox/projectVersioning.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/projectVersioning.js", -+ "file": "www/src/shared/toolbox/projectVersioning.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/projectVersioning.js", -+ "file": "www/src/shared/toolbox/projectVersioning.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/projectVersioning.js", -+ "file": "www/src/shared/toolbox/projectVersioning.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/projectVersioning.js", -+ "file": "www/src/shared/toolbox/projectVersioning.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/projectVersioning.js", -+ "file": "www/src/shared/toolbox/projectVersioning.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/projectVersioning.js", -+ "file": "www/src/shared/toolbox/projectVersioning.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/renderPipelineContract.js", -+ "file": "www/src/shared/toolbox/renderPipelineContract.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/renderPipelineContract.js", -+ "file": "www/src/shared/toolbox/renderPipelineContract.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/renderPipelineContract.js", -+ "file": "www/src/shared/toolbox/renderPipelineContract.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/renderPipelineContract.js", -+ "file": "www/src/shared/toolbox/renderPipelineContract.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/renderPipelineContract.js", -+ "file": "www/src/shared/toolbox/renderPipelineContract.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/renderPipelineContract.js", -+ "file": "www/src/shared/toolbox/renderPipelineContract.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/renderPipelineContract.js", -+ "file": "www/src/shared/toolbox/renderPipelineContract.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/renderPipelineContract.js", -+ "file": "www/src/shared/toolbox/renderPipelineContract.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/renderPipelineContract.js", -+ "file": "www/src/shared/toolbox/renderPipelineContract.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/renderPipelineContract.js", -+ "file": "www/src/shared/toolbox/renderPipelineContract.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/renderPipelineContract.js", -+ "file": "www/src/shared/toolbox/renderPipelineContract.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/renderPipelineContract.js", -+ "file": "www/src/shared/toolbox/renderPipelineContract.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/renderPipelineContract.js", -+ "file": "www/src/shared/toolbox/renderPipelineContract.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/runtimeAssetValidationUtils.js", -+ "file": "www/src/shared/toolbox/runtimeAssetValidationUtils.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/runtimeSceneLoaderHotReload.js", -+ "file": "www/src/shared/toolbox/runtimeSceneLoaderHotReload.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/toolLoadDiagnostics.js", -+ "file": "www/src/shared/toolbox/toolLoadDiagnostics.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/toolLoadDiagnostics.js", -+ "file": "www/src/shared/toolbox/toolLoadDiagnostics.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/toolLoadDiagnostics.js", -+ "file": "www/src/shared/toolbox/toolLoadDiagnostics.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/toolLoadDiagnostics.js", -+ "file": "www/src/shared/toolbox/toolLoadDiagnostics.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/toolLoadDiagnostics.js", -+ "file": "www/src/shared/toolbox/toolLoadDiagnostics.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/vector/vectorAssetContract.js", -+ "file": "www/src/shared/toolbox/vector/vectorAssetContract.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/vector/vectorAssetContract.js", -+ "file": "www/src/shared/toolbox/vector/vectorAssetContract.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/vector/vectorAssetContract.js", -+ "file": "www/src/shared/toolbox/vector/vectorAssetContract.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/vector/vectorAssetContract.js", -+ "file": "www/src/shared/toolbox/vector/vectorAssetContract.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/vector/vectorAssetContract.js", -+ "file": "www/src/shared/toolbox/vector/vectorAssetContract.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/vector/vectorAssetContract.js", -+ "file": "www/src/shared/toolbox/vector/vectorAssetContract.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/vector/vectorAssetContract.js", -+ "file": "www/src/shared/toolbox/vector/vectorAssetContract.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/vector/vectorAssetContract.js", -+ "file": "www/src/shared/toolbox/vector/vectorAssetContract.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/vector/vectorAssetContract.js", -+ "file": "www/src/shared/toolbox/vector/vectorAssetContract.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/vector/vectorAssetContract.js", -+ "file": "www/src/shared/toolbox/vector/vectorAssetContract.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/vector/vectorAssetContract.js", -+ "file": "www/src/shared/toolbox/vector/vectorAssetContract.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/vector/vectorAssetContract.js", -+ "file": "www/src/shared/toolbox/vector/vectorAssetContract.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/vector/vectorAssetContract.js", -+ "file": "www/src/shared/toolbox/vector/vectorAssetContract.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/vector/vectorAssetContract.js", -+ "file": "www/src/shared/toolbox/vector/vectorAssetContract.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/vector/vectorAssetContract.js", -+ "file": "www/src/shared/toolbox/vector/vectorAssetContract.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/toolbox/vector/vectorGeometryMath.js", -+ "file": "www/src/shared/toolbox/vector/vectorGeometryMath.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/shared/validation/assert.js", -+ "file": "www/src/shared/validation/assert.js", - "type": "inline-helper-clone", - "match": "rule:number-is-finite-usage" - }, - { -- "file": "src/tools/common/GameManifestLoader.js", -+ "file": "www/src/tools/common/GameManifestLoader.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/tools/common/GameManifestLoader.js", -+ "file": "www/src/tools/common/GameManifestLoader.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/tools/common/GameManifestLoader.js", -+ "file": "www/src/tools/common/GameManifestLoader.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/tools/common/GameManifestLoader.js", -+ "file": "www/src/tools/common/GameManifestLoader.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/tools/common/WorkspaceDirtyNotifier.js", -+ "file": "www/src/tools/common/WorkspaceDirtyNotifier.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/tools/common/WorkspaceDirtyNotifier.js", -+ "file": "www/src/tools/common/WorkspaceDirtyNotifier.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-1" - }, - { -- "file": "src/tools/common/WorkspaceDirtyNotifier.js", -+ "file": "www/src/tools/common/WorkspaceDirtyNotifier.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, - { -- "file": "src/tools/common/WorkspaceDirtyNotifier.js", -+ "file": "www/src/tools/common/WorkspaceDirtyNotifier.js", - "type": "direct-shared-relative-import", - "match": "rule:relative-shared-depth-2" - }, -diff --git a/dev/tools/toolbox-dev/commandPacks/groupCommandPack.js b/dev/tools/toolbox-dev/commandPacks/groupCommandPack.js -index d2ed4dc15..8cbe523ea 100644 ---- a/dev/tools/toolbox-dev/commandPacks/groupCommandPack.js -+++ b/dev/tools/toolbox-dev/commandPacks/groupCommandPack.js -@@ -12,9 +12,9 @@ import { - requireNoArgs - } from "./packUtils.js"; - import { createResult } from "./commandPackResultUtils.js"; --import { getRuntimeAndRegistry } from "../../../../src/shared/runtime/registry.js"; -+import { getRuntimeAndRegistry } from "../../../../www/src/shared/runtime/registry.js"; - --import { sanitizeText } from "../../../../src/shared/string/strings.js"; -+import { sanitizeText } from "../../../../www/src/shared/string/strings.js"; - - function buildSnapshot(panelRegistry) { - const panels = panelRegistry.getOrderedPanels(true); -diff --git a/dev/tools/toolbox-dev/commandPacks/inspectorCommandPack.js b/dev/tools/toolbox-dev/commandPacks/inspectorCommandPack.js -index bca26dbc5..5eb4be228 100644 ---- a/dev/tools/toolbox-dev/commandPacks/inspectorCommandPack.js -+++ b/dev/tools/toolbox-dev/commandPacks/inspectorCommandPack.js -@@ -13,9 +13,9 @@ import { - standardDetails, - toLinePair - } from "./packUtils.js"; --import { stringifyValue } from "../../../../src/shared/string/stringifyValue.js"; -+import { stringifyValue } from "../../../../www/src/shared/string/stringifyValue.js"; - --import { sanitizeText } from "../../../../src/shared/string/strings.js"; -+import { sanitizeText } from "../../../../www/src/shared/string/strings.js"; - - function asPositiveInt(value, fallback) { - const normalized = Number.isFinite(value) ? Math.floor(Number(value)) : fallback; -diff --git a/dev/tools/toolbox-dev/commandPacks/macroCommandPack.js b/dev/tools/toolbox-dev/commandPacks/macroCommandPack.js -index 030c4e9fd..848d0ab61 100644 ---- a/dev/tools/toolbox-dev/commandPacks/macroCommandPack.js -+++ b/dev/tools/toolbox-dev/commandPacks/macroCommandPack.js -@@ -14,7 +14,7 @@ import { - } from "./packUtils.js"; - import { createResult } from "./commandPackResultUtils.js"; - --import { sanitizeText } from "../../../../src/engine/debug/inspectors/shared/inspectorUtils.js"; -+import { sanitizeText } from "../../../../www/src/engine/debug/inspectors/shared/inspectorUtils.js"; - - const macroRegistry = new DebugMacroRegistry(); - registerStandardDebugMacros(macroRegistry, "standard"); -diff --git a/dev/tools/toolbox-dev/commandPacks/overlayCommandPack.js b/dev/tools/toolbox-dev/commandPacks/overlayCommandPack.js -index 301d785da..fefb7043d 100644 ---- a/dev/tools/toolbox-dev/commandPacks/overlayCommandPack.js -+++ b/dev/tools/toolbox-dev/commandPacks/overlayCommandPack.js -@@ -11,9 +11,9 @@ import { - standardDetails, - toLinePair - } from "./packUtils.js"; --import { getRuntimeAndRegistry } from "../../../../src/shared/runtime/registry.js"; -+import { getRuntimeAndRegistry } from "../../../../www/src/shared/runtime/registry.js"; - --import { sanitizeText } from "../../../../src/shared/string/strings.js"; -+import { sanitizeText } from "../../../../www/src/shared/string/strings.js"; - - function createFailedResult(title, lines, code, details = {}) { - return { -diff --git a/dev/tools/toolbox-dev/commandPacks/packUtils.js b/dev/tools/toolbox-dev/commandPacks/packUtils.js -index 12bd42b0f..6db0fe631 100644 ---- a/dev/tools/toolbox-dev/commandPacks/packUtils.js -+++ b/dev/tools/toolbox-dev/commandPacks/packUtils.js -@@ -5,8 +5,8 @@ David Quesenberry - packUtils.js - */ - --import { sanitizeText } from "../../../../src/engine/debug/inspectors/shared/inspectorUtils.js"; --import { isObject } from "../../../../src/shared/object/objects.js"; -+import { sanitizeText } from "../../../../www/src/engine/debug/inspectors/shared/inspectorUtils.js"; -+import { isObject } from "../../../../www/src/shared/object/objects.js"; - - export function requireNoArgs({ args = [], commandName = "" } = {}) { - if (Array.isArray(args) && args.length > 0) { -diff --git a/dev/tools/toolbox-dev/commandPacks/presetCommandPack.js b/dev/tools/toolbox-dev/commandPacks/presetCommandPack.js -index cb332be06..cf5c7e04c 100644 ---- a/dev/tools/toolbox-dev/commandPacks/presetCommandPack.js -+++ b/dev/tools/toolbox-dev/commandPacks/presetCommandPack.js -@@ -7,10 +7,10 @@ presetCommandPack.js - - import { DebugPresetApplier } from "../presets/debugPresetApplier.js"; - import { DebugPresetRegistry } from "../presets/debugPresetRegistry.js"; --import { registerAdvancedInspectorDebugPresets } from '../../../../src/engine/debug/inspectors/presets/registerAdvancedInspectorDebugPresets.js'; -+import { registerAdvancedInspectorDebugPresets } from '../../../../www/src/engine/debug/inspectors/presets/registerAdvancedInspectorDebugPresets.js'; - import { registerPresetCommands } from "../presets/registerPresetCommands.js"; - import { registerStandardDebugPresets } from "../presets/registerStandardDebugPresets.js"; --import { registerStandard3dDebugPresets } from '../../../../src/engine/debug/standard/threeD/presets/registerStandard3dDebugPresets.js'; -+import { registerStandard3dDebugPresets } from '../../../../www/src/engine/debug/standard/threeD/presets/registerStandard3dDebugPresets.js'; - - export function createPresetCommandPack() { - const presetRegistry = new DebugPresetRegistry(); -diff --git a/dev/tools/toolbox-dev/devConsoleCommandRegistry.js b/dev/tools/toolbox-dev/devConsoleCommandRegistry.js -index 89a32c25b..d650ce115 100644 ---- a/dev/tools/toolbox-dev/devConsoleCommandRegistry.js -+++ b/dev/tools/toolbox-dev/devConsoleCommandRegistry.js -@@ -5,8 +5,8 @@ David Quesenberry - devConsoleCommandRegistry.js - */ - --import { sanitizeText } from "../../../src/engine/debug/inspectors/shared/inspectorUtils.js"; --import { isObject } from "../../../src/shared/object/objects.js"; -+import { sanitizeText } from "../../../www/src/engine/debug/inspectors/shared/inspectorUtils.js"; -+import { isObject } from "../../../www/src/shared/object/objects.js"; - - function toLines(lines) { - if (!Array.isArray(lines)) { -diff --git a/dev/tools/toolbox-dev/devConsoleIntegration.js b/dev/tools/toolbox-dev/devConsoleIntegration.js -index 2712ecc9f..25f0e3383 100644 ---- a/dev/tools/toolbox-dev/devConsoleIntegration.js -+++ b/dev/tools/toolbox-dev/devConsoleIntegration.js -@@ -22,13 +22,13 @@ import { createToggleCommandPack } from "./commandPacks/toggleCommandPack.js"; - import { createValidationCommandPack } from "./commandPacks/validationCommandPack.js"; - import { createInspectorStore } from "./inspectors/inspectorStore.js"; - import { createDebugPluginRegistry } from "./plugins/debugPluginSystem.js"; --import { ensureArray } from "../../../src/shared/array/arrays.js"; --import { cloneJson } from "../../../src/shared/json/clone.js"; -+import { ensureArray } from "../../../www/src/shared/array/arrays.js"; -+import { cloneJson } from "../../../www/src/shared/json/clone.js"; - - import { - createDiagnosticsCollector, - createDevConsoleDebugOverlayRuntime --} from "../../../src/shared/toolbox/devConsoleDebugOverlay.js"; -+} from "../../../www/src/shared/toolbox/devConsoleDebugOverlay.js"; - - const DEFAULT_WORLD_STAGES = Object.freeze([ - "parallax", -@@ -58,8 +58,8 @@ const DEFAULT_PLUGIN_CAPABILITIES = Object.freeze([ - Object.freeze({ capabilityId: "debug.diagnostics.snapshot", version: "1.0.0" }) - ]); - --import { sanitizeText } from "../../../src/engine/debug/inspectors/shared/inspectorUtils.js"; --import { isObject } from "../../../src/shared/object/objects.js"; -+import { sanitizeText } from "../../../www/src/engine/debug/inspectors/shared/inspectorUtils.js"; -+import { isObject } from "../../../www/src/shared/object/objects.js"; - - function toContextSection(context, field) { - return isObject(context?.[field]) ? context[field] : {}; -diff --git a/dev/tools/toolbox-dev/inspectors/inspectorStore.js b/dev/tools/toolbox-dev/inspectors/inspectorStore.js -index e1cc322dd..362b283d5 100644 ---- a/dev/tools/toolbox-dev/inspectors/inspectorStore.js -+++ b/dev/tools/toolbox-dev/inspectors/inspectorStore.js -@@ -11,9 +11,9 @@ const DEFAULT_LIMITS = Object.freeze({ - eventStreamMax: 300 - }); - --import { asArray, asObject, sanitizeText } from "../../../../src/engine/debug/inspectors/shared/inspectorUtils.js"; --import { isObject } from "../../../../src/shared/object/objects.js"; --import { cloneJson } from "../../../../src/shared/json/clone.js"; -+import { asArray, asObject, sanitizeText } from "../../../../www/src/engine/debug/inspectors/shared/inspectorUtils.js"; -+import { isObject } from "../../../../www/src/shared/object/objects.js"; -+import { cloneJson } from "../../../../www/src/shared/json/clone.js"; - - function asFinite(value, fallback = 0) { - return Number.isFinite(value) ? Number(value) : fallback; -diff --git a/dev/tools/toolbox-dev/interactiveDevConsoleRenderer.js b/dev/tools/toolbox-dev/interactiveDevConsoleRenderer.js -index 352ff9e23..cd9ff677a 100644 ---- a/dev/tools/toolbox-dev/interactiveDevConsoleRenderer.js -+++ b/dev/tools/toolbox-dev/interactiveDevConsoleRenderer.js -@@ -5,7 +5,7 @@ David Quesenberry - interactiveDevConsoleRenderer.js - */ - --import { sanitizeText } from "../../../src/engine/debug/inspectors/shared/inspectorUtils.js"; -+import { sanitizeText } from "../../../www/src/engine/debug/inspectors/shared/inspectorUtils.js"; - - function toLines(lines) { - if (!Array.isArray(lines)) { -diff --git a/dev/tools/toolbox-dev/plugins/debugPluginSystem.js b/dev/tools/toolbox-dev/plugins/debugPluginSystem.js -index ec7c6ec7a..44afa74c1 100644 ---- a/dev/tools/toolbox-dev/plugins/debugPluginSystem.js -+++ b/dev/tools/toolbox-dev/plugins/debugPluginSystem.js -@@ -5,9 +5,9 @@ David Quesenberry - debugPluginSystem.js - */ - --import { asArray, asObject, sanitizeText } from "../../../../src/engine/debug/inspectors/shared/inspectorUtils.js"; --import { isObject } from "../../../../src/shared/object/objects.js"; --import { cloneJson } from "../../../../src/shared/json/clone.js"; -+import { asArray, asObject, sanitizeText } from "../../../../www/src/engine/debug/inspectors/shared/inspectorUtils.js"; -+import { isObject } from "../../../../www/src/shared/object/objects.js"; -+import { cloneJson } from "../../../../www/src/shared/json/clone.js"; - - function asPositiveInt(value, fallback) { - const normalized = Number.isFinite(value) ? Math.floor(Number(value)) : fallback; -diff --git a/dev/tools/toolbox-dev/presets/debugPresetApplier.js b/dev/tools/toolbox-dev/presets/debugPresetApplier.js -index b9ce0e261..bb298476a 100644 ---- a/dev/tools/toolbox-dev/presets/debugPresetApplier.js -+++ b/dev/tools/toolbox-dev/presets/debugPresetApplier.js -@@ -5,10 +5,10 @@ David Quesenberry - debugPresetApplier.js - */ - --import { sanitizeText } from "../../../../src/shared/string/strings.js"; --import { cloneJson } from "../../../../src/shared/json/clone.js"; --import { getRuntimeAndRegistry } from "../../../../src/shared/runtime/registry.js"; --import { toResult } from "../../../../src/engine/debug/shared/debugCommandResultUtils.js"; -+import { sanitizeText } from "../../../../www/src/shared/string/strings.js"; -+import { cloneJson } from "../../../../www/src/shared/json/clone.js"; -+import { getRuntimeAndRegistry } from "../../../../www/src/shared/runtime/registry.js"; -+import { toResult } from "../../../../www/src/engine/debug/shared/debugCommandResultUtils.js"; - - function getAllPanels(panelRegistry) { - const panels = panelRegistry.getOrderedPanels(true); -diff --git a/dev/tools/toolbox-dev/presets/debugPresetRegistry.js b/dev/tools/toolbox-dev/presets/debugPresetRegistry.js -index de6477ef4..16d827ee1 100644 ---- a/dev/tools/toolbox-dev/presets/debugPresetRegistry.js -+++ b/dev/tools/toolbox-dev/presets/debugPresetRegistry.js -@@ -5,10 +5,10 @@ David Quesenberry - debugPresetRegistry.js - */ - --import { sanitizeText } from "../../../../src/engine/debug/inspectors/shared/inspectorUtils.js"; --import { asStringArray } from "../../../../src/shared/array/arrays.js"; --import { isObject } from "../../../../src/shared/object/objects.js"; --import { cloneJson } from "../../../../src/shared/json/clone.js"; -+import { sanitizeText } from "../../../../www/src/engine/debug/inspectors/shared/inspectorUtils.js"; -+import { asStringArray } from "../../../../www/src/shared/array/arrays.js"; -+import { isObject } from "../../../../www/src/shared/object/objects.js"; -+import { cloneJson } from "../../../../www/src/shared/json/clone.js"; - - function normalizePresetDescriptor(descriptor = {}) { - const presetId = sanitizeText(descriptor.presetId); -diff --git a/dev/tools/toolbox-dev/presets/registerPresetCommands.js b/dev/tools/toolbox-dev/presets/registerPresetCommands.js -index d86da600f..effed1a88 100644 ---- a/dev/tools/toolbox-dev/presets/registerPresetCommands.js -+++ b/dev/tools/toolbox-dev/presets/registerPresetCommands.js -@@ -10,7 +10,7 @@ import { - requireNoArgs - } from "../commandPacks/packUtils.js"; - --import { sanitizeText } from "../../../../src/engine/debug/inspectors/shared/inspectorUtils.js"; -+import { sanitizeText } from "../../../../www/src/engine/debug/inspectors/shared/inspectorUtils.js"; - - function createCommandResult(status, title, lines, code, details = {}) { - return { -diff --git a/src/advanced/promotion/createPromotionGate.js b/www/src/advanced/promotion/createPromotionGate.js -similarity index 100% -rename from src/advanced/promotion/createPromotionGate.js -rename to www/src/advanced/promotion/createPromotionGate.js -diff --git a/src/advanced/state/constants.js b/www/src/advanced/state/constants.js -similarity index 100% -rename from src/advanced/state/constants.js -rename to www/src/advanced/state/constants.js -diff --git a/src/advanced/state/consumers/createObjectiveProgressMirrorConsumer.js b/www/src/advanced/state/consumers/createObjectiveProgressMirrorConsumer.js -similarity index 100% -rename from src/advanced/state/consumers/createObjectiveProgressMirrorConsumer.js -rename to www/src/advanced/state/consumers/createObjectiveProgressMirrorConsumer.js -diff --git a/src/advanced/state/createWorldGameStateSystem.js b/www/src/advanced/state/createWorldGameStateSystem.js -similarity index 100% -rename from src/advanced/state/createWorldGameStateSystem.js -rename to www/src/advanced/state/createWorldGameStateSystem.js -diff --git a/src/advanced/state/events.js b/www/src/advanced/state/events.js -similarity index 100% -rename from src/advanced/state/events.js -rename to www/src/advanced/state/events.js -diff --git a/src/advanced/state/initialState.js b/www/src/advanced/state/initialState.js -similarity index 100% -rename from src/advanced/state/initialState.js -rename to www/src/advanced/state/initialState.js -diff --git a/src/advanced/state/integration/registerWorldGameStateSystem.js b/www/src/advanced/state/integration/registerWorldGameStateSystem.js -similarity index 100% -rename from src/advanced/state/integration/registerWorldGameStateSystem.js -rename to www/src/advanced/state/integration/registerWorldGameStateSystem.js -diff --git a/src/advanced/state/selectors.js b/www/src/advanced/state/selectors.js -similarity index 100% -rename from src/advanced/state/selectors.js -rename to www/src/advanced/state/selectors.js -diff --git a/src/advanced/state/transitions.js b/www/src/advanced/state/transitions.js -similarity index 100% -rename from src/advanced/state/transitions.js -rename to www/src/advanced/state/transitions.js -diff --git a/src/advanced/state/utils.js b/www/src/advanced/state/utils.js -similarity index 100% -rename from src/advanced/state/utils.js -rename to www/src/advanced/state/utils.js -diff --git a/src/api/admin-infrastructure-api-client.js b/www/src/api/admin-infrastructure-api-client.js -similarity index 100% -rename from src/api/admin-infrastructure-api-client.js -rename to www/src/api/admin-infrastructure-api-client.js -diff --git a/src/api/admin-invitations-api-client.js b/www/src/api/admin-invitations-api-client.js -similarity index 100% -rename from src/api/admin-invitations-api-client.js -rename to www/src/api/admin-invitations-api-client.js -diff --git a/src/api/admin-operations-api-client.js b/www/src/api/admin-operations-api-client.js -similarity index 100% -rename from src/api/admin-operations-api-client.js -rename to www/src/api/admin-operations-api-client.js -diff --git a/src/api/admin-owner-navigation.js b/www/src/api/admin-owner-navigation.js -similarity index 100% -rename from src/api/admin-owner-navigation.js -rename to www/src/api/admin-owner-navigation.js -diff --git a/src/api/admin-setup-api-client.js b/www/src/api/admin-setup-api-client.js -similarity index 100% -rename from src/api/admin-setup-api-client.js -rename to www/src/api/admin-setup-api-client.js -diff --git a/src/api/admin-system-health-api-client.js b/www/src/api/admin-system-health-api-client.js -similarity index 100% -rename from src/api/admin-system-health-api-client.js -rename to www/src/api/admin-system-health-api-client.js -diff --git a/src/api/ai-credits-api-client.js b/www/src/api/ai-credits-api-client.js -similarity index 100% -rename from src/api/ai-credits-api-client.js -rename to www/src/api/ai-credits-api-client.js -diff --git a/src/api/db-viewer-api-client.js b/www/src/api/db-viewer-api-client.js -similarity index 100% -rename from src/api/db-viewer-api-client.js -rename to www/src/api/db-viewer-api-client.js -diff --git a/src/api/db-viewer-ui.js b/www/src/api/db-viewer-ui.js -similarity index 100% -rename from src/api/db-viewer-ui.js -rename to www/src/api/db-viewer-ui.js -diff --git a/src/api/game-journey-completion-api-client.js b/www/src/api/game-journey-completion-api-client.js -similarity index 100% -rename from src/api/game-journey-completion-api-client.js -rename to www/src/api/game-journey-completion-api-client.js -diff --git a/src/api/legal-api-client.js b/www/src/api/legal-api-client.js -similarity index 100% -rename from src/api/legal-api-client.js -rename to www/src/api/legal-api-client.js -diff --git a/src/api/marketplace-api-client.js b/www/src/api/marketplace-api-client.js -similarity index 100% -rename from src/api/marketplace-api-client.js -rename to www/src/api/marketplace-api-client.js -diff --git a/src/api/memberships-api-client.js b/www/src/api/memberships-api-client.js -similarity index 100% -rename from src/api/memberships-api-client.js -rename to www/src/api/memberships-api-client.js -diff --git a/src/api/owner-ai-credits-api-client.js b/www/src/api/owner-ai-credits-api-client.js -similarity index 100% -rename from src/api/owner-ai-credits-api-client.js -rename to www/src/api/owner-ai-credits-api-client.js -diff --git a/src/api/owner-memberships-api-client.js b/www/src/api/owner-memberships-api-client.js -similarity index 100% -rename from src/api/owner-memberships-api-client.js -rename to www/src/api/owner-memberships-api-client.js -diff --git a/src/api/platform-settings-api-client.js b/www/src/api/platform-settings-api-client.js -similarity index 100% -rename from src/api/platform-settings-api-client.js -rename to www/src/api/platform-settings-api-client.js -diff --git a/src/api/public-config-client.js b/www/src/api/public-config-client.js -similarity index 100% -rename from src/api/public-config-client.js -rename to www/src/api/public-config-client.js -diff --git a/src/api/server-api-client.js b/www/src/api/server-api-client.js -similarity index 100% -rename from src/api/server-api-client.js -rename to www/src/api/server-api-client.js -diff --git a/src/api/session-api-client.js b/www/src/api/session-api-client.js -similarity index 100% -rename from src/api/session-api-client.js -rename to www/src/api/session-api-client.js -diff --git a/src/api/toolbox-votes-api-client.js b/www/src/api/toolbox-votes-api-client.js -similarity index 100% -rename from src/api/toolbox-votes-api-client.js -rename to www/src/api/toolbox-votes-api-client.js -diff --git a/src/dev-runtime/admin/admin-notes-viewer.js b/www/src/dev-runtime/admin/admin-notes-viewer.js -similarity index 100% -rename from src/dev-runtime/admin/admin-notes-viewer.js -rename to www/src/dev-runtime/admin/admin-notes-viewer.js -diff --git a/src/dev-runtime/admin/header-nav.local.html b/www/src/dev-runtime/admin/header-nav.local.html -similarity index 100% -rename from src/dev-runtime/admin/header-nav.local.html -rename to www/src/dev-runtime/admin/header-nav.local.html -diff --git a/src/dev-runtime/admin/notes.html b/www/src/dev-runtime/admin/notes.html -similarity index 100% -rename from src/dev-runtime/admin/notes.html -rename to www/src/dev-runtime/admin/notes.html -diff --git a/src/engine/ai/AIStateController.js b/www/src/engine/ai/AIStateController.js -similarity index 100% -rename from src/engine/ai/AIStateController.js -rename to www/src/engine/ai/AIStateController.js -diff --git a/src/engine/ai/GridPathfinding.js b/www/src/engine/ai/GridPathfinding.js -similarity index 100% -rename from src/engine/ai/GridPathfinding.js -rename to www/src/engine/ai/GridPathfinding.js -diff --git a/src/engine/ai/GroupBehaviors.js b/www/src/engine/ai/GroupBehaviors.js -similarity index 100% -rename from src/engine/ai/GroupBehaviors.js -rename to www/src/engine/ai/GroupBehaviors.js -diff --git a/src/engine/ai/PatrolSystem.js b/www/src/engine/ai/PatrolSystem.js -similarity index 100% -rename from src/engine/ai/PatrolSystem.js -rename to www/src/engine/ai/PatrolSystem.js -diff --git a/src/engine/ai/SteeringBehaviors.js b/www/src/engine/ai/SteeringBehaviors.js -similarity index 100% -rename from src/engine/ai/SteeringBehaviors.js -rename to www/src/engine/ai/SteeringBehaviors.js -diff --git a/src/engine/animation/AnimationController.js b/www/src/engine/animation/AnimationController.js -similarity index 100% -rename from src/engine/animation/AnimationController.js -rename to www/src/engine/animation/AnimationController.js -diff --git a/src/engine/assets/AssetLoaderSystem.js b/www/src/engine/assets/AssetLoaderSystem.js -similarity index 100% -rename from src/engine/assets/AssetLoaderSystem.js -rename to www/src/engine/assets/AssetLoaderSystem.js -diff --git a/src/engine/assets/AssetOptimizer.js b/www/src/engine/assets/AssetOptimizer.js -similarity index 100% -rename from src/engine/assets/AssetOptimizer.js -rename to www/src/engine/assets/AssetOptimizer.js -diff --git a/src/engine/assets/AssetRegistry.js b/www/src/engine/assets/AssetRegistry.js -similarity index 100% -rename from src/engine/assets/AssetRegistry.js -rename to www/src/engine/assets/AssetRegistry.js -diff --git a/src/engine/assets/ImageAssetLoader.js b/www/src/engine/assets/ImageAssetLoader.js -similarity index 100% -rename from src/engine/assets/ImageAssetLoader.js -rename to www/src/engine/assets/ImageAssetLoader.js -diff --git a/src/engine/assets/SpriteAtlas.js b/www/src/engine/assets/SpriteAtlas.js -similarity index 100% -rename from src/engine/assets/SpriteAtlas.js -rename to www/src/engine/assets/SpriteAtlas.js -diff --git a/src/engine/audio/AudioService.js b/www/src/engine/audio/AudioService.js -similarity index 100% -rename from src/engine/audio/AudioService.js -rename to www/src/engine/audio/AudioService.js -diff --git a/src/engine/audio/FrequencyPlayer.js b/www/src/engine/audio/FrequencyPlayer.js -similarity index 100% -rename from src/engine/audio/FrequencyPlayer.js -rename to www/src/engine/audio/FrequencyPlayer.js -diff --git a/src/engine/audio/GaplessLoopPlayer.js b/www/src/engine/audio/GaplessLoopPlayer.js -similarity index 100% -rename from src/engine/audio/GaplessLoopPlayer.js -rename to www/src/engine/audio/GaplessLoopPlayer.js -diff --git a/src/engine/audio/HtmlAudioMediaBackend.js b/www/src/engine/audio/HtmlAudioMediaBackend.js -similarity index 100% -rename from src/engine/audio/HtmlAudioMediaBackend.js -rename to www/src/engine/audio/HtmlAudioMediaBackend.js -diff --git a/src/engine/audio/InstrumentGridParser.js b/www/src/engine/audio/InstrumentGridParser.js -similarity index 100% -rename from src/engine/audio/InstrumentGridParser.js -rename to www/src/engine/audio/InstrumentGridParser.js -diff --git a/src/engine/audio/MediaTrackService.js b/www/src/engine/audio/MediaTrackService.js -similarity index 100% -rename from src/engine/audio/MediaTrackService.js -rename to www/src/engine/audio/MediaTrackService.js -diff --git a/src/engine/audio/MidiPlayer.js b/www/src/engine/audio/MidiPlayer.js -similarity index 100% -rename from src/engine/audio/MidiPlayer.js -rename to www/src/engine/audio/MidiPlayer.js -diff --git a/src/engine/audio/MidiSourceMetadataParser.js b/www/src/engine/audio/MidiSourceMetadataParser.js -similarity index 100% -rename from src/engine/audio/MidiSourceMetadataParser.js -rename to www/src/engine/audio/MidiSourceMetadataParser.js -diff --git a/src/engine/audio/PlaylistManager.js b/www/src/engine/audio/PlaylistManager.js -similarity index 100% -rename from src/engine/audio/PlaylistManager.js -rename to www/src/engine/audio/PlaylistManager.js -diff --git a/src/engine/audio/PreviewInstrumentPacks.js b/www/src/engine/audio/PreviewInstrumentPacks.js -similarity index 100% -rename from src/engine/audio/PreviewInstrumentPacks.js -rename to www/src/engine/audio/PreviewInstrumentPacks.js -diff --git a/src/engine/audio/PreviewSynthEngine.js b/www/src/engine/audio/PreviewSynthEngine.js -similarity index 100% -rename from src/engine/audio/PreviewSynthEngine.js -rename to www/src/engine/audio/PreviewSynthEngine.js -diff --git a/src/engine/audio/SongSheetParser.js b/www/src/engine/audio/SongSheetParser.js -similarity index 100% -rename from src/engine/audio/SongSheetParser.js -rename to www/src/engine/audio/SongSheetParser.js -diff --git a/src/engine/audio/SoundFontPreviewEngine.js b/www/src/engine/audio/SoundFontPreviewEngine.js -similarity index 100% -rename from src/engine/audio/SoundFontPreviewEngine.js -rename to www/src/engine/audio/SoundFontPreviewEngine.js -diff --git a/src/engine/audio/Synthesizer.js b/www/src/engine/audio/Synthesizer.js -similarity index 100% -rename from src/engine/audio/Synthesizer.js -rename to www/src/engine/audio/Synthesizer.js -diff --git a/src/engine/audio/TextToSpeechDefaults.js b/www/src/engine/audio/TextToSpeechDefaults.js -similarity index 100% -rename from src/engine/audio/TextToSpeechDefaults.js -rename to www/src/engine/audio/TextToSpeechDefaults.js -diff --git a/src/engine/audio/TextToSpeechEngine.js b/www/src/engine/audio/TextToSpeechEngine.js -similarity index 100% -rename from src/engine/audio/TextToSpeechEngine.js -rename to www/src/engine/audio/TextToSpeechEngine.js -diff --git a/src/engine/audio/WebAudioToneBackend.js b/www/src/engine/audio/WebAudioToneBackend.js -similarity index 100% -rename from src/engine/audio/WebAudioToneBackend.js -rename to www/src/engine/audio/WebAudioToneBackend.js -diff --git a/src/engine/automation/AutomatedTestRunner.js b/www/src/engine/automation/AutomatedTestRunner.js -similarity index 100% -rename from src/engine/automation/AutomatedTestRunner.js -rename to www/src/engine/automation/AutomatedTestRunner.js -diff --git a/src/engine/automation/BenchmarkRunner.js b/www/src/engine/automation/BenchmarkRunner.js -similarity index 100% -rename from src/engine/automation/BenchmarkRunner.js -rename to www/src/engine/automation/BenchmarkRunner.js -diff --git a/src/engine/automation/CIValidationFlow.js b/www/src/engine/automation/CIValidationFlow.js -similarity index 100% -rename from src/engine/automation/CIValidationFlow.js -rename to www/src/engine/automation/CIValidationFlow.js -diff --git a/src/engine/automation/RegressionPlaybackHarness.js b/www/src/engine/automation/RegressionPlaybackHarness.js -similarity index 100% -rename from src/engine/automation/RegressionPlaybackHarness.js -rename to www/src/engine/automation/RegressionPlaybackHarness.js -diff --git a/src/engine/camera/Camera2D.js b/www/src/engine/camera/Camera2D.js -similarity index 100% -rename from src/engine/camera/Camera2D.js -rename to www/src/engine/camera/Camera2D.js -diff --git a/src/engine/camera/Camera3D.js b/www/src/engine/camera/Camera3D.js -similarity index 100% -rename from src/engine/camera/Camera3D.js -rename to www/src/engine/camera/Camera3D.js -diff --git a/src/engine/camera/CameraSystem.js b/www/src/engine/camera/CameraSystem.js -similarity index 100% -rename from src/engine/camera/CameraSystem.js -rename to www/src/engine/camera/CameraSystem.js -diff --git a/src/engine/camera/ZoneCameraSystem.js b/www/src/engine/camera/ZoneCameraSystem.js -similarity index 100% -rename from src/engine/camera/ZoneCameraSystem.js -rename to www/src/engine/camera/ZoneCameraSystem.js -diff --git a/src/engine/collision/aabb.js b/www/src/engine/collision/aabb.js -similarity index 100% -rename from src/engine/collision/aabb.js -rename to www/src/engine/collision/aabb.js -diff --git a/src/engine/collision/combat/Combat.js b/www/src/engine/collision/combat/Combat.js -similarity index 100% -rename from src/engine/collision/combat/Combat.js -rename to www/src/engine/collision/combat/Combat.js -diff --git a/src/engine/collision/hitboxCollision.js b/www/src/engine/collision/hitboxCollision.js -similarity index 100% -rename from src/engine/collision/hitboxCollision.js -rename to www/src/engine/collision/hitboxCollision.js -diff --git a/src/engine/collision/hybrid.js b/www/src/engine/collision/hybrid.js -similarity index 100% -rename from src/engine/collision/hybrid.js -rename to www/src/engine/collision/hybrid.js -diff --git a/src/engine/collision/objectVector.js b/www/src/engine/collision/objectVector.js -similarity index 100% -rename from src/engine/collision/objectVector.js -rename to www/src/engine/collision/objectVector.js -diff --git a/src/engine/collision/polygon.js b/www/src/engine/collision/polygon.js -similarity index 100% -rename from src/engine/collision/polygon.js -rename to www/src/engine/collision/polygon.js -diff --git a/src/engine/collision/raster.js b/www/src/engine/collision/raster.js -similarity index 100% -rename from src/engine/collision/raster.js -rename to www/src/engine/collision/raster.js -diff --git a/src/engine/components/Components.js b/www/src/engine/components/Components.js -similarity index 100% -rename from src/engine/components/Components.js -rename to www/src/engine/components/Components.js -diff --git a/src/engine/config/ConfigStore.js b/www/src/engine/config/ConfigStore.js -similarity index 100% -rename from src/engine/config/ConfigStore.js -rename to www/src/engine/config/ConfigStore.js -diff --git a/src/engine/core/Engine.js b/www/src/engine/core/Engine.js -similarity index 100% -rename from src/engine/core/Engine.js -rename to www/src/engine/core/Engine.js -diff --git a/src/engine/core/FixedTicker.js b/www/src/engine/core/FixedTicker.js -similarity index 100% -rename from src/engine/core/FixedTicker.js -rename to www/src/engine/core/FixedTicker.js -diff --git a/src/engine/core/FrameClock.js b/www/src/engine/core/FrameClock.js -similarity index 100% -rename from src/engine/core/FrameClock.js -rename to www/src/engine/core/FrameClock.js -diff --git a/src/engine/core/RuntimeMetrics.js b/www/src/engine/core/RuntimeMetrics.js -similarity index 100% -rename from src/engine/core/RuntimeMetrics.js -rename to www/src/engine/core/RuntimeMetrics.js -diff --git a/src/engine/debug/CombatDebugOverlay.js b/www/src/engine/debug/CombatDebugOverlay.js -similarity index 100% -rename from src/engine/debug/CombatDebugOverlay.js -rename to www/src/engine/debug/CombatDebugOverlay.js -diff --git a/src/engine/debug/DebugOverlayLayout.js b/www/src/engine/debug/DebugOverlayLayout.js -similarity index 100% -rename from src/engine/debug/DebugOverlayLayout.js -rename to www/src/engine/debug/DebugOverlayLayout.js -diff --git a/src/engine/debug/DebugPanel.js b/www/src/engine/debug/DebugPanel.js -similarity index 100% -rename from src/engine/debug/DebugPanel.js -rename to www/src/engine/debug/DebugPanel.js -diff --git a/src/engine/debug/DebugTools.js b/www/src/engine/debug/DebugTools.js -similarity index 100% -rename from src/engine/debug/DebugTools.js -rename to www/src/engine/debug/DebugTools.js -diff --git a/src/engine/debug/Minimap.js b/www/src/engine/debug/Minimap.js -similarity index 100% -rename from src/engine/debug/Minimap.js -rename to www/src/engine/debug/Minimap.js -diff --git a/src/engine/debug/PerformanceMetricsPanel.js b/www/src/engine/debug/PerformanceMetricsPanel.js -similarity index 100% -rename from src/engine/debug/PerformanceMetricsPanel.js -rename to www/src/engine/debug/PerformanceMetricsPanel.js -diff --git a/src/engine/debug/StatsTracker.js b/www/src/engine/debug/StatsTracker.js -similarity index 100% -rename from src/engine/debug/StatsTracker.js -rename to www/src/engine/debug/StatsTracker.js -diff --git a/src/engine/debug/Validation.js b/www/src/engine/debug/Validation.js -similarity index 100% -rename from src/engine/debug/Validation.js -rename to www/src/engine/debug/Validation.js -diff --git a/src/engine/debug/inspectors/bootstrap/createInspectorSurfaceIntegration.js b/www/src/engine/debug/inspectors/bootstrap/createInspectorSurfaceIntegration.js -similarity index 100% -rename from src/engine/debug/inspectors/bootstrap/createInspectorSurfaceIntegration.js -rename to www/src/engine/debug/inspectors/bootstrap/createInspectorSurfaceIntegration.js -diff --git a/src/engine/debug/inspectors/commands/registerInspectorCommands.js b/www/src/engine/debug/inspectors/commands/registerInspectorCommands.js -similarity index 100% -rename from src/engine/debug/inspectors/commands/registerInspectorCommands.js -rename to www/src/engine/debug/inspectors/commands/registerInspectorCommands.js -diff --git a/src/engine/debug/inspectors/host/debugInspectorHost.js b/www/src/engine/debug/inspectors/host/debugInspectorHost.js -similarity index 100% -rename from src/engine/debug/inspectors/host/debugInspectorHost.js -rename to www/src/engine/debug/inspectors/host/debugInspectorHost.js -diff --git a/src/engine/debug/inspectors/presets/registerAdvancedInspectorDebugPresets.js b/www/src/engine/debug/inspectors/presets/registerAdvancedInspectorDebugPresets.js -similarity index 100% -rename from src/engine/debug/inspectors/presets/registerAdvancedInspectorDebugPresets.js -rename to www/src/engine/debug/inspectors/presets/registerAdvancedInspectorDebugPresets.js -diff --git a/src/engine/debug/inspectors/registry/debugInspectorRegistry.js b/www/src/engine/debug/inspectors/registry/debugInspectorRegistry.js -similarity index 100% -rename from src/engine/debug/inspectors/registry/debugInspectorRegistry.js -rename to www/src/engine/debug/inspectors/registry/debugInspectorRegistry.js -diff --git a/src/engine/debug/inspectors/shared/inspectorUtils.js b/www/src/engine/debug/inspectors/shared/inspectorUtils.js -similarity index 100% -rename from src/engine/debug/inspectors/shared/inspectorUtils.js -rename to www/src/engine/debug/inspectors/shared/inspectorUtils.js -diff --git a/src/engine/debug/inspectors/viewModels/componentInspectorViewModel.js b/www/src/engine/debug/inspectors/viewModels/componentInspectorViewModel.js -similarity index 100% -rename from src/engine/debug/inspectors/viewModels/componentInspectorViewModel.js -rename to www/src/engine/debug/inspectors/viewModels/componentInspectorViewModel.js -diff --git a/src/engine/debug/inspectors/viewModels/entityInspectorViewModel.js b/www/src/engine/debug/inspectors/viewModels/entityInspectorViewModel.js -similarity index 100% -rename from src/engine/debug/inspectors/viewModels/entityInspectorViewModel.js -rename to www/src/engine/debug/inspectors/viewModels/entityInspectorViewModel.js -diff --git a/src/engine/debug/inspectors/viewModels/eventStreamInspectorViewModel.js b/www/src/engine/debug/inspectors/viewModels/eventStreamInspectorViewModel.js -similarity index 100% -rename from src/engine/debug/inspectors/viewModels/eventStreamInspectorViewModel.js -rename to www/src/engine/debug/inspectors/viewModels/eventStreamInspectorViewModel.js -diff --git a/src/engine/debug/inspectors/viewModels/stateDiffInspectorViewModel.js b/www/src/engine/debug/inspectors/viewModels/stateDiffInspectorViewModel.js -similarity index 100% -rename from src/engine/debug/inspectors/viewModels/stateDiffInspectorViewModel.js -rename to www/src/engine/debug/inspectors/viewModels/stateDiffInspectorViewModel.js -diff --git a/src/engine/debug/inspectors/viewModels/timelineInspectorViewModel.js b/www/src/engine/debug/inspectors/viewModels/timelineInspectorViewModel.js -similarity index 100% -rename from src/engine/debug/inspectors/viewModels/timelineInspectorViewModel.js -rename to www/src/engine/debug/inspectors/viewModels/timelineInspectorViewModel.js -diff --git a/src/engine/debug/network/bootstrap/createNetworkDebugSurfaceIntegration.js b/www/src/engine/debug/network/bootstrap/createNetworkDebugSurfaceIntegration.js -similarity index 100% -rename from src/engine/debug/network/bootstrap/createNetworkDebugSurfaceIntegration.js -rename to www/src/engine/debug/network/bootstrap/createNetworkDebugSurfaceIntegration.js -diff --git a/src/engine/debug/network/commands/networkDebugCommandPackBridge.js b/www/src/engine/debug/network/commands/networkDebugCommandPackBridge.js -similarity index 100% -rename from src/engine/debug/network/commands/networkDebugCommandPackBridge.js -rename to www/src/engine/debug/network/commands/networkDebugCommandPackBridge.js -diff --git a/src/engine/debug/network/dashboard/registerDashboardCommands.js b/www/src/engine/debug/network/dashboard/registerDashboardCommands.js -similarity index 100% -rename from src/engine/debug/network/dashboard/registerDashboardCommands.js -rename to www/src/engine/debug/network/dashboard/registerDashboardCommands.js -diff --git a/src/engine/debug/network/dashboard/serverDashboardHost.js b/www/src/engine/debug/network/dashboard/serverDashboardHost.js -similarity index 100% -rename from src/engine/debug/network/dashboard/serverDashboardHost.js -rename to www/src/engine/debug/network/dashboard/serverDashboardHost.js -diff --git a/src/engine/debug/network/dashboard/serverDashboardMetrics.js b/www/src/engine/debug/network/dashboard/serverDashboardMetrics.js -similarity index 100% -rename from src/engine/debug/network/dashboard/serverDashboardMetrics.js -rename to www/src/engine/debug/network/dashboard/serverDashboardMetrics.js -diff --git a/src/engine/debug/network/dashboard/serverDashboardProviders.js b/www/src/engine/debug/network/dashboard/serverDashboardProviders.js -similarity index 100% -rename from src/engine/debug/network/dashboard/serverDashboardProviders.js -rename to www/src/engine/debug/network/dashboard/serverDashboardProviders.js -diff --git a/src/engine/debug/network/dashboard/serverDashboardRefreshModes.js b/www/src/engine/debug/network/dashboard/serverDashboardRefreshModes.js -similarity index 100% -rename from src/engine/debug/network/dashboard/serverDashboardRefreshModes.js -rename to www/src/engine/debug/network/dashboard/serverDashboardRefreshModes.js -diff --git a/src/engine/debug/network/dashboard/serverDashboardRegistry.js b/www/src/engine/debug/network/dashboard/serverDashboardRegistry.js -similarity index 100% -rename from src/engine/debug/network/dashboard/serverDashboardRegistry.js -rename to www/src/engine/debug/network/dashboard/serverDashboardRegistry.js -diff --git a/src/engine/debug/network/dashboard/serverDashboardRenderer.js b/www/src/engine/debug/network/dashboard/serverDashboardRenderer.js -similarity index 100% -rename from src/engine/debug/network/dashboard/serverDashboardRenderer.js -rename to www/src/engine/debug/network/dashboard/serverDashboardRenderer.js -diff --git a/src/engine/debug/network/dashboard/serverDashboardViewModel.js b/www/src/engine/debug/network/dashboard/serverDashboardViewModel.js -similarity index 100% -rename from src/engine/debug/network/dashboard/serverDashboardViewModel.js -rename to www/src/engine/debug/network/dashboard/serverDashboardViewModel.js -diff --git a/src/engine/debug/network/diagnostics/divergenceDiagnosticsModel.js b/www/src/engine/debug/network/diagnostics/divergenceDiagnosticsModel.js -similarity index 100% -rename from src/engine/debug/network/diagnostics/divergenceDiagnosticsModel.js -rename to www/src/engine/debug/network/diagnostics/divergenceDiagnosticsModel.js -diff --git a/src/engine/debug/network/diagnostics/latencyDiagnosticsModel.js b/www/src/engine/debug/network/diagnostics/latencyDiagnosticsModel.js -similarity index 100% -rename from src/engine/debug/network/diagnostics/latencyDiagnosticsModel.js -rename to www/src/engine/debug/network/diagnostics/latencyDiagnosticsModel.js -diff --git a/src/engine/debug/network/diagnostics/networkPromotionRecommendation.js b/www/src/engine/debug/network/diagnostics/networkPromotionRecommendation.js -similarity index 100% -rename from src/engine/debug/network/diagnostics/networkPromotionRecommendation.js -rename to www/src/engine/debug/network/diagnostics/networkPromotionRecommendation.js -diff --git a/src/engine/debug/network/diagnostics/replicationDiagnosticsModel.js b/www/src/engine/debug/network/diagnostics/replicationDiagnosticsModel.js -similarity index 100% -rename from src/engine/debug/network/diagnostics/replicationDiagnosticsModel.js -rename to www/src/engine/debug/network/diagnostics/replicationDiagnosticsModel.js -diff --git a/src/engine/debug/network/panels/networkDebugPanelRegistry.js b/www/src/engine/debug/network/panels/networkDebugPanelRegistry.js -similarity index 100% -rename from src/engine/debug/network/panels/networkDebugPanelRegistry.js -rename to www/src/engine/debug/network/panels/networkDebugPanelRegistry.js -diff --git a/src/engine/debug/network/panels/networkObservabilityPanels.js b/www/src/engine/debug/network/panels/networkObservabilityPanels.js -similarity index 100% -rename from src/engine/debug/network/panels/networkObservabilityPanels.js -rename to www/src/engine/debug/network/panels/networkObservabilityPanels.js -diff --git a/src/engine/debug/network/providers/networkDebugProviderRegistry.js b/www/src/engine/debug/network/providers/networkDebugProviderRegistry.js -similarity index 100% -rename from src/engine/debug/network/providers/networkDebugProviderRegistry.js -rename to www/src/engine/debug/network/providers/networkDebugProviderRegistry.js -diff --git a/src/engine/debug/network/shared/hostReadUtils.js b/www/src/engine/debug/network/shared/hostReadUtils.js -similarity index 100% -rename from src/engine/debug/network/shared/hostReadUtils.js -rename to www/src/engine/debug/network/shared/hostReadUtils.js -diff --git a/src/engine/debug/network/shared/networkDebugUtils.js b/www/src/engine/debug/network/shared/networkDebugUtils.js -similarity index 100% -rename from src/engine/debug/network/shared/networkDebugUtils.js -rename to www/src/engine/debug/network/shared/networkDebugUtils.js -diff --git a/src/engine/debug/panels/PromotionGatePanel.js b/www/src/engine/debug/panels/PromotionGatePanel.js -similarity index 100% -rename from src/engine/debug/panels/PromotionGatePanel.js -rename to www/src/engine/debug/panels/PromotionGatePanel.js -diff --git a/src/engine/debug/shared/debugCommandResultUtils.js b/www/src/engine/debug/shared/debugCommandResultUtils.js -similarity index 100% -rename from src/engine/debug/shared/debugCommandResultUtils.js -rename to www/src/engine/debug/shared/debugCommandResultUtils.js -diff --git a/src/engine/debug/standard/threeD/bootstrap/createStandard3dDebugSurfaceIntegration.js b/www/src/engine/debug/standard/threeD/bootstrap/createStandard3dDebugSurfaceIntegration.js -similarity index 100% -rename from src/engine/debug/standard/threeD/bootstrap/createStandard3dDebugSurfaceIntegration.js -rename to www/src/engine/debug/standard/threeD/bootstrap/createStandard3dDebugSurfaceIntegration.js -diff --git a/src/engine/debug/standard/threeD/panels/panel3dCamera.js b/www/src/engine/debug/standard/threeD/panels/panel3dCamera.js -similarity index 100% -rename from src/engine/debug/standard/threeD/panels/panel3dCamera.js -rename to www/src/engine/debug/standard/threeD/panels/panel3dCamera.js -diff --git a/src/engine/debug/standard/threeD/panels/panel3dCollision.js b/www/src/engine/debug/standard/threeD/panels/panel3dCollision.js -similarity index 100% -rename from src/engine/debug/standard/threeD/panels/panel3dCollision.js -rename to www/src/engine/debug/standard/threeD/panels/panel3dCollision.js -diff --git a/src/engine/debug/standard/threeD/panels/panel3dCollisionOverlays.js b/www/src/engine/debug/standard/threeD/panels/panel3dCollisionOverlays.js -similarity index 100% -rename from src/engine/debug/standard/threeD/panels/panel3dCollisionOverlays.js -rename to www/src/engine/debug/standard/threeD/panels/panel3dCollisionOverlays.js -diff --git a/src/engine/debug/standard/threeD/panels/panel3dRenderPipelineStages.js b/www/src/engine/debug/standard/threeD/panels/panel3dRenderPipelineStages.js -similarity index 100% -rename from src/engine/debug/standard/threeD/panels/panel3dRenderPipelineStages.js -rename to www/src/engine/debug/standard/threeD/panels/panel3dRenderPipelineStages.js -diff --git a/src/engine/debug/standard/threeD/panels/panel3dRenderStages.js b/www/src/engine/debug/standard/threeD/panels/panel3dRenderStages.js -similarity index 100% -rename from src/engine/debug/standard/threeD/panels/panel3dRenderStages.js -rename to www/src/engine/debug/standard/threeD/panels/panel3dRenderStages.js -diff --git a/src/engine/debug/standard/threeD/panels/panel3dSceneGraph.js b/www/src/engine/debug/standard/threeD/panels/panel3dSceneGraph.js -similarity index 100% -rename from src/engine/debug/standard/threeD/panels/panel3dSceneGraph.js -rename to www/src/engine/debug/standard/threeD/panels/panel3dSceneGraph.js -diff --git a/src/engine/debug/standard/threeD/panels/panel3dSceneGraphInspector.js b/www/src/engine/debug/standard/threeD/panels/panel3dSceneGraphInspector.js -similarity index 100% -rename from src/engine/debug/standard/threeD/panels/panel3dSceneGraphInspector.js -rename to www/src/engine/debug/standard/threeD/panels/panel3dSceneGraphInspector.js -diff --git a/src/engine/debug/standard/threeD/panels/panel3dTransform.js b/www/src/engine/debug/standard/threeD/panels/panel3dTransform.js -similarity index 100% -rename from src/engine/debug/standard/threeD/panels/panel3dTransform.js -rename to www/src/engine/debug/standard/threeD/panels/panel3dTransform.js -diff --git a/src/engine/debug/standard/threeD/panels/panel3dTransformInspector.js b/www/src/engine/debug/standard/threeD/panels/panel3dTransformInspector.js -similarity index 100% -rename from src/engine/debug/standard/threeD/panels/panel3dTransformInspector.js -rename to www/src/engine/debug/standard/threeD/panels/panel3dTransformInspector.js -diff --git a/src/engine/debug/standard/threeD/panels/registerStandard3dPanels.js b/www/src/engine/debug/standard/threeD/panels/registerStandard3dPanels.js -similarity index 100% -rename from src/engine/debug/standard/threeD/panels/registerStandard3dPanels.js -rename to www/src/engine/debug/standard/threeD/panels/registerStandard3dPanels.js -diff --git a/src/engine/debug/standard/threeD/presets/registerStandard3dDebugPresets.js b/www/src/engine/debug/standard/threeD/presets/registerStandard3dDebugPresets.js -similarity index 100% -rename from src/engine/debug/standard/threeD/presets/registerStandard3dDebugPresets.js -rename to www/src/engine/debug/standard/threeD/presets/registerStandard3dDebugPresets.js -diff --git a/src/engine/debug/standard/threeD/providers/cameraSummaryProvider.js b/www/src/engine/debug/standard/threeD/providers/cameraSummaryProvider.js -similarity index 100% -rename from src/engine/debug/standard/threeD/providers/cameraSummaryProvider.js -rename to www/src/engine/debug/standard/threeD/providers/cameraSummaryProvider.js -diff --git a/src/engine/debug/standard/threeD/providers/collisionOverlaysProvider.js b/www/src/engine/debug/standard/threeD/providers/collisionOverlaysProvider.js -similarity index 100% -rename from src/engine/debug/standard/threeD/providers/collisionOverlaysProvider.js -rename to www/src/engine/debug/standard/threeD/providers/collisionOverlaysProvider.js -diff --git a/src/engine/debug/standard/threeD/providers/collisionSummaryProvider.js b/www/src/engine/debug/standard/threeD/providers/collisionSummaryProvider.js -similarity index 100% -rename from src/engine/debug/standard/threeD/providers/collisionSummaryProvider.js -rename to www/src/engine/debug/standard/threeD/providers/collisionSummaryProvider.js -diff --git a/src/engine/debug/standard/threeD/providers/registerStandard3dProviders.js b/www/src/engine/debug/standard/threeD/providers/registerStandard3dProviders.js -similarity index 100% -rename from src/engine/debug/standard/threeD/providers/registerStandard3dProviders.js -rename to www/src/engine/debug/standard/threeD/providers/registerStandard3dProviders.js -diff --git a/src/engine/debug/standard/threeD/providers/renderPipelineStagesProvider.js b/www/src/engine/debug/standard/threeD/providers/renderPipelineStagesProvider.js -similarity index 100% -rename from src/engine/debug/standard/threeD/providers/renderPipelineStagesProvider.js -rename to www/src/engine/debug/standard/threeD/providers/renderPipelineStagesProvider.js -diff --git a/src/engine/debug/standard/threeD/providers/renderStageSummaryProvider.js b/www/src/engine/debug/standard/threeD/providers/renderStageSummaryProvider.js -similarity index 100% -rename from src/engine/debug/standard/threeD/providers/renderStageSummaryProvider.js -rename to www/src/engine/debug/standard/threeD/providers/renderStageSummaryProvider.js -diff --git a/src/engine/debug/standard/threeD/providers/sceneGraphInspectorProvider.js b/www/src/engine/debug/standard/threeD/providers/sceneGraphInspectorProvider.js -similarity index 100% -rename from src/engine/debug/standard/threeD/providers/sceneGraphInspectorProvider.js -rename to www/src/engine/debug/standard/threeD/providers/sceneGraphInspectorProvider.js -diff --git a/src/engine/debug/standard/threeD/providers/sceneGraphSummaryProvider.js b/www/src/engine/debug/standard/threeD/providers/sceneGraphSummaryProvider.js -similarity index 100% -rename from src/engine/debug/standard/threeD/providers/sceneGraphSummaryProvider.js -rename to www/src/engine/debug/standard/threeD/providers/sceneGraphSummaryProvider.js -diff --git a/src/engine/debug/standard/threeD/providers/transformInspectorProvider.js b/www/src/engine/debug/standard/threeD/providers/transformInspectorProvider.js -similarity index 100% -rename from src/engine/debug/standard/threeD/providers/transformInspectorProvider.js -rename to www/src/engine/debug/standard/threeD/providers/transformInspectorProvider.js -diff --git a/src/engine/debug/standard/threeD/providers/transformSummaryProvider.js b/www/src/engine/debug/standard/threeD/providers/transformSummaryProvider.js -similarity index 100% -rename from src/engine/debug/standard/threeD/providers/transformSummaryProvider.js -rename to www/src/engine/debug/standard/threeD/providers/transformSummaryProvider.js -diff --git a/src/engine/debug/standard/threeD/shared/threeDDebugUtils.js b/www/src/engine/debug/standard/threeD/shared/threeDDebugUtils.js -similarity index 100% -rename from src/engine/debug/standard/threeD/shared/threeDDebugUtils.js -rename to www/src/engine/debug/standard/threeD/shared/threeDDebugUtils.js -diff --git a/src/engine/ecs/World.js b/www/src/engine/ecs/World.js -similarity index 100% -rename from src/engine/ecs/World.js -rename to www/src/engine/ecs/World.js -diff --git a/src/engine/entity/Bounds.js b/www/src/engine/entity/Bounds.js -similarity index 100% -rename from src/engine/entity/Bounds.js -rename to www/src/engine/entity/Bounds.js -diff --git a/src/engine/entity/Entity.js b/www/src/engine/entity/Entity.js -similarity index 100% -rename from src/engine/entity/Entity.js -rename to www/src/engine/entity/Entity.js -diff --git a/src/engine/entity/Transform.js b/www/src/engine/entity/Transform.js -similarity index 100% -rename from src/engine/entity/Transform.js -rename to www/src/engine/entity/Transform.js -diff --git a/src/engine/entity/Velocity.js b/www/src/engine/entity/Velocity.js -similarity index 100% -rename from src/engine/entity/Velocity.js -rename to www/src/engine/entity/Velocity.js -diff --git a/src/engine/events/EventBus.js b/www/src/engine/events/EventBus.js -similarity index 100% -rename from src/engine/events/EventBus.js -rename to www/src/engine/events/EventBus.js -diff --git a/src/engine/fx/ParticleSystem.js b/www/src/engine/fx/ParticleSystem.js -similarity index 100% -rename from src/engine/fx/ParticleSystem.js -rename to www/src/engine/fx/ParticleSystem.js -diff --git a/src/engine/game/GameModeState.js b/www/src/engine/game/GameModeState.js -similarity index 100% -rename from src/engine/game/GameModeState.js -rename to www/src/engine/game/GameModeState.js -diff --git a/src/engine/game/gameplayHooks.js b/www/src/engine/game/gameplayHooks.js -similarity index 100% -rename from src/engine/game/gameplayHooks.js -rename to www/src/engine/game/gameplayHooks.js -diff --git a/src/engine/input/ActionInputDebugOverlay.js b/www/src/engine/input/ActionInputDebugOverlay.js -similarity index 100% -rename from src/engine/input/ActionInputDebugOverlay.js -rename to www/src/engine/input/ActionInputDebugOverlay.js -diff --git a/src/engine/input/ActionInputMap.js b/www/src/engine/input/ActionInputMap.js -similarity index 100% -rename from src/engine/input/ActionInputMap.js -rename to www/src/engine/input/ActionInputMap.js -diff --git a/src/engine/input/ActionInputService.js b/www/src/engine/input/ActionInputService.js -similarity index 100% -rename from src/engine/input/ActionInputService.js -rename to www/src/engine/input/ActionInputService.js -diff --git a/src/engine/input/GamepadHapticsService.js b/www/src/engine/input/GamepadHapticsService.js -similarity index 100% -rename from src/engine/input/GamepadHapticsService.js -rename to www/src/engine/input/GamepadHapticsService.js -diff --git a/src/engine/input/GamepadInputAdapter.js b/www/src/engine/input/GamepadInputAdapter.js -similarity index 100% -rename from src/engine/input/GamepadInputAdapter.js -rename to www/src/engine/input/GamepadInputAdapter.js -diff --git a/src/engine/input/GamepadInputClassifier.js b/www/src/engine/input/GamepadInputClassifier.js -similarity index 100% -rename from src/engine/input/GamepadInputClassifier.js -rename to www/src/engine/input/GamepadInputClassifier.js -diff --git a/src/engine/input/GamepadState.js b/www/src/engine/input/GamepadState.js -similarity index 100% -rename from src/engine/input/GamepadState.js -rename to www/src/engine/input/GamepadState.js -diff --git a/src/engine/input/InputCapabilityDescriptors.js b/www/src/engine/input/InputCapabilityDescriptors.js -similarity index 100% -rename from src/engine/input/InputCapabilityDescriptors.js -rename to www/src/engine/input/InputCapabilityDescriptors.js -diff --git a/src/engine/input/InputCaptureService.js b/www/src/engine/input/InputCaptureService.js -similarity index 100% -rename from src/engine/input/InputCaptureService.js -rename to www/src/engine/input/InputCaptureService.js -diff --git a/src/engine/input/InputCaptureSession.js b/www/src/engine/input/InputCaptureSession.js -similarity index 100% -rename from src/engine/input/InputCaptureSession.js -rename to www/src/engine/input/InputCaptureSession.js -diff --git a/src/engine/input/InputComboState.js b/www/src/engine/input/InputComboState.js -similarity index 100% -rename from src/engine/input/InputComboState.js -rename to www/src/engine/input/InputComboState.js -diff --git a/src/engine/input/InputContextService.js b/www/src/engine/input/InputContextService.js -similarity index 100% -rename from src/engine/input/InputContextService.js -rename to www/src/engine/input/InputContextService.js -diff --git a/src/engine/input/InputMap.js b/www/src/engine/input/InputMap.js -similarity index 100% -rename from src/engine/input/InputMap.js -rename to www/src/engine/input/InputMap.js -diff --git a/src/engine/input/InputMappingManifest.js b/www/src/engine/input/InputMappingManifest.js -similarity index 100% -rename from src/engine/input/InputMappingManifest.js -rename to www/src/engine/input/InputMappingManifest.js -diff --git a/src/engine/input/InputService.js b/www/src/engine/input/InputService.js -similarity index 100% -rename from src/engine/input/InputService.js -rename to www/src/engine/input/InputService.js -diff --git a/src/engine/input/KeyboardState.js b/www/src/engine/input/KeyboardState.js -similarity index 100% -rename from src/engine/input/KeyboardState.js -rename to www/src/engine/input/KeyboardState.js -diff --git a/src/engine/input/MouseState.js b/www/src/engine/input/MouseState.js -similarity index 100% -rename from src/engine/input/MouseState.js -rename to www/src/engine/input/MouseState.js -diff --git a/src/engine/input/NormalizedInputRegistry.js b/www/src/engine/input/NormalizedInputRegistry.js -similarity index 100% -rename from src/engine/input/NormalizedInputRegistry.js -rename to www/src/engine/input/NormalizedInputRegistry.js -diff --git a/src/engine/input/PointerDragState.js b/www/src/engine/input/PointerDragState.js -similarity index 100% -rename from src/engine/input/PointerDragState.js -rename to www/src/engine/input/PointerDragState.js -diff --git a/src/engine/interaction/InteractionSystem.js b/www/src/engine/interaction/InteractionSystem.js -similarity index 100% -rename from src/engine/interaction/InteractionSystem.js -rename to www/src/engine/interaction/InteractionSystem.js -diff --git a/src/engine/level/LevelLoader.js b/www/src/engine/level/LevelLoader.js -similarity index 100% -rename from src/engine/level/LevelLoader.js -rename to www/src/engine/level/LevelLoader.js -diff --git a/src/engine/localization/LocalizationService.js b/www/src/engine/localization/LocalizationService.js -similarity index 100% -rename from src/engine/localization/LocalizationService.js -rename to www/src/engine/localization/LocalizationService.js -diff --git a/src/engine/logging/ErrorBoundary.js b/www/src/engine/logging/ErrorBoundary.js -similarity index 100% -rename from src/engine/logging/ErrorBoundary.js -rename to www/src/engine/logging/ErrorBoundary.js -diff --git a/src/engine/logging/Logger.js b/www/src/engine/logging/Logger.js -similarity index 100% -rename from src/engine/logging/Logger.js -rename to www/src/engine/logging/Logger.js -diff --git a/src/engine/memory/DisposableStore.js b/www/src/engine/memory/DisposableStore.js -similarity index 100% -rename from src/engine/memory/DisposableStore.js -rename to www/src/engine/memory/DisposableStore.js -diff --git a/src/engine/memory/ObjectPool.js b/www/src/engine/memory/ObjectPool.js -similarity index 100% -rename from src/engine/memory/ObjectPool.js -rename to www/src/engine/memory/ObjectPool.js -diff --git a/src/engine/network/bootstrap/HostServerBootstrap.js b/www/src/engine/network/bootstrap/HostServerBootstrap.js -similarity index 100% -rename from src/engine/network/bootstrap/HostServerBootstrap.js -rename to www/src/engine/network/bootstrap/HostServerBootstrap.js -diff --git a/src/engine/network/bootstrap/NetworkingLayer.js b/www/src/engine/network/bootstrap/NetworkingLayer.js -similarity index 100% -rename from src/engine/network/bootstrap/NetworkingLayer.js -rename to www/src/engine/network/bootstrap/NetworkingLayer.js -diff --git a/src/engine/network/client/ClientReconciliationStrategy.js b/www/src/engine/network/client/ClientReconciliationStrategy.js -similarity index 100% -rename from src/engine/network/client/ClientReconciliationStrategy.js -rename to www/src/engine/network/client/ClientReconciliationStrategy.js -diff --git a/src/engine/network/client/ClientReplicationApplicationLayer.js b/www/src/engine/network/client/ClientReplicationApplicationLayer.js -similarity index 100% -rename from src/engine/network/client/ClientReplicationApplicationLayer.js -rename to www/src/engine/network/client/ClientReplicationApplicationLayer.js -diff --git a/src/engine/network/client/PredictionReconciler.js b/www/src/engine/network/client/PredictionReconciler.js -similarity index 100% -rename from src/engine/network/client/PredictionReconciler.js -rename to www/src/engine/network/client/PredictionReconciler.js -diff --git a/src/engine/network/client/RemoteInterpolationBuffer.js b/www/src/engine/network/client/RemoteInterpolationBuffer.js -similarity index 100% -rename from src/engine/network/client/RemoteInterpolationBuffer.js -rename to www/src/engine/network/client/RemoteInterpolationBuffer.js -diff --git a/src/engine/network/debug/NetworkDebugOverlay.js b/www/src/engine/network/debug/NetworkDebugOverlay.js -similarity index 100% -rename from src/engine/network/debug/NetworkDebugOverlay.js -rename to www/src/engine/network/debug/NetworkDebugOverlay.js -diff --git a/src/engine/network/replication/ReplicationMessageContract.js b/www/src/engine/network/replication/ReplicationMessageContract.js -similarity index 100% -rename from src/engine/network/replication/ReplicationMessageContract.js -rename to www/src/engine/network/replication/ReplicationMessageContract.js -diff --git a/src/engine/network/replication/StateReplication.js b/www/src/engine/network/replication/StateReplication.js -similarity index 100% -rename from src/engine/network/replication/StateReplication.js -rename to www/src/engine/network/replication/StateReplication.js -diff --git a/src/engine/network/server/AuthoritativeInputIngestionContract.js b/www/src/engine/network/server/AuthoritativeInputIngestionContract.js -similarity index 100% -rename from src/engine/network/server/AuthoritativeInputIngestionContract.js -rename to www/src/engine/network/server/AuthoritativeInputIngestionContract.js -diff --git a/src/engine/network/server/AuthoritativeServerRuntime.js b/www/src/engine/network/server/AuthoritativeServerRuntime.js -similarity index 100% -rename from src/engine/network/server/AuthoritativeServerRuntime.js -rename to www/src/engine/network/server/AuthoritativeServerRuntime.js -diff --git a/src/engine/network/server/InterestManager.js b/www/src/engine/network/server/InterestManager.js -similarity index 100% -rename from src/engine/network/server/InterestManager.js -rename to www/src/engine/network/server/InterestManager.js -diff --git a/src/engine/network/server/RollbackDiagnostics.js b/www/src/engine/network/server/RollbackDiagnostics.js -similarity index 100% -rename from src/engine/network/server/RollbackDiagnostics.js -rename to www/src/engine/network/server/RollbackDiagnostics.js -diff --git a/src/engine/network/session/ChatPresenceLayer.js b/www/src/engine/network/session/ChatPresenceLayer.js -similarity index 100% -rename from src/engine/network/session/ChatPresenceLayer.js -rename to www/src/engine/network/session/ChatPresenceLayer.js -diff --git a/src/engine/network/session/HandshakeSimulator.js b/www/src/engine/network/session/HandshakeSimulator.js -similarity index 100% -rename from src/engine/network/session/HandshakeSimulator.js -rename to www/src/engine/network/session/HandshakeSimulator.js -diff --git a/src/engine/network/session/LobbySessionManager.js b/www/src/engine/network/session/LobbySessionManager.js -similarity index 100% -rename from src/engine/network/session/LobbySessionManager.js -rename to www/src/engine/network/session/LobbySessionManager.js -diff --git a/src/engine/network/session/SessionLifecycleContract.js b/www/src/engine/network/session/SessionLifecycleContract.js -similarity index 100% -rename from src/engine/network/session/SessionLifecycleContract.js -rename to www/src/engine/network/session/SessionLifecycleContract.js -diff --git a/src/engine/network/transport/LoopbackTransport.js b/www/src/engine/network/transport/LoopbackTransport.js -similarity index 100% -rename from src/engine/network/transport/LoopbackTransport.js -rename to www/src/engine/network/transport/LoopbackTransport.js -diff --git a/src/engine/network/transport/NetworkConditionSimulator.js b/www/src/engine/network/transport/NetworkConditionSimulator.js -similarity index 100% -rename from src/engine/network/transport/NetworkConditionSimulator.js -rename to www/src/engine/network/transport/NetworkConditionSimulator.js -diff --git a/src/engine/network/transport/Serializer.js b/www/src/engine/network/transport/Serializer.js -similarity index 100% -rename from src/engine/network/transport/Serializer.js -rename to www/src/engine/network/transport/Serializer.js -diff --git a/src/engine/network/transport/TransportContract.js b/www/src/engine/network/transport/TransportContract.js -similarity index 100% -rename from src/engine/network/transport/TransportContract.js -rename to www/src/engine/network/transport/TransportContract.js -diff --git a/src/engine/object-model/index.js b/www/src/engine/object-model/index.js -similarity index 100% -rename from src/engine/object-model/index.js -rename to www/src/engine/object-model/index.js -diff --git a/src/engine/object-model/objectDefinitionSchema.js b/www/src/engine/object-model/objectDefinitionSchema.js -similarity index 100% -rename from src/engine/object-model/objectDefinitionSchema.js -rename to www/src/engine/object-model/objectDefinitionSchema.js -diff --git a/src/engine/object-model/objectDefinitionValidator.js b/www/src/engine/object-model/objectDefinitionValidator.js -similarity index 100% -rename from src/engine/object-model/objectDefinitionValidator.js -rename to www/src/engine/object-model/objectDefinitionValidator.js -diff --git a/src/engine/object-model/objectModelRegistry.js b/www/src/engine/object-model/objectModelRegistry.js -similarity index 100% -rename from src/engine/object-model/objectModelRegistry.js -rename to www/src/engine/object-model/objectModelRegistry.js -diff --git a/src/engine/paletteList.js b/www/src/engine/paletteList.js -similarity index 100% -rename from src/engine/paletteList.js -rename to www/src/engine/paletteList.js -diff --git a/src/engine/persistence/BrowserStorageService.js b/www/src/engine/persistence/BrowserStorageService.js -similarity index 100% -rename from src/engine/persistence/BrowserStorageService.js -rename to www/src/engine/persistence/BrowserStorageService.js -diff --git a/src/engine/persistence/CompressionService.js b/www/src/engine/persistence/CompressionService.js -similarity index 100% -rename from src/engine/persistence/CompressionService.js -rename to www/src/engine/persistence/CompressionService.js -diff --git a/src/engine/persistence/CookieStorageService.js b/www/src/engine/persistence/CookieStorageService.js -similarity index 100% -rename from src/engine/persistence/CookieStorageService.js -rename to www/src/engine/persistence/CookieStorageService.js -diff --git a/src/engine/persistence/FilePersistenceService.js b/www/src/engine/persistence/FilePersistenceService.js -similarity index 100% -rename from src/engine/persistence/FilePersistenceService.js -rename to www/src/engine/persistence/FilePersistenceService.js -diff --git a/src/engine/persistence/LocalStorageService.js b/www/src/engine/persistence/LocalStorageService.js -similarity index 100% -rename from src/engine/persistence/LocalStorageService.js -rename to www/src/engine/persistence/LocalStorageService.js -diff --git a/src/engine/persistence/SaveSlotManager.js b/www/src/engine/persistence/SaveSlotManager.js -similarity index 100% -rename from src/engine/persistence/SaveSlotManager.js -rename to www/src/engine/persistence/SaveSlotManager.js -diff --git a/src/engine/persistence/SessionStorageService.js b/www/src/engine/persistence/SessionStorageService.js -similarity index 100% -rename from src/engine/persistence/SessionStorageService.js -rename to www/src/engine/persistence/SessionStorageService.js -diff --git a/src/engine/persistence/StorageService.js b/www/src/engine/persistence/StorageService.js -similarity index 100% -rename from src/engine/persistence/StorageService.js -rename to www/src/engine/persistence/StorageService.js -diff --git a/src/engine/persistence/WorldSerializer.js b/www/src/engine/persistence/WorldSerializer.js -similarity index 100% -rename from src/engine/persistence/WorldSerializer.js -rename to www/src/engine/persistence/WorldSerializer.js -diff --git a/src/engine/physics/arcadeBody.js b/www/src/engine/physics/arcadeBody.js -similarity index 100% -rename from src/engine/physics/arcadeBody.js -rename to www/src/engine/physics/arcadeBody.js -diff --git a/src/engine/physics/collision3d.js b/www/src/engine/physics/collision3d.js -similarity index 100% -rename from src/engine/physics/collision3d.js -rename to www/src/engine/physics/collision3d.js -diff --git a/src/engine/physics/drag.js b/www/src/engine/physics/drag.js -similarity index 100% -rename from src/engine/physics/drag.js -rename to www/src/engine/physics/drag.js -diff --git a/src/engine/physics/integration.js b/www/src/engine/physics/integration.js -similarity index 100% -rename from src/engine/physics/integration.js -rename to www/src/engine/physics/integration.js -diff --git a/src/engine/physics/integration3d.js b/www/src/engine/physics/integration3d.js -similarity index 100% -rename from src/engine/physics/integration3d.js -rename to www/src/engine/physics/integration3d.js -diff --git a/src/engine/physics/scene3d.js b/www/src/engine/physics/scene3d.js -similarity index 100% -rename from src/engine/physics/scene3d.js -rename to www/src/engine/physics/scene3d.js -diff --git a/src/engine/prefabs/PrefabFactory.js b/www/src/engine/prefabs/PrefabFactory.js -similarity index 100% -rename from src/engine/prefabs/PrefabFactory.js -rename to www/src/engine/prefabs/PrefabFactory.js -diff --git a/src/engine/release/AccessibilityOptions.js b/www/src/engine/release/AccessibilityOptions.js -similarity index 100% -rename from src/engine/release/AccessibilityOptions.js -rename to www/src/engine/release/AccessibilityOptions.js -diff --git a/src/engine/release/CrashRecoveryManager.js b/www/src/engine/release/CrashRecoveryManager.js -similarity index 100% -rename from src/engine/release/CrashRecoveryManager.js -rename to www/src/engine/release/CrashRecoveryManager.js -diff --git a/src/engine/release/DeploymentProfiles.js b/www/src/engine/release/DeploymentProfiles.js -similarity index 100% -rename from src/engine/release/DeploymentProfiles.js -rename to www/src/engine/release/DeploymentProfiles.js -diff --git a/src/engine/release/DistributionPackager.js b/www/src/engine/release/DistributionPackager.js -similarity index 100% -rename from src/engine/release/DistributionPackager.js -rename to www/src/engine/release/DistributionPackager.js -diff --git a/src/engine/release/ReleaseValidationChecklist.js b/www/src/engine/release/ReleaseValidationChecklist.js -similarity index 100% -rename from src/engine/release/ReleaseValidationChecklist.js -rename to www/src/engine/release/ReleaseValidationChecklist.js -diff --git a/src/engine/release/SettingsSystem.js b/www/src/engine/release/SettingsSystem.js -similarity index 100% -rename from src/engine/release/SettingsSystem.js -rename to www/src/engine/release/SettingsSystem.js -diff --git a/src/engine/rendering/CanvasRenderer.js b/www/src/engine/rendering/CanvasRenderer.js -similarity index 100% -rename from src/engine/rendering/CanvasRenderer.js -rename to www/src/engine/rendering/CanvasRenderer.js -diff --git a/src/engine/rendering/LayeredRenderSystem.js b/www/src/engine/rendering/LayeredRenderSystem.js -similarity index 100% -rename from src/engine/rendering/LayeredRenderSystem.js -rename to www/src/engine/rendering/LayeredRenderSystem.js -diff --git a/src/engine/rendering/ObjectVectorRuntimeAssetService.js b/www/src/engine/rendering/ObjectVectorRuntimeAssetService.js -similarity index 100% -rename from src/engine/rendering/ObjectVectorRuntimeAssetService.js -rename to www/src/engine/rendering/ObjectVectorRuntimeAssetService.js -diff --git a/src/engine/rendering/ObjectVectorTransformService.js b/www/src/engine/rendering/ObjectVectorTransformService.js -similarity index 100% -rename from src/engine/rendering/ObjectVectorTransformService.js -rename to www/src/engine/rendering/ObjectVectorTransformService.js -diff --git a/src/engine/rendering/OrientationTransform.js b/www/src/engine/rendering/OrientationTransform.js -similarity index 100% -rename from src/engine/rendering/OrientationTransform.js -rename to www/src/engine/rendering/OrientationTransform.js -diff --git a/src/engine/rendering/Renderer.js b/www/src/engine/rendering/Renderer.js -similarity index 100% -rename from src/engine/rendering/Renderer.js -rename to www/src/engine/rendering/Renderer.js -diff --git a/src/engine/rendering/ResolutionScaler.js b/www/src/engine/rendering/ResolutionScaler.js -similarity index 100% -rename from src/engine/rendering/ResolutionScaler.js -rename to www/src/engine/rendering/ResolutionScaler.js -diff --git a/src/engine/rendering/SpriteRenderSystem.js b/www/src/engine/rendering/SpriteRenderSystem.js -similarity index 100% -rename from src/engine/rendering/SpriteRenderSystem.js -rename to www/src/engine/rendering/SpriteRenderSystem.js -diff --git a/src/engine/rendering/VectorDrawing.js b/www/src/engine/rendering/VectorDrawing.js -similarity index 100% -rename from src/engine/rendering/VectorDrawing.js -rename to www/src/engine/rendering/VectorDrawing.js -diff --git a/src/engine/rendering/WorldScreenTransform.js b/www/src/engine/rendering/WorldScreenTransform.js -similarity index 100% -rename from src/engine/rendering/WorldScreenTransform.js -rename to www/src/engine/rendering/WorldScreenTransform.js -diff --git a/src/engine/rendering/WorldScreenTransformService.js b/www/src/engine/rendering/WorldScreenTransformService.js -similarity index 100% -rename from src/engine/rendering/WorldScreenTransformService.js -rename to www/src/engine/rendering/WorldScreenTransformService.js -diff --git a/src/engine/replay/ReplayModel.js b/www/src/engine/replay/ReplayModel.js -similarity index 100% -rename from src/engine/replay/ReplayModel.js -rename to www/src/engine/replay/ReplayModel.js -diff --git a/src/engine/replay/ReplaySystem.js b/www/src/engine/replay/ReplaySystem.js -similarity index 100% -rename from src/engine/replay/ReplaySystem.js -rename to www/src/engine/replay/ReplaySystem.js -diff --git a/src/engine/replay/ReplayTimeline.js b/www/src/engine/replay/ReplayTimeline.js -similarity index 100% -rename from src/engine/replay/ReplayTimeline.js -rename to www/src/engine/replay/ReplayTimeline.js -diff --git a/src/engine/runtime/BrowserDownloadService.js b/www/src/engine/runtime/BrowserDownloadService.js -similarity index 100% -rename from src/engine/runtime/BrowserDownloadService.js -rename to www/src/engine/runtime/BrowserDownloadService.js -diff --git a/src/engine/runtime/FullscreenService.js b/www/src/engine/runtime/FullscreenService.js -similarity index 100% -rename from src/engine/runtime/FullscreenService.js -rename to www/src/engine/runtime/FullscreenService.js -diff --git a/src/engine/runtime/MobileRuntimeTweaks.js b/www/src/engine/runtime/MobileRuntimeTweaks.js -similarity index 100% -rename from src/engine/runtime/MobileRuntimeTweaks.js -rename to www/src/engine/runtime/MobileRuntimeTweaks.js -diff --git a/src/engine/runtime/RuntimeMonitoringHooks.js b/www/src/engine/runtime/RuntimeMonitoringHooks.js -similarity index 100% -rename from src/engine/runtime/RuntimeMonitoringHooks.js -rename to www/src/engine/runtime/RuntimeMonitoringHooks.js -diff --git a/src/engine/runtime/backgroundColor.js b/www/src/engine/runtime/backgroundColor.js -similarity index 100% -rename from src/engine/runtime/backgroundColor.js -rename to www/src/engine/runtime/backgroundColor.js -diff --git a/src/engine/runtime/backgroundImage.js b/www/src/engine/runtime/backgroundImage.js -similarity index 100% -rename from src/engine/runtime/backgroundImage.js -rename to www/src/engine/runtime/backgroundImage.js -diff --git a/src/engine/runtime/engineV2AbilitySystem.js b/www/src/engine/runtime/engineV2AbilitySystem.js -similarity index 100% -rename from src/engine/runtime/engineV2AbilitySystem.js -rename to www/src/engine/runtime/engineV2AbilitySystem.js -diff --git a/src/engine/runtime/engineV2AnimationRuntime.js b/www/src/engine/runtime/engineV2AnimationRuntime.js -similarity index 100% -rename from src/engine/runtime/engineV2AnimationRuntime.js -rename to www/src/engine/runtime/engineV2AnimationRuntime.js -diff --git a/src/engine/runtime/engineV2AudioRuntime.js b/www/src/engine/runtime/engineV2AudioRuntime.js -similarity index 100% -rename from src/engine/runtime/engineV2AudioRuntime.js -rename to www/src/engine/runtime/engineV2AudioRuntime.js -diff --git a/src/engine/runtime/engineV2CameraRuntime.js b/www/src/engine/runtime/engineV2CameraRuntime.js -similarity index 100% -rename from src/engine/runtime/engineV2CameraRuntime.js -rename to www/src/engine/runtime/engineV2CameraRuntime.js -diff --git a/src/engine/runtime/engineV2ChaseFleeBehavior.js b/www/src/engine/runtime/engineV2ChaseFleeBehavior.js -similarity index 100% -rename from src/engine/runtime/engineV2ChaseFleeBehavior.js -rename to www/src/engine/runtime/engineV2ChaseFleeBehavior.js -diff --git a/src/engine/runtime/engineV2CheckpointSystem.js b/www/src/engine/runtime/engineV2CheckpointSystem.js -similarity index 100% -rename from src/engine/runtime/engineV2CheckpointSystem.js -rename to www/src/engine/runtime/engineV2CheckpointSystem.js -diff --git a/src/engine/runtime/engineV2ConfigDrivenProofScene.js b/www/src/engine/runtime/engineV2ConfigDrivenProofScene.js -similarity index 100% -rename from src/engine/runtime/engineV2ConfigDrivenProofScene.js -rename to www/src/engine/runtime/engineV2ConfigDrivenProofScene.js -diff --git a/src/engine/runtime/engineV2ContainerSystem.js b/www/src/engine/runtime/engineV2ContainerSystem.js -similarity index 100% -rename from src/engine/runtime/engineV2ContainerSystem.js -rename to www/src/engine/runtime/engineV2ContainerSystem.js -diff --git a/src/engine/runtime/engineV2CraftingFoundation.js b/www/src/engine/runtime/engineV2CraftingFoundation.js -similarity index 100% -rename from src/engine/runtime/engineV2CraftingFoundation.js -rename to www/src/engine/runtime/engineV2CraftingFoundation.js -diff --git a/src/engine/runtime/engineV2CustomExtensionsHookRuntime.js b/www/src/engine/runtime/engineV2CustomExtensionsHookRuntime.js -similarity index 100% -rename from src/engine/runtime/engineV2CustomExtensionsHookRuntime.js -rename to www/src/engine/runtime/engineV2CustomExtensionsHookRuntime.js -diff --git a/src/engine/runtime/engineV2DialogueSystem.js b/www/src/engine/runtime/engineV2DialogueSystem.js -similarity index 100% -rename from src/engine/runtime/engineV2DialogueSystem.js -rename to www/src/engine/runtime/engineV2DialogueSystem.js -diff --git a/src/engine/runtime/engineV2EconomyAndCurrency.js b/www/src/engine/runtime/engineV2EconomyAndCurrency.js -similarity index 100% -rename from src/engine/runtime/engineV2EconomyAndCurrency.js -rename to www/src/engine/runtime/engineV2EconomyAndCurrency.js -diff --git a/src/engine/runtime/engineV2EffectRuntime.js b/www/src/engine/runtime/engineV2EffectRuntime.js -similarity index 100% -rename from src/engine/runtime/engineV2EffectRuntime.js -rename to www/src/engine/runtime/engineV2EffectRuntime.js -diff --git a/src/engine/runtime/engineV2EquipmentSystem.js b/www/src/engine/runtime/engineV2EquipmentSystem.js -similarity index 100% -rename from src/engine/runtime/engineV2EquipmentSystem.js -rename to www/src/engine/runtime/engineV2EquipmentSystem.js -diff --git a/src/engine/runtime/engineV2InteractionSystem.js b/www/src/engine/runtime/engineV2InteractionSystem.js -similarity index 100% -rename from src/engine/runtime/engineV2InteractionSystem.js -rename to www/src/engine/runtime/engineV2InteractionSystem.js -diff --git a/src/engine/runtime/engineV2InventorySystem.js b/www/src/engine/runtime/engineV2InventorySystem.js -similarity index 100% -rename from src/engine/runtime/engineV2InventorySystem.js -rename to www/src/engine/runtime/engineV2InventorySystem.js -diff --git a/src/engine/runtime/engineV2ItemAndLootSystem.js b/www/src/engine/runtime/engineV2ItemAndLootSystem.js -similarity index 100% -rename from src/engine/runtime/engineV2ItemAndLootSystem.js -rename to www/src/engine/runtime/engineV2ItemAndLootSystem.js -diff --git a/src/engine/runtime/engineV2ModifierStack.js b/www/src/engine/runtime/engineV2ModifierStack.js -similarity index 100% -rename from src/engine/runtime/engineV2ModifierStack.js -rename to www/src/engine/runtime/engineV2ModifierStack.js -diff --git a/src/engine/runtime/engineV2ObjectiveSystem.js b/www/src/engine/runtime/engineV2ObjectiveSystem.js -similarity index 100% -rename from src/engine/runtime/engineV2ObjectiveSystem.js -rename to www/src/engine/runtime/engineV2ObjectiveSystem.js -diff --git a/src/engine/runtime/engineV2PathfindingBaseline.js b/www/src/engine/runtime/engineV2PathfindingBaseline.js -similarity index 100% -rename from src/engine/runtime/engineV2PathfindingBaseline.js -rename to www/src/engine/runtime/engineV2PathfindingBaseline.js -diff --git a/src/engine/runtime/engineV2PatrolBehavior.js b/www/src/engine/runtime/engineV2PatrolBehavior.js -similarity index 100% -rename from src/engine/runtime/engineV2PatrolBehavior.js -rename to www/src/engine/runtime/engineV2PatrolBehavior.js -diff --git a/src/engine/runtime/engineV2PersistenceRuntime.js b/www/src/engine/runtime/engineV2PersistenceRuntime.js -similarity index 100% -rename from src/engine/runtime/engineV2PersistenceRuntime.js -rename to www/src/engine/runtime/engineV2PersistenceRuntime.js -diff --git a/src/engine/runtime/engineV2ProfileStateSystem.js b/www/src/engine/runtime/engineV2ProfileStateSystem.js -similarity index 100% -rename from src/engine/runtime/engineV2ProfileStateSystem.js -rename to www/src/engine/runtime/engineV2ProfileStateSystem.js -diff --git a/src/engine/runtime/engineV2ProjectileSystem.js b/www/src/engine/runtime/engineV2ProjectileSystem.js -similarity index 100% -rename from src/engine/runtime/engineV2ProjectileSystem.js -rename to www/src/engine/runtime/engineV2ProjectileSystem.js -diff --git a/src/engine/runtime/engineV2QuestSystem.js b/www/src/engine/runtime/engineV2QuestSystem.js -similarity index 100% -rename from src/engine/runtime/engineV2QuestSystem.js -rename to www/src/engine/runtime/engineV2QuestSystem.js -diff --git a/src/engine/runtime/engineV2SaveLoadValidation.js b/www/src/engine/runtime/engineV2SaveLoadValidation.js -similarity index 100% -rename from src/engine/runtime/engineV2SaveLoadValidation.js -rename to www/src/engine/runtime/engineV2SaveLoadValidation.js -diff --git a/src/engine/runtime/engineV2SaveStateModel.js b/www/src/engine/runtime/engineV2SaveStateModel.js -similarity index 100% -rename from src/engine/runtime/engineV2SaveStateModel.js -rename to www/src/engine/runtime/engineV2SaveStateModel.js -diff --git a/src/engine/runtime/engineV2StateMachineRuntime.js b/www/src/engine/runtime/engineV2StateMachineRuntime.js -similarity index 100% -rename from src/engine/runtime/engineV2StateMachineRuntime.js -rename to www/src/engine/runtime/engineV2StateMachineRuntime.js -diff --git a/src/engine/runtime/engineV2StatusEffectSystem.js b/www/src/engine/runtime/engineV2StatusEffectSystem.js -similarity index 100% -rename from src/engine/runtime/engineV2StatusEffectSystem.js -rename to www/src/engine/runtime/engineV2StatusEffectSystem.js -diff --git a/src/engine/runtime/engineV2UiRuntime.js b/www/src/engine/runtime/engineV2UiRuntime.js -similarity index 100% -rename from src/engine/runtime/engineV2UiRuntime.js -rename to www/src/engine/runtime/engineV2UiRuntime.js -diff --git a/src/engine/runtime/engineV2VendorSystem.js b/www/src/engine/runtime/engineV2VendorSystem.js -similarity index 100% -rename from src/engine/runtime/engineV2VendorSystem.js -rename to www/src/engine/runtime/engineV2VendorSystem.js -diff --git a/src/engine/runtime/engineV2WeaponSystem.js b/www/src/engine/runtime/engineV2WeaponSystem.js -similarity index 100% -rename from src/engine/runtime/engineV2WeaponSystem.js -rename to www/src/engine/runtime/engineV2WeaponSystem.js -diff --git a/src/engine/runtime/firstManifestDrivenPlayableScene.js b/www/src/engine/runtime/firstManifestDrivenPlayableScene.js -similarity index 100% -rename from src/engine/runtime/firstManifestDrivenPlayableScene.js -rename to www/src/engine/runtime/firstManifestDrivenPlayableScene.js -diff --git a/src/engine/runtime/fullscreenBezel.js b/www/src/engine/runtime/fullscreenBezel.js -similarity index 100% -rename from src/engine/runtime/fullscreenBezel.js -rename to www/src/engine/runtime/fullscreenBezel.js -diff --git a/src/engine/runtime/gameImageConvention.js b/www/src/engine/runtime/gameImageConvention.js -similarity index 100% -rename from src/engine/runtime/gameImageConvention.js -rename to www/src/engine/runtime/gameImageConvention.js -diff --git a/src/engine/runtime/manifestRuntimeParser.js b/www/src/engine/runtime/manifestRuntimeParser.js -similarity index 100% -rename from src/engine/runtime/manifestRuntimeParser.js -rename to www/src/engine/runtime/manifestRuntimeParser.js -diff --git a/src/engine/runtime/objectDefinitionReader.js b/www/src/engine/runtime/objectDefinitionReader.js -similarity index 100% -rename from src/engine/runtime/objectDefinitionReader.js -rename to www/src/engine/runtime/objectDefinitionReader.js -diff --git a/src/engine/runtime/ruleDefinitionReader.js b/www/src/engine/runtime/ruleDefinitionReader.js -similarity index 100% -rename from src/engine/runtime/ruleDefinitionReader.js -rename to www/src/engine/runtime/ruleDefinitionReader.js -diff --git a/src/engine/runtime/runtimeActionSystem.js b/www/src/engine/runtime/runtimeActionSystem.js -similarity index 100% -rename from src/engine/runtime/runtimeActionSystem.js -rename to www/src/engine/runtime/runtimeActionSystem.js -diff --git a/src/engine/runtime/runtimeBehaviorComposition.js b/www/src/engine/runtime/runtimeBehaviorComposition.js -similarity index 100% -rename from src/engine/runtime/runtimeBehaviorComposition.js -rename to www/src/engine/runtime/runtimeBehaviorComposition.js -diff --git a/src/engine/runtime/runtimeCollisionProcessing.js b/www/src/engine/runtime/runtimeCollisionProcessing.js -similarity index 100% -rename from src/engine/runtime/runtimeCollisionProcessing.js -rename to www/src/engine/runtime/runtimeCollisionProcessing.js -diff --git a/src/engine/runtime/runtimeConditionSystem.js b/www/src/engine/runtime/runtimeConditionSystem.js -similarity index 100% -rename from src/engine/runtime/runtimeConditionSystem.js -rename to www/src/engine/runtime/runtimeConditionSystem.js -diff --git a/src/engine/runtime/runtimeCooldownProcessing.js b/www/src/engine/runtime/runtimeCooldownProcessing.js -similarity index 100% -rename from src/engine/runtime/runtimeCooldownProcessing.js -rename to www/src/engine/runtime/runtimeCooldownProcessing.js -diff --git a/src/engine/runtime/runtimeDamageProcessing.js b/www/src/engine/runtime/runtimeDamageProcessing.js -similarity index 100% -rename from src/engine/runtime/runtimeDamageProcessing.js -rename to www/src/engine/runtime/runtimeDamageProcessing.js -diff --git a/src/engine/runtime/runtimeEnvironmentEffects.js b/www/src/engine/runtime/runtimeEnvironmentEffects.js -similarity index 100% -rename from src/engine/runtime/runtimeEnvironmentEffects.js -rename to www/src/engine/runtime/runtimeEnvironmentEffects.js -diff --git a/src/engine/runtime/runtimeEnvironmentForceInstantiation.js b/www/src/engine/runtime/runtimeEnvironmentForceInstantiation.js -similarity index 100% -rename from src/engine/runtime/runtimeEnvironmentForceInstantiation.js -rename to www/src/engine/runtime/runtimeEnvironmentForceInstantiation.js -diff --git a/src/engine/runtime/runtimeErrorReporting.js b/www/src/engine/runtime/runtimeErrorReporting.js -similarity index 100% -rename from src/engine/runtime/runtimeErrorReporting.js -rename to www/src/engine/runtime/runtimeErrorReporting.js -diff --git a/src/engine/runtime/runtimeEventSystem.js b/www/src/engine/runtime/runtimeEventSystem.js -similarity index 100% -rename from src/engine/runtime/runtimeEventSystem.js -rename to www/src/engine/runtime/runtimeEventSystem.js -diff --git a/src/engine/runtime/runtimeHealthModel.js b/www/src/engine/runtime/runtimeHealthModel.js -similarity index 100% -rename from src/engine/runtime/runtimeHealthModel.js -rename to www/src/engine/runtime/runtimeHealthModel.js -diff --git a/src/engine/runtime/runtimeInputPipeline.js b/www/src/engine/runtime/runtimeInputPipeline.js -similarity index 100% -rename from src/engine/runtime/runtimeInputPipeline.js -rename to www/src/engine/runtime/runtimeInputPipeline.js -diff --git a/src/engine/runtime/runtimeLivesAndRespawn.js b/www/src/engine/runtime/runtimeLivesAndRespawn.js -similarity index 100% -rename from src/engine/runtime/runtimeLivesAndRespawn.js -rename to www/src/engine/runtime/runtimeLivesAndRespawn.js -diff --git a/src/engine/runtime/runtimeMovementProcessing.js b/www/src/engine/runtime/runtimeMovementProcessing.js -similarity index 100% -rename from src/engine/runtime/runtimeMovementProcessing.js -rename to www/src/engine/runtime/runtimeMovementProcessing.js -diff --git a/src/engine/runtime/runtimeMultiSceneLoading.js b/www/src/engine/runtime/runtimeMultiSceneLoading.js -similarity index 100% -rename from src/engine/runtime/runtimeMultiSceneLoading.js -rename to www/src/engine/runtime/runtimeMultiSceneLoading.js -diff --git a/src/engine/runtime/runtimeObjectInstantiation.js b/www/src/engine/runtime/runtimeObjectInstantiation.js -similarity index 100% -rename from src/engine/runtime/runtimeObjectInstantiation.js -rename to www/src/engine/runtime/runtimeObjectInstantiation.js -diff --git a/src/engine/runtime/runtimeObjectRecordFactory.js b/www/src/engine/runtime/runtimeObjectRecordFactory.js -similarity index 100% -rename from src/engine/runtime/runtimeObjectRecordFactory.js -rename to www/src/engine/runtime/runtimeObjectRecordFactory.js -diff --git a/src/engine/runtime/runtimeOutcomeProcessing.js b/www/src/engine/runtime/runtimeOutcomeProcessing.js -similarity index 100% -rename from src/engine/runtime/runtimeOutcomeProcessing.js -rename to www/src/engine/runtime/runtimeOutcomeProcessing.js -diff --git a/src/engine/runtime/runtimePlayableLoop.js b/www/src/engine/runtime/runtimePlayableLoop.js -similarity index 100% -rename from src/engine/runtime/runtimePlayableLoop.js -rename to www/src/engine/runtime/runtimePlayableLoop.js -diff --git a/src/engine/runtime/runtimeRenderPipeline.js b/www/src/engine/runtime/runtimeRenderPipeline.js -similarity index 100% -rename from src/engine/runtime/runtimeRenderPipeline.js -rename to www/src/engine/runtime/runtimeRenderPipeline.js -diff --git a/src/engine/runtime/runtimeRenderingBootstrap.js b/www/src/engine/runtime/runtimeRenderingBootstrap.js -similarity index 100% -rename from src/engine/runtime/runtimeRenderingBootstrap.js -rename to www/src/engine/runtime/runtimeRenderingBootstrap.js -diff --git a/src/engine/runtime/runtimeRuleAttachment.js b/www/src/engine/runtime/runtimeRuleAttachment.js -similarity index 100% -rename from src/engine/runtime/runtimeRuleAttachment.js -rename to www/src/engine/runtime/runtimeRuleAttachment.js -diff --git a/src/engine/runtime/runtimeSceneDefinitionSupport.js b/www/src/engine/runtime/runtimeSceneDefinitionSupport.js -similarity index 100% -rename from src/engine/runtime/runtimeSceneDefinitionSupport.js -rename to www/src/engine/runtime/runtimeSceneDefinitionSupport.js -diff --git a/src/engine/runtime/runtimeScoringAndStateProcessing.js b/www/src/engine/runtime/runtimeScoringAndStateProcessing.js -similarity index 100% -rename from src/engine/runtime/runtimeScoringAndStateProcessing.js -rename to www/src/engine/runtime/runtimeScoringAndStateProcessing.js -diff --git a/src/engine/runtime/runtimeSpawnDespawnProcessing.js b/www/src/engine/runtime/runtimeSpawnDespawnProcessing.js -similarity index 100% -rename from src/engine/runtime/runtimeSpawnDespawnProcessing.js -rename to www/src/engine/runtime/runtimeSpawnDespawnProcessing.js -diff --git a/src/engine/runtime/runtimeTerrainEffects.js b/www/src/engine/runtime/runtimeTerrainEffects.js -similarity index 100% -rename from src/engine/runtime/runtimeTerrainEffects.js -rename to www/src/engine/runtime/runtimeTerrainEffects.js -diff --git a/src/engine/runtime/runtimeTerrainMaterialInstantiation.js b/www/src/engine/runtime/runtimeTerrainMaterialInstantiation.js -similarity index 100% -rename from src/engine/runtime/runtimeTerrainMaterialInstantiation.js -rename to www/src/engine/runtime/runtimeTerrainMaterialInstantiation.js -diff --git a/src/engine/runtime/runtimeTickLoop.js b/www/src/engine/runtime/runtimeTickLoop.js -similarity index 100% -rename from src/engine/runtime/runtimeTickLoop.js -rename to www/src/engine/runtime/runtimeTickLoop.js -diff --git a/src/engine/runtime/runtimeTriggerProcessing.js b/www/src/engine/runtime/runtimeTriggerProcessing.js -similarity index 100% -rename from src/engine/runtime/runtimeTriggerProcessing.js -rename to www/src/engine/runtime/runtimeTriggerProcessing.js -diff --git a/src/engine/scene/AttractModeController.js b/www/src/engine/scene/AttractModeController.js -similarity index 100% -rename from src/engine/scene/AttractModeController.js -rename to www/src/engine/scene/AttractModeController.js -diff --git a/src/engine/scene/Scene.js b/www/src/engine/scene/Scene.js -similarity index 100% -rename from src/engine/scene/Scene.js -rename to www/src/engine/scene/Scene.js -diff --git a/src/engine/scene/SceneManager.js b/www/src/engine/scene/SceneManager.js -similarity index 100% -rename from src/engine/scene/SceneManager.js -rename to www/src/engine/scene/SceneManager.js -diff --git a/src/engine/scene/SceneTransition.js b/www/src/engine/scene/SceneTransition.js -similarity index 100% -rename from src/engine/scene/SceneTransition.js -rename to www/src/engine/scene/SceneTransition.js -diff --git a/src/engine/scene/SceneTransitionController.js b/www/src/engine/scene/SceneTransitionController.js -similarity index 100% -rename from src/engine/scene/SceneTransitionController.js -rename to www/src/engine/scene/SceneTransitionController.js -diff --git a/src/engine/scene/TransitionScene.js b/www/src/engine/scene/TransitionScene.js -similarity index 100% -rename from src/engine/scene/TransitionScene.js -rename to www/src/engine/scene/TransitionScene.js -diff --git a/src/engine/security/DataIntegrityService.js b/www/src/engine/security/DataIntegrityService.js -similarity index 100% -rename from src/engine/security/DataIntegrityService.js -rename to www/src/engine/security/DataIntegrityService.js -diff --git a/src/engine/security/PacketValidator.js b/www/src/engine/security/PacketValidator.js -similarity index 100% -rename from src/engine/security/PacketValidator.js -rename to www/src/engine/security/PacketValidator.js -diff --git a/src/engine/security/PermissionGate.js b/www/src/engine/security/PermissionGate.js -similarity index 100% -rename from src/engine/security/PermissionGate.js -rename to www/src/engine/security/PermissionGate.js -diff --git a/src/engine/security/SessionTrustValidator.js b/www/src/engine/security/SessionTrustValidator.js -similarity index 100% -rename from src/engine/security/SessionTrustValidator.js -rename to www/src/engine/security/SessionTrustValidator.js -diff --git a/src/engine/state/StateMachine.js b/www/src/engine/state/StateMachine.js -similarity index 100% -rename from src/engine/state/StateMachine.js -rename to www/src/engine/state/StateMachine.js -diff --git a/src/engine/systems/BounceSystem.js b/www/src/engine/systems/BounceSystem.js -similarity index 100% -rename from src/engine/systems/BounceSystem.js -rename to www/src/engine/systems/BounceSystem.js -diff --git a/src/engine/systems/BoundsSystem.js b/www/src/engine/systems/BoundsSystem.js -similarity index 100% -rename from src/engine/systems/BoundsSystem.js -rename to www/src/engine/systems/BoundsSystem.js -diff --git a/src/engine/systems/CollectSystem.js b/www/src/engine/systems/CollectSystem.js -similarity index 100% -rename from src/engine/systems/CollectSystem.js -rename to www/src/engine/systems/CollectSystem.js -diff --git a/src/engine/systems/CollisionResolutionSystem.js b/www/src/engine/systems/CollisionResolutionSystem.js -similarity index 100% -rename from src/engine/systems/CollisionResolutionSystem.js -rename to www/src/engine/systems/CollisionResolutionSystem.js -diff --git a/src/engine/systems/CollisionSystem.js b/www/src/engine/systems/CollisionSystem.js -similarity index 100% -rename from src/engine/systems/CollisionSystem.js -rename to www/src/engine/systems/CollisionSystem.js -diff --git a/src/engine/systems/InputControlSystem.js b/www/src/engine/systems/InputControlSystem.js -similarity index 100% -rename from src/engine/systems/InputControlSystem.js -rename to www/src/engine/systems/InputControlSystem.js -diff --git a/src/engine/systems/LifecycleSystem.js b/www/src/engine/systems/LifecycleSystem.js -similarity index 100% -rename from src/engine/systems/LifecycleSystem.js -rename to www/src/engine/systems/LifecycleSystem.js -diff --git a/src/engine/systems/MovementSystem.js b/www/src/engine/systems/MovementSystem.js -similarity index 100% -rename from src/engine/systems/MovementSystem.js -rename to www/src/engine/systems/MovementSystem.js -diff --git a/src/engine/systems/PhysicsSystem.js b/www/src/engine/systems/PhysicsSystem.js -similarity index 100% -rename from src/engine/systems/PhysicsSystem.js -rename to www/src/engine/systems/PhysicsSystem.js -diff --git a/src/engine/systems/ProjectileSystem.js b/www/src/engine/systems/ProjectileSystem.js -similarity index 100% -rename from src/engine/systems/ProjectileSystem.js -rename to www/src/engine/systems/ProjectileSystem.js -diff --git a/src/engine/systems/RenderSystem.js b/www/src/engine/systems/RenderSystem.js -similarity index 100% -rename from src/engine/systems/RenderSystem.js -rename to www/src/engine/systems/RenderSystem.js -diff --git a/src/engine/systems/SystemUtils.js b/www/src/engine/systems/SystemUtils.js -similarity index 100% -rename from src/engine/systems/SystemUtils.js -rename to www/src/engine/systems/SystemUtils.js -diff --git a/src/engine/tilemap/TileMetadata.js b/www/src/engine/tilemap/TileMetadata.js -similarity index 100% -rename from src/engine/tilemap/TileMetadata.js -rename to www/src/engine/tilemap/TileMetadata.js -diff --git a/src/engine/tilemap/Tilemap.js b/www/src/engine/tilemap/Tilemap.js -similarity index 100% -rename from src/engine/tilemap/Tilemap.js -rename to www/src/engine/tilemap/Tilemap.js -diff --git a/src/engine/tilemap/TilemapCollision.js b/www/src/engine/tilemap/TilemapCollision.js -similarity index 100% -rename from src/engine/tilemap/TilemapCollision.js -rename to www/src/engine/tilemap/TilemapCollision.js -diff --git a/src/engine/tilemap/TilemapRenderSystem.js b/www/src/engine/tilemap/TilemapRenderSystem.js -similarity index 100% -rename from src/engine/tilemap/TilemapRenderSystem.js -rename to www/src/engine/tilemap/TilemapRenderSystem.js -diff --git a/src/engine/ui/CanvasDialogPrimitives.js b/www/src/engine/ui/CanvasDialogPrimitives.js -similarity index 100% -rename from src/engine/ui/CanvasDialogPrimitives.js -rename to www/src/engine/ui/CanvasDialogPrimitives.js -diff --git a/src/engine/ui/CanvasPopupInteractions.js b/www/src/engine/ui/CanvasPopupInteractions.js -similarity index 100% -rename from src/engine/ui/CanvasPopupInteractions.js -rename to www/src/engine/ui/CanvasPopupInteractions.js -diff --git a/src/engine/ui/CanvasPopupState.js b/www/src/engine/ui/CanvasPopupState.js -similarity index 100% -rename from src/engine/ui/CanvasPopupState.js -rename to www/src/engine/ui/CanvasPopupState.js -diff --git a/src/engine/ui/UIFramework.js b/www/src/engine/ui/UIFramework.js -similarity index 100% -rename from src/engine/ui/UIFramework.js -rename to www/src/engine/ui/UIFramework.js -diff --git a/src/engine/ui/assets/icons/pin-monocolor-filled.svg b/www/src/engine/ui/assets/icons/pin-monocolor-filled.svg -similarity index 100% -rename from src/engine/ui/assets/icons/pin-monocolor-filled.svg -rename to www/src/engine/ui/assets/icons/pin-monocolor-filled.svg -diff --git a/src/engine/ui/assets/icons/pin-monocolor.svg b/www/src/engine/ui/assets/icons/pin-monocolor.svg -similarity index 100% -rename from src/engine/ui/assets/icons/pin-monocolor.svg -rename to www/src/engine/ui/assets/icons/pin-monocolor.svg -diff --git a/src/engine/ui/baseLayout.css b/www/src/engine/ui/baseLayout.css -similarity index 100% -rename from src/engine/ui/baseLayout.css -rename to www/src/engine/ui/baseLayout.css -diff --git a/src/engine/ui/hubCommon.css b/www/src/engine/ui/hubCommon.css -similarity index 100% -rename from src/engine/ui/hubCommon.css -rename to www/src/engine/ui/hubCommon.css -diff --git a/src/engine/ui/spriteEditor.css b/www/src/engine/ui/spriteEditor.css -similarity index 100% -rename from src/engine/ui/spriteEditor.css -rename to www/src/engine/ui/spriteEditor.css -diff --git a/src/engine/world/AchievementSystem.js b/www/src/engine/world/AchievementSystem.js -similarity index 100% -rename from src/engine/world/AchievementSystem.js -rename to www/src/engine/world/AchievementSystem.js -diff --git a/src/engine/world/CutsceneSystem.js b/www/src/engine/world/CutsceneSystem.js -similarity index 100% -rename from src/engine/world/CutsceneSystem.js -rename to www/src/engine/world/CutsceneSystem.js -diff --git a/src/engine/world/DayNightCycle.js b/www/src/engine/world/DayNightCycle.js -similarity index 100% -rename from src/engine/world/DayNightCycle.js -rename to www/src/engine/world/DayNightCycle.js -diff --git a/src/engine/world/EventScriptSystem.js b/www/src/engine/world/EventScriptSystem.js -similarity index 100% -rename from src/engine/world/EventScriptSystem.js -rename to www/src/engine/world/EventScriptSystem.js -diff --git a/src/engine/world/QuestSystem.js b/www/src/engine/world/QuestSystem.js -similarity index 100% -rename from src/engine/world/QuestSystem.js -rename to www/src/engine/world/QuestSystem.js -diff --git a/src/engine/world/SpawnSystem.js b/www/src/engine/world/SpawnSystem.js -similarity index 100% -rename from src/engine/world/SpawnSystem.js -rename to www/src/engine/world/SpawnSystem.js -diff --git a/src/engine/world/WeatherSystem.js b/www/src/engine/world/WeatherSystem.js -similarity index 100% -rename from src/engine/world/WeatherSystem.js -rename to www/src/engine/world/WeatherSystem.js -diff --git a/src/engine/world/WorldStreamingSystem.js b/www/src/engine/world/WorldStreamingSystem.js -similarity index 100% -rename from src/engine/world/WorldStreamingSystem.js -rename to www/src/engine/world/WorldStreamingSystem.js -diff --git a/src/shared/array/arrays.js b/www/src/shared/array/arrays.js -similarity index 100% -rename from src/shared/array/arrays.js -rename to www/src/shared/array/arrays.js -diff --git a/src/shared/array/recordArrays.js b/www/src/shared/array/recordArrays.js -similarity index 100% -rename from src/shared/array/recordArrays.js -rename to www/src/shared/array/recordArrays.js -diff --git a/src/shared/color/color.js b/www/src/shared/color/color.js -similarity index 100% -rename from src/shared/color/color.js -rename to www/src/shared/color/color.js -diff --git a/src/shared/game/highScores.js b/www/src/shared/game/highScores.js -similarity index 100% -rename from src/shared/game/highScores.js -rename to www/src/shared/game/highScores.js -diff --git a/src/shared/game/initialsEntry.js b/www/src/shared/game/initialsEntry.js -similarity index 100% -rename from src/shared/game/initialsEntry.js -rename to www/src/shared/game/initialsEntry.js -diff --git a/src/shared/geometry/geometry.js b/www/src/shared/geometry/geometry.js -similarity index 100% -rename from src/shared/geometry/geometry.js -rename to www/src/shared/geometry/geometry.js -diff --git a/src/shared/hash/hash.js b/www/src/shared/hash/hash.js -similarity index 100% -rename from src/shared/hash/hash.js -rename to www/src/shared/hash/hash.js -diff --git a/src/shared/id/ids.js b/www/src/shared/id/ids.js -similarity index 100% -rename from src/shared/id/ids.js -rename to www/src/shared/id/ids.js -diff --git a/src/shared/json/clone.js b/www/src/shared/json/clone.js -similarity index 100% -rename from src/shared/json/clone.js -rename to www/src/shared/json/clone.js -diff --git a/src/shared/json/jsonIO.js b/www/src/shared/json/jsonIO.js -similarity index 100% -rename from src/shared/json/jsonIO.js -rename to www/src/shared/json/jsonIO.js -diff --git a/src/shared/math/Random.js b/www/src/shared/math/Random.js -similarity index 100% -rename from src/shared/math/Random.js -rename to www/src/shared/math/Random.js -diff --git a/src/shared/math/RandomSeed.js b/www/src/shared/math/RandomSeed.js -similarity index 100% -rename from src/shared/math/RandomSeed.js -rename to www/src/shared/math/RandomSeed.js -diff --git a/src/shared/math/directions.js b/www/src/shared/math/directions.js -similarity index 100% -rename from src/shared/math/directions.js -rename to www/src/shared/math/directions.js -diff --git a/src/shared/math/geometry.js b/www/src/shared/math/geometry.js -similarity index 100% -rename from src/shared/math/geometry.js -rename to www/src/shared/math/geometry.js -diff --git a/src/shared/math/numberNormalization.js b/www/src/shared/math/numberNormalization.js -similarity index 100% -rename from src/shared/math/numberNormalization.js -rename to www/src/shared/math/numberNormalization.js -diff --git a/src/shared/math/randomHelpers.js b/www/src/shared/math/randomHelpers.js -similarity index 100% -rename from src/shared/math/randomHelpers.js -rename to www/src/shared/math/randomHelpers.js -diff --git a/src/shared/math/scalars.js b/www/src/shared/math/scalars.js -similarity index 100% -rename from src/shared/math/scalars.js -rename to www/src/shared/math/scalars.js -diff --git a/src/shared/math/vectorMath.js b/www/src/shared/math/vectorMath.js -similarity index 100% -rename from src/shared/math/vectorMath.js -rename to www/src/shared/math/vectorMath.js -diff --git a/src/shared/math/vectorNormalize.js b/www/src/shared/math/vectorNormalize.js -similarity index 100% -rename from src/shared/math/vectorNormalize.js -rename to www/src/shared/math/vectorNormalize.js -diff --git a/src/shared/noise/noise.js b/www/src/shared/noise/noise.js -similarity index 100% -rename from src/shared/noise/noise.js -rename to www/src/shared/noise/noise.js -diff --git a/src/shared/number/numbers.js b/www/src/shared/number/numbers.js -similarity index 100% -rename from src/shared/number/numbers.js -rename to www/src/shared/number/numbers.js -diff --git a/src/shared/object/objects.js b/www/src/shared/object/objects.js -similarity index 100% -rename from src/shared/object/objects.js -rename to www/src/shared/object/objects.js -diff --git a/src/shared/runtime/registry.js b/www/src/shared/runtime/registry.js -similarity index 100% -rename from src/shared/runtime/registry.js -rename to www/src/shared/runtime/registry.js -diff --git a/src/shared/runtime/snapshotClone.js b/www/src/shared/runtime/snapshotClone.js -similarity index 100% -rename from src/shared/runtime/snapshotClone.js -rename to www/src/shared/runtime/snapshotClone.js -diff --git a/src/shared/state/createPromotionStateSnapshot.js b/www/src/shared/state/createPromotionStateSnapshot.js -similarity index 100% -rename from src/shared/state/createPromotionStateSnapshot.js -rename to www/src/shared/state/createPromotionStateSnapshot.js -diff --git a/src/shared/state/getState.js b/www/src/shared/state/getState.js -similarity index 100% -rename from src/shared/state/getState.js -rename to www/src/shared/state/getState.js -diff --git a/src/shared/state/getStateVariantClassification.js b/www/src/shared/state/getStateVariantClassification.js -similarity index 100% -rename from src/shared/state/getStateVariantClassification.js -rename to www/src/shared/state/getStateVariantClassification.js -diff --git a/src/shared/state/guards.js b/www/src/shared/state/guards.js -similarity index 100% -rename from src/shared/state/guards.js -rename to www/src/shared/state/guards.js -diff --git a/src/shared/state/normalization.js b/www/src/shared/state/normalization.js -similarity index 100% -rename from src/shared/state/normalization.js -rename to www/src/shared/state/normalization.js -diff --git a/src/shared/state/selectors.js b/www/src/shared/state/selectors.js -similarity index 100% -rename from src/shared/state/selectors.js -rename to www/src/shared/state/selectors.js -diff --git a/src/shared/string/commandText.js b/www/src/shared/string/commandText.js -similarity index 100% -rename from src/shared/string/commandText.js -rename to www/src/shared/string/commandText.js -diff --git a/src/shared/string/fuzzyMatchScore.js b/www/src/shared/string/fuzzyMatchScore.js -similarity index 100% -rename from src/shared/string/fuzzyMatchScore.js -rename to www/src/shared/string/fuzzyMatchScore.js -diff --git a/src/shared/string/stringifyValue.js b/www/src/shared/string/stringifyValue.js -similarity index 100% -rename from src/shared/string/stringifyValue.js -rename to www/src/shared/string/stringifyValue.js -diff --git a/src/shared/string/strings.js b/www/src/shared/string/strings.js -similarity index 100% -rename from src/shared/string/strings.js -rename to www/src/shared/string/strings.js -diff --git a/src/shared/string/textWrap.js b/www/src/shared/string/textWrap.js -similarity index 100% -rename from src/shared/string/textWrap.js -rename to www/src/shared/string/textWrap.js -diff --git a/src/shared/text/text.js b/www/src/shared/text/text.js -similarity index 100% -rename from src/shared/text/text.js -rename to www/src/shared/text/text.js -diff --git a/src/shared/time/time.js b/www/src/shared/time/time.js -similarity index 100% -rename from src/shared/time/time.js -rename to www/src/shared/time/time.js -diff --git a/src/shared/toolbox/aiAuthoringAssistant.js b/www/src/shared/toolbox/aiAuthoringAssistant.js -similarity index 100% -rename from src/shared/toolbox/aiAuthoringAssistant.js -rename to www/src/shared/toolbox/aiAuthoringAssistant.js -diff --git a/src/shared/toolbox/assetMarketplace.js b/www/src/shared/toolbox/assetMarketplace.js -similarity index 100% -rename from src/shared/toolbox/assetMarketplace.js -rename to www/src/shared/toolbox/assetMarketplace.js -diff --git a/src/shared/toolbox/assetPipelineConverters.js b/www/src/shared/toolbox/assetPipelineConverters.js -similarity index 100% -rename from src/shared/toolbox/assetPipelineConverters.js -rename to www/src/shared/toolbox/assetPipelineConverters.js -diff --git a/src/shared/toolbox/assetPipelineFoundation.js b/www/src/shared/toolbox/assetPipelineFoundation.js -similarity index 100% -rename from src/shared/toolbox/assetPipelineFoundation.js -rename to www/src/shared/toolbox/assetPipelineFoundation.js -diff --git a/src/shared/toolbox/assetPipelineValidationOutput.js b/www/src/shared/toolbox/assetPipelineValidationOutput.js -similarity index 100% -rename from src/shared/toolbox/assetPipelineValidationOutput.js -rename to www/src/shared/toolbox/assetPipelineValidationOutput.js -diff --git a/src/shared/toolbox/assetUsageIntegration.js b/www/src/shared/toolbox/assetUsageIntegration.js -similarity index 100% -rename from src/shared/toolbox/assetUsageIntegration.js -rename to www/src/shared/toolbox/assetUsageIntegration.js -diff --git a/src/shared/toolbox/ciValidationPipeline.js b/www/src/shared/toolbox/ciValidationPipeline.js -similarity index 100% -rename from src/shared/toolbox/ciValidationPipeline.js -rename to www/src/shared/toolbox/ciValidationPipeline.js -diff --git a/src/shared/toolbox/cloudRuntime.js b/www/src/shared/toolbox/cloudRuntime.js -similarity index 100% -rename from src/shared/toolbox/cloudRuntime.js -rename to www/src/shared/toolbox/cloudRuntime.js -diff --git a/src/shared/toolbox/collaborationSystem.js b/www/src/shared/toolbox/collaborationSystem.js -similarity index 100% -rename from src/shared/toolbox/collaborationSystem.js -rename to www/src/shared/toolbox/collaborationSystem.js -diff --git a/src/shared/toolbox/contractVersioning.js b/www/src/shared/toolbox/contractVersioning.js -similarity index 100% -rename from src/shared/toolbox/contractVersioning.js -rename to www/src/shared/toolbox/contractVersioning.js -diff --git a/src/shared/toolbox/debugInspectorData.js b/www/src/shared/toolbox/debugInspectorData.js -similarity index 100% -rename from src/shared/toolbox/debugInspectorData.js -rename to www/src/shared/toolbox/debugInspectorData.js -diff --git a/src/shared/toolbox/debugInspectorTools.css b/www/src/shared/toolbox/debugInspectorTools.css -similarity index 100% -rename from src/shared/toolbox/debugInspectorTools.css -rename to www/src/shared/toolbox/debugInspectorTools.css -diff --git a/src/shared/toolbox/debugToolInteractionFlow.js b/www/src/shared/toolbox/debugToolInteractionFlow.js -similarity index 100% -rename from src/shared/toolbox/debugToolInteractionFlow.js -rename to www/src/shared/toolbox/debugToolInteractionFlow.js -diff --git a/src/shared/toolbox/debugVisualizationLayer.js b/www/src/shared/toolbox/debugVisualizationLayer.js -similarity index 100% -rename from src/shared/toolbox/debugVisualizationLayer.js -rename to www/src/shared/toolbox/debugVisualizationLayer.js -diff --git a/src/shared/toolbox/devConsoleDebugOverlay.js b/www/src/shared/toolbox/devConsoleDebugOverlay.js -similarity index 100% -rename from src/shared/toolbox/devConsoleDebugOverlay.js -rename to www/src/shared/toolbox/devConsoleDebugOverlay.js -diff --git a/src/shared/toolbox/documentModeGuards.js b/www/src/shared/toolbox/documentModeGuards.js -similarity index 100% -rename from src/shared/toolbox/documentModeGuards.js -rename to www/src/shared/toolbox/documentModeGuards.js -diff --git a/src/shared/toolbox/editor/EntityPlacementEditor.js b/www/src/shared/toolbox/editor/EntityPlacementEditor.js -similarity index 100% -rename from src/shared/toolbox/editor/EntityPlacementEditor.js -rename to www/src/shared/toolbox/editor/EntityPlacementEditor.js -diff --git a/src/shared/toolbox/editor/LevelEditor.js b/www/src/shared/toolbox/editor/LevelEditor.js -similarity index 100% -rename from src/shared/toolbox/editor/LevelEditor.js -rename to www/src/shared/toolbox/editor/LevelEditor.js -diff --git a/src/shared/toolbox/editor/TileMapEditor.js b/www/src/shared/toolbox/editor/TileMapEditor.js -similarity index 100% -rename from src/shared/toolbox/editor/TileMapEditor.js -rename to www/src/shared/toolbox/editor/TileMapEditor.js -diff --git a/src/shared/toolbox/editor/TimelineEditor.js b/www/src/shared/toolbox/editor/TimelineEditor.js -similarity index 100% -rename from src/shared/toolbox/editor/TimelineEditor.js -rename to www/src/shared/toolbox/editor/TimelineEditor.js -diff --git a/src/shared/toolbox/editorExperienceLayer.js b/www/src/shared/toolbox/editorExperienceLayer.js -similarity index 100% -rename from src/shared/toolbox/editorExperienceLayer.js -rename to www/src/shared/toolbox/editorExperienceLayer.js -diff --git a/src/shared/toolbox/eventCommandUtils.js b/www/src/shared/toolbox/eventCommandUtils.js -similarity index 100% -rename from src/shared/toolbox/eventCommandUtils.js -rename to www/src/shared/toolbox/eventCommandUtils.js -diff --git a/src/shared/toolbox/gameTemplates.js b/www/src/shared/toolbox/gameTemplates.js -similarity index 100% -rename from src/shared/toolbox/gameTemplates.js -rename to www/src/shared/toolbox/gameTemplates.js -diff --git a/src/shared/toolbox/gameplaySystemLayer.js b/www/src/shared/toolbox/gameplaySystemLayer.js -similarity index 100% -rename from src/shared/toolbox/gameplaySystemLayer.js -rename to www/src/shared/toolbox/gameplaySystemLayer.js -diff --git a/src/shared/toolbox/hotReloadSystem.js b/www/src/shared/toolbox/hotReloadSystem.js -similarity index 100% -rename from src/shared/toolbox/hotReloadSystem.js -rename to www/src/shared/toolbox/hotReloadSystem.js -diff --git a/src/shared/toolbox/livePreviewSyncChannel.js b/www/src/shared/toolbox/livePreviewSyncChannel.js -similarity index 100% -rename from src/shared/toolbox/livePreviewSyncChannel.js -rename to www/src/shared/toolbox/livePreviewSyncChannel.js -diff --git a/src/shared/toolbox/multiTargetExport.js b/www/src/shared/toolbox/multiTargetExport.js -similarity index 100% -rename from src/shared/toolbox/multiTargetExport.js -rename to www/src/shared/toolbox/multiTargetExport.js -diff --git a/src/shared/toolbox/paletteDocumentContract.js b/www/src/shared/toolbox/paletteDocumentContract.js -similarity index 100% -rename from src/shared/toolbox/paletteDocumentContract.js -rename to www/src/shared/toolbox/paletteDocumentContract.js -diff --git a/src/shared/toolbox/performanceBenchmarks.js b/www/src/shared/toolbox/performanceBenchmarks.js -similarity index 100% -rename from src/shared/toolbox/performanceBenchmarks.js -rename to www/src/shared/toolbox/performanceBenchmarks.js -diff --git a/src/shared/toolbox/performanceProfiler.js b/www/src/shared/toolbox/performanceProfiler.js -similarity index 100% -rename from src/shared/toolbox/performanceProfiler.js -rename to www/src/shared/toolbox/performanceProfiler.js -diff --git a/src/shared/toolbox/pipeline/AssetImportPipeline.js b/www/src/shared/toolbox/pipeline/AssetImportPipeline.js -similarity index 100% -rename from src/shared/toolbox/pipeline/AssetImportPipeline.js -rename to www/src/shared/toolbox/pipeline/AssetImportPipeline.js -diff --git a/src/shared/toolbox/pipeline/AudioPreprocessPipeline.js b/www/src/shared/toolbox/pipeline/AudioPreprocessPipeline.js -similarity index 100% -rename from src/shared/toolbox/pipeline/AudioPreprocessPipeline.js -rename to www/src/shared/toolbox/pipeline/AudioPreprocessPipeline.js -diff --git a/src/shared/toolbox/pipeline/BuildAssetManifestSystem.js b/www/src/shared/toolbox/pipeline/BuildAssetManifestSystem.js -similarity index 100% -rename from src/shared/toolbox/pipeline/BuildAssetManifestSystem.js -rename to www/src/shared/toolbox/pipeline/BuildAssetManifestSystem.js -diff --git a/src/shared/toolbox/pipeline/ContentMigrationSystem.js b/www/src/shared/toolbox/pipeline/ContentMigrationSystem.js -similarity index 100% -rename from src/shared/toolbox/pipeline/ContentMigrationSystem.js -rename to www/src/shared/toolbox/pipeline/ContentMigrationSystem.js -diff --git a/src/shared/toolbox/pipeline/ContentValidationPipeline.js b/www/src/shared/toolbox/pipeline/ContentValidationPipeline.js -similarity index 100% -rename from src/shared/toolbox/pipeline/ContentValidationPipeline.js -rename to www/src/shared/toolbox/pipeline/ContentValidationPipeline.js -diff --git a/src/shared/toolbox/pipeline/TexturePreprocessPipeline.js b/www/src/shared/toolbox/pipeline/TexturePreprocessPipeline.js -similarity index 100% -rename from src/shared/toolbox/pipeline/TexturePreprocessPipeline.js -rename to www/src/shared/toolbox/pipeline/TexturePreprocessPipeline.js -diff --git a/src/shared/toolbox/pipeline/assetErrorHandling.js b/www/src/shared/toolbox/pipeline/assetErrorHandling.js -similarity index 100% -rename from src/shared/toolbox/pipeline/assetErrorHandling.js -rename to www/src/shared/toolbox/pipeline/assetErrorHandling.js -diff --git a/src/shared/toolbox/pipeline/assetManifestLoader.js b/www/src/shared/toolbox/pipeline/assetManifestLoader.js -similarity index 100% -rename from src/shared/toolbox/pipeline/assetManifestLoader.js -rename to www/src/shared/toolbox/pipeline/assetManifestLoader.js -diff --git a/src/shared/toolbox/pipeline/assetPipelineTooling.js b/www/src/shared/toolbox/pipeline/assetPipelineTooling.js -similarity index 100% -rename from src/shared/toolbox/pipeline/assetPipelineTooling.js -rename to www/src/shared/toolbox/pipeline/assetPipelineTooling.js -diff --git a/src/shared/toolbox/pipeline/gameAssetManifestCoordinator.js b/www/src/shared/toolbox/pipeline/gameAssetManifestCoordinator.js -similarity index 100% -rename from src/shared/toolbox/pipeline/gameAssetManifestCoordinator.js -rename to www/src/shared/toolbox/pipeline/gameAssetManifestCoordinator.js -diff --git a/src/shared/toolbox/pipeline/gameAssetManifestDiscovery.js b/www/src/shared/toolbox/pipeline/gameAssetManifestDiscovery.js -similarity index 100% -rename from src/shared/toolbox/pipeline/gameAssetManifestDiscovery.js -rename to www/src/shared/toolbox/pipeline/gameAssetManifestDiscovery.js -diff --git a/src/shared/toolbox/pipeline/runtimeAssetBinding.js b/www/src/shared/toolbox/pipeline/runtimeAssetBinding.js -similarity index 100% -rename from src/shared/toolbox/pipeline/runtimeAssetBinding.js -rename to www/src/shared/toolbox/pipeline/runtimeAssetBinding.js -diff --git a/src/shared/toolbox/pipeline/runtimeAssetLookup.js b/www/src/shared/toolbox/pipeline/runtimeAssetLookup.js -similarity index 100% -rename from src/shared/toolbox/pipeline/runtimeAssetLookup.js -rename to www/src/shared/toolbox/pipeline/runtimeAssetLookup.js -diff --git a/src/shared/toolbox/pipeline/runtimeAssetValidation.js b/www/src/shared/toolbox/pipeline/runtimeAssetValidation.js -similarity index 100% -rename from src/shared/toolbox/pipeline/runtimeAssetValidation.js -rename to www/src/shared/toolbox/pipeline/runtimeAssetValidation.js -diff --git a/src/shared/toolbox/platformShell.css b/www/src/shared/toolbox/platformShell.css -similarity index 100% -rename from src/shared/toolbox/platformShell.css -rename to www/src/shared/toolbox/platformShell.css -diff --git a/src/shared/toolbox/platformShell.js b/www/src/shared/toolbox/platformShell.js -similarity index 100% -rename from src/shared/toolbox/platformShell.js -rename to www/src/shared/toolbox/platformShell.js -diff --git a/src/shared/toolbox/platformValidationSuite.js b/www/src/shared/toolbox/platformValidationSuite.js -similarity index 100% -rename from src/shared/toolbox/platformValidationSuite.js -rename to www/src/shared/toolbox/platformValidationSuite.js -diff --git a/src/shared/toolbox/pluginArchitecture.js b/www/src/shared/toolbox/pluginArchitecture.js -similarity index 100% -rename from src/shared/toolbox/pluginArchitecture.js -rename to www/src/shared/toolbox/pluginArchitecture.js -diff --git a/src/shared/toolbox/powerShell/find_dupes_called.ps1 b/www/src/shared/toolbox/powerShell/find_dupes_called.ps1 -similarity index 100% -rename from src/shared/toolbox/powerShell/find_dupes_called.ps1 -rename to www/src/shared/toolbox/powerShell/find_dupes_called.ps1 -diff --git a/src/shared/toolbox/projectAssetRegistry.js b/www/src/shared/toolbox/projectAssetRegistry.js -similarity index 100% -rename from src/shared/toolbox/projectAssetRegistry.js -rename to www/src/shared/toolbox/projectAssetRegistry.js -diff --git a/src/shared/toolbox/projectAssetRemediation.js b/www/src/shared/toolbox/projectAssetRemediation.js -similarity index 100% -rename from src/shared/toolbox/projectAssetRemediation.js -rename to www/src/shared/toolbox/projectAssetRemediation.js -diff --git a/src/shared/toolbox/projectAssetValidation.js b/www/src/shared/toolbox/projectAssetValidation.js -similarity index 100% -rename from src/shared/toolbox/projectAssetValidation.js -rename to www/src/shared/toolbox/projectAssetValidation.js -diff --git a/src/shared/toolbox/projectManifestContract.js b/www/src/shared/toolbox/projectManifestContract.js -similarity index 100% -rename from src/shared/toolbox/projectManifestContract.js -rename to www/src/shared/toolbox/projectManifestContract.js -diff --git a/src/shared/toolbox/projectPackaging.js b/www/src/shared/toolbox/projectPackaging.js -similarity index 100% -rename from src/shared/toolbox/projectPackaging.js -rename to www/src/shared/toolbox/projectPackaging.js -diff --git a/src/shared/toolbox/projectSystem.js b/www/src/shared/toolbox/projectSystem.js -similarity index 100% -rename from src/shared/toolbox/projectSystem.js -rename to www/src/shared/toolbox/projectSystem.js -diff --git a/src/shared/toolbox/projectSystemAdapters.js b/www/src/shared/toolbox/projectSystemAdapters.js -similarity index 100% -rename from src/shared/toolbox/projectSystemAdapters.js -rename to www/src/shared/toolbox/projectSystemAdapters.js -diff --git a/src/shared/toolbox/projectSystemValueUtils.js b/www/src/shared/toolbox/projectSystemValueUtils.js -similarity index 100% -rename from src/shared/toolbox/projectSystemValueUtils.js -rename to www/src/shared/toolbox/projectSystemValueUtils.js -diff --git a/src/shared/toolbox/projectToolIntegration.js b/www/src/shared/toolbox/projectToolIntegration.js -similarity index 100% -rename from src/shared/toolbox/projectToolIntegration.js -rename to www/src/shared/toolbox/projectToolIntegration.js -diff --git a/src/shared/toolbox/projectVersioning.js b/www/src/shared/toolbox/projectVersioning.js -similarity index 100% -rename from src/shared/toolbox/projectVersioning.js -rename to www/src/shared/toolbox/projectVersioning.js -diff --git a/src/shared/toolbox/publishingPipeline.js b/www/src/shared/toolbox/publishingPipeline.js -similarity index 100% -rename from src/shared/toolbox/publishingPipeline.js -rename to www/src/shared/toolbox/publishingPipeline.js -diff --git a/src/shared/toolbox/renderPipelineContract.js b/www/src/shared/toolbox/renderPipelineContract.js -similarity index 100% -rename from src/shared/toolbox/renderPipelineContract.js -rename to www/src/shared/toolbox/renderPipelineContract.js -diff --git a/src/shared/toolbox/runtimeAssetLoader.js b/www/src/shared/toolbox/runtimeAssetLoader.js -similarity index 100% -rename from src/shared/toolbox/runtimeAssetLoader.js -rename to www/src/shared/toolbox/runtimeAssetLoader.js -diff --git a/src/shared/toolbox/runtimeAssetSharedUtils.js b/www/src/shared/toolbox/runtimeAssetSharedUtils.js -similarity index 100% -rename from src/shared/toolbox/runtimeAssetSharedUtils.js -rename to www/src/shared/toolbox/runtimeAssetSharedUtils.js -diff --git a/src/shared/toolbox/runtimeAssetValidationUtils.js b/www/src/shared/toolbox/runtimeAssetValidationUtils.js -similarity index 100% -rename from src/shared/toolbox/runtimeAssetValidationUtils.js -rename to www/src/shared/toolbox/runtimeAssetValidationUtils.js -diff --git a/src/shared/toolbox/runtimeSceneLoaderHotReload.js b/www/src/shared/toolbox/runtimeSceneLoaderHotReload.js -similarity index 100% -rename from src/shared/toolbox/runtimeSceneLoaderHotReload.js -rename to www/src/shared/toolbox/runtimeSceneLoaderHotReload.js -diff --git a/src/shared/toolbox/runtimeStreaming.js b/www/src/shared/toolbox/runtimeStreaming.js -similarity index 100% -rename from src/shared/toolbox/runtimeStreaming.js -rename to www/src/shared/toolbox/runtimeStreaming.js -diff --git a/src/shared/toolbox/samples/project-asset-registry-demo/assets/images/clouds-layer.svg b/www/src/shared/toolbox/samples/project-asset-registry-demo/assets/images/clouds-layer.svg -similarity index 100% -rename from src/shared/toolbox/samples/project-asset-registry-demo/assets/images/clouds-layer.svg -rename to www/src/shared/toolbox/samples/project-asset-registry-demo/assets/images/clouds-layer.svg -diff --git a/src/shared/toolbox/samples/project-asset-registry-demo/assets/parallax/overworld-main.parallax.json b/www/src/shared/toolbox/samples/project-asset-registry-demo/assets/parallax/overworld-main.parallax.json -similarity index 100% -rename from src/shared/toolbox/samples/project-asset-registry-demo/assets/parallax/overworld-main.parallax.json -rename to www/src/shared/toolbox/samples/project-asset-registry-demo/assets/parallax/overworld-main.parallax.json -diff --git a/src/shared/toolbox/samples/project-asset-registry-demo/assets/sprites/hero-idle.sprite.json b/www/src/shared/toolbox/samples/project-asset-registry-demo/assets/sprites/hero-idle.sprite.json -similarity index 100% -rename from src/shared/toolbox/samples/project-asset-registry-demo/assets/sprites/hero-idle.sprite.json -rename to www/src/shared/toolbox/samples/project-asset-registry-demo/assets/sprites/hero-idle.sprite.json -diff --git a/src/shared/toolbox/samples/project-asset-registry-demo/assets/tilemaps/overworld-main.tilemap.json b/www/src/shared/toolbox/samples/project-asset-registry-demo/assets/tilemaps/overworld-main.tilemap.json -similarity index 100% -rename from src/shared/toolbox/samples/project-asset-registry-demo/assets/tilemaps/overworld-main.tilemap.json -rename to www/src/shared/toolbox/samples/project-asset-registry-demo/assets/tilemaps/overworld-main.tilemap.json -diff --git a/src/shared/toolbox/samples/project-asset-registry-demo/assets/tiles/overworld-main.png b/www/src/shared/toolbox/samples/project-asset-registry-demo/assets/tiles/overworld-main.png -similarity index 100% -rename from src/shared/toolbox/samples/project-asset-registry-demo/assets/tiles/overworld-main.png -rename to www/src/shared/toolbox/samples/project-asset-registry-demo/assets/tiles/overworld-main.png -diff --git a/src/shared/toolbox/samples/project-asset-registry-demo/project.assets.json b/www/src/shared/toolbox/samples/project-asset-registry-demo/project.assets.json -similarity index 70% -rename from src/shared/toolbox/samples/project-asset-registry-demo/project.assets.json -rename to www/src/shared/toolbox/samples/project-asset-registry-demo/project.assets.json -index 652f0f4a4..b0bfa2447 100644 ---- a/src/shared/toolbox/samples/project-asset-registry-demo/project.assets.json -+++ b/www/src/shared/toolbox/samples/project-asset-registry-demo/project.assets.json -@@ -7,7 +7,7 @@ - }, - "version": 1, - "projectId": "mario-style-learning-level", -- "basePath": "src/shared/toolbox/samples/project-asset-registry-demo", -+ "basePath": "www/src/shared/toolbox/samples/project-asset-registry-demo", - "palettes": [ - { - "id": "palette.crayola032", -@@ -21,7 +21,7 @@ - { - "id": "sprite.hero-idle", - "name": "Hero Idle", -- "path": "src/shared/toolbox/samples/project-asset-registry-demo/assets/sprites/hero-idle.sprite.json", -+ "path": "www/src/shared/toolbox/samples/project-asset-registry-demo/assets/sprites/hero-idle.sprite.json", - "paletteId": "palette.crayola032", - "sourceTool": "sprite-editor" - } -@@ -30,7 +30,7 @@ - { - "id": "tileset.overworld-main", - "name": "Overworld Main", -- "path": "src/shared/toolbox/samples/project-asset-registry-demo/assets/tiles/overworld-main.png", -+ "path": "www/src/shared/toolbox/samples/project-asset-registry-demo/assets/tiles/overworld-main.png", - "tileWidth": 24, - "tileHeight": 24, - "sourceTool": "tile-map-editor" -@@ -40,7 +40,7 @@ - { - "id": "image.parallax-clouds", - "name": "Parallax Clouds", -- "path": "src/shared/toolbox/samples/project-asset-registry-demo/assets/images/clouds-layer.svg", -+ "path": "www/src/shared/toolbox/samples/project-asset-registry-demo/assets/images/clouds-layer.svg", - "sourceTool": "parallax-editor" - } - ], -@@ -48,7 +48,7 @@ - { - "id": "parallax.sky-clouds", - "name": "Sky Clouds", -- "path": "src/shared/toolbox/samples/project-asset-registry-demo/assets/parallax/overworld-main.parallax.json", -+ "path": "www/src/shared/toolbox/samples/project-asset-registry-demo/assets/parallax/overworld-main.parallax.json", - "imageId": "image.parallax-clouds", - "sourceTool": "parallax-editor" - } -diff --git a/src/shared/toolbox/schemaOnlyToolPresetValidation.js b/www/src/shared/toolbox/schemaOnlyToolPresetValidation.js -similarity index 100% -rename from src/shared/toolbox/schemaOnlyToolPresetValidation.js -rename to www/src/shared/toolbox/schemaOnlyToolPresetValidation.js -diff --git a/src/shared/toolbox/tool-metadata-inventory.js b/www/src/shared/toolbox/tool-metadata-inventory.js -similarity index 100% -rename from src/shared/toolbox/tool-metadata-inventory.js -rename to www/src/shared/toolbox/tool-metadata-inventory.js -diff --git a/src/shared/toolbox/toolBootContract.js b/www/src/shared/toolbox/toolBootContract.js -similarity index 100% -rename from src/shared/toolbox/toolBootContract.js -rename to www/src/shared/toolbox/toolBootContract.js -diff --git a/src/shared/toolbox/toolHostManifest.js b/www/src/shared/toolbox/toolHostManifest.js -similarity index 100% -rename from src/shared/toolbox/toolHostManifest.js -rename to www/src/shared/toolbox/toolHostManifest.js -diff --git a/src/shared/toolbox/toolHostRuntime.js b/www/src/shared/toolbox/toolHostRuntime.js -similarity index 100% -rename from src/shared/toolbox/toolHostRuntime.js -rename to www/src/shared/toolbox/toolHostRuntime.js -diff --git a/src/shared/toolbox/toolHostSharedContext.js b/www/src/shared/toolbox/toolHostSharedContext.js -similarity index 100% -rename from src/shared/toolbox/toolHostSharedContext.js -rename to www/src/shared/toolbox/toolHostSharedContext.js -diff --git a/src/shared/toolbox/toolLaunchSSoT.js b/www/src/shared/toolbox/toolLaunchSSoT.js -similarity index 100% -rename from src/shared/toolbox/toolLaunchSSoT.js -rename to www/src/shared/toolbox/toolLaunchSSoT.js -diff --git a/src/shared/toolbox/toolLaunchSSoTData.js b/www/src/shared/toolbox/toolLaunchSSoTData.js -similarity index 100% -rename from src/shared/toolbox/toolLaunchSSoTData.js -rename to www/src/shared/toolbox/toolLaunchSSoTData.js -diff --git a/src/shared/toolbox/toolLoadDiagnostics.js b/www/src/shared/toolbox/toolLoadDiagnostics.js -similarity index 100% -rename from src/shared/toolbox/toolLoadDiagnostics.js -rename to www/src/shared/toolbox/toolLoadDiagnostics.js -diff --git a/src/shared/toolbox/toolSampleCatalog.js b/www/src/shared/toolbox/toolSampleCatalog.js -similarity index 100% -rename from src/shared/toolbox/toolSampleCatalog.js -rename to www/src/shared/toolbox/toolSampleCatalog.js -diff --git a/src/shared/toolbox/tooling/AssetBrowser.js b/www/src/shared/toolbox/tooling/AssetBrowser.js -similarity index 100% -rename from src/shared/toolbox/tooling/AssetBrowser.js -rename to www/src/shared/toolbox/tooling/AssetBrowser.js -diff --git a/src/shared/toolbox/tooling/DeveloperConsole.js b/www/src/shared/toolbox/tooling/DeveloperConsole.js -similarity index 100% -rename from src/shared/toolbox/tooling/DeveloperConsole.js -rename to www/src/shared/toolbox/tooling/DeveloperConsole.js -diff --git a/src/shared/toolbox/tooling/LiveTuningService.js b/www/src/shared/toolbox/tooling/LiveTuningService.js -similarity index 100% -rename from src/shared/toolbox/tooling/LiveTuningService.js -rename to www/src/shared/toolbox/tooling/LiveTuningService.js -diff --git a/src/shared/toolbox/tooling/PropertyEditor.js b/www/src/shared/toolbox/tooling/PropertyEditor.js -similarity index 100% -rename from src/shared/toolbox/tooling/PropertyEditor.js -rename to www/src/shared/toolbox/tooling/PropertyEditor.js -diff --git a/src/shared/toolbox/tooling/RuntimeInspector.js b/www/src/shared/toolbox/tooling/RuntimeInspector.js -similarity index 100% -rename from src/shared/toolbox/tooling/RuntimeInspector.js -rename to www/src/shared/toolbox/tooling/RuntimeInspector.js -diff --git a/src/shared/toolbox/tooling/SceneGraphViewer.js b/www/src/shared/toolbox/tooling/SceneGraphViewer.js -similarity index 100% -rename from src/shared/toolbox/tooling/SceneGraphViewer.js -rename to www/src/shared/toolbox/tooling/SceneGraphViewer.js -diff --git a/src/shared/toolbox/uiSafeUtils.js b/www/src/shared/toolbox/uiSafeUtils.js -similarity index 100% -rename from src/shared/toolbox/uiSafeUtils.js -rename to www/src/shared/toolbox/uiSafeUtils.js -diff --git a/src/shared/toolbox/unifiedToolUxContract.js b/www/src/shared/toolbox/unifiedToolUxContract.js -similarity index 100% -rename from src/shared/toolbox/unifiedToolUxContract.js -rename to www/src/shared/toolbox/unifiedToolUxContract.js -diff --git a/src/shared/toolbox/vector/vectorAssetBridge.js b/www/src/shared/toolbox/vector/vectorAssetBridge.js -similarity index 100% -rename from src/shared/toolbox/vector/vectorAssetBridge.js -rename to www/src/shared/toolbox/vector/vectorAssetBridge.js -diff --git a/src/shared/toolbox/vector/vectorAssetContract.js b/www/src/shared/toolbox/vector/vectorAssetContract.js -similarity index 100% -rename from src/shared/toolbox/vector/vectorAssetContract.js -rename to www/src/shared/toolbox/vector/vectorAssetContract.js -diff --git a/src/shared/toolbox/vector/vectorGeometryMath.js b/www/src/shared/toolbox/vector/vectorGeometryMath.js -similarity index 100% -rename from src/shared/toolbox/vector/vectorGeometryMath.js -rename to www/src/shared/toolbox/vector/vectorGeometryMath.js -diff --git a/src/shared/toolbox/vector/vectorRenderPrep.js b/www/src/shared/toolbox/vector/vectorRenderPrep.js -similarity index 100% -rename from src/shared/toolbox/vector/vectorRenderPrep.js -rename to www/src/shared/toolbox/vector/vectorRenderPrep.js -diff --git a/src/shared/toolbox/vector/vectorSafeValueUtils.js b/www/src/shared/toolbox/vector/vectorSafeValueUtils.js -similarity index 100% -rename from src/shared/toolbox/vector/vectorSafeValueUtils.js -rename to www/src/shared/toolbox/vector/vectorSafeValueUtils.js -diff --git a/src/shared/toolbox/vectorAssetSystem.js b/www/src/shared/toolbox/vectorAssetSystem.js -similarity index 100% -rename from src/shared/toolbox/vectorAssetSystem.js -rename to www/src/shared/toolbox/vectorAssetSystem.js -diff --git a/src/shared/toolbox/vectorGeometryRuntime.js b/www/src/shared/toolbox/vectorGeometryRuntime.js -similarity index 100% -rename from src/shared/toolbox/vectorGeometryRuntime.js -rename to www/src/shared/toolbox/vectorGeometryRuntime.js -diff --git a/src/shared/toolbox/vectorNativeTemplate.js b/www/src/shared/toolbox/vectorNativeTemplate.js -similarity index 100% -rename from src/shared/toolbox/vectorNativeTemplate.js -rename to www/src/shared/toolbox/vectorNativeTemplate.js -diff --git a/src/shared/toolbox/vectorTemplateSampleGame.js b/www/src/shared/toolbox/vectorTemplateSampleGame.js -similarity index 100% -rename from src/shared/toolbox/vectorTemplateSampleGame.js -rename to www/src/shared/toolbox/vectorTemplateSampleGame.js -diff --git a/src/shared/toolbox/workspaceShell.js b/www/src/shared/toolbox/workspaceShell.js -similarity index 100% -rename from src/shared/toolbox/workspaceShell.js -rename to www/src/shared/toolbox/workspaceShell.js -diff --git a/src/shared/types/typeGuards.js b/www/src/shared/types/typeGuards.js -similarity index 100% -rename from src/shared/types/typeGuards.js -rename to www/src/shared/types/typeGuards.js -diff --git a/src/shared/validation/assert.js b/www/src/shared/validation/assert.js -similarity index 100% -rename from src/shared/validation/assert.js -rename to www/src/shared/validation/assert.js -diff --git a/src/shared/validation/invariant.js b/www/src/shared/validation/invariant.js -similarity index 100% -rename from src/shared/validation/invariant.js -rename to www/src/shared/validation/invariant.js -diff --git a/src/tools/common/GameManifestLoader.js b/www/src/tools/common/GameManifestLoader.js -similarity index 100% -rename from src/tools/common/GameManifestLoader.js -rename to www/src/tools/common/GameManifestLoader.js -diff --git a/src/tools/common/WorkspaceDirtyNotifier.js b/www/src/tools/common/WorkspaceDirtyNotifier.js -similarity index 100% -rename from src/tools/common/WorkspaceDirtyNotifier.js -rename to www/src/tools/common/WorkspaceDirtyNotifier.js ++| Runtime/API/UI/database changes | PASS | None. Governance/report-only audit. |