@consiliency/agent-board-schema 1.12.0 → 1.23.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.
- package/fixtures/already-applied.json +160 -0
- package/migrations/20260731000100_agent_board_agentsdir_column_scope.sql +88 -0
- package/migrations/20260801000100_agent_board_leaveidem_terminal_noop.sql +317 -0
- package/migrations/20260802000100_agent_board_rolereset_reentry_clamp.sql +237 -0
- package/migrations/20260803000100_agent_board_rowid_total_order.sql +1201 -0
- package/migrations/20260804000100_agent_board_hygiene_actor_binding_rls.sql +229 -0
- package/migrations/20260806000100_agent_board_consent_substrate.sql +339 -0
- package/migrations/20260807000100_agent_board_consent_emission.sql +619 -0
- package/migrations/20260808000100_agent_board_rejectsem.sql +145 -0
- package/migrations/20260809000100_agent_board_consent_gating.sql +492 -0
- package/migrations/20260810000100_agent_board_consent_locking.sql +485 -0
- package/migrations/20260811000100_agent_board_retention_metadata_revoke.sql +23 -0
- package/migrations/20260812000100_agent_board_pubexec_class_revoke.sql +54 -0
- package/migrations/20260813000100_agent_board_invitepolicy_block.sql +420 -0
- package/migrations/20260814000100_agent_board_obsgate_thread_post_policy.sql +239 -0
- package/migrations/20260815000100_agent_board_obsgate2_authoring_gates.sql +287 -0
- package/migrations/20260816000100_agent_board_obsgate3_task_lifecycle.sql +118 -0
- package/migrations/20260817000100_agent_board_obsgate4_claims_lifecycle.sql +250 -0
- package/migrations/20260818000100_agent_board_fleet_machines_rls_correlation.sql +43 -0
- package/migrations/20260819000100_agent_board_resolve_noop_retire.sql +166 -0
- package/migrations/20260820000100_agent_board_roomdeleg_lane_b.sql +206 -0
- package/migrations/20260821000100_agent_board_claimgate_claimkey.sql +372 -0
- package/migrations/20260822000100_agent_board_mint_harden.sql +710 -0
- package/migrations/20260822000200_agent_board_mint_harden_fingerprint_backfill.sql +207 -0
- package/migrations/20260823000100_agent_board_fleet_machine_hijack.sql +106 -0
- package/migrations/20260824000100_agent_board_claimgate_shadow.sql +443 -0
- package/migrations/20260825000100_agent_board_claimgate_enforce.sql +660 -0
- package/migrations/20260826000100_agent_board_fleet_machine_reactivation.sql +514 -0
- package/migrations/20260828000100_agent_board_delegation_cap_ceiling.sql +474 -0
- package/migrations/20260829000100_agent_board_fleet_machine_reclaim.sql +432 -0
- package/migrations/20260830000100_agent_board_delegation_sole_writer.sql +41 -0
- package/migrations/20260831000100_agent_board_fleet_domain_reclaim.sql +389 -0
- package/migrations/20260901000100_agent_board_atomic_fleet_onboarding.sql +1496 -0
- package/migrations/20260901000110_agent_board_fleet_onboarding_ceiling_lock.sql +604 -0
- package/migrations/20260901000120_agent_board_human_revocation_evidence_completeness.sql +78 -0
- package/migrations/20260901000130_agent_board_fedsession_human_revocation_gate.sql +74 -0
- package/migrations/20260901000140_agent_board_fedsession_board_owner_lock_order.sql +102 -0
- package/migrations/20260902000100_agent_board_outbox_wake_ordering.sql +184 -0
- package/migrations/20260903000100_agent_board_enroll_identity_board_owner_lock_order.sql +604 -0
- package/migrations/20260903000200_agent_board_fedsession_provider_absence_gate.sql +177 -0
- package/migrations/20260904000100_agent_board_wake_recovery_surface.sql +155 -0
- package/package.json +1 -1
- package/schema-manifest.json +363 -3
- package/src/tooling.test.mjs +113 -2
- package/tests/agent_board_actorspoof.test.sql +349 -0
- package/tests/agent_board_agentsdir.test.sql +154 -0
- package/tests/agent_board_atomic_fleet_onboarding.test.sql +623 -0
- package/tests/agent_board_atomic_fleet_onboarding_backfill.test.sql +142 -0
- package/tests/agent_board_atomic_fleet_onboarding_runtime.test.sql +1250 -0
- package/tests/agent_board_authbound_boundary.test.sql +9 -1
- package/tests/agent_board_claimgate_enforce.test.sql +464 -0
- package/tests/agent_board_claimgate_predicate.test.sql +360 -0
- package/tests/agent_board_claimkey.test.sql +229 -0
- package/tests/agent_board_consent_backfill.test.sql +48 -0
- package/tests/agent_board_consent_emission.test.sql +601 -0
- package/tests/agent_board_consent_gating.test.sql +489 -0
- package/tests/agent_board_consent_substrate.test.sql +720 -0
- package/tests/agent_board_delegation_cap_ceiling.test.sql +303 -0
- package/tests/agent_board_delegation_enforcement.test.sql +55 -6
- package/tests/agent_board_delegation_policies.test.sql +107 -1
- package/tests/agent_board_enroll_federated_identity.test.sql +3 -3
- package/tests/agent_board_enroll_pop_binding.test.sql +13 -3
- package/tests/agent_board_enrollment_audit_content.test.sql +11 -7
- package/tests/agent_board_federated_lock_order_class.test.sql +390 -0
- package/tests/agent_board_fedsession.test.sql +51 -5
- package/tests/agent_board_fedsession_provider_absence_gate.test.sql +170 -0
- package/tests/agent_board_fleet_domain_reclaim.test.sql +419 -0
- package/tests/agent_board_fleet_machine_hijack.test.sql +190 -0
- package/tests/agent_board_fleet_machine_reactivation.test.sql +426 -0
- package/tests/agent_board_fleet_machine_reclaim.test.sql +509 -0
- package/tests/agent_board_fleet_machines_rls.test.sql +79 -0
- package/tests/agent_board_fleet_policy.test.sql +2 -2
- package/tests/agent_board_grants_hygiene.test.sql +408 -0
- package/tests/agent_board_identity_providers.test.sql +9 -0
- package/tests/agent_board_inbox_reads.test.sql +45 -31
- package/tests/agent_board_inbox_rpcs.test.sql +44 -34
- package/tests/agent_board_invitepolicy.test.sql +205 -0
- package/tests/agent_board_leaveidem.test.sql +194 -0
- package/tests/agent_board_mint_fleet_agent_session.test.sql +10 -10
- package/tests/agent_board_mint_harden.test.sql +303 -0
- package/tests/agent_board_mint_harden_backfill.test.sql +95 -0
- package/tests/agent_board_obsgate.test.sql +178 -0
- package/tests/agent_board_obsgate2.test.sql +153 -0
- package/tests/agent_board_obsgate3.test.sql +170 -0
- package/tests/agent_board_obsgate4.test.sql +196 -0
- package/tests/agent_board_outbox_wake_ordering.test.sql +452 -0
- package/tests/agent_board_portal_offline_invariant.test.sql +14 -3
- package/tests/agent_board_pubexec_class.test.sql +53 -0
- package/tests/agent_board_rejectsem.test.sql +271 -0
- package/tests/agent_board_resigning_refresh.test.sql +1 -1
- package/tests/agent_board_resolve_noop_retire.test.sql +71 -0
- package/tests/agent_board_retention_metadata_acl.test.sql +53 -0
- package/tests/agent_board_revoke_agent_subtree.test.sql +3 -3
- package/tests/agent_board_rolereset.test.sql +351 -0
- package/tests/agent_board_roomdeleg.test.sql +5 -3
- package/tests/agent_board_roomdeleg_lane_b.test.sql +144 -0
- package/tests/agent_board_roomlink.test.sql +27 -11
- package/tests/agent_board_rowid.test.sql +1274 -0
- package/tests/agent_board_signature_rls_reads.test.sql +3 -3
- package/tests/agent_board_signed_write_gateway.test.sql +3 -3
- package/tests/agent_board_signing_challenge_pending_cap.test.sql +2 -2
- package/tests/agent_board_signing_challenge_reaper.test.sql +2 -2
- package/tests/agent_board_signing_proof_rpcs.test.sql +4 -4
- package/tests/agent_board_signing_store.test.sql +6 -6
- package/tests/agent_board_wake_recovery.test.sql +756 -0
- package/tests/fixtures/isolation-substrate.sql +93 -0
- package/tests/fixtures/test-prereqs.sql +33 -0
- package/tests/isolation/expected/atomic_fedsession_fleet_lock_order.out +79 -0
- package/tests/isolation/expected/atomic_fedsession_human_revoke.out +87 -0
- package/tests/isolation/expected/atomic_fleet_authority_races.out +469 -0
- package/tests/isolation/expected/atomic_fleet_binding_revoke.out +103 -0
- package/tests/isolation/expected/atomic_fleet_board_archive.out +117 -0
- package/tests/isolation/expected/atomic_fleet_human_fresh_revoke.out +136 -0
- package/tests/isolation/expected/atomic_fleet_identity_disposition.out +61 -0
- package/tests/isolation/expected/atomic_fleet_lifecycle_races.out +1479 -0
- package/tests/isolation/expected/atomic_fleet_onboarding.out +75 -0
- package/tests/isolation/expected/atomic_fleet_subtree_lock_order.out +60 -0
- package/tests/isolation/expected/ceiling_setter_lock_before_upsert.out +95 -0
- package/tests/isolation/expected/claimgate_ownerless_quota.out +36 -0
- package/tests/isolation/expected/claimkey_renew_race.out +38 -0
- package/tests/isolation/expected/consent_approval_lock.out +43 -0
- package/tests/isolation/expected/consent_emit_actual_state.out +37 -0
- package/tests/isolation/expected/domain_reclaim_revoke_race.out +40 -0
- package/tests/isolation/expected/enroll_identity_board_owner_lock_order.out +55 -0
- package/tests/isolation/expected/fedsession_provider_absent_owner_lock.out +37 -0
- package/tests/isolation/expected/onboarding_ceiling_lock_order.out +123 -0
- package/tests/isolation/expected/outbox_wake_ordering.out +86 -0
- package/tests/isolation/expected/reactivate_revoke_race.out +80 -0
- package/tests/isolation/expected/reclaim_revoke_race.out +40 -0
- package/tests/isolation/expected/wake_recovery_late_commit.out +89 -0
- package/tests/isolation/specs/atomic_fedsession_fleet_lock_order.spec +117 -0
- package/tests/isolation/specs/atomic_fedsession_human_revoke.spec +66 -0
- package/tests/isolation/specs/atomic_fleet_authority_races.spec +235 -0
- package/tests/isolation/specs/atomic_fleet_binding_revoke.spec +127 -0
- package/tests/isolation/specs/atomic_fleet_board_archive.spec +134 -0
- package/tests/isolation/specs/atomic_fleet_human_fresh_revoke.spec +142 -0
- package/tests/isolation/specs/atomic_fleet_identity_disposition.spec +118 -0
- package/tests/isolation/specs/atomic_fleet_lifecycle_races.spec +244 -0
- package/tests/isolation/specs/atomic_fleet_onboarding.spec +106 -0
- package/tests/isolation/specs/atomic_fleet_subtree_lock_order.spec +147 -0
- package/tests/isolation/specs/ceiling_setter_lock_before_upsert.spec +117 -0
- package/tests/isolation/specs/claimgate_ownerless_quota.spec +77 -0
- package/tests/isolation/specs/claimkey_renew_race.spec +67 -0
- package/tests/isolation/specs/consent_approval_lock.spec +98 -0
- package/tests/isolation/specs/consent_emit_actual_state.spec +79 -0
- package/tests/isolation/specs/domain_reclaim_revoke_race.spec +88 -0
- package/tests/isolation/specs/enroll_identity_board_owner_lock_order.spec +117 -0
- package/tests/isolation/specs/fedsession_provider_absent_owner_lock.spec +63 -0
- package/tests/isolation/specs/onboarding_ceiling_lock_order.spec +183 -0
- package/tests/isolation/specs/outbox_wake_ordering.spec +202 -0
- package/tests/isolation/specs/reactivate_revoke_race.spec +115 -0
- package/tests/isolation/specs/reclaim_revoke_race.spec +94 -0
- package/tests/isolation/specs/wake_recovery_late_commit.spec +207 -0
- package/tests/seeds/20260806000100_agent_board_consent_substrate.sql.pre.sql +19 -0
- package/tests/seeds/20260822000200_agent_board_mint_harden_fingerprint_backfill.sql.pre.sql +39 -0
- package/tests/seeds/20260901000100_agent_board_atomic_fleet_onboarding.sql.pre.sql +110 -0
|
@@ -0,0 +1,1479 @@
|
|
|
1
|
+
Parsed test spec with 3 sessions
|
|
2
|
+
|
|
3
|
+
starting permutation: retry_begin retry_onboard lifecycle_begin revoke_fleet_agent retry_commit lifecycle_commit check
|
|
4
|
+
count
|
|
5
|
+
-----
|
|
6
|
+
1
|
|
7
|
+
(1 row)
|
|
8
|
+
|
|
9
|
+
step retry_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
10
|
+
step retry_onboard:
|
|
11
|
+
select identity_disposition, membership_disposition, binding_disposition
|
|
12
|
+
from agent_board.onboard_federated_fleet_agent(
|
|
13
|
+
'https://atomic-lifecycle.test', 'message-board', 'human-lifecycle',
|
|
14
|
+
jsonb_build_object('iss','https://atomic-lifecycle.test','aud','message-board','sub','human-lifecycle','iat',200),
|
|
15
|
+
'atomic-lifecycle-agent',
|
|
16
|
+
'yd_DIFGWGusVg3SbktDJQ1bE5UWvtR33xln4b05JIhk',
|
|
17
|
+
'raw_ed25519_base64url',
|
|
18
|
+
'sha256:NeVC2vx1MbTY56jUwJcLLr6YwB4IKCERsXWbUwhf5pA',
|
|
19
|
+
true, null, 'agent', ARRAY['board:send'], ARRAY[]::text[],
|
|
20
|
+
(select code from agent_board.board_invite_tokens where created_by_agent_id='16240000-0000-0000-0000-000000000001'),
|
|
21
|
+
(select id from agent_board.boards where slug='atomic-lifecycle-board'),
|
|
22
|
+
'16240000-0000-0000-0000-000000000003', 'codex', 'phase-loop',
|
|
23
|
+
'message-board', 'sha256:atomic-lifecycle-repo', 'worker', 'phase_worker',
|
|
24
|
+
'atomic-lifecycle-agent'
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
identity_disposition|membership_disposition|binding_disposition
|
|
28
|
+
--------------------+----------------------+-------------------
|
|
29
|
+
reused |reused |reused
|
|
30
|
+
(1 row)
|
|
31
|
+
|
|
32
|
+
step lifecycle_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
33
|
+
step revoke_fleet_agent:
|
|
34
|
+
select subject_kind from agent_board.revoke_fleet_subject(
|
|
35
|
+
'agent', (select id from agent_board.agents where handle='atomic-lifecycle-agent'),
|
|
36
|
+
'16240000-0000-0000-0000-000000000001', 'isolation agent revoke', jsonb_build_object()
|
|
37
|
+
);
|
|
38
|
+
<waiting ...>
|
|
39
|
+
step retry_commit: COMMIT;
|
|
40
|
+
step revoke_fleet_agent: <... completed>
|
|
41
|
+
subject_kind
|
|
42
|
+
------------
|
|
43
|
+
agent
|
|
44
|
+
(1 row)
|
|
45
|
+
|
|
46
|
+
step lifecycle_commit: COMMIT;
|
|
47
|
+
step check:
|
|
48
|
+
select a.status as agent_status,
|
|
49
|
+
k.status as key_status,
|
|
50
|
+
b.lifecycle_state as binding_state,
|
|
51
|
+
h.lifecycle_state as harness_state,
|
|
52
|
+
r.lifecycle_state as repo_state,
|
|
53
|
+
m.lifecycle_state as machine_state,
|
|
54
|
+
d.lifecycle_state as domain_state,
|
|
55
|
+
(select count(*) from agent_board.agents aa where aa.handle='atomic-lifecycle-agent') as agents,
|
|
56
|
+
(select count(*) from agent_board.fleet_machine_agents bb join agent_board.agents aa on aa.id=bb.agent_id where aa.handle='atomic-lifecycle-agent') as bindings
|
|
57
|
+
from agent_board.agents a
|
|
58
|
+
join agent_board.agent_signing_keys k on k.agent_id=a.id
|
|
59
|
+
join agent_board.fleet_machine_agents b on b.agent_id=a.id
|
|
60
|
+
join agent_board.fleet_machines m on m.id=b.machine_id
|
|
61
|
+
join agent_board.fleet_trust_domains d on d.id=m.trust_domain_id
|
|
62
|
+
join agent_board.fleet_harness_registrations h on h.machine_id=m.id
|
|
63
|
+
join agent_board.fleet_repo_scopes r on r.harness_registration_id=h.id
|
|
64
|
+
where a.handle='atomic-lifecycle-agent';
|
|
65
|
+
|
|
66
|
+
agent_status|key_status|binding_state|harness_state|repo_state|machine_state|domain_state|agents|bindings
|
|
67
|
+
------------+----------+-------------+-------------+----------+-------------+------------+------+--------
|
|
68
|
+
active |active |revoked |active |active |active |active | 1| 1
|
|
69
|
+
(1 row)
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
starting permutation: retry_begin retry_onboard lifecycle_begin revoke_fleet_key retry_commit lifecycle_commit check
|
|
73
|
+
count
|
|
74
|
+
-----
|
|
75
|
+
1
|
|
76
|
+
(1 row)
|
|
77
|
+
|
|
78
|
+
step retry_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
79
|
+
step retry_onboard:
|
|
80
|
+
select identity_disposition, membership_disposition, binding_disposition
|
|
81
|
+
from agent_board.onboard_federated_fleet_agent(
|
|
82
|
+
'https://atomic-lifecycle.test', 'message-board', 'human-lifecycle',
|
|
83
|
+
jsonb_build_object('iss','https://atomic-lifecycle.test','aud','message-board','sub','human-lifecycle','iat',200),
|
|
84
|
+
'atomic-lifecycle-agent',
|
|
85
|
+
'yd_DIFGWGusVg3SbktDJQ1bE5UWvtR33xln4b05JIhk',
|
|
86
|
+
'raw_ed25519_base64url',
|
|
87
|
+
'sha256:NeVC2vx1MbTY56jUwJcLLr6YwB4IKCERsXWbUwhf5pA',
|
|
88
|
+
true, null, 'agent', ARRAY['board:send'], ARRAY[]::text[],
|
|
89
|
+
(select code from agent_board.board_invite_tokens where created_by_agent_id='16240000-0000-0000-0000-000000000001'),
|
|
90
|
+
(select id from agent_board.boards where slug='atomic-lifecycle-board'),
|
|
91
|
+
'16240000-0000-0000-0000-000000000003', 'codex', 'phase-loop',
|
|
92
|
+
'message-board', 'sha256:atomic-lifecycle-repo', 'worker', 'phase_worker',
|
|
93
|
+
'atomic-lifecycle-agent'
|
|
94
|
+
);
|
|
95
|
+
|
|
96
|
+
identity_disposition|membership_disposition|binding_disposition
|
|
97
|
+
--------------------+----------------------+-------------------
|
|
98
|
+
reused |reused |reused
|
|
99
|
+
(1 row)
|
|
100
|
+
|
|
101
|
+
step lifecycle_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
102
|
+
step revoke_fleet_key:
|
|
103
|
+
select subject_kind from agent_board.revoke_fleet_subject(
|
|
104
|
+
'signing_key', (select k.id from agent_board.agent_signing_keys k join agent_board.agents a on a.id=k.agent_id where a.handle='atomic-lifecycle-agent'),
|
|
105
|
+
'16240000-0000-0000-0000-000000000001', 'isolation key revoke', jsonb_build_object()
|
|
106
|
+
);
|
|
107
|
+
<waiting ...>
|
|
108
|
+
step retry_commit: COMMIT;
|
|
109
|
+
step revoke_fleet_key: <... completed>
|
|
110
|
+
subject_kind
|
|
111
|
+
------------
|
|
112
|
+
signing_key
|
|
113
|
+
(1 row)
|
|
114
|
+
|
|
115
|
+
step lifecycle_commit: COMMIT;
|
|
116
|
+
step check:
|
|
117
|
+
select a.status as agent_status,
|
|
118
|
+
k.status as key_status,
|
|
119
|
+
b.lifecycle_state as binding_state,
|
|
120
|
+
h.lifecycle_state as harness_state,
|
|
121
|
+
r.lifecycle_state as repo_state,
|
|
122
|
+
m.lifecycle_state as machine_state,
|
|
123
|
+
d.lifecycle_state as domain_state,
|
|
124
|
+
(select count(*) from agent_board.agents aa where aa.handle='atomic-lifecycle-agent') as agents,
|
|
125
|
+
(select count(*) from agent_board.fleet_machine_agents bb join agent_board.agents aa on aa.id=bb.agent_id where aa.handle='atomic-lifecycle-agent') as bindings
|
|
126
|
+
from agent_board.agents a
|
|
127
|
+
join agent_board.agent_signing_keys k on k.agent_id=a.id
|
|
128
|
+
join agent_board.fleet_machine_agents b on b.agent_id=a.id
|
|
129
|
+
join agent_board.fleet_machines m on m.id=b.machine_id
|
|
130
|
+
join agent_board.fleet_trust_domains d on d.id=m.trust_domain_id
|
|
131
|
+
join agent_board.fleet_harness_registrations h on h.machine_id=m.id
|
|
132
|
+
join agent_board.fleet_repo_scopes r on r.harness_registration_id=h.id
|
|
133
|
+
where a.handle='atomic-lifecycle-agent';
|
|
134
|
+
|
|
135
|
+
agent_status|key_status|binding_state|harness_state|repo_state|machine_state|domain_state|agents|bindings
|
|
136
|
+
------------+----------+-------------+-------------+----------+-------------+------------+------+--------
|
|
137
|
+
active |revoked |active |active |active |active |active | 1| 1
|
|
138
|
+
(1 row)
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
starting permutation: retry_begin retry_onboard lifecycle_begin revoke_agent retry_commit lifecycle_commit check
|
|
142
|
+
count
|
|
143
|
+
-----
|
|
144
|
+
1
|
|
145
|
+
(1 row)
|
|
146
|
+
|
|
147
|
+
step retry_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
148
|
+
step retry_onboard:
|
|
149
|
+
select identity_disposition, membership_disposition, binding_disposition
|
|
150
|
+
from agent_board.onboard_federated_fleet_agent(
|
|
151
|
+
'https://atomic-lifecycle.test', 'message-board', 'human-lifecycle',
|
|
152
|
+
jsonb_build_object('iss','https://atomic-lifecycle.test','aud','message-board','sub','human-lifecycle','iat',200),
|
|
153
|
+
'atomic-lifecycle-agent',
|
|
154
|
+
'yd_DIFGWGusVg3SbktDJQ1bE5UWvtR33xln4b05JIhk',
|
|
155
|
+
'raw_ed25519_base64url',
|
|
156
|
+
'sha256:NeVC2vx1MbTY56jUwJcLLr6YwB4IKCERsXWbUwhf5pA',
|
|
157
|
+
true, null, 'agent', ARRAY['board:send'], ARRAY[]::text[],
|
|
158
|
+
(select code from agent_board.board_invite_tokens where created_by_agent_id='16240000-0000-0000-0000-000000000001'),
|
|
159
|
+
(select id from agent_board.boards where slug='atomic-lifecycle-board'),
|
|
160
|
+
'16240000-0000-0000-0000-000000000003', 'codex', 'phase-loop',
|
|
161
|
+
'message-board', 'sha256:atomic-lifecycle-repo', 'worker', 'phase_worker',
|
|
162
|
+
'atomic-lifecycle-agent'
|
|
163
|
+
);
|
|
164
|
+
|
|
165
|
+
identity_disposition|membership_disposition|binding_disposition
|
|
166
|
+
--------------------+----------------------+-------------------
|
|
167
|
+
reused |reused |reused
|
|
168
|
+
(1 row)
|
|
169
|
+
|
|
170
|
+
step lifecycle_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
171
|
+
step revoke_agent:
|
|
172
|
+
select status from agent_board.revoke_agent(
|
|
173
|
+
(select id from agent_board.agents where handle='atomic-lifecycle-agent'),
|
|
174
|
+
'isolation legacy agent revoke'
|
|
175
|
+
);
|
|
176
|
+
<waiting ...>
|
|
177
|
+
step retry_commit: COMMIT;
|
|
178
|
+
step revoke_agent: <... completed>
|
|
179
|
+
status
|
|
180
|
+
---------
|
|
181
|
+
suspended
|
|
182
|
+
(1 row)
|
|
183
|
+
|
|
184
|
+
step lifecycle_commit: COMMIT;
|
|
185
|
+
step check:
|
|
186
|
+
select a.status as agent_status,
|
|
187
|
+
k.status as key_status,
|
|
188
|
+
b.lifecycle_state as binding_state,
|
|
189
|
+
h.lifecycle_state as harness_state,
|
|
190
|
+
r.lifecycle_state as repo_state,
|
|
191
|
+
m.lifecycle_state as machine_state,
|
|
192
|
+
d.lifecycle_state as domain_state,
|
|
193
|
+
(select count(*) from agent_board.agents aa where aa.handle='atomic-lifecycle-agent') as agents,
|
|
194
|
+
(select count(*) from agent_board.fleet_machine_agents bb join agent_board.agents aa on aa.id=bb.agent_id where aa.handle='atomic-lifecycle-agent') as bindings
|
|
195
|
+
from agent_board.agents a
|
|
196
|
+
join agent_board.agent_signing_keys k on k.agent_id=a.id
|
|
197
|
+
join agent_board.fleet_machine_agents b on b.agent_id=a.id
|
|
198
|
+
join agent_board.fleet_machines m on m.id=b.machine_id
|
|
199
|
+
join agent_board.fleet_trust_domains d on d.id=m.trust_domain_id
|
|
200
|
+
join agent_board.fleet_harness_registrations h on h.machine_id=m.id
|
|
201
|
+
join agent_board.fleet_repo_scopes r on r.harness_registration_id=h.id
|
|
202
|
+
where a.handle='atomic-lifecycle-agent';
|
|
203
|
+
|
|
204
|
+
agent_status|key_status|binding_state|harness_state|repo_state|machine_state|domain_state|agents|bindings
|
|
205
|
+
------------+----------+-------------+-------------+----------+-------------+------------+------+--------
|
|
206
|
+
suspended |active |active |active |active |active |active | 1| 1
|
|
207
|
+
(1 row)
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
starting permutation: retry_begin retry_onboard lifecycle_begin revoke_agent_subtree retry_commit lifecycle_commit check
|
|
211
|
+
count
|
|
212
|
+
-----
|
|
213
|
+
1
|
|
214
|
+
(1 row)
|
|
215
|
+
|
|
216
|
+
step retry_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
217
|
+
step retry_onboard:
|
|
218
|
+
select identity_disposition, membership_disposition, binding_disposition
|
|
219
|
+
from agent_board.onboard_federated_fleet_agent(
|
|
220
|
+
'https://atomic-lifecycle.test', 'message-board', 'human-lifecycle',
|
|
221
|
+
jsonb_build_object('iss','https://atomic-lifecycle.test','aud','message-board','sub','human-lifecycle','iat',200),
|
|
222
|
+
'atomic-lifecycle-agent',
|
|
223
|
+
'yd_DIFGWGusVg3SbktDJQ1bE5UWvtR33xln4b05JIhk',
|
|
224
|
+
'raw_ed25519_base64url',
|
|
225
|
+
'sha256:NeVC2vx1MbTY56jUwJcLLr6YwB4IKCERsXWbUwhf5pA',
|
|
226
|
+
true, null, 'agent', ARRAY['board:send'], ARRAY[]::text[],
|
|
227
|
+
(select code from agent_board.board_invite_tokens where created_by_agent_id='16240000-0000-0000-0000-000000000001'),
|
|
228
|
+
(select id from agent_board.boards where slug='atomic-lifecycle-board'),
|
|
229
|
+
'16240000-0000-0000-0000-000000000003', 'codex', 'phase-loop',
|
|
230
|
+
'message-board', 'sha256:atomic-lifecycle-repo', 'worker', 'phase_worker',
|
|
231
|
+
'atomic-lifecycle-agent'
|
|
232
|
+
);
|
|
233
|
+
|
|
234
|
+
identity_disposition|membership_disposition|binding_disposition
|
|
235
|
+
--------------------+----------------------+-------------------
|
|
236
|
+
reused |reused |reused
|
|
237
|
+
(1 row)
|
|
238
|
+
|
|
239
|
+
step lifecycle_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
240
|
+
step revoke_agent_subtree:
|
|
241
|
+
select revoked_agent_count from agent_board.revoke_agent_subtree(
|
|
242
|
+
(select id from agent_board.agents where handle='atomic-lifecycle-agent'),
|
|
243
|
+
'16240000-0000-0000-0000-000000000001', 'isolation agent subtree revoke'
|
|
244
|
+
);
|
|
245
|
+
<waiting ...>
|
|
246
|
+
step retry_commit: COMMIT;
|
|
247
|
+
step revoke_agent_subtree: <... completed>
|
|
248
|
+
revoked_agent_count
|
|
249
|
+
-------------------
|
|
250
|
+
1
|
|
251
|
+
(1 row)
|
|
252
|
+
|
|
253
|
+
step lifecycle_commit: COMMIT;
|
|
254
|
+
step check:
|
|
255
|
+
select a.status as agent_status,
|
|
256
|
+
k.status as key_status,
|
|
257
|
+
b.lifecycle_state as binding_state,
|
|
258
|
+
h.lifecycle_state as harness_state,
|
|
259
|
+
r.lifecycle_state as repo_state,
|
|
260
|
+
m.lifecycle_state as machine_state,
|
|
261
|
+
d.lifecycle_state as domain_state,
|
|
262
|
+
(select count(*) from agent_board.agents aa where aa.handle='atomic-lifecycle-agent') as agents,
|
|
263
|
+
(select count(*) from agent_board.fleet_machine_agents bb join agent_board.agents aa on aa.id=bb.agent_id where aa.handle='atomic-lifecycle-agent') as bindings
|
|
264
|
+
from agent_board.agents a
|
|
265
|
+
join agent_board.agent_signing_keys k on k.agent_id=a.id
|
|
266
|
+
join agent_board.fleet_machine_agents b on b.agent_id=a.id
|
|
267
|
+
join agent_board.fleet_machines m on m.id=b.machine_id
|
|
268
|
+
join agent_board.fleet_trust_domains d on d.id=m.trust_domain_id
|
|
269
|
+
join agent_board.fleet_harness_registrations h on h.machine_id=m.id
|
|
270
|
+
join agent_board.fleet_repo_scopes r on r.harness_registration_id=h.id
|
|
271
|
+
where a.handle='atomic-lifecycle-agent';
|
|
272
|
+
|
|
273
|
+
agent_status|key_status|binding_state|harness_state|repo_state|machine_state|domain_state|agents|bindings
|
|
274
|
+
------------+----------+-------------+-------------+----------+-------------+------------+------+--------
|
|
275
|
+
revoked |revoked |active |active |active |active |active | 1| 1
|
|
276
|
+
(1 row)
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
starting permutation: retry_begin retry_onboard lifecycle_begin revoke_human_subtree retry_commit lifecycle_commit check
|
|
280
|
+
count
|
|
281
|
+
-----
|
|
282
|
+
1
|
|
283
|
+
(1 row)
|
|
284
|
+
|
|
285
|
+
step retry_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
286
|
+
step retry_onboard:
|
|
287
|
+
select identity_disposition, membership_disposition, binding_disposition
|
|
288
|
+
from agent_board.onboard_federated_fleet_agent(
|
|
289
|
+
'https://atomic-lifecycle.test', 'message-board', 'human-lifecycle',
|
|
290
|
+
jsonb_build_object('iss','https://atomic-lifecycle.test','aud','message-board','sub','human-lifecycle','iat',200),
|
|
291
|
+
'atomic-lifecycle-agent',
|
|
292
|
+
'yd_DIFGWGusVg3SbktDJQ1bE5UWvtR33xln4b05JIhk',
|
|
293
|
+
'raw_ed25519_base64url',
|
|
294
|
+
'sha256:NeVC2vx1MbTY56jUwJcLLr6YwB4IKCERsXWbUwhf5pA',
|
|
295
|
+
true, null, 'agent', ARRAY['board:send'], ARRAY[]::text[],
|
|
296
|
+
(select code from agent_board.board_invite_tokens where created_by_agent_id='16240000-0000-0000-0000-000000000001'),
|
|
297
|
+
(select id from agent_board.boards where slug='atomic-lifecycle-board'),
|
|
298
|
+
'16240000-0000-0000-0000-000000000003', 'codex', 'phase-loop',
|
|
299
|
+
'message-board', 'sha256:atomic-lifecycle-repo', 'worker', 'phase_worker',
|
|
300
|
+
'atomic-lifecycle-agent'
|
|
301
|
+
);
|
|
302
|
+
|
|
303
|
+
identity_disposition|membership_disposition|binding_disposition
|
|
304
|
+
--------------------+----------------------+-------------------
|
|
305
|
+
reused |reused |reused
|
|
306
|
+
(1 row)
|
|
307
|
+
|
|
308
|
+
step lifecycle_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
309
|
+
step revoke_human_subtree:
|
|
310
|
+
select revoked_agent_count from agent_board.revoke_human_subtree(
|
|
311
|
+
(select owner_user_id from agent_board.agents where handle='atomic-lifecycle-agent'),
|
|
312
|
+
'16240000-0000-0000-0000-000000000001', 'isolation human subtree revoke'
|
|
313
|
+
);
|
|
314
|
+
<waiting ...>
|
|
315
|
+
step retry_commit: COMMIT;
|
|
316
|
+
step revoke_human_subtree: <... completed>
|
|
317
|
+
revoked_agent_count
|
|
318
|
+
-------------------
|
|
319
|
+
1
|
|
320
|
+
(1 row)
|
|
321
|
+
|
|
322
|
+
step lifecycle_commit: COMMIT;
|
|
323
|
+
step check:
|
|
324
|
+
select a.status as agent_status,
|
|
325
|
+
k.status as key_status,
|
|
326
|
+
b.lifecycle_state as binding_state,
|
|
327
|
+
h.lifecycle_state as harness_state,
|
|
328
|
+
r.lifecycle_state as repo_state,
|
|
329
|
+
m.lifecycle_state as machine_state,
|
|
330
|
+
d.lifecycle_state as domain_state,
|
|
331
|
+
(select count(*) from agent_board.agents aa where aa.handle='atomic-lifecycle-agent') as agents,
|
|
332
|
+
(select count(*) from agent_board.fleet_machine_agents bb join agent_board.agents aa on aa.id=bb.agent_id where aa.handle='atomic-lifecycle-agent') as bindings
|
|
333
|
+
from agent_board.agents a
|
|
334
|
+
join agent_board.agent_signing_keys k on k.agent_id=a.id
|
|
335
|
+
join agent_board.fleet_machine_agents b on b.agent_id=a.id
|
|
336
|
+
join agent_board.fleet_machines m on m.id=b.machine_id
|
|
337
|
+
join agent_board.fleet_trust_domains d on d.id=m.trust_domain_id
|
|
338
|
+
join agent_board.fleet_harness_registrations h on h.machine_id=m.id
|
|
339
|
+
join agent_board.fleet_repo_scopes r on r.harness_registration_id=h.id
|
|
340
|
+
where a.handle='atomic-lifecycle-agent';
|
|
341
|
+
|
|
342
|
+
agent_status|key_status|binding_state|harness_state|repo_state|machine_state|domain_state|agents|bindings
|
|
343
|
+
------------+----------+-------------+-------------+----------+-------------+------------+------+--------
|
|
344
|
+
revoked |revoked |active |active |active |active |active | 1| 1
|
|
345
|
+
(1 row)
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
starting permutation: retry_begin retry_onboard lifecycle_begin revoke_harness retry_commit lifecycle_commit check
|
|
349
|
+
count
|
|
350
|
+
-----
|
|
351
|
+
1
|
|
352
|
+
(1 row)
|
|
353
|
+
|
|
354
|
+
step retry_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
355
|
+
step retry_onboard:
|
|
356
|
+
select identity_disposition, membership_disposition, binding_disposition
|
|
357
|
+
from agent_board.onboard_federated_fleet_agent(
|
|
358
|
+
'https://atomic-lifecycle.test', 'message-board', 'human-lifecycle',
|
|
359
|
+
jsonb_build_object('iss','https://atomic-lifecycle.test','aud','message-board','sub','human-lifecycle','iat',200),
|
|
360
|
+
'atomic-lifecycle-agent',
|
|
361
|
+
'yd_DIFGWGusVg3SbktDJQ1bE5UWvtR33xln4b05JIhk',
|
|
362
|
+
'raw_ed25519_base64url',
|
|
363
|
+
'sha256:NeVC2vx1MbTY56jUwJcLLr6YwB4IKCERsXWbUwhf5pA',
|
|
364
|
+
true, null, 'agent', ARRAY['board:send'], ARRAY[]::text[],
|
|
365
|
+
(select code from agent_board.board_invite_tokens where created_by_agent_id='16240000-0000-0000-0000-000000000001'),
|
|
366
|
+
(select id from agent_board.boards where slug='atomic-lifecycle-board'),
|
|
367
|
+
'16240000-0000-0000-0000-000000000003', 'codex', 'phase-loop',
|
|
368
|
+
'message-board', 'sha256:atomic-lifecycle-repo', 'worker', 'phase_worker',
|
|
369
|
+
'atomic-lifecycle-agent'
|
|
370
|
+
);
|
|
371
|
+
|
|
372
|
+
identity_disposition|membership_disposition|binding_disposition
|
|
373
|
+
--------------------+----------------------+-------------------
|
|
374
|
+
reused |reused |reused
|
|
375
|
+
(1 row)
|
|
376
|
+
|
|
377
|
+
step lifecycle_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
378
|
+
step revoke_harness:
|
|
379
|
+
select subject_kind from agent_board.revoke_fleet_subject(
|
|
380
|
+
'harness', (select id from agent_board.fleet_harness_registrations where machine_id='16240000-0000-0000-0000-000000000003'),
|
|
381
|
+
'16240000-0000-0000-0000-000000000001', 'isolation harness revoke', jsonb_build_object()
|
|
382
|
+
);
|
|
383
|
+
<waiting ...>
|
|
384
|
+
step retry_commit: COMMIT;
|
|
385
|
+
step revoke_harness: <... completed>
|
|
386
|
+
subject_kind
|
|
387
|
+
------------
|
|
388
|
+
harness
|
|
389
|
+
(1 row)
|
|
390
|
+
|
|
391
|
+
step lifecycle_commit: COMMIT;
|
|
392
|
+
step check:
|
|
393
|
+
select a.status as agent_status,
|
|
394
|
+
k.status as key_status,
|
|
395
|
+
b.lifecycle_state as binding_state,
|
|
396
|
+
h.lifecycle_state as harness_state,
|
|
397
|
+
r.lifecycle_state as repo_state,
|
|
398
|
+
m.lifecycle_state as machine_state,
|
|
399
|
+
d.lifecycle_state as domain_state,
|
|
400
|
+
(select count(*) from agent_board.agents aa where aa.handle='atomic-lifecycle-agent') as agents,
|
|
401
|
+
(select count(*) from agent_board.fleet_machine_agents bb join agent_board.agents aa on aa.id=bb.agent_id where aa.handle='atomic-lifecycle-agent') as bindings
|
|
402
|
+
from agent_board.agents a
|
|
403
|
+
join agent_board.agent_signing_keys k on k.agent_id=a.id
|
|
404
|
+
join agent_board.fleet_machine_agents b on b.agent_id=a.id
|
|
405
|
+
join agent_board.fleet_machines m on m.id=b.machine_id
|
|
406
|
+
join agent_board.fleet_trust_domains d on d.id=m.trust_domain_id
|
|
407
|
+
join agent_board.fleet_harness_registrations h on h.machine_id=m.id
|
|
408
|
+
join agent_board.fleet_repo_scopes r on r.harness_registration_id=h.id
|
|
409
|
+
where a.handle='atomic-lifecycle-agent';
|
|
410
|
+
|
|
411
|
+
agent_status|key_status|binding_state|harness_state|repo_state|machine_state|domain_state|agents|bindings
|
|
412
|
+
------------+----------+-------------+-------------+----------+-------------+------------+------+--------
|
|
413
|
+
active |active |active |revoked |active |active |active | 1| 1
|
|
414
|
+
(1 row)
|
|
415
|
+
|
|
416
|
+
|
|
417
|
+
starting permutation: retry_begin retry_onboard lifecycle_begin revoke_repo retry_commit lifecycle_commit check
|
|
418
|
+
count
|
|
419
|
+
-----
|
|
420
|
+
1
|
|
421
|
+
(1 row)
|
|
422
|
+
|
|
423
|
+
step retry_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
424
|
+
step retry_onboard:
|
|
425
|
+
select identity_disposition, membership_disposition, binding_disposition
|
|
426
|
+
from agent_board.onboard_federated_fleet_agent(
|
|
427
|
+
'https://atomic-lifecycle.test', 'message-board', 'human-lifecycle',
|
|
428
|
+
jsonb_build_object('iss','https://atomic-lifecycle.test','aud','message-board','sub','human-lifecycle','iat',200),
|
|
429
|
+
'atomic-lifecycle-agent',
|
|
430
|
+
'yd_DIFGWGusVg3SbktDJQ1bE5UWvtR33xln4b05JIhk',
|
|
431
|
+
'raw_ed25519_base64url',
|
|
432
|
+
'sha256:NeVC2vx1MbTY56jUwJcLLr6YwB4IKCERsXWbUwhf5pA',
|
|
433
|
+
true, null, 'agent', ARRAY['board:send'], ARRAY[]::text[],
|
|
434
|
+
(select code from agent_board.board_invite_tokens where created_by_agent_id='16240000-0000-0000-0000-000000000001'),
|
|
435
|
+
(select id from agent_board.boards where slug='atomic-lifecycle-board'),
|
|
436
|
+
'16240000-0000-0000-0000-000000000003', 'codex', 'phase-loop',
|
|
437
|
+
'message-board', 'sha256:atomic-lifecycle-repo', 'worker', 'phase_worker',
|
|
438
|
+
'atomic-lifecycle-agent'
|
|
439
|
+
);
|
|
440
|
+
|
|
441
|
+
identity_disposition|membership_disposition|binding_disposition
|
|
442
|
+
--------------------+----------------------+-------------------
|
|
443
|
+
reused |reused |reused
|
|
444
|
+
(1 row)
|
|
445
|
+
|
|
446
|
+
step lifecycle_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
447
|
+
step revoke_repo:
|
|
448
|
+
select subject_kind from agent_board.revoke_fleet_subject(
|
|
449
|
+
'repo_scope', (select frs.id from agent_board.fleet_repo_scopes frs join agent_board.fleet_harness_registrations fhr on fhr.id=frs.harness_registration_id where fhr.machine_id='16240000-0000-0000-0000-000000000003'),
|
|
450
|
+
'16240000-0000-0000-0000-000000000001', 'isolation repo revoke', jsonb_build_object()
|
|
451
|
+
);
|
|
452
|
+
<waiting ...>
|
|
453
|
+
step retry_commit: COMMIT;
|
|
454
|
+
step revoke_repo: <... completed>
|
|
455
|
+
subject_kind
|
|
456
|
+
------------
|
|
457
|
+
repo_scope
|
|
458
|
+
(1 row)
|
|
459
|
+
|
|
460
|
+
step lifecycle_commit: COMMIT;
|
|
461
|
+
step check:
|
|
462
|
+
select a.status as agent_status,
|
|
463
|
+
k.status as key_status,
|
|
464
|
+
b.lifecycle_state as binding_state,
|
|
465
|
+
h.lifecycle_state as harness_state,
|
|
466
|
+
r.lifecycle_state as repo_state,
|
|
467
|
+
m.lifecycle_state as machine_state,
|
|
468
|
+
d.lifecycle_state as domain_state,
|
|
469
|
+
(select count(*) from agent_board.agents aa where aa.handle='atomic-lifecycle-agent') as agents,
|
|
470
|
+
(select count(*) from agent_board.fleet_machine_agents bb join agent_board.agents aa on aa.id=bb.agent_id where aa.handle='atomic-lifecycle-agent') as bindings
|
|
471
|
+
from agent_board.agents a
|
|
472
|
+
join agent_board.agent_signing_keys k on k.agent_id=a.id
|
|
473
|
+
join agent_board.fleet_machine_agents b on b.agent_id=a.id
|
|
474
|
+
join agent_board.fleet_machines m on m.id=b.machine_id
|
|
475
|
+
join agent_board.fleet_trust_domains d on d.id=m.trust_domain_id
|
|
476
|
+
join agent_board.fleet_harness_registrations h on h.machine_id=m.id
|
|
477
|
+
join agent_board.fleet_repo_scopes r on r.harness_registration_id=h.id
|
|
478
|
+
where a.handle='atomic-lifecycle-agent';
|
|
479
|
+
|
|
480
|
+
agent_status|key_status|binding_state|harness_state|repo_state|machine_state|domain_state|agents|bindings
|
|
481
|
+
------------+----------+-------------+-------------+----------+-------------+------------+------+--------
|
|
482
|
+
active |active |active |active |revoked |active |active | 1| 1
|
|
483
|
+
(1 row)
|
|
484
|
+
|
|
485
|
+
|
|
486
|
+
starting permutation: retry_begin retry_onboard lifecycle_begin revoke_machine retry_commit lifecycle_commit check
|
|
487
|
+
count
|
|
488
|
+
-----
|
|
489
|
+
1
|
|
490
|
+
(1 row)
|
|
491
|
+
|
|
492
|
+
step retry_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
493
|
+
step retry_onboard:
|
|
494
|
+
select identity_disposition, membership_disposition, binding_disposition
|
|
495
|
+
from agent_board.onboard_federated_fleet_agent(
|
|
496
|
+
'https://atomic-lifecycle.test', 'message-board', 'human-lifecycle',
|
|
497
|
+
jsonb_build_object('iss','https://atomic-lifecycle.test','aud','message-board','sub','human-lifecycle','iat',200),
|
|
498
|
+
'atomic-lifecycle-agent',
|
|
499
|
+
'yd_DIFGWGusVg3SbktDJQ1bE5UWvtR33xln4b05JIhk',
|
|
500
|
+
'raw_ed25519_base64url',
|
|
501
|
+
'sha256:NeVC2vx1MbTY56jUwJcLLr6YwB4IKCERsXWbUwhf5pA',
|
|
502
|
+
true, null, 'agent', ARRAY['board:send'], ARRAY[]::text[],
|
|
503
|
+
(select code from agent_board.board_invite_tokens where created_by_agent_id='16240000-0000-0000-0000-000000000001'),
|
|
504
|
+
(select id from agent_board.boards where slug='atomic-lifecycle-board'),
|
|
505
|
+
'16240000-0000-0000-0000-000000000003', 'codex', 'phase-loop',
|
|
506
|
+
'message-board', 'sha256:atomic-lifecycle-repo', 'worker', 'phase_worker',
|
|
507
|
+
'atomic-lifecycle-agent'
|
|
508
|
+
);
|
|
509
|
+
|
|
510
|
+
identity_disposition|membership_disposition|binding_disposition
|
|
511
|
+
--------------------+----------------------+-------------------
|
|
512
|
+
reused |reused |reused
|
|
513
|
+
(1 row)
|
|
514
|
+
|
|
515
|
+
step lifecycle_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
516
|
+
step revoke_machine:
|
|
517
|
+
select subject_kind from agent_board.revoke_fleet_subject(
|
|
518
|
+
'machine', '16240000-0000-0000-0000-000000000003',
|
|
519
|
+
'16240000-0000-0000-0000-000000000001', 'isolation machine revoke', jsonb_build_object()
|
|
520
|
+
);
|
|
521
|
+
<waiting ...>
|
|
522
|
+
step retry_commit: COMMIT;
|
|
523
|
+
step revoke_machine: <... completed>
|
|
524
|
+
subject_kind
|
|
525
|
+
------------
|
|
526
|
+
machine
|
|
527
|
+
(1 row)
|
|
528
|
+
|
|
529
|
+
step lifecycle_commit: COMMIT;
|
|
530
|
+
step check:
|
|
531
|
+
select a.status as agent_status,
|
|
532
|
+
k.status as key_status,
|
|
533
|
+
b.lifecycle_state as binding_state,
|
|
534
|
+
h.lifecycle_state as harness_state,
|
|
535
|
+
r.lifecycle_state as repo_state,
|
|
536
|
+
m.lifecycle_state as machine_state,
|
|
537
|
+
d.lifecycle_state as domain_state,
|
|
538
|
+
(select count(*) from agent_board.agents aa where aa.handle='atomic-lifecycle-agent') as agents,
|
|
539
|
+
(select count(*) from agent_board.fleet_machine_agents bb join agent_board.agents aa on aa.id=bb.agent_id where aa.handle='atomic-lifecycle-agent') as bindings
|
|
540
|
+
from agent_board.agents a
|
|
541
|
+
join agent_board.agent_signing_keys k on k.agent_id=a.id
|
|
542
|
+
join agent_board.fleet_machine_agents b on b.agent_id=a.id
|
|
543
|
+
join agent_board.fleet_machines m on m.id=b.machine_id
|
|
544
|
+
join agent_board.fleet_trust_domains d on d.id=m.trust_domain_id
|
|
545
|
+
join agent_board.fleet_harness_registrations h on h.machine_id=m.id
|
|
546
|
+
join agent_board.fleet_repo_scopes r on r.harness_registration_id=h.id
|
|
547
|
+
where a.handle='atomic-lifecycle-agent';
|
|
548
|
+
|
|
549
|
+
agent_status|key_status|binding_state|harness_state|repo_state|machine_state|domain_state|agents|bindings
|
|
550
|
+
------------+----------+-------------+-------------+----------+-------------+------------+------+--------
|
|
551
|
+
active |active |active |active |active |revoked |active | 1| 1
|
|
552
|
+
(1 row)
|
|
553
|
+
|
|
554
|
+
|
|
555
|
+
starting permutation: retry_begin retry_onboard lifecycle_begin reclaim_machine retry_commit lifecycle_commit check
|
|
556
|
+
count
|
|
557
|
+
-----
|
|
558
|
+
1
|
|
559
|
+
(1 row)
|
|
560
|
+
|
|
561
|
+
step retry_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
562
|
+
step retry_onboard:
|
|
563
|
+
select identity_disposition, membership_disposition, binding_disposition
|
|
564
|
+
from agent_board.onboard_federated_fleet_agent(
|
|
565
|
+
'https://atomic-lifecycle.test', 'message-board', 'human-lifecycle',
|
|
566
|
+
jsonb_build_object('iss','https://atomic-lifecycle.test','aud','message-board','sub','human-lifecycle','iat',200),
|
|
567
|
+
'atomic-lifecycle-agent',
|
|
568
|
+
'yd_DIFGWGusVg3SbktDJQ1bE5UWvtR33xln4b05JIhk',
|
|
569
|
+
'raw_ed25519_base64url',
|
|
570
|
+
'sha256:NeVC2vx1MbTY56jUwJcLLr6YwB4IKCERsXWbUwhf5pA',
|
|
571
|
+
true, null, 'agent', ARRAY['board:send'], ARRAY[]::text[],
|
|
572
|
+
(select code from agent_board.board_invite_tokens where created_by_agent_id='16240000-0000-0000-0000-000000000001'),
|
|
573
|
+
(select id from agent_board.boards where slug='atomic-lifecycle-board'),
|
|
574
|
+
'16240000-0000-0000-0000-000000000003', 'codex', 'phase-loop',
|
|
575
|
+
'message-board', 'sha256:atomic-lifecycle-repo', 'worker', 'phase_worker',
|
|
576
|
+
'atomic-lifecycle-agent'
|
|
577
|
+
);
|
|
578
|
+
|
|
579
|
+
identity_disposition|membership_disposition|binding_disposition
|
|
580
|
+
--------------------+----------------------+-------------------
|
|
581
|
+
reused |reused |reused
|
|
582
|
+
(1 row)
|
|
583
|
+
|
|
584
|
+
step lifecycle_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
585
|
+
step reclaim_machine:
|
|
586
|
+
select owner_agent_id from agent_board.reclaim_fleet_machine(
|
|
587
|
+
'16240000-0000-0000-0000-000000000003',
|
|
588
|
+
'16240000-0000-0000-0000-000000000004',
|
|
589
|
+
'16240000-0000-0000-0000-000000000001', 'isolation machine reclaim'
|
|
590
|
+
);
|
|
591
|
+
<waiting ...>
|
|
592
|
+
step retry_commit: COMMIT;
|
|
593
|
+
step reclaim_machine: <... completed>
|
|
594
|
+
owner_agent_id
|
|
595
|
+
------------------------------------
|
|
596
|
+
16240000-0000-0000-0000-000000000004
|
|
597
|
+
(1 row)
|
|
598
|
+
|
|
599
|
+
step lifecycle_commit: COMMIT;
|
|
600
|
+
step check:
|
|
601
|
+
select a.status as agent_status,
|
|
602
|
+
k.status as key_status,
|
|
603
|
+
b.lifecycle_state as binding_state,
|
|
604
|
+
h.lifecycle_state as harness_state,
|
|
605
|
+
r.lifecycle_state as repo_state,
|
|
606
|
+
m.lifecycle_state as machine_state,
|
|
607
|
+
d.lifecycle_state as domain_state,
|
|
608
|
+
(select count(*) from agent_board.agents aa where aa.handle='atomic-lifecycle-agent') as agents,
|
|
609
|
+
(select count(*) from agent_board.fleet_machine_agents bb join agent_board.agents aa on aa.id=bb.agent_id where aa.handle='atomic-lifecycle-agent') as bindings
|
|
610
|
+
from agent_board.agents a
|
|
611
|
+
join agent_board.agent_signing_keys k on k.agent_id=a.id
|
|
612
|
+
join agent_board.fleet_machine_agents b on b.agent_id=a.id
|
|
613
|
+
join agent_board.fleet_machines m on m.id=b.machine_id
|
|
614
|
+
join agent_board.fleet_trust_domains d on d.id=m.trust_domain_id
|
|
615
|
+
join agent_board.fleet_harness_registrations h on h.machine_id=m.id
|
|
616
|
+
join agent_board.fleet_repo_scopes r on r.harness_registration_id=h.id
|
|
617
|
+
where a.handle='atomic-lifecycle-agent';
|
|
618
|
+
|
|
619
|
+
agent_status|key_status|binding_state|harness_state|repo_state|machine_state|domain_state|agents|bindings
|
|
620
|
+
------------+----------+-------------+-------------+----------+-------------+------------+------+--------
|
|
621
|
+
active |active |revoked |active |active |active |active | 1| 1
|
|
622
|
+
(1 row)
|
|
623
|
+
|
|
624
|
+
|
|
625
|
+
starting permutation: retry_begin retry_onboard lifecycle_begin revoke_domain retry_commit lifecycle_commit check
|
|
626
|
+
count
|
|
627
|
+
-----
|
|
628
|
+
1
|
|
629
|
+
(1 row)
|
|
630
|
+
|
|
631
|
+
step retry_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
632
|
+
step retry_onboard:
|
|
633
|
+
select identity_disposition, membership_disposition, binding_disposition
|
|
634
|
+
from agent_board.onboard_federated_fleet_agent(
|
|
635
|
+
'https://atomic-lifecycle.test', 'message-board', 'human-lifecycle',
|
|
636
|
+
jsonb_build_object('iss','https://atomic-lifecycle.test','aud','message-board','sub','human-lifecycle','iat',200),
|
|
637
|
+
'atomic-lifecycle-agent',
|
|
638
|
+
'yd_DIFGWGusVg3SbktDJQ1bE5UWvtR33xln4b05JIhk',
|
|
639
|
+
'raw_ed25519_base64url',
|
|
640
|
+
'sha256:NeVC2vx1MbTY56jUwJcLLr6YwB4IKCERsXWbUwhf5pA',
|
|
641
|
+
true, null, 'agent', ARRAY['board:send'], ARRAY[]::text[],
|
|
642
|
+
(select code from agent_board.board_invite_tokens where created_by_agent_id='16240000-0000-0000-0000-000000000001'),
|
|
643
|
+
(select id from agent_board.boards where slug='atomic-lifecycle-board'),
|
|
644
|
+
'16240000-0000-0000-0000-000000000003', 'codex', 'phase-loop',
|
|
645
|
+
'message-board', 'sha256:atomic-lifecycle-repo', 'worker', 'phase_worker',
|
|
646
|
+
'atomic-lifecycle-agent'
|
|
647
|
+
);
|
|
648
|
+
|
|
649
|
+
identity_disposition|membership_disposition|binding_disposition
|
|
650
|
+
--------------------+----------------------+-------------------
|
|
651
|
+
reused |reused |reused
|
|
652
|
+
(1 row)
|
|
653
|
+
|
|
654
|
+
step lifecycle_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
655
|
+
step revoke_domain:
|
|
656
|
+
select subject_kind from agent_board.revoke_fleet_subject(
|
|
657
|
+
'trust_domain', '16240000-0000-0000-0000-000000000002',
|
|
658
|
+
'16240000-0000-0000-0000-000000000001', 'isolation domain revoke', jsonb_build_object()
|
|
659
|
+
);
|
|
660
|
+
<waiting ...>
|
|
661
|
+
step retry_commit: COMMIT;
|
|
662
|
+
step revoke_domain: <... completed>
|
|
663
|
+
subject_kind
|
|
664
|
+
------------
|
|
665
|
+
trust_domain
|
|
666
|
+
(1 row)
|
|
667
|
+
|
|
668
|
+
step lifecycle_commit: COMMIT;
|
|
669
|
+
step check:
|
|
670
|
+
select a.status as agent_status,
|
|
671
|
+
k.status as key_status,
|
|
672
|
+
b.lifecycle_state as binding_state,
|
|
673
|
+
h.lifecycle_state as harness_state,
|
|
674
|
+
r.lifecycle_state as repo_state,
|
|
675
|
+
m.lifecycle_state as machine_state,
|
|
676
|
+
d.lifecycle_state as domain_state,
|
|
677
|
+
(select count(*) from agent_board.agents aa where aa.handle='atomic-lifecycle-agent') as agents,
|
|
678
|
+
(select count(*) from agent_board.fleet_machine_agents bb join agent_board.agents aa on aa.id=bb.agent_id where aa.handle='atomic-lifecycle-agent') as bindings
|
|
679
|
+
from agent_board.agents a
|
|
680
|
+
join agent_board.agent_signing_keys k on k.agent_id=a.id
|
|
681
|
+
join agent_board.fleet_machine_agents b on b.agent_id=a.id
|
|
682
|
+
join agent_board.fleet_machines m on m.id=b.machine_id
|
|
683
|
+
join agent_board.fleet_trust_domains d on d.id=m.trust_domain_id
|
|
684
|
+
join agent_board.fleet_harness_registrations h on h.machine_id=m.id
|
|
685
|
+
join agent_board.fleet_repo_scopes r on r.harness_registration_id=h.id
|
|
686
|
+
where a.handle='atomic-lifecycle-agent';
|
|
687
|
+
|
|
688
|
+
agent_status|key_status|binding_state|harness_state|repo_state|machine_state|domain_state|agents|bindings
|
|
689
|
+
------------+----------+-------------+-------------+----------+-------------+------------+------+--------
|
|
690
|
+
active |active |active |active |active |active |revoked | 1| 1
|
|
691
|
+
(1 row)
|
|
692
|
+
|
|
693
|
+
|
|
694
|
+
starting permutation: retry_begin retry_onboard lifecycle_begin reclaim_domain retry_commit lifecycle_commit check
|
|
695
|
+
count
|
|
696
|
+
-----
|
|
697
|
+
1
|
|
698
|
+
(1 row)
|
|
699
|
+
|
|
700
|
+
step retry_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
701
|
+
step retry_onboard:
|
|
702
|
+
select identity_disposition, membership_disposition, binding_disposition
|
|
703
|
+
from agent_board.onboard_federated_fleet_agent(
|
|
704
|
+
'https://atomic-lifecycle.test', 'message-board', 'human-lifecycle',
|
|
705
|
+
jsonb_build_object('iss','https://atomic-lifecycle.test','aud','message-board','sub','human-lifecycle','iat',200),
|
|
706
|
+
'atomic-lifecycle-agent',
|
|
707
|
+
'yd_DIFGWGusVg3SbktDJQ1bE5UWvtR33xln4b05JIhk',
|
|
708
|
+
'raw_ed25519_base64url',
|
|
709
|
+
'sha256:NeVC2vx1MbTY56jUwJcLLr6YwB4IKCERsXWbUwhf5pA',
|
|
710
|
+
true, null, 'agent', ARRAY['board:send'], ARRAY[]::text[],
|
|
711
|
+
(select code from agent_board.board_invite_tokens where created_by_agent_id='16240000-0000-0000-0000-000000000001'),
|
|
712
|
+
(select id from agent_board.boards where slug='atomic-lifecycle-board'),
|
|
713
|
+
'16240000-0000-0000-0000-000000000003', 'codex', 'phase-loop',
|
|
714
|
+
'message-board', 'sha256:atomic-lifecycle-repo', 'worker', 'phase_worker',
|
|
715
|
+
'atomic-lifecycle-agent'
|
|
716
|
+
);
|
|
717
|
+
|
|
718
|
+
identity_disposition|membership_disposition|binding_disposition
|
|
719
|
+
--------------------+----------------------+-------------------
|
|
720
|
+
reused |reused |reused
|
|
721
|
+
(1 row)
|
|
722
|
+
|
|
723
|
+
step lifecycle_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
724
|
+
step reclaim_domain:
|
|
725
|
+
select owner_agent_id from agent_board.reclaim_fleet_trust_domain(
|
|
726
|
+
'16240000-0000-0000-0000-000000000002',
|
|
727
|
+
'16240000-0000-0000-0000-000000000004',
|
|
728
|
+
'16240000-0000-0000-0000-000000000001', 'isolation domain reclaim'
|
|
729
|
+
);
|
|
730
|
+
<waiting ...>
|
|
731
|
+
step retry_commit: COMMIT;
|
|
732
|
+
step reclaim_domain: <... completed>
|
|
733
|
+
owner_agent_id
|
|
734
|
+
------------------------------------
|
|
735
|
+
16240000-0000-0000-0000-000000000004
|
|
736
|
+
(1 row)
|
|
737
|
+
|
|
738
|
+
step lifecycle_commit: COMMIT;
|
|
739
|
+
step check:
|
|
740
|
+
select a.status as agent_status,
|
|
741
|
+
k.status as key_status,
|
|
742
|
+
b.lifecycle_state as binding_state,
|
|
743
|
+
h.lifecycle_state as harness_state,
|
|
744
|
+
r.lifecycle_state as repo_state,
|
|
745
|
+
m.lifecycle_state as machine_state,
|
|
746
|
+
d.lifecycle_state as domain_state,
|
|
747
|
+
(select count(*) from agent_board.agents aa where aa.handle='atomic-lifecycle-agent') as agents,
|
|
748
|
+
(select count(*) from agent_board.fleet_machine_agents bb join agent_board.agents aa on aa.id=bb.agent_id where aa.handle='atomic-lifecycle-agent') as bindings
|
|
749
|
+
from agent_board.agents a
|
|
750
|
+
join agent_board.agent_signing_keys k on k.agent_id=a.id
|
|
751
|
+
join agent_board.fleet_machine_agents b on b.agent_id=a.id
|
|
752
|
+
join agent_board.fleet_machines m on m.id=b.machine_id
|
|
753
|
+
join agent_board.fleet_trust_domains d on d.id=m.trust_domain_id
|
|
754
|
+
join agent_board.fleet_harness_registrations h on h.machine_id=m.id
|
|
755
|
+
join agent_board.fleet_repo_scopes r on r.harness_registration_id=h.id
|
|
756
|
+
where a.handle='atomic-lifecycle-agent';
|
|
757
|
+
|
|
758
|
+
agent_status|key_status|binding_state|harness_state|repo_state|machine_state|domain_state|agents|bindings
|
|
759
|
+
------------+----------+-------------+-------------+----------+-------------+------------+------+--------
|
|
760
|
+
active |active |active |active |active |active |active | 1| 1
|
|
761
|
+
(1 row)
|
|
762
|
+
|
|
763
|
+
|
|
764
|
+
starting permutation: lifecycle_begin revoke_fleet_agent retry_begin retry_onboard lifecycle_commit retry_commit check
|
|
765
|
+
count
|
|
766
|
+
-----
|
|
767
|
+
1
|
|
768
|
+
(1 row)
|
|
769
|
+
|
|
770
|
+
step lifecycle_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
771
|
+
step revoke_fleet_agent:
|
|
772
|
+
select subject_kind from agent_board.revoke_fleet_subject(
|
|
773
|
+
'agent', (select id from agent_board.agents where handle='atomic-lifecycle-agent'),
|
|
774
|
+
'16240000-0000-0000-0000-000000000001', 'isolation agent revoke', jsonb_build_object()
|
|
775
|
+
);
|
|
776
|
+
|
|
777
|
+
subject_kind
|
|
778
|
+
------------
|
|
779
|
+
agent
|
|
780
|
+
(1 row)
|
|
781
|
+
|
|
782
|
+
step retry_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
783
|
+
step retry_onboard:
|
|
784
|
+
select identity_disposition, membership_disposition, binding_disposition
|
|
785
|
+
from agent_board.onboard_federated_fleet_agent(
|
|
786
|
+
'https://atomic-lifecycle.test', 'message-board', 'human-lifecycle',
|
|
787
|
+
jsonb_build_object('iss','https://atomic-lifecycle.test','aud','message-board','sub','human-lifecycle','iat',200),
|
|
788
|
+
'atomic-lifecycle-agent',
|
|
789
|
+
'yd_DIFGWGusVg3SbktDJQ1bE5UWvtR33xln4b05JIhk',
|
|
790
|
+
'raw_ed25519_base64url',
|
|
791
|
+
'sha256:NeVC2vx1MbTY56jUwJcLLr6YwB4IKCERsXWbUwhf5pA',
|
|
792
|
+
true, null, 'agent', ARRAY['board:send'], ARRAY[]::text[],
|
|
793
|
+
(select code from agent_board.board_invite_tokens where created_by_agent_id='16240000-0000-0000-0000-000000000001'),
|
|
794
|
+
(select id from agent_board.boards where slug='atomic-lifecycle-board'),
|
|
795
|
+
'16240000-0000-0000-0000-000000000003', 'codex', 'phase-loop',
|
|
796
|
+
'message-board', 'sha256:atomic-lifecycle-repo', 'worker', 'phase_worker',
|
|
797
|
+
'atomic-lifecycle-agent'
|
|
798
|
+
);
|
|
799
|
+
<waiting ...>
|
|
800
|
+
step lifecycle_commit: COMMIT;
|
|
801
|
+
step retry_onboard: <... completed>
|
|
802
|
+
ERROR: fleet onboarding invite is not usable
|
|
803
|
+
step retry_commit: COMMIT;
|
|
804
|
+
step check:
|
|
805
|
+
select a.status as agent_status,
|
|
806
|
+
k.status as key_status,
|
|
807
|
+
b.lifecycle_state as binding_state,
|
|
808
|
+
h.lifecycle_state as harness_state,
|
|
809
|
+
r.lifecycle_state as repo_state,
|
|
810
|
+
m.lifecycle_state as machine_state,
|
|
811
|
+
d.lifecycle_state as domain_state,
|
|
812
|
+
(select count(*) from agent_board.agents aa where aa.handle='atomic-lifecycle-agent') as agents,
|
|
813
|
+
(select count(*) from agent_board.fleet_machine_agents bb join agent_board.agents aa on aa.id=bb.agent_id where aa.handle='atomic-lifecycle-agent') as bindings
|
|
814
|
+
from agent_board.agents a
|
|
815
|
+
join agent_board.agent_signing_keys k on k.agent_id=a.id
|
|
816
|
+
join agent_board.fleet_machine_agents b on b.agent_id=a.id
|
|
817
|
+
join agent_board.fleet_machines m on m.id=b.machine_id
|
|
818
|
+
join agent_board.fleet_trust_domains d on d.id=m.trust_domain_id
|
|
819
|
+
join agent_board.fleet_harness_registrations h on h.machine_id=m.id
|
|
820
|
+
join agent_board.fleet_repo_scopes r on r.harness_registration_id=h.id
|
|
821
|
+
where a.handle='atomic-lifecycle-agent';
|
|
822
|
+
|
|
823
|
+
agent_status|key_status|binding_state|harness_state|repo_state|machine_state|domain_state|agents|bindings
|
|
824
|
+
------------+----------+-------------+-------------+----------+-------------+------------+------+--------
|
|
825
|
+
active |active |revoked |active |active |active |active | 1| 1
|
|
826
|
+
(1 row)
|
|
827
|
+
|
|
828
|
+
|
|
829
|
+
starting permutation: lifecycle_begin revoke_fleet_key retry_begin retry_onboard lifecycle_commit retry_commit check
|
|
830
|
+
count
|
|
831
|
+
-----
|
|
832
|
+
1
|
|
833
|
+
(1 row)
|
|
834
|
+
|
|
835
|
+
step lifecycle_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
836
|
+
step revoke_fleet_key:
|
|
837
|
+
select subject_kind from agent_board.revoke_fleet_subject(
|
|
838
|
+
'signing_key', (select k.id from agent_board.agent_signing_keys k join agent_board.agents a on a.id=k.agent_id where a.handle='atomic-lifecycle-agent'),
|
|
839
|
+
'16240000-0000-0000-0000-000000000001', 'isolation key revoke', jsonb_build_object()
|
|
840
|
+
);
|
|
841
|
+
|
|
842
|
+
subject_kind
|
|
843
|
+
------------
|
|
844
|
+
signing_key
|
|
845
|
+
(1 row)
|
|
846
|
+
|
|
847
|
+
step retry_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
848
|
+
step retry_onboard:
|
|
849
|
+
select identity_disposition, membership_disposition, binding_disposition
|
|
850
|
+
from agent_board.onboard_federated_fleet_agent(
|
|
851
|
+
'https://atomic-lifecycle.test', 'message-board', 'human-lifecycle',
|
|
852
|
+
jsonb_build_object('iss','https://atomic-lifecycle.test','aud','message-board','sub','human-lifecycle','iat',200),
|
|
853
|
+
'atomic-lifecycle-agent',
|
|
854
|
+
'yd_DIFGWGusVg3SbktDJQ1bE5UWvtR33xln4b05JIhk',
|
|
855
|
+
'raw_ed25519_base64url',
|
|
856
|
+
'sha256:NeVC2vx1MbTY56jUwJcLLr6YwB4IKCERsXWbUwhf5pA',
|
|
857
|
+
true, null, 'agent', ARRAY['board:send'], ARRAY[]::text[],
|
|
858
|
+
(select code from agent_board.board_invite_tokens where created_by_agent_id='16240000-0000-0000-0000-000000000001'),
|
|
859
|
+
(select id from agent_board.boards where slug='atomic-lifecycle-board'),
|
|
860
|
+
'16240000-0000-0000-0000-000000000003', 'codex', 'phase-loop',
|
|
861
|
+
'message-board', 'sha256:atomic-lifecycle-repo', 'worker', 'phase_worker',
|
|
862
|
+
'atomic-lifecycle-agent'
|
|
863
|
+
);
|
|
864
|
+
<waiting ...>
|
|
865
|
+
step lifecycle_commit: COMMIT;
|
|
866
|
+
step retry_onboard: <... completed>
|
|
867
|
+
ERROR: enrollment replay conflicts with the frozen identity contract
|
|
868
|
+
step retry_commit: COMMIT;
|
|
869
|
+
step check:
|
|
870
|
+
select a.status as agent_status,
|
|
871
|
+
k.status as key_status,
|
|
872
|
+
b.lifecycle_state as binding_state,
|
|
873
|
+
h.lifecycle_state as harness_state,
|
|
874
|
+
r.lifecycle_state as repo_state,
|
|
875
|
+
m.lifecycle_state as machine_state,
|
|
876
|
+
d.lifecycle_state as domain_state,
|
|
877
|
+
(select count(*) from agent_board.agents aa where aa.handle='atomic-lifecycle-agent') as agents,
|
|
878
|
+
(select count(*) from agent_board.fleet_machine_agents bb join agent_board.agents aa on aa.id=bb.agent_id where aa.handle='atomic-lifecycle-agent') as bindings
|
|
879
|
+
from agent_board.agents a
|
|
880
|
+
join agent_board.agent_signing_keys k on k.agent_id=a.id
|
|
881
|
+
join agent_board.fleet_machine_agents b on b.agent_id=a.id
|
|
882
|
+
join agent_board.fleet_machines m on m.id=b.machine_id
|
|
883
|
+
join agent_board.fleet_trust_domains d on d.id=m.trust_domain_id
|
|
884
|
+
join agent_board.fleet_harness_registrations h on h.machine_id=m.id
|
|
885
|
+
join agent_board.fleet_repo_scopes r on r.harness_registration_id=h.id
|
|
886
|
+
where a.handle='atomic-lifecycle-agent';
|
|
887
|
+
|
|
888
|
+
agent_status|key_status|binding_state|harness_state|repo_state|machine_state|domain_state|agents|bindings
|
|
889
|
+
------------+----------+-------------+-------------+----------+-------------+------------+------+--------
|
|
890
|
+
active |revoked |active |active |active |active |active | 1| 1
|
|
891
|
+
(1 row)
|
|
892
|
+
|
|
893
|
+
|
|
894
|
+
starting permutation: lifecycle_begin revoke_agent retry_begin retry_onboard lifecycle_commit retry_commit check
|
|
895
|
+
count
|
|
896
|
+
-----
|
|
897
|
+
1
|
|
898
|
+
(1 row)
|
|
899
|
+
|
|
900
|
+
step lifecycle_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
901
|
+
step revoke_agent:
|
|
902
|
+
select status from agent_board.revoke_agent(
|
|
903
|
+
(select id from agent_board.agents where handle='atomic-lifecycle-agent'),
|
|
904
|
+
'isolation legacy agent revoke'
|
|
905
|
+
);
|
|
906
|
+
|
|
907
|
+
status
|
|
908
|
+
---------
|
|
909
|
+
suspended
|
|
910
|
+
(1 row)
|
|
911
|
+
|
|
912
|
+
step retry_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
913
|
+
step retry_onboard:
|
|
914
|
+
select identity_disposition, membership_disposition, binding_disposition
|
|
915
|
+
from agent_board.onboard_federated_fleet_agent(
|
|
916
|
+
'https://atomic-lifecycle.test', 'message-board', 'human-lifecycle',
|
|
917
|
+
jsonb_build_object('iss','https://atomic-lifecycle.test','aud','message-board','sub','human-lifecycle','iat',200),
|
|
918
|
+
'atomic-lifecycle-agent',
|
|
919
|
+
'yd_DIFGWGusVg3SbktDJQ1bE5UWvtR33xln4b05JIhk',
|
|
920
|
+
'raw_ed25519_base64url',
|
|
921
|
+
'sha256:NeVC2vx1MbTY56jUwJcLLr6YwB4IKCERsXWbUwhf5pA',
|
|
922
|
+
true, null, 'agent', ARRAY['board:send'], ARRAY[]::text[],
|
|
923
|
+
(select code from agent_board.board_invite_tokens where created_by_agent_id='16240000-0000-0000-0000-000000000001'),
|
|
924
|
+
(select id from agent_board.boards where slug='atomic-lifecycle-board'),
|
|
925
|
+
'16240000-0000-0000-0000-000000000003', 'codex', 'phase-loop',
|
|
926
|
+
'message-board', 'sha256:atomic-lifecycle-repo', 'worker', 'phase_worker',
|
|
927
|
+
'atomic-lifecycle-agent'
|
|
928
|
+
);
|
|
929
|
+
<waiting ...>
|
|
930
|
+
step lifecycle_commit: COMMIT;
|
|
931
|
+
step retry_onboard: <... completed>
|
|
932
|
+
ERROR: enrollment replay conflicts with the frozen identity contract
|
|
933
|
+
step retry_commit: COMMIT;
|
|
934
|
+
step check:
|
|
935
|
+
select a.status as agent_status,
|
|
936
|
+
k.status as key_status,
|
|
937
|
+
b.lifecycle_state as binding_state,
|
|
938
|
+
h.lifecycle_state as harness_state,
|
|
939
|
+
r.lifecycle_state as repo_state,
|
|
940
|
+
m.lifecycle_state as machine_state,
|
|
941
|
+
d.lifecycle_state as domain_state,
|
|
942
|
+
(select count(*) from agent_board.agents aa where aa.handle='atomic-lifecycle-agent') as agents,
|
|
943
|
+
(select count(*) from agent_board.fleet_machine_agents bb join agent_board.agents aa on aa.id=bb.agent_id where aa.handle='atomic-lifecycle-agent') as bindings
|
|
944
|
+
from agent_board.agents a
|
|
945
|
+
join agent_board.agent_signing_keys k on k.agent_id=a.id
|
|
946
|
+
join agent_board.fleet_machine_agents b on b.agent_id=a.id
|
|
947
|
+
join agent_board.fleet_machines m on m.id=b.machine_id
|
|
948
|
+
join agent_board.fleet_trust_domains d on d.id=m.trust_domain_id
|
|
949
|
+
join agent_board.fleet_harness_registrations h on h.machine_id=m.id
|
|
950
|
+
join agent_board.fleet_repo_scopes r on r.harness_registration_id=h.id
|
|
951
|
+
where a.handle='atomic-lifecycle-agent';
|
|
952
|
+
|
|
953
|
+
agent_status|key_status|binding_state|harness_state|repo_state|machine_state|domain_state|agents|bindings
|
|
954
|
+
------------+----------+-------------+-------------+----------+-------------+------------+------+--------
|
|
955
|
+
suspended |active |active |active |active |active |active | 1| 1
|
|
956
|
+
(1 row)
|
|
957
|
+
|
|
958
|
+
|
|
959
|
+
starting permutation: lifecycle_begin revoke_agent_subtree retry_begin retry_onboard lifecycle_commit retry_commit check
|
|
960
|
+
count
|
|
961
|
+
-----
|
|
962
|
+
1
|
|
963
|
+
(1 row)
|
|
964
|
+
|
|
965
|
+
step lifecycle_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
966
|
+
step revoke_agent_subtree:
|
|
967
|
+
select revoked_agent_count from agent_board.revoke_agent_subtree(
|
|
968
|
+
(select id from agent_board.agents where handle='atomic-lifecycle-agent'),
|
|
969
|
+
'16240000-0000-0000-0000-000000000001', 'isolation agent subtree revoke'
|
|
970
|
+
);
|
|
971
|
+
|
|
972
|
+
revoked_agent_count
|
|
973
|
+
-------------------
|
|
974
|
+
1
|
|
975
|
+
(1 row)
|
|
976
|
+
|
|
977
|
+
step retry_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
978
|
+
step retry_onboard:
|
|
979
|
+
select identity_disposition, membership_disposition, binding_disposition
|
|
980
|
+
from agent_board.onboard_federated_fleet_agent(
|
|
981
|
+
'https://atomic-lifecycle.test', 'message-board', 'human-lifecycle',
|
|
982
|
+
jsonb_build_object('iss','https://atomic-lifecycle.test','aud','message-board','sub','human-lifecycle','iat',200),
|
|
983
|
+
'atomic-lifecycle-agent',
|
|
984
|
+
'yd_DIFGWGusVg3SbktDJQ1bE5UWvtR33xln4b05JIhk',
|
|
985
|
+
'raw_ed25519_base64url',
|
|
986
|
+
'sha256:NeVC2vx1MbTY56jUwJcLLr6YwB4IKCERsXWbUwhf5pA',
|
|
987
|
+
true, null, 'agent', ARRAY['board:send'], ARRAY[]::text[],
|
|
988
|
+
(select code from agent_board.board_invite_tokens where created_by_agent_id='16240000-0000-0000-0000-000000000001'),
|
|
989
|
+
(select id from agent_board.boards where slug='atomic-lifecycle-board'),
|
|
990
|
+
'16240000-0000-0000-0000-000000000003', 'codex', 'phase-loop',
|
|
991
|
+
'message-board', 'sha256:atomic-lifecycle-repo', 'worker', 'phase_worker',
|
|
992
|
+
'atomic-lifecycle-agent'
|
|
993
|
+
);
|
|
994
|
+
<waiting ...>
|
|
995
|
+
step lifecycle_commit: COMMIT;
|
|
996
|
+
step retry_onboard: <... completed>
|
|
997
|
+
ERROR: enrollment replay conflicts with the frozen identity contract
|
|
998
|
+
step retry_commit: COMMIT;
|
|
999
|
+
step check:
|
|
1000
|
+
select a.status as agent_status,
|
|
1001
|
+
k.status as key_status,
|
|
1002
|
+
b.lifecycle_state as binding_state,
|
|
1003
|
+
h.lifecycle_state as harness_state,
|
|
1004
|
+
r.lifecycle_state as repo_state,
|
|
1005
|
+
m.lifecycle_state as machine_state,
|
|
1006
|
+
d.lifecycle_state as domain_state,
|
|
1007
|
+
(select count(*) from agent_board.agents aa where aa.handle='atomic-lifecycle-agent') as agents,
|
|
1008
|
+
(select count(*) from agent_board.fleet_machine_agents bb join agent_board.agents aa on aa.id=bb.agent_id where aa.handle='atomic-lifecycle-agent') as bindings
|
|
1009
|
+
from agent_board.agents a
|
|
1010
|
+
join agent_board.agent_signing_keys k on k.agent_id=a.id
|
|
1011
|
+
join agent_board.fleet_machine_agents b on b.agent_id=a.id
|
|
1012
|
+
join agent_board.fleet_machines m on m.id=b.machine_id
|
|
1013
|
+
join agent_board.fleet_trust_domains d on d.id=m.trust_domain_id
|
|
1014
|
+
join agent_board.fleet_harness_registrations h on h.machine_id=m.id
|
|
1015
|
+
join agent_board.fleet_repo_scopes r on r.harness_registration_id=h.id
|
|
1016
|
+
where a.handle='atomic-lifecycle-agent';
|
|
1017
|
+
|
|
1018
|
+
agent_status|key_status|binding_state|harness_state|repo_state|machine_state|domain_state|agents|bindings
|
|
1019
|
+
------------+----------+-------------+-------------+----------+-------------+------------+------+--------
|
|
1020
|
+
revoked |revoked |active |active |active |active |active | 1| 1
|
|
1021
|
+
(1 row)
|
|
1022
|
+
|
|
1023
|
+
|
|
1024
|
+
starting permutation: lifecycle_begin revoke_human_subtree retry_begin retry_onboard lifecycle_commit retry_commit check
|
|
1025
|
+
count
|
|
1026
|
+
-----
|
|
1027
|
+
1
|
|
1028
|
+
(1 row)
|
|
1029
|
+
|
|
1030
|
+
step lifecycle_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
1031
|
+
step revoke_human_subtree:
|
|
1032
|
+
select revoked_agent_count from agent_board.revoke_human_subtree(
|
|
1033
|
+
(select owner_user_id from agent_board.agents where handle='atomic-lifecycle-agent'),
|
|
1034
|
+
'16240000-0000-0000-0000-000000000001', 'isolation human subtree revoke'
|
|
1035
|
+
);
|
|
1036
|
+
|
|
1037
|
+
revoked_agent_count
|
|
1038
|
+
-------------------
|
|
1039
|
+
1
|
|
1040
|
+
(1 row)
|
|
1041
|
+
|
|
1042
|
+
step retry_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
1043
|
+
step retry_onboard:
|
|
1044
|
+
select identity_disposition, membership_disposition, binding_disposition
|
|
1045
|
+
from agent_board.onboard_federated_fleet_agent(
|
|
1046
|
+
'https://atomic-lifecycle.test', 'message-board', 'human-lifecycle',
|
|
1047
|
+
jsonb_build_object('iss','https://atomic-lifecycle.test','aud','message-board','sub','human-lifecycle','iat',200),
|
|
1048
|
+
'atomic-lifecycle-agent',
|
|
1049
|
+
'yd_DIFGWGusVg3SbktDJQ1bE5UWvtR33xln4b05JIhk',
|
|
1050
|
+
'raw_ed25519_base64url',
|
|
1051
|
+
'sha256:NeVC2vx1MbTY56jUwJcLLr6YwB4IKCERsXWbUwhf5pA',
|
|
1052
|
+
true, null, 'agent', ARRAY['board:send'], ARRAY[]::text[],
|
|
1053
|
+
(select code from agent_board.board_invite_tokens where created_by_agent_id='16240000-0000-0000-0000-000000000001'),
|
|
1054
|
+
(select id from agent_board.boards where slug='atomic-lifecycle-board'),
|
|
1055
|
+
'16240000-0000-0000-0000-000000000003', 'codex', 'phase-loop',
|
|
1056
|
+
'message-board', 'sha256:atomic-lifecycle-repo', 'worker', 'phase_worker',
|
|
1057
|
+
'atomic-lifecycle-agent'
|
|
1058
|
+
);
|
|
1059
|
+
<waiting ...>
|
|
1060
|
+
step lifecycle_commit: COMMIT;
|
|
1061
|
+
step retry_onboard: <... completed>
|
|
1062
|
+
ERROR: human owner has been revoked
|
|
1063
|
+
step retry_commit: COMMIT;
|
|
1064
|
+
step check:
|
|
1065
|
+
select a.status as agent_status,
|
|
1066
|
+
k.status as key_status,
|
|
1067
|
+
b.lifecycle_state as binding_state,
|
|
1068
|
+
h.lifecycle_state as harness_state,
|
|
1069
|
+
r.lifecycle_state as repo_state,
|
|
1070
|
+
m.lifecycle_state as machine_state,
|
|
1071
|
+
d.lifecycle_state as domain_state,
|
|
1072
|
+
(select count(*) from agent_board.agents aa where aa.handle='atomic-lifecycle-agent') as agents,
|
|
1073
|
+
(select count(*) from agent_board.fleet_machine_agents bb join agent_board.agents aa on aa.id=bb.agent_id where aa.handle='atomic-lifecycle-agent') as bindings
|
|
1074
|
+
from agent_board.agents a
|
|
1075
|
+
join agent_board.agent_signing_keys k on k.agent_id=a.id
|
|
1076
|
+
join agent_board.fleet_machine_agents b on b.agent_id=a.id
|
|
1077
|
+
join agent_board.fleet_machines m on m.id=b.machine_id
|
|
1078
|
+
join agent_board.fleet_trust_domains d on d.id=m.trust_domain_id
|
|
1079
|
+
join agent_board.fleet_harness_registrations h on h.machine_id=m.id
|
|
1080
|
+
join agent_board.fleet_repo_scopes r on r.harness_registration_id=h.id
|
|
1081
|
+
where a.handle='atomic-lifecycle-agent';
|
|
1082
|
+
|
|
1083
|
+
agent_status|key_status|binding_state|harness_state|repo_state|machine_state|domain_state|agents|bindings
|
|
1084
|
+
------------+----------+-------------+-------------+----------+-------------+------------+------+--------
|
|
1085
|
+
revoked |revoked |active |active |active |active |active | 1| 1
|
|
1086
|
+
(1 row)
|
|
1087
|
+
|
|
1088
|
+
|
|
1089
|
+
starting permutation: lifecycle_begin revoke_harness retry_begin retry_onboard lifecycle_commit retry_commit check
|
|
1090
|
+
count
|
|
1091
|
+
-----
|
|
1092
|
+
1
|
|
1093
|
+
(1 row)
|
|
1094
|
+
|
|
1095
|
+
step lifecycle_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
1096
|
+
step revoke_harness:
|
|
1097
|
+
select subject_kind from agent_board.revoke_fleet_subject(
|
|
1098
|
+
'harness', (select id from agent_board.fleet_harness_registrations where machine_id='16240000-0000-0000-0000-000000000003'),
|
|
1099
|
+
'16240000-0000-0000-0000-000000000001', 'isolation harness revoke', jsonb_build_object()
|
|
1100
|
+
);
|
|
1101
|
+
|
|
1102
|
+
subject_kind
|
|
1103
|
+
------------
|
|
1104
|
+
harness
|
|
1105
|
+
(1 row)
|
|
1106
|
+
|
|
1107
|
+
step retry_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
1108
|
+
step retry_onboard:
|
|
1109
|
+
select identity_disposition, membership_disposition, binding_disposition
|
|
1110
|
+
from agent_board.onboard_federated_fleet_agent(
|
|
1111
|
+
'https://atomic-lifecycle.test', 'message-board', 'human-lifecycle',
|
|
1112
|
+
jsonb_build_object('iss','https://atomic-lifecycle.test','aud','message-board','sub','human-lifecycle','iat',200),
|
|
1113
|
+
'atomic-lifecycle-agent',
|
|
1114
|
+
'yd_DIFGWGusVg3SbktDJQ1bE5UWvtR33xln4b05JIhk',
|
|
1115
|
+
'raw_ed25519_base64url',
|
|
1116
|
+
'sha256:NeVC2vx1MbTY56jUwJcLLr6YwB4IKCERsXWbUwhf5pA',
|
|
1117
|
+
true, null, 'agent', ARRAY['board:send'], ARRAY[]::text[],
|
|
1118
|
+
(select code from agent_board.board_invite_tokens where created_by_agent_id='16240000-0000-0000-0000-000000000001'),
|
|
1119
|
+
(select id from agent_board.boards where slug='atomic-lifecycle-board'),
|
|
1120
|
+
'16240000-0000-0000-0000-000000000003', 'codex', 'phase-loop',
|
|
1121
|
+
'message-board', 'sha256:atomic-lifecycle-repo', 'worker', 'phase_worker',
|
|
1122
|
+
'atomic-lifecycle-agent'
|
|
1123
|
+
);
|
|
1124
|
+
<waiting ...>
|
|
1125
|
+
step lifecycle_commit: COMMIT;
|
|
1126
|
+
step retry_onboard: <... completed>
|
|
1127
|
+
ERROR: fleet onboarding invite is not usable
|
|
1128
|
+
step retry_commit: COMMIT;
|
|
1129
|
+
step check:
|
|
1130
|
+
select a.status as agent_status,
|
|
1131
|
+
k.status as key_status,
|
|
1132
|
+
b.lifecycle_state as binding_state,
|
|
1133
|
+
h.lifecycle_state as harness_state,
|
|
1134
|
+
r.lifecycle_state as repo_state,
|
|
1135
|
+
m.lifecycle_state as machine_state,
|
|
1136
|
+
d.lifecycle_state as domain_state,
|
|
1137
|
+
(select count(*) from agent_board.agents aa where aa.handle='atomic-lifecycle-agent') as agents,
|
|
1138
|
+
(select count(*) from agent_board.fleet_machine_agents bb join agent_board.agents aa on aa.id=bb.agent_id where aa.handle='atomic-lifecycle-agent') as bindings
|
|
1139
|
+
from agent_board.agents a
|
|
1140
|
+
join agent_board.agent_signing_keys k on k.agent_id=a.id
|
|
1141
|
+
join agent_board.fleet_machine_agents b on b.agent_id=a.id
|
|
1142
|
+
join agent_board.fleet_machines m on m.id=b.machine_id
|
|
1143
|
+
join agent_board.fleet_trust_domains d on d.id=m.trust_domain_id
|
|
1144
|
+
join agent_board.fleet_harness_registrations h on h.machine_id=m.id
|
|
1145
|
+
join agent_board.fleet_repo_scopes r on r.harness_registration_id=h.id
|
|
1146
|
+
where a.handle='atomic-lifecycle-agent';
|
|
1147
|
+
|
|
1148
|
+
agent_status|key_status|binding_state|harness_state|repo_state|machine_state|domain_state|agents|bindings
|
|
1149
|
+
------------+----------+-------------+-------------+----------+-------------+------------+------+--------
|
|
1150
|
+
active |active |active |revoked |active |active |active | 1| 1
|
|
1151
|
+
(1 row)
|
|
1152
|
+
|
|
1153
|
+
|
|
1154
|
+
starting permutation: lifecycle_begin revoke_repo retry_begin retry_onboard lifecycle_commit retry_commit check
|
|
1155
|
+
count
|
|
1156
|
+
-----
|
|
1157
|
+
1
|
|
1158
|
+
(1 row)
|
|
1159
|
+
|
|
1160
|
+
step lifecycle_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
1161
|
+
step revoke_repo:
|
|
1162
|
+
select subject_kind from agent_board.revoke_fleet_subject(
|
|
1163
|
+
'repo_scope', (select frs.id from agent_board.fleet_repo_scopes frs join agent_board.fleet_harness_registrations fhr on fhr.id=frs.harness_registration_id where fhr.machine_id='16240000-0000-0000-0000-000000000003'),
|
|
1164
|
+
'16240000-0000-0000-0000-000000000001', 'isolation repo revoke', jsonb_build_object()
|
|
1165
|
+
);
|
|
1166
|
+
|
|
1167
|
+
subject_kind
|
|
1168
|
+
------------
|
|
1169
|
+
repo_scope
|
|
1170
|
+
(1 row)
|
|
1171
|
+
|
|
1172
|
+
step retry_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
1173
|
+
step retry_onboard:
|
|
1174
|
+
select identity_disposition, membership_disposition, binding_disposition
|
|
1175
|
+
from agent_board.onboard_federated_fleet_agent(
|
|
1176
|
+
'https://atomic-lifecycle.test', 'message-board', 'human-lifecycle',
|
|
1177
|
+
jsonb_build_object('iss','https://atomic-lifecycle.test','aud','message-board','sub','human-lifecycle','iat',200),
|
|
1178
|
+
'atomic-lifecycle-agent',
|
|
1179
|
+
'yd_DIFGWGusVg3SbktDJQ1bE5UWvtR33xln4b05JIhk',
|
|
1180
|
+
'raw_ed25519_base64url',
|
|
1181
|
+
'sha256:NeVC2vx1MbTY56jUwJcLLr6YwB4IKCERsXWbUwhf5pA',
|
|
1182
|
+
true, null, 'agent', ARRAY['board:send'], ARRAY[]::text[],
|
|
1183
|
+
(select code from agent_board.board_invite_tokens where created_by_agent_id='16240000-0000-0000-0000-000000000001'),
|
|
1184
|
+
(select id from agent_board.boards where slug='atomic-lifecycle-board'),
|
|
1185
|
+
'16240000-0000-0000-0000-000000000003', 'codex', 'phase-loop',
|
|
1186
|
+
'message-board', 'sha256:atomic-lifecycle-repo', 'worker', 'phase_worker',
|
|
1187
|
+
'atomic-lifecycle-agent'
|
|
1188
|
+
);
|
|
1189
|
+
<waiting ...>
|
|
1190
|
+
step lifecycle_commit: COMMIT;
|
|
1191
|
+
step retry_onboard: <... completed>
|
|
1192
|
+
ERROR: fleet onboarding invite is not usable
|
|
1193
|
+
step retry_commit: COMMIT;
|
|
1194
|
+
step check:
|
|
1195
|
+
select a.status as agent_status,
|
|
1196
|
+
k.status as key_status,
|
|
1197
|
+
b.lifecycle_state as binding_state,
|
|
1198
|
+
h.lifecycle_state as harness_state,
|
|
1199
|
+
r.lifecycle_state as repo_state,
|
|
1200
|
+
m.lifecycle_state as machine_state,
|
|
1201
|
+
d.lifecycle_state as domain_state,
|
|
1202
|
+
(select count(*) from agent_board.agents aa where aa.handle='atomic-lifecycle-agent') as agents,
|
|
1203
|
+
(select count(*) from agent_board.fleet_machine_agents bb join agent_board.agents aa on aa.id=bb.agent_id where aa.handle='atomic-lifecycle-agent') as bindings
|
|
1204
|
+
from agent_board.agents a
|
|
1205
|
+
join agent_board.agent_signing_keys k on k.agent_id=a.id
|
|
1206
|
+
join agent_board.fleet_machine_agents b on b.agent_id=a.id
|
|
1207
|
+
join agent_board.fleet_machines m on m.id=b.machine_id
|
|
1208
|
+
join agent_board.fleet_trust_domains d on d.id=m.trust_domain_id
|
|
1209
|
+
join agent_board.fleet_harness_registrations h on h.machine_id=m.id
|
|
1210
|
+
join agent_board.fleet_repo_scopes r on r.harness_registration_id=h.id
|
|
1211
|
+
where a.handle='atomic-lifecycle-agent';
|
|
1212
|
+
|
|
1213
|
+
agent_status|key_status|binding_state|harness_state|repo_state|machine_state|domain_state|agents|bindings
|
|
1214
|
+
------------+----------+-------------+-------------+----------+-------------+------------+------+--------
|
|
1215
|
+
active |active |active |active |revoked |active |active | 1| 1
|
|
1216
|
+
(1 row)
|
|
1217
|
+
|
|
1218
|
+
|
|
1219
|
+
starting permutation: lifecycle_begin revoke_machine retry_begin retry_onboard lifecycle_commit retry_commit check
|
|
1220
|
+
count
|
|
1221
|
+
-----
|
|
1222
|
+
1
|
|
1223
|
+
(1 row)
|
|
1224
|
+
|
|
1225
|
+
step lifecycle_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
1226
|
+
step revoke_machine:
|
|
1227
|
+
select subject_kind from agent_board.revoke_fleet_subject(
|
|
1228
|
+
'machine', '16240000-0000-0000-0000-000000000003',
|
|
1229
|
+
'16240000-0000-0000-0000-000000000001', 'isolation machine revoke', jsonb_build_object()
|
|
1230
|
+
);
|
|
1231
|
+
|
|
1232
|
+
subject_kind
|
|
1233
|
+
------------
|
|
1234
|
+
machine
|
|
1235
|
+
(1 row)
|
|
1236
|
+
|
|
1237
|
+
step retry_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
1238
|
+
step retry_onboard:
|
|
1239
|
+
select identity_disposition, membership_disposition, binding_disposition
|
|
1240
|
+
from agent_board.onboard_federated_fleet_agent(
|
|
1241
|
+
'https://atomic-lifecycle.test', 'message-board', 'human-lifecycle',
|
|
1242
|
+
jsonb_build_object('iss','https://atomic-lifecycle.test','aud','message-board','sub','human-lifecycle','iat',200),
|
|
1243
|
+
'atomic-lifecycle-agent',
|
|
1244
|
+
'yd_DIFGWGusVg3SbktDJQ1bE5UWvtR33xln4b05JIhk',
|
|
1245
|
+
'raw_ed25519_base64url',
|
|
1246
|
+
'sha256:NeVC2vx1MbTY56jUwJcLLr6YwB4IKCERsXWbUwhf5pA',
|
|
1247
|
+
true, null, 'agent', ARRAY['board:send'], ARRAY[]::text[],
|
|
1248
|
+
(select code from agent_board.board_invite_tokens where created_by_agent_id='16240000-0000-0000-0000-000000000001'),
|
|
1249
|
+
(select id from agent_board.boards where slug='atomic-lifecycle-board'),
|
|
1250
|
+
'16240000-0000-0000-0000-000000000003', 'codex', 'phase-loop',
|
|
1251
|
+
'message-board', 'sha256:atomic-lifecycle-repo', 'worker', 'phase_worker',
|
|
1252
|
+
'atomic-lifecycle-agent'
|
|
1253
|
+
);
|
|
1254
|
+
<waiting ...>
|
|
1255
|
+
step lifecycle_commit: COMMIT;
|
|
1256
|
+
step retry_onboard: <... completed>
|
|
1257
|
+
ERROR: fleet onboarding machine is not usable
|
|
1258
|
+
step retry_commit: COMMIT;
|
|
1259
|
+
step check:
|
|
1260
|
+
select a.status as agent_status,
|
|
1261
|
+
k.status as key_status,
|
|
1262
|
+
b.lifecycle_state as binding_state,
|
|
1263
|
+
h.lifecycle_state as harness_state,
|
|
1264
|
+
r.lifecycle_state as repo_state,
|
|
1265
|
+
m.lifecycle_state as machine_state,
|
|
1266
|
+
d.lifecycle_state as domain_state,
|
|
1267
|
+
(select count(*) from agent_board.agents aa where aa.handle='atomic-lifecycle-agent') as agents,
|
|
1268
|
+
(select count(*) from agent_board.fleet_machine_agents bb join agent_board.agents aa on aa.id=bb.agent_id where aa.handle='atomic-lifecycle-agent') as bindings
|
|
1269
|
+
from agent_board.agents a
|
|
1270
|
+
join agent_board.agent_signing_keys k on k.agent_id=a.id
|
|
1271
|
+
join agent_board.fleet_machine_agents b on b.agent_id=a.id
|
|
1272
|
+
join agent_board.fleet_machines m on m.id=b.machine_id
|
|
1273
|
+
join agent_board.fleet_trust_domains d on d.id=m.trust_domain_id
|
|
1274
|
+
join agent_board.fleet_harness_registrations h on h.machine_id=m.id
|
|
1275
|
+
join agent_board.fleet_repo_scopes r on r.harness_registration_id=h.id
|
|
1276
|
+
where a.handle='atomic-lifecycle-agent';
|
|
1277
|
+
|
|
1278
|
+
agent_status|key_status|binding_state|harness_state|repo_state|machine_state|domain_state|agents|bindings
|
|
1279
|
+
------------+----------+-------------+-------------+----------+-------------+------------+------+--------
|
|
1280
|
+
active |active |active |active |active |revoked |active | 1| 1
|
|
1281
|
+
(1 row)
|
|
1282
|
+
|
|
1283
|
+
|
|
1284
|
+
starting permutation: lifecycle_begin reclaim_machine retry_begin retry_onboard lifecycle_commit retry_commit check
|
|
1285
|
+
count
|
|
1286
|
+
-----
|
|
1287
|
+
1
|
|
1288
|
+
(1 row)
|
|
1289
|
+
|
|
1290
|
+
step lifecycle_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
1291
|
+
step reclaim_machine:
|
|
1292
|
+
select owner_agent_id from agent_board.reclaim_fleet_machine(
|
|
1293
|
+
'16240000-0000-0000-0000-000000000003',
|
|
1294
|
+
'16240000-0000-0000-0000-000000000004',
|
|
1295
|
+
'16240000-0000-0000-0000-000000000001', 'isolation machine reclaim'
|
|
1296
|
+
);
|
|
1297
|
+
|
|
1298
|
+
owner_agent_id
|
|
1299
|
+
------------------------------------
|
|
1300
|
+
16240000-0000-0000-0000-000000000004
|
|
1301
|
+
(1 row)
|
|
1302
|
+
|
|
1303
|
+
step retry_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
1304
|
+
step retry_onboard:
|
|
1305
|
+
select identity_disposition, membership_disposition, binding_disposition
|
|
1306
|
+
from agent_board.onboard_federated_fleet_agent(
|
|
1307
|
+
'https://atomic-lifecycle.test', 'message-board', 'human-lifecycle',
|
|
1308
|
+
jsonb_build_object('iss','https://atomic-lifecycle.test','aud','message-board','sub','human-lifecycle','iat',200),
|
|
1309
|
+
'atomic-lifecycle-agent',
|
|
1310
|
+
'yd_DIFGWGusVg3SbktDJQ1bE5UWvtR33xln4b05JIhk',
|
|
1311
|
+
'raw_ed25519_base64url',
|
|
1312
|
+
'sha256:NeVC2vx1MbTY56jUwJcLLr6YwB4IKCERsXWbUwhf5pA',
|
|
1313
|
+
true, null, 'agent', ARRAY['board:send'], ARRAY[]::text[],
|
|
1314
|
+
(select code from agent_board.board_invite_tokens where created_by_agent_id='16240000-0000-0000-0000-000000000001'),
|
|
1315
|
+
(select id from agent_board.boards where slug='atomic-lifecycle-board'),
|
|
1316
|
+
'16240000-0000-0000-0000-000000000003', 'codex', 'phase-loop',
|
|
1317
|
+
'message-board', 'sha256:atomic-lifecycle-repo', 'worker', 'phase_worker',
|
|
1318
|
+
'atomic-lifecycle-agent'
|
|
1319
|
+
);
|
|
1320
|
+
<waiting ...>
|
|
1321
|
+
step lifecycle_commit: COMMIT;
|
|
1322
|
+
step retry_onboard: <... completed>
|
|
1323
|
+
ERROR: fleet onboarding machine is not usable
|
|
1324
|
+
step retry_commit: COMMIT;
|
|
1325
|
+
step check:
|
|
1326
|
+
select a.status as agent_status,
|
|
1327
|
+
k.status as key_status,
|
|
1328
|
+
b.lifecycle_state as binding_state,
|
|
1329
|
+
h.lifecycle_state as harness_state,
|
|
1330
|
+
r.lifecycle_state as repo_state,
|
|
1331
|
+
m.lifecycle_state as machine_state,
|
|
1332
|
+
d.lifecycle_state as domain_state,
|
|
1333
|
+
(select count(*) from agent_board.agents aa where aa.handle='atomic-lifecycle-agent') as agents,
|
|
1334
|
+
(select count(*) from agent_board.fleet_machine_agents bb join agent_board.agents aa on aa.id=bb.agent_id where aa.handle='atomic-lifecycle-agent') as bindings
|
|
1335
|
+
from agent_board.agents a
|
|
1336
|
+
join agent_board.agent_signing_keys k on k.agent_id=a.id
|
|
1337
|
+
join agent_board.fleet_machine_agents b on b.agent_id=a.id
|
|
1338
|
+
join agent_board.fleet_machines m on m.id=b.machine_id
|
|
1339
|
+
join agent_board.fleet_trust_domains d on d.id=m.trust_domain_id
|
|
1340
|
+
join agent_board.fleet_harness_registrations h on h.machine_id=m.id
|
|
1341
|
+
join agent_board.fleet_repo_scopes r on r.harness_registration_id=h.id
|
|
1342
|
+
where a.handle='atomic-lifecycle-agent';
|
|
1343
|
+
|
|
1344
|
+
agent_status|key_status|binding_state|harness_state|repo_state|machine_state|domain_state|agents|bindings
|
|
1345
|
+
------------+----------+-------------+-------------+----------+-------------+------------+------+--------
|
|
1346
|
+
active |active |revoked |active |active |active |active | 1| 1
|
|
1347
|
+
(1 row)
|
|
1348
|
+
|
|
1349
|
+
|
|
1350
|
+
starting permutation: lifecycle_begin revoke_domain retry_begin retry_onboard lifecycle_commit retry_commit check
|
|
1351
|
+
count
|
|
1352
|
+
-----
|
|
1353
|
+
1
|
|
1354
|
+
(1 row)
|
|
1355
|
+
|
|
1356
|
+
step lifecycle_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
1357
|
+
step revoke_domain:
|
|
1358
|
+
select subject_kind from agent_board.revoke_fleet_subject(
|
|
1359
|
+
'trust_domain', '16240000-0000-0000-0000-000000000002',
|
|
1360
|
+
'16240000-0000-0000-0000-000000000001', 'isolation domain revoke', jsonb_build_object()
|
|
1361
|
+
);
|
|
1362
|
+
|
|
1363
|
+
subject_kind
|
|
1364
|
+
------------
|
|
1365
|
+
trust_domain
|
|
1366
|
+
(1 row)
|
|
1367
|
+
|
|
1368
|
+
step retry_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
1369
|
+
step retry_onboard:
|
|
1370
|
+
select identity_disposition, membership_disposition, binding_disposition
|
|
1371
|
+
from agent_board.onboard_federated_fleet_agent(
|
|
1372
|
+
'https://atomic-lifecycle.test', 'message-board', 'human-lifecycle',
|
|
1373
|
+
jsonb_build_object('iss','https://atomic-lifecycle.test','aud','message-board','sub','human-lifecycle','iat',200),
|
|
1374
|
+
'atomic-lifecycle-agent',
|
|
1375
|
+
'yd_DIFGWGusVg3SbktDJQ1bE5UWvtR33xln4b05JIhk',
|
|
1376
|
+
'raw_ed25519_base64url',
|
|
1377
|
+
'sha256:NeVC2vx1MbTY56jUwJcLLr6YwB4IKCERsXWbUwhf5pA',
|
|
1378
|
+
true, null, 'agent', ARRAY['board:send'], ARRAY[]::text[],
|
|
1379
|
+
(select code from agent_board.board_invite_tokens where created_by_agent_id='16240000-0000-0000-0000-000000000001'),
|
|
1380
|
+
(select id from agent_board.boards where slug='atomic-lifecycle-board'),
|
|
1381
|
+
'16240000-0000-0000-0000-000000000003', 'codex', 'phase-loop',
|
|
1382
|
+
'message-board', 'sha256:atomic-lifecycle-repo', 'worker', 'phase_worker',
|
|
1383
|
+
'atomic-lifecycle-agent'
|
|
1384
|
+
);
|
|
1385
|
+
<waiting ...>
|
|
1386
|
+
step lifecycle_commit: COMMIT;
|
|
1387
|
+
step retry_onboard: <... completed>
|
|
1388
|
+
ERROR: fleet onboarding trust domain is not usable
|
|
1389
|
+
step retry_commit: COMMIT;
|
|
1390
|
+
step check:
|
|
1391
|
+
select a.status as agent_status,
|
|
1392
|
+
k.status as key_status,
|
|
1393
|
+
b.lifecycle_state as binding_state,
|
|
1394
|
+
h.lifecycle_state as harness_state,
|
|
1395
|
+
r.lifecycle_state as repo_state,
|
|
1396
|
+
m.lifecycle_state as machine_state,
|
|
1397
|
+
d.lifecycle_state as domain_state,
|
|
1398
|
+
(select count(*) from agent_board.agents aa where aa.handle='atomic-lifecycle-agent') as agents,
|
|
1399
|
+
(select count(*) from agent_board.fleet_machine_agents bb join agent_board.agents aa on aa.id=bb.agent_id where aa.handle='atomic-lifecycle-agent') as bindings
|
|
1400
|
+
from agent_board.agents a
|
|
1401
|
+
join agent_board.agent_signing_keys k on k.agent_id=a.id
|
|
1402
|
+
join agent_board.fleet_machine_agents b on b.agent_id=a.id
|
|
1403
|
+
join agent_board.fleet_machines m on m.id=b.machine_id
|
|
1404
|
+
join agent_board.fleet_trust_domains d on d.id=m.trust_domain_id
|
|
1405
|
+
join agent_board.fleet_harness_registrations h on h.machine_id=m.id
|
|
1406
|
+
join agent_board.fleet_repo_scopes r on r.harness_registration_id=h.id
|
|
1407
|
+
where a.handle='atomic-lifecycle-agent';
|
|
1408
|
+
|
|
1409
|
+
agent_status|key_status|binding_state|harness_state|repo_state|machine_state|domain_state|agents|bindings
|
|
1410
|
+
------------+----------+-------------+-------------+----------+-------------+------------+------+--------
|
|
1411
|
+
active |active |active |active |active |active |revoked | 1| 1
|
|
1412
|
+
(1 row)
|
|
1413
|
+
|
|
1414
|
+
|
|
1415
|
+
starting permutation: lifecycle_begin reclaim_domain retry_begin retry_onboard lifecycle_commit retry_commit check
|
|
1416
|
+
count
|
|
1417
|
+
-----
|
|
1418
|
+
1
|
|
1419
|
+
(1 row)
|
|
1420
|
+
|
|
1421
|
+
step lifecycle_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
1422
|
+
step reclaim_domain:
|
|
1423
|
+
select owner_agent_id from agent_board.reclaim_fleet_trust_domain(
|
|
1424
|
+
'16240000-0000-0000-0000-000000000002',
|
|
1425
|
+
'16240000-0000-0000-0000-000000000004',
|
|
1426
|
+
'16240000-0000-0000-0000-000000000001', 'isolation domain reclaim'
|
|
1427
|
+
);
|
|
1428
|
+
|
|
1429
|
+
owner_agent_id
|
|
1430
|
+
------------------------------------
|
|
1431
|
+
16240000-0000-0000-0000-000000000004
|
|
1432
|
+
(1 row)
|
|
1433
|
+
|
|
1434
|
+
step retry_begin: BEGIN; SET LOCAL "request.jwt.claim.role" = 'service_role';
|
|
1435
|
+
step retry_onboard:
|
|
1436
|
+
select identity_disposition, membership_disposition, binding_disposition
|
|
1437
|
+
from agent_board.onboard_federated_fleet_agent(
|
|
1438
|
+
'https://atomic-lifecycle.test', 'message-board', 'human-lifecycle',
|
|
1439
|
+
jsonb_build_object('iss','https://atomic-lifecycle.test','aud','message-board','sub','human-lifecycle','iat',200),
|
|
1440
|
+
'atomic-lifecycle-agent',
|
|
1441
|
+
'yd_DIFGWGusVg3SbktDJQ1bE5UWvtR33xln4b05JIhk',
|
|
1442
|
+
'raw_ed25519_base64url',
|
|
1443
|
+
'sha256:NeVC2vx1MbTY56jUwJcLLr6YwB4IKCERsXWbUwhf5pA',
|
|
1444
|
+
true, null, 'agent', ARRAY['board:send'], ARRAY[]::text[],
|
|
1445
|
+
(select code from agent_board.board_invite_tokens where created_by_agent_id='16240000-0000-0000-0000-000000000001'),
|
|
1446
|
+
(select id from agent_board.boards where slug='atomic-lifecycle-board'),
|
|
1447
|
+
'16240000-0000-0000-0000-000000000003', 'codex', 'phase-loop',
|
|
1448
|
+
'message-board', 'sha256:atomic-lifecycle-repo', 'worker', 'phase_worker',
|
|
1449
|
+
'atomic-lifecycle-agent'
|
|
1450
|
+
);
|
|
1451
|
+
<waiting ...>
|
|
1452
|
+
step lifecycle_commit: COMMIT;
|
|
1453
|
+
step retry_onboard: <... completed>
|
|
1454
|
+
ERROR: fleet onboarding trust domain is not usable
|
|
1455
|
+
step retry_commit: COMMIT;
|
|
1456
|
+
step check:
|
|
1457
|
+
select a.status as agent_status,
|
|
1458
|
+
k.status as key_status,
|
|
1459
|
+
b.lifecycle_state as binding_state,
|
|
1460
|
+
h.lifecycle_state as harness_state,
|
|
1461
|
+
r.lifecycle_state as repo_state,
|
|
1462
|
+
m.lifecycle_state as machine_state,
|
|
1463
|
+
d.lifecycle_state as domain_state,
|
|
1464
|
+
(select count(*) from agent_board.agents aa where aa.handle='atomic-lifecycle-agent') as agents,
|
|
1465
|
+
(select count(*) from agent_board.fleet_machine_agents bb join agent_board.agents aa on aa.id=bb.agent_id where aa.handle='atomic-lifecycle-agent') as bindings
|
|
1466
|
+
from agent_board.agents a
|
|
1467
|
+
join agent_board.agent_signing_keys k on k.agent_id=a.id
|
|
1468
|
+
join agent_board.fleet_machine_agents b on b.agent_id=a.id
|
|
1469
|
+
join agent_board.fleet_machines m on m.id=b.machine_id
|
|
1470
|
+
join agent_board.fleet_trust_domains d on d.id=m.trust_domain_id
|
|
1471
|
+
join agent_board.fleet_harness_registrations h on h.machine_id=m.id
|
|
1472
|
+
join agent_board.fleet_repo_scopes r on r.harness_registration_id=h.id
|
|
1473
|
+
where a.handle='atomic-lifecycle-agent';
|
|
1474
|
+
|
|
1475
|
+
agent_status|key_status|binding_state|harness_state|repo_state|machine_state|domain_state|agents|bindings
|
|
1476
|
+
------------+----------+-------------+-------------+----------+-------------+------------+------+--------
|
|
1477
|
+
active |active |active |active |active |active |active | 1| 1
|
|
1478
|
+
(1 row)
|
|
1479
|
+
|