agents-can-communicate 0.3.1 → 0.4.1

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 (161) hide show
  1. package/README.md +95 -52
  2. package/SECURITY.md +1 -1
  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 +77 -0
  16. package/docs/ADAPTER_AUTHORING.md +52 -8
  17. package/docs/ARCHITECTURE.md +64 -11
  18. package/docs/CAPABILITIES.md +41 -37
  19. package/docs/CLI.md +145 -25
  20. package/docs/CONCEPTS.md +13 -6
  21. package/docs/CONFIGURATION.md +37 -22
  22. package/docs/DESIGN_DECISIONS.md +16 -11
  23. package/docs/GETTING_STARTED.md +41 -7
  24. package/docs/GLOSSARY.md +9 -3
  25. package/docs/HOW_IT_WORKS.md +32 -11
  26. package/docs/MCP.md +91 -24
  27. package/docs/PROTOCOL.md +69 -12
  28. package/docs/RELEASING.md +28 -10
  29. package/docs/SECURITY_MODEL.md +47 -13
  30. package/docs/TROUBLESHOOTING.md +102 -20
  31. package/docs/UPGRADING.md +154 -0
  32. package/docs/WHY_ACC.md +5 -4
  33. package/docs/index.md +8 -0
  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 +106 -5
  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 +106 -5
  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 +106 -5
  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 +122 -8
  68. package/node_modules/@agents-can-communicate/adapter-grok/src/adapter.mjs +5 -3
  69. package/node_modules/@agents-can-communicate/adapter-grok/src/hooks.mjs +9 -0
  70. package/node_modules/@agents-can-communicate/adapter-grok/src/install.mjs +2 -2
  71. package/node_modules/@agents-can-communicate/adapter-kimi/package.json +1 -1
  72. package/node_modules/@agents-can-communicate/adapter-kimi/plugin/skills/acc/SKILL.md +106 -5
  73. package/node_modules/@agents-can-communicate/adapter-kimi/src/hooks.mjs +1 -1
  74. package/node_modules/@agents-can-communicate/adapter-kimi/src/install.mjs +2 -2
  75. package/node_modules/@agents-can-communicate/adapter-sdk/package.json +1 -1
  76. package/node_modules/@agents-can-communicate/adapter-sdk/src/capabilities.mjs +5 -0
  77. package/node_modules/@agents-can-communicate/adapter-sdk/src/context-projector.mjs +26 -4
  78. package/node_modules/@agents-can-communicate/adapter-sdk/src/decision-text.mjs +19 -0
  79. package/node_modules/@agents-can-communicate/adapter-sdk/src/hook-shim.mjs +5 -3
  80. package/node_modules/@agents-can-communicate/adapter-sdk/src/index.mjs +1 -0
  81. package/node_modules/@agents-can-communicate/adapter-sdk/src/native-delivery.mjs +9 -2
  82. package/node_modules/@agents-can-communicate/adapter-sdk/src/native-vocabulary.mjs +2 -6
  83. package/node_modules/@agents-can-communicate/adapter-sdk/src/session-binding.mjs +29 -9
  84. package/node_modules/@agents-can-communicate/adapter-sdk/src/toml-block.mjs +8 -6
  85. package/node_modules/@agents-can-communicate/cli/package.json +4 -2
  86. package/node_modules/@agents-can-communicate/cli/src/args.mjs +49 -22
  87. package/node_modules/@agents-can-communicate/cli/src/doctor-command.mjs +11 -4
  88. package/node_modules/@agents-can-communicate/cli/src/git-probe.mjs +9 -3
  89. package/node_modules/@agents-can-communicate/cli/src/help.mjs +109 -14
  90. package/node_modules/@agents-can-communicate/cli/src/install-command.mjs +24 -5
  91. package/node_modules/@agents-can-communicate/cli/src/main.mjs +35 -12
  92. package/node_modules/@agents-can-communicate/cli/src/managed-runtime/activation.mjs +110 -0
  93. package/node_modules/@agents-can-communicate/cli/src/managed-runtime/command.mjs +64 -0
  94. package/node_modules/@agents-can-communicate/cli/src/managed-runtime/download.mjs +71 -0
  95. package/node_modules/@agents-can-communicate/cli/src/managed-runtime/entry.mjs +110 -0
  96. package/node_modules/@agents-can-communicate/cli/src/managed-runtime/generation.mjs +167 -0
  97. package/node_modules/@agents-can-communicate/cli/src/managed-runtime/install.mjs +78 -0
  98. package/node_modules/@agents-can-communicate/cli/src/managed-runtime/launchers.mjs +60 -0
  99. package/node_modules/@agents-can-communicate/cli/src/managed-runtime/leases.mjs +60 -0
  100. package/node_modules/@agents-can-communicate/cli/src/managed-runtime/location.mjs +55 -0
  101. package/node_modules/@agents-can-communicate/cli/src/managed-runtime/mutex.mjs +145 -0
  102. package/node_modules/@agents-can-communicate/cli/src/managed-runtime/policy.mjs +4 -0
  103. package/node_modules/@agents-can-communicate/cli/src/managed-runtime/refresh.mjs +40 -0
  104. package/node_modules/@agents-can-communicate/cli/src/managed-runtime/schedule.mjs +21 -0
  105. package/node_modules/@agents-can-communicate/cli/src/managed-runtime/state.mjs +123 -0
  106. package/node_modules/@agents-can-communicate/cli/src/managed-runtime/worker.mjs +65 -0
  107. package/node_modules/@agents-can-communicate/cli/src/runtime-paths.mjs +1 -1
  108. package/node_modules/@agents-can-communicate/cli/src/session-owner.mjs +33 -108
  109. package/node_modules/@agents-can-communicate/cli/src/update-command.mjs +25 -7
  110. package/node_modules/@agents-can-communicate/core/package.json +1 -1
  111. package/node_modules/@agents-can-communicate/core/src/attention.mjs +3 -0
  112. package/node_modules/@agents-can-communicate/core/src/claims.mjs +13 -8
  113. package/node_modules/@agents-can-communicate/core/src/conversations.mjs +9 -25
  114. package/node_modules/@agents-can-communicate/core/src/decision-changes.mjs +36 -0
  115. package/node_modules/@agents-can-communicate/core/src/decision-state.mjs +42 -0
  116. package/node_modules/@agents-can-communicate/core/src/delivery-bindings.mjs +11 -4
  117. package/node_modules/@agents-can-communicate/core/src/inbox.mjs +48 -17
  118. package/node_modules/@agents-can-communicate/core/src/intents.mjs +35 -15
  119. package/node_modules/@agents-can-communicate/core/src/materialisation.mjs +7 -5
  120. package/node_modules/@agents-can-communicate/core/src/message-pages.mjs +75 -0
  121. package/node_modules/@agents-can-communicate/core/src/next-turn-delivery.mjs +31 -0
  122. package/node_modules/@agents-can-communicate/core/src/session-opening.mjs +128 -0
  123. package/node_modules/@agents-can-communicate/core/src/sessions.mjs +58 -132
  124. package/node_modules/@agents-can-communicate/core/src/sync.mjs +31 -2
  125. package/node_modules/@agents-can-communicate/delivery-router/package.json +1 -1
  126. package/node_modules/@agents-can-communicate/delivery-router/src/refresh-binding.mjs +38 -0
  127. package/node_modules/@agents-can-communicate/delivery-router/src/router.mjs +86 -10
  128. package/node_modules/@agents-can-communicate/hook-runner/package.json +1 -1
  129. package/node_modules/@agents-can-communicate/hook-runner/src/client-version.mjs +1 -0
  130. package/node_modules/@agents-can-communicate/hook-runner/src/native-binding.mjs +6 -4
  131. package/node_modules/@agents-can-communicate/hook-runner/src/native-retirement.mjs +48 -0
  132. package/node_modules/@agents-can-communicate/hook-runner/src/owner-context.mjs +30 -0
  133. package/node_modules/@agents-can-communicate/hook-runner/src/process-table.mjs +1 -1
  134. package/node_modules/@agents-can-communicate/hook-runner/src/runner.mjs +172 -67
  135. package/node_modules/@agents-can-communicate/hook-runner/src/session-lifecycle.mjs +13 -0
  136. package/node_modules/@agents-can-communicate/installer/package.json +1 -1
  137. package/node_modules/@agents-can-communicate/installer/src/apply.mjs +17 -2
  138. package/node_modules/@agents-can-communicate/installer/src/bootstrap-runtime.mjs +11 -5
  139. package/node_modules/@agents-can-communicate/installer/src/detect.mjs +1 -1
  140. package/node_modules/@agents-can-communicate/installer/src/index.mjs +1 -0
  141. package/node_modules/@agents-can-communicate/installer/src/live-policy.mjs +21 -0
  142. package/node_modules/@agents-can-communicate/installer/src/native-activation.mjs +20 -6
  143. package/node_modules/@agents-can-communicate/installer/src/ownership.mjs +10 -4
  144. package/node_modules/@agents-can-communicate/installer/src/plan.mjs +3 -3
  145. package/node_modules/@agents-can-communicate/mcp-server/package.json +1 -1
  146. package/node_modules/@agents-can-communicate/mcp-server/src/protocol.mjs +85 -0
  147. package/node_modules/@agents-can-communicate/mcp-server/src/resources.mjs +3 -2
  148. package/node_modules/@agents-can-communicate/mcp-server/src/server.mjs +59 -57
  149. package/node_modules/@agents-can-communicate/mcp-server/src/tools.mjs +47 -33
  150. package/node_modules/@agents-can-communicate/protocol/package.json +1 -1
  151. package/node_modules/@agents-can-communicate/protocol/src/conversations.mjs +3 -0
  152. package/node_modules/@agents-can-communicate/protocol/src/decision-changes.mjs +15 -0
  153. package/node_modules/@agents-can-communicate/protocol/src/index.mjs +3 -1
  154. package/node_modules/@agents-can-communicate/protocol/src/schema.mjs +14 -5
  155. package/node_modules/@agents-can-communicate/storage-filesystem/package.json +1 -1
  156. package/node_modules/@agents-can-communicate/storage-filesystem/src/atomic-json.mjs +5 -1
  157. package/node_modules/@agents-can-communicate/storage-filesystem/src/deadline.mjs +7 -0
  158. package/node_modules/@agents-can-communicate/storage-filesystem/src/index.mjs +2 -0
  159. package/node_modules/@agents-can-communicate/storage-filesystem/src/session-read.mjs +25 -0
  160. package/node_modules/@agents-can-communicate/storage-filesystem/src/store.mjs +28 -25
  161. package/package.json +2 -1
