Skip to content

Commit fe62f62

Browse files
committed
Add deterministic lane warm-start reuse and dependency hydration caching to reduce repeated Playwright initialization overhead - PR_26146_035-lane-warm-start-and-dependency-hydration-reuse
1 parent e649453 commit fe62f62

23 files changed

Lines changed: 959 additions & 34 deletions

docs/dev/reports/dependency_gating_report.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Dependency Gating Report
22

3-
Generated: 2026-05-26T20:05:20.957Z
3+
Generated: 2026-05-26T20:22:17.979Z
44
Status: PASS
55

66
## Gate Order
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Dependency Hydration Reuse Report
2+
3+
Generated: 2026-05-26T20:22:17.979Z
4+
Status: PASS
5+
6+
## Summary
7+
8+
Reused dependency hydration: 4
9+
Invalidated dependency hydration: 0
10+
Generated dependency hydration: 0
11+
Prevented dependency graph hydration: 4
12+
Prevented helper resolution passes: 11
13+
Prevented fixture ownership traversal: 6
14+
15+
## Hydration Decisions
16+
17+
| Lane | Status | Helpers | Fixtures | Imports | Dependency Hydration Hash | Reason |
18+
| --- | --- | --- | --- | --- | --- | --- |
19+
| tool-runtime | REUSED | tests/helpers/playwrightRepoServer.mjs; tests/helpers/playwrightStorageIsolation.mjs; tests/helpers/playwrightV8CoverageReporter.mjs; tests/helpers/workspaceV2CoverageReporter.mjs | games/Asteroids/game.manifest.json; games/GravityWell/game.manifest.json; games/Pong/game.manifest.json; tests/fixtures/workspace-v2/uat.manifest.json | tests/helpers/playwrightRepoServer.mjs; tests/helpers/playwrightStorageIsolation.mjs; tests/helpers/playwrightV8CoverageReporter.mjs; tests/helpers/workspaceV2CoverageReporter.mjs | 0fecfc07e559cf38 | Dependency hydration reused from validated warm-start state. |
20+
| game-runtime | REUSED | tests/helpers/playwrightRepoServer.mjs; tests/helpers/playwrightV8CoverageReporter.mjs; tests/helpers/workspaceV2CoverageReporter.mjs | games/Asteroids/game.manifest.json | tests/helpers/playwrightRepoServer.mjs; tests/helpers/playwrightV8CoverageReporter.mjs; tests/helpers/workspaceV2CoverageReporter.mjs | 1e6d53ee82652bb2 | Dependency hydration reused from validated warm-start state. |
21+
| integration | REUSED | tests/helpers/playwrightRepoServer.mjs; tests/helpers/playwrightStorageIsolation.mjs; tests/helpers/playwrightV8CoverageReporter.mjs; tests/helpers/workspaceV2CoverageReporter.mjs | games/Pong/game.manifest.json | tests/helpers/playwrightRepoServer.mjs; tests/helpers/playwrightStorageIsolation.mjs; tests/helpers/playwrightV8CoverageReporter.mjs; tests/helpers/workspaceV2CoverageReporter.mjs | a26bcd0115fc4315 | Dependency hydration reused from validated warm-start state. |
22+
| engine-src | REUSED | none | none | src/engine/assets/AssetLoaderSystem.js; src/engine/assets/AssetRegistry.js; src/engine/assets/ImageAssetLoader.js; src/engine/audio/AudioService.js; src/engine/camera/Camera2D.js; src/engine/camera/Camera3D.js; src/engine/camera/CameraSystem.js; src/engine/core/Engine.js; src/engine/core/FixedTicker.js; src/engine/core/FrameClock.js; src/engine/core/RuntimeMetrics.js; src/engine/events/EventBus.js; src/engine/input/ActionInputService.js; src/engine/input/GamepadHapticsService.js; src/engine/input/GamepadInputAdapter.js; src/engine/input/InputMap.js; src/engine/input/InputService.js; src/engine/input/KeyboardState.js; src/engine/input/MouseState.js; src/engine/physics/arcadeBody.js; src/engine/physics/collision3d.js; src/engine/physics/drag.js; src/engine/physics/integration3d.js; src/engine/physics/scene3d.js; src/engine/rendering/CanvasRenderer.js; src/engine/rendering/LayeredRenderSystem.js; src/engine/scene/Scene.js; src/engine/scene/SceneManager.js; src/engine/systems/MovementSystem.js; src/engine/systems/PhysicsSystem.js | e13166ce3ced2d3e | Dependency hydration reused from validated warm-start state. |
23+
24+
## Safeguards
25+
26+
- Dependency hydration reuse is tied to manifest input, ownership, dependency graph, helper, fixture, and import hashes.
27+
- Stale hydration metadata is refreshed before runtime and is not reused silently.
28+
- Hydration invalidation does not trigger fallback broad discovery or unrelated lane execution.
29+
- Reused hydration avoids repeated helper resolution, fixture ownership traversal, and dependency graph hydration for compatible targeted runs.

