@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.
- package/CHANGELOG.md +51 -0
- package/docs/README.md +4 -0
- package/docs/agents.md +18 -0
- package/docs/containers.md +4 -0
- package/docs/design/team-mode.md +17 -9
- package/docs/harness-compatibility.md +17 -0
- package/docs/learning/CURRICULUM-MAP.md +3 -1
- package/docs/learning/FEATURE-GUIDE.md +34 -1
- package/docs/learning/README.md +5 -3
- package/docs/learning/lessons/L00-why-cairnkeep.md +1 -1
- package/docs/learning/lessons/L01-safe-trial.md +3 -3
- package/docs/learning/lessons/L02-installation.md +2 -2
- package/docs/learning/lessons/L03-first-project.md +1 -1
- package/docs/learning/lessons/L04-memory-fundamentals.md +12 -0
- package/docs/learning/lessons/L19-validated-skill-improvement.md +1 -1
- package/docs/learning/lessons/L20-mcp-tool-profiles.md +1 -1
- package/docs/learning/lessons/L21-context-packs.md +1 -1
- package/docs/learning/lessons/L22-native-windows.md +2 -2
- package/docs/learning/lessons/L23-guided-setup.md +1 -1
- package/docs/learning/lessons/L24-okf-exchange.md +1 -1
- package/docs/learning/lessons/L25-playbooks.md +1 -1
- package/docs/learning/lessons/L26-context-intelligence.md +1 -1
- package/docs/learning/lessons/L27-ecosystem-evidence.md +1 -1
- package/docs/learning/lessons/L28-security-assurance.md +2 -2
- package/docs/learning/lessons/L29-team-continuity.md +95 -0
- package/docs/learning/tracks/operator.md +2 -0
- package/docs/learning/video-scripts/V04-memory-retrieval-supplement.md +13 -0
- package/docs/learning/video-scripts/V29-team-continuity.md +66 -0
- package/docs/mcp-tool-profiles.md +7 -0
- package/docs/memory-retrieval.md +84 -2
- package/docs/operating.md +22 -3
- package/docs/privacy-and-data-flow.md +37 -9
- package/docs/security-assurance.md +28 -0
- package/docs/storage.md +18 -0
- package/docs/team-pilot.md +132 -0
- package/docs/team.md +234 -0
- package/examples/eval/bundled-fake.json +1 -1
- package/mcp-memory-server/dist/index.js +30 -2
- package/mcp-memory-server/dist/mcp-tool-catalog.js +4 -1
- package/mcp-memory-server/dist/memory-reranker.js +109 -0
- package/mcp-memory-server/dist/team-cli.js +218 -0
- package/mcp-memory-server/dist/team-http.js +193 -0
- package/mcp-memory-server/dist/team-mcp.js +82 -0
- package/mcp-memory-server/dist/team-store.js +663 -0
- package/mcp-memory-server/package.json +1 -0
- package/package.json +1 -1
- package/scripts/cairn-cli.mjs +2 -0
- package/scripts/completion.sh +23 -3
- package/scripts/doctor.sh +17 -0
- package/scripts/lib/team-retention.mjs +29 -0
- package/scripts/probe-memory-reranker.mjs +22 -0
- package/scripts/test-ci-sharding.sh +4 -0
- package/scripts/test-completion.sh +8 -0
- package/scripts/test-container-health.mjs +2 -0
- package/scripts/test-container.sh +21 -1
- package/scripts/test-dependency-security.mjs +11 -1
- package/scripts/test-doctor.sh +28 -0
- package/scripts/test-package-install.sh +9 -0
- package/scripts/test-team-docs.sh +52 -0
- package/scripts/test-team-pilot.mjs +59 -0
- package/scripts/test-windows-native.mjs +5 -0
- package/scripts/uninstall.sh +13 -0
- package/scripts/verify-dependency-security.mjs +3 -2
- package/scripts/verify-team-retention.mjs +3 -0
- 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.
|
package/docs/containers.md
CHANGED
|
@@ -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
|
package/docs/design/team-mode.md
CHANGED
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
# Team mode design contract
|
|
2
2
|
|
|
3
|
-
**Status:** design
|
|
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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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
|
-
|
|
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,
|
|
145
|
-
|
|
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.
|
|
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.
|
|
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.
|
package/docs/learning/README.md
CHANGED
|
@@ -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
|
-
|
|
93
|
-
|
|
94
|
-
|
|
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:** 15 minutes
|
|
6
|
-
**Tested with:** Cairnkeep 2.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
50
|
+
npm install --global @cairnkeep/cli@2.25.0
|
|
51
51
|
cairn --version
|
|
52
52
|
```
|
|
53
53
|
|
|
@@ -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:** Operator
|
|
5
5
|
**Time:** 30 minutes
|
|
6
|
-
**Tested with:** Cairnkeep 2.
|
|
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.
|
|
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'
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# L28 - Verify Cairnkeep's security posture
|
|
2
2
|
|
|
3
3
|
**Status:** Ready
|
|
4
|
-
**Tested with:** Cairnkeep 2.
|
|
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.
|
|
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.
|