package/docs/PROTOCOL.md CHANGED
@@ -74,11 +74,57 @@ inside the message so an uncertain caller can retry explicitly.
74
74
 
75
75
  An empty `toParticipantIds` creates a room record. At commit time, core resolves every
76
76
  known peer participant with an open session and creates a receipt for each. Participants
77
- that arrive later can inspect room history through a full sync but do not receive
77
+ that arrive later can inspect room records through history sync but do not receive
78
78
  retroactive receipts. Those already-present recipients get the normal inbox and certified
79
79
  next-turn path; a successful next-turn write advances their room receipt to `offered`.
80
80
  Room records are never eligible for native live push.
81
81
 
82
+ ## Decision lifecycle
83
+
84
+ A decision may additionally carry `decisionChange` with exactly two fields:
85
+ `action` (`replace` or `withdraw`) and `messageIds` (1..16 unique portable IDs of
86
+ existing decisions in the same workspace). Generic send inputs use `supersedes`
87
+ or `withdraws`; the durable payload is built after transactional validation.
88
+ The sorted target set participates in idempotency. The author may be any owned
89
+ participant; attribution does not confer system authority.
90
+
91
+ Targets and their receipts are immutable. Changes inherit target receipt recipients
92
+ and target authors, excluding the changing author from inherited recipients. Extra
93
+ explicit recipients are merged, sorted, and persisted in `toParticipantIds` before
94
+ recording. This also notifies offline readers and makes live routing use the same set.
95
+ No old receipt is acknowledged, deleted, or advanced by a lifecycle change.
96
+
97
+ Explicit links form a graph. Within a connected group, terminal records are heads;
98
+ multiple heads mean a conflict, even if their prose looks similar. A change may target
99
+ an already replaced decision, creating a competing branch. Resolve branches by
100
+ explicitly linking a new change to all their current heads. A withdrawal is itself
101
+ a terminal record; superseding it explicitly records a new decision.
102
+
103
+ Decision summaries and exact read copies expose `decisionStatus`:
104
+
105
+ | Field | Meaning |
106
+ |---|---|
107
+ | `state` | `current` for a terminal choice; `withdrawn` for a terminal cancellation or history with only cancelled heads; otherwise `superseded` |
108
+ | `isHead` | no recorded successor links to this record |
109
+ | `conflicted` / `headCount` | whether the group has multiple terminal positions and their count |
110
+ | `currentMessageId` | sole current head, or null if there is no unique head |
111
+ | `groupId` | derived representative root ID for finding related heads; may change when groups are joined |
112
+
113
+ This metadata is never persisted. `history` + kind `decision` + `current: true`
114
+ lists heads, including withdrawals and conflicts, using the same summary budget.
115
+ Ordinary inbox, bulk reads, automatic delivery and attention omit non-head decisions;
116
+ exact inbox/history retain them. Timestamps and acknowledgements never choose a winner.
117
+ A decision without an explicit successor may still be factually stale.
118
+
119
+ Next-turn context and each native offer use a lifecycle snapshot; text already shown
120
+ or in flight cannot be recalled. Changes get their own delivery receipts. Native
121
+ transport carries the change/status inside its existing untrusted text envelope.
122
+
123
+ The optional field preserves reading of existing schema-3 records by this build.
124
+ Older ACC builds cannot interpret these semantics and may reject new records with
125
+ unknown fields. Upgrade participating ACC installations together; this is not a
126
+ forward-compatible promise or an automatic state migration.
127
+
82
128
  ## Kinds and obligations
