Uh oh!
There was an error while loading. Please reload this page.
test(plugin-auth): import the registered object set from the manifest in five harnesses - #14844
Conversation
… in five harnesses Five plugin-auth harnesses re-spelled the objects a deployment mounting plugin-auth registers, instead of importing `authIdentityObjects` from `src/manifest.ts`. Every hand list had drifted below the manifest, so each harness booted an engine missing tables the runtime registers. Follows the import pattern established by #14751 on the two SCIM harnesses. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AUF1NoViznQK32gqpK8wS8
📓 Docs Drift CheckNothing in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 0 changed package(s)), so this run has no opinion about the docs. What this run could not see
Coarse fallback — 0 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
os-sales
commented
Sep 3, 2026
Landing — PM seat Verified before arming, at job level rather than from an aggregate:
The auto-merge confirmation echoes Generated by Claude Code |
Fixes#14756
Five plugin-auth harnesses hand-wrote the set of objects a deployment mounting
plugin-auth registers, instead of importing
authIdentityObjectsfromsrc/manifest.ts. Each hand list had drifted below the manifest, so eachharness booted an engine missing tables the runtime registers. This converts
all five to the import pattern PR #14751 established on the two SCIM harnesses.
Population, re-derived on the tree
git grep -ln AUTH_OBJECTSfinds six harnesses; the two SCIM ones were alreadyconverted by #14751 (merged as
d2bdab2d0) and are left untouched here. Thefive this card owns, measured against
authIdentityObjects(30 objects) byresolving each hand-listed symbol through
@objectstack/platform-objectsandcomparing the resulting object NAMES:
audience-bootstrap-seam.test.tsdev-admin-seed-credential-gate.test.tssso-register-platform-admin-gate.test.tswalled-owner-operator-stamp.test.tscredential-at-rest-posture.test.tsNo hand list contained an object the manifest does not (0 extras anywhere), so
every conversion is a strict widening.
Two corrections to the triage note on the card, both measured:
credential-at-rest-posture.test.tswas described as "complete today". It isnot: its list is missing 8 of the 30 objects, three of them OAuth ones —
sys_oauth_client_assertion,sys_oauth_client_resource,sys_oauth_resource— plussys_api_key,sys_device_code,sys_sso_provider,sys_two_factor,sys_user_preference. Converting it isa real widening, not just a spelling change.
sso-register-platform-admin-gate.test.tshad noAUTH_OBJECTSconstant atall. Its list was a local
const objectsinsidebootEngine(). It is now amodule-scope
AUTH_OBJECTS = authIdentityObjects, matching the other four.Non-vacuity: the object set really grew
Booting the same engine shape
bootEngine()uses (ObjectQL +driver-sql+better-sqlite3
:memory:), once with the old 9-object hand list and once withauthIdentityObjects, then asking the driver to read four tables:ERROR-line disposition
Of the five, only
sso-register-platform-admin-gate.test.tsemitted driverDATABASE_ERRORlines on a green run. Tallied by table, before and after:authIdentityObjects?sys_jwkssys_positionsys_user_positionThe only line that disappeared is the
sys_jwksone, and it disappearedbecause
SysJwksis inauthIdentityObjectsand is therefore now registeredand its table created — the intended effect. The
sys_positionandsys_user_positionlines are unchanged in count: those objects are not in theauth identity manifest, so this change cannot and does not touch them.
No
sys_oauth_access_tokenERROR line appears in any of these five harnesses,before or after, so nothing here touches the back-channel planner question in
#14615 arm 2 — that arm stays fenced and untouched by this PR.
Tests
All five files, before and after (
pnpm --filter @objectstack/plugin-auth exec vitest run --maxWorkers=2 src/NAME.test.ts):audience-bootstrap-seamTests 6 passed (6)Tests 6 passed (6)dev-admin-seed-credential-gateTests 15 passed (15)Tests 15 passed (15)sso-register-platform-admin-gateTests 4 passed (4)Tests 4 passed (4)walled-owner-operator-stampTests 28 passed (28)Tests 28 passed (28)credential-at-rest-postureTests 5 passed (5)Tests 5 passed (5)Whole package, at
0b6a065a2:pnpm --filter @objectstack/plugin-auth typecheck— exit 0. Its test layer iscompiled (verified with
tsc --listFiles -p tsconfig.test.json: all five editedfiles present, 1 hit each) and the shrink-only ledger is unmoved:
check:test-typecheck: OK ... 10 file(s) / 94 error(s) / 23 pinned signature(s),none of the 94 in an edited file.
pnpm lint(eslint . --no-inline-config, whole repo) — exit 0, no output.Gates
Derived at
0b6a065a2withnode scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack(27 commands). 24 green. The other three exit 3, and each says in its own verdict
text that nothing was measured because the full workspace
dist/is absentlocally —
check-test-completeness("Nothing was measured"),check:dual-build-cjs-loads("PREREQUISITE NOT MET ... This is NOT a pass"),check:type-check-debt("--re-measure cannot run"). CI builds the closure andruns them for real.
check:nul-bytesgreen (8070 files) and a control-bytescan over the five edited files found nothing.
check-system-context-censusandcheck-affected-docsare both green after theline-number shifts this diff causes in the five files.
Scope
Test-only; it imports an existing live export (
manifest.ts:49). No packagepublishes anything new, so this carries the
skip-changesetlabel rather than achangeset. The two SCIM harnesses (
scim-deactivation-reconcile-user.test.ts,scim-transaction-scope.test.ts) are not modified here and nothing was pushedto #14751.
🤖 Generated with Claude Code
https://claude.ai/code/session_01AUF1NoViznQK32gqpK8wS8
Generated by Claude Code