Skip to content

Commit 8bb2d5e

Browse files
committed
test(plugin-security): the dependency-fault control's delegator is a member of the organization its agent runs in
The control cell "a delegator that resolves leaves the principal layer neutral" runs on a walled stack (org scoping → isolated) whose delegator had no membership row, so the explanation now answers the prologue's D10 organization-membership refusal there. Seed the membership, so the cell measures what it names. Claude-Session: https://claude.ai/code/session_01DPxprKQnzCbhdMTXUGRu31 Co-authored-by: Claude <noreply@anthropic.com>
1 parent c631ec4 commit 8bb2d5e

1 file changed

Lines changed: 5 additions & 0 deletions

File tree

‎packages/plugins/plugin-security/src/explain-dependency-fault.test.ts‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,11 @@ function makeEngine(schema: Record<string, unknown>, storeFaults: ReadonlyMap<st
120120
sys_record_share: [{ ...READ_SHARE }],
121121
// The delegator exists, so `resolveDelegatorContext` reaches the grant reads.
122122
sys_user: [{ id: U_REPORTER, email: 'reporter@example.com' }],
123+
// [#25107] …and is a member of the organization the agent runs in. This
124+
// stack is walled (org scoping → `isolated`), where a delegator with no
125+
// membership there is refused before its grants matter (ADR-0090 D10), so
126+
// the control below would deny for that reason instead of answering neutral.
127+
sys_member: [{ id: 'mem_reporter_org1', user_id: U_REPORTER, organization_id: 'org1', role: 'member' }],
123128
};
124129
for (const [table, fault] of storeFaults) tables[table] = unavailableTable(fault);
125130
// `$or` / `$and` conjoin WITH their sibling keys, the way a real driver ANDs

0 commit comments

Comments
 (0)