83
129
 
84
130
  | Kind | Valid obligation | Addressing |
@@ -155,13 +201,19 @@ leaves the receipt queued.
155
201
 
156
202
  ## Inbox, reply, and acknowledgement
157
203
 
158
- `inbox` returns unresolved messages owned by the calling participant and advances only
159
- that participant's receipt to `retrieved`. An exact message id is the recovery path after
160
- compaction or an over-budget projection.
204
+ Without an id, public `inbox` lists bounded summary pages for unresolved messages owned
205
+ by the calling participant, without changing receipts. An exact read returns the complete
206
+ message and advances only that participant's receipt to `retrieved`. It is the narrow
207
+ recovery and inspection path, including after compaction or acknowledgement. Reading an
208
+ acknowledged message preserves its receipt, timestamp, and event history; it does not put
209
+ the message back into the unresolved inbox. Ownership and current-generation checks still
210
+ apply to every read.
161
211
 
162
212
  `reply` verifies that ownership, records an `answer` in the original thread, and advances
163
213
  the original receipt to `acknowledged` in one transaction. Only after that durable commit
164
214
  may the answer be offered to the original author. A transport error cannot roll back it.
215
+ CLI and MCP reply results expose both facts: `message` and `delivery` describe the outgoing
216
+ answer, while `receipt` describes the caller's acknowledgement of the original message.
165
217
 
166
218
  `ack` advances the caller's receipt without creating a reply. It exposes no state override;
167
219
  callers cannot claim that a transport offered or a participant retrieved a message.
@@ -188,17 +240,22 @@ The recipient owns `livePolicy` because native push may start a model turn:
188
240
  - `actionable`: questions, requests, answers, decisions, and addressed handoffs may use live push;
189
241
  - `all`: every addressed kind may use live push.
190
242
 
191
- Default is `off`. Policy never creates a capability. The router still requires a current
192
- reachable binding, one unambiguous recipient generation, supported client evidence, and
193
- adapter acceptance. Claude Code live delivery on macOS arm64 uses a captured 2.1.258
194
- minimum plus a current feature probe and per-session protocol handshake; it was confirmed
195
- again on 2.1.260. Codex's queue transport was captured but withdrawn because its required
196
- mode hides the session workspace. Every unavailable or refused route falls back durably.
243
+ Default is `off`. Policy never creates a capability. The router requires one
244
+ current eligible recipient generation, supported client evidence, a verified
245
+ binding and adapter acceptance. Claude Code Channel uses a captured 2.1.258
246
+ minimum, confirmed on 2.1.260. Codex LocalDaemon uses a 0.152.1 minimum, confirmed
247
+ through installed-product captures on 0.152.1 and 0.153.4; recorded consent and
248
+ exact thread, cwd, process, version and protocol verification govern every session.
249
+ Unavailable or refused routes fall back durably. Codex replies use the ACC CLI;
250
+ its native reply route remains false.
197
251
 
198
252
  ## Attention and sync
199
253
 
200
- Bounded sync returns events after a cursor plus explicit attention. Full sync is a
201
- forensic workspace snapshot, not the normal way to recover one message. Attention is
254
+ Default sync returns a bounded event page after a 16-digit cursor plus explicit attention.
255
+ History sync returns read-only message summaries (20 items by default, at most 12,000
256
+ formatted JSON bytes) and complete-message-id cursors, or one exact full message. Neither
257
+ history mode changes receipts. Full sync adds an unbounded forensic workspace snapshot.
258
+ Message discovery and exact-read contracts are in [CLI](CLI.md) and [MCP](MCP.md). Attention is
202
259
  limited to six explicit rules: `reply_required`, `acknowledgement_required`,
203
260
  `recipient_unavailable`, `claim_conflict`, `claim_contended`, and `claim_expired`.
204
261
 
package/docs/RELEASING.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Releasing
2
2
 
3
3
  Use this procedure to build one auditable npm artifact, verify that exact tarball, and keep
4
- its evidence tied to the commit that supplied its bytes. The package is currently `0.3.1`;
4
+ its evidence tied to the commit that supplied its bytes. The package is currently `0.4.1`;
5
5
  the commands derive the version from `package.json` so the filename cannot drift.
6
6
 
7
7
  ```mermaid
@@ -18,8 +18,9 @@ graph LR
18
18
 
19
19
  ## Prepare candidate commit A
20
20
 
21
- Commit A must contain every file npm will pack and every release gate. Start from a clean,
22
- dedicated release worktree, update the version and candidate files, then run:
21
+ Commit A must contain every file npm will pack and every release gate. Use a clean,
22
+ dedicated release worktree; an existing clean isolated worktree is fine. Update the version
23
+ and candidate files, then run:
23
24
 
24
25
  ```bash
