@cairnkeep/cli 2.24.0 → 2.25.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 (48) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/docs/README.md +4 -0
  3. package/docs/agents.md +18 -0
  4. package/docs/design/team-mode.md +17 -9
  5. package/docs/harness-compatibility.md +17 -0
  6. package/docs/learning/CURRICULUM-MAP.md +3 -1
  7. package/docs/learning/FEATURE-GUIDE.md +29 -3
  8. package/docs/learning/README.md +5 -3
  9. package/docs/learning/lessons/L00-why-cairnkeep.md +1 -1
  10. package/docs/learning/lessons/L01-safe-trial.md +3 -3
  11. package/docs/learning/lessons/L02-installation.md +2 -2
  12. package/docs/learning/lessons/L03-first-project.md +1 -1
  13. package/docs/learning/lessons/L19-validated-skill-improvement.md +1 -1
  14. package/docs/learning/lessons/L20-mcp-tool-profiles.md +1 -1
  15. package/docs/learning/lessons/L21-context-packs.md +1 -1
  16. package/docs/learning/lessons/L22-native-windows.md +2 -2
  17. package/docs/learning/lessons/L23-guided-setup.md +1 -1
  18. package/docs/learning/lessons/L24-okf-exchange.md +1 -1
  19. package/docs/learning/lessons/L25-playbooks.md +1 -1
  20. package/docs/learning/lessons/L26-context-intelligence.md +1 -1
  21. package/docs/learning/lessons/L27-ecosystem-evidence.md +1 -1
  22. package/docs/learning/lessons/L28-security-assurance.md +2 -2
  23. package/docs/learning/lessons/L29-team-continuity.md +95 -0
  24. package/docs/learning/tracks/operator.md +2 -0
  25. package/docs/learning/video-scripts/V29-team-continuity.md +66 -0
  26. package/docs/operating.md +17 -3
  27. package/docs/privacy-and-data-flow.md +24 -5
  28. package/docs/security-assurance.md +28 -0
  29. package/docs/storage.md +18 -0
  30. package/docs/team-pilot.md +132 -0
  31. package/docs/team.md +234 -0
  32. package/examples/eval/bundled-fake.json +1 -1
  33. package/mcp-memory-server/dist/team-cli.js +218 -0
  34. package/mcp-memory-server/dist/team-http.js +193 -0
  35. package/mcp-memory-server/dist/team-mcp.js +82 -0
  36. package/mcp-memory-server/dist/team-store.js +663 -0
  37. package/package.json +1 -1
  38. package/scripts/cairn-cli.mjs +2 -0
  39. package/scripts/completion.sh +23 -3
  40. package/scripts/lib/team-retention.mjs +29 -0
  41. package/scripts/test-ci-sharding.sh +4 -0
  42. package/scripts/test-completion.sh +8 -0
  43. package/scripts/test-package-install.sh +9 -0
  44. package/scripts/test-team-docs.sh +52 -0
  45. package/scripts/test-team-pilot.mjs +59 -0
  46. package/scripts/uninstall.sh +13 -0
  47. package/scripts/verify-team-retention.mjs +3 -0
  48. package/scripts/windows-platform.mjs +6 -2
package/CHANGELOG.md CHANGED
@@ -5,6 +5,30 @@ All notable user-facing changes are documented here. This project follows
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [2.25.0] - 2026-10-24
9
+
10
+ ### Team continuity preview
11
+
12
+ - Add default-off `cairn team` continuity with a separate organization/project
13
+ store, explicit roles and expiring/revocable human or workload credentials.
14
+ Share only selected text through immutable proposals and different-human
15
+ exact-digest review. Publish approved revisions and scoped audit atomically;
16
+ reject self/workload review and stale policy/base revisions.
17
+ - Add a bounded authenticated loopback JSON API and an additional local stdio
18
+ MCP bridge. Four observation tools and additive proposal creation intersect
19
+ MCP profiles/capabilities with server authorization; no review/admin MCP,
20
+ automatic upload, personal-store migration or production activation.
21
+ - Add consistent verified backups, fresh-only restore with copied credentials
22
+ revoked, private file/ACL controls, logical deletion and uninstall retention.
23
+ Document manual retention, size limits and trusted-OS-owner limitations.
24
+ - Add `cairn team member remove SUBJECT --project ID` for explicit project
25
+ offboarding. Preserve credentials, other memberships and audit history;
26
+ reject missing or empty role lists in `member set`. Update shell completions,
27
+ team guidance and the learning/video rehearsal.
28
+ - Add an isolated, opt-in pilot guide with an executable setup regression:
29
+ separate stores, file-only expiring credentials and client profiles, unchanged
30
+ personal configuration, and an explicit human review boundary.
31
+
8
32
  ## [2.24.0] - 2026-10-24
