@consiliency/agent-board-schema 1.27.0 → 1.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -699,6 +699,12 @@ select is(
699
699
  from agg
700
700
  where locks_agents and locks_memberships),
701
701
  array[
702
+ -- Joined this class in #276 (20260909000100). The fleet-ledger gate row-locks the actor's
703
+ -- agents row, so the live grant chokepoint -- and therefore every caller of it -- now locks
704
+ -- both relations. It takes the advisory lock rather than arguing from its ordering: this
705
+ -- assertion deliberately requires mutual exclusion, which survives a lock being added
706
+ -- downstream, and NOT a re-derived order, which does not.
707
+ 'grant_board_role => serialised by the board advisory lock',
702
708
  'onboard_federated_fleet_agent => serialised by the board advisory lock',
703
709
  'signed_grant_board_role => serialised by the board advisory lock'
704
710
  ]::text[],
@@ -5,6 +5,10 @@
5
5
  "signature": "_active_board_membership_id(p_board_id uuid, p_agent_id uuid)",
6
6
  "declares_p_metadata": false
7
7
  },
8
+ {
9
+ "signature": "_actor_fleet_revoked(p_actor_agent_id uuid)",
10
+ "declares_p_metadata": false
11
+ },
8
12
  {
9
13
  "signature": "_addressing_agent_ids_or_raise(p_actor_agent_id uuid, p_recipient_descriptors jsonb)",
10
14
  "declares_p_metadata": false
@@ -17,6 +21,10 @@
17
21
  "signature": "_agent_principal_active(p_agent_id uuid)",
18
22
  "declares_p_metadata": false
19
23
  },
24
+ {
25
+ "signature": "_assert_actor_not_fleet_revoked(p_actor_agent_id uuid, p_operation text)",
26
+ "declares_p_metadata": false
27
+ },
20
28
  {
21
29
  "signature": "_assert_signed_authority_signer_live(p_actor_agent_id uuid, p_gateway_decision jsonb)",
22
30
  "declares_p_metadata": false
@@ -0,0 +1,483 @@
1
+ Parsed test spec with 7 sessions
2
+
3
+ starting permutation: ugrant_begin ugrant_grant revoke_begin revoke_agent ugrant_commit revoke_commit check
4
+ step ugrant_begin:
5
+ BEGIN;
6
+ SET LOCAL ROLE authenticated;
7
+ SET LOCAL "request.jwt.claim.role" = 'authenticated';
8
+ SET LOCAL "request.jwt.claim.sub" = '27700000-0000-0000-0000-0000000000a1';
9
+
10
+ step ugrant_grant:
11
+ select g.role as granted_role
12
+ from agent_board.grant_board_role(
13
+ '27720000-0000-4000-8000-000000000001',
14
+ '27710000-0000-4000-8000-000000000002',
15
+ 'admin') g;
16
+
17
+ granted_role
18
+ ------------
19
+ admin
20
+ (1 row)
21
+
22
+ step revoke_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
23
+ step revoke_agent:
24
+ select subject_kind
25
+ from agent_board.revoke_fleet_subject(
26
+ 'agent',
27
+ '27710000-0000-4000-8000-000000000001',
28
+ '27710000-0000-4000-8000-000000000003',
29
+ 'k276 iso fleet revocation');
30
+ <waiting ...>
31
+ step ugrant_commit: COMMIT;
32
+ step revoke_agent: <... completed>
33
+ subject_kind
34
+ ------------
35
+ agent
36
+ (1 row)
37
+
38
+ step revoke_commit: COMMIT;
39
+ step check:
40
+ select
41
+ (select role from agent_board.board_memberships
42
+ where board_id = '27720000-0000-4000-8000-000000000001'
43
+ and agent_id = '27710000-0000-4000-8000-000000000002') as grantee_role,
44
+ (select status from agent_board.agents
45
+ where id = '27710000-0000-4000-8000-000000000001') as owner_status,
46
+ (select count(*) from agent_board.fleet_revocation_events
47
+ where subject_kind = 'agent'
48
+ and subject_id = '27710000-0000-4000-8000-000000000001') as agent_ledger_rows,
49
+ (select count(*) from agent_board.fleet_machine_agents
50
+ where agent_id = '27710000-0000-4000-8000-000000000001'
51
+ and lifecycle_state = 'active') as active_bindings,
52
+ (select count(*) from agent_board.board_invite_tokens
53
+ where board_id = '27720000-0000-4000-8000-000000000001'
54
+ and code <> 'k276isolink') as minted_tokens,
55
+ (select uses_count from agent_board.board_invite_tokens
56
+ where code = 'k276isolink') as outstanding_link_uses;
57
+
58
+ grantee_role|owner_status|agent_ledger_rows|active_bindings|minted_tokens|outstanding_link_uses
59
+ ------------+------------+-----------------+---------------+-------------+---------------------
60
+ admin |active | 1| 0| 0| 0
61
+ (1 row)
62
+
63
+
64
+ starting permutation: revoke_begin revoke_agent ugrant_begin ugrant_grant revoke_commit ugrant_commit check
65
+ step revoke_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
66
+ step revoke_agent:
67
+ select subject_kind
68
+ from agent_board.revoke_fleet_subject(
69
+ 'agent',
70
+ '27710000-0000-4000-8000-000000000001',
71
+ '27710000-0000-4000-8000-000000000003',
72
+ 'k276 iso fleet revocation');
73
+
74
+ subject_kind
75
+ ------------
76
+ agent
77
+ (1 row)
78
+
79
+ step ugrant_begin:
80
+ BEGIN;
81
+ SET LOCAL ROLE authenticated;
82
+ SET LOCAL "request.jwt.claim.role" = 'authenticated';
83
+ SET LOCAL "request.jwt.claim.sub" = '27700000-0000-0000-0000-0000000000a1';
84
+
85
+ step ugrant_grant:
86
+ select g.role as granted_role
87
+ from agent_board.grant_board_role(
88
+ '27720000-0000-4000-8000-000000000001',
89
+ '27710000-0000-4000-8000-000000000002',
90
+ 'admin') g;
91
+ <waiting ...>
92
+ step revoke_commit: COMMIT;
93
+ step ugrant_grant: <... completed>
94
+ ERROR: fleet_revoked: grant_board_role is not permitted for a fleet-revoked agent
95
+ step ugrant_commit: COMMIT;
96
+ step check:
97
+ select
98
+ (select role from agent_board.board_memberships
99
+ where board_id = '27720000-0000-4000-8000-000000000001'
100
+ and agent_id = '27710000-0000-4000-8000-000000000002') as grantee_role,
101
+ (select status from agent_board.agents
102
+ where id = '27710000-0000-4000-8000-000000000001') as owner_status,
103
+ (select count(*) from agent_board.fleet_revocation_events
104
+ where subject_kind = 'agent'
105
+ and subject_id = '27710000-0000-4000-8000-000000000001') as agent_ledger_rows,
106
+ (select count(*) from agent_board.fleet_machine_agents
107
+ where agent_id = '27710000-0000-4000-8000-000000000001'
108
+ and lifecycle_state = 'active') as active_bindings,
109
+ (select count(*) from agent_board.board_invite_tokens
110
+ where board_id = '27720000-0000-4000-8000-000000000001'
111
+ and code <> 'k276isolink') as minted_tokens,
112
+ (select uses_count from agent_board.board_invite_tokens
113
+ where code = 'k276isolink') as outstanding_link_uses;
114
+
115
+ grantee_role|owner_status|agent_ledger_rows|active_bindings|minted_tokens|outstanding_link_uses
116
+ ------------+------------+-----------------+---------------+-------------+---------------------
117
+ member |active | 1| 0| 0| 0
118
+ (1 row)
119
+
120
+
121
+ starting permutation: sgrant_begin sgrant_grant revoke_begin revoke_agent sgrant_commit revoke_commit check
122
+ step sgrant_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
123
+ step sgrant_grant:
124
+ select w.role as granted_role
125
+ from agent_board.signed_grant_board_role(
126
+ jsonb_build_object(
127
+ 'p_board_id', '27720000-0000-4000-8000-000000000001',
128
+ 'p_agent_id', '27710000-0000-4000-8000-000000000002',
129
+ 'p_grantee_role', 'admin'),
130
+ jsonb_build_object(
131
+ 'agent_id', '27710000-0000-4000-8000-000000000001',
132
+ 'signing_key_id', '27730000-0000-4000-8000-000000000001',
133
+ 'key_id', 'primary',
134
+ 'key_version', 1,
135
+ 'algorithm', 'Ed25519',
136
+ 'verification_status', 'verified',
137
+ 'payload_digest', 'sha256:k276',
138
+ 'enforcement_mode', 'require_for_agent_writes')) w;
139
+
140
+ granted_role
141
+ ------------
142
+ admin
143
+ (1 row)
144
+
145
+ step revoke_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
146
+ step revoke_agent:
147
+ select subject_kind
148
+ from agent_board.revoke_fleet_subject(
149
+ 'agent',
150
+ '27710000-0000-4000-8000-000000000001',
151
+ '27710000-0000-4000-8000-000000000003',
152
+ 'k276 iso fleet revocation');
153
+ <waiting ...>
154
+ step sgrant_commit: COMMIT;
155
+ step revoke_agent: <... completed>
156
+ subject_kind
157
+ ------------
158
+ agent
159
+ (1 row)
160
+
161
+ step revoke_commit: COMMIT;
162
+ step check:
163
+ select
164
+ (select role from agent_board.board_memberships
165
+ where board_id = '27720000-0000-4000-8000-000000000001'
166
+ and agent_id = '27710000-0000-4000-8000-000000000002') as grantee_role,
167
+ (select status from agent_board.agents
168
+ where id = '27710000-0000-4000-8000-000000000001') as owner_status,
169
+ (select count(*) from agent_board.fleet_revocation_events
170
+ where subject_kind = 'agent'
171
+ and subject_id = '27710000-0000-4000-8000-000000000001') as agent_ledger_rows,
172
+ (select count(*) from agent_board.fleet_machine_agents
173
+ where agent_id = '27710000-0000-4000-8000-000000000001'
174
+ and lifecycle_state = 'active') as active_bindings,
175
+ (select count(*) from agent_board.board_invite_tokens
176
+ where board_id = '27720000-0000-4000-8000-000000000001'
177
+ and code <> 'k276isolink') as minted_tokens,
178
+ (select uses_count from agent_board.board_invite_tokens
179
+ where code = 'k276isolink') as outstanding_link_uses;
180
+
181
+ grantee_role|owner_status|agent_ledger_rows|active_bindings|minted_tokens|outstanding_link_uses
182
+ ------------+------------+-----------------+---------------+-------------+---------------------
183
+ admin |active | 1| 0| 0| 0
184
+ (1 row)
185
+
186
+
187
+ starting permutation: revoke_begin revoke_agent sgrant_begin sgrant_grant revoke_commit sgrant_commit check
188
+ step revoke_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
189
+ step revoke_agent:
190
+ select subject_kind
191
+ from agent_board.revoke_fleet_subject(
192
+ 'agent',
193
+ '27710000-0000-4000-8000-000000000001',
194
+ '27710000-0000-4000-8000-000000000003',
195
+ 'k276 iso fleet revocation');
196
+
197
+ subject_kind
198
+ ------------
199
+ agent
200
+ (1 row)
201
+
202
+ step sgrant_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
203
+ step sgrant_grant:
204
+ select w.role as granted_role
205
+ from agent_board.signed_grant_board_role(
206
+ jsonb_build_object(
207
+ 'p_board_id', '27720000-0000-4000-8000-000000000001',
208
+ 'p_agent_id', '27710000-0000-4000-8000-000000000002',
209
+ 'p_grantee_role', 'admin'),
210
+ jsonb_build_object(
211
+ 'agent_id', '27710000-0000-4000-8000-000000000001',
212
+ 'signing_key_id', '27730000-0000-4000-8000-000000000001',
213
+ 'key_id', 'primary',
214
+ 'key_version', 1,
215
+ 'algorithm', 'Ed25519',
216
+ 'verification_status', 'verified',
217
+ 'payload_digest', 'sha256:k276',
218
+ 'enforcement_mode', 'require_for_agent_writes')) w;
219
+ <waiting ...>
220
+ step revoke_commit: COMMIT;
221
+ step sgrant_grant: <... completed>
222
+ ERROR: fleet_revoked: grant_board_role is not permitted for a fleet-revoked agent
223
+ step sgrant_commit: COMMIT;
224
+ step check:
225
+ select
226
+ (select role from agent_board.board_memberships
227
+ where board_id = '27720000-0000-4000-8000-000000000001'
228
+ and agent_id = '27710000-0000-4000-8000-000000000002') as grantee_role,
229
+ (select status from agent_board.agents
230
+ where id = '27710000-0000-4000-8000-000000000001') as owner_status,
231
+ (select count(*) from agent_board.fleet_revocation_events
232
+ where subject_kind = 'agent'
233
+ and subject_id = '27710000-0000-4000-8000-000000000001') as agent_ledger_rows,
234
+ (select count(*) from agent_board.fleet_machine_agents
235
+ where agent_id = '27710000-0000-4000-8000-000000000001'
236
+ and lifecycle_state = 'active') as active_bindings,
237
+ (select count(*) from agent_board.board_invite_tokens
238
+ where board_id = '27720000-0000-4000-8000-000000000001'
239
+ and code <> 'k276isolink') as minted_tokens,
240
+ (select uses_count from agent_board.board_invite_tokens
241
+ where code = 'k276isolink') as outstanding_link_uses;
242
+
243
+ grantee_role|owner_status|agent_ledger_rows|active_bindings|minted_tokens|outstanding_link_uses
244
+ ------------+------------+-----------------+---------------+-------------+---------------------
245
+ member |active | 1| 0| 0| 0
246
+ (1 row)
247
+
248
+
249
+ starting permutation: revoke_begin revoke_agent mint_begin mint_link revoke_commit mint_commit check
250
+ step revoke_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
251
+ step revoke_agent:
252
+ select subject_kind
253
+ from agent_board.revoke_fleet_subject(
254
+ 'agent',
255
+ '27710000-0000-4000-8000-000000000001',
256
+ '27710000-0000-4000-8000-000000000003',
257
+ 'k276 iso fleet revocation');
258
+
259
+ subject_kind
260
+ ------------
261
+ agent
262
+ (1 row)
263
+
264
+ step mint_begin:
265
+ BEGIN;
266
+ SET LOCAL ROLE authenticated;
267
+ SET LOCAL "request.jwt.claim.role" = 'authenticated';
268
+ SET LOCAL "request.jwt.claim.sub" = '27700000-0000-0000-0000-0000000000a1';
269
+
270
+ step mint_link:
271
+ select m.preset_role
272
+ from agent_board.create_invite_link(
273
+ '27720000-0000-4000-8000-000000000001', 'admin', 'joined', 5,
274
+ now() + interval '2 days') m;
275
+ <waiting ...>
276
+ step revoke_commit: COMMIT;
277
+ step mint_link: <... completed>
278
+ ERROR: fleet_revoked: create_invite_link is not permitted for a fleet-revoked agent
279
+ step mint_commit: COMMIT;
280
+ step check:
281
+ select
282
+ (select role from agent_board.board_memberships
283
+ where board_id = '27720000-0000-4000-8000-000000000001'
284
+ and agent_id = '27710000-0000-4000-8000-000000000002') as grantee_role,
285
+ (select status from agent_board.agents
286
+ where id = '27710000-0000-4000-8000-000000000001') as owner_status,
287
+ (select count(*) from agent_board.fleet_revocation_events
288
+ where subject_kind = 'agent'
289
+ and subject_id = '27710000-0000-4000-8000-000000000001') as agent_ledger_rows,
290
+ (select count(*) from agent_board.fleet_machine_agents
291
+ where agent_id = '27710000-0000-4000-8000-000000000001'
292
+ and lifecycle_state = 'active') as active_bindings,
293
+ (select count(*) from agent_board.board_invite_tokens
294
+ where board_id = '27720000-0000-4000-8000-000000000001'
295
+ and code <> 'k276isolink') as minted_tokens,
296
+ (select uses_count from agent_board.board_invite_tokens
297
+ where code = 'k276isolink') as outstanding_link_uses;
298
+
299
+ grantee_role|owner_status|agent_ledger_rows|active_bindings|minted_tokens|outstanding_link_uses
300
+ ------------+------------+-----------------+---------------+-------------+---------------------
301
+ member |active | 1| 0| 0| 0
302
+ (1 row)
303
+
304
+
305
+ starting permutation: revoke_begin revoke_agent redeem_begin redeem_link redeem_commit revoke_commit check
306
+ step revoke_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
307
+ step revoke_agent:
308
+ select subject_kind
309
+ from agent_board.revoke_fleet_subject(
310
+ 'agent',
311
+ '27710000-0000-4000-8000-000000000001',
312
+ '27710000-0000-4000-8000-000000000003',
313
+ 'k276 iso fleet revocation');
314
+
315
+ subject_kind
316
+ ------------
317
+ agent
318
+ (1 row)
319
+
320
+ step redeem_begin:
321
+ BEGIN;
322
+ SET LOCAL ROLE authenticated;
323
+ SET LOCAL "request.jwt.claim.role" = 'authenticated';
324
+ SET LOCAL "request.jwt.claim.sub" = '27700000-0000-0000-0000-0000000000a2';
325
+
326
+ step redeem_link:
327
+ select r.role as redeemed_role
328
+ from agent_board.redeem_invite_link('k276isolink') r;
329
+
330
+ redeemed_role
331
+ -------------
332
+ admin
333
+ (1 row)
334
+
335
+ step redeem_commit: COMMIT;
336
+ step revoke_commit: COMMIT;
337
+ step check:
338
+ select
339
+ (select role from agent_board.board_memberships
340
+ where board_id = '27720000-0000-4000-8000-000000000001'
341
+ and agent_id = '27710000-0000-4000-8000-000000000002') as grantee_role,
342
+ (select status from agent_board.agents
343
+ where id = '27710000-0000-4000-8000-000000000001') as owner_status,
344
+ (select count(*) from agent_board.fleet_revocation_events
345
+ where subject_kind = 'agent'
346
+ and subject_id = '27710000-0000-4000-8000-000000000001') as agent_ledger_rows,
347
+ (select count(*) from agent_board.fleet_machine_agents
348
+ where agent_id = '27710000-0000-4000-8000-000000000001'
349
+ and lifecycle_state = 'active') as active_bindings,
350
+ (select count(*) from agent_board.board_invite_tokens
351
+ where board_id = '27720000-0000-4000-8000-000000000001'
352
+ and code <> 'k276isolink') as minted_tokens,
353
+ (select uses_count from agent_board.board_invite_tokens
354
+ where code = 'k276isolink') as outstanding_link_uses;
355
+
356
+ grantee_role|owner_status|agent_ledger_rows|active_bindings|minted_tokens|outstanding_link_uses
357
+ ------------+------------+-----------------+---------------+-------------+---------------------
358
+ admin |active | 1| 0| 0| 1
359
+ (1 row)
360
+
361
+
362
+ starting permutation: revoke_begin revoke_agent revoke_commit redeem_begin redeem_link redeem_commit check
363
+ step revoke_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
364
+ step revoke_agent:
365
+ select subject_kind
366
+ from agent_board.revoke_fleet_subject(
367
+ 'agent',
368
+ '27710000-0000-4000-8000-000000000001',
369
+ '27710000-0000-4000-8000-000000000003',
370
+ 'k276 iso fleet revocation');
371
+
372
+ subject_kind
373
+ ------------
374
+ agent
375
+ (1 row)
376
+
377
+ step revoke_commit: COMMIT;
378
+ step redeem_begin:
379
+ BEGIN;
380
+ SET LOCAL ROLE authenticated;
381
+ SET LOCAL "request.jwt.claim.role" = 'authenticated';
382
+ SET LOCAL "request.jwt.claim.sub" = '27700000-0000-0000-0000-0000000000a2';
383
+
384
+ step redeem_link:
385
+ select r.role as redeemed_role
386
+ from agent_board.redeem_invite_link('k276isolink') r;
387
+
388
+ ERROR: invite is not usable
389
+ step redeem_commit: COMMIT;
390
+ step check:
391
+ select
392
+ (select role from agent_board.board_memberships
393
+ where board_id = '27720000-0000-4000-8000-000000000001'
394
+ and agent_id = '27710000-0000-4000-8000-000000000002') as grantee_role,
395
+ (select status from agent_board.agents
396
+ where id = '27710000-0000-4000-8000-000000000001') as owner_status,
397
+ (select count(*) from agent_board.fleet_revocation_events
398
+ where subject_kind = 'agent'
399
+ and subject_id = '27710000-0000-4000-8000-000000000001') as agent_ledger_rows,
400
+ (select count(*) from agent_board.fleet_machine_agents
401
+ where agent_id = '27710000-0000-4000-8000-000000000001'
402
+ and lifecycle_state = 'active') as active_bindings,
403
+ (select count(*) from agent_board.board_invite_tokens
404
+ where board_id = '27720000-0000-4000-8000-000000000001'
405
+ and code <> 'k276isolink') as minted_tokens,
406
+ (select uses_count from agent_board.board_invite_tokens
407
+ where code = 'k276isolink') as outstanding_link_uses;
408
+
409
+ grantee_role|owner_status|agent_ledger_rows|active_bindings|minted_tokens|outstanding_link_uses
410
+ ------------+------------+-----------------+---------------+-------------+---------------------
411
+ member |active | 1| 0| 0| 0
412
+ (1 row)
413
+
414
+
415
+ starting permutation: revoke_begin revoke_agent redeem_begin redeem_link redeem2_begin redeem2_link revoke_commit redeem_commit redeem2_commit check
416
+ step revoke_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
417
+ step revoke_agent:
418
+ select subject_kind
419
+ from agent_board.revoke_fleet_subject(
420
+ 'agent',
421
+ '27710000-0000-4000-8000-000000000001',
422
+ '27710000-0000-4000-8000-000000000003',
423
+ 'k276 iso fleet revocation');
424
+
425
+ subject_kind
426
+ ------------
427
+ agent
428
+ (1 row)
429
+
430
+ step redeem_begin:
431
+ BEGIN;
432
+ SET LOCAL ROLE authenticated;
433
+ SET LOCAL "request.jwt.claim.role" = 'authenticated';
434
+ SET LOCAL "request.jwt.claim.sub" = '27700000-0000-0000-0000-0000000000a2';
435
+
436
+ step redeem_link:
437
+ select r.role as redeemed_role
438
+ from agent_board.redeem_invite_link('k276isolink') r;
439
+
440
+ redeemed_role
441
+ -------------
442
+ admin
443
+ (1 row)
444
+
445
+ step redeem2_begin:
446
+ BEGIN;
447
+ SET LOCAL ROLE authenticated;
448
+ SET LOCAL "request.jwt.claim.role" = 'authenticated';
449
+ SET LOCAL "request.jwt.claim.sub" = '27700000-0000-0000-0000-0000000000a3';
450
+
451
+ step redeem2_link:
452
+ select r.role as redeemed_role
453
+ from agent_board.redeem_invite_link('k276isolink') r;
454
+ <waiting ...>
455
+ step revoke_commit: COMMIT;
456
+ step redeem_commit: COMMIT;
457
+ step redeem2_link: <... completed>
458
+ ERROR: invite is not usable
459
+ step redeem2_commit: COMMIT;
460
+ step check:
461
+ select
462
+ (select role from agent_board.board_memberships
463
+ where board_id = '27720000-0000-4000-8000-000000000001'
464
+ and agent_id = '27710000-0000-4000-8000-000000000002') as grantee_role,
465
+ (select status from agent_board.agents
466
+ where id = '27710000-0000-4000-8000-000000000001') as owner_status,
467
+ (select count(*) from agent_board.fleet_revocation_events
468
+ where subject_kind = 'agent'
469
+ and subject_id = '27710000-0000-4000-8000-000000000001') as agent_ledger_rows,
470
+ (select count(*) from agent_board.fleet_machine_agents
471
+ where agent_id = '27710000-0000-4000-8000-000000000001'
472
+ and lifecycle_state = 'active') as active_bindings,
473
+ (select count(*) from agent_board.board_invite_tokens
474
+ where board_id = '27720000-0000-4000-8000-000000000001'
475
+ and code <> 'k276isolink') as minted_tokens,
476
+ (select uses_count from agent_board.board_invite_tokens
477
+ where code = 'k276isolink') as outstanding_link_uses;
478
+
479
+ grantee_role|owner_status|agent_ledger_rows|active_bindings|minted_tokens|outstanding_link_uses
480
+ ------------+------------+-----------------+---------------+-------------+---------------------
481
+ admin |active | 1| 0| 0| 1
482
+ (1 row)
483
+
@@ -92,7 +92,7 @@ step auth_grant:
92
92
  <waiting ...>
93
93
  step revoke_commit: COMMIT;
94
94
  step auth_grant: <... completed>
95
- ERROR: signer_not_active: signed authority write signer is revoked, not active
95
+ ERROR: fleet_revoked: grant_board_role is not permitted for a fleet-revoked agent
96
96
  step auth_commit: COMMIT;
97
97
  step check:
98
98
  select