Filed by the triage seat (session session_019kDRpB7D2XzVzkaLp57T5D, R+90) as the half of #14349 that needs no ruling. #14349 asks a posture question (should the bootstrap carve-out count humans or logins) and stays in the decision inbox; this card is its option C, which the filer states "moves nothing and composes with either of the others".
The measured state (from #14349, on a real ObjectQL over better-sqlite3)
13 seeded sys_user rows, zero sys_account rows, default audience posture:
api.signUpEmail(...) → SELF_REGISTRATION_CLOSED (isBootstrapCreation() counts 13 humans, so the carve-out does not fire);- nobody can sign in — there is no
sys_account row at all; - self-registration is refused by the default
invite_only posture; - no administrator exists to issue an invitation.
⇒ Outside development (where the dev-admin seed is hard-gated off by NODE_ENV) the deployment cannot be recovered from inside, and its only symptom is a 401 on credentials nobody has.
What this card asks for, and what it does not
Asks: at kernel:ready, when human sys_user rows exist and no sys_account row does, report it at error level, naming the consequence ("no one can sign in and self-registration is closed — this deployment cannot be recovered from inside") and the remedy (provision an account out of band, or open the audience posture). Route & surface ownership §3: absence must be loud.
⛔ Does not ask for any change to admission semantics, to isBootstrapCreation's population, or to bootstrap-status — those are #14349's question and are ruled by the maintainer, not here. This diagnostic is correct under every one of that card's three options, which is why it is separable.
Grade
pm:queue · priority:p2 · domain:services (packages/plugins/plugin-auth) · type Bug. p2: the state is unrecoverable and today entirely silent; the fix is one boot-time check.
Size/model suggestion: S, opus; the pin is a boot fixture with human rows and no accounts asserting the error line, plus the negative control (an account exists ⇒ silent).
Refs: #14349 (the posture question) · #14157 (the development-lane half, which fixes this for objectstack dev) · #14348 (the promotion-target half).
Filed by the triage seat (session
session_019kDRpB7D2XzVzkaLp57T5D, R+90) as the half of #14349 that needs no ruling. #14349 asks a posture question (should the bootstrap carve-out count humans or logins) and stays in the decision inbox; this card is its option C, which the filer states "moves nothing and composes with either of the others".The measured state (from #14349, on a real
ObjectQLoverbetter-sqlite3)13 seeded
sys_userrows, zerosys_accountrows, default audience posture:api.signUpEmail(...)→SELF_REGISTRATION_CLOSED(isBootstrapCreation()counts 13 humans, so the carve-out does not fire);sys_accountrow at all;invite_onlyposture;⇒ Outside development (where the dev-admin seed is hard-gated off by
NODE_ENV) the deployment cannot be recovered from inside, and its only symptom is a 401 on credentials nobody has.What this card asks for, and what it does not
Asks: at
kernel:ready, when humansys_userrows exist and nosys_accountrow does, report it at error level, naming the consequence ("no one can sign in and self-registration is closed — this deployment cannot be recovered from inside") and the remedy (provision an account out of band, or open the audience posture). Route & surface ownership §3: absence must be loud.⛔ Does not ask for any change to admission semantics, to
isBootstrapCreation's population, or tobootstrap-status— those are #14349's question and are ruled by the maintainer, not here. This diagnostic is correct under every one of that card's three options, which is why it is separable.Grade
pm:queue·priority:p2·domain:services(packages/plugins/plugin-auth) · type Bug. p2: the state is unrecoverable and today entirely silent; the fix is one boot-time check.Size/model suggestion: S,
opus; the pin is a boot fixture with human rows and no accounts asserting the error line, plus the negative control (an account exists ⇒ silent).Refs: #14349 (the posture question) · #14157 (the development-lane half, which fixes this for
objectstack dev) · #14348 (the promotion-target half).