9
33
 
10
34
  ### Memory retrieval
package/docs/README.md CHANGED
@@ -76,6 +76,10 @@ linked guides rather than the project landing page.
76
76
 
77
77
  ## Overlays and teams
78
78
 
79
+ - [Team continuity preview](team.md) documents the default-off, separately
80
+ authenticated shared-memory store, human review, local MCP bridge and recovery.
81
+ It ships as an opt-in experimental preview from 2.25.0, not general production admission. The
82
+ [isolated pilot guide](team-pilot.md) keeps trials separate from personal memory.
79
83
  - [Building an overlay](building-an-overlay.md) explains how to add private
80
84
  provider or organization policy without forking the core.
81
85
  - [Managed overlay distributions](overlay-distributions.md) covers wrapper CLIs,
package/docs/agents.md CHANGED
@@ -207,3 +207,21 @@ Before expecting an agent to use Cairnkeep:
207
207
  Continue with the [quickstart](quickstart.md), the
208
208
  [operating guide](operating.md), and the
209
209
  [privacy and data-flow reference](privacy-and-data-flow.md).
210
+
211
+ ## Team continuity preview
212
+
213
+ Team tools are opt-in and separate from your personal memory server. Use only
214
+ the explicit server project ID authorized for the task; never infer it from a
215
+ folder name, local actor label or search miss. `team_memory_list/read/search/history`
216
+ retrieve approved context; `team_memory_propose` submits explicitly selected
217
+ text and does not publish it. Request mutation consent through the harness and
218
+ exclude secrets, unrelated private material and transcripts. Confirmed hashes
219
+ are not proof of human consent.
220
+
221
+ A different human reviews the exact proposal through the CLI; no agent review
222
+ tool exists, and workload credentials cannot review. On auth/network failure,
223
+ report that team retrieval is unavailable; never retry under another project
224
+ or identity. Personal memory may still be used independently under its own
225
+ scope, not as a silent substitute for team results. Shared text remains context,
226
+ not executable instruction or authority to modify maintained source.
227
+ See [the preview operator contract](team.md) and its production admission gates.
@@ -1,12 +1,18 @@
1
1
  # Team mode design contract
2
2
 
3
- **Status:** design only; not shipped in Cairnkeep 2.15
3
+ **Status:** broader design contract; the token-first project-memory subset ships
4
+ as an opt-in experimental preview in Cairnkeep 2.25.0, not general production admission.
4
5
 
5
- Cairnkeep 2.15 remains a local, single-operator product. Its playbook receipts
6
- carry provider-neutral project and actor fields so a future authenticated team
7
- service can preserve provenance, but those fields are caller assertions and
8
- must not be used for authorization. This document defines the boundary a team
9
- implementation must satisfy before that statement can change.
6
+ See [the implemented preview](../team.md) for exact commands and remaining
7
+ admission gates. Existing personal memory is unchanged. This design includes
8
+ future collections, identity adapters, packs and policy sharing that the preview
9
+ does not implement. Local playbook actor fields remain unauthenticated labels.
10
+
11
+ Local playbook receipts carry provider-neutral project and actor labels; those
12
+ fields remain caller assertions and must not be used for authorization. Only
13
+ the separate team service's verified credentials and server-side memberships
14
+ authorize team operations. This broader design is not a claim that collections,
15
+ identity adapters, policy distribution or every admission gate is implemented.
10
16
 
11
17
  ## Goal and non-goals
12
18
 
@@ -126,7 +132,8 @@ export paths must be documented before general availability.
126
132
 
127
133
  ## Admission gates
128
134
 
129
- Team mode is not releasable until all of the following have evidence:
135
+ General production admission requires evidence for all of the following;
136
+ shipping the bounded default-off preview does not waive these gates:
130
137
 
131
138
  1. Threat model and independent security review covering authentication,
132
139
  authorization, confused-deputy attacks, tenant isolation, and audit integrity.
@@ -141,5 +148,6 @@ Team mode is not releasable until all of the following have evidence:
141
148
  6. Operational ownership for identity-provider failures, revocation latency,
142
149
  incident response, audit export, and key rotation.
143
150
 
