Skip to content

ci(e2e): run core in the stack and load pinned drivers from the build farm - #550

Merged
MrYuion merged 4 commits into
e2e/pull-images-each-runfrom
e2e/core-in-stack
Oct 8, 2026
Merged

MrYuion merged 4 commits into
e2e/pull-images-each-runfrom
e2e/core-in-stack

Conversation

@camreeves

Copy link
Copy Markdown
Contributor

What

The e2e stack now runs core, so it can run drivers, and the seed loads two of them from PlaceOS/drivers: Place::Bookings and the new demo calendar it polls (PlaceOS/drivers#639). That is what the workplace home page's availability panel and room check-in bind (Bookings / status), and until now neither could be tested because nothing in the stack ever reported a status.

  • e2e/stack/docker-compose.yml: a core service with its own core-drivers volume. Binaries come from the PlaceOS build farm, the way every deployment's do; E2E_BUILD_URL overrides the farm and CLUSTER_NAME identifies the stack in its logs.
  • e2e/stack/up.sh: core starts after init. It subscribes to the driver and module tables as it starts, and a core that comes up before the migrations exist keeps answering HTTP while never managing a driver again. Found the hard way on the first cold start.
  • e2e/support/drivers/: the pinned driver catalogue (drivers.env.ts), engine API helpers for repositories, drivers, logic modules and module state (drivers.api.ts), and the bring-up step that creates the rows and waits until core holds the binaries (drivers.seed.ts). seed.ts runs it last, so the wait on the farm happens once at bring-up and never inside a spec's timeout.
  • Docs: e2e/README.md, the runner's outbound host list in SELF_HOSTED_RUNNER.md, the workflow comment.

Why pin a commit

The farm keys a binary on repository, branch, commit, file and CPU architecture, and compiles a key it has not seen on the first request. Pinned, that is one compile per architecture ever (both are already built for the pinned commit: the Intel runner downloads, it does not wait). HEAD would make core force a rebuild on every bring-up. To run the suite against a drivers branch, set E2E_DRIVERS_URI, E2E_DRIVERS_BRANCH and E2E_DRIVERS_COMMIT before up.sh.

Until PlaceOS/drivers#639 merges the pin points at its branch. After it merges, drivers.env.ts needs branch: 'master' and the squash commit; that is a two-line change and this PR should not merge before it is made.

What uses it

On #497 (Sharmila's branch), room.seed.ts now attaches a Calendar and a Bookings module to every seeded room and waits for the status, up.sh runs it at bring-up, and the HOME-10 guard is lifted: the panel lists the seeded room and its button opens the booking modal, which is the whole chain working (driver process, redis, the rest-api websocket, the app). ROOM-23 (room check-in) binds the same module and is now only unwritten rather than blocked.

Verified

  • Local cold start on Apple Silicon: up.sh --fresh brings core up, the seed creates both driver rows, core fetches the binaries from the farm (drivers_place_bookings_635d0a1_arm64, drivers_place_demo_calendar_635d0a1_arm64 in the volume), and 12 rooms get their modules reporting free in 45 s.
  • HOME-10 passes 2 of 2 on that stack. The full workplace suite on the same stack: 130 pass, 2 flaky, 2 fail, 6 skipped, and neither failure involves core (a parking seeder race that creates duplicate spaces, and a recurring spec whose day window is built from the UTC clock while its booking is anchored to the Sydney date; both are written up on test(e2e): workplace and concierge [2026-09-18] #497). Concierge: 46 pass, 2 fail for the same kind of reason (no workplace dev server, a booking at 18:00 "today" already over at 23:13 UTC).
  • On the runner: https://github.com/PlaceOS/user-interfaces/actions/runs/37700725296 (this branch, develop's specs) brings the stack up with core, loads both drivers for amd64 in about four minutes on its link, and passes 14 of 14. The run before it (37700013987) is what found the row read waiting on core's download.

Stacked on #549 (same bring-up script); the base moves to develop when that merges.

… farm

The e2e stack had no core, so nothing in it could run a driver and the
specs that bind module state (the home availability panel, room check-in)
could only be guarded. core is now part of the stack, started after init
has created the tables it subscribes to, with its binaries coming from the
PlaceOS build farm the way every deployment's do.

The seed creates a repository row and driver rows for Place::Bookings and
the demo calendar (PlaceOS/drivers#639), pinned to a commit so the farm
builds each CPU architecture once, and waits until core holds the
binaries before bring-up returns. Helpers for logic modules and module
state go with it, for the specs that attach the drivers to rooms.

The runner needs build.placeos.run and the drivers S3 bucket reachable.
@vercel

vercel Bot commented Oct 7, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
frontend-templates Ignored Ignored Preview Oct 8, 2026 2:39am UTC

- Move the drivers repository row to the configured uri and branch.
- Replace a room's module from an earlier driver instead of adding a second one.
- Retry /compiled on network errors, and ignore build output left by an earlier attempt.
- Re-check the search-backed driver listing before creating a row.
- Log a warning when drivers do not load, so a build farm outage does not fail every spec.
- Share the listing helpers through e2e/support/api.ts and type the rows.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@vercel

vercel Bot commented Oct 8, 2026

Copy link
Copy Markdown

Deployment failed for project frontend-templates with the following error:

Resource is limited - try again in 24 hours (more than 100, code: "api-deployments-free-per-day").

Learn More: https://vercel.com/placeos?upgradeToPro=build-rate-limit

# Conflicts:
#	.github/workflows/e2e-advisory.yml
#	e2e/README.md
#	e2e/stack/SELF_HOSTED_RUNNER.md
@MrYuion
MrYuion merged commit d08058f into e2e/pull-images-each-run Oct 8, 2026
1 of 2 checks passed
@MrYuion
MrYuion deleted the e2e/core-in-stack branch October 8, 2026 02:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants