Skip to content

fix(signup): name the guest capacity and retry wait in plain words (#260) - #382

Open
irzhywau wants to merge 1 commit into
fix/rustls-0.23.46-advisoriesfrom
fix/260-signup-capacity-messages
Open

irzhywau wants to merge 1 commit into
fix/rustls-0.23.46-advisoriesfrom
fix/260-signup-capacity-messages

Conversation

@irzhywau

Copy link
Copy Markdown
Collaborator

Part of #260. Stacked on #380 (fix/rustls-0.23.46-advisories); merge after #380.

Behavior

  • Runtime marks a full guest store with x-elastos-refusal: guest-capacity, so Home tells "full" from "busy" without reading server text.
  • A full passkey challenge pool names its kind (sign-up or sign-in) and sends Retry-After until its oldest challenge expires (at most 300 s). The fixed 60 s is removed.
  • Home reads Retry-After and the refusal, then shows one plain reason and one next step:
    • Full: "This Home has no space for new accounts right now. Sign in with an existing account, or try again in about 12 hours."
    • Busy sign-up or sign-in: "… is busy right now. Try again in about 4 minutes."
  • A refused completion keeps the created passkey, so a retry replays the same completion.
  • Home module stamps move to home-update-20261014a.

Limits, owner enrollment policy and completion replay stay unchanged.

Checks

  • cargo test -p elastos-identity --lib webauthn: 26 passed
  • cargo test -p elastos-server --lib -- auth_gateway:: passkey_limits:: guest_registration: 93 passed
  • cargo clippy -p elastos-identity -p elastos-server --all-targets -- -D warnings: clean
  • node --test capsules/home/browser/shell-auth.test.mjs: 8 passed
  • scripts/home-shell-auth-gate-smoke.mjs: PASS (guest registration off and on)
  • scripts/home-owner-enrollment-smoke.mjs fails on develop too: it removes only the first import from shell-auth.js. This PR does not change that.

Installed saturation and recovery proof stays open in #260.

)

A full guest store now carries `x-elastos-refusal: guest-capacity`, so Home
can tell it from a busy start budget without reading server text. A full
passkey challenge pool reports its own kind (sign-up or sign-in) and the
time until its oldest challenge expires, instead of a fixed 60 seconds.

Home reads Retry-After and the refusal, then shows one plain reason and one
next step for sign-up and sign-in. A refused completion keeps the created
passkey, so a retry replays the same completion. Home module stamps move to
home-update-20261014a.
@irzhywau irzhywau linked an issue Oct 14, 2026 that may be closed by this pull request
1 of 7 tasks
@irzhywau irzhywau self-assigned this Oct 14, 2026
@irzhywau irzhywau added this to the After 0.8.0 milestone Oct 15, 2026
@andersalm

Copy link
Copy Markdown
Contributor

Review (Codex, checked by OMP) at 1f466fc: request changes, for after 0.8.0.

  • P2: the capacity Retry-After comes from the oldest shared challenge expiry (auth_gateway.rs:4519), which tells an unauthenticated caller another caller's timing; use a public wait independent of other callers.
  • P2: shell-auth.js:1018 can tell a user to wait 12 hours after a refused completion while the challenge expires in 300 s (webauthn.rs:19); give a working restart path and a test that proves eventual success.
  • P3: shell-auth.js:1026 shows 61-90 s as "about a minute"; round up and test the boundaries.

@andersalm andersalm mentioned this pull request Oct 19, 2026
9 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants