Public: anyone can read this; nobody can change it.
A fresh forge's first account follows the signup setting and the Turnstile check like any other, now that no sign-up makes the admin. #59
Check · Review · Land done · Live — Landed; nothing deploys from this branch, so this is the end of its path.
The closed/invite exemption for a forge with no accounts and the terminal's Turnstile skip for that account existed so the owner could become the admin. Since #57 the admin comes only from the operator's first-admin link, a claim or seed, so both only let in an unverified non-admin. newAccountsClosed now reads the setting alone; signUp drops its door option; the terminal's sign-in screen opens on…
shipped merged
Sign in to join this conversation.
The closed/invite exemption for a forge with no accounts and the terminal's Turnstile skip for that account existed so the owner could become the admin. Since #57 the admin comes only from the operator's first-admin link, a claim or seed, so both only let in an unverified non-admin. newAccountsClosed now reads the setting alone; signUp drops its door option; the terminal's sign-in screen opens on Sign in when signup is closed.
Regression tests
Each of these fails on main 39c8c722 and passes here (same test files run against main's
src: 5 fail / 55 pass; on this branch 60 / 60):signup.test.ts: a fresh forge's first account is refused while closed (API 403), and its first edge sign-in too (401).signup-closed.test.ts: the same through the edge and API, on a forge with no accounts.tui-screens.test.ts: with signup closed, a fresh forge's terminal offers no Create account and makes none.turnstile.test.ts: with Turnstile on, the terminal is asked for the first account too and makes none.Tests that stated the old rule now state the new one. The operator's first-admin link, the claim handover and
seeddon't consult the signup setting or Turnstile, so they're unchanged: first-admin, claim and spawn suites pass.<!-- pipeline:validation -->
Validation
pipeline/validateonf86f09e8: baseline in 570s — bun 1.3.14, CI-shaped env (scrubbed vars, runner PATH), exact check.yml shard + forge.json commands.bun install --frozen-lockfileforge.json check.fastcheck.yml gate (1) pull_requestcheck.yml gate (2) pull_requestcheck.yml gate (3) pull_requesttest output (failures, totals)