@cairnkeep/cli 2.24.0 → 2.26.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 (60) hide show
  1. package/CHANGELOG.md +65 -0
  2. package/docs/README.md +6 -0
  3. package/docs/agents.md +18 -0
  4. package/docs/design/team-mode.md +17 -9
  5. package/docs/harness-compatibility.md +20 -0
  6. package/docs/learning/CURRICULUM-MAP.md +4 -2
  7. package/docs/learning/FEATURE-GUIDE.md +35 -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 +6 -2
  23. package/docs/learning/lessons/L29-team-continuity.md +127 -0
  24. package/docs/learning/tracks/operator.md +4 -0
  25. package/docs/learning/video-scripts/V28-security-assurance.md +4 -0
  26. package/docs/learning/video-scripts/V29-team-continuity.md +84 -0
  27. package/docs/operating.md +23 -3
  28. package/docs/privacy-and-data-flow.md +45 -6
  29. package/docs/provider-data-flow-review.md +48 -0
  30. package/docs/security-assurance.md +39 -0
  31. package/docs/storage.md +32 -0
  32. package/docs/team-onboarding.md +226 -0
  33. package/docs/team-pilot.md +134 -0
  34. package/docs/team.md +245 -0
  35. package/examples/eval/bundled-fake.json +1 -1
  36. package/mcp-memory-server/dist/capability-config.js +12 -1
  37. package/mcp-memory-server/dist/team-cli.js +228 -0
  38. package/mcp-memory-server/dist/team-client.js +71 -0
  39. package/mcp-memory-server/dist/team-http.js +193 -0
  40. package/mcp-memory-server/dist/team-mcp.js +89 -0
  41. package/mcp-memory-server/dist/team-store.js +669 -0
  42. package/mcp-memory-server/package.json +2 -2
  43. package/package.json +1 -1
  44. package/scripts/cairn-cli.mjs +7 -0
  45. package/scripts/completion.sh +31 -3
  46. package/scripts/lib/team-retention.mjs +29 -0
  47. package/scripts/team-connect.mjs +366 -0
  48. package/scripts/test-ci-sharding.sh +4 -0
  49. package/scripts/test-codeql-cohort.mjs +35 -0
  50. package/scripts/test-completion.sh +11 -0
  51. package/scripts/test-package-install.sh +10 -0
  52. package/scripts/test-phase18-capability-lifecycle.sh +2 -2
  53. package/scripts/test-security-baseline.sh +1 -0
  54. package/scripts/test-team-docs.sh +61 -0
  55. package/scripts/test-team-installed.mjs +51 -0
  56. package/scripts/test-team-pilot.mjs +101 -0
  57. package/scripts/uninstall.sh +13 -0
  58. package/scripts/verify-security-baseline.mjs +20 -0
  59. package/scripts/verify-team-retention.mjs +3 -0
  60. package/scripts/windows-platform.mjs +6 -2