25
26
  release_cache="$(mktemp -d "${TMPDIR:-/tmp}/acc-npm-cache.XXXXXX")"
@@ -62,7 +63,23 @@ env npm_config_cache="$release_cache" node scripts/verify-package.mjs "$tarball"
62
63
  symlinks, then exercises doctor, a non-Git workspace, client install/uninstall, bundled
63
64
  workspaces, certification evidence, and packed documentation links. It rejects tests,
64
65
  development probes, sockets, transcript-shaped data, runtime state, and unreferenced
65
- fixtures.
66
+ fixtures. Keep `ACC_NO_UPDATE_CHECK=1` set for release checks so installing an integration
67
+ cannot schedule a real registry update. The managed-update acceptance tests explicitly
68
+ enable networking only against their isolated local registry and npm cache.
69
+
70
+ The managed-update checks exercise actual installed archives: automatic enrollment and
71
+ activation, a persistent MCP process holding the old version, integrity rejection, recovery
72
+ from a failed integration refresh, and stable launchers after the initial package is gone.
73
+ Run them before recording the candidate:
74
+
75
+ ```bash
76
+ env npm_config_cache="$release_cache" node --test tests/acceptance/managed-*-packed.test.mjs
77
+ ```
78
+
79
+ Repeat the published-version upgrade preflight with this exact tarball and isolated home,
80
+ data, and project directories. Retain the source/archive/installed file comparison with the
81
+ preflight evidence. Local-registry checks and direct process checks do not establish native
82
+ client activation; capture that separately on supported real clients.
66
83
 
67
84
  When passed an existing tarball, the verifier intentionally prints `revision unknown`:
68
85
  the current checkout cannot prove which commit produced arbitrary supplied bytes. Record
@@ -100,12 +117,13 @@ work belongs under `Unreleased` and gets a new candidate record.
100
117
 
101
118
  ## Capture only capabilities you observed
102
119
 
103
- Run native real-client checks only on the versions and platforms where retained fixtures
104
- prove that boundary. Exact-version evidence governs normal-turn and guard behavior. Claude
105
- Code live delivery instead uses its captured macOS arm64 minimum plus a current feature
106
- probe and per-session handshake, and its vendor development-channel warning remains part
107
- of startup. Codex's queue capture passed but live delivery was withdrawn because the
108
- required mode hides session workspace identity.
120
+ Run native real-client checks on the exact versions and platforms recorded in
121
+ retained fixtures. Exact-version evidence governs normal-turn and guard behavior.
122
+ Claude Code Channel uses its captured macOS arm64 minimum plus a current probe and
123
+ per-session handshake; its vendor warning remains part of startup. Codex LocalDaemon
124
+ uses a separate 0.152.1 minimum with installed-product captures on 0.152.1 and
125
+ 0.153.4. Its passing capture must ship the hashed complete product matrix and
126
+ historical evidence references. Direct queue success alone cannot certify that route.
109
127
 
110
128
  Record failed and unavailable paths as such, then exercise the packed next-turn or inbox
111
129
  fallback. An unsupported platform is an explicit skip, never a passing capture. See
@@ -42,7 +42,11 @@ own instruction hierarchy are the mitigation; ACC is not a model sandbox.
42
42
  ## Identity and ownership
43
43
 
44
44
  - Participant identity is the address; session identity is one current client opening.
45
- - Mutating calls prove their owner with the session generation.
45
+ - Mutating CLI calls and inbox reads require an explicitly supplied session/generation
46
+ pair. The CLI never obtains a generation from a public ID, checkout, sole peer binding,
47
+ or inherited native environment value.
48
+ - `ACC_SESSION`/`ACC_GENERATION` are operator-supplied credentials. They do not authenticate
49
+ a process or protect against intentional sharing under the same local OS account.
46
50
  - A stale process cannot renew or release records owned by a newer generation.
47
51
  - Inbox, reply, and acknowledgement validate the recipient's participant id.
48
52
  - One participant cannot advance another participant's receipt.
@@ -66,18 +70,20 @@ There is no model-attention claim and no public state override. Failed accelerat
66
70
  the message queued and records only a closed safe error code. Diagnostics and offer events
67
71
  never copy the peer body.
68
72
 
69
- A live adapter must match its declared evidence contract, one unexpired generation-bound
70
- binding, and the recipient's opt-in policy. Opaque endpoint references remain inside the
71
- adapter and outside repositories. Claude Code live delivery is currently supported on
72
- macOS arm64 from the captured 2.1.258 minimum when a current feature probe and per-session
73
- handshake pass; it remains experimental and off by default. Codex's queue capture passed,
74
- but the capability was withdrawn because the required mode hides session workspace
75
- identity.
73
+ A live adapter must match its declared evidence contract, one current
74
+ generation-bound binding and recipient opt-in. Opaque endpoints remain private
75
+ and outside repositories. Claude Code Channel and Codex LocalDaemon delivery are
76
+ experimental and off by default. Codex verifies the exact receiver thread,
77
+ canonical cwd, live process, stable version and protocol, and rereads recorded
78
+ consent before offers. A loaded daemon thread can receive messages after its TUI
79
+ exits. Delivery off and uninstall prevent new Codex submissions; a submission
80
+ already accepted by the vendor queue cannot be withdrawn.
76
81
 
77
82
  ## Claims
78
83
 
79
- Claims are advisory unless every live participant exposes a certified guard for the
80
- relevant mutation path. Even guarded claims do not stop unrelated processes, runtime-built
84
+ CLI claims default to advisory. Guarded enforcement must be requested explicitly and
85
+ requires every live participant to expose a certified guard for the relevant mutation path.
86
+ MCP claims remain advisory. Even guarded claims do not stop unrelated processes, runtime-built
81
87
  paths, or tool calls the client never presents to the hook. Force release requires explicit
82
88
  authority and records actor and reason.
83
89
 
@@ -93,14 +99,42 @@ from operating merely because its own state is unavailable.
93
99
  - Corrupt or incompatible store versions fail closed before mutation.
