@consiliency/agent-board-schema 1.64.0 → 1.74.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.
Files changed (171) hide show
  1. package/README.md +19 -0
  2. package/fixtures/already-applied.json +44 -4
  3. package/migrations/20261015000100_agent_board_session_provenance.sql +367 -0
  4. package/migrations/20261015000200_agent_board_request_preserve_removed.sql +87 -0
  5. package/migrations/20261015000300_agent_board_rls_correlation.sql +132 -0
  6. package/migrations/20261015000400_agent_board_resolution_authority.sql +146 -0
  7. package/migrations/20261026000100_agent_board_thread_association.sql +1287 -0
  8. package/migrations/20261101000100_agent_board_session_measured_mint.sql +145 -0
  9. package/migrations/20261104065658_agent_board_reply_delivery.sql +659 -0
  10. package/migrations/20261104170000_agent_board_tasking_replay_scope.sql +320 -0
  11. package/migrations/20261104180000_agent_board_delivery_writer_execute.sql +51 -0
  12. package/migrations/20261104190000_agent_board_message_replay_scope.sql +373 -0
  13. package/package.json +1 -1
  14. package/schema-manifest.json +93 -3
  15. package/src/deployment-drift-main.test.mjs +156 -0
  16. package/src/deployment-drift-script.test.mjs +14 -1
  17. package/src/policy-comment.test.mjs +17 -0
  18. package/src/tooling.test.mjs +12 -2
  19. package/tests/agent_board_661_reply_delivery.test.sql +185 -0
  20. package/tests/agent_board_667_boundary.test.sql +162 -0
  21. package/tests/agent_board_667_conversion_branches.test.sql +91 -0
  22. package/tests/agent_board_667_conversion_profile.test.sql +112 -0
  23. package/tests/agent_board_667_history_class.test.sql +785 -0
  24. package/tests/agent_board_667_native_cast_effect.test.sql +88 -0
  25. package/tests/agent_board_667_realtime_apply_behavior.test.sql +117 -0
  26. package/tests/agent_board_667_realtime_apply_controls.test.sql +143 -0
  27. package/tests/agent_board_667_realtime_apply_profile.test.sql +61 -0
  28. package/tests/agent_board_667_retention.test.sql +201 -0
  29. package/tests/agent_board_667_routing.test.sql +294 -0
  30. package/tests/agent_board_667_sender_effects.test.sql +100 -0
  31. package/tests/agent_board_667_sender_profile_controls.test.sql +29 -0
  32. package/tests/agent_board_667_storage_delimiter_behavior.test.sql +84 -0
  33. package/tests/agent_board_667_storage_delimiter_controls.test.sql +23 -0
  34. package/tests/agent_board_667_storage_delimiter_profile.test.sql +61 -0
  35. package/tests/agent_board_667_storage_search_behavior.test.sql +93 -0
  36. package/tests/agent_board_667_storage_search_controls.test.sql +22 -0
  37. package/tests/agent_board_667_storage_search_profile.test.sql +60 -0
  38. package/tests/agent_board_667_storage_timestamp_behavior.test.sql +58 -0
  39. package/tests/agent_board_667_storage_timestamp_controls.test.sql +22 -0
  40. package/tests/agent_board_667_storage_timestamp_profile.test.sql +54 -0
  41. package/tests/agent_board_667_writers.test.sql +281 -0
  42. package/tests/agent_board_717_message_replay_scope.test.sql +828 -0
  43. package/tests/agent_board_717_tasking_replay_scope.test.sql +661 -0
  44. package/tests/agent_board_addressing.test.sql +8 -5
  45. package/tests/agent_board_claim_subject_gate.test.sql +7 -3
  46. package/tests/agent_board_claimpolicy_race.test.sql +39 -11
  47. package/tests/agent_board_consent_gating.test.sql +4 -4
  48. package/tests/agent_board_delegate_role_class.test.sql +33 -15
  49. package/tests/agent_board_delivery_writer_execute.test.sql +371 -0
  50. package/tests/agent_board_fk_lock_edges.test.sql +3 -0
  51. package/tests/agent_board_gatenull_membstate.test.sql +7 -4
  52. package/tests/agent_board_hosted_delegates.test.sql +5 -2
  53. package/tests/agent_board_inbox_rpcs.test.sql +5 -3
  54. package/tests/agent_board_obsgate.test.sql +8 -4
  55. package/tests/agent_board_obsgate4.test.sql +2 -2
  56. package/tests/agent_board_outbox_wake_ordering.test.sql +25 -2
  57. package/tests/agent_board_own_post_not_delivered.test.sql +11 -9
  58. package/tests/agent_board_policy_correlation.test.sql +189 -0
  59. package/tests/agent_board_request_removed.test.sql +96 -0
  60. package/tests/agent_board_resolution_authority.test.sql +190 -0
  61. package/tests/agent_board_session_identity_behavior_classes.test.sql +2 -2
  62. package/tests/agent_board_session_identity_limits.test.sql +1 -1
  63. package/tests/agent_board_session_identity_measured_mint.test.sql +342 -0
  64. package/tests/agent_board_session_identity_predicate_isolation.test.sql +146 -0
  65. package/tests/agent_board_session_provenance.test.sql +106 -0
  66. package/tests/agent_board_sidserver_authority.test.sql +69 -0
  67. package/tests/agent_board_sidserver_catalog.test.sql +47 -0
  68. package/tests/agent_board_signed_write_gateway.test.sql +4 -2
  69. package/tests/agent_board_task_thread_lock_order.test.sql +67 -42
  70. package/tests/agent_board_v2_invariants.test.sql +5 -2
  71. package/tests/agent_board_write_enforcement_class.test.sql +3 -3
  72. package/tests/catalog/function_execute_privileges.json +43 -7
  73. package/tests/catalog/p_metadata_parameters.json +16 -0
  74. package/tests/fixtures/agent_board_667_apply_rls_guard.sql +195 -0
  75. package/tests/fixtures/agent_board_667_apply_rls_provenance.md +125 -0
  76. package/tests/fixtures/agent_board_667_apply_rls_reference.sql +1903 -0
  77. package/tests/fixtures/agent_board_667_conversion_guard.sql +162 -0
  78. package/tests/fixtures/agent_board_667_conversion_reference.md +23 -0
  79. package/tests/fixtures/agent_board_667_conversion_reference.sql +5325 -0
  80. package/tests/fixtures/agent_board_667_delimiter_guard.sql +92 -0
  81. package/tests/fixtures/agent_board_667_delimiter_provenance.md +116 -0
  82. package/tests/fixtures/agent_board_667_delimiter_reference.sql +10150 -0
  83. package/tests/fixtures/agent_board_667_search_guard.sql +92 -0
  84. package/tests/fixtures/agent_board_667_search_provenance.md +141 -0
  85. package/tests/fixtures/agent_board_667_search_reference.sql +4779 -0
  86. package/tests/fixtures/agent_board_667_sender_guard.sql +102 -0
  87. package/tests/fixtures/agent_board_667_sender_reference.md +20 -0
  88. package/tests/fixtures/agent_board_667_sender_reference.sql +875 -0
  89. package/tests/fixtures/agent_board_667_timestamp_graph.sql +84 -0
  90. package/tests/fixtures/agent_board_667_timestamp_guard.sql +94 -0
  91. package/tests/fixtures/agent_board_667_timestamp_provenance.md +99 -0
  92. package/tests/fixtures/agent_board_667_timestamp_reference.sql +2938 -0
  93. package/tests/isolation/expected/association_artifact_anchor_order.out +108 -0
  94. package/tests/isolation/expected/association_board_vs_board.out +71 -0
  95. package/tests/isolation/expected/association_post_wait_authority.out +77 -0
  96. package/tests/isolation/expected/association_strong_history_writers.out +203 -0
  97. package/tests/isolation/expected/association_strong_isolation.out +185 -0
  98. package/tests/isolation/expected/association_vs_artifact_claim_escalation.out +199 -0
  99. package/tests/isolation/expected/association_vs_heartbeat.out +78 -0
  100. package/tests/isolation/expected/association_vs_multi_anchor_artifact.out +67 -0
  101. package/tests/isolation/expected/association_vs_private_message.out +67 -0
  102. package/tests/isolation/expected/association_vs_task_and_conflict.out +133 -0
  103. package/tests/isolation/expected/association_vs_taskful_cross_thread.out +133 -0
  104. package/tests/isolation/expected/consent_approval_lock.out +1 -1
  105. package/tests/isolation/expected/message_replay_scope.out +209 -0
  106. package/tests/isolation/expected/tasking_replay_scope.out +125 -0
  107. package/tests/isolation/specs/association_artifact_anchor_order.spec +46 -0
  108. package/tests/isolation/specs/association_board_vs_board.spec +37 -0
  109. package/tests/isolation/specs/association_post_wait_authority.spec +48 -0
  110. package/tests/isolation/specs/association_strong_history_writers.spec +61 -0
  111. package/tests/isolation/specs/association_strong_isolation.spec +50 -0
  112. package/tests/isolation/specs/association_vs_artifact_claim_escalation.spec +41 -0
  113. package/tests/isolation/specs/association_vs_heartbeat.spec +47 -0
  114. package/tests/isolation/specs/association_vs_multi_anchor_artifact.spec +38 -0
  115. package/tests/isolation/specs/association_vs_private_message.spec +33 -0
  116. package/tests/isolation/specs/association_vs_task_and_conflict.spec +38 -0
  117. package/tests/isolation/specs/association_vs_taskful_cross_thread.spec +42 -0
  118. package/tests/isolation/specs/consent_approval_lock.spec +13 -7
  119. package/tests/isolation/specs/message_replay_scope.spec +77 -0
  120. package/tests/isolation/specs/tasking_replay_scope.spec +72 -0
  121. package/tests/mutations/717-f1/M0_prefix_main_acl_and_comments.sql +11 -0
  122. package/tests/mutations/717-f1/M10_wrapper_stops_delegating.sql +7 -0
  123. package/tests/mutations/717-f1/M11_transitive_recipient_content.sql +8 -0
  124. package/tests/mutations/717-f1/M12_transitive_recipient_visibility.sql +8 -0
  125. package/tests/mutations/717-f1/M13_transitive_worker_content.sql +15 -0
  126. package/tests/mutations/717-f1/M1a_regrant_upsert_delivery_recipient.sql +1 -0
  127. package/tests/mutations/717-f1/M1b_regrant_upsert_inbox_item.sql +1 -0
  128. package/tests/mutations/717-f1/M1c_regrant_queue_inbox_callbacks.sql +1 -0
  129. package/tests/mutations/717-f1/M1d_regrant_queue_board_post_callbacks.sql +1 -0
  130. package/tests/mutations/717-f1/M1e_regrant_next_thread_message_sequence.sql +1 -0
  131. package/tests/mutations/717-f1/M2_blanket_schema_grant.sql +1 -0
  132. package/tests/mutations/717-f1/M3_new_overload_of_sink.sql +10 -0
  133. package/tests/mutations/717-f1/M4_new_route_calling_sink.sql +7 -0
  134. package/tests/mutations/717-f1/M5_actor_trusts_supplied_id.sql +5 -0
  135. package/tests/mutations/717-f1/M6_signed_route_granted_to_authenticated.sql +1 -0
  136. package/tests/mutations/717-f1/M7_worker_granted_to_authenticated.sql +1 -0
  137. package/tests/mutations/717-f1/M8_recipient_state_rewrites_visibility.sql +5 -0
  138. package/tests/mutations/717-f1/M9_public_route_revoked_from_service_role.sql +1 -0
  139. package/tests/mutations/717-f1/outbox_wake_ordering/W1_regrant_queue_inbox_callbacks.sql +1 -0
  140. package/tests/mutations/717-f1/outbox_wake_ordering/W2_revoke_worker_from_service_role.sql +1 -0
  141. package/tests/mutations/717-f1/outbox_wake_ordering/W3_invoker_caller_of_sink.sql +1 -0
  142. package/tests/mutations/717-f1/outbox_wake_ordering/W4_public_regrant_board_post_sink.sql +1 -0
  143. package/tests/mutations/717-f1/run.sh +17 -0
  144. package/tests/mutations/717-f2b/C1_new_delivery_route.sql +4 -0
  145. package/tests/mutations/717-f2b/C2_new_replay_lookup.sql +3 -0
  146. package/tests/mutations/717-f2b/C3_internal_regranted.sql +2 -0
  147. package/tests/mutations/717-f2b/C4_wrapper_writes_delivery.sql +9 -0
  148. package/tests/mutations/717-f2b/C5_class_member_dynamic_sql.sql +9 -0
  149. package/tests/mutations/717-f2b/C6_drop_board_scope_constraint.sql +2 -0
  150. package/tests/mutations/717-f2b/C7_state_private_helper_content.sql +14 -0
  151. package/tests/mutations/717-f2b/L1_dm_lock_split_by_recipient.sql +8 -0
  152. package/tests/mutations/717-f2b/L2_dm_lock_removed.sql +12 -0
  153. package/tests/mutations/717-f2b/L3_mc_lock_split_by_recipients.sql +8 -0
  154. package/tests/mutations/717-f2b/L4_mc_lock_removed.sql +12 -0
  155. package/tests/mutations/717-f2b/M0_prefix_definitions.sql +17 -0
  156. package/tests/mutations/717-f2b/M10_mc_lookup_any_author.sql +15 -0
  157. package/tests/mutations/717-f2b/M11_dm_swallow_refusal.sql +8 -0
  158. package/tests/mutations/717-f2b/M12_mc_swallow_refusal.sql +8 -0
  159. package/tests/mutations/717-f2b/M13_signed_dm_swallows_refusal.sql +32 -0
  160. package/tests/mutations/717-f2b/M14_signed_mc_swallows_refusal.sql +20 -0
  161. package/tests/mutations/717-f2b/M15_mc_any_source.sql +7 -0
  162. package/tests/mutations/717-f2b/M1_dm_drop_recipient_proof.sql +16 -0
  163. package/tests/mutations/717-f2b/M2_mc_drop_recipient_proof.sql +16 -0
  164. package/tests/mutations/717-f2b/M3_dm_metadata_as_proof.sql +12 -0
  165. package/tests/mutations/717-f2b/M4_mc_metadata_as_proof.sql +16 -0
  166. package/tests/mutations/717-f2b/M5_dm_any_mode.sql +11 -0
  167. package/tests/mutations/717-f2b/M6_dm_board_delivery_counts.sql +11 -0
  168. package/tests/mutations/717-f2b/M7_mc_any_mode.sql +11 -0
  169. package/tests/mutations/717-f2b/M8_dm_thread_stamp_as_proof.sql +12 -0
  170. package/tests/mutations/717-f2b/M9_dm_lookup_any_author.sql +15 -0
  171. package/tests/mutations/717-f2b/run.sh +82 -0