docs/dev/reports/filesystem_scan_reduction_report.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Filesystem Scan Reduction Report
22

3-
Generated: 2026-05-26T20:05:20.934Z
3+
Generated: 2026-05-26T20:22:17.964Z
44
Status: PASS
55

66
## Scan Enforcement

docs/dev/reports/incremental_validation_report.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Incremental Validation Report
22

3-
Generated: 2026-05-26T20:05:20.958Z
3+
Generated: 2026-05-26T20:22:17.980Z
44
Status: PASS
55

66
## Reuse Summary

docs/dev/reports/lane_compilation_report.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Lane Compilation Report
22

3-
Generated: 2026-05-26T20:05:20.957Z
3+
Generated: 2026-05-26T20:22:17.979Z
44
Status: PASS
55

66
## Lane Graph

docs/dev/reports/lane_deduplication_report.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Lane Deduplication Report
22

3-
Generated: 2026-05-26T20:05:20.957Z
3+
Generated: 2026-05-26T20:22:17.979Z
44
Status: PASS
55

66
## Summary

docs/dev/reports/lane_input_validation_report.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Lane Input Validation Report
22

3-
Generated: 2026-05-26T20:05:20.958Z
3+
Generated: 2026-05-26T20:22:17.980Z
44
Status: PASS
55

66
## Input Files

docs/dev/reports/lane_runtime_optimization_report.md

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
# Lane Runtime Optimization Report
22

3-
Generated: 2026-05-26T20:05:20.958Z
3+
Generated: 2026-05-26T20:22:17.979Z
44
Status: PASS
55

66
## Runtime Cost Summary
77

88
Reused runtime sessions: 3
9+
Reused warm-start lanes: 4
10+
Reused dependency hydration: 4
11+
Prevented redundant initialization: 4
912
Prevented redundant browser launches: 4
1013
Prevented redundant lane execution: 2
1114
Baseline Playwright/browser launches: 8
@@ -24,16 +27,18 @@ No zero-browser, compilation, or dependency blockers were found.
2427

2528
## Lane Plans
2629