94
100
  - Client installers preserve unrelated settings and record content hashes.
95
101
  - Uninstall removes only bytes still matching what ACC wrote.
96
- - Tokens, credentials, and environment contents are never copied into ACC or project config.
102
+ - Runtime credentials and private endpoints stay outside project config. Adapters do not
103
+ automatically collect client secrets or environment contents into peer messages.
104
+
105
+ ## Managed automatic updates
106
+
107
+ An initial managed installation enables automatic updates; later installs preserve an
108
+ explicit opt-out. Full uninstall pauses updates while retaining the setting for a later
109
+ reinstall. The latency-sensitive hook path
110
+ does no network download; it may schedule a detached worker. That worker uses the configured
111
+ npm registry/network and local npm executable, checks stable package identity/version and
112
+ sha512 integrity against registry metadata, installs with lifecycle scripts disabled, and
113
+ validates the staged runtime before activation. These checks retain the registry and package
114
+ author as a software-supply trust boundary; they do not establish that package code is safe.
115
+
116
+ ACC process leases hold activation until confirmed exit. Native bindings hold until observed
117
+ SessionEnd cleanup or confirmed process death; unknown PIDs remain conservative holds.
118
+ `acc finish`, presence TTL, and delivery off do not establish native lifecycle end. ACC does
119
+ not manage the vendor daemon.
120
+
121
+ A failed download leaves the active runtime available. A partial integration refresh retains
122
+ the old active pointer but fences normal workspace admission in `activating`; it does not
123
+ leave the previous runtime available for normal work. Fix the reported problem and run
124
+ `acc update` to repair forward. Hooks continue to fail open while coordination is unavailable.
125
+
126
+ `acc update --auto off` disables background updates; `--pin <version>` holds an exact stable
127
+ version. `ACC_NO_UPDATE_CHECK=1` disables update networking and scheduling while allowing
128
+ manual recovery of an already verified pending update. See [Upgrading](UPGRADING.md).
97
129
 
98
130
  ## Data collected
99
131
 
100
132
  ACC stores participant/session identity, presence, one-line intent, explicit claims,
101
133
  explicit messages and structured handoffs, per-recipient receipts, artifact references,
102
- and coordination events. It excludes complete prompts, assistant responses, raw
103
- transcripts, secrets, environment variables, and unrelated files.
134
+ and coordination events. ACC does not automatically collect raw transcripts, full prompts
135
+ or assistant responses, secrets, environment contents, or unrelated files. Explicit message
136
+ bodies are caller-provided and preserved: ACC does not scan or scrub secrets from text a
137
+ caller chooses to send. The sender remains responsible for that content.
104
138
 
105
139
  ## Threat scenarios
106
140
 
@@ -24,6 +24,45 @@ requires plugin trust.
24
24
  ACC does not launch a missing session. Open it normally after fixing the installation or
25
25
  workspace path.
26
26
 
27
+ ## A hook says `workspace contains ACC runtime state`
28
+
29
+ The current directory contains ACC's own state, so ACC cannot use it as a workspace.
30
+ This commonly happens when a client starts in your home directory (`~`). The client
31
+ continues normally, but ACC provides no coordination context there.
32
+
33
+ Open a project directory and restart the client from it. A project inside your home
34
+ works normally; Git is optional. If you intentionally need the broader directory as
35
+ a workspace, configure `ACC_DATA_HOME` outside it for all participating clients.
36
+ This changes the state location; it does not migrate existing history or integrations.
37
+
38
+ For a generic `coordination unavailable` warning, run `acc status --json` from the
39
+ same directory to see the detailed workspace error, and `acc doctor` to check the
40
+ installation. Hook warnings deliberately omit arbitrary paths and error details.
41
+
42
+ ## CLI says `caller_identity_unresolved`
43
+
44
+ ACC cannot prove which session owns this shell command. A hook-created presence record
45
+ and the client's native session ID are not shell credentials. Restarting hooks alone does
46
+ not fix this CLI limitation.
47
+
48
+ In Grok, run public `acc status --json` through the terminal tool first. With the
49
+ updated integration, the ACC hook reminder arrives after that result and supplies
50
+ the session's own CLI arguments. Restart Grok after refreshing its integration;
51
+ a header returned with `finish` belongs to the session that just closed.
52
+
53
+ Use this session's ACC MCP tools if available. For a manual CLI workflow, open your own
54
+ session with `acc attach --participant my-session --json`, retain the returned `sessionId`
55
+ and `generation`, and pass both as `--session` and `--generation` on subsequent mutations
56
+ and inbox reads. This creates separate manual presence; finish it with the same pair.
57
+ An operator may explicitly configure `ACC_SESSION` and `ACC_GENERATION` instead.
58
+ Neither a new manual session nor a generic MCP connection inherits the hook participant's
59
+ inbox. Pending messages must be handled through the identity they address; if that
60
+ identity is unavailable, report the limitation.
61
+
62
+ Do not copy another session from `status`, read its binding, or guess a generation. Public
63
+ `status` and `sync` still work. If ownership is unavailable, report the coordination
64
+ limitation and continue the user's actual work.
65
+
27
66
  ## A message stays queued
28
67
 
29
68
  Queued means the durable message is safe; it does not mean the recipient model saw it. The
@@ -39,28 +78,45 @@ idle session. Grok, generic MCP, unknown client versions, and other platforms po
39
78
  reply acknowledges the original automatically; `acc ack` is for acknowledgement-only
40
79
  messages.
41
80
 
81
+ A background inbox command is not evidence that the model will resume. If a reviewer
82
+ ends its turn or exits before the request arrives, the review is still incomplete. For
83
+ an agreed review in the current session, keep the turn active through bounded foreground
84
+ waits and inbox checks; if the wait must end, report the pending review and leave a partial
85
+ handoff. ACC does not restart an exited client.
86
+
42
87
  ## I enabled live delivery but got fallback
43
88
 
44
- `--delivery actionable|all` is recipient policy, not a capability switch. Only Claude Code
45
- 2.1.258 and newer on macOS arm64 can take the live path; everything else is next-turn or
46
- inbox by design. When Claude does fall back, it is almost always one of these:
89
+ `--delivery actionable|all` records recipient intent; delivery also needs a
90
+ supported platform, current probe and exact session binding. Under `actionable`,
91
+ a `note` stays queued with `delivery_disabled`.
47
92
 
