You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(core,plugin-auth,plugin-security): every OS_PLATFORM_OWNER_EMAIL reader asks the ONE list-aware parser (#13319)
* fix(core,plugin-auth,plugin-security): every OS_PLATFORM_OWNER_EMAIL reader asks the ONE list-aware parser
The variable accepts one address or a comma-separated list (#11663 Choice 2B),
but only the authorization derivation understood the list grammar. The other
six readers held the operator's whole raw value as ONE address, so a configured
list silently matched nobody: no promotion, no operator stamp, no Layer 0 wall
bypass, and a boot diagnostic that printed the raw list where an address
belongs. All fail-closed, all silent.
All six now ask the shared parser in @objectstack/core. Adds
isConfiguredPlatformAdminEmail (the membership half of
matchesConfiguredPlatformAdmin, for readers holding a bare address) and
PlatformAdminEmailConfig.declaredSpellings (the as-typed entries, so nothing
splits the raw value a second time). A census pin enumerates the two remaining
raw readers -- both grammar-independent truthiness checks -- and fails on a
seventh.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012WkdHQwHr2KQmaX7P1BHzi
* fix(plugin-auth): seed the reader-census pin from __dirname, not import.meta
This package is CJS-typed, so under module: NodeNext `import.meta` is TS1470
however well it runs under vitest. The package's own typecheck excludes
**/*.test.ts and never saw it, but the test layer IS in front of tsc through
the @objectstack/plugin-auth TEST_DEBT entry in check-type-check-coverage.mjs
-- a shrink-only ratchet. The import.meta spelling pushed it 94 -> 95 and
turned Type Check / debt ledger red.
__dirname type-checks under the package's own config, is defined at runtime by
vitest's transform, and is a spelling check:cross-package-test-inputs resolves
statically -- which this file needs, since its walk of the sibling
plugin-security tree is an escaping read that gate exists to see. Two sibling
files in this package and one in plugin-security already record the same trap
and the same remedy.
No assertion changes: this is only how the test locates its own directory.
Re-measured: 94 raw tsc errors, equal to the frozen ledger entry.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012WkdHQwHr2KQmaX7P1BHzi
---------
Co-authored-by: Claude <noreply@anthropic.com>
0 commit comments