Skip to content

Commit 02580fb

Browse files
os-zhuangclaude
andcommitted
docs(changeset): record the bootstrap-bypass population rule and the verify harness lane
Two facts the audience-posture changeset did not carry: the bootstrap bypass counts non-system HUMANS rather than sys_user rows (so a legacy usr_system row is still a fresh install), and @objectstack/verify's stack.signUp now enters through the invitation carve-out — which a consumer counting their own pending invitations needs to know about. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 3296e30 commit 02580fb

1 file changed

Lines changed: 3 additions & 0 deletions

File tree

‎.changeset/audience-posture-invite-only-default.md‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
---
22
'@objectstack/spec': minor
33
'@objectstack/plugin-auth': minor
4+
'@objectstack/verify': patch
45
---
56

67
feat(spec,plugin-auth)!: one declared audience posture — `invite_only | email_domain | open`, default `invite_only`
@@ -12,5 +13,7 @@ feat(spec,plugin-auth)!: one declared audience posture — `invite_only | email_
1213
- `email_domain` admits only allowlisted domains (`403 EMAIL_DOMAIN_NOT_ALLOWED` otherwise; exact case-insensitive match, subdomains not implied, `+tag` local parts irrelevant). Any self-registration-permitting posture FORCES `requireEmailVerification` on (an explicit `false` beside it is refused at boot) and grants each self-registrant the DECLARED permission set (`sys_user_permission_set`); a declaration that cannot be resolved refuses admission (`403 AUTH_CONFIG_ERROR`) rather than admitting ungranted.
1314
- Operator-driven creation is never posture-gated: admin create-user / bulk import, SCIM provisioning, and JIT through operator-registered identity providers (`oidcProviders`, `@better-auth/sso`) keep working under every posture.
1415
- `/api/v1/auth/config` now serves `features.audiencePosture` and mirrors the forced verification flag; `SELF_REGISTRATION_CLOSED` and `EMAIL_DOMAIN_NOT_ALLOWED` are registered in the ADR-0112 ledger.
16+
- The BOOTSTRAP bypass counts non-system HUMANS, not `sys_user` rows, so a database still carrying the legacy `usr_system` service row is still a fresh install; the same predicate now backs the dev-admin seed's own precondition. The `emailAndPassword.disableSignUp` bootstrap bypass reads it too.
17+
- `@objectstack/verify`: `stack.signUp(...)` seeds a pending `sys_invitation` for the address before signing up, so harness fixtures that mint a second/third identity enter through the invitation carve-out under the new default. Fixtures asserting on their environment's pending invitations should filter by their own `organization_id` (the harness rows carry `org_verify_audience_gate`).
1518

1619
<!-- adr-0087: registered audience-posture-default-invite-only -->

0 commit comments

Comments
 (0)