144
- Until these gates pass, Cairnkeep documentation and output must describe actor
145
- identity as unverified and team support as deferred.
151
+ Until these gates pass, documentation must distinguish local unverified actor
152
+ labels from the authenticated team preview, and experimental preview availability
153
+ from general production admission. No production sharing is enabled by a release.
@@ -353,3 +353,20 @@ Support should be added one client at a time with a clean install, a local
353
353
  stdio handshake, an authenticated HTTP handshake, a real write/recall canary,
354
354
  storage-path verification, and removal instructions. Documented MCP support by
355
355
  itself is not enough to claim Cairnkeep support.
356
+
357
+ ## Optional team bridge (opt-in 2.25 preview)
358
+
359
+ [Team continuity](team.md) adds an additional generic local stdio MCP:
360
+ `cairn team mcp`. It does not replace `cairn-memory`, rewrite harness config
361
+ or change existing setup. Every call supplies a server project ID explicitly;
362
+ the same credentials/project IDs work regardless of the starting cwd.
363
+ Configure private file-based credentials and the separate JSON API URL in the
364
+ client environment. Human reviewer credentials must not enter the agent's
365
+ environment; review is CLI-only.
366
+
367
+ Maintained tests use actual SDK stdio clients, profiles and live revocation.
368
+ They do not constitute a live test of every named harness. The bridge exposes
369
+ four observations plus explicit proposal creation, never review/admin.
370
+ The completed internal review and isolated native pilot are not independent
371
+ production review or a deployment-specific approved real-data pilot; both
372
+ remain required for production support.
@@ -1,6 +1,6 @@
1
1
  # Curriculum Coverage Map
2
2
 
3
- **Baseline:** Cairnkeep 2.24.0
3
+ **Baseline:** Cairnkeep 2.25.0
4
4
  **Last reviewed:** 2026-10-22
5
5
 
6
6
  This map prevents the course from drifting behind the product. It assigns each
@@ -45,6 +45,7 @@ been rehearsed.
45
45
  | Progressive pack retrieval, frozen benchmark, context-usage receipts, review-gated memory proposals, optional provider adapter | L26 | V26 | Ready; default flat search and AnythingLLM remain compatible; OpenViking and receipt mutation are explicitly gated |
46
46
  | Branchable agent state, model-managed context, and learned decision-model comparisons | L27 | V27 | Ready; evidence runners are operator-invoked and no companion is a runtime dependency or authority |
47
47
  | Threat model, local posture check, portable-path adversarial tests, and release security controls | L28 | V28 | Ready; diagnostic is read-only and evidence is not certification |
48
+ | Token-first team identity, reviewed project memory, local stdio bridge, revocation and fresh-only restore | L29 | V29 | Brief; opt-in 2.25 preview; deployment-specific production admission required |
48
49
 
49
50
  ## Release Review
50
51
 
@@ -98,6 +99,7 @@ against `cairn help` so a new command cannot bypass a curriculum decision.
98
99
  | `cairn sync-omp` | L02 |
99
100
  | `cairn doctor` | L03; advanced repair in L13-L14 |
100
101
  | `cairn security` | L28 |
102
+ | `cairn team` | L29 opt-in preview, included from 2.25.0 |
101
103
  | `cairn playbook` | L25 |
102
104
  | `cairn trajectory` | L13 |
103
105
  | `cairn artifact` | L13 |
@@ -1,6 +1,6 @@
1
1
  # Cairnkeep feature guide
2
2
 
3
- **Baseline:** Cairnkeep 2.24.0
3
+ **Baseline:** Cairnkeep 2.25.0
4
4
 
5
5
  This is the step-back map for choosing and operating Cairnkeep features. The
