ci(site): record the /demo replay in the site build instead of committing it #192

Merged
ryangr0 merged 1 commit from ryangr0/site-record-demo-replay-at-build into development 2026-10-04 08:38:33 +00:00 AGit
Owner

The /demo replay (apps/site/replay/, about 900 KB of generated JSON) is no longer committed. The site build records it from the same checkout, and every Unfold release candidate now redeploys the site, so /demo follows the latest released Vloer.

Why: the saved recording conflicted between every two open PRs that touched Vloer (#172 most recently), and a Vloer change failed verify until someone re-recorded it and made a separate site commit. The recording is deterministic (fixed clock, masked ids), so it is a build output, not source.

What changed

  • apps/site build and demo:build run Vloer's recorder first; apps/site/replay/ is gitignored and deleted from the tree.
  • verify: the demo-replay group and npm run replay:check are gone. The site group's inputs now include Vloer's src, examples, recorder and package.json. The recorder's existing check still fails the build when Vloer calls an /api/ path the replay neither answers nor refuses.
  • on_release_published.yml: site-release-tag also accepts unfold-v0.x.y-rc.N. site-deploy installs Vloer's runtime dependencies first (npm --prefix ../vloer ci --omit=dev, which installs only ws).
  • mise run demo-replay-conformance now depends on demo-record.
  • ADR-0012 gets a dated entry: an Unfold release candidate now redeploys the site. This replaces the earlier rule that it must not. ADR-0015 (proposed) is updated to match. Docs: site deploy guide, local demo, Vloer demo page, CI page, README.

For the owner to confirm: an Unfold release redeploys the whole site from its own tag. That includes site commits that did not release, such as chore(site) or docs(site). Two releases from one push deploy twice; the last one wins.

Verified

  • mise run verify: all gates passed.
  • mise run docs-check and mise run release-check (40 tests, including the updated site-deploy routing test) passed.
  • mise run demo-replay-conformance passed: 20 views, zero unmatched requests.
  • The deploy path was tested from a clean clone: pnpm install --frozen-lockfile, npm --prefix ../vloer ci --omit=dev, pnpm build.

Follow-ups, not in this PR: apps/site/src/data/demo-timeline.json and the demo video can move the same way. The timeline is imported by Astro components and tests, so it needs a pre-typecheck step.

After this merges, #172 drops its re-record commit (the conflict becomes a delete).

🤖 Generated with Claude Code

The `/demo` replay (`apps/site/replay/`, about 900 KB of generated JSON) is no longer committed. The site build records it from the same checkout, and every Unfold release candidate now redeploys the site, so `/demo` follows the latest released Vloer. **Why:** the saved recording conflicted between every two open PRs that touched Vloer (#172 most recently), and a Vloer change failed `verify` until someone re-recorded it and made a separate `site` commit. The recording is deterministic (fixed clock, masked ids), so it is a build output, not source. **What changed** - `apps/site` `build` and `demo:build` run Vloer's recorder first; `apps/site/replay/` is gitignored and deleted from the tree. - `verify`: the `demo-replay` group and `npm run replay:check` are gone. The site group's inputs now include Vloer's `src`, `examples`, recorder and `package.json`. The recorder's existing check still fails the build when Vloer calls an `/api/` path the replay neither answers nor refuses. - `on_release_published.yml`: `site-release-tag` also accepts `unfold-v0.x.y-rc.N`. `site-deploy` installs Vloer's runtime dependencies first (`npm --prefix ../vloer ci --omit=dev`, which installs only `ws`). - `mise run demo-replay-conformance` now depends on `demo-record`. - ADR-0012 gets a dated entry: an Unfold release candidate now redeploys the site. This replaces the earlier rule that it must not. ADR-0015 (proposed) is updated to match. Docs: site deploy guide, local demo, Vloer demo page, CI page, README. **For the owner to confirm:** an Unfold release redeploys the whole site from its own tag. That includes site commits that did not release, such as `chore(site)` or `docs(site)`. Two releases from one push deploy twice; the last one wins. **Verified** - `mise run verify`: all gates passed. - `mise run docs-check` and `mise run release-check` (40 tests, including the updated site-deploy routing test) passed. - `mise run demo-replay-conformance` passed: 20 views, zero unmatched requests. - The deploy path was tested from a clean clone: `pnpm install --frozen-lockfile`, `npm --prefix ../vloer ci --omit=dev`, `pnpm build`. **Follow-ups, not in this PR:** `apps/site/src/data/demo-timeline.json` and the demo video can move the same way. The timeline is imported by Astro components and tests, so it needs a pre-typecheck step. After this merges, #172 drops its re-record commit (the conflict becomes a delete). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
ci(site): record the /demo replay in the site build instead of committing it
Some checks failed
[Workflow] On Pull Request / checks (pull_request) Failing after 8m39s
[Workflow] On Pull Request / release-policy (pull_request) Successful in 2m59s
[Workflow] On Pull Request / warnings (pull_request) Successful in 1s
b3709fe58b
The committed recording conflicted between every two open pull requests
that touched Vloer, and a Vloer change failed verify until someone
re-recorded it. The site build now records the replay from the same
checkout, and every Unfold release candidate redeploys the site so /demo
follows the latest Vloer release. ADR-0012 and ADR-0015 record the change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ryangr0 force-pushed ryangr0/site-record-demo-replay-at-build from b3709fe58b
Some checks failed
[Workflow] On Pull Request / checks (pull_request) Failing after 8m39s
[Workflow] On Pull Request / release-policy (pull_request) Successful in 2m59s
[Workflow] On Pull Request / warnings (pull_request) Successful in 1s
to 5c478e0288
Some checks failed
[Workflow] On Pull Request / ploeg-pin (pull_request) Successful in 39s
[Workflow] On Pull Request / release-policy (pull_request) Successful in 42s
[Workflow] On Pull Request / checks (pull_request) Failing after 5m28s
[Workflow] On Pull Request / warnings (pull_request) Successful in 0s
2026-10-04 06:59:35 +00:00
Compare
ryangr0 force-pushed ryangr0/site-record-demo-replay-at-build from 5c478e0288
Some checks failed
[Workflow] On Pull Request / ploeg-pin (pull_request) Successful in 39s
[Workflow] On Pull Request / release-policy (pull_request) Successful in 42s
[Workflow] On Pull Request / checks (pull_request) Failing after 5m28s
[Workflow] On Pull Request / warnings (pull_request) Successful in 0s
to b10b6c0108
All checks were successful
[Workflow] On Pull Request / ploeg-pin (pull_request) Successful in 37s
[Workflow] On Pull Request / release-policy (pull_request) Successful in 55s
[Workflow] On Pull Request / checks (pull_request) Successful in 8m34s
[Workflow] On Pull Request / warnings (pull_request) Successful in 1s
2026-10-04 07:12:07 +00:00
Compare
ryangr0 merged commit 9f2a5608c2 into development 2026-10-04 08:38:33 +00:00
Sign in to join this conversation.
No reviewers
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
webgrip/unfold!192
No description provided.