You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Make fresh-worktree e2e turnkey: per-checkout ports, port-squat fail-fast, bootstrap script
- e2e ports are now derived from a hash of the checkout root (42000-45999
blocks) so concurrent worktrees never collide; E2E_*_PORT/URL still override.
- globalsetups fail fast with the squatting PID when a port is taken instead
of silently attaching to a foreign checkout's dev server (the cause of
31-scenario auth-error cascades).
- scripts/bootstrap.ts: one idempotent command for submodules + install +
playwright; scripts/reap-dev-servers.ts kills orphaned dev stacks.
- e2e: bun run ports prints this checkout's derived ports.
- sources-api scenario: align with payload-first OpenAPI results (PR #956
changed the product, the cloud-only scenario was not updated).
- AGENTS.md: fresh-worktree setup + environment gotchas (fish shell, /tmp
scripts, bun.lock conflicts, per-checkout ports).
* Add e2e run summary script + agent notes; format
* Make e2e port claiming atomic: lock port per block, walk past collisions
The hash-derived block was only collision-unlikely (28 checkouts over 400
blocks is birthday-paradox territory), and probe-then-bind raced. Each block
now reserves its last port as a lock held for the suite's lifetime: claimPorts
binds the lock (atomic — two racing suites can't both win), probes the
remaining ports for squatters, and walks forward block-by-block until it owns
a fully free block, publishing the claimed ports via E2E_*_PORT env so test
workers agree. Explicit env pins skip claiming entirely. Verified by squatting
the preferred block's lock+selfhost ports and watching the suite relocate one
block over and pass 17/17.
* bootstrap: vendor submodules opt-in via --forks
Nothing imports from vendor/ at runtime — the forks are consumed as
published npm packages (vendor/README.md is explicit). Forcing the
submodule init in bootstrap taught every fresh worktree a false
dependency. --forks remains for deliberately developing a fork.
0 commit comments