|
5 | 5 | * `getReadableFields`. |
6 | 6 | * |
7 | 7 | * The two differ in exactly one place: what a caller resolving to ZERO |
8 | | - * permission sets gets. On the DATA plane, falling open is the drift-free |
9 | | - * answer — the engine middleware skips its whole gate for such a caller, and |
10 | | - * reporting a narrowing the data path would not enforce is its own kind of |
11 | | - * drift. On the METADATA plane the question is disclosure, and D7 rules that a |
| 8 | + * permission sets gets. On the DATA plane `getReadableFields` keeps its |
| 9 | + * fall-open answer, written when the engine middleware skipped its whole gate |
| 10 | + * for such a caller (the middleware now refuses it: ADR-0056 D2's deny |
| 11 | + * baseline at object admission, and ADR-0096 D5 outright for a principal-less |
| 12 | + * one). On the METADATA plane the question is disclosure, and D7 rules that a |
12 | 13 | * guest/public deployment's schema exposure must be a deliberate |
13 | 14 | * permission-set decision rather than an accidental everything-default. So the |
14 | 15 | * zero-set caller goes through the same fallback resolution |
@@ -81,7 +82,8 @@ describe('[ADR-0106 D7] SecurityPlugin.getMetadataReadableFields', () => { |
81 | 82 | const dataPlane = await plugin.getReadableFields('deal', context); |
82 | 83 | const metadataPlane = await plugin.getMetadataReadableFields('deal', context); |
83 | 84 |
|
84 | | - // The data plane keeps its middleware-mirroring fall-open — unchanged. |
| 85 | + // The data plane keeps its fall-open answer — unchanged (the middleware it |
| 86 | + // once mirrored refuses this principal-less caller since ADR-0096 D5). |
85 | 87 | expect(dataPlane).toEqual(['id', 'name', 'secret']); |
86 | 88 | // The metadata plane does not. |
87 | 89 | expect(metadataPlane).toEqual(['id', 'name']); |
|
0 commit comments