[P3] Hashed assets are not cached long-term as documented #39

Closed
opened 2026-10-27 02:59:42 +00:00 by pedro · 2 comments
Owner

Priority: P3
Type: deployment
Source: project review requested 2026-10-26 (second pass)

Location: public/_headers; docs/DEPLOYMENT.md:50

Problem and evidence

DEPLOYMENT.md says to cache hashed assets long-term, but _headers has no /assets/* rule; the live assets/index-B9WCiLOc.js returns cache-control: public, max-age=14400, must-revalidate. Impact is small because the service worker serves these offline.

Suggested correction

Add /assets/* with Cache-Control: public, max-age=31536000, immutable and check it in the hosted asset check.

Acceptance criteria

Release checks pass; after deployment the hosted check confirms the immutable rule on every hashed asset.

Scope: maintenance of the educational simulator. Preserve historical R1 acceptance and operational-validation limits.

Priority: P3 Type: deployment Source: project review requested 2026-10-26 (second pass) Location: `public/_headers; docs/DEPLOYMENT.md:50` Problem and evidence DEPLOYMENT.md says to cache hashed assets long-term, but `_headers` has no `/assets/*` rule; the live `assets/index-B9WCiLOc.js` returns `cache-control: public, max-age=14400, must-revalidate`. Impact is small because the service worker serves these offline. Suggested correction Add `/assets/*` with `Cache-Control: public, max-age=31536000, immutable` and check it in the hosted asset check. Acceptance criteria Release checks pass; after deployment the hosted check confirms the immutable rule on every hashed asset. Scope: maintenance of the educational simulator. Preserve historical R1 acceptance and operational-validation limits.
Author
Owner

Fixed on maintenance/review-2026-10-27 in 875d42e — PR #40.

/assets/* immutable rule, release check (fails without the rule) and hosted asset check. Hosted confirmation follows the deploy on merge.

Branch verification: pnpm verify 145 tests and release budgets; Chromium/Firefox/WebKit review, replay, compatibility and offline lifecycle checks; CI verify runs #111/#112 pass. Record: docs/MAINTENANCE-2026-10-27.md. Closes on merge of PR #40.

Fixed on `maintenance/review-2026-10-27` in `875d42e` — [PR #40](https://git.guresky.com/pedro/DiveSim/pulls/40). `/assets/*` immutable rule, release check (fails without the rule) and hosted asset check. Hosted confirmation follows the deploy on merge. Branch verification: `pnpm verify` 145 tests and release budgets; Chromium/Firefox/WebKit review, replay, compatibility and offline lifecycle checks; CI verify runs #111/#112 pass. Record: `docs/MAINTENANCE-2026-10-27.md`. Closes on merge of PR #40.
pedro closed this issue 2026-10-27 05:39:05 +00:00
Author
Owner

Hosted confirmation after merging PR #40 (main 37ca650, deploy run #113 succeeded):

  • check-hosted-assets against https://dive.pt3r.dev/: HTML, CSS, deferred chunks and calculation worker are byte-identical to a local build of 37ca650; MIME, security, index revalidation and hashed-asset caching headers pass. /assets/* serves Cache-Control: public, max-age=31536000, immutable.
  • Chromium against production: check-followup-browser (#28, #29, #30, #32, #33, #34, #38) and check-maintenance-browser pass.
Hosted confirmation after merging PR #40 (main `37ca650`, deploy run #113 succeeded): - `check-hosted-assets` against https://dive.pt3r.dev/: HTML, CSS, deferred chunks and calculation worker are byte-identical to a local build of `37ca650`; MIME, security, index revalidation and hashed-asset caching headers pass. `/assets/*` serves `Cache-Control: public, max-age=31536000, immutable`. - Chromium against production: `check-followup-browser` (#28, #29, #30, #32, #33, #34, #38) and `check-maintenance-browser` pass.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: pedro/DiveSim#39
No description provided.