QA-source: objectstack-ai/objectstack#21784 · identity-auth.self-signup-gate · acceptance[3]
A clause of identity-auth.self-signup-gate fails in the ObjectStack 17.7 pre-release checklist run objectstack-ai/objectstack#21784 (framework subject 316be321e, console pin 2e818d0b51ec). An independent verifier (VF1, RUNNER rule 7) confirmed it: low (courtesy layer; the server refuses sign-up and /register bounces to login). It predates the 17.6.0 console pin 31971ff1e; no open duplicate was found. Owner: objectui.
Reproduction
- Boot with
OS_DISABLE_SIGNUP=true; GET /api/v1/auth/config → emailPassword.disableSignUp: true.
- Fresh browser context →
/_console/login; wait for network idle plus a few seconds.
- Expected: no register link. Actual:
a[href="/_console/register"] "Sign up". Seen in 3 fresh contexts across 2 boots. The page did read the config (the dev-admin banner from the same call rendered).
Mechanism
objectui apps/console/src/pages/auth/LoginPage.tsx:299 passes registerUrl={signUpDisabled ? undefined : registerUrl}; LoginFormCard forwards it; packages/auth/src/LoginForm.tsx:147 destructures registerUrl = '/register', so undefined triggers the default. Present at objectui HEAD 31971ff1e too.
Done when
A disabled sign-up renders no register link (pass null, or drop the default).
Generated by Claude Code
QA-source: objectstack-ai/objectstack#21784 · identity-auth.self-signup-gate · acceptance[3]
A clause of
identity-auth.self-signup-gatefails in the ObjectStack 17.7 pre-release checklist run objectstack-ai/objectstack#21784 (framework subject316be321e, console pin2e818d0b51ec). An independent verifier (VF1, RUNNER rule 7) confirmed it: low (courtesy layer; the server refuses sign-up and/registerbounces to login). It predates the 17.6.0 console pin31971ff1e; no open duplicate was found. Owner: objectui.Reproduction
OS_DISABLE_SIGNUP=true;GET /api/v1/auth/config→emailPassword.disableSignUp: true./_console/login; wait for network idle plus a few seconds.a[href="/_console/register"]"Sign up". Seen in 3 fresh contexts across 2 boots. The page did read the config (the dev-admin banner from the same call rendered).Mechanism
objectui
apps/console/src/pages/auth/LoginPage.tsx:299passesregisterUrl={signUpDisabled ? undefined : registerUrl};LoginFormCardforwards it;packages/auth/src/LoginForm.tsx:147destructuresregisterUrl = '/register', soundefinedtriggers the default. Present at objectui HEAD31971ff1etoo.Done when
A disabled sign-up renders no register link (pass
null, or drop the default).Generated by Claude Code