agents-can-communicate 0.3.0 → 0.4.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 (157) hide show
  1. package/README.md +112 -91
  2. package/SECURITY.md +8 -5
  3. package/bin/acc-bootstrap.mjs +5 -54
  4. package/bin/acc-claude-channel.mjs +8 -175
  5. package/bin/acc-hook.mjs +4 -133
  6. package/bin/acc-mcp.mjs +4 -59
  7. package/bin/acc-update-worker.mjs +8 -0
  8. package/bin/acc.mjs +5 -39
  9. package/bin/entrypoints/acc-bootstrap.mjs +47 -0
  10. package/bin/entrypoints/acc-claude-channel.mjs +149 -0
  11. package/bin/entrypoints/acc-hook.mjs +58 -0
  12. package/bin/entrypoints/acc-mcp.mjs +70 -0
  13. package/bin/entrypoints/acc.mjs +51 -0
  14. package/bin/entrypoints/claude-channel-stdio.mjs +29 -0
  15. package/bin/entrypoints/hook-output.mjs +73 -0
  16. package/docs/ADAPTER_AUTHORING.md +62 -24
  17. package/docs/ARCHITECTURE.md +79 -20
  18. package/docs/CAPABILITIES.md +52 -30
  19. package/docs/CLI.md +164 -35
  20. package/docs/CONCEPTS.md +97 -93
  21. package/docs/CONFIGURATION.md +66 -45
  22. package/docs/DESIGN_DECISIONS.md +24 -15
  23. package/docs/GETTING_STARTED.md +124 -118
  24. package/docs/GLOSSARY.md +12 -6
  25. package/docs/HOW_IT_WORKS.md +136 -229
  26. package/docs/MCP.md +98 -31
  27. package/docs/PROTOCOL.md +76 -14
  28. package/docs/RELEASING.md +128 -86
  29. package/docs/SECURITY_MODEL.md +52 -15
  30. package/docs/TROUBLESHOOTING.md +88 -18
  31. package/docs/UPGRADING.md +119 -0
  32. package/docs/WHY_ACC.md +19 -16
  33. package/docs/index.md +40 -24
  34. package/node_modules/@agents-can-communicate/adapter-claude-code/package.json +1 -1
  35. package/node_modules/@agents-can-communicate/adapter-claude-code/plugin/skills/acc/SKILL.md +112 -9
  36. package/node_modules/@agents-can-communicate/adapter-claude-code/src/install.mjs +6 -6
  37. package/node_modules/@agents-can-communicate/adapter-claude-code/src/native-delivery.mjs +2 -1
  38. package/node_modules/@agents-can-communicate/adapter-codex/certification.json +38 -13
  39. package/node_modules/@agents-can-communicate/adapter-codex/fixtures/certification-provenance.json +220 -0
  40. package/node_modules/@agents-can-communicate/adapter-codex/fixtures/delivery/codex-cli-0.152.1-local-daemon-current-binding-product-evidence.json +1549 -0
  41. package/node_modules/@agents-can-communicate/adapter-codex/fixtures/delivery/codex-cli-0.152.1-local-daemon-current-binding-product.json +27 -0
  42. package/node_modules/@agents-can-communicate/adapter-codex/fixtures/delivery/codex-cli-0.152.1-local-daemon-product-evidence.json +1549 -0
  43. package/node_modules/@agents-can-communicate/adapter-codex/fixtures/delivery/codex-cli-0.152.1-local-daemon-product.json +27 -0
  44. package/node_modules/@agents-can-communicate/adapter-codex/fixtures/delivery/codex-cli-0.152.1-local-daemon-transport-evidence.json +259 -0
  45. package/node_modules/@agents-can-communicate/adapter-codex/fixtures/delivery/codex-cli-0.152.1-local-daemon-transport.json +21 -0
  46. package/node_modules/@agents-can-communicate/adapter-codex/fixtures/delivery/codex-cli-0.153.4-local-daemon-current-binding-product-evidence.json +1549 -0
  47. package/node_modules/@agents-can-communicate/adapter-codex/fixtures/delivery/codex-cli-0.153.4-local-daemon-current-binding-product.json +27 -0
  48. package/node_modules/@agents-can-communicate/adapter-codex/fixtures/delivery/codex-cli-0.153.4-local-daemon-product-evidence.json +1549 -0
  49. package/node_modules/@agents-can-communicate/adapter-codex/fixtures/delivery/codex-cli-0.153.4-local-daemon-product.json +27 -0
  50. package/node_modules/@agents-can-communicate/adapter-codex/fixtures/delivery/codex-cli-0.153.4-local-daemon-transport-evidence.json +259 -0
  51. package/node_modules/@agents-can-communicate/adapter-codex/fixtures/delivery/codex-cli-0.153.4-local-daemon-transport.json +21 -0
  52. package/node_modules/@agents-can-communicate/adapter-codex/package.json +14 -2
  53. package/node_modules/@agents-can-communicate/adapter-codex/plugin/skills/acc/SKILL.md +111 -8
  54. package/node_modules/@agents-can-communicate/adapter-codex/src/adapter.mjs +26 -44
  55. package/node_modules/@agents-can-communicate/adapter-codex/src/app-server-client.mjs +70 -17
  56. package/node_modules/@agents-can-communicate/adapter-codex/src/config-block.mjs +231 -0
  57. package/node_modules/@agents-can-communicate/adapter-codex/src/hooks.mjs +1 -1
  58. package/node_modules/@agents-can-communicate/adapter-codex/src/install.mjs +71 -63
  59. package/node_modules/@agents-can-communicate/adapter-codex/src/native-delivery.mjs +107 -103
  60. package/node_modules/@agents-can-communicate/adapter-codex/src/native-endpoint.mjs +96 -0
  61. package/node_modules/@agents-can-communicate/adapter-codex/src/ws-json-rpc.mjs +3 -2
  62. package/node_modules/@agents-can-communicate/adapter-gemini-cli/extension/gemini-extension.json +1 -1
  63. package/node_modules/@agents-can-communicate/adapter-gemini-cli/extension/skills/acc/SKILL.md +111 -8
  64. package/node_modules/@agents-can-communicate/adapter-gemini-cli/package.json +1 -1
  65. package/node_modules/@agents-can-communicate/adapter-gemini-cli/src/install.mjs +2 -2
  66. package/node_modules/@agents-can-communicate/adapter-grok/package.json +1 -1
  67. package/node_modules/@agents-can-communicate/adapter-grok/plugin/skills/acc/SKILL.md +111 -8
  68. package/node_modules/@agents-can-communicate/adapter-grok/src/install.mjs +2 -2
  69. package/node_modules/@agents-can-communicate/adapter-kimi/package.json +1 -1
  70. package/node_modules/@agents-can-communicate/adapter-kimi/plugin/skills/acc/SKILL.md +111 -8
  71. package/node_modules/@agents-can-communicate/adapter-kimi/src/hooks.mjs +1 -1
  72. package/node_modules/@agents-can-communicate/adapter-kimi/src/install.mjs +2 -2
  73. package/node_modules/@agents-can-communicate/adapter-sdk/package.json +1 -1
  74. package/node_modules/@agents-can-communicate/adapter-sdk/src/capabilities.mjs +5 -0
  75. package/node_modules/@agents-can-communicate/adapter-sdk/src/context-projector.mjs +26 -4
  76. package/node_modules/@agents-can-communicate/adapter-sdk/src/decision-text.mjs +19 -0
  77. package/node_modules/@agents-can-communicate/adapter-sdk/src/hook-shim.mjs +5 -3
  78. package/node_modules/@agents-can-communicate/adapter-sdk/src/index.mjs +1 -0
  79. package/node_modules/@agents-can-communicate/adapter-sdk/src/native-delivery.mjs +9 -2
  80. package/node_modules/@agents-can-communicate/adapter-sdk/src/native-vocabulary.mjs +2 -6
  81. package/node_modules/@agents-can-communicate/adapter-sdk/src/session-binding.mjs +29 -9
  82. package/node_modules/@agents-can-communicate/adapter-sdk/src/toml-block.mjs +8 -6
  83. package/node_modules/@agents-can-communicate/cli/package.json +4 -2
  84. package/node_modules/@agents-can-communicate/cli/src/args.mjs +49 -22
  85. package/node_modules/@agents-can-communicate/cli/src/doctor-command.mjs +11 -4
  86. package/node_modules/@agents-can-communicate/cli/src/git-probe.mjs +9 -3
  87. package/node_modules/@agents-can-communicate/cli/src/help.mjs +109 -14
  88. package/node_modules/@agents-can-communicate/cli/src/install-command.mjs +66 -18
  89. package/node_modules/@agents-can-communicate/cli/src/main.mjs +35 -12
  90. package/node_modules/@agents-can-communicate/cli/src/managed-runtime/activation.mjs +110 -0
  91. package/node_modules/@agents-can-communicate/cli/src/managed-runtime/command.mjs +63 -0
  92. package/node_modules/@agents-can-communicate/cli/src/managed-runtime/download.mjs +71 -0
  93. package/node_modules/@agents-can-communicate/cli/src/managed-runtime/entry.mjs +110 -0
  94. package/node_modules/@agents-can-communicate/cli/src/managed-runtime/generation.mjs +167 -0
  95. package/node_modules/@agents-can-communicate/cli/src/managed-runtime/install.mjs +73 -0
  96. package/node_modules/@agents-can-communicate/cli/src/managed-runtime/launchers.mjs +60 -0
  97. package/node_modules/@agents-can-communicate/cli/src/managed-runtime/leases.mjs +60 -0
  98. package/node_modules/@agents-can-communicate/cli/src/managed-runtime/location.mjs +55 -0
  99. package/node_modules/@agents-can-communicate/cli/src/managed-runtime/mutex.mjs +145 -0
  100. package/node_modules/@agents-can-communicate/cli/src/managed-runtime/policy.mjs +4 -0
  101. package/node_modules/@agents-can-communicate/cli/src/managed-runtime/refresh.mjs +40 -0
  102. package/node_modules/@agents-can-communicate/cli/src/managed-runtime/schedule.mjs +21 -0
  103. package/node_modules/@agents-can-communicate/cli/src/managed-runtime/state.mjs +122 -0
  104. package/node_modules/@agents-can-communicate/cli/src/managed-runtime/worker.mjs +65 -0
  105. package/node_modules/@agents-can-communicate/cli/src/session-owner.mjs +33 -108
  106. package/node_modules/@agents-can-communicate/cli/src/update-command.mjs +25 -7
  107. package/node_modules/@agents-can-communicate/core/package.json +1 -1
  108. package/node_modules/@agents-can-communicate/core/src/attention.mjs +3 -0
  109. package/node_modules/@agents-can-communicate/core/src/claims.mjs +13 -8
  110. package/node_modules/@agents-can-communicate/core/src/conversations.mjs +48 -24
  111. package/node_modules/@agents-can-communicate/core/src/decision-changes.mjs +36 -0
  112. package/node_modules/@agents-can-communicate/core/src/decision-state.mjs +42 -0
  113. package/node_modules/@agents-can-communicate/core/src/delivery-bindings.mjs +11 -4
  114. package/node_modules/@agents-can-communicate/core/src/inbox.mjs +48 -17
  115. package/node_modules/@agents-can-communicate/core/src/intents.mjs +35 -15
  116. package/node_modules/@agents-can-communicate/core/src/materialisation.mjs +7 -5
  117. package/node_modules/@agents-can-communicate/core/src/message-pages.mjs +75 -0
  118. package/node_modules/@agents-can-communicate/core/src/next-turn-delivery.mjs +31 -0
  119. package/node_modules/@agents-can-communicate/core/src/session-opening.mjs +128 -0
  120. package/node_modules/@agents-can-communicate/core/src/sessions.mjs +58 -132
  121. package/node_modules/@agents-can-communicate/core/src/sync.mjs +31 -2
  122. package/node_modules/@agents-can-communicate/delivery-router/package.json +1 -1
  123. package/node_modules/@agents-can-communicate/delivery-router/src/refresh-binding.mjs +38 -0
  124. package/node_modules/@agents-can-communicate/delivery-router/src/router.mjs +86 -10
  125. package/node_modules/@agents-can-communicate/hook-runner/package.json +1 -1
  126. package/node_modules/@agents-can-communicate/hook-runner/src/client-version.mjs +1 -0
  127. package/node_modules/@agents-can-communicate/hook-runner/src/native-binding.mjs +6 -4
  128. package/node_modules/@agents-can-communicate/hook-runner/src/native-retirement.mjs +48 -0
  129. package/node_modules/@agents-can-communicate/hook-runner/src/process-table.mjs +1 -1
  130. package/node_modules/@agents-can-communicate/hook-runner/src/runner.mjs +175 -67
  131. package/node_modules/@agents-can-communicate/hook-runner/src/session-lifecycle.mjs +13 -0
  132. package/node_modules/@agents-can-communicate/installer/package.json +4 -2
  133. package/node_modules/@agents-can-communicate/installer/src/apply.mjs +17 -2
  134. package/node_modules/@agents-can-communicate/installer/src/bootstrap-runtime.mjs +11 -5
  135. package/node_modules/@agents-can-communicate/installer/src/detect.mjs +1 -1
  136. package/node_modules/@agents-can-communicate/installer/src/index.mjs +1 -0
  137. package/node_modules/@agents-can-communicate/installer/src/live-policy.mjs +21 -0
  138. package/node_modules/@agents-can-communicate/installer/src/native-activation.mjs +20 -6
  139. package/node_modules/@agents-can-communicate/installer/src/ownership.mjs +10 -4
  140. package/node_modules/@agents-can-communicate/installer/src/plan.mjs +3 -3
  141. package/node_modules/@agents-can-communicate/mcp-server/package.json +1 -1
  142. package/node_modules/@agents-can-communicate/mcp-server/src/protocol.mjs +85 -0
  143. package/node_modules/@agents-can-communicate/mcp-server/src/resources.mjs +3 -2
  144. package/node_modules/@agents-can-communicate/mcp-server/src/server.mjs +59 -57
  145. package/node_modules/@agents-can-communicate/mcp-server/src/tools.mjs +47 -33
  146. package/node_modules/@agents-can-communicate/protocol/package.json +1 -1
  147. package/node_modules/@agents-can-communicate/protocol/src/conversations.mjs +3 -0
  148. package/node_modules/@agents-can-communicate/protocol/src/decision-changes.mjs +15 -0
  149. package/node_modules/@agents-can-communicate/protocol/src/index.mjs +3 -1
  150. package/node_modules/@agents-can-communicate/protocol/src/schema.mjs +14 -5
  151. package/node_modules/@agents-can-communicate/storage-filesystem/package.json +1 -1
  152. package/node_modules/@agents-can-communicate/storage-filesystem/src/atomic-json.mjs +5 -1
  153. package/node_modules/@agents-can-communicate/storage-filesystem/src/deadline.mjs +7 -0
  154. package/node_modules/@agents-can-communicate/storage-filesystem/src/index.mjs +2 -0
  155. package/node_modules/@agents-can-communicate/storage-filesystem/src/session-read.mjs +25 -0
  156. package/node_modules/@agents-can-communicate/storage-filesystem/src/store.mjs +28 -25
  157. package/package.json +2 -1