27-
| Lane | Baseline Browser Launches | Scheduled Browser Launches | Commands | Reason |
28-
| --- | --- | --- | --- | --- |
29-
| tool-runtime | 3 | 2 | C:\nvm4w\nodejs\node.exe C:\Users\davidq\Documents\GitHub\HTML-JavaScript-Gaming\node_modules\@playwright\test\cli.js test tests/playwright/tools/AssetManagerV2.spec.mjs --grep "launch guard|temporary UAT context|rejects non-Workspace" --project=playwright --workers=1 --reporter=list; C:\nvm4w\nodejs\node.exe C:\Users\davidq\Documents\GitHub\HTML-JavaScript-Gaming\node_modules\@playwright\test\cli.js test tests/playwright/tools/PreviewGeneratorV2Baseline.spec.mjs tests/playwright/tools/CollisionInspectorV2.spec.mjs --project=playwright --workers=1 --reporter=list | Tool runtime lane validates focused tool behavior without treating unrelated stale product assertions as blockers. |
30-
| game-runtime | 4 | 1 | C:\nvm4w\nodejs\node.exe C:\Users\davidq\Documents\GitHub\HTML-JavaScript-Gaming\node_modules\@playwright\test\cli.js test tests/playwright/games/AsteroidsBackgroundAssetResolution.spec.mjs tests/playwright/games/AsteroidsBeatTiming.spec.mjs tests/playwright/games/AsteroidsGameSceneCleanup.spec.mjs tests/playwright/games/AsteroidsShipStateVisuals.spec.mjs --project=playwright --workers=1 --reporter=list | Game runtime lane validates explicit game-owned Playwright behavior only. |
31-
| integration | 1 | 1 | C:\nvm4w\nodejs\node.exe C:\Users\davidq\Documents\GitHub\HTML-JavaScript-Gaming\node_modules\@playwright\test\cli.js test tests/playwright/integration/GameIndexPreviewManifestResolution.spec.mjs --grep Pong --project=playwright --workers=1 --reporter=list | Integration lane validates explicit cross-surface handoffs only; broad all-game thumbnail coverage is outside the default targeted lane. |
32-
| engine-src | 0 | 0 | C:\nvm4w\nodejs\node.exe scripts/run-node-test-files.mjs tests/core/EngineCoreBoundaryBaseline.test.mjs tests/core/FrameClock.test.mjs tests/core/FixedTicker.test.mjs tests/assets/AssetLoaderSystem.test.mjs tests/audio/AudioService.test.mjs tests/input/InputMap.test.mjs tests/input/KeyboardState.test.mjs tests/input/MouseState.test.mjs tests/input/GamepadInputAdapter.test.mjs tests/input/GamepadHapticsService.test.mjs tests/render/Renderer.test.mjs | Engine/src lane validates reusable runtime surfaces through targeted node tests. |
30+
| Lane | Warm Start | Hydration | Baseline Browser Launches | Scheduled Browser Launches | Commands | Reason |
31+
| --- | --- | --- | --- | --- | --- | --- |
32+
| tool-runtime | REUSED | REUSED | 3 | 2 | C:\nvm4w\nodejs\node.exe C:\Users\davidq\Documents\GitHub\HTML-JavaScript-Gaming\node_modules\@playwright\test\cli.js test tests/playwright/tools/AssetManagerV2.spec.mjs --grep "launch guard|temporary UAT context|rejects non-Workspace" --project=playwright --workers=1 --reporter=list; C:\nvm4w\nodejs\node.exe C:\Users\davidq\Documents\GitHub\HTML-JavaScript-Gaming\node_modules\@playwright\test\cli.js test tests/playwright/tools/PreviewGeneratorV2Baseline.spec.mjs tests/playwright/tools/CollisionInspectorV2.spec.mjs --project=playwright --workers=1 --reporter=list | Tool runtime lane validates focused tool behavior without treating unrelated stale product assertions as blockers. |
33+
| game-runtime | REUSED | REUSED | 4 | 1 | C:\nvm4w\nodejs\node.exe C:\Users\davidq\Documents\GitHub\HTML-JavaScript-Gaming\node_modules\@playwright\test\cli.js test tests/playwright/games/AsteroidsBackgroundAssetResolution.spec.mjs tests/playwright/games/AsteroidsBeatTiming.spec.mjs tests/playwright/games/AsteroidsGameSceneCleanup.spec.mjs tests/playwright/games/AsteroidsShipStateVisuals.spec.mjs --project=playwright --workers=1 --reporter=list | Game runtime lane validates explicit game-owned Playwright behavior only. |
34+
| integration | REUSED | REUSED | 1 | 1 | C:\nvm4w\nodejs\node.exe C:\Users\davidq\Documents\GitHub\HTML-JavaScript-Gaming\node_modules\@playwright\test\cli.js test tests/playwright/integration/GameIndexPreviewManifestResolution.spec.mjs --grep Pong --project=playwright --workers=1 --reporter=list | Integration lane validates explicit cross-surface handoffs only; broad all-game thumbnail coverage is outside the default targeted lane. |
35+
| engine-src | REUSED | REUSED | 0 | 0 | C:\nvm4w\nodejs\node.exe scripts/run-node-test-files.mjs tests/core/EngineCoreBoundaryBaseline.test.mjs tests/core/FrameClock.test.mjs tests/core/FixedTicker.test.mjs tests/assets/AssetLoaderSystem.test.mjs tests/audio/AudioService.test.mjs tests/input/InputMap.test.mjs tests/input/KeyboardState.test.mjs tests/input/MouseState.test.mjs tests/input/GamepadInputAdapter.test.mjs tests/input/GamepadHapticsService.test.mjs tests/render/Renderer.test.mjs | Engine/src lane validates reusable runtime surfaces through targeted node tests. |
3336

3437
## Runtime Savings Observations
3538