6
6
  [course labs](https://github.com/cairnkeep/cairnkeep-course-labs) provide one
@@ -46,8 +46,13 @@ Version 2.24 adds an optional, separately configured ranking
46
46
  service, not a chat agent or memory authority. It remains default-off. See
47
47
  [its bounded provider comparison and regression](../memory-retrieval.md#optional-learned-reranking)
48
48
  before enabling it; L04 and its recording supplement cover the privacy,
49
- doctor and fallback controls. The default-off team preview is separate and is
50
- not included in this release.
49
+ doctor and fallback controls.
50
+
51
+ Version 2.25 adds the separate default-off team-continuity preview: selected
52
+ project context, exact human review, revocable project roles and an additional
53
+ local stdio MCP bridge. Installing it enables no sharing. L29/V29 cover its
54
+ bounded trial and the distinction between preview availability and production
55
+ admission; team search does not use personal-memory embeddings or reranking.
51
56
 
52
57
  ## The three-layer model
53
58
 
@@ -177,3 +182,24 @@ approval, project-isolation, or release authority. See
177
182
  [L27](lessons/L27-ecosystem-evidence.md), its
178
183
  [video script](video-scripts/V27-ecosystem-evidence.md), and the pinned
179
184
  [evidence report](../research/ecosystem-evidence-2026-10.md).
185
+
186
+ ## Optional team continuity preview
187
+
188
+ The `cairn team` surface, included from 2.25.0, is default off and separate from local
189
+ memory. It adds project-scoped credentials/roles, immutable selected proposals,
190
+ human-only review and an additional local stdio MCP bridge. It never scans
191
+ personal memory or automatically installs a harness entry. Serving requires
192
+ separate HTTP consent; this JSON API is not OAuth remote MCP HTTP.
193
+
194
+ Authority is rechecked per request. Backup/restore validates integrity and
195
+ revokes restored credentials; retention is manual, and logical deletion is not
196
+ physical erasure. Feature/profile changes require restarting the bridge;
197
+ revocation and membership changes take effect on existing clients.
198
+ Removing the MCP entry or disabling its service stops team access without
199
+ changing personal memory. Uninstall retains the separate store.
200
+ Read [the reference](../team.md), [L29](lessons/L29-team-continuity.md) and its
201
+ [V29 rehearsal brief](video-scripts/V29-team-continuity.md).
202
+ The governed internal review and approved isolated native pilot are complete;
203
+ neither substitutes for independent production review and a deployment-specific
204
+ approved real-data pilot. This is a bounded experimental preview, not general
205
+ production admission.
@@ -63,6 +63,7 @@ expanded only after their labs are executable.
63
63
  | L26 | [Context intelligence with explicit authority](lessons/L26-context-intelligence.md) | Ready | 45 min |
64
64
  | L27 | [Evaluate context companions without moving authority](lessons/L27-ecosystem-evidence.md) | Ready | 30 min |
65
65
  | L28 | [Verify Cairnkeep's security posture](lessons/L28-security-assurance.md) | Ready | 30 min |
66
+ | L29 | [Reviewed team continuity preview](lessons/L29-team-continuity.md) | Brief; opt-in 2.25 preview | 40 min |
66
67
 
67
68
  The [curriculum coverage map](CURRICULUM-MAP.md) records where every public
68
69
  feature is introduced, practised, and operated. It also marks design-only work
@@ -89,6 +90,7 @@ feature.
89
90
 
90
91
  Use [the lesson template](templates/lesson-template.md). Commands in finished
91
92
  lessons must be tested against the current release before publication.
92
- Unpublished editorial plans and recording scripts are intentionally maintained
93
- outside the public product repository; stable video links or transcripts can
94
- be added here after publication.
93
+ Technical lesson and rehearsal scripts in `video-scripts/` are maintained with
94
+ the product; private editorial plans and recording evidence stay outside this
95
+ repository. Preview scripts must not present unreleased behavior as installed
96
+ release behavior. Stable video links can be added after publication.
@@ -3,7 +3,7 @@
3
3
  **Status:** Ready
4
4
  **Track:** Quickstart
5
5
  **Time:** 10 minutes
6
- **Tested with:** Cairnkeep 2.24.0
6
+ **Tested with:** Cairnkeep 2.25.0
7
7
 
8
8
  ## Outcome
9
9
 
@@ -3,7 +3,7 @@
3
3
  **Status:** Ready
4
4
  **Track:** Quickstart
5
5
  **Time:** 15 minutes
6
- **Tested with:** Cairnkeep 2.24.0
6
+ **Tested with:** Cairnkeep 2.25.0
7
7
 
8
8
  ## Outcome
9
9
 
@@ -26,7 +26,7 @@ ephemeral; the named course volume is persistent.
26
26
  1. Pull the public image:
27
27
 
28
28
  ```bash
29
- podman pull ghcr.io/cairnkeep/cairnkeep:2.24.0
29
+ podman pull ghcr.io/cairnkeep/cairnkeep:2.25.0
30
30
  ```
31
31
 
32
32
  2. Start the stdio server with a read-only root filesystem and no Linux
@@ -38,7 +38,7 @@ ephemeral; the named course volume is persistent.
38
38
  --read-only --cap-drop=all --security-opt=no-new-privileges \
39
39
  --tmpfs=/tmp:rw,noexec,nosuid,size=64m,mode=1777 \
40
40
  --volume cairnkeep-course-data:/data:Z,U \
41
- ghcr.io/cairnkeep/cairnkeep:2.24.0 stdio
41
+ ghcr.io/cairnkeep/cairnkeep:2.25.0 stdio
42
42
  ```
43
43
 
44
44
  3. The process waits quietly for MCP input. Press `Ctrl-C` after confirming it
@@ -3,7 +3,7 @@
3
3
  **Status:** Ready
4
4
  **Track:** Quickstart
5
5
  **Time:** 25 minutes
6
- **Tested with:** Cairnkeep 2.24.0 and Node.js 22 or newer
6
+ **Tested with:** Cairnkeep 2.25.0 and Node.js 22 or newer
7
7
 
8
8
  ## Outcome
9
9
 
@@ -47,7 +47,7 @@ sync. Codex project trust remains an explicit operator decision.
47
47
  2. Install Cairnkeep:
48
48
 
49
49
  ```bash
50
- npm install --global @cairnkeep/cli@2.24.0
50
+ npm install --global @cairnkeep/cli@2.25.0
51
51
  cairn --version
52
52
  ```
53
53
 
@@ -3,7 +3,7 @@
3
3
  **Status:** Ready
4
4
  **Track:** Quickstart
5
5
  **Time:** 25 minutes
6
- **Tested with:** Cairnkeep 2.24.0
6
+ **Tested with:** Cairnkeep 2.25.0
7
7
 
8
8
  ## Outcome
9
9
 
@@ -3,7 +3,7 @@
3
3
  **Status:** Ready
4
4
  **Track:** Evidence and Evaluation
5
5
  **Time:** 50 minutes
6
- **Tested with:** Cairnkeep 2.24.0
6
+ **Tested with:** Cairnkeep 2.25.0
7
7
 
8
8
  ## Outcome
9
9
 
@@ -1,7 +1,7 @@
1
1
  # L20 - Least-authority MCP tool profiles
2
2
 
3
3
  **Status:** Ready
4
- **Tested with:** Cairnkeep 2.24.0 and Node.js 22 or newer
4
+ **Tested with:** Cairnkeep 2.25.0 and Node.js 22 or newer
5
5
  **Time:** 25 minutes
6
6
 
7
7
  ## Outcome
@@ -1,7 +1,7 @@
1
1
  # L21 - Immutable context packs and skill approval
2
2
 
3
3
  **Status:** Ready
4
- **Tested with:** Cairnkeep 2.24.0 and Node.js 22 or newer
4
+ **Tested with:** Cairnkeep 2.25.0 and Node.js 22 or newer
5
5
  **Time:** 40 minutes
6
6
 
7
7
  ## Outcome
@@ -3,7 +3,7 @@
3
3
  **Status:** Ready
4
4
  **Track:** Operator
5
5
  **Time:** 30 minutes
6
- **Tested with:** Cairnkeep 2.24.0, Windows x64, and Node.js 22 or newer
6
+ **Tested with:** Cairnkeep 2.25.0, Windows x64, and Node.js 22 or newer
7
7
 
8
8
  ## Outcome
9
9
 
@@ -16,7 +16,7 @@ perform a reversible uninstall without relying on WSL or Git Bash.
16
16
  From PowerShell:
17
17
 
18
18
  ```powershell
19
- npm install --global @cairnkeep/cli@2.24.0
19
+ npm install --global @cairnkeep/cli@2.25.0
20
20
  cairn version
21
21
 
22
22
  $Lab = Join-Path $env:TEMP 'Cairnkeep Windows Lab'
@@ -3,7 +3,7 @@
3
3
  **Status:** Ready
4
4
  **Track:** Quickstart and Operator
5
5
  **Time:** 35 minutes
6
- **Tested with:** Cairnkeep 2.24.0; Pi 0.84.1; Node.js 22, 24, and 26
6
+ **Tested with:** Cairnkeep 2.25.0; Pi 0.84.1; Node.js 22, 24, and 26
7
7
 
8
8
  ## Outcome
9
9
 
@@ -1,7 +1,7 @@
1
1
  # L24 - Reviewed knowledge exchange
2
2
 
3
3
  **Status:** Ready
4
- **Tested with:** Cairnkeep 2.24.0 and Node.js 22 or newer
4
+ **Tested with:** Cairnkeep 2.25.0 and Node.js 22 or newer
5
5
  **Time:** 35 minutes
6
6
 
7
7
  ## Outcome
@@ -1,7 +1,7 @@
1
1
  # L25 - Bounded workflow playbooks
2
2
 
3
3
  **Status:** Ready
4
- **Tested with:** Cairnkeep 2.24.0 and Node.js 22 or newer
4
+ **Tested with:** Cairnkeep 2.25.0 and Node.js 22 or newer
5
5
  **Time:** 35 minutes
6
6
 
7
7
  ## Outcome
@@ -1,7 +1,7 @@
1
1
  # L26 - Context intelligence with explicit authority
2
2
 
3
3
  **Status:** Ready
4
- **Tested with:** Cairnkeep 2.24.0 and Node.js 22 or newer
4
+ **Tested with:** Cairnkeep 2.25.0 and Node.js 22 or newer
5
5
 
6
6
  ## Outcome
7
7
 
@@ -1,6 +1,6 @@
1
1
  # L27 - Evaluate context companions without moving authority
2
2
 
3
- **Tested with:** Cairnkeep 2.24.0 and Node.js 22 or newer
3
+ **Tested with:** Cairnkeep 2.25.0 and Node.js 22 or newer
4
4
 
5
5
  ## Outcome
6
6
 
@@ -1,7 +1,7 @@
1
1
  # L28 - Verify Cairnkeep's security posture
2
2
 
3
3
  **Status:** Ready
4
- **Tested with:** Cairnkeep 2.24.0 and Node.js 22 or newer
4
+ **Tested with:** Cairnkeep 2.25.0 and Node.js 22 or newer
5
5
 
6
6
  ## Outcome
7
7
 
@@ -11,7 +11,7 @@ and choose least authority for a network-facing MCP client.
11
11
 
12
12
  ## Prerequisites
13
13
 
14
- - Install Cairnkeep 2.24.0 or use a disposable source checkout.
14
+ - Install Cairnkeep 2.25.0 or use a disposable source checkout.
15
15
  - Complete [L20 - Least-authority MCP tool profiles](L20-mcp-tool-profiles.md).
16
16
  - Use synthetic values only; never paste a real bearer token into a recording,
17
17
  terminal transcript, or issue.
@@ -0,0 +1,95 @@
1
+ # L29 - Reviewed team continuity preview
2
+
3
+ **Status:** Brief; opt-in experimental preview in Cairnkeep 2.25.0
4
+ **Compatibility:** Cairnkeep 2.25.0 or newer; Node 22.13 or newer for team storage.
5
+ Use a matching source checkout for the executable regression exercises below.
6
+ Installing the released CLI does not enable team sharing.
7
+
8
+ ## Outcome
9
+
10
+ Carry an approved project decision from one client process and working folder
11
+ to another, without exposing personal memory or granting an agent review power.
12
+ Explain the difference between a restrictive MCP profile and server membership.
13
+
14
+ ## Prerequisites
15
+
16
+ Complete L20 and L28. Use only synthetic subjects and disposable local stores.
17
+ Build the matching checkout with `npm --prefix mcp-memory-server ci` followed by
18
+ `npm --prefix mcp-memory-server run build`. Read [Team continuity](../../team.md).
19
+ Do not connect a real organization or reuse a production credential.
20
+ For an explicitly approved native-harness trial, follow the
21
+ [isolated pilot guide](../../team-pilot.md); do not use automated rehearsal as
22
+ a substitute for the human review or release-admission steps.
23
+
24
+ ## Source-checkout rehearsal
25
+
26
+ From the checkout, run the offline controls:
27
+
28
+ ```sh
29
+ node mcp-memory-server/scripts/smoke-team.mjs
30
+ node mcp-memory-server/scripts/smoke-team-review.mjs
31
+ node mcp-memory-server/scripts/smoke-team-http.mjs
32
+ node mcp-memory-server/scripts/smoke-team-mcp.mjs
33
+ node mcp-memory-server/scripts/smoke-team-restore.mjs
34
+ node mcp-memory-server/scripts/smoke-team-cli.mjs
35
+ ```
36
+
37
+ These create disposable local fixtures and an authenticated loopback service,
38
+ invoke actual stdio MCP clients, then clean their generated directories.
39
+ No model, personal store, external API or corporate system is used. The MCP
40
+ control changes client identity/cwd and retrieves the same approved decision;
41
+ it does not infer authority from the working folder or a display name.
42
+
43
+ Trace the lifecycle beside the operator commands in the reference:
44
+
45
+ ```text
46
+ selected text → immutable proposal → different human reviews exact digest
47
+ → approved revision → authorized readers across client sessions
48
+ ```
49
+
50
+ Stop at each negative control: unapproved proposal invisible to readers;
51
+ self/workload review denied; stale policy/base conflicts; unrelated project
52
+ denied; revoked credential blocked; restore refuses a live target and revokes
53
+ all copied credentials. A confirmed value hash is not evidence of human consent.
54
+
55
+ For project offboarding, use:
56
+
57
+ ```sh
58
+ cairn team member remove SUBJECT --project ID --data DIR
59
+ ```
60
+
61
+ Verify that a connected client immediately loses access while the subject's
62
+ other project memberships still work. Re-enroll with `member set` and
63
+ an explicit nonempty `--roles` list; revoke credentials separately when needed.
64
+
65
+ ## Acceptance criteria
66
+
67
+ - Two independent stdio clients retrieve identical approved text and provenance.
68
+ - Personal memory is untouched, and failed team retrieval never changes scope.
69
+ - Reader profiles contain observations only; proposal creation requires consent.
70
+ - Human review is absent from the MCP catalog and cannot be performed by workload tokens.
71
+ - Role changes and offboarding apply to already-connected clients.
72
+ - Backup verifies digests and audit links; restored data needs fresh credentials.
73
+ - CLI administration returns to the shell; credentials are never printed.
74
+ - Temporary restore remnants are reported, never silently deleted or activated.
75
+ - Independent production review and a deployment's approved real-data pilot are
76
+ separate from the completed internal review and isolated native pilot.
77
+
78
+ ## Privacy and trust boundary
79
+
80
+ Proposals and snapshots contain selected shared text and identities. Keep them
81
+ private and encrypted by the surrounding storage/backup system. Roles do not
82
+ make retrieved text executable authority. The OS owner administers membership
83
+ and can rewrite the local database; hash links are not independent signatures.
84
+ Team search is deterministic substring matching with no provider request.
85
+ Personal-memory embedding and reranking settings do not apply to team search.
86
+ This token-first JSON API plus local stdio bridge is not OAuth remote MCP HTTP.
87
+
88
+ ## Recovery
89
+
90
+ The controls clean only their own temporary fixtures. For manual rehearsal,
91
+ stop the disposable service, verify the exact generated paths and remove only
92
+ that lab. Never run a purge against a real store for a recording. Logical key
93
+ deletion does not erase old backup copies or guarantee physical erasure.
94
+ Restoring a real service, enrolling users and publishing a release need separate
95
+ admission evidence; passing this rehearsal does not supply it.
@@ -19,6 +19,8 @@
19
19
  13. [L26 - Context intelligence with explicit authority](../lessons/L26-context-intelligence.md)
20
20
  14. [L27 - Evaluate ecosystem ideas with bounded evidence](../lessons/L27-ecosystem-evidence.md)
21
21
  15. [L28 - Verify Cairnkeep's security posture](../lessons/L28-security-assurance.md)
22
+ 16. Optional 2.25 preview: [L29 - Reviewed team continuity](../lessons/L29-team-continuity.md).
23
+ Do not enable it in production before the independent review and approved pilot.
22
24
 
23
25
  All modules are optional. The track is complete when the operator can add and
24
26
  remove each integration without breaking the standalone local workflow and can
@@ -0,0 +1,66 @@
1
+ # V29 - Remember together without sharing everything
2
+
3
+ Status: technical rehearsal brief for the opt-in Cairnkeep 2.25.0 preview.
4
+ Target: 10–12 minutes, experienced-developer audience. Describe a released
5
+ experimental preview, not a generally production-admitted team service.
6
+ Use the [isolated pilot guide](../../team-pilot.md) for a separately authorized
7
+ native-harness trial, not as authorization to record private review or credentials.
8
+
9
+ ## 0:00–1:30 — Continuity is the goal
10
+
11
+ “The useful part is not winning a one-shot puzzle. It is continuing tomorrow,
12
+ in another harness, without explaining the same project decision again.”
13
+ Pause, then introduce the new boundary: your private memory is not a team bucket.
14
+ Show the proposal/review/revision lifecycle, one stage at a time.
15
+
16
+ ## 1:30–3:30 — Deliberately separate identities
17
+
18
+ Use a disposable source checkout and only synthetic fixtures. Show
19
+ `bin/cairn team --help` and the default-off failure. Read the roles in
20
+ `docs/team.md`; highlight that a reviewer token is human-only and is never
21
+ handed to the agent. Briefly show initialization/membership command forms,
22
+ with no token contents on screen. The server is loopback-only.
23
+
24
+ ## 3:30–6:00 — Make the boundary visible
25
+
26
+ Type the six L29 control commands at human speed; use completion where useful.
27
+ Split the terminal: immutable selected proposal on one side, human review and
28
+ approved retrieval on the other. Use the actual fixture results rather than
29
+ fabricating a transcript. Pause on denied workload/self-review and the stale
30
+ digest/base controls. Explain that confirming a hash does not prove human consent.
31
+
32
+ ## 6:00–8:00 — Change clients, not authority
33
+
34
+ Run `smoke-team-mcp.mjs` separately and inspect its maintained fixture: two
35
+ actual stdio clients, different cwd, same approved project decision. Zoom into
36
+ project provenance, then contrast an unrelated project denial and live token
37
+ revocation. Do not claim the test launched every named commercial harness.
38
+ Show `cairn team member remove SUBJECT --project ID --data DIR` as the explicit
39
+ project-offboarding command. Pause on the connected client's denial; explain
40
+ that removing one project membership does not revoke all of that person's tokens.
41
+ An additional MCP entry is opt-in; existing memory servers are not replaced.
42
+
43
+ ## 8:00–10:00 — Recovery with a catch
44
+
45
+ Run `smoke-team-restore.mjs` and `smoke-team-cli.mjs`. Leave a two-second pause
46
+ on “restored credentials revoked”: copying a backup must not silently restore
47
+ access. Show fresh-only restore, no-overwrite and uninstall-retention controls.
48
+ Explain that logical deletion is not secure disk erasure or backup deletion.
49
+
50
+ ## 10:00–11:30 — Honest closing
51
+
52
+ End on the admission checklist in `docs/team.md`, not a production deployment.
53
+ Distinguish completed regression controls, the internal governed review and
54
+ the approved isolated native pilot from independent production review and a
55
+ deployment-specific real-data pilot. Do not imply two independent human testers.
56
+ Explain that personal-memory embeddings/reranking never process team search.
57
+ Distinguish the JSON API/local stdio bridge from OAuth
58
+ remote MCP. Call out OIDC, team packs and multi-organization tenancy as deferred.
59
+
60
+ ## Recording contract
61
+
62
+ Use legible real terminals, short scene changes, natural pauses and emphasis
63
+ around each changed authority boundary. Keep credentials, personal memory,
64
+ source excerpts from private projects and raw snapshot text off screen.
65
+ Do not enroll a real user, deploy, purchase services or mutate live MCP config
66
+ to produce the video. This brief does not imply a video has been recorded.
package/docs/operating.md CHANGED
@@ -962,9 +962,10 @@ cairn playbook record --help
962
962
  ```
963
963
 
964
964
  Inspect receipts with `cairn playbook receipts list|show`; validate state with
965
- `cairn playbook doctor`. Actor and session options are provenance labels only:
966
- v2.15 does not authenticate them and does not provide team ACLs. See
967
- [team mode](design/team-mode.md) for the future admission contract.
965
+ `cairn playbook doctor`. Actor and session options remain unverified provenance
966
+ labels, not team ACLs. The separate [team preview](team.md) authenticates its own
967
+ credentials and project memberships; it never trusts local playbook labels.
968
+ See [team mode](design/team-mode.md) for the broader admission contract.
968
969
 
969
970
  The corresponding process overrides are optional:
970
971
 
@@ -1541,3 +1542,16 @@ cairn proposals apply PROPOSAL_DIGEST --project /path/to/project --json
1541
1542
 
1542
1543
  No background process synchronizes OpenViking, creates proposals, applies
1543
1544
  memory, enables packs, or approves skills.
1545
+
1546
+ ## Team continuity (opt-in 2.25 preview)
1547
+
1548
+ The separate `cairn team` command implements explicitly selected and reviewed
1549
+ project memory. It is default off (`CAIRN_TEAM=1` required); serving also needs
1550
+ `CAIRN_TEAM_HTTP=1`. It does not change ordinary setup or existing MCP entries.
1551
+ Use [the team reference](team.md) for roles, private credentials, additional
1552
+ local stdio registration, human review, backup/restore and incident handling.
1553
+ The internal governed review and approved isolated native pilot are complete;
1554
+ independent production review and a deployment-specific approved real-data pilot
1555
+ are still required before using real organization data.
1556
+ Existing personal HTTP remains a trusted single storage domain; token-first
1557
+ team JSON HTTP is a different service, not OAuth remote MCP HTTP.