[fix] content refs: scenes@format-2 and packs@format-1, never a semver-looking name (#230) - #235
Merged
Merged
Conversation
…r-looking name (#230) - SCENES_BASE default moves scenes@v2 -> scenes@format-2 and PACKS_BASE packs@v1 -> packs@format-1; contentBase() is untouched, so the deploy-time VITE_* override still wins (production keeps VITE_SCENES_BASE=...scenes@main until this release ships) - WHY: jsDelivr parses `v2` as a SEMVER VERSION (`x-jsd-version-type: version`, `cache-control: immutable` for a year), so `git tag -f v2` was a no-op forever and four purges changed nothing -- the Games tab shipped three games while the feed had six. Measured today: a plain TAG named `format-2` (scenes, a5ebe8f) and `format-1` (packs, 03b9568) are reported `x-jsd-version-type: branch` with `s-maxage=43200`, and scenes@format-2/index.json lists all six games (towers, stars-room, football, jam-room, dungeon-realms, untangle). packs@v1 was the identical trap, unexploded only because it had never been retagged, so it moves in the same change - the three games suites' feed fallback follows (game-untangle / game-football / game-dungeon-realms), plus the one packs@v1 asset URL in scripts/author-templates.cjs (sha256-pinned, same bytes at format-1) - tests/unit/contentBase.test.js (4): the override wins with a trailing slash trimmed; an absent override ships the fallback byte-identically; the two consumers' SOURCE literals are the format-N refs; and no shipped fallback names a ref jsDelivr would parse as a version. Counterfactual: scenes@v2 restored in sceneTemplates.js -> 2 of 4 red ("the scenes default is scenes@format-2" and "no shipped fallback names a ref jsDelivr would parse as a semver version"); restored byte-identically -> 4/4 - docs: the SCENES_BASE/PACKS_BASE JSDoc carries the ritual and the measurement; PACKS.md, CLAUDE.md (games-suite line + the #230 gotcha closed) and the e2e skill name the new refs. The scenes/packs READMEs and cloud's .env.deploy.example move in their own PRs (scenes#7, packs#1, cloud#28) - gates: svelte-check 336/47 with byte-identical message lists; vitest 182 (base 178); battery held (see the handover table); build green server-down Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This was referenced Sep 21, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Core half of #230 (production is already unblocked by the cloud
.env.deployVITE_SCENES_BASE=…scenes@mainoverride, which stays until this ships).Measured, not assumed.
format-2(scenes, a5ebe8f) andformat-1(packs, 03b9568) were pushed as plain tags; jsDelivr reports bothx-jsd-version-type: branchwiths-maxage=43200, while@v2/@v1areversion+cache-control: immutable(one year) — which is why a retag ofv2was a no-op forever.scenes@format-2/index.jsonlists all six games.SCENES_BASE→scenes@format-2,PACKS_BASE→packs@format-1;contentBase()untouched, the override still wins.tests/unit/contentBase.test.js(4): override wins / absent = fallback byte-identical / the two consumers' source literals are the format-N refs / no fallback ref matches jsDelivr's version rule. Counterfactual:scenes@v2restored → 2 red.packs@v1asset URL inauthor-templates.cjsfollow.End state, built with NO
VITE_SCENES_BASE: bundle containsscenes@format-2/packs@format-1once each;curlof that index →x-jsd-version-type: branch,games count: 6(towers, stars-room, football, jam-room, dungeon-realms, untangle).Gates: svelte-check 336/47 with byte-identical message lists · vitest 182 (base 178) · held suites: game-untangle 46, game-dungeon-realms 64, game-football 102, templates-modal 45, template-modules 27, packs+sessions-packs 94, contest-starters 27, game-towers 20, game-stars-room 36 — all at or above base · build green server-down.
Companion doc PRs: theprototype-app/scenes#7, theprototype-app/packs#1, theprototype-app/cloud#28.
🤖 Generated with Claude Code