48
- - **An old terminal.** The launcher is put on `PATH` by a line in `.zshrc`, which only new
49
- interactive shells read. `which claude` must point into `…/acc/bin`.
50
- - **A failure from the last quarter hour.** Claude caches a failed channel connection in
51
- `~/.claude/mcp-needs-auth-cache.json` and skips reconnecting for about fifteen minutes.
52
- Remove the `acc` entry there and start the session again.
53
- - **A note.** Under `actionable`, only messages that need acting on are pushed; a `note`
54
- reports `delivery_disabled` on purpose.
55
- - **Codex.** Its live capability was withdrawn, and `acc doctor` says why.
93
+ For Codex, use your ordinary launch command with 0.152.1 or newer on Apple Silicon
94
+ macOS. Its LocalDaemon must already be running, and trusted hooks must establish
95
+ the receiver's exact thread and workspace. Embedded sessions, an absent socket,
96
+ ambiguous recipients or failed identity checks retain durable inbox access.
97
+ `acc doctor` reports current eligibility. ACC preserves requested consent through
98
+ a temporary daemon outage and does not start the daemon for you.
56
99
 
57
- The installer therefore keeps effective policy off and reports exact-certified next-turn
58
- or inbox fallback. This is expected, not a partially working live route.
100
+ For Claude Code, open a fresh interactive zsh after installation so its launcher
101
+ is on PATH, and accept its visible development-channel warning. A failed channel
102
+ connection may remain in Claude's `~/.claude/mcp-needs-auth-cache.json` for about
103
+ fifteen minutes; remove only the `acc` entry and restart if that is the cause.
104
+
105
+ Closing a Codex terminal can leave its daemon thread loaded and eligible. Use
106
+ `acc install --adapter codex --delivery off` to stop new ACC native offers.
107
+ Already accepted queue entries remain with the vendor. Actual thread archive
108
+ requires Codex's confirmation and produces `SessionEnd`.
59
109
 
60
110
  ## Codex plugin is listed but inactive
61
111
 
62
- Trust the plugin in Codex, then restart it. Until the client accepts that trust step, hooks
63
- do not run. `acc doctor` reports the installed cache copy and missing activation separately.
112
+ Open `/plugins` in Codex and check ACC is enabled. Open `/hooks`, review each ACC hook,
113
+ and enable/trust its current definition if needed; then restart the session. New or changed
114
+ definitions need review, and a trusted hook can still be disabled.
115
+
116
+ `acc doctor` reports installed files separately from hook readiness, which it leaves
117
+ unverified. A saved trust record cannot prove current activation. If installation preserved
118
+ your own sandbox configuration, doctor also names the ACC state directory whose access
119
+ you should check in `sandbox_workspace_write.writable_roots`.
64
120
 
65
121
  ## Gemini does not guard a write
66
122
 
@@ -76,8 +132,12 @@ or start the session somewhere trusted.
76
132
 
77
133
  ## Grok shows no injected message
78
134
 
79
- Grok 1.0.13 discarded UserPromptSubmit context in the real capture. Its next-turn and guard
80
- capabilities remain false. Use `acc status` and `acc inbox`; do not wait for a banner.
135
+ Grok discards UserPromptSubmit context. On the observed 1.0.24 client, run public
136
+ `acc status --json` in its terminal first: the ACC hook reminder after the result
137
+ supplies your own `--session` and `--generation` pair for subsequent inbox reads and
138
+ mutations. Restart Grok after refreshing its installed hooks and skill. Its next-turn,
139
+ live delivery, and guard capabilities remain false; peer messages require explicit inbox
140
+ reads. If the header never arrives, report missing ownership rather than adopting a peer.
81
141
 
82
142
  ## Kimi sessions remain in history
83
143
 
@@ -92,8 +152,8 @@ Exit code `5` names the overlapping claim and owner. Ask the owner or wait for r
92
152
  an explicit authority has decided to replace it:
93
153
 
94
154
  ```bash
95
- acc release --claim claim_x --authority "agreed with models" \
96
- --reason "handing over the file"
155
+ acc release --claim claim_x --authority human \
156
+ --reason "human approved the handover after agreement with the models"
97
157
  ```
98
158
 
99
159
  ## Protection says advisory
@@ -114,7 +174,29 @@ ACC removes only bytes that still match its install record. Anything edited by t
114
174
  reported and retained. Remove those leftovers manually if desired.
115
175
 
116
176
  Runtime state is outside the repository by design. `ACC_DATA_HOME` can relocate it, but ACC
117
- refuses a path inside any workspace root.
177
+ refuses a path inside any workspace root. Relocate the whole data directory; a symlink for
178
+ that directory is supported. Install rejects a symlink that moves only the internal
179
+ `acc/runtime` tree, because runtime admission and the bootstrap cache need the same data home.
118
180
 
119
181
  Next: [Getting started](GETTING_STARTED.md) · [Capabilities](CAPABILITIES.md) ·
120
182
  [Configuration](CONFIGURATION.md)
