diff --git a/CURRENT_CHECKPOINT.md b/CURRENT_CHECKPOINT.md index 001397ea..c42a8bbe 100644 --- a/CURRENT_CHECKPOINT.md +++ b/CURRENT_CHECKPOINT.md @@ -6,7 +6,7 @@ Active implementation plan: `docs/runtime/p9_5/H5_CACHE_ACCELERATION_PLAN.md` Project process protocol: `docs/runtime/PLAN_DRIVEN_DEVELOPMENT_PROTOCOL.md` Post-P9.1 roadmap: `docs/runtime/p9_1/POST_P9_1_ROADMAP.md` Active ledger: `docs/reviews/PHASE9_GODOT_VERTICAL_SLICE_LEDGER.md` -Current implementation step: `P9.5-H5-CACHE-STEP-1 IN_PROGRESS` +Current implementation step: `P9.5 H5 CACHE ACCELERATION COMPLETE` Current pushed runtime baseline: `7e1fc75` Current pushed test/evidence source: `7e5d82a` P9.1 TaskGraph batch: `abg-p9-1-continuous-development-01` @@ -38,15 +38,18 @@ P9.0R10 baseline: `d8b359a12f5641257c549894a8114245fa987962` P9.0R10 product preview source: `41204acafa911a505f5b24a493aa032983e706d1` P9.0R10 Gallery item: `gHS8jEZdGa2x` P9.2R Gallery item: `KITQfwLYLK6R` -Stage: `P9_5_H5_CACHE_ACCELERATION_ACTIVE` +Stage: `P9_5_H5_REPEAT_LOAD_ACCELERATION_READY` -The Owner reports that reopening the current P9.5 H5 repeatedly downloads the -Godot runtime. Remote diagnostics confirm that the approximately 58 MB -WASM/PCK payload has only a 300-second private cache, no ETag/304 path and no -compression. `ABG-P9.5-H5-CACHE` now owns only immutable runtime-file caching, -conditional requests and a separate first-load assessment. Gameplay, assets, -the existing Gallery item, native packaging, release and other games remain -frozen. +The Owner-reported H5 repeat-download problem is repaired without changing the +Gallery item or signed URL. Runtime assets now use a one-year private immutable +cache with ETag/304, while selective gzip reduces the principal first-load +transfer from `57,909,159` to `29,417,719` bytes. An isolated Chrome 151 cold +profile renders the real Chinese Title, and a repeat open returns the identical +frame in five seconds. Full facts are in `docs/runtime/p9_5/H5_DELIVERY.md`. +Gameplay, assets, native packaging, release and other games remain frozen. +Exact legal terminal: `Aetherbound Guild P9.5 H5 repeat-load acceleration +ready`. Shortest next action: Owner reopens the existing link twice on the same +phone and reports the second-open wait plus the earliest gameplay confusion. P9.5 is the active bounded continuation from P9.4. After either Crosswind return, Bell Breach telegraphs one line push beside two existing equipment diff --git a/docs/goals/PHASE9_5_H5_CACHE_ACCELERATION_GOAL.md b/docs/goals/PHASE9_5_H5_CACHE_ACCELERATION_GOAL.md index 892f3191..f1dee0f6 100644 --- a/docs/goals/PHASE9_5_H5_CACHE_ACCELERATION_GOAL.md +++ b/docs/goals/PHASE9_5_H5_CACHE_ACCELERATION_GOAL.md @@ -27,3 +27,18 @@ the byte reduction is material and the Godot runtime still loads correctly. - Gallery item identity, access control and the existing signed Owner URL. - Native packaging, TestFlight, devices, stores, release and other games. - No claim that a browser cache proves physical-device or human acceptance. + +## Completion + +- The existing Gallery item and signed Owner URL remain unchanged. +- Runtime JS/PCK/WASM now return a one-year private immutable cache policy, + stable representation ETags and conditional `304` responses. +- Runtime publication now creates gzip sidecars only when they save at least + five percent. P9.5 JS and WASM use gzip; the effectively incompressible PCK + stays byte-identical and uncompressed. +- Principal first-load transfer falls from `57,909,159` to `29,417,719` bytes + for gzip-capable browsers, a `49.2%` reduction. +- A fresh isolated Chrome profile renders the real `844x390` Chinese Title; + reopening with that profile returns the byte-identical frame in five seconds. +- Exact legal terminal: `Aetherbound Guild P9.5 H5 repeat-load acceleration + ready`. diff --git a/docs/reviews/PHASE9_GODOT_VERTICAL_SLICE_LEDGER.md b/docs/reviews/PHASE9_GODOT_VERTICAL_SLICE_LEDGER.md index a520cfa1..a78cf4e1 100644 --- a/docs/reviews/PHASE9_GODOT_VERTICAL_SLICE_LEDGER.md +++ b/docs/reviews/PHASE9_GODOT_VERTICAL_SLICE_LEDGER.md @@ -77,3 +77,4 @@ separate. | 2026-08-14 | P9.5 Step 3 source `7e1fc75`; `abg-p95-7e1fc75-step3-r1` | `P9_5_STEP_3_THIRD_CYCLE_RUNTIME_COMPLETE` | Four complete normal-render routes use 24 parsed ScreenTouch events, fallback/direct zero. Frontpin visibly holds the line; Open-Line shows the lead pushed, Farstring moving ahead, a named early shot and a projectile to the rear RiftSpitter. All routes retain exact `91/88/145/124` ticks and HP, causal result text, one reward/XP settlement and the changed Hall. Twelve `844x390` frames cover effect/result/return for all paths. P9.5 Hall/domain and P9.3/P9.4 runtime regressions pass strict-clean. Inventory SHA-256 is `e5a1a777f5c4d5ed44c79150d81ce8c3a8f4fdfeb8c4d22fc1d18e01b265affb`. Step 4 owns pacing and H5 only. | | 2026-08-14 | P9.5 test/export source `7e5d82a`; Gallery `YbptaxfasrjY` | `P9_5_EQUIPMENT_GROWTH_CANDIDATE_READY` | Five profiles cover all four Company/item combinations with 40 explicit timestamps, `13.00s` longest no-decision interval, exact projections, starvation zero and invalid mutations zero. Profile inventory SHA-256 is `4046981f7ccbe3d642e9f3fb419cdae3bc5169340a89b2fcc37dc62b184e906a`. A fresh Git archive produces nine strict-clean runtime-only Web files; PCK forbidden paths are zero and both equipment resources are present. Gallery health/entry are 200, HTML/JS are remote byte-identical, all HEAD MIME/length facts match and Gallery published copies equal local export hashes. This runner's long PCK body curl lost its controlling session and Range was not supported, so complete external browser fetch/cold-start remains open rather than reused. Exact legal terminal: `Aetherbound Guild P9.5 equipment and individual growth candidate ready`. | | 2026-08-14 | Owner H5 repeat-load report; baseline `5e15dbd` | `P9_5_H5_CACHE_ACCELERATION_ACTIVE` | Public HTTPS diagnostics show that the immutable P9.5 runtime serves about 58 MB of WASM/PCK with only `private, max-age=300`, no ETag/304 response and no compression. A bounded delivery task now owns long-lived runtime-asset caching and conditional requests, followed by a separate first-load compression assessment. Game behavior, evidence, Gallery identity, native packaging, release and other games remain frozen. | +| 2026-08-14 | Existing Gallery `YbptaxfasrjY`; cache/gzip delivery repair | `P9_5_H5_REPEAT_LOAD_ACCELERATION_READY` | The unchanged signed item now returns one-year private immutable caching, representation ETags and conditional 304 for runtime assets. Deterministic sidecars gzip JS from 315,759 to 78,637 bytes and WASM from 37,685,705 to 9,431,387; PCK stays identity because gzip saves only 0.6%. Principal first-load transfer falls 49.2% from 57,909,159 to 29,417,719 bytes. Public headers and decoded WASM SHA pass. An isolated Chrome 151 cold profile renders the real 844x390 Chinese Title; repeat open produces the identical frame in five seconds. Cookie/profile cleanup is complete. Human phone timing, gameplay understanding/fun/listening, device, packaging and release remain open. Exact legal terminal: `Aetherbound Guild P9.5 H5 repeat-load acceleration ready`. | diff --git a/docs/runtime/p9_5/H5_CACHE_ACCELERATION_PLAN.md b/docs/runtime/p9_5/H5_CACHE_ACCELERATION_PLAN.md index 6d480b93..51d3a5c1 100644 --- a/docs/runtime/p9_5/H5_CACHE_ACCELERATION_PLAN.md +++ b/docs/runtime/p9_5/H5_CACHE_ACCELERATION_PLAN.md @@ -1,7 +1,7 @@ # P9.5 H5 Cache Acceleration Plan -> Status: `IN_PROGRESS` -> Active step: `P9.5-H5-CACHE-STEP-1` +> Status: `COMPLETE` +> Active step: `NONE` > Baseline: `5e15dbd` > Goal: `docs/goals/PHASE9_5_H5_CACHE_ACCELERATION_GOAL.md` > Contract: `docs/runtime/p9_5/H5_CACHE_ACCELERATION_CONTRACT.md` @@ -11,10 +11,10 @@ | Step | Status | Outcome | Gate | |---|---|---|---| | P9.5-H5-CACHE-STEP-0 Contract | `COMPLETE` | Repeat-load and first-load work are separated without changing the game. | Goal, contract, plan, checkpoint and ledger agree. | -| P9.5-H5-CACHE-STEP-1 Immutable runtime caching | `IN_PROGRESS` | Reopening the same H5 version reuses WASM/PCK/JS locally. | Long cache headers, stable ETag, 304, auth and public HTTPS checks pass. | -| P9.5-H5-CACHE-STEP-2 First-load assessment | `PENDING` | The remaining first-open cost is measured and the shortest safe improvement is recorded. | Compression ratios and browser compatibility are measured; enable only when verified. | +| P9.5-H5-CACHE-STEP-1 Immutable runtime caching | `COMPLETE` | Reopening the same H5 version reuses WASM/PCK/JS locally. | Long cache headers, stable ETag, 304, auth and public HTTPS checks pass. | +| P9.5-H5-CACHE-STEP-2 First-load assessment | `COMPLETE` | Gzip-capable first opens transfer about half the principal payload. | Selective precompression, public response headers, decompressed hash and isolated Chrome launch pass. | -## Active Step Contract +## Completed Step Contract ```text ID: P9.5-H5-CACHE-STEP-1 @@ -31,12 +31,13 @@ EVIDENCE LEVEL EXPECTED: remote H5 delivery availability only. COMMIT BOUNDARY: pushed task activation, then pushed verified closure. LEGAL TERMINAL: Aetherbound Guild P9.5 H5 repeat-load acceleration ready, or redesign required at the earliest delivery boundary. -NEXT STEP: Measure safe first-load compression without changing the game. +NEXT STEP: Owner reopens the existing signed link twice on the same phone and + reports the repeat-open wait plus the earliest gameplay confusion. ``` ## Issue Register | ID | Status | Finding | |---|---|---| -| H5C-I01 | `ACTIVE` | Runtime resources expire after 300 seconds and have no conditional response path, causing full repeat downloads. | -| H5C-I02 | `OPEN` | First load transfers about 58 MB without compression; benefit and compatibility need separate measurement. | +| H5C-I01 | `RESOLVED` | Runtime JS/PCK/WASM use a one-year immutable cache with ETag and 304. | +| H5C-I02 | `RESOLVED` | Selective gzip cuts principal first-load transfer from 57.9 MB to 29.4 MB; PCK remains identity because gzip saves only 0.6%. | diff --git a/docs/runtime/p9_5/H5_DELIVERY.md b/docs/runtime/p9_5/H5_DELIVERY.md index 8aa48beb..956fc98c 100644 --- a/docs/runtime/p9_5/H5_DELIVERY.md +++ b/docs/runtime/p9_5/H5_DELIVERY.md @@ -55,3 +55,49 @@ Refresh before each comparison: Human understanding, item-choice quality, fun/continuation, listening, save/resume, physical device, native packaging, stores and release remain open. + +## Delivery Acceleration + +The Owner-reported repeated-download problem was confirmed on 2026-08-14. The +Gallery previously returned only `private, max-age=300` and no ETag, so opening +the same immutable item after five minutes transferred the runtime again. + +The existing item and signed URL are unchanged. Runtime JS, PCK, WASM and +worklets now return: + +```text +Cache-Control: private, max-age=31536000, immutable +ETag: +Vary: Accept-Encoding +``` + +Matching `If-None-Match` and `If-Modified-Since` requests return `304` without +a body. HTML remains on the shorter 300-second cache. Unauthorized file +requests still receive only the Gallery login response. + +The Gallery publisher now creates deterministic gzip sidecars for runtime +files only when compression saves at least five percent. The current public +responses are: + +| File | Identity bytes | Transferred bytes | Encoding | +|---|---:|---:|---| +| `index.html` | 5,915 | 5,915 | identity | +| `index.js` | 315,759 | 78,637 | gzip | +| `index.pck` | 19,901,780 | 19,901,780 | identity | +| `index.wasm` | 37,685,705 | 9,431,387 | gzip | + +The principal transfer falls from `57,909,159` to `29,417,719` bytes, or +`49.2%`. PCK gzip was intentionally omitted because it saved only `0.6%`. +Public gzip response headers pass, and a complete decoded WASM body retains +SHA-256 `99962b29677e42f3ba0258bd90fdc52ad90295954c4473e816ad02cfe5ff1d4f`. + +An isolated Chrome 151 cold profile loaded the signed public URL and rendered +the real Chinese Title at `844x390`. Reopening with the same cache produced the +same frame in five seconds; both screenshots have SHA-256 +`67a754541846b432cd4124dd58b71b7ea4944d9114c81e76abdc5692b31dae59`. +Credential-bearing Cookie files and the 153 MB browser profile were deleted; +the two non-secret screenshots remain under +`/private/tmp/abg-p95-h5-cache-chrome-r1/`. + +This proves browser delivery and repeat-load behavior, not physical iPhone +performance or Owner play acceptance.