package/CHANGELOG.md CHANGED
@@ -5,6 +5,71 @@ All notable user-facing changes are documented here. This project follows
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [2.26.0] - 2026-10-26
9
+
10
+ ### Guided team onboarding
11
+
12
+ - Add opt-in `cairn team connect` with terminal harness selectors, a no-write
13
+ plan, explicit apply/confirmation and a read-only default. Add a dedicated
14
+ project-local MCP entry for Claude Code, OpenCode, Qwen Code or Codex without
15
+ replacing personal/unrelated MCPs. Store only private token-file references;
16
+ pin the bridge to one explicit server project.
17
+ - Add `cairn team doctor --client` with authenticated, metadata-only project
18
+ diagnostics; no local admin store or memory payload. Add drift-aware
19
+ `disconnect`, private recoverable backups, serialized writers and a committed
20
+ activation record so interrupted multi-file connections stay inactive.
21
+ - Add synthetic two-identity, adapter/cwd continuity, denied self-publication,
22
+ revocation and interrupted-recovery controls, plus actual installed-package
23
+ onboarding checks. Update completions, storage/privacy and learning/video
24
+ briefs. No new dependency, automatic enrollment or production admission.
25
+
26
+ ### Verification
27
+
28
+ - Keep all CodeQL actions on one reviewed commit and group their dependency
29
+ updates; reject split or unpinned cohorts with mutation controls. Refresh
30
+ pinned CodeQL, Scorecard and release artifact-download actions.
31
+ - Retry bounded capability-lock acquisition when the previous writer removes
32
+ the lock between contention and inspection. Keep other inspection failures
33
+ denied and add a deterministic disappearance regression; preserve concurrent
34
+ child diagnostics on lifecycle-test failure.
35
+
36
+ - Serialize asynchronous security fixtures that patch shared filesystem
37
+ built-ins, with an aggregate hook-ownership/restoration regression. Preserve
38
+ runtime read guards and all actual replacement/growth injection assertions.
39
+ - Add real MCP coverage and a review of file-derived provider workspace flows;
40
+ verify destination, credential and selected-content boundaries without
41
+ suppressing static-analysis findings.
42
+
43
+ ### Documentation
44
+
45
+ - Add role-based team-preview onboarding, a tested reader connection card and
46
+ deployment-readiness checklist; align the reference, pilot, lesson and video
47
+ brief without enabling sharing or changing the released CLI.
48
+
49
+ ## [2.25.0] - 2026-10-24
50
+
51
+ ### Team continuity preview
52
+
53
+ - Add default-off `cairn team` continuity with a separate organization/project
54
+ store, explicit roles and expiring/revocable human or workload credentials.
55
+ Share only selected text through immutable proposals and different-human
56
+ exact-digest review. Publish approved revisions and scoped audit atomically;
57
+ reject self/workload review and stale policy/base revisions.
58
+ - Add a bounded authenticated loopback JSON API and an additional local stdio
59
+ MCP bridge. Four observation tools and additive proposal creation intersect
60
+ MCP profiles/capabilities with server authorization; no review/admin MCP,
61
+ automatic upload, personal-store migration or production activation.
62
+ - Add consistent verified backups, fresh-only restore with copied credentials
63
+ revoked, private file/ACL controls, logical deletion and uninstall retention.
64
+ Document manual retention, size limits and trusted-OS-owner limitations.
65
+ - Add `cairn team member remove SUBJECT --project ID` for explicit project
66
+ offboarding. Preserve credentials, other memberships and audit history;
67
+ reject missing or empty role lists in `member set`. Update shell completions,
68
+ team guidance and the learning/video rehearsal.
69
+ - Add an isolated, opt-in pilot guide with an executable setup regression:
70
+ separate stores, file-only expiring credentials and client profiles, unchanged
71
+ personal configuration, and an explicit human review boundary.
72
+
8
73
  ## [2.24.0] - 2026-10-24
9
74
 
10
75
  ### Memory retrieval
package/docs/README.md CHANGED
@@ -76,6 +76,12 @@ 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.
83
+ [Role-based onboarding](team-onboarding.md) adds a tested reader check and
84
+ the deployment decisions to resolve before any real-data pilot.
79
85
  - [Building an overlay](building-an-overlay.md) explains how to add private
80
86
  provider or organization policy without forking the core.