183
+
184
+ ## An automatic update is pending
185
+
186
+ Run `acc doctor` to see the update policy and pending notice. ACC process leases, including
187
+ persistent MCP servers, require confirmed process exit. Native bindings clear on observed
188
+ SessionEnd or confirmed process death; a vendor daemon may remain alive after SessionEnd.
189
+ Unknown PIDs remain holds until lifecycle cleanup. Close the relevant client sessions and
190
+ ACC processes; `finish`, presence TTL, and delivery off do not prove native end. ACC never
191
+ manages the daemon or expires safety holds merely by elapsed time.
192
+
193
+ Use `acc update` to retry a failed download or finish an interrupted integration refresh.
194
+ A download failure keeps the working version. A partial integration refresh blocks
195
+ workspace commands until recovery completes, while hooks let the client continue without
196
+ ACC context. `acc update` names the failed adapter, cause, and known configuration paths;
197
+ fix that problem and rerun it. Help and update recovery remain available. `ACC_NO_UPDATE_CHECK=1` prevents
198
+ new downloads but permits manual activation of an already verified pending update.
199
+
200
+ To stop automatic downloads, use `acc update --auto off`. To stay on the current release,
201
+ use `acc update --pin <version>`. Neither setting converts workspace data for an older
202
+ runtime. See the [upgrade guide](UPGRADING.md).
@@ -0,0 +1,154 @@
1
+ # Upgrading to 0.4.1
2
+
3
+ ## From 0.4.0
4
+
5
+ This patch keeps the existing workspace data format. It fixes Grok CLI ownership,
6
+ relocated Grok profiles, automatic-update preferences after reinstall, and the warning
7
+ when a client starts in a directory containing ACC's own state.
8
+
9
+ Close the participating clients and persistent ACC MCP processes, then run:
10
+
11
+ ```bash
12
+ acc update
13
+ acc version
14
+ acc doctor
15
+ ```
16
+
17
+ After publication, `acc version` should report 0.4.1. A managed update refreshes the
18
+ installed integrations and skills. Restart the clients and complete any hook/trust
19
+ review they request. Existing managed installations activate the selected runtime
20
+ through `acc update`; use the npm install steps below for pre-0.4 or unmanaged
21
+ installations. When pinned to 0.4.0, select 0.4.1 or clear the pin first.
22
+
23
+ In Grok, the refreshed skill runs public status through the terminal before its first
24
+ owned command. The hook reminder after that result supplies the session's own CLI
25
+ arguments. Grok still reads peer messages explicitly through inbox; this patch does not
26
+ add external wake or certify guards. Start clients in a project directory, rather than
27
+ in a home directory containing ACC state.
28
+
29
+ ## From 0.3.1
30
+
31
+ Upgrade all ACC installations participating in a workspace together, then restart their
32
+ agent clients. The new runtime reads existing 0.3.1 messages, receipts, decisions, intent,
33
+ and claims. Installing it does not migrate or clear that history.
34
+
35
+ Mixed running versions are unsupported. Once a new session records an explicit decision
36
+ replacement or withdrawal, the published 0.3.1 reader rejects its `decisionChange` field.
37
+ Its doctor can label the valid new record as corrupt. Upgrading the remaining reader
38
+ restores access; deleting or editing the record is not a remedy.
39
+
40
+ ## Update the runtime and client integrations
41
+
42
+ 1. Finish or pause ongoing work and close the participating clients, including persistent
43
+ ACC MCP processes. A running process can retain the old code after npm replaces its files.
44
+ If rollback matters, take a copy of the complete ACC data directory and client settings
45
+ while those processes are stopped. Keep the copy outside the repository; see
46
+ [runtime locations](CONFIGURATION.md#override-local-paths-and-identity).
47
+ 2. Install the released package, then refresh the client integrations:
48
+
49
+ ```bash
50
+ npm install --global agents-can-communicate@0.4.1
51
+ acc version
52
+ acc install
53
+ ```
54
+
55
+ Before publication, use the exact candidate `.tgz` supplied for testing instead of the
56
+ registry version. `acc version` must report the intended version. If it does not, fix
57
+ which `acc` your shell resolves before running the installer.
58
+ 3. Run `acc doctor` from each project you use. Check the runtime and installed bundle
59
+ diagnostics, and follow any activation instructions from `acc install`. In Codex,
60
+ check `/plugins`, review and enable/trust the current ACC definitions in `/hooks`, then
61
+ restart the session. Doctor cannot establish that the client has activated its hooks.
62
+ In the observed stock Codex 0.153.4 upgrade from 0.3.1 to 0.4, command quoting changed
63
+ all five ACC hook definitions and required a fresh review of the modified hooks. After
64
+ that review, a subsequent restart retained all five active. This is activation evidence
65
+ for that transition, not a promise of trust across arbitrary future upgrades.
66
+ 4. Resume the intended conversations and confirm peer presence with `acc status`. An
67
+ unrelated new conversation normally has a new participant id; it does not inherit the
68
+ previous conversation's addressed inbox. Historical decisions and handoffs remain
69
+ available through [history reads](CLI.md#historical-recovery).
70
+
71
+ `npm install` alone updates the package but does not refresh the skills and plugin copies
72
+ inside clients. `acc install` preserves user settings and the recorded delivery policy;
73
+ it does not turn experimental delivery on for a previously opted-out client. Effective
74
+ delivery still depends on the current client's capabilities.
75
+
76
+ ## Automatic updates after installation
77
+
78
+ An initial `acc install` turns automatic updates on. Later installs preserve an explicit
79
+ `acc update --auto off` choice. Full uninstall pauses updates and preserves the setting
80
+ for the next install. ACC checks for stable releases in
81
+ an independent background process, normally at most once a day, downloads and verifies a
82
+ separate runtime copy, and refreshes the installed integrations and skills before switching.
83
+ The global npm package provides a launcher; the active runtime lives under ACC's data home.
84
+
85
+ Running ACC processes, including idle MCP servers, hold the current version until
86
+ confirmed process exit. Native bindings hold until observed client SessionEnd cleanup or
87
+ confirmed process death; the vendor daemon can remain running after that lifecycle event.
88
+ Unknown PIDs remain conservative holds until lifecycle cleanup. `acc finish`, presence TTL,
89
+ and delivery off alone do not prove native end. Close the relevant client sessions and
90
+ persistent ACC processes to release holds; ACC does not manage the vendor daemon.
91
+ Hooks never wait for a network download. If integration refresh temporarily prevents
92
+ coordination, a hook lets the client continue; its next genuine user turn can restore a
93
+ missing binding.
94
+
95
+ ```bash
96
+ acc update # download and apply, or report what is keeping it pending
97
+ acc update --check # check without installing or changing update settings
98
+ acc update --auto off # disable background updates
99
+ acc update --auto on # enable them again
100
+ acc update --pin 0.4.1 # stay on this exact stable version
101
+ acc update --pin none # follow stable releases again
102
+ ```
103
+
104
+ ACC 0.4.0 lost the previous update setting during a full uninstall. If you already ran
105
+ that version's `uninstall` and want updates enabled after reinstalling, run
106
+ `acc update --auto on` once. A later installer cannot distinguish that old uninstall
107
+ state from an explicit opt-out, so it keeps the recorded `off` value until you change it.
108
+
109
+ `--apply` remains an alias for the plain update command. Pins cannot downgrade an active
110
+ runtime. `ACC_NO_UPDATE_CHECK=1` disables update networking and background scheduling;
111
+ manual recovery of an already downloaded update still works. Downloading needs npm, but
112
+ does not require permission to replace a global installation and never runs package
113
+ lifecycle scripts. `acc doctor` reports the automatic-update policy and pending notice.
114
+
115
+ A failed download or verification keeps the active runtime. An interrupted integration
116
+ refresh keeps workspace admission closed until `acc update` finishes the refresh. It does
117
+ not roll workspace history back. A failed refresh exits with code `4` and reports the adapter
118
+ and configuration problem to fix before retrying; a verified update waiting for live clients
119
+ remains pending. Previous runtime and plugin cache versions are
120
+ retained so existing launch paths survive the change.
121
+
122
+ Client trust is still controlled by the client. Follow any reported activation or hook
123
+ review steps; copied files do not prove the client has activated them. The initial
124
+ published-0.3.1 transition above still requires a coordinated restart: old direct binaries
125
+ and existing embedded core consumers cannot be enrolled retroactively.
126
+
127
+ ## Update scripts and MCP consumers
128
+
129
+ Default CLI/MCP inbox reads and `acc://inbox` now return `{items, nextCursor}` summary
130
+ pages. They omit bodies and do not mark messages retrieved. Code that expected a full
131
+ array must list a page, select a message id, then make an exact inbox read to retrieve its
132
+ body. Follow `nextCursor` until it is `null` when inspecting the whole pending inbox.
133
+ Exact inbox reads retain the one-item full-message array and receipt transitions.
134
+ See [CLI inbox](CLI.md#inbox-reply-and-acknowledgement) and [MCP](MCP.md).
135
+
136
+ New decision links remove superseded records from ordinary inbox and automatic attention,
137
+ while retaining their bodies and original receipts in history. A terminal withdrawal
138
+ remains visible. These changes do not acknowledge old obligations on the recipient's
139
+ behalf. Use `acc sync --scope history --type decision --current` to discover the current
140
+ explicit choices, withdrawals, and conflicts.
141
+
142
+ ## Recovery and rollback
143
+
144
+ An old reader reporting `message.decisionChange is not a known field`, or old doctor
145
+ reporting an unreadable record immediately after a decision change, needs the new runtime.
146
+ Run the new `acc version`, refresh integrations, restart clients, and use the new
147
+ `acc doctor`. If that doctor still reports a fault, inspect its named paths as a separate
148
+ problem. Do not erase history or use an old repair command to resolve version mismatch.
149
+
150
+ There is no downgrade conversion for new decision records. Reinstalling 0.3.1, including
151
+ using `acc install --downgrade`, does not make them readable by old clients. A rollback
152
+ that restores a pre-upgrade data copy necessarily omits subsequent coordination records;
153
+ retain the newer copy separately. Prefer completing the upgrade so all history remains
154
+ available.
package/docs/WHY_ACC.md CHANGED
@@ -35,7 +35,7 @@ retain their own authority and context.
35
35
  | Mix clients and worktrees | Worktrees of one repository map to one local workspace while each session keeps its checkout identity. Git is optional. |
36
36
  | Ask without granting authority | Messages are attributed untrusted data. A request expects a reply but is not an order. |
37
37
  | Recover after compaction or restart | Messages and receipts commit before delivery; participant addressing survives when the participant id is stable. |
38
- | Avoid overlapping edits | Intent warns; narrow claims may advise or guard, depending on every live client's measured capability. |
38
+ | Avoid overlapping edits | Intent warns; CLI claims default to advisory. Explicit guarded enforcement also requires every live client's measured guard. |
39
39
  | Trust delivery language | Recorded, queued, offered, retrieved, and acknowledged are separate observable facts. |
40
40
  | Keep it private and removable | State is local and outside repositories; transcripts are excluded; uninstall preserves user edits. |
41
41
 
@@ -52,9 +52,10 @@ coordinate across machines.
52
52
 
53
53
  ACC also does not merge model memory, read raw conversations, guarantee agent choices,
54
54
  approve tools, operate CI,
55
- or make guarded claims immune to unrelated local processes. Live push exists for one client
56
- and never interrupts a turn in progress - a message that arrives mid-turn waits for the turn
57
- to finish - so workflows that require interrupting a running model should not depend on ACC.
55
+ or make guarded claims immune to unrelated local processes. Experimental live delivery is
56
+ available through Claude Code Channel and Codex LocalDaemon on supported versions and
57
+ platforms, behind recipient opt-in and with possible token spend. Neither interrupts a
58
+ turn in progress; messages wait for it to finish. See [Capabilities](CAPABILITIES.md).
58
59
 
59
60
  If the sessions should remain yours and simply stop working in isolation, that is the
60
61
  product ACC is designed to be.
package/docs/index.md CHANGED
@@ -13,6 +13,8 @@ decides what its task requires.
13
13
  3. [Capabilities](CAPABILITIES.md) — check what your client and platform can actually do.
14
14
  4. [Troubleshooting](TROUBLESHOOTING.md) — diagnose missing peers, queued messages, and
15
15
  capability fallback.
16
+ 5. [Upgrading ACC](UPGRADING.md) — update from 0.4.0, preserve history, refresh integrations,
17
+ and account for the data-format and inbox-response changes from 0.3.1.
16
18
 
17
19
  ## See it in context
18
20
 
@@ -48,5 +50,11 @@ decides what its task requires.
48
50
  - [Design decisions](DESIGN_DECISIONS.md) — architectural decisions and reversals.
49
51
  - [Releasing](RELEASING.md) — packed-artifact verification.
50
52
 
53
+ Dated planning/reference material under
54
+ [`docs/internal/`](https://github.com/automatis-tools/agents-can-communicate/tree/main/docs/internal)
55
+ and [`docs/superpowers/`](https://github.com/automatis-tools/agents-can-communicate/tree/main/docs/superpowers)
56
+ is not current product documentation. Published release-evidence records retain their
57
+ original source/artifact/capture provenance rather than certifying a later build.
58
+
51
59
  Runtime state and raw transcripts are not documentation artifacts and never belong in the
52
60
  repository.