@cairnkeep/cli 2.23.1 → 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 (65) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/docs/README.md +4 -0
  3. package/docs/agents.md +18 -0
  4. package/docs/containers.md +4 -0
  5. package/docs/design/team-mode.md +17 -9
  6. package/docs/harness-compatibility.md +17 -0
  7. package/docs/learning/CURRICULUM-MAP.md +3 -1
  8. package/docs/learning/FEATURE-GUIDE.md +34 -1
  9. package/docs/learning/README.md +5 -3
  10. package/docs/learning/lessons/L00-why-cairnkeep.md +1 -1
  11. package/docs/learning/lessons/L01-safe-trial.md +3 -3
  12. package/docs/learning/lessons/L02-installation.md +2 -2
  13. package/docs/learning/lessons/L03-first-project.md +1 -1
  14. package/docs/learning/lessons/L04-memory-fundamentals.md +12 -0
  15. package/docs/learning/lessons/L19-validated-skill-improvement.md +1 -1
  16. package/docs/learning/lessons/L20-mcp-tool-profiles.md +1 -1
  17. package/docs/learning/lessons/L21-context-packs.md +1 -1
  18. package/docs/learning/lessons/L22-native-windows.md +2 -2
  19. package/docs/learning/lessons/L23-guided-setup.md +1 -1
  20. package/docs/learning/lessons/L24-okf-exchange.md +1 -1
  21. package/docs/learning/lessons/L25-playbooks.md +1 -1
  22. package/docs/learning/lessons/L26-context-intelligence.md +1 -1
  23. package/docs/learning/lessons/L27-ecosystem-evidence.md +1 -1
  24. package/docs/learning/lessons/L28-security-assurance.md +2 -2
  25. package/docs/learning/lessons/L29-team-continuity.md +95 -0
  26. package/docs/learning/tracks/operator.md +2 -0
  27. package/docs/learning/video-scripts/V04-memory-retrieval-supplement.md +13 -0
  28. package/docs/learning/video-scripts/V29-team-continuity.md +66 -0
  29. package/docs/mcp-tool-profiles.md +7 -0
  30. package/docs/memory-retrieval.md +84 -2
  31. package/docs/operating.md +22 -3
  32. package/docs/privacy-and-data-flow.md +37 -9
  33. package/docs/security-assurance.md +28 -0
  34. package/docs/storage.md +18 -0
  35. package/docs/team-pilot.md +132 -0
  36. package/docs/team.md +234 -0
  37. package/examples/eval/bundled-fake.json +1 -1
  38. package/mcp-memory-server/dist/index.js +30 -2
  39. package/mcp-memory-server/dist/mcp-tool-catalog.js +4 -1
  40. package/mcp-memory-server/dist/memory-reranker.js +109 -0
  41. package/mcp-memory-server/dist/team-cli.js +218 -0
  42. package/mcp-memory-server/dist/team-http.js +193 -0
  43. package/mcp-memory-server/dist/team-mcp.js +82 -0
  44. package/mcp-memory-server/dist/team-store.js +663 -0
  45. package/mcp-memory-server/package.json +1 -0
  46. package/package.json +1 -1
  47. package/scripts/cairn-cli.mjs +2 -0
  48. package/scripts/completion.sh +23 -3
  49. package/scripts/doctor.sh +17 -0
  50. package/scripts/lib/team-retention.mjs +29 -0
  51. package/scripts/probe-memory-reranker.mjs +22 -0
  52. package/scripts/test-ci-sharding.sh +4 -0
  53. package/scripts/test-completion.sh +8 -0
  54. package/scripts/test-container-health.mjs +2 -0
  55. package/scripts/test-container.sh +21 -1
  56. package/scripts/test-dependency-security.mjs +11 -1
  57. package/scripts/test-doctor.sh +28 -0
  58. package/scripts/test-package-install.sh +9 -0
  59. package/scripts/test-team-docs.sh +52 -0
  60. package/scripts/test-team-pilot.mjs +59 -0
  61. package/scripts/test-windows-native.mjs +5 -0
  62. package/scripts/uninstall.sh +13 -0
  63. package/scripts/verify-dependency-security.mjs +3 -2
  64. package/scripts/verify-team-retention.mjs +3 -0
  65. package/scripts/windows-platform.mjs +14 -2
package/CHANGELOG.md CHANGED
@@ -5,6 +5,57 @@ 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
+
32
+ ## [2.24.0] - 2026-10-24
33
+
34
+ ### Memory retrieval
35
+
36
+ - Add optional provider-neutral learned reranking for ordinary memory search,
37
+ with explicit endpoint/model consent and a separate optional credential.
38
+ Preserve existing scope, current-value, typed and relevance admission;
39
+ bound candidate text, streamed responses and deadlines. Provider failures
40
+ preserve the original ranking. Exact keys, including explicit aliases,
41
+ retain priority. Default search behavior stays unchanged.
42
+ - Add functional POSIX/native-Windows diagnostics, real MCP isolation/fallback
43
+ controls and a frozen synthetic provider comparison. Document both improved
44
+ first-result ordering and the regression; do not claim better general recall
45
+ or agent productivity. Update retrieval/privacy guidance and L04/V04 material.
46
+ - Preserve frozen fixture bytes on Windows and verify linked-install probes.
47
+ No new runtime dependency, storage migration, automatic provider discovery
48
+ or team-feature activation is included.
49
+
50
+ ### Security
51
+
52
+ - Refresh compatible transitive HTTP parser, URI and IP-address dependencies
53
+ in both lock graphs. Enforce the patched minimum versions, including nested
54
+ copies, with dependency-policy regression controls.
55
+ - Normalize the container health-check directory's traversal permissions after
56
+ copying its probe. Verify the legacy entrypoint imports as the runtime UID;
57
+ do not count module-load failures as successful credential rejection.
58
+
8
59
  ## [2.23.1] - 2026-10-22