@@ -0,0 +1,199 @@
1
+ Parsed test spec with 3 sessions
2
+
3
+ starting permutation: w_begin w_artifact a_begin a_post w_commit a_end check
4
+ step w_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
5
+ set_config
6
+ ------------
7
+ service_role
8
+ (1 row)
9
+
10
+ step w_artifact: select count(*) from agent_board.add_artifact('66720000-0000-4000-8000-000000000001','https://example.test/xb',p_thread_id=>'66720000-0000-4000-8000-000000000010');
11
+ count
12
+ -----
13
+ 1
14
+ (1 row)
15
+
16
+ step a_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
17
+ set_config
18
+ ------------
19
+ service_role
20
+ (1 row)
21
+
22
+ step a_post: select count(*) from agent_board.post_board_message('66720000-0000-4000-8000-000000000010','66720000-0000-4000-8000-000000000001','66720000-0000-4000-8000-000000000020','s','b'); <waiting ...>
23
+ step w_commit: commit;
24
+ step a_post: <... completed>
25
+ ERROR: thread has private history
26
+ step a_end: end;
27
+ step check: select (t.board_id is not null) as stamped, (select count(*) from agent_board.artifacts where thread_id=t.id) as artifacts, (select count(*) from agent_board.claims where thread_id=t.id) as claims, (select count(*) from agent_board.escalations where thread_id=t.id) as escalations, (select count(*) from agent_board.messages where thread_id=t.id) as messages from agent_board.threads t where t.id='66720000-0000-4000-8000-000000000010';
28
+ stamped|artifacts|claims|escalations|messages
29
+ -------+---------+------+-----------+--------
30
+ f | 1| 0| 0| 0
31
+ (1 row)
32
+
33
+
34
+ starting permutation: a_begin a_post w_begin w_artifact a_end w_commit check
35
+ step a_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
36
+ set_config
37
+ ------------
38
+ service_role
39
+ (1 row)
40
+
41
+ step a_post: select count(*) from agent_board.post_board_message('66720000-0000-4000-8000-000000000010','66720000-0000-4000-8000-000000000001','66720000-0000-4000-8000-000000000020','s','b');
42
+ count
43
+ -----
44
+ 1
45
+ (1 row)
46
+
47
+ step w_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
48
+ set_config
49
+ ------------
50
+ service_role
51
+ (1 row)
52
+
53
+ step w_artifact: select count(*) from agent_board.add_artifact('66720000-0000-4000-8000-000000000001','https://example.test/xb',p_thread_id=>'66720000-0000-4000-8000-000000000010'); <waiting ...>
54
+ step a_end: end;
55
+ step w_artifact: <... completed>
56
+ count
57
+ -----
58
+ 1
59
+ (1 row)
60
+
61
+ step w_commit: commit;
62
+ step check: select (t.board_id is not null) as stamped, (select count(*) from agent_board.artifacts where thread_id=t.id) as artifacts, (select count(*) from agent_board.claims where thread_id=t.id) as claims, (select count(*) from agent_board.escalations where thread_id=t.id) as escalations, (select count(*) from agent_board.messages where thread_id=t.id) as messages from agent_board.threads t where t.id='66720000-0000-4000-8000-000000000010';
63
+ stamped|artifacts|claims|escalations|messages
64
+ -------+---------+------+-----------+--------
65
+ t | 1| 0| 0| 1
66
+ (1 row)
67
+
68
+
69
+ starting permutation: w_begin w_claim a_begin a_post w_commit a_end check
70
+ step w_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
71
+ set_config
72
+ ------------
73
+ service_role
74
+ (1 row)
75
+
76
+ step w_claim: select count(*) from agent_board.acquire_claim('66720000-0000-4000-8000-000000000001','custom','xb-race-key',now()+interval '1 hour',p_thread_id=>'66720000-0000-4000-8000-000000000010');
77
+ count
78
+ -----
79
+ 1
80
+ (1 row)
81
+
82
+ step a_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
83
+ set_config
84
+ ------------
85
+ service_role
86
+ (1 row)
87
+
88
+ step a_post: select count(*) from agent_board.post_board_message('66720000-0000-4000-8000-000000000010','66720000-0000-4000-8000-000000000001','66720000-0000-4000-8000-000000000020','s','b'); <waiting ...>
89
+ step w_commit: commit;
90
+ step a_post: <... completed>
91
+ ERROR: thread has private history
92
+ step a_end: end;
93
+ step check: select (t.board_id is not null) as stamped, (select count(*) from agent_board.artifacts where thread_id=t.id) as artifacts, (select count(*) from agent_board.claims where thread_id=t.id) as claims, (select count(*) from agent_board.escalations where thread_id=t.id) as escalations, (select count(*) from agent_board.messages where thread_id=t.id) as messages from agent_board.threads t where t.id='66720000-0000-4000-8000-000000000010';
94
+ stamped|artifacts|claims|escalations|messages
95
+ -------+---------+------+-----------+--------
96
+ f | 0| 1| 0| 0
97
+ (1 row)
98
+
99
+
100
+ starting permutation: a_begin a_post w_begin w_claim a_end w_commit check
101
+ step a_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
102
+ set_config
103
+ ------------
104
+ service_role
105
+ (1 row)
106
+
107
+ step a_post: select count(*) from agent_board.post_board_message('66720000-0000-4000-8000-000000000010','66720000-0000-4000-8000-000000000001','66720000-0000-4000-8000-000000000020','s','b');
108
+ count
109
+ -----
110
+ 1
111
+ (1 row)
112
+
113
+ step w_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
114
+ set_config
115
+ ------------
116
+ service_role
117
+ (1 row)
118
+
119
+ step w_claim: select count(*) from agent_board.acquire_claim('66720000-0000-4000-8000-000000000001','custom','xb-race-key',now()+interval '1 hour',p_thread_id=>'66720000-0000-4000-8000-000000000010'); <waiting ...>
120
+ step a_end: end;
121
+ step w_claim: <... completed>
122
+ count
123
+ -----
124
+ 1
125
+ (1 row)
126
+
127
+ step w_commit: commit;
128
+ step check: select (t.board_id is not null) as stamped, (select count(*) from agent_board.artifacts where thread_id=t.id) as artifacts, (select count(*) from agent_board.claims where thread_id=t.id) as claims, (select count(*) from agent_board.escalations where thread_id=t.id) as escalations, (select count(*) from agent_board.messages where thread_id=t.id) as messages from agent_board.threads t where t.id='66720000-0000-4000-8000-000000000010';
129
+ stamped|artifacts|claims|escalations|messages
130
+ -------+---------+------+-----------+--------
131
+ t | 0| 1| 0| 1
132
+ (1 row)
133
+
134
+
135
+ starting permutation: w_begin w_escalation a_begin a_post w_commit a_end check
136
+ step w_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
137
+ set_config
138
+ ------------
139
+ service_role
140
+ (1 row)
141
+
142
+ step w_escalation: select count(*) from agent_board.raise_escalation('66720000-0000-4000-8000-000000000010','66720000-0000-4000-8000-000000000001','private escalation');
143
+ count
144
+ -----
145
+ 1
146
+ (1 row)
147
+
148
+ step a_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
149
+ set_config
150
+ ------------
151
+ service_role
152
+ (1 row)
153
+
154
+ step a_post: select count(*) from agent_board.post_board_message('66720000-0000-4000-8000-000000000010','66720000-0000-4000-8000-000000000001','66720000-0000-4000-8000-000000000020','s','b'); <waiting ...>
155
+ step w_commit: commit;
156
+ step a_post: <... completed>
157
+ ERROR: thread has private history
158
+ step a_end: end;
159
+ step check: select (t.board_id is not null) as stamped, (select count(*) from agent_board.artifacts where thread_id=t.id) as artifacts, (select count(*) from agent_board.claims where thread_id=t.id) as claims, (select count(*) from agent_board.escalations where thread_id=t.id) as escalations, (select count(*) from agent_board.messages where thread_id=t.id) as messages from agent_board.threads t where t.id='66720000-0000-4000-8000-000000000010';
160
+ stamped|artifacts|claims|escalations|messages
161
+ -------+---------+------+-----------+--------
162
+ f | 0| 0| 1| 0
163
+ (1 row)
164
+
165
+
166
+ starting permutation: a_begin a_post w_begin w_escalation a_end w_commit check
167
+ step a_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
168
+ set_config
169
+ ------------
170
+ service_role
171
+ (1 row)
172
+
173
+ step a_post: select count(*) from agent_board.post_board_message('66720000-0000-4000-8000-000000000010','66720000-0000-4000-8000-000000000001','66720000-0000-4000-8000-000000000020','s','b');
174
+ count
175
+ -----
176
+ 1
177
+ (1 row)
178
+
179
+ step w_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
180
+ set_config
181
+ ------------
182
+ service_role
183
+ (1 row)
184
+
185
+ step w_escalation: select count(*) from agent_board.raise_escalation('66720000-0000-4000-8000-000000000010','66720000-0000-4000-8000-000000000001','private escalation'); <waiting ...>
186
+ step a_end: end;
187
+ step w_escalation: <... completed>
188
+ count
189
+ -----
190
+ 1
191
+ (1 row)
192
+
193
+ step w_commit: commit;
194
+ step check: select (t.board_id is not null) as stamped, (select count(*) from agent_board.artifacts where thread_id=t.id) as artifacts, (select count(*) from agent_board.claims where thread_id=t.id) as claims, (select count(*) from agent_board.escalations where thread_id=t.id) as escalations, (select count(*) from agent_board.messages where thread_id=t.id) as messages from agent_board.threads t where t.id='66720000-0000-4000-8000-000000000010';
195
+ stamped|artifacts|claims|escalations|messages
196
+ -------+---------+------+-----------+--------
197
+ t | 0| 0| 1| 1
198
+ (1 row)
199
+
@@ -0,0 +1,78 @@
1
+ Parsed test spec with 3 sessions
2
+
3
+ starting permutation: h_prime h_begin h_retain a_begin a_post h_commit a_end check
4
+ step h_prime: select set_config('request.jwt.claim.role','service_role',false); select count(*) from agent_board.heartbeat('66700000-0000-4000-8000-000000000001','66700000-0000-4000-8000-000000000010',p_activity_summary => 'initial');
5
+ set_config
6
+ ------------
7
+ service_role
8
+ (1 row)
9
+
10
+ count
11
+ -----
12
+ 1
13
+ (1 row)
14
+
15
+ step h_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
16
+ set_config
17
+ ------------
18
+ service_role
19
+ (1 row)
20
+
21
+ step h_retain: select count(*) from agent_board.heartbeat('66700000-0000-4000-8000-000000000001',null,p_activity_summary => 'retained',p_metadata => jsonb_build_object('note','private'));
22
+ count
23
+ -----
24
+ 1
25
+ (1 row)
26
+
27
+ step a_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
28
+ set_config
29
+ ------------
30
+ service_role
31
+ (1 row)
32
+
33
+ step a_post: select count(*) from agent_board.post_board_message('66700000-0000-4000-8000-000000000010','66700000-0000-4000-8000-000000000001',(select id from agent_board.boards where slug='xb-heartbeat-board'),'s','b'); <waiting ...>
34
+ step h_commit: commit;
35
+ step a_post: <... completed>
36
+ ERROR: thread has private history
37
+ step a_end: end;
38
+ step check: select (t.board_id is not null) as stamped, p.thread_id is not null as presence_has_thread, p.activity_summary from agent_board.threads t left join agent_board.presence p on p.agent_id='66700000-0000-4000-8000-000000000001' where t.id='66700000-0000-4000-8000-000000000010';
39
+ stamped|presence_has_thread|activity_summary
40
+ -------+-------------------+----------------
41
+ f |t |retained
42
+ (1 row)
43
+
44
+
45
+ starting permutation: a_begin a_post h_begin h_attach a_end h_commit check
46
+ step a_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
47
+ set_config
48
+ ------------
49
+ service_role
50
+ (1 row)
51
+
52
+ step a_post: select count(*) from agent_board.post_board_message('66700000-0000-4000-8000-000000000010','66700000-0000-4000-8000-000000000001',(select id from agent_board.boards where slug='xb-heartbeat-board'),'s','b');
53
+ count
54
+ -----
55
+ 1
56
+ (1 row)
57
+
58
+ step h_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
59
+ set_config
60
+ ------------
61
+ service_role
62
+ (1 row)
63
+
64
+ step h_attach: select count(*) from agent_board.heartbeat('66700000-0000-4000-8000-000000000001','66700000-0000-4000-8000-000000000010',p_activity_summary => 'after association'); <waiting ...>
65
+ step a_end: end;
66
+ step h_attach: <... completed>
67
+ count
68
+ -----
69
+ 1
70
+ (1 row)
71
+
72
+ step h_commit: commit;
73
+ step check: select (t.board_id is not null) as stamped, p.thread_id is not null as presence_has_thread, p.activity_summary from agent_board.threads t left join agent_board.presence p on p.agent_id='66700000-0000-4000-8000-000000000001' where t.id='66700000-0000-4000-8000-000000000010';
74
+ stamped|presence_has_thread|activity_summary
75
+ -------+-------------------+-----------------
76
+ t |t |after association
77
+ (1 row)
78
+
@@ -0,0 +1,67 @@
1
+ Parsed test spec with 3 sessions
2
+
3
+ starting permutation: w_begin w_artifact a_begin a_post w_commit a_end check
4
+ step w_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
5
+ set_config
6
+ ------------
7
+ service_role
8
+ (1 row)
9
+
10
+ step w_artifact: select count(*) from agent_board.add_artifact('66730000-0000-4000-8000-000000000001','https://example.test/mixed',p_thread_id=>'66730000-0000-4000-8000-000000000010',p_task_id=>'66730000-0000-4000-8000-000000000030');
11
+ count
12
+ -----
13
+ 1
14
+ (1 row)
15
+
16
+ step a_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
17
+ set_config
18
+ ------------
19
+ service_role
20
+ (1 row)
21
+
22
+ step a_post: select count(*) from agent_board.post_board_message('66730000-0000-4000-8000-000000000010','66730000-0000-4000-8000-000000000001','66730000-0000-4000-8000-000000000020','s','b'); <waiting ...>
23
+ step w_commit: commit;
24
+ step a_post: <... completed>
25
+ ERROR: thread has private history
26
+ step a_end: end;
27
+ step check: select (t.board_id is not null) as stamped, (select count(*) from agent_board.artifacts where thread_id=t.id and task_id='66730000-0000-4000-8000-000000000030') as mixed_artifacts, (select count(*) from agent_board.messages where thread_id=t.id) as messages from agent_board.threads t where t.id='66730000-0000-4000-8000-000000000010';
28
+ stamped|mixed_artifacts|messages
29
+ -------+---------------+--------
30
+ f | 1| 0
31
+ (1 row)
32
+
33
+
34
+ starting permutation: a_begin a_post w_begin w_artifact a_end w_commit check
35
+ step a_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
36
+ set_config
37
+ ------------
38
+ service_role
39
+ (1 row)
40
+
41
+ step a_post: select count(*) from agent_board.post_board_message('66730000-0000-4000-8000-000000000010','66730000-0000-4000-8000-000000000001','66730000-0000-4000-8000-000000000020','s','b');
42
+ count
43
+ -----
44
+ 1
45
+ (1 row)
46
+
47
+ step w_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
48
+ set_config
49
+ ------------
50
+ service_role
51
+ (1 row)
52
+
53
+ step w_artifact: select count(*) from agent_board.add_artifact('66730000-0000-4000-8000-000000000001','https://example.test/mixed',p_thread_id=>'66730000-0000-4000-8000-000000000010',p_task_id=>'66730000-0000-4000-8000-000000000030'); <waiting ...>
54
+ step a_end: end;
55
+ step w_artifact: <... completed>
56
+ count
57
+ -----
58
+ 1
59
+ (1 row)
60
+
61
+ step w_commit: commit;
62
+ step check: select (t.board_id is not null) as stamped, (select count(*) from agent_board.artifacts where thread_id=t.id and task_id='66730000-0000-4000-8000-000000000030') as mixed_artifacts, (select count(*) from agent_board.messages where thread_id=t.id) as messages from agent_board.threads t where t.id='66730000-0000-4000-8000-000000000010';
63
+ stamped|mixed_artifacts|messages
64
+ -------+---------------+--------
65
+ t | 1| 1
66
+ (1 row)
67
+
@@ -0,0 +1,67 @@
1
+ Parsed test spec with 3 sessions
2
+
3
+ starting permutation: w_begin w_post a_begin a_post w_commit a_end check
4
+ step w_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
5
+ set_config
6
+ ------------
7
+ service_role
8
+ (1 row)
9
+
10
+ step w_post: select count(*) from agent_board.post_message('66810000-0000-4000-8000-000000000010','66810000-0000-4000-8000-000000000001','private race message');
11
+ count
12
+ -----
13
+ 1
14
+ (1 row)
15
+
16
+ step a_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
17
+ set_config
18
+ ------------
19
+ service_role
20
+ (1 row)
21
+
22
+ step a_post: select count(*) from agent_board.post_board_message('66810000-0000-4000-8000-000000000010','66810000-0000-4000-8000-000000000001','66810000-0000-4000-8000-000000000020','board','board race message'); <waiting ...>
23
+ step w_commit: commit;
24
+ step a_post: <... completed>
25
+ ERROR: thread has private history
26
+ step a_end: end;
27
+ step check: select (t.board_id is not null) as stamped, (select count(*) from agent_board.messages m where m.thread_id=t.id and m.body='private race message') as private_messages, (select count(*) from agent_board.messages m where m.thread_id=t.id and m.body='board race message') as board_messages from agent_board.threads t where t.id='66810000-0000-4000-8000-000000000010';
28
+ stamped|private_messages|board_messages
29
+ -------+----------------+--------------
30
+ f | 1| 0
31
+ (1 row)
32
+
33
+
34
+ starting permutation: a_begin a_post w_begin w_post a_end w_commit check
35
+ step a_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
36
+ set_config
37
+ ------------
38
+ service_role
39
+ (1 row)
40
+
41
+ step a_post: select count(*) from agent_board.post_board_message('66810000-0000-4000-8000-000000000010','66810000-0000-4000-8000-000000000001','66810000-0000-4000-8000-000000000020','board','board race message');
42
+ count
43
+ -----
44
+ 1
45
+ (1 row)
46
+
47
+ step w_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
48
+ set_config
49
+ ------------
50
+ service_role
51
+ (1 row)
52
+
53
+ step w_post: select count(*) from agent_board.post_message('66810000-0000-4000-8000-000000000010','66810000-0000-4000-8000-000000000001','private race message'); <waiting ...>
54
+ step a_end: end;
55
+ step w_post: <... completed>
56
+ count
57
+ -----
58
+ 1
59
+ (1 row)
60
+
61
+ step w_commit: commit;
62
+ step check: select (t.board_id is not null) as stamped, (select count(*) from agent_board.messages m where m.thread_id=t.id and m.body='private race message') as private_messages, (select count(*) from agent_board.messages m where m.thread_id=t.id and m.body='board race message') as board_messages from agent_board.threads t where t.id='66810000-0000-4000-8000-000000000010';
63
+ stamped|private_messages|board_messages
64
+ -------+----------------+--------------
65
+ t | 1| 1
66
+ (1 row)
67
+
@@ -0,0 +1,133 @@
1
+ Parsed test spec with 3 sessions
2
+
3
+ starting permutation: w_begin w_task a_begin a_post w_commit a_end check
4
+ step w_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
5
+ set_config
6
+ ------------
7
+ service_role
8
+ (1 row)
9
+
10
+ step w_task: select count(*) from agent_board.create_task('66710000-0000-4000-8000-000000000010','66710000-0000-4000-8000-000000000001','private task');
11
+ count
12
+ -----
13
+ 1
14
+ (1 row)
15
+
16
+ step a_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
17
+ set_config
18
+ ------------
19
+ service_role
20
+ (1 row)
21
+
22
+ step a_post: select count(*) from agent_board.post_board_message('66710000-0000-4000-8000-000000000010','66710000-0000-4000-8000-000000000001','66710000-0000-4000-8000-000000000020','s','b'); <waiting ...>
23
+ step w_commit: commit;
24
+ step a_post: <... completed>
25
+ ERROR: thread has private history
26
+ step a_end: end;
27
+ step check: select (t.board_id is not null) as stamped, (select count(*) from agent_board.tasks where thread_id=t.id) as tasks, (select count(*) from agent_board.conflicts where thread_id=t.id) as conflicts, (select count(*) from agent_board.messages where thread_id=t.id) as messages from agent_board.threads t where t.id='66710000-0000-4000-8000-000000000010';
28
+ stamped|tasks|conflicts|messages
29
+ -------+-----+---------+--------
30
+ f | 1| 0| 0
31
+ (1 row)
32
+
33
+
34
+ starting permutation: a_begin a_post w_begin w_task a_end w_commit check
35
+ step a_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
36
+ set_config
37
+ ------------
38
+ service_role
39
+ (1 row)
40
+
41
+ step a_post: select count(*) from agent_board.post_board_message('66710000-0000-4000-8000-000000000010','66710000-0000-4000-8000-000000000001','66710000-0000-4000-8000-000000000020','s','b');
42
+ count
43
+ -----
44
+ 1
45
+ (1 row)
46
+
47
+ step w_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
48
+ set_config
49
+ ------------
50
+ service_role
51
+ (1 row)
52
+
53
+ step w_task: select count(*) from agent_board.create_task('66710000-0000-4000-8000-000000000010','66710000-0000-4000-8000-000000000001','private task'); <waiting ...>
54
+ step a_end: end;
55
+ step w_task: <... completed>
56
+ count
57
+ -----
58
+ 1
59
+ (1 row)
60
+
61
+ step w_commit: commit;
62
+ step check: select (t.board_id is not null) as stamped, (select count(*) from agent_board.tasks where thread_id=t.id) as tasks, (select count(*) from agent_board.conflicts where thread_id=t.id) as conflicts, (select count(*) from agent_board.messages where thread_id=t.id) as messages from agent_board.threads t where t.id='66710000-0000-4000-8000-000000000010';
63
+ stamped|tasks|conflicts|messages
64
+ -------+-----+---------+--------
65
+ t | 1| 0| 1
66
+ (1 row)
67
+
68
+
69
+ starting permutation: w_begin w_conflict a_begin a_post w_commit a_end check
70
+ step w_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
71
+ set_config
72
+ ------------
73
+ service_role
74
+ (1 row)
75
+
76
+ step w_conflict: select count(*) from agent_board.raise_conflict('66710000-0000-4000-8000-000000000010','66710000-0000-4000-8000-000000000001','private conflict');
77
+ count
78
+ -----
79
+ 1
80
+ (1 row)
81
+
82
+ step a_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
83
+ set_config
84
+ ------------
85
+ service_role
86
+ (1 row)
87
+
88
+ step a_post: select count(*) from agent_board.post_board_message('66710000-0000-4000-8000-000000000010','66710000-0000-4000-8000-000000000001','66710000-0000-4000-8000-000000000020','s','b'); <waiting ...>
89
+ step w_commit: commit;
90
+ step a_post: <... completed>
91
+ ERROR: thread has private history
92
+ step a_end: end;
93
+ step check: select (t.board_id is not null) as stamped, (select count(*) from agent_board.tasks where thread_id=t.id) as tasks, (select count(*) from agent_board.conflicts where thread_id=t.id) as conflicts, (select count(*) from agent_board.messages where thread_id=t.id) as messages from agent_board.threads t where t.id='66710000-0000-4000-8000-000000000010';
94
+ stamped|tasks|conflicts|messages
95
+ -------+-----+---------+--------
96
+ f | 0| 1| 0
97
+ (1 row)
98
+
99
+
100
+ starting permutation: a_begin a_post w_begin w_conflict a_end w_commit check
101
+ step a_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
102
+ set_config
103
+ ------------
104
+ service_role
105
+ (1 row)
106
+
107
+ step a_post: select count(*) from agent_board.post_board_message('66710000-0000-4000-8000-000000000010','66710000-0000-4000-8000-000000000001','66710000-0000-4000-8000-000000000020','s','b');
108
+ count
109
+ -----
110
+ 1
111
+ (1 row)
112
+
113
+ step w_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
114
+ set_config
115
+ ------------
116
+ service_role
117
+ (1 row)
118
+
119
+ step w_conflict: select count(*) from agent_board.raise_conflict('66710000-0000-4000-8000-000000000010','66710000-0000-4000-8000-000000000001','private conflict'); <waiting ...>
120
+ step a_end: end;
121
+ step w_conflict: <... completed>
122
+ count
123
+ -----
124
+ 1
125
+ (1 row)
126
+
127
+ step w_commit: commit;
128
+ step check: select (t.board_id is not null) as stamped, (select count(*) from agent_board.tasks where thread_id=t.id) as tasks, (select count(*) from agent_board.conflicts where thread_id=t.id) as conflicts, (select count(*) from agent_board.messages where thread_id=t.id) as messages from agent_board.threads t where t.id='66710000-0000-4000-8000-000000000010';
129
+ stamped|tasks|conflicts|messages
130
+ -------+-----+---------+--------
131
+ t | 0| 1| 1
132
+ (1 row)
133
+
@@ -0,0 +1,133 @@
1
+ Parsed test spec with 3 sessions
2
+
3
+ starting permutation: w_begin w_conflict a_begin a_post w_commit a_end check
4
+ step w_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
5
+ set_config
6
+ ------------
7
+ service_role
8
+ (1 row)
9
+
10
+ step w_conflict: select count(*) from agent_board.raise_conflict('66760000-0000-4000-8000-000000000010','66760000-0000-4000-8000-000000000001','private conflict',p_task_id=>'66760000-0000-4000-8000-000000000030');
11
+ count
12
+ -----
13
+ 1
14
+ (1 row)
15
+
16
+ step a_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
17
+ set_config
18
+ ------------
19
+ service_role
20
+ (1 row)
21
+
22
+ step a_post: select count(*) from agent_board.post_board_message('66760000-0000-4000-8000-000000000010','66760000-0000-4000-8000-000000000001','66760000-0000-4000-8000-000000000020','s','b'); <waiting ...>
23
+ step w_commit: commit;
24
+ step a_post: <... completed>
25
+ ERROR: thread has private history
26
+ step a_end: end;
27
+ step check: select (t.board_id is not null) as stamped, (select count(*) from agent_board.conflicts where thread_id=t.id and task_id='66760000-0000-4000-8000-000000000030') as conflicts, (select count(*) from agent_board.escalations where thread_id=t.id and task_id='66760000-0000-4000-8000-000000000030') as escalations, (select count(*) from agent_board.messages where thread_id=t.id) as messages from agent_board.threads t where t.id='66760000-0000-4000-8000-000000000010';
28
+ stamped|conflicts|escalations|messages
29
+ -------+---------+-----------+--------
30
+ f | 1| 0| 0
31
+ (1 row)
32
+
33
+
34
+ starting permutation: a_begin a_post w_begin w_conflict a_end w_commit check
35
+ step a_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
36
+ set_config
37
+ ------------
38
+ service_role
39
+ (1 row)
40
+
41
+ step a_post: select count(*) from agent_board.post_board_message('66760000-0000-4000-8000-000000000010','66760000-0000-4000-8000-000000000001','66760000-0000-4000-8000-000000000020','s','b');
42
+ count
43
+ -----
44
+ 1
45
+ (1 row)
46
+
47
+ step w_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
48
+ set_config
49
+ ------------
50
+ service_role
51
+ (1 row)
52
+
53
+ step w_conflict: select count(*) from agent_board.raise_conflict('66760000-0000-4000-8000-000000000010','66760000-0000-4000-8000-000000000001','private conflict',p_task_id=>'66760000-0000-4000-8000-000000000030'); <waiting ...>
54
+ step a_end: end;
55
+ step w_conflict: <... completed>
56
+ count
57
+ -----
58
+ 1
59
+ (1 row)
60
+
61
+ step w_commit: commit;
62
+ step check: select (t.board_id is not null) as stamped, (select count(*) from agent_board.conflicts where thread_id=t.id and task_id='66760000-0000-4000-8000-000000000030') as conflicts, (select count(*) from agent_board.escalations where thread_id=t.id and task_id='66760000-0000-4000-8000-000000000030') as escalations, (select count(*) from agent_board.messages where thread_id=t.id) as messages from agent_board.threads t where t.id='66760000-0000-4000-8000-000000000010';
63
+ stamped|conflicts|escalations|messages
64
+ -------+---------+-----------+--------
65
+ t | 1| 0| 1
66
+ (1 row)
67
+
68
+
69
+ starting permutation: w_begin w_escalation a_begin a_post w_commit a_end check
70
+ step w_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
71
+ set_config
72
+ ------------
73
+ service_role
74
+ (1 row)
75
+
76
+ step w_escalation: select count(*) from agent_board.raise_escalation('66760000-0000-4000-8000-000000000010','66760000-0000-4000-8000-000000000001','private escalation',p_task_id=>'66760000-0000-4000-8000-000000000030');
77
+ count
78
+ -----
79
+ 1
80
+ (1 row)
81
+
82
+ step a_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
83
+ set_config
84
+ ------------
85
+ service_role
86
+ (1 row)
87
+
88
+ step a_post: select count(*) from agent_board.post_board_message('66760000-0000-4000-8000-000000000010','66760000-0000-4000-8000-000000000001','66760000-0000-4000-8000-000000000020','s','b'); <waiting ...>
89
+ step w_commit: commit;
90
+ step a_post: <... completed>
91
+ ERROR: thread has private history
92
+ step a_end: end;
93
+ step check: select (t.board_id is not null) as stamped, (select count(*) from agent_board.conflicts where thread_id=t.id and task_id='66760000-0000-4000-8000-000000000030') as conflicts, (select count(*) from agent_board.escalations where thread_id=t.id and task_id='66760000-0000-4000-8000-000000000030') as escalations, (select count(*) from agent_board.messages where thread_id=t.id) as messages from agent_board.threads t where t.id='66760000-0000-4000-8000-000000000010';
94
+ stamped|conflicts|escalations|messages
95
+ -------+---------+-----------+--------
96
+ f | 0| 1| 0
97
+ (1 row)
98
+
99
+
100
+ starting permutation: a_begin a_post w_begin w_escalation a_end w_commit check
101
+ step a_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
102
+ set_config
103
+ ------------
104
+ service_role
105
+ (1 row)
106
+
107
+ step a_post: select count(*) from agent_board.post_board_message('66760000-0000-4000-8000-000000000010','66760000-0000-4000-8000-000000000001','66760000-0000-4000-8000-000000000020','s','b');
108
+ count
109
+ -----
110
+ 1
111
+ (1 row)
112
+
113
+ step w_begin: begin; select set_config('request.jwt.claim.role','service_role',true);
114
+ set_config
115
+ ------------
116
+ service_role
117
+ (1 row)
118
+
119
+ step w_escalation: select count(*) from agent_board.raise_escalation('66760000-0000-4000-8000-000000000010','66760000-0000-4000-8000-000000000001','private escalation',p_task_id=>'66760000-0000-4000-8000-000000000030'); <waiting ...>
120
+ step a_end: end;
121
+ step w_escalation: <... completed>
122
+ count
123
+ -----
124
+ 1
125
+ (1 row)
126
+
127
+ step w_commit: commit;
128
+ step check: select (t.board_id is not null) as stamped, (select count(*) from agent_board.conflicts where thread_id=t.id and task_id='66760000-0000-4000-8000-000000000030') as conflicts, (select count(*) from agent_board.escalations where thread_id=t.id and task_id='66760000-0000-4000-8000-000000000030') as escalations, (select count(*) from agent_board.messages where thread_id=t.id) as messages from agent_board.threads t where t.id='66760000-0000-4000-8000-000000000010';
129
+ stamped|conflicts|escalations|messages
130
+ -------+---------+-----------+--------
131
+ t | 0| 1| 1
132
+ (1 row)
133
+