@@ -0,0 +1,1549 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "source": "real-client-capture",
4
+ "client": "codex-cli",
5
+ "phase": "product",
6
+ "clientVersion": "0.152.1",
7
+ "platform": "darwin-arm64",
8
+ "packageSha256": "a6a38da5a36911baabfbef0ccf934847fcf7b51000197264c273d21430f7fea2",
9
+ "startedAt": "2026-09-08T09:25:44.454Z",
10
+ "finishedAt": "2026-09-08T09:42:03.910Z",
11
+ "scenarioCount": 20,
12
+ "passedCount": 20,
13
+ "failedCount": 0,
14
+ "cleanup": {
15
+ "attempted": true,
16
+ "outcome": "passed",
17
+ "ownedProcesses": "stopped",
18
+ "temporaryState": "removed"
19
+ },
20
+ "scenarios": [
21
+ {
22
+ "schemaVersion": 1,
23
+ "source": "real-client-capture",
24
+ "client": "codex-cli",
25
+ "caseId": "P01",
26
+ "phase": "product",
27
+ "clientVersion": "0.152.1",
28
+ "platform": "darwin-arm64",
29
+ "packageSha256": "a6a38da5a36911baabfbef0ccf934847fcf7b51000197264c273d21430f7fea2",
30
+ "roles": [
31
+ {
32
+ "role": "daemon-a",
33
+ "participantId": null,
34
+ "threadId": null
35
+ },
36
+ {
37
+ "role": "receiver-b1",
38
+ "participantId": "codex-X4zGy6",
39
+ "threadId": "01a08056-7b0d-7c31-a3a9-612b85c33921"
40
+ },
41
+ {
42
+ "role": "sender",
43
+ "participantId": "synthetic-sender",
44
+ "threadId": null
45
+ }
46
+ ],
47
+ "timestamps": {
48
+ "startedAt": "2026-09-08T09:26:07.337Z",
49
+ "idleSinceAt": null,
50
+ "preToolUseAt": null,
51
+ "queuedAt": null,
52
+ "stopAt": null,
53
+ "nextTurnAt": null,
54
+ "finishedAt": "2026-09-08T09:26:07.985Z"
55
+ },
56
+ "outcome": "passed",
57
+ "observations": [
58
+ {
59
+ "kind": "installed-runtime",
60
+ "at": "2026-09-08T09:26:07.985Z",
61
+ "actor": "receiver-b1",
62
+ "target": null,
63
+ "outcome": "observed"
64
+ },
65
+ {
66
+ "kind": "workspace",
67
+ "at": "2026-09-08T09:26:07.985Z",
68
+ "actor": "receiver-b1",
69
+ "target": "receiver-b1",
70
+ "outcome": "matched"
71
+ },
72
+ {
73
+ "kind": "hook-cwd",
74
+ "at": "2026-09-08T09:26:07.985Z",
75
+ "actor": "receiver-b1",
76
+ "target": "receiver-b1",
77
+ "outcome": "matched"
78
+ },
79
+ {
80
+ "kind": "thread-cwd",
81
+ "at": "2026-09-08T09:26:07.985Z",
82
+ "actor": "receiver-b1",
83
+ "target": "receiver-b1",
84
+ "outcome": "matched"
85
+ },
86
+ {
87
+ "kind": "actual-cwd",
88
+ "at": "2026-09-08T09:26:07.985Z",
89
+ "actor": "receiver-b1",
90
+ "target": "receiver-b1",
91
+ "outcome": "matched"
92
+ },
93
+ {
94
+ "kind": "actual-cwd",
95
+ "at": "2026-09-08T09:26:07.985Z",
96
+ "actor": "daemon-a",
97
+ "target": "daemon-a",
98
+ "outcome": "matched"
99
+ },
100
+ {
101
+ "kind": "participant",
102
+ "at": "2026-09-08T09:26:07.985Z",
103
+ "actor": "receiver-b1",
104
+ "target": "daemon-a",
105
+ "outcome": "absent"
106
+ }
107
+ ],
108
+ "observationCount": 7,
109
+ "assertionCount": 10,
110
+ "cleanup": {
111
+ "attempted": true,
112
+ "outcome": "passed",
113
+ "ownedProcesses": "stopped",
114
+ "temporaryState": "removed"
115
+ }
116
+ },
117
+ {
118
+ "schemaVersion": 1,
119
+ "source": "real-client-capture",
120
+ "client": "codex-cli",
121
+ "caseId": "P02",
122
+ "phase": "product",
123
+ "clientVersion": "0.152.1",
124
+ "platform": "darwin-arm64",
125
+ "packageSha256": "a6a38da5a36911baabfbef0ccf934847fcf7b51000197264c273d21430f7fea2",
126
+ "roles": [
127
+ {
128
+ "role": "daemon-a",
129
+ "participantId": null,
130
+ "threadId": null
131
+ },
132
+ {
133
+ "role": "receiver-b1",
134
+ "participantId": "codex-X4zGy6",
135
+ "threadId": "01a08056-7b0d-7c31-a3a9-612b85c33921"
136
+ },
137
+ {
138
+ "role": "sender",
139
+ "participantId": "synthetic-sender",
140
+ "threadId": null
141
+ },
142
+ {
143
+ "role": "receiver-b2",
144
+ "participantId": "codex-pxWF_5",
145
+ "threadId": "01a08056-cffe-73f1-b585-afc4eb8f9180"
146
+ },
147
+ {
148
+ "role": "unrelated-c1",
149
+ "participantId": "codex-8KWzWF",
150
+ "threadId": "01a08057-2748-7382-ba86-bf36a8fd8681"
151
+ }
152
+ ],
153
+ "timestamps": {
154
+ "startedAt": "2026-09-08T09:26:52.383Z",
155
+ "idleSinceAt": null,
156
+ "preToolUseAt": null,
157
+ "queuedAt": null,
158
+ "stopAt": null,
159
+ "nextTurnAt": null,
160
+ "finishedAt": "2026-09-08T09:28:03.095Z"
161
+ },
162
+ "outcome": "passed",
163
+ "observations": [
164
+ {
165
+ "kind": "message",
166
+ "at": "2026-09-08T09:28:03.095Z",
167
+ "actor": "receiver-b1",
168
+ "target": null,
169
+ "outcome": "one"
170
+ },
171
+ {
172
+ "kind": "participant",
173
+ "at": "2026-09-08T09:28:03.095Z",
174
+ "actor": "receiver-b2",
175
+ "target": "receiver-b1",
176
+ "outcome": "absent"
177
+ },
178
+ {
179
+ "kind": "participant",
180
+ "at": "2026-09-08T09:28:03.095Z",
181
+ "actor": "unrelated-c1",
182
+ "target": "receiver-b1",
183
+ "outcome": "absent"
184
+ }
185
+ ],
186
+ "observationCount": 3,
187
+ "assertionCount": 9,
188
+ "cleanup": {
189
+ "attempted": true,
190
+ "outcome": "passed",
191
+ "ownedProcesses": "stopped",
192
+ "temporaryState": "removed"
193
+ }
194
+ },
195
+ {
196
+ "schemaVersion": 1,
197
+ "source": "real-client-capture",
198
+ "client": "codex-cli",
199
+ "caseId": "P03",
200
+ "phase": "product",
201
+ "clientVersion": "0.152.1",
202
+ "platform": "darwin-arm64",
203
+ "packageSha256": "a6a38da5a36911baabfbef0ccf934847fcf7b51000197264c273d21430f7fea2",
204
+ "roles": [
205
+ {
206
+ "role": "daemon-a",
207
+ "participantId": null,
208
+ "threadId": null
209
+ },
210
+ {
211
+ "role": "receiver-b1",
212
+ "participantId": "codex-X4zGy6",
213
+ "threadId": "01a08056-7b0d-7c31-a3a9-612b85c33921"
214
+ },
215
+ {
216
+ "role": "sender",
217
+ "participantId": "synthetic-sender",
218
+ "threadId": null
219
+ },
220
+ {
221
+ "role": "receiver-b2",
222
+ "participantId": "codex-pxWF_5",
223
+ "threadId": "01a08056-cffe-73f1-b585-afc4eb8f9180"
224
+ },
225
+ {
226
+ "role": "unrelated-c1",
227
+ "participantId": "codex-8KWzWF",
228
+ "threadId": "01a08057-2748-7382-ba86-bf36a8fd8681"
229
+ }
230
+ ],
231
+ "timestamps": {
232
+ "startedAt": "2026-09-08T09:28:03.120Z",
233
+ "idleSinceAt": null,
234
+ "preToolUseAt": null,
235
+ "queuedAt": null,
236
+ "stopAt": null,
237
+ "nextTurnAt": null,
238
+ "finishedAt": "2026-09-08T09:28:32.242Z"
239
+ },
240
+ "outcome": "passed",
241
+ "observations": [
242
+ {
243
+ "kind": "receipt",
244
+ "at": "2026-09-08T09:28:32.242Z",
245
+ "actor": "receiver-b1",
246
+ "target": null,
247
+ "outcome": "recorded"
248
+ },
249
+ {
250
+ "kind": "receipt",
251
+ "at": "2026-09-08T09:28:32.242Z",
252
+ "actor": "receiver-b1",
253
+ "target": null,
254
+ "outcome": "offered"
255
+ }
256
+ ],
257
+ "observationCount": 2,
258
+ "assertionCount": 4,
259
+ "cleanup": {
260
+ "attempted": true,
261
+ "outcome": "passed",
262
+ "ownedProcesses": "stopped",
263
+ "temporaryState": "removed"
264
+ }
265
+ },
266
+ {
267
+ "schemaVersion": 1,
268
+ "source": "real-client-capture",
269
+ "client": "codex-cli",
270
+ "caseId": "P06",
271
+ "phase": "product",
272
+ "clientVersion": "0.152.1",
273
+ "platform": "darwin-arm64",
274
+ "packageSha256": "a6a38da5a36911baabfbef0ccf934847fcf7b51000197264c273d21430f7fea2",
275
+ "roles": [
276
+ {
277
+ "role": "daemon-a",
278
+ "participantId": null,
279
+ "threadId": null
280
+ },
281
+ {
282
+ "role": "receiver-b1",
283
+ "participantId": "codex-X4zGy6",
284
+ "threadId": "01a08056-7b0d-7c31-a3a9-612b85c33921"
285
+ },
286
+ {
287
+ "role": "sender",
288
+ "participantId": "synthetic-sender",
289
+ "threadId": null
290
+ },
291
+ {
292
+ "role": "receiver-b2",
293
+ "participantId": "codex-pxWF_5",
294
+ "threadId": "01a08056-cffe-73f1-b585-afc4eb8f9180"
295
+ },
296
+ {
297
+ "role": "unrelated-c1",
298
+ "participantId": "codex-8KWzWF",
299
+ "threadId": "01a08057-2748-7382-ba86-bf36a8fd8681"
300
+ }
301
+ ],
302
+ "timestamps": {
303
+ "startedAt": "2026-09-08T09:28:32.243Z",
304
+ "idleSinceAt": null,
305
+ "preToolUseAt": null,
306
+ "queuedAt": null,
307
+ "stopAt": null,
308
+ "nextTurnAt": null,
309
+ "finishedAt": "2026-09-08T09:28:47.835Z"
310
+ },
311
+ "outcome": "passed",
312
+ "observations": [
313
+ {
314
+ "kind": "receipt",
315
+ "at": "2026-09-08T09:28:47.835Z",
316
+ "actor": "receiver-b1",
317
+ "target": null,
318
+ "outcome": "retrieved"
319
+ },
320
+ {
321
+ "kind": "receipt",
322
+ "at": "2026-09-08T09:28:47.835Z",
323
+ "actor": "receiver-b1",
324
+ "target": null,
325
+ "outcome": "acknowledged"
326
+ },
327
+ {
328
+ "kind": "answer",
329
+ "at": "2026-09-08T09:28:47.835Z",
330
+ "actor": "receiver-b1",
331
+ "target": null,
332
+ "outcome": "one"
333
+ },
334
+ {
335
+ "kind": "obligation",
336
+ "at": "2026-09-08T09:28:47.835Z",
337
+ "actor": "receiver-b1",
338
+ "target": null,
339
+ "outcome": "resolved"
340
+ }
341
+ ],
342
+ "observationCount": 4,
343
+ "assertionCount": 4,
344
+ "cleanup": {
345
+ "attempted": true,
346
+ "outcome": "passed",
347
+ "ownedProcesses": "stopped",
348
+ "temporaryState": "removed"
349
+ }
350
+ },
351
+ {
352
+ "schemaVersion": 1,
353
+ "source": "real-client-capture",
354
+ "client": "codex-cli",
355
+ "caseId": "P04",
356
+ "phase": "product",
357
+ "clientVersion": "0.152.1",
358
+ "platform": "darwin-arm64",
359
+ "packageSha256": "a6a38da5a36911baabfbef0ccf934847fcf7b51000197264c273d21430f7fea2",
360
+ "roles": [
361
+ {
362
+ "role": "daemon-a",
363
+ "participantId": null,
364
+ "threadId": null
365
+ },
366
+ {
367
+ "role": "receiver-b1",
368
+ "participantId": "codex-X4zGy6",
369
+ "threadId": "01a08056-7b0d-7c31-a3a9-612b85c33921"
370
+ },
371
+ {
372
+ "role": "sender",
373
+ "participantId": "synthetic-sender",
374
+ "threadId": null
375
+ },
376
+ {
377
+ "role": "receiver-b2",
378
+ "participantId": "codex-pxWF_5",
379
+ "threadId": "01a08056-cffe-73f1-b585-afc4eb8f9180"
380
+ },
381
+ {
382
+ "role": "unrelated-c1",
383
+ "participantId": "codex-8KWzWF",
384
+ "threadId": "01a08057-2748-7382-ba86-bf36a8fd8681"
385
+ }
386
+ ],
387
+ "timestamps": {
388
+ "startedAt": "2026-09-08T09:28:47.860Z",
389
+ "idleSinceAt": "2026-09-08T09:28:47.860Z",
390
+ "preToolUseAt": null,
391
+ "queuedAt": null,
392
+ "stopAt": null,
393
+ "nextTurnAt": null,
394
+ "finishedAt": "2026-09-08T09:31:45.912Z"
395
+ },
396
+ "outcome": "passed",
397
+ "observations": [
398
+ {
399
+ "kind": "lease",
400
+ "at": "2026-09-08T09:31:45.912Z",
401
+ "actor": "receiver-b1",
402
+ "target": null,
403
+ "outcome": "fresh"
404
+ },
405
+ {
406
+ "kind": "receipt",
407
+ "at": "2026-09-08T09:31:45.912Z",
408
+ "actor": "receiver-b1",
409
+ "target": null,
410
+ "outcome": "offered"
411
+ }
412
+ ],
413
+ "observationCount": 2,
414
+ "assertionCount": 20,
415
+ "cleanup": {
416
+ "attempted": true,
417
+ "outcome": "passed",
418
+ "ownedProcesses": "stopped",
419
+ "temporaryState": "removed"
420
+ }
421
+ },
422
+ {
423
+ "schemaVersion": 1,
424
+ "source": "real-client-capture",
425
+ "client": "codex-cli",
426
+ "caseId": "P05",
427
+ "phase": "product",
428
+ "clientVersion": "0.152.1",
429
+ "platform": "darwin-arm64",
430
+ "packageSha256": "a6a38da5a36911baabfbef0ccf934847fcf7b51000197264c273d21430f7fea2",
431
+ "roles": [
432
+ {
433
+ "role": "daemon-a",
434
+ "participantId": null,
435
+ "threadId": null
436
+ },
437
+ {
438
+ "role": "receiver-b1",
439
+ "participantId": "codex-X4zGy6",
440
+ "threadId": "01a08056-7b0d-7c31-a3a9-612b85c33921"
441
+ },
442
+ {
443
+ "role": "sender",
444
+ "participantId": "synthetic-sender",
445
+ "threadId": null
446
+ },
447
+ {
448
+ "role": "receiver-b2",
449
+ "participantId": "codex-pxWF_5",
450
+ "threadId": "01a08056-cffe-73f1-b585-afc4eb8f9180"
451
+ },
452
+ {
453
+ "role": "unrelated-c1",
454
+ "participantId": "codex-8KWzWF",
455
+ "threadId": "01a08057-2748-7382-ba86-bf36a8fd8681"
456
+ }
457
+ ],
458
+ "timestamps": {
459
+ "startedAt": "2026-09-08T09:32:02.682Z",
460
+ "idleSinceAt": null,
461
+ "preToolUseAt": "2026-09-08T09:32:14.745Z",
462
+ "queuedAt": "2026-09-08T09:32:15.298Z",
463
+ "stopAt": "2026-09-08T09:32:37.450Z",
464
+ "nextTurnAt": "2026-09-08T09:32:37.679Z",
465
+ "finishedAt": "2026-09-08T09:32:53.341Z"
466
+ },
467
+ "outcome": "passed",
468
+ "observations": [
469
+ {
470
+ "kind": "session-state",
471
+ "at": "2026-09-08T09:32:14.975Z",
472
+ "actor": "receiver-b1",
473
+ "target": null,
474
+ "outcome": "active"
475
+ },
476
+ {
477
+ "kind": "queue",
478
+ "at": "2026-09-08T09:32:15.462Z",
479
+ "actor": "receiver-b1",
480
+ "target": null,
481
+ "outcome": "pending"
482
+ },
483
+ {
484
+ "kind": "marker-order",
485
+ "at": "2026-09-08T09:32:53.341Z",
486
+ "actor": "receiver-b1",
487
+ "target": "receiver-b1",
488
+ "outcome": "before"
489
+ }
490
+ ],
491
+ "observationCount": 3,
492
+ "assertionCount": 8,
493
+ "cleanup": {
494
+ "attempted": true,
495
+ "outcome": "passed",
496
+ "ownedProcesses": "stopped",
497
+ "temporaryState": "removed"
498
+ }
499
+ },
500
+ {
501
+ "schemaVersion": 1,
502
+ "source": "real-client-capture",
503
+ "client": "codex-cli",
504
+ "caseId": "P07",
505
+ "phase": "product",
506
+ "clientVersion": "0.152.1",
507
+ "platform": "darwin-arm64",
508
+ "packageSha256": "a6a38da5a36911baabfbef0ccf934847fcf7b51000197264c273d21430f7fea2",
509
+ "roles": [
510
+ {
511
+ "role": "daemon-a",
512
+ "participantId": null,
513
+ "threadId": null
514
+ },
515
+ {
516
+ "role": "receiver-b1",
517
+ "participantId": "codex-X4zGy6",
518
+ "threadId": "01a08056-7b0d-7c31-a3a9-612b85c33921"
519
+ },
520
+ {
521
+ "role": "sender",
522
+ "participantId": "synthetic-sender",
523
+ "threadId": null
524
+ },
525
+ {
526
+ "role": "receiver-b2",
527
+ "participantId": "codex-pxWF_5",
528
+ "threadId": "01a08056-cffe-73f1-b585-afc4eb8f9180"
529
+ },
530
+ {
531
+ "role": "unrelated-c1",
532
+ "participantId": "codex-8KWzWF",
533
+ "threadId": "01a08057-2748-7382-ba86-bf36a8fd8681"
534
+ }
535
+ ],
536
+ "timestamps": {
537
+ "startedAt": "2026-09-08T09:32:14.975Z",
538
+ "idleSinceAt": null,
539
+ "preToolUseAt": null,
540
+ "queuedAt": null,
541
+ "stopAt": null,
542
+ "nextTurnAt": null,
543
+ "finishedAt": "2026-09-08T09:33:09.897Z"
544
+ },
545
+ "outcome": "passed",
546
+ "observations": [
547
+ {
548
+ "kind": "message",
549
+ "at": "2026-09-08T09:33:09.897Z",
550
+ "actor": "receiver-b1",
551
+ "target": null,
552
+ "outcome": "one"
553
+ },
554
+ {
555
+ "kind": "queue",
556
+ "at": "2026-09-08T09:33:09.897Z",
557
+ "actor": "receiver-b1",
558
+ "target": null,
559
+ "outcome": "one"
560
+ },
561
+ {
562
+ "kind": "answer",
563
+ "at": "2026-09-08T09:33:09.897Z",
564
+ "actor": "receiver-b1",
565
+ "target": null,
566
+ "outcome": "one"
567
+ }
568
+ ],
569
+ "observationCount": 3,
570
+ "assertionCount": 8,
571
+ "cleanup": {
572
+ "attempted": true,
573
+ "outcome": "passed",
574
+ "ownedProcesses": "stopped",
575
+ "temporaryState": "removed"
576
+ }
577
+ },
578
+ {
579
+ "schemaVersion": 1,
580
+ "source": "real-client-capture",
581
+ "client": "codex-cli",
582
+ "caseId": "P08",
583
+ "phase": "product",
584
+ "clientVersion": "0.152.1",
585
+ "platform": "darwin-arm64",
586
+ "packageSha256": "a6a38da5a36911baabfbef0ccf934847fcf7b51000197264c273d21430f7fea2",
587
+ "roles": [
588
+ {
589
+ "role": "daemon-a",
590
+ "participantId": null,
591
+ "threadId": null
592
+ },
593
+ {
594
+ "role": "receiver-b1",
595
+ "participantId": "codex-X4zGy6",
596
+ "threadId": "01a08056-7b0d-7c31-a3a9-612b85c33921"
597
+ },
598
+ {
599
+ "role": "sender",
600
+ "participantId": "synthetic-sender",
601
+ "threadId": null
602
+ },
603
+ {
604
+ "role": "receiver-b2",
605
+ "participantId": "codex-pxWF_5",
606
+ "threadId": "01a08056-cffe-73f1-b585-afc4eb8f9180"
607
+ },
608
+ {
609
+ "role": "unrelated-c1",
610
+ "participantId": "codex-8KWzWF",
611
+ "threadId": "01a08057-2748-7382-ba86-bf36a8fd8681"
612
+ }
613
+ ],
614
+ "timestamps": {
615
+ "startedAt": "2026-09-08T09:33:09.921Z",
616
+ "idleSinceAt": null,
617
+ "preToolUseAt": null,
618
+ "queuedAt": null,
619
+ "stopAt": null,
620
+ "nextTurnAt": null,
621
+ "finishedAt": "2026-09-08T09:34:14.065Z"
622
+ },
623
+ "outcome": "passed",
624
+ "observations": [
625
+ {
626
+ "kind": "policy",
627
+ "at": "2026-09-08T09:34:14.065Z",
628
+ "actor": "receiver-b1",
629
+ "target": null,
630
+ "outcome": "observed"
631
+ },
632
+ {
633
+ "kind": "receipt",
634
+ "at": "2026-09-08T09:34:14.065Z",
635
+ "actor": "receiver-b1",
636
+ "target": null,
637
+ "outcome": "queued"
638
+ },
639
+ {
640
+ "kind": "receipt",
641
+ "at": "2026-09-08T09:34:14.065Z",
642
+ "actor": "receiver-b1",
643
+ "target": null,
644
+ "outcome": "offered"
645
+ },
646
+ {
647
+ "kind": "daemon",
648
+ "at": "2026-09-08T09:34:14.065Z",
649
+ "actor": "daemon-a",
650
+ "target": null,
651
+ "outcome": "unchanged"
652
+ }
653
+ ],
654
+ "observationCount": 4,
655
+ "assertionCount": 7,
656
+ "cleanup": {
657
+ "attempted": true,
658
+ "outcome": "passed",
659
+ "ownedProcesses": "stopped",
660
+ "temporaryState": "removed"
661
+ }
662
+ },
663
+ {
664
+ "schemaVersion": 1,
665
+ "source": "real-client-capture",
666
+ "client": "codex-cli",
667
+ "caseId": "P15",
668
+ "phase": "product",
669
+ "clientVersion": "0.152.1",
670
+ "platform": "darwin-arm64",
671
+ "packageSha256": "a6a38da5a36911baabfbef0ccf934847fcf7b51000197264c273d21430f7fea2",
672
+ "roles": [
673
+ {
674
+ "role": "daemon-a",
675
+ "participantId": null,
676
+ "threadId": null
677
+ },
678
+ {
679
+ "role": "receiver-b1",
680
+ "participantId": "codex-X4zGy6",
681
+ "threadId": "01a08056-7b0d-7c31-a3a9-612b85c33921"
682
+ },
683
+ {
684
+ "role": "sender",
685
+ "participantId": "synthetic-sender",
686
+ "threadId": null
687
+ },
688
+ {
689
+ "role": "receiver-b2",
690
+ "participantId": "codex-pxWF_5",
691
+ "threadId": "01a08056-cffe-73f1-b585-afc4eb8f9180"
692
+ },
693
+ {
694
+ "role": "unrelated-c1",
695
+ "participantId": "codex-8KWzWF",
696
+ "threadId": "01a08057-2748-7382-ba86-bf36a8fd8681"
697
+ }
698
+ ],
699
+ "timestamps": {
700
+ "startedAt": "2026-09-08T09:34:14.207Z",
701
+ "idleSinceAt": null,
702
+ "preToolUseAt": null,
703
+ "queuedAt": null,
704
+ "stopAt": null,
705
+ "nextTurnAt": null,
706
+ "finishedAt": "2026-09-08T09:34:42.977Z"
707
+ },
708
+ "outcome": "passed",
709
+ "observations": [
710
+ {
711
+ "kind": "binding",
712
+ "at": "2026-09-08T09:34:42.856Z",
713
+ "actor": "sender",
714
+ "target": "receiver-b1",
715
+ "outcome": "matched"
716
+ }
717
+ ],
718
+ "observationCount": 1,
719
+ "assertionCount": 5,
720
+ "cleanup": {
721
+ "attempted": true,
722
+ "outcome": "passed",
723
+ "ownedProcesses": "stopped",
724
+ "temporaryState": "removed"
725
+ }
726
+ },
727
+ {
728
+ "schemaVersion": 1,
729
+ "source": "real-client-capture",
730
+ "client": "codex-cli",
731
+ "caseId": "P16",
732
+ "phase": "product",
733
+ "clientVersion": "0.152.1",
734
+ "platform": "darwin-arm64",
735
+ "packageSha256": "a6a38da5a36911baabfbef0ccf934847fcf7b51000197264c273d21430f7fea2",
736
+ "roles": [
737
+ {
738
+ "role": "daemon-a",
739
+ "participantId": null,
740
+ "threadId": null
741
+ },
742
+ {
743
+ "role": "receiver-b1",
744
+ "participantId": "codex-X4zGy6",
745
+ "threadId": "01a08056-7b0d-7c31-a3a9-612b85c33921"
746
+ },
747
+ {
748
+ "role": "sender",
749
+ "participantId": "synthetic-sender",
750
+ "threadId": null
751
+ },
752
+ {
753
+ "role": "receiver-b2",
754
+ "participantId": "codex-pxWF_5",
755
+ "threadId": "01a08056-cffe-73f1-b585-afc4eb8f9180"
756
+ },
757
+ {
758
+ "role": "unrelated-c1",
759
+ "participantId": "codex-8KWzWF",
760
+ "threadId": "01a08057-2748-7382-ba86-bf36a8fd8681"
761
+ }
762
+ ],
763
+ "timestamps": {
764
+ "startedAt": "2026-09-08T09:34:43.003Z",
765
+ "idleSinceAt": null,
766
+ "preToolUseAt": null,
767
+ "queuedAt": null,
768
+ "stopAt": null,
769
+ "nextTurnAt": null,
770
+ "finishedAt": "2026-09-08T09:34:44.425Z"
771
+ },
772
+ "outcome": "passed",
773
+ "observations": [
774
+ {
775
+ "kind": "diagnostic",
776
+ "at": "2026-09-08T09:34:44.425Z",
777
+ "actor": "receiver-b1",
778
+ "target": null,
779
+ "outcome": "sanitized"
780
+ },
781
+ {
782
+ "kind": "submission",
783
+ "at": "2026-09-08T09:34:44.425Z",
784
+ "actor": "receiver-b1",
785
+ "target": null,
786
+ "outcome": "rejected"
787
+ },
788
+ {
789
+ "kind": "receipt",
790
+ "at": "2026-09-08T09:34:44.425Z",
791
+ "actor": "receiver-b1",
792
+ "target": null,
793
+ "outcome": "queued"
794
+ }
795
+ ],
796
+ "observationCount": 3,
797
+ "assertionCount": 28,
798
+ "cleanup": {
799
+ "attempted": true,
800
+ "outcome": "passed",
801
+ "ownedProcesses": "stopped",
802
+ "temporaryState": "removed"
803
+ }
804
+ },
805
+ {
806
+ "schemaVersion": 1,
807
+ "source": "real-client-capture",
808
+ "client": "codex-cli",
809
+ "caseId": "P17",
810
+ "phase": "product",
811
+ "clientVersion": "0.152.1",
812
+ "platform": "darwin-arm64",
813
+ "packageSha256": "a6a38da5a36911baabfbef0ccf934847fcf7b51000197264c273d21430f7fea2",
814
+ "roles": [
815
+ {
816
+ "role": "daemon-a",
817
+ "participantId": null,
818
+ "threadId": null
819
+ },
820
+ {
821
+ "role": "receiver-b1",
822
+ "participantId": "codex-X4zGy6",
823
+ "threadId": "01a08056-7b0d-7c31-a3a9-612b85c33921"
824
+ },
825
+ {
826
+ "role": "sender",
827
+ "participantId": "synthetic-sender",
828
+ "threadId": null
829
+ },
830
+ {
831
+ "role": "receiver-b2",
832
+ "participantId": "codex-pxWF_5",
833
+ "threadId": "01a08056-cffe-73f1-b585-afc4eb8f9180"
834
+ },
835
+ {
836
+ "role": "unrelated-c1",
837
+ "participantId": "codex-8KWzWF",
838
+ "threadId": "01a08057-2748-7382-ba86-bf36a8fd8681"
839
+ }
840
+ ],
841
+ "timestamps": {
842
+ "startedAt": "2026-09-08T09:34:44.450Z",
843
+ "idleSinceAt": null,
844
+ "preToolUseAt": null,
845
+ "queuedAt": null,
846
+ "stopAt": null,
847
+ "nextTurnAt": null,
848
+ "finishedAt": "2026-09-08T09:35:00.519Z"
849
+ },
850
+ "outcome": "passed",
851
+ "observations": [
852
+ {
853
+ "kind": "message",
854
+ "at": "2026-09-08T09:35:00.519Z",
855
+ "actor": "receiver-b1",
856
+ "target": null,
857
+ "outcome": "one"
858
+ },
859
+ {
860
+ "kind": "receipt",
861
+ "at": "2026-09-08T09:35:00.519Z",
862
+ "actor": "receiver-b1",
863
+ "target": null,
864
+ "outcome": "retrieved"
865
+ }
866
+ ],
867
+ "observationCount": 2,
868
+ "assertionCount": 5,
869
+ "cleanup": {
870
+ "attempted": true,
871
+ "outcome": "passed",
872
+ "ownedProcesses": "stopped",
873
+ "temporaryState": "removed"
874
+ }
875
+ },
876
+ {
877
+ "schemaVersion": 1,
878
+ "source": "real-client-capture",
879
+ "client": "codex-cli",
880
+ "caseId": "P12",
881
+ "phase": "product",
882
+ "clientVersion": "0.152.1",
883
+ "platform": "darwin-arm64",
884
+ "packageSha256": "a6a38da5a36911baabfbef0ccf934847fcf7b51000197264c273d21430f7fea2",
885
+ "roles": [
886
+ {
887
+ "role": "daemon-a",
888
+ "participantId": null,
889
+ "threadId": null
890
+ },
891
+ {
892
+ "role": "receiver-b1",
893
+ "participantId": "codex-X4zGy6",
894
+ "threadId": "01a08056-7b0d-7c31-a3a9-612b85c33921"
895
+ },
896
+ {
897
+ "role": "sender",
898
+ "participantId": "synthetic-sender",
899
+ "threadId": null
900
+ },
901
+ {
902
+ "role": "receiver-b2",
903
+ "participantId": null,
904
+ "threadId": "01a0805e-f34e-7490-8992-f0b8d8ac6d34"
905
+ },
906
+ {
907
+ "role": "unrelated-c1",
908
+ "participantId": "codex-8KWzWF",
909
+ "threadId": "01a08057-2748-7382-ba86-bf36a8fd8681"
910
+ }
911
+ ],
912
+ "timestamps": {
913
+ "startedAt": "2026-09-08T09:35:24.665Z",
914
+ "idleSinceAt": null,
915
+ "preToolUseAt": null,
916
+ "queuedAt": null,
917
+ "stopAt": null,
918
+ "nextTurnAt": null,
919
+ "finishedAt": "2026-09-08T09:35:24.773Z"
920
+ },
921
+ "outcome": "passed",
922
+ "observations": [
923
+ {
924
+ "kind": "actual-cwd",
925
+ "at": "2026-09-08T09:35:24.773Z",
926
+ "actor": "daemon-a",
927
+ "target": "daemon-a",
928
+ "outcome": "matched"
929
+ },
930
+ {
931
+ "kind": "workspace",
932
+ "at": "2026-09-08T09:35:24.773Z",
933
+ "actor": "receiver-b2",
934
+ "target": "daemon-a",
935
+ "outcome": "matched"
936
+ }
937
+ ],
938
+ "observationCount": 2,
939
+ "assertionCount": 2,
940
+ "cleanup": {
941
+ "attempted": true,
942
+ "outcome": "passed",
943
+ "ownedProcesses": "stopped",
944
+ "temporaryState": "removed"
945
+ }
946
+ },
947
+ {
948
+ "schemaVersion": 1,
949
+ "source": "real-client-capture",
950
+ "client": "codex-cli",
951
+ "caseId": "P13",
952
+ "phase": "product",
953
+ "clientVersion": "0.152.1",
954
+ "platform": "darwin-arm64",
955
+ "packageSha256": "a6a38da5a36911baabfbef0ccf934847fcf7b51000197264c273d21430f7fea2",
956
+ "roles": [
957
+ {
958
+ "role": "daemon-a",
959
+ "participantId": null,
960
+ "threadId": null
961
+ },
962
+ {
963
+ "role": "receiver-b1",
964
+ "participantId": "codex-ueGraG",
965
+ "threadId": "01a0805f-521f-7911-b49b-b98afe297ad1"
966
+ },
967
+ {
968
+ "role": "sender",
969
+ "participantId": "synthetic-sender",
970
+ "threadId": null
971
+ },
972
+ {
973
+ "role": "receiver-b2",
974
+ "participantId": "codex-6K8FWu",
975
+ "threadId": "01a0805e-f34e-7490-8992-f0b8d8ac6d34"
976
+ },
977
+ {
978
+ "role": "unrelated-c1",
979
+ "participantId": "codex-8KWzWF",
980
+ "threadId": "01a08057-2748-7382-ba86-bf36a8fd8681"
981
+ }
982
+ ],
983
+ "timestamps": {
984
+ "startedAt": "2026-09-08T09:35:43.369Z",
985
+ "idleSinceAt": null,
986
+ "preToolUseAt": null,
987
+ "queuedAt": null,
988
+ "stopAt": null,
989
+ "nextTurnAt": null,
990
+ "finishedAt": "2026-09-08T09:36:35.206Z"
991
+ },
992
+ "outcome": "passed",
993
+ "observations": [
994
+ {
995
+ "kind": "launch-arguments",
996
+ "at": "2026-09-08T09:36:35.206Z",
997
+ "actor": "receiver-b1",
998
+ "target": null,
999
+ "outcome": "unchanged"
1000
+ },
1001
+ {
1002
+ "kind": "actual-cwd",
1003
+ "at": "2026-09-08T09:36:35.206Z",
1004
+ "actor": "receiver-b1",
1005
+ "target": "receiver-b1",
1006
+ "outcome": "matched"
1007
+ }
1008
+ ],
1009
+ "observationCount": 2,
1010
+ "assertionCount": 6,
1011
+ "cleanup": {
1012
+ "attempted": true,
1013
+ "outcome": "passed",
1014
+ "ownedProcesses": "stopped",
1015
+ "temporaryState": "removed"
1016
+ }
1017
+ },
1018
+ {
1019
+ "schemaVersion": 1,
1020
+ "source": "real-client-capture",
1021
+ "client": "codex-cli",
1022
+ "caseId": "P14",
1023
+ "phase": "product",
1024
+ "clientVersion": "0.152.1",
1025
+ "platform": "darwin-arm64",
1026
+ "packageSha256": "a6a38da5a36911baabfbef0ccf934847fcf7b51000197264c273d21430f7fea2",
1027
+ "roles": [
1028
+ {
1029
+ "role": "daemon-a",
1030
+ "participantId": null,
1031
+ "threadId": null
1032
+ },
1033
+ {
1034
+ "role": "receiver-b1",
1035
+ "participantId": "codex-GyVoz7",
1036
+ "threadId": "01a08060-6540-7ad3-baa1-479f153eb48e"
1037
+ },
1038
+ {
1039
+ "role": "sender",
1040
+ "participantId": "synthetic-sender",
1041
+ "threadId": null
1042
+ },
1043
+ {
1044
+ "role": "receiver-b2",
1045
+ "participantId": "codex-6K8FWu",
1046
+ "threadId": "01a0805e-f34e-7490-8992-f0b8d8ac6d34"
1047
+ },
1048
+ {
1049
+ "role": "unrelated-c1",
1050
+ "participantId": "codex-8KWzWF",
1051
+ "threadId": "01a08057-2748-7382-ba86-bf36a8fd8681"
1052
+ }
1053
+ ],
1054
+ "timestamps": {
1055
+ "startedAt": "2026-09-08T09:36:54.464Z",
1056
+ "idleSinceAt": null,
1057
+ "preToolUseAt": null,
1058
+ "queuedAt": null,
1059
+ "stopAt": null,
1060
+ "nextTurnAt": null,
1061
+ "finishedAt": "2026-09-08T09:38:03.625Z"
1062
+ },
1063
+ "outcome": "passed",
1064
+ "observations": [
1065
+ {
1066
+ "kind": "binding",
1067
+ "at": "2026-09-08T09:38:03.625Z",
1068
+ "actor": "receiver-b1",
1069
+ "target": null,
1070
+ "outcome": "retired"
1071
+ },
1072
+ {
1073
+ "kind": "binding",
1074
+ "at": "2026-09-08T09:38:03.625Z",
1075
+ "actor": "receiver-b1",
1076
+ "target": null,
1077
+ "outcome": "fresh"
1078
+ },
1079
+ {
1080
+ "kind": "actual-cwd",
1081
+ "at": "2026-09-08T09:38:03.625Z",
1082
+ "actor": "receiver-b1",
1083
+ "target": "receiver-b1",
1084
+ "outcome": "matched"
1085
+ }
1086
+ ],
1087
+ "observationCount": 3,
1088
+ "assertionCount": 16,
1089
+ "cleanup": {
1090
+ "attempted": true,
1091
+ "outcome": "passed",
1092
+ "ownedProcesses": "stopped",
1093
+ "temporaryState": "removed"
1094
+ }
1095
+ },
1096
+ {
1097
+ "schemaVersion": 1,
1098
+ "source": "real-client-capture",
1099
+ "client": "codex-cli",
1100
+ "caseId": "P18",
1101
+ "phase": "product",
1102
+ "clientVersion": "0.152.1",
1103
+ "platform": "darwin-arm64",
1104
+ "packageSha256": "a6a38da5a36911baabfbef0ccf934847fcf7b51000197264c273d21430f7fea2",
1105
+ "roles": [
1106
+ {
1107
+ "role": "daemon-a",
1108
+ "participantId": null,
1109
+ "threadId": null
1110
+ },
1111
+ {
1112
+ "role": "receiver-b1",
1113
+ "participantId": "codex-h2tZfW",
1114
+ "threadId": "01a08061-6c1b-7e00-b5ae-1d6396be3006"
1115
+ },
1116
+ {
1117
+ "role": "sender",
1118
+ "participantId": "synthetic-sender",
1119
+ "threadId": null
1120
+ },
1121
+ {
1122
+ "role": "receiver-b2",
1123
+ "participantId": "codex-6K8FWu",
1124
+ "threadId": "01a0805e-f34e-7490-8992-f0b8d8ac6d34"
1125
+ },
1126
+ {
1127
+ "role": "unrelated-c1",
1128
+ "participantId": "codex-8KWzWF",
1129
+ "threadId": "01a08057-2748-7382-ba86-bf36a8fd8681"
1130
+ }
1131
+ ],
1132
+ "timestamps": {
1133
+ "startedAt": "2026-09-08T09:38:03.626Z",
1134
+ "idleSinceAt": null,
1135
+ "preToolUseAt": null,
1136
+ "queuedAt": null,
1137
+ "stopAt": null,
1138
+ "nextTurnAt": null,
1139
+ "finishedAt": "2026-09-08T09:38:06.393Z"
1140
+ },
1141
+ "outcome": "passed",
1142
+ "observations": [
1143
+ {
1144
+ "kind": "artifact",
1145
+ "at": "2026-09-08T09:38:06.393Z",
1146
+ "actor": "daemon-a",
1147
+ "target": null,
1148
+ "outcome": "preserved"
1149
+ },
1150
+ {
1151
+ "kind": "artifact",
1152
+ "at": "2026-09-08T09:38:06.393Z",
1153
+ "actor": "receiver-b1",
1154
+ "target": null,
1155
+ "outcome": "removed"
1156
+ }
1157
+ ],
1158
+ "observationCount": 2,
1159
+ "assertionCount": 18,
1160
+ "cleanup": {
1161
+ "attempted": true,
1162
+ "outcome": "passed",
1163
+ "ownedProcesses": "stopped",
1164
+ "temporaryState": "removed"
1165
+ }
1166
+ },
1167
+ {
1168
+ "schemaVersion": 1,
1169
+ "source": "real-client-capture",
1170
+ "client": "codex-cli",
1171
+ "caseId": "P20",
1172
+ "phase": "product",
1173
+ "clientVersion": "0.152.1",
1174
+ "platform": "darwin-arm64",
1175
+ "packageSha256": "a6a38da5a36911baabfbef0ccf934847fcf7b51000197264c273d21430f7fea2",
1176
+ "roles": [
1177
+ {
1178
+ "role": "daemon-a",
1179
+ "participantId": null,
1180
+ "threadId": null
1181
+ },
1182
+ {
1183
+ "role": "receiver-b1",
1184
+ "participantId": "codex-qysPRs",
1185
+ "threadId": "01a08061-cd59-7892-bb71-7f34d756f08e"
1186
+ },
1187
+ {
1188
+ "role": "sender",
1189
+ "participantId": "synthetic-sender",
1190
+ "threadId": null
1191
+ }
1192
+ ],
1193
+ "timestamps": {
1194
+ "startedAt": "2026-09-08T09:38:26.552Z",
1195
+ "idleSinceAt": null,
1196
+ "preToolUseAt": null,
1197
+ "queuedAt": null,
1198
+ "stopAt": null,
1199
+ "nextTurnAt": null,
1200
+ "finishedAt": "2026-09-08T09:39:35.443Z"
1201
+ },
1202
+ "outcome": "passed",
1203
+ "observations": [
1204
+ {
1205
+ "kind": "path",
1206
+ "at": "2026-09-08T09:39:34.299Z",
1207
+ "actor": "receiver-b1",
1208
+ "target": null,
1209
+ "outcome": "observed"
1210
+ },
1211
+ {
1212
+ "kind": "instrumentation",
1213
+ "at": "2026-09-08T09:39:34.299Z",
1214
+ "actor": "receiver-b1",
1215
+ "target": null,
1216
+ "outcome": "absent"
1217
+ },
1218
+ {
1219
+ "kind": "binding",
1220
+ "at": "2026-09-08T09:39:34.299Z",
1221
+ "actor": "receiver-b1",
1222
+ "target": "receiver-b1",
1223
+ "outcome": "matched"
1224
+ },
1225
+ {
1226
+ "kind": "receipt",
1227
+ "at": "2026-09-08T09:39:34.299Z",
1228
+ "actor": "receiver-b1",
1229
+ "target": null,
1230
+ "outcome": "acknowledged"
1231
+ }
1232
+ ],
1233
+ "observationCount": 4,
1234
+ "assertionCount": 6,
1235
+ "cleanup": {
1236
+ "attempted": true,
1237
+ "outcome": "passed",
1238
+ "ownedProcesses": "stopped",
1239
+ "temporaryState": "removed"
1240
+ }
1241
+ },
1242
+ {
1243
+ "schemaVersion": 1,
1244
+ "source": "real-client-capture",
1245
+ "client": "codex-cli",
1246
+ "caseId": "P10",
1247
+ "phase": "product",
1248
+ "clientVersion": "0.152.1",
1249
+ "platform": "darwin-arm64",
1250
+ "packageSha256": "a6a38da5a36911baabfbef0ccf934847fcf7b51000197264c273d21430f7fea2",
1251
+ "roles": [
1252
+ {
1253
+ "role": "daemon-a",
1254
+ "participantId": null,
1255
+ "threadId": null
1256
+ },
1257
+ {
1258
+ "role": "receiver-b1",
1259
+ "participantId": "codex-6JnpXo",
1260
+ "threadId": "01a08063-2bcb-7e50-91f2-3fed38511aa3"
1261
+ },
1262
+ {
1263
+ "role": "sender",
1264
+ "participantId": "synthetic-sender",
1265
+ "threadId": null
1266
+ }
1267
+ ],
1268
+ "timestamps": {
1269
+ "startedAt": "2026-09-08T09:40:00.103Z",
1270
+ "idleSinceAt": null,
1271
+ "preToolUseAt": null,
1272
+ "queuedAt": null,
1273
+ "stopAt": null,
1274
+ "nextTurnAt": null,
1275
+ "finishedAt": "2026-09-08T09:40:01.918Z"
1276
+ },
1277
+ "outcome": "passed",
1278
+ "observations": [
1279
+ {
1280
+ "kind": "binding",
1281
+ "at": "2026-09-08T09:40:00.493Z",
1282
+ "actor": "receiver-b1",
1283
+ "target": null,
1284
+ "outcome": "absent"
1285
+ },
1286
+ {
1287
+ "kind": "receipt",
1288
+ "at": "2026-09-08T09:40:00.493Z",
1289
+ "actor": "receiver-b1",
1290
+ "target": null,
1291
+ "outcome": "queued"
1292
+ },
1293
+ {
1294
+ "kind": "receipt",
1295
+ "at": "2026-09-08T09:40:00.493Z",
1296
+ "actor": "receiver-b1",
1297
+ "target": null,
1298
+ "outcome": "retrieved"
1299
+ }
1300
+ ],
1301
+ "observationCount": 3,
1302
+ "assertionCount": 8,
1303
+ "cleanup": {
1304
+ "attempted": true,
1305
+ "outcome": "passed",
1306
+ "ownedProcesses": "stopped",
1307
+ "temporaryState": "removed"
1308
+ }
1309
+ },
1310
+ {
1311
+ "schemaVersion": 1,
1312
+ "source": "real-client-capture",
1313
+ "client": "codex-cli",
1314
+ "caseId": "P11",
1315
+ "phase": "product",
1316
+ "clientVersion": "0.152.1",
1317
+ "platform": "darwin-arm64",
1318
+ "packageSha256": "a6a38da5a36911baabfbef0ccf934847fcf7b51000197264c273d21430f7fea2",
1319
+ "roles": [
1320
+ {
1321
+ "role": "daemon-a",
1322
+ "participantId": null,
1323
+ "threadId": null
1324
+ },
1325
+ {
1326
+ "role": "receiver-b1",
1327
+ "participantId": "codex-NvdwBX",
1328
+ "threadId": "01a08063-9140-7c91-88d5-d0ada24ada9a"
1329
+ },
1330
+ {
1331
+ "role": "sender",
1332
+ "participantId": "synthetic-sender",
1333
+ "threadId": null
1334
+ }
1335
+ ],
1336
+ "timestamps": {
1337
+ "startedAt": "2026-09-08T09:40:38.806Z",
1338
+ "idleSinceAt": null,
1339
+ "preToolUseAt": null,
1340
+ "queuedAt": null,
1341
+ "stopAt": null,
1342
+ "nextTurnAt": null,
1343
+ "finishedAt": "2026-09-08T09:41:01.132Z"
1344
+ },
1345
+ "outcome": "passed",
1346
+ "observations": [
1347
+ {
1348
+ "kind": "daemon",
1349
+ "at": "2026-09-08T09:40:59.954Z",
1350
+ "actor": "daemon-a",
1351
+ "target": null,
1352
+ "outcome": "stopped"
1353
+ },
1354
+ {
1355
+ "kind": "consent",
1356
+ "at": "2026-09-08T09:40:59.954Z",
1357
+ "actor": "receiver-b1",
1358
+ "target": null,
1359
+ "outcome": "preserved"
1360
+ },
1361
+ {
1362
+ "kind": "receipt",
1363
+ "at": "2026-09-08T09:40:59.954Z",
1364
+ "actor": "receiver-b1",
1365
+ "target": null,
1366
+ "outcome": "queued"
1367
+ },
1368
+ {
1369
+ "kind": "binding",
1370
+ "at": "2026-09-08T09:40:59.954Z",
1371
+ "actor": "receiver-b1",
1372
+ "target": null,
1373
+ "outcome": "fresh"
1374
+ }
1375
+ ],
1376
+ "observationCount": 4,
1377
+ "assertionCount": 9,
1378
+ "cleanup": {
1379
+ "attempted": true,
1380
+ "outcome": "passed",
1381
+ "ownedProcesses": "stopped",
1382
+ "temporaryState": "removed"
1383
+ }
1384
+ },
1385
+ {
1386
+ "schemaVersion": 1,
1387
+ "source": "real-client-capture",
1388
+ "client": "codex-cli",
1389
+ "caseId": "P09",
1390
+ "phase": "product",
1391
+ "clientVersion": "0.152.1",
1392
+ "platform": "darwin-arm64",
1393
+ "packageSha256": "a6a38da5a36911baabfbef0ccf934847fcf7b51000197264c273d21430f7fea2",
1394
+ "roles": [
1395
+ {
1396
+ "role": "daemon-a",
1397
+ "participantId": null,
1398
+ "threadId": null
1399
+ },
1400
+ {
1401
+ "role": "receiver-b1",
1402
+ "participantId": "codex-h2tZfW",
1403
+ "threadId": "01a08061-6c1b-7e00-b5ae-1d6396be3006"
1404
+ },
1405
+ {
1406
+ "role": "sender",
1407
+ "participantId": "synthetic-sender",
1408
+ "threadId": null
1409
+ },
1410
+ {
1411
+ "role": "receiver-b2",
1412
+ "participantId": "codex-6K8FWu",
1413
+ "threadId": "01a0805e-f34e-7490-8992-f0b8d8ac6d34"
1414
+ },
1415
+ {
1416
+ "role": "unrelated-c1",
1417
+ "participantId": "codex-8KWzWF",
1418
+ "threadId": "01a08057-2748-7382-ba86-bf36a8fd8681"
1419
+ }
1420
+ ],
1421
+ "timestamps": {
1422
+ "startedAt": "2026-09-08T09:41:10.092Z",
1423
+ "idleSinceAt": null,
1424
+ "preToolUseAt": null,
1425
+ "queuedAt": null,
1426
+ "stopAt": null,
1427
+ "nextTurnAt": null,
1428
+ "finishedAt": "2026-09-08T09:41:51.931Z"
1429
+ },
1430
+ "outcome": "passed",
1431
+ "observations": [
1432
+ {
1433
+ "kind": "policy",
1434
+ "at": "2026-09-08T09:41:51.931Z",
1435
+ "actor": "receiver-b1",
1436
+ "target": null,
1437
+ "outcome": "disabled"
1438
+ },
1439
+ {
1440
+ "kind": "receipt",
1441
+ "at": "2026-09-08T09:41:51.931Z",
1442
+ "actor": "receiver-b1",
1443
+ "target": null,
1444
+ "outcome": "queued"
1445
+ },
1446
+ {
1447
+ "kind": "binding",
1448
+ "at": "2026-09-08T09:41:51.931Z",
1449
+ "actor": "receiver-b1",
1450
+ "target": null,
1451
+ "outcome": "retired"
1452
+ },
1453
+ {
1454
+ "kind": "daemon",
1455
+ "at": "2026-09-08T09:41:51.931Z",
1456
+ "actor": "daemon-a",
1457
+ "target": null,
1458
+ "outcome": "running"
1459
+ }
1460
+ ],
1461
+ "observationCount": 4,
1462
+ "assertionCount": 7,
1463
+ "cleanup": {
1464
+ "attempted": true,
1465
+ "outcome": "passed",
1466
+ "ownedProcesses": "stopped",
1467
+ "temporaryState": "removed"
1468
+ }
1469
+ },
1470
+ {
1471
+ "schemaVersion": 1,
1472
+ "source": "real-client-capture",
1473
+ "client": "codex-cli",
1474
+ "caseId": "P19",
1475
+ "phase": "product",
1476
+ "clientVersion": "0.152.1",
1477
+ "platform": "darwin-arm64",
1478
+ "packageSha256": "a6a38da5a36911baabfbef0ccf934847fcf7b51000197264c273d21430f7fea2",
1479
+ "roles": [
1480
+ {
1481
+ "role": "daemon-a",
1482
+ "participantId": null,
1483
+ "threadId": null
1484
+ },
1485
+ {
1486
+ "role": "receiver-b1",
1487
+ "participantId": "codex-h2tZfW",
1488
+ "threadId": "01a08061-6c1b-7e00-b5ae-1d6396be3006"
1489
+ },
1490
+ {
1491
+ "role": "sender",
1492
+ "participantId": "synthetic-sender",
1493
+ "threadId": null
1494
+ },
1495
+ {
1496
+ "role": "receiver-b2",
1497
+ "participantId": "codex-6K8FWu",
1498
+ "threadId": "01a0805e-f34e-7490-8992-f0b8d8ac6d34"
1499
+ },
1500
+ {
1501
+ "role": "unrelated-c1",
1502
+ "participantId": "codex-8KWzWF",
1503
+ "threadId": "01a08057-2748-7382-ba86-bf36a8fd8681"
1504
+ }
1505
+ ],
1506
+ "timestamps": {
1507
+ "startedAt": "2026-09-08T09:42:00.957Z",
1508
+ "idleSinceAt": null,
1509
+ "preToolUseAt": null,
1510
+ "queuedAt": null,
1511
+ "stopAt": null,
1512
+ "nextTurnAt": null,
1513
+ "finishedAt": "2026-09-08T09:42:01.412Z"
1514
+ },
1515
+ "outcome": "passed",
1516
+ "observations": [
1517
+ {
1518
+ "kind": "consent",
1519
+ "at": "2026-09-08T09:42:01.412Z",
1520
+ "actor": "receiver-b1",
1521
+ "target": null,
1522
+ "outcome": "removed"
1523
+ },
1524
+ {
1525
+ "kind": "receipt",
1526
+ "at": "2026-09-08T09:42:01.412Z",
1527
+ "actor": "receiver-b1",
1528
+ "target": null,
1529
+ "outcome": "queued"
1530
+ },
1531
+ {
1532
+ "kind": "daemon",
1533
+ "at": "2026-09-08T09:42:01.412Z",
1534
+ "actor": "daemon-a",
1535
+ "target": null,
1536
+ "outcome": "running"
1537
+ }
1538
+ ],
1539
+ "observationCount": 3,
1540
+ "assertionCount": 9,
1541
+ "cleanup": {
1542
+ "attempted": true,
1543
+ "outcome": "passed",
1544
+ "ownedProcesses": "stopped",
1545
+ "temporaryState": "removed"
1546
+ }
1547
+ }
1548
+ ]
1549
+ }