9
60
 
10
61
  ### Domain knowledge
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.
@@ -86,6 +86,10 @@ configuration fails without issuing a request; probes target only
86
86
  `127.0.0.1` and refuse redirects. The existing
87
87
  `/usr/local/lib/cairnkeep/container-healthcheck.mjs` command remains available
88
88
  as an alias to the packaged probe. Stdio mode requires no HTTP probe.
89
+ The image explicitly makes the probe directory searchable by its unprivileged
90
+ runtime user after copying the file. The OCI regression imports that legacy
91
+ entrypoint as UID 10001 before testing credentials, so a missing or inaccessible
92
+ module cannot be mistaken for a successful authentication rejection.
89
93
  File-based probes require a private token readable by the container user;
90
94
  world-readable secret mounts fail closed. The Quadlet example explicitly mounts
91
95
  its secret as UID/GID 10001 with mode `0400`. For other engines, verify the
@@ -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.23.1
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.23.1
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
@@ -42,6 +42,18 @@ match/source/conflict explanations without changing legacy defaults. See
42
42
  and its recording supplement. The synthetic Markdown comparison measures
43
43
  retrieval policy, not general task quality or a storage-format advantage.
44
44
 
45
+ Version 2.24 adds an optional, separately configured ranking
46
+ service, not a chat agent or memory authority. It remains default-off. See
47
+ [its bounded provider comparison and regression](../memory-retrieval.md#optional-learned-reranking)
48
+ before enabling it; L04 and its recording supplement cover the privacy,
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.
56
+
45
57
  ## The three-layer model
46
58
 
47
59
  1. **Memory server:** an MCP process that owns scoped durable storage. The
@@ -170,3 +182,24 @@ approval, project-isolation, or release authority. See
170
182
  [L27](lessons/L27-ecosystem-evidence.md), its
171
183
  [video script](video-scripts/V27-ecosystem-evidence.md), and the pinned
172
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.23.1
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.23.1
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.23.1
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.23.1 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.23.1 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.23.1
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.23.1
6
+ **Tested with:** Cairnkeep 2.25.0
7
7
 
8
8
  ## Outcome
9
9
 
@@ -53,6 +53,18 @@ fact and starting a fresh client, verifying the new value and explicit history.
53
53
  - No extracted candidate becomes durable without an explicit review action.
54
54
  - Enabling typed nodes changes discovery structure, not the authority of a fact.
55
55
 
56
+ ## Optional reranker extension
57
+
58
+ From a source checkout of 2.24.0 or newer, run `npm --prefix mcp-memory-server run check:memory-reranker`
59
+ without a provider. Then, only with explicit synthetic-data/provider consent,
60
+ compare the frozen live study in the retrieval guide. Explain both the 6/16
61
+ to 15/16 first-result improvement and the single regression; this is not a
62
+ general accuracy or agent-productivity claim. Show that reranking is off by
63
+ default, has a separate credential, preserves admission and exact-key priority,
64
+ and falls back without mutating stored facts. A failed provider must make
65
+ `cairn doctor` fail even though search still works. Read-only is not a promise
66
+ of zero network traffic: configured search advertises open-world behavior.
67
+
56
68
  ## Source material
57
69
 
58
70
  - [Operating guide](../../operating.md#the-workflow)
@@ -3,7 +3,7 @@
3
3
  **Status:** Ready
4
4
  **Track:** Evidence and Evaluation
5
5
  **Time:** 50 minutes
6
- **Tested with:** Cairnkeep 2.23.1
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.23.1 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.23.1 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.23.1, 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.23.1
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.23.1; 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.23.1 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.23.1 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.23.1 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.23.1 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.23.1 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.23.1 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
@@ -32,3 +32,16 @@ not confidence, and that the attempted live study failed with HTTP 502. Do not
32
32
  invent a successful live result or claim general task-quality improvements.
33
33
  Use short terminal zooms and side-by-side result comparisons instead of static
34
34
  slides; keep credentials and real memory off screen.
35
+
36
+ ## Optional reranker segment (2.24.0 or newer source checkout)
37
+
38
+ Record real `check:memory-reranker` output, pausing on the no-network default,
39
+ scope/history canaries and provider-failure fallback. With explicit synthetic
40
+ provider configuration, run `run-memory-reranker-study.mjs --live --summary`.
41
+ Do not show credentials or endpoint addresses. Compare the two arms using the
42
+ same embeddings: the first frozen run improved first hits from 6/16 to 15/16,
43
+ but `current-not-history` regressed. Zoom into that failure rather than hiding
44
+ it. Explain that the earlier HTTP-502 study is separate and remains a failed
45
+ run. Demonstrate the doctor's synthetic request, then disable reranking and
46
+ show unchanged memory text and provenance. This is a recording brief, not a
47
+ claim that this segment has been filmed or published.