81
87
  - [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,23 @@ 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` or change existing setup.
361
+ The 2.26.0 explicit `team connect` wizard adds only a project-local team
362
+ entry for Claude Code, OpenCode, Qwen Code or Codex; global config is unchanged.
363
+ See [supported files and safe recovery](team-onboarding.md#guided-connection-next-release--matching-source-checkout).
364
+ Other adapters retain the manual connection recipe. Every call supplies a server project ID explicitly;
365
+ the same credentials/project IDs work regardless of the starting cwd.
366
+ Configure private file-based credentials and the separate JSON API URL in the
367
+ client environment. Human reviewer credentials must not enter the agent's
368
+ environment; review is CLI-only.
369
+
370
+ Maintained tests use actual SDK stdio clients, profiles and live revocation.
371
+ They do not constitute a live test of every named harness. The bridge exposes
372
+ four observations plus explicit proposal creation, never review/admin.
373
+ The completed internal review and isolated native pilot are not independent
374
+ production review or a deployment-specific approved real-data pilot; both
375
+ remain required for production support.
@@ -1,7 +1,7 @@
1
1
  # Curriculum Coverage Map
2
2
 
3
- **Baseline:** Cairnkeep 2.24.0
4
- **Last reviewed:** 2026-10-22
3
+ **Baseline:** Cairnkeep 2.26.0
4
+ **Last reviewed:** 2026-10-26
5
5
 
6
6
  This map prevents the course from drifting behind the product. It assigns each
7
7
  user-facing surface to a lesson and records whether the lesson is complete or
@@ -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; next-release guided connect/client doctor/disconnect requires matching client/API |
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.26.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,30 @@ 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
+ From 2.26.0, `cairn team connect` plans an additive project-local connection,
195
+ `cairn team doctor --client` checks authenticated metadata, and `disconnect`
196
+ supports drift-aware recovery. Both client and team API must be 2.26 or newer.
197
+ These commands do not enroll users or enable sharing automatically. See the
198
+ [guided recipe](../team-onboarding.md#guided-connection-226-or-newer).
199
+
200
+ Authority is rechecked per request. Backup/restore validates integrity and
201
+ revokes restored credentials; retention is manual, and logical deletion is not
202
+ physical erasure. Feature/profile changes require restarting the bridge;
203
+ revocation and membership changes take effect on existing clients.
204
+ Removing the MCP entry or disabling its service stops team access without
205
+ changing personal memory. Uninstall retains the separate store.
206
+ Read [the reference](../team.md), [L29](lessons/L29-team-continuity.md) and its
207
+ [V29 rehearsal brief](video-scripts/V29-team-continuity.md).
208
+ The governed internal review and approved isolated native pilot are complete;
209
+ neither substitutes for independent production review and a deployment-specific
210
+ approved real-data pilot. This is a bounded experimental preview, not general
211
+ 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.26.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.26.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.26.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.26.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.26.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.26.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.26.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.26.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.26.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.26.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.26.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.26.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.26.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.26.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.26.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.26.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.26.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.26.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.
@@ -80,6 +80,10 @@ node mcp-memory-server/scripts/smoke-note-mcp.mjs --fixture-security-only
80
80
  node scripts/verify-phase19-runtime-evidence.mjs --self-test
81
81
  ```
82
82
 
83
+ The aggregate serializes fixtures that patch Node's shared filesystem hooks.
84
+ Read the [provider data-flow review](../../provider-data-flow-review.md): a
85
+ read-only network tool can still disclose a configured workspace and query.
86
+
83
87
  The baseline rejects unpinned external Actions, `pull_request_target` and
84
88
  workflow-wide write permissions. It also checks the exact preparation/npm/OCI
85
89
  job permission maps, including missing provenance grants and unnecessary write
@@ -0,0 +1,127 @@
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 for manual connection; 2.26.0 or newer
5
+ on both client and team API for guided connection. Node 22.13 or newer for team storage.
6
+ Use a matching source checkout for the executable regression exercises below.
7
+ Installing the released CLI does not enable team sharing.
8
+
9
+ ## Outcome
10
+
11
+ Carry an approved project decision from one client process and working folder
12
+ to another, without exposing personal memory or granting an agent review power.
13
+ Explain the difference between a restrictive MCP profile and server membership.
14
+
15
+ ## Prerequisites
16
+
17
+ Complete L20 and L28. Use only synthetic subjects and disposable local stores.
18
+ Build the matching checkout with `npm --prefix mcp-memory-server ci` followed by
19
+ `npm --prefix mcp-memory-server run build`. Read [Team continuity](../../team.md).
20
+ Do not connect a real organization or reuse a production credential.
21
+ For an explicitly approved native-harness trial, follow the
22
+ [isolated pilot guide](../../team-pilot.md); do not use automated rehearsal as
23
+ a substitute for the human review or release-admission steps.
24
+
25
+ ## Source-checkout rehearsal
26
+
27
+ From the checkout, run the offline controls:
28
+
29
+ ```sh
30
+ node mcp-memory-server/scripts/smoke-team.mjs
31
+ node mcp-memory-server/scripts/smoke-team-review.mjs
32
+ node mcp-memory-server/scripts/smoke-team-http.mjs
33
+ node mcp-memory-server/scripts/smoke-team-mcp.mjs
34
+ node mcp-memory-server/scripts/smoke-team-restore.mjs
35
+ node mcp-memory-server/scripts/smoke-team-cli.mjs
36
+ node mcp-memory-server/scripts/smoke-team-onboarding.mjs
37
+ ```
38
+
39
+ These create disposable local fixtures and an authenticated loopback service,
40
+ invoke actual stdio MCP clients, then clean their generated directories.
41
+ No model, personal store, external API or corporate system is used. The MCP
42
+ control changes client identity/cwd and retrieves the same approved decision;
43
+ it does not infer authority from the working folder or a display name.
44
+
45
+ Use the [role-based handoff](../../team-onboarding.md) to separate operator,
46
+ reader/contributor and human-reviewer tasks. Its executable reader check uses
47
+ the original 2.25.0 CLI or newer. The 2.26.0 guided connection exercise below is
48
+ still opt-in, not automatic enrollment or deployment. Complete
49
+ the readiness checklist with missing decisions marked pending; do not enroll
50
+ real users or introduce real data during this exercise.
51
+
52
+ ## Guided client exercise (2.26 or newer)
53
+
54
+ Use the [guided connection recipe](../../team-onboarding.md#guided-connection-next-release--matching-source-checkout)
55
+ with a disposable project and the operator's synthetic workload-reader file.
56
+ Run `cairn team connect` once without `--apply`: inspect its selected project,
57
+ read-only profile and additional harness files. Confirm that personal/unrelated
58
+ MCP entries remain present. Explicitly apply, then run
59
+ `cairn team doctor --client --project-root PATH`. Explain the reported credential
60
+ expiry/roles and why no memory text is needed to check project access.
61
+
62
+ Move to another folder: the saved connection still names the explicit team
63
+ project. Try an unrelated project and a revoked credential; both must fail.
64
+ Compare a disconnect plan with `disconnect --apply --yes`: tokens/backups stay,
65
+ only owned unchanged entries disappear. Existing sessions require restart or
66
+ server-side revocation; removing local config is not offboarding.
67
+
68
+ The onboarding regression uses two workload identities and four generated
69
+ adapter configurations, actual MCP reads from different folders, a synthetic
70
+ review-policy fixture, interrupted activation/recovery and competing writers.
71
+ It does not claim two independent humans, a real user approval, every native
72
+ harness UI or an LLM quality advantage. No paid model is used. Keep the lesson
73
+ Brief until the release-verified learner lab is independently rehearsed.
74
+
75
+ Trace the lifecycle beside the operator commands in the reference:
76
+
77
+ ```text
78
+ selected text → immutable proposal → different human reviews exact digest
79
+ → approved revision → authorized readers across client sessions
80
+ ```
81
+
82
+ Stop at each negative control: unapproved proposal invisible to readers;
83
+ self/workload review denied; stale policy/base conflicts; unrelated project
84
+ denied; revoked credential blocked; restore refuses a live target and revokes
85
+ all copied credentials. A confirmed value hash is not evidence of human consent.
86
+
87
+ For project offboarding, use:
88
+
89
+ ```sh
90
+ cairn team member remove SUBJECT --project ID --data DIR
91
+ ```
92
+
93
+ Verify that a connected client immediately loses access while the subject's
94
+ other project memberships still work. Re-enroll with `member set` and
95
+ an explicit nonempty `--roles` list; revoke credentials separately when needed.
96
+
97
+ ## Acceptance criteria
98
+
99
+ - Two independent stdio clients retrieve identical approved text and provenance.
100
+ - Personal memory is untouched, and failed team retrieval never changes scope.
101
+ - Reader profiles contain observations only; proposal creation requires consent.
102
+ - Human review is absent from the MCP catalog and cannot be performed by workload tokens.
103
+ - Role changes and offboarding apply to already-connected clients.
104
+ - Backup verifies digests and audit links; restored data needs fresh credentials.
105
+ - CLI administration returns to the shell; credentials are never printed.
106
+ - Temporary restore remnants are reported, never silently deleted or activated.
107
+ - Independent production review and a deployment's approved real-data pilot are
108
+ separate from the completed internal review and isolated native pilot.
109
+
110
+ ## Privacy and trust boundary
111
+
112
+ Proposals and snapshots contain selected shared text and identities. Keep them
113
+ private and encrypted by the surrounding storage/backup system. Roles do not
114
+ make retrieved text executable authority. The OS owner administers membership
115
+ and can rewrite the local database; hash links are not independent signatures.
116
+ Team search is deterministic substring matching with no provider request.
117
+ Personal-memory embedding and reranking settings do not apply to team search.
118
+ This token-first JSON API plus local stdio bridge is not OAuth remote MCP HTTP.
119
+
120
+ ## Recovery
121
+
122
+ The controls clean only their own temporary fixtures. For manual rehearsal,
123
+ stop the disposable service, verify the exact generated paths and remove only
124
+ that lab. Never run a purge against a real store for a recording. Logical key
125
+ deletion does not erase old backup copies or guarantee physical erasure.
126
+ Restoring a real service, enrolling users and publishing a release need separate
127
+ admission evidence; passing this rehearsal does not supply it.
@@ -19,6 +19,10 @@
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.
24
+ Version 2.26.0 adds guided additive connection, client
25
+ diagnostics and disconnect/recovery exercises; no production enrollment.
22
26
 
23
27
  All modules are optional. The track is complete when the operator can add and
24
28
  remove each integration without breaking the standalone local workflow and can
@@ -60,6 +60,10 @@ npm --prefix mcp-memory-server run check:http-guard
60
60
  Highlight full-SHA action pins, CodeQL, dependency review, token non-leakage,
61
61
  portable Windows/POSIX path cases, and the HTTP 413 test. Do not show repository
62
62
  secrets or live security-alert details.
63
+ Explain that a passing retry is not a root-cause fix: the aggregate now
64
+ serializes filesystem-hook fixtures without weakening read/growth assertions.
65
+ Use the [provider flow review](../../provider-data-flow-review.md) to distinguish
66
+ an intentional workspace/query disclosure from arbitrary-file upload.
63
67
 
64
68
  Include the offline pointer-lock control in a source checkout:
65
69
  `node mcp-memory-server/scripts/smoke-context-pack-lock.mjs`. It reproduces