Skip to content

[finding] Walled boot requires OS_PLATFORM_OWNER_EMAIL but not a verification path — with #11343 landed, an owner with no way to verify is never elevated #11640

Description

@os-sam

Filed unassigned by the domain:services dev seat working #11343 (PR #11639), as an out-of-scope observation for triage. ⛔ Not claimed; no severity judgment offered.

Observation

#11343's ruled fix makes walled platform-admin elevation require a verified owner-email match, refusing loudly (walled_owner_not_verified) and never falling back — the same fail-closed direction as the existing walled_owner_email_undeclared refusal. That refusal is transient only when the deployment has some path to verification:

  • an email transport, so the verification link can be sent (auth-manager.ts wires better-auth's emailVerification block only when emailVerification or emailService config is present), or
  • a trusted SSO provider, which marks the account verified at insert.

A walled deployment with neither now has a declared owner who registers, is refused (correctly — the string alone proves nothing), and has no in-product way to ever satisfy the condition. The warn line the refusal prints names this remedy, but nothing checks it at boot.

The question for triage

Walled boot already refuses to start when OS_PLATFORM_OWNER_EMAIL is undeclared (plugin-auth init()), on the reasoning that a walled posture without an identifiable owner is a misconfiguration. Should the same boot-time check (refuse, or at least a loud named warning) cover "walled posture with no verification path configured"? The alternative is the status quo: the gap only surfaces as the elevation-time warn after the owner has already registered and cannot proceed.

No direction is proposed here — whether this is a boot refusal, a boot warning, or accepted operator responsibility changes walled deployment requirements, which is not a dev-seat call.

Refs: #11343 · PR #11639 (the elevation fix whose fail-closed refusal makes this gap visible)


Generated by Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions