Skip to content

[finding] @objectstack/verify harness never reads config.permissions — an app's declared isDefault permission set is invisible to bootStack, so dogfood apps cannot test the #5491-prescribed baseline #7296

Description

@os-zhuang

Found and measured during cloud#1219 (the consumer-side fallout of #5491's member_default wildcard removal). Filed unassigned as a finding; the maintainer's cloud#1219 ruling (2026-08-10) names this as the upstream half that must exist for the migration prescription to be testable.

The fact

#5491's Migration section prescribes: "Ship an app default profile. Mark a permission set isDefault: true…". The CLI honors it — packages/cli/src/commands/serve.ts:2008 reads appDefaultPermissionSetName(config.permissions) and passes new SecurityPlugin({ fallbackPermissionSet }).

The verify harness does not: packages/verify/src/harness.ts constructs a vanilla new SecurityPlugin() and never reads config.permissions.

Verified empirically on cloud's apps/ee-group-showcase (cloud#1219): adding definePermissionSet({ isDefault: true, … }) + permissions: to the app changed nothing — the same 6 of 37 acceptance cases still failed at the object gate.

The consequence

Any dogfood app that follows #5491's own migration prescription cannot see its declared baseline take effect under bootStack — the only workaround is hand-constructing a SecurityPlugin in each suite, which is itself the "custom security code" the dogfood posture forbids. The prescribed migration is therefore untestable through the harness that exists to test app postures.

Suggested shape (for triage, not binding)

verify's harness resolves the app default profile the same way serve.ts does — one shared resolution helper, so the two cannot drift. A pin: an app declaring an isDefault set must observe it enforced under bootStack.

Refs: cloud#1219 (measurement + ruling), #5491 / #5492 (the narrowing and its migration prescription), cloud#880 / #3541 (ADR-0105 dogfood posture).

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