3639
- Zero-browser preflight, lane compilation, and dependency validation run once per targeted runner invocation.
40+
- Validated warm-start lanes reuse deterministic initialization state when manifest and dependency hashes are unchanged.
41+
- Reused dependency hydration avoids repeated helper resolution and fixture ownership traversal for compatible targeted runs.
3742
- Compatible Playwright specs with matching options are kept in shared CLI invocations to avoid redundant browser startup.
3843
- Unselected lanes are not scheduled after isolated targeted lane failures.
3944
- Workspace V2 and samples lanes are not escalated unless explicitly selected.
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# Lane Warm-Start Report
2+
3+
Generated: 2026-05-26T20:22:17.979Z
4+
Status: PASS
5+
Warm-start directory: docs/dev/reports/lane_warm_starts
6+
7+
## Summary
8+
9+
Reused warm-start lanes: 4
10+
Invalidated warm-start states: 0
11+
Generated warm-start states: 0
12+
Skipped warm-start states: 0
13+
Prevented redundant initialization: 4
14+
Prevented lane graph assembly: 4
15+
16+
## Warm-Start Decisions
17+
18+
| Lane | Status | Warm-Start Path | Manifest Hash | Warm-Start Hash | Dependency Hydration Hash | Reason |
19+
| --- | --- | --- | --- | --- | --- | --- |
20+
| tool-runtime | REUSED | docs/dev/reports/lane_warm_starts/tool-runtime.json | 999cd821c911cac6 | d09c1b2843983b2b | 0fecfc07e559cf38 | Manifest inputs, dependency graph, ownership metadata, helper placement, fixture placement, and lane configuration are unchanged. |
21+
| game-runtime | REUSED | docs/dev/reports/lane_warm_starts/game-runtime.json | 6b3ea783bd50d09f | 7df2baeee535208f | 1e6d53ee82652bb2 | Manifest inputs, dependency graph, ownership metadata, helper placement, fixture placement, and lane configuration are unchanged. |
22+
| integration | REUSED | docs/dev/reports/lane_warm_starts/integration.json | a0a414fdcda4d881 | d847a2b8545945e9 | a26bcd0115fc4315 | Manifest inputs, dependency graph, ownership metadata, helper placement, fixture placement, and lane configuration are unchanged. |
23+
| engine-src | REUSED | docs/dev/reports/lane_warm_starts/engine-src.json | 4b09c904c7f073c7 | 3e467919ebe3d492 | e13166ce3ced2d3e | Manifest inputs, dependency graph, ownership metadata, helper placement, fixture placement, and lane configuration are unchanged. |
24+
25+
## Fast-Fail Safeguards
26+
27+
No warm-start blocker findings were found before runtime.
28+
29+
## Invalidation Rules
30+
31+
- Targeted file changes invalidate the owning warm-start state through manifest input hashes.
32+
- Ownership metadata changes invalidate warm-start state before runtime scheduling.
33+
- Dependency graph changes invalidate warm-start state and dependency hydration reuse.
34+
- Helper or fixture placement changes invalidate the affected lane state.
35+
- Lane configuration changes invalidate warm-start state before Playwright launch.
36+
- Warm-start invalidation never expands into broad fallback lane execution.
37+
38+
## Runtime Savings Observations
39+
40+
- Reused warm-start state avoids rebuilding identical lane initialization data.
41+
- Reused state carries validated manifest, ownership, dependency, and hydration hashes into scheduling.
42+
- Generated or invalidated state is refreshed deterministically before runtime and remains scoped to selected lanes.
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
{
2+
"commandsHash": "ef29170bd803e5aa",
3+
"dependencyGraphHash": "e2570ebce03c46e3",
4+
"dependencyHydration": {
5+
"dependencyHydrationHash": "e13166ce3ced2d3e",
6+
"fixtureHashes": {},
7+
"fixtures": [],
8+
"helperHashes": {},
9+
"helpers": [],
10+
"importHashes": {
11+
"src/engine/assets/AssetLoaderSystem.js": "1079dbc1f02d3b1a",
12+
"src/engine/assets/AssetRegistry.js": "6f09f4b9f08e692f",
13+
"src/engine/assets/ImageAssetLoader.js": "c5cbaa10a707e41e",
14+
"src/engine/audio/AudioService.js": "d34d91cb0f843a3d",
15+
"src/engine/camera/Camera2D.js": "fd8ec387433e2c88",
16+
"src/engine/camera/Camera3D.js": "b9eca57ee8184d85",
17+
"src/engine/camera/CameraSystem.js": "2fe975f309173049",
18+
"src/engine/core/Engine.js": "da804d00538620ae",
19+
"src/engine/core/FixedTicker.js": "3990ab094244cb86",
20+
"src/engine/core/FrameClock.js": "68fe99c149aae1db",
21+
"src/engine/core/RuntimeMetrics.js": "bd3dc0615aabb243",
22+
"src/engine/events/EventBus.js": "438bbca0fd5595b7",
23+
"src/engine/input/ActionInputService.js": "87d24aa5e6722371",
24+
"src/engine/input/GamepadHapticsService.js": "be88ad30bcfccaf0",
25+
"src/engine/input/GamepadInputAdapter.js": "0e9819519d56234c",
26+
"src/engine/input/InputMap.js": "a840baef430dbf1d",
27+
"src/engine/input/InputService.js": "2b93f647588f3a91",
28+
"src/engine/input/KeyboardState.js": "bfbea88db28f5cd3",
29+
"src/engine/input/MouseState.js": "dad52e903669ae4a",
30+
"src/engine/physics/arcadeBody.js": "bb75b68ad5c75ed0",
31+
"src/engine/physics/collision3d.js": "8c2b4c2060d836ba",
32+
"src/engine/physics/drag.js": "8f507a58529df7dc",
33+
"src/engine/physics/integration3d.js": "441611ffe0372c50",
34+
"src/engine/physics/scene3d.js": "14886eddbcda291b",
35+
"src/engine/rendering/CanvasRenderer.js": "aaa2e6efe0114403",
36+
"src/engine/rendering/LayeredRenderSystem.js": "f7ace3c8d0294f0d",
37+
"src/engine/scene/Scene.js": "041dc376827ee06a",
38+
"src/engine/scene/SceneManager.js": "faf66ecd4268b524",
39+
"src/engine/systems/MovementSystem.js": "0bfe4654f7173672",
40+
"src/engine/systems/PhysicsSystem.js": "263375133f68d541"
41+
},
42+
"imports": [
43+
"src/engine/assets/AssetLoaderSystem.js",
44+
"src/engine/assets/AssetRegistry.js",
45+
"src/engine/assets/ImageAssetLoader.js",
46+
"src/engine/audio/AudioService.js",
47+
"src/engine/camera/Camera2D.js",
48+
"src/engine/camera/Camera3D.js",
49+
"src/engine/camera/CameraSystem.js",
50+
"src/engine/core/Engine.js",
51+
"src/engine/core/FixedTicker.js",
52+
"src/engine/core/FrameClock.js",
53+
"src/engine/core/RuntimeMetrics.js",
54+
"src/engine/events/EventBus.js",
55+
"src/engine/input/ActionInputService.js",
56+
"src/engine/input/GamepadHapticsService.js",
57+
"src/engine/input/GamepadInputAdapter.js",
58+
"src/engine/input/InputMap.js",
59+
"src/engine/input/InputService.js",
60+
"src/engine/input/KeyboardState.js",
61+
"src/engine/input/MouseState.js",
62+
"src/engine/physics/arcadeBody.js",
63+
"src/engine/physics/collision3d.js",
64+
"src/engine/physics/drag.js",
65+
"src/engine/physics/integration3d.js",
66+
"src/engine/physics/scene3d.js",
67+
"src/engine/rendering/CanvasRenderer.js",
68+
"src/engine/rendering/LayeredRenderSystem.js",
69+
"src/engine/scene/Scene.js",
70+
"src/engine/scene/SceneManager.js",
71+
"src/engine/systems/MovementSystem.js",
72+
"src/engine/systems/PhysicsSystem.js"
73+
]
74+
},
75+
"dependencyHydrationHash": "e13166ce3ced2d3e",
76+
"inputHash": "0f5dac5319ea6241",
77+
"lane": "engine-src",
78+
"laneConfigHash": "3d09ab7e47d8bc11",
79+
"laneDefinitionHash": "266a66af3454fc0f",
80+
"manifestHash": "4b09c904c7f073c7",
81+
"ownership": "engine",
82+
"warmStartHash": "3e467919ebe3d492",
83+
"version": 1,
84+
"generatedAt": "2026-05-26T20:21:56.770Z",
85+
"manifestPath": "docs/dev/reports/lane_manifests/engine-src.json",
86+
"sourceManifest": "persistent"
87+
}

0 commit comments

Comments
 (0)