@cairnkeep/cli 2.25.0 → 2.27.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 +64 -0
- package/docs/README.md +6 -0
- package/docs/harness-compatibility.md +5 -2
- package/docs/learning/CURRICULUM-MAP.md +3 -3
- package/docs/learning/FEATURE-GUIDE.md +13 -1
- 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/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 +5 -1
- package/docs/learning/lessons/L29-team-continuity.md +42 -1
- package/docs/learning/tracks/operator.md +5 -0
- package/docs/learning/video-scripts/V28-security-assurance.md +4 -0
- package/docs/learning/video-scripts/V29-team-continuity.md +29 -1
- package/docs/operating.md +10 -0
- package/docs/privacy-and-data-flow.md +30 -1
- package/docs/provider-data-flow-review.md +48 -0
- package/docs/releasing.md +6 -0
- package/docs/security-assurance.md +11 -0
- package/docs/storage.md +23 -0
- package/docs/team-onboarding.md +230 -0
- package/docs/team-operations.md +127 -0
- package/docs/team-pilot.md +2 -0
- package/docs/team.md +21 -4
- package/examples/eval/bundled-fake.json +1 -1
- package/mcp-memory-server/dist/capability-config.js +12 -1
- package/mcp-memory-server/dist/team-audit.js +41 -0
- package/mcp-memory-server/dist/team-cli.js +81 -30
- package/mcp-memory-server/dist/team-client.js +71 -0
- package/mcp-memory-server/dist/team-errors.js +7 -0
- package/mcp-memory-server/dist/team-files.js +28 -0
- package/mcp-memory-server/dist/team-mcp.js +12 -4
- package/mcp-memory-server/dist/team-pages.js +40 -0
- package/mcp-memory-server/dist/team-store.js +105 -40
- package/mcp-memory-server/package.json +2 -2
- package/package.json +1 -1
- package/scripts/cairn-cli.mjs +6 -1
- package/scripts/completion.sh +16 -3
- package/scripts/lib/team-retention.mjs +1 -1
- package/scripts/team-connect.mjs +366 -0
- package/scripts/test-ci-sharding.sh +6 -1
- package/scripts/test-codeql-cohort.mjs +35 -0
- package/scripts/test-completion.sh +7 -1
- package/scripts/test-package-install.sh +1 -0
- package/scripts/test-phase18-capability-lifecycle.sh +2 -2
- package/scripts/test-release-cache.mjs +16 -0
- package/scripts/test-security-baseline.sh +4 -0
- package/scripts/test-smoke-timings.mjs +19 -0
- package/scripts/test-team-docs.sh +26 -2
- package/scripts/test-team-installed.mjs +62 -0
- package/scripts/test-team-lab-env.mjs +9 -0
- package/scripts/test-team-operations.mjs +31 -0
- package/scripts/test-team-operations.sh +5 -0
- package/scripts/test-team-pilot.mjs +43 -1
- package/scripts/verify-published-release.mjs +11 -2
- package/scripts/verify-security-baseline.mjs +20 -0
- package/scripts/windows-platform.mjs +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,70 @@ All notable user-facing changes are documented here. This project follows
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [2.27.0] - 2026-10-26
|
|
9
|
+
|
|
10
|
+
### Team operations
|
|
11
|
+
|
|
12
|
+
- Add opt-in bounded paging to team listings with authenticated,
|
|
13
|
+
credential/project/filter/policy/view-bound cursors and unchanged legacy arrays.
|
|
14
|
+
- Add payload-free capacity diagnostics, metadata-only audit export/verification
|
|
15
|
+
and backup-bound, exact-digest archival. Default to a no-write plan; explicit
|
|
16
|
+
apply atomically retains a chain checkpoint and frees the active audit prefix.
|
|
17
|
+
Retain external archives/backups; do not enable automatic retention or sharing.
|
|
18
|
+
- Keep existing team stores/snapshots at v1 until explicit archival; compacted
|
|
19
|
+
stores use v2 and require the new server/admin binary. Restore revokes copied
|
|
20
|
+
credentials. Document offline operation and old-format rollback requirements.
|
|
21
|
+
- Add disposable cross-process continuity endurance and adversarial/installed
|
|
22
|
+
package controls. Update operating/privacy/storage and learning/video briefs;
|
|
23
|
+
no new recording, independent-human trial or production admission is claimed.
|
|
24
|
+
|
|
25
|
+
### Release maintenance
|
|
26
|
+
|
|
27
|
+
- Use fresh process-scoped npm verification metadata/cache without weakening
|
|
28
|
+
signature, provenance or exact-byte checks. Record per-contract smoke timings
|
|
29
|
+
and rebalance complete Windows shards using measured hosted durations.
|
|
30
|
+
|
|
31
|
+
## [2.26.0] - 2026-10-26
|
|
32
|
+
|
|
33
|
+
### Guided team onboarding
|
|
34
|
+
|
|
35
|
+
- Add opt-in `cairn team connect` with terminal harness selectors, a no-write
|
|
36
|
+
plan, explicit apply/confirmation and a read-only default. Add a dedicated
|
|
37
|
+
project-local MCP entry for Claude Code, OpenCode, Qwen Code or Codex without
|
|
38
|
+
replacing personal/unrelated MCPs. Store only private token-file references;
|
|
39
|
+
pin the bridge to one explicit server project.
|
|
40
|
+
- Add `cairn team doctor --client` with authenticated, metadata-only project
|
|
41
|
+
diagnostics; no local admin store or memory payload. Add drift-aware
|
|
42
|
+
`disconnect`, private recoverable backups, serialized writers and a committed
|
|
43
|
+
activation record so interrupted multi-file connections stay inactive.
|
|
44
|
+
- Add synthetic two-identity, adapter/cwd continuity, denied self-publication,
|
|
45
|
+
revocation and interrupted-recovery controls, plus actual installed-package
|
|
46
|
+
onboarding checks. Update completions, storage/privacy and learning/video
|
|
47
|
+
briefs. No new dependency, automatic enrollment or production admission.
|
|
48
|
+
|
|
49
|
+
### Verification
|
|
50
|
+
|
|
51
|
+
- Keep all CodeQL actions on one reviewed commit and group their dependency
|
|
52
|
+
updates; reject split or unpinned cohorts with mutation controls. Refresh
|
|
53
|
+
pinned CodeQL, Scorecard and release artifact-download actions.
|
|
54
|
+
- Retry bounded capability-lock acquisition when the previous writer removes
|
|
55
|
+
the lock between contention and inspection. Keep other inspection failures
|
|
56
|
+
denied and add a deterministic disappearance regression; preserve concurrent
|
|
57
|
+
child diagnostics on lifecycle-test failure.
|
|
58
|
+
|
|
59
|
+
- Serialize asynchronous security fixtures that patch shared filesystem
|
|
60
|
+
built-ins, with an aggregate hook-ownership/restoration regression. Preserve
|
|
61
|
+
runtime read guards and all actual replacement/growth injection assertions.
|
|
62
|
+
- Add real MCP coverage and a review of file-derived provider workspace flows;
|
|
63
|
+
verify destination, credential and selected-content boundaries without
|
|
64
|
+
suppressing static-analysis findings.
|
|
65
|
+
|
|
66
|
+
### Documentation
|
|
67
|
+
|
|
68
|
+
- Add role-based team-preview onboarding, a tested reader connection card and
|
|
69
|
+
deployment-readiness checklist; align the reference, pilot, lesson and video
|
|
70
|
+
brief without enabling sharing or changing the released CLI.
|
|
71
|
+
|
|
8
72
|
## [2.25.0] - 2026-10-24
|
|
9
73
|
|
|
10
74
|
### Team continuity preview
|
package/docs/README.md
CHANGED
|
@@ -76,10 +76,16 @@ linked guides rather than the project landing page.
|
|
|
76
76
|
|
|
77
77
|
## Overlays and teams
|
|
78
78
|
|
|
79
|
+
- [Team operations](team-operations.md): scoped paging, capacity, explicit
|
|
80
|
+
backup-bound audit archival and synthetic endurance from 2.27.0. Availability
|
|
81
|
+
is not permission to enable sharing.
|
|
82
|
+
|
|
79
83
|
- [Team continuity preview](team.md) documents the default-off, separately
|
|
80
84
|
authenticated shared-memory store, human review, local MCP bridge and recovery.
|
|
81
85
|
It ships as an opt-in experimental preview from 2.25.0, not general production admission. The
|
|
82
86
|
[isolated pilot guide](team-pilot.md) keeps trials separate from personal memory.
|
|
87
|
+
[Role-based onboarding](team-onboarding.md) adds a tested reader check and
|
|
88
|
+
the deployment decisions to resolve before any real-data pilot.
|
|
83
89
|
- [Building an overlay](building-an-overlay.md) explains how to add private
|
|
84
90
|
provider or organization policy without forking the core.
|
|
85
91
|
- [Managed overlay distributions](overlay-distributions.md) covers wrapper CLIs,
|
|
@@ -357,8 +357,11 @@ itself is not enough to claim Cairnkeep support.
|
|
|
357
357
|
## Optional team bridge (opt-in 2.25 preview)
|
|
358
358
|
|
|
359
359
|
[Team continuity](team.md) adds an additional generic local stdio MCP:
|
|
360
|
-
`cairn team mcp`. It does not replace `cairn-memory
|
|
361
|
-
|
|
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;
|
|
362
365
|
the same credentials/project IDs work regardless of the starting cwd.
|
|
363
366
|
Configure private file-based credentials and the separate JSON API URL in the
|
|
364
367
|
client environment. Human reviewer credentials must not enter the agent's
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Curriculum Coverage Map
|
|
2
2
|
|
|
3
|
-
**Baseline:** Cairnkeep 2.
|
|
4
|
-
**Last reviewed:** 2026-10-
|
|
3
|
+
**Baseline:** Cairnkeep 2.27.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
|
|
@@ -99,7 +99,7 @@ against `cairn help` so a new command cannot bypass a curriculum decision.
|
|
|
99
99
|
| `cairn sync-omp` | L02 |
|
|
100
100
|
| `cairn doctor` | L03; advanced repair in L13-L14 |
|
|
101
101
|
| `cairn security` | L28 |
|
|
102
|
-
| `cairn team` | L29 opt-in preview, included from 2.25.0 |
|
|
102
|
+
| `cairn team` | L29 opt-in preview, included from 2.25.0; next-release guided connect/client doctor/disconnect requires matching client/API |
|
|
103
103
|
| `cairn playbook` | L25 |
|
|
104
104
|
| `cairn trajectory` | L13 |
|
|
105
105
|
| `cairn artifact` | L13 |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Cairnkeep feature guide
|
|
2
2
|
|
|
3
|
-
**Baseline:** Cairnkeep 2.
|
|
3
|
+
**Baseline:** Cairnkeep 2.27.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
|
|
@@ -191,6 +191,18 @@ human-only review and an additional local stdio MCP bridge. It never scans
|
|
|
191
191
|
personal memory or automatically installs a harness entry. Serving requires
|
|
192
192
|
separate HTTP consent; this JSON API is not OAuth remote MCP HTTP.
|
|
193
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
|
+
From 2.27.0, [team operations](../team-operations.md) adds optional authenticated
|
|
201
|
+
paging, capacity diagnostics and offline, backup-bound audit archival. Upgrade
|
|
202
|
+
client/API/admin binaries together. Archival defaults to a no-write plan and
|
|
203
|
+
requires exact-digest apply; it alone upgrades the separate team store to v2.
|
|
204
|
+
Keep every archive and backup. Installation never compacts or activates a team.
|
|
205
|
+
|
|
194
206
|
Authority is rechecked per request. Backup/restore validates integrity and
|
|
195
207
|
revokes restored credentials; retention is manual, and logical deletion is not
|
|
196
208
|
physical erasure. Feature/profile changes require restarting the bridge;
|
|
@@ -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.27.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.27.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.27.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.27.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.27.0
|
|
51
51
|
cairn --version
|
|
52
52
|
```
|
|
53
53
|
|
|
@@ -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.27.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.27.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.27.0 and Node.js 22 or newer
|
|
5
5
|
|
|
6
6
|
## Outcome
|
|
7
7
|
|
|
@@ -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
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
# L29 - Reviewed team continuity preview
|
|
2
2
|
|
|
3
3
|
**Status:** Brief; opt-in experimental preview in Cairnkeep 2.25.0
|
|
4
|
-
**Compatibility:** Cairnkeep 2.25.0 or newer;
|
|
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; 2.27.0 or newer client/API/admin
|
|
6
|
+
for operations. Node 22.13 or newer for team storage.
|
|
5
7
|
Use a matching source checkout for the executable regression exercises below.
|
|
6
8
|
Installing the released CLI does not enable team sharing.
|
|
7
9
|
|
|
@@ -32,6 +34,7 @@ node mcp-memory-server/scripts/smoke-team-http.mjs
|
|
|
32
34
|
node mcp-memory-server/scripts/smoke-team-mcp.mjs
|
|
33
35
|
node mcp-memory-server/scripts/smoke-team-restore.mjs
|
|
34
36
|
node mcp-memory-server/scripts/smoke-team-cli.mjs
|
|
37
|
+
node mcp-memory-server/scripts/smoke-team-onboarding.mjs
|
|
35
38
|
```
|
|
36
39
|
|
|
37
40
|
These create disposable local fixtures and an authenticated loopback service,
|
|
@@ -40,6 +43,44 @@ No model, personal store, external API or corporate system is used. The MCP
|
|
|
40
43
|
control changes client identity/cwd and retrieves the same approved decision;
|
|
41
44
|
it does not infer authority from the working folder or a display name.
|
|
42
45
|
|
|
46
|
+
Use the [role-based handoff](../../team-onboarding.md) to separate operator,
|
|
47
|
+
reader/contributor and human-reviewer tasks. Its executable reader check uses
|
|
48
|
+
the original 2.25.0 CLI or newer. The 2.26.0 guided connection exercise below is
|
|
49
|
+
still opt-in, not automatic enrollment or deployment. Complete
|
|
50
|
+
the readiness checklist with missing decisions marked pending; do not enroll
|
|
51
|
+
real users or introduce real data during this exercise.
|
|
52
|
+
|
|
53
|
+
## Guided client exercise (2.26 or newer)
|
|
54
|
+
|
|
55
|
+
The separate [operations exercise](../../team-operations.md) requires
|
|
56
|
+
2.27.0 or newer client/API/admin binaries. Practice paging, capacity,
|
|
57
|
+
read-only backup, metadata export, no-write archive plan, exact apply and fresh
|
|
58
|
+
v2 restore only in a disposable lab. Keep archive files/private backups, explain
|
|
59
|
+
old-server rollback requirements, and distinguish active suffix integrity from
|
|
60
|
+
complete retained history. The longer two-process endurance run is synthetic
|
|
61
|
+
transport/policy evidence, not independent human review or native UI validation.
|
|
62
|
+
|
|
63
|
+
Use the [guided connection recipe](../../team-onboarding.md#guided-connection-next-release--matching-source-checkout)
|
|
64
|
+
with a disposable project and the operator's synthetic workload-reader file.
|
|
65
|
+
Run `cairn team connect` once without `--apply`: inspect its selected project,
|
|
66
|
+
read-only profile and additional harness files. Confirm that personal/unrelated
|
|
67
|
+
MCP entries remain present. Explicitly apply, then run
|
|
68
|
+
`cairn team doctor --client --project-root PATH`. Explain the reported credential
|
|
69
|
+
expiry/roles and why no memory text is needed to check project access.
|
|
70
|
+
|
|
71
|
+
Move to another folder: the saved connection still names the explicit team
|
|
72
|
+
project. Try an unrelated project and a revoked credential; both must fail.
|
|
73
|
+
Compare a disconnect plan with `disconnect --apply --yes`: tokens/backups stay,
|
|
74
|
+
only owned unchanged entries disappear. Existing sessions require restart or
|
|
75
|
+
server-side revocation; removing local config is not offboarding.
|
|
76
|
+
|
|
77
|
+
The onboarding regression uses two workload identities and four generated
|
|
78
|
+
adapter configurations, actual MCP reads from different folders, a synthetic
|
|
79
|
+
review-policy fixture, interrupted activation/recovery and competing writers.
|
|
80
|
+
It does not claim two independent humans, a real user approval, every native
|
|
81
|
+
harness UI or an LLM quality advantage. No paid model is used. Keep the lesson
|
|
82
|
+
Brief until the release-verified learner lab is independently rehearsed.
|
|
83
|
+
|
|
43
84
|
Trace the lifecycle beside the operator commands in the reference:
|
|
44
85
|
|
|
45
86
|
```text
|
|
@@ -21,6 +21,11 @@
|
|
|
21
21
|
15. [L28 - Verify Cairnkeep's security posture](../lessons/L28-security-assurance.md)
|
|
22
22
|
16. Optional 2.25 preview: [L29 - Reviewed team continuity](../lessons/L29-team-continuity.md).
|
|
23
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.
|
|
26
|
+
Version 2.27.0 adds optional paging, capacity and explicit offline audit
|
|
27
|
+
archival. Rehearse only in a disposable lab; retain backups and stop older
|
|
28
|
+
writers before the explicit v2 store-format change.
|
|
24
29
|
|
|
25
30
|
All modules are optional. The track is complete when the operator can add and
|
|
26
31
|
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
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# V29 - Remember together without sharing everything
|
|
2
2
|
|
|
3
|
-
Status: technical rehearsal brief for
|
|
3
|
+
Status: technical rehearsal brief for Cairnkeep 2.27.0 operations and guided
|
|
4
|
+
onboarding to the opt-in preview introduced in 2.25.0. Not a recorded or
|
|
5
|
+
independently rehearsed lesson.
|
|
4
6
|
Target: 10–12 minutes, experienced-developer audience. Describe a released
|
|
5
7
|
experimental preview, not a generally production-admitted team service.
|
|
6
8
|
Use the [isolated pilot guide](../../team-pilot.md) for a separately authorized
|
|
@@ -20,6 +22,10 @@ Use a disposable source checkout and only synthetic fixtures. Show
|
|
|
20
22
|
`docs/team.md`; highlight that a reviewer token is human-only and is never
|
|
21
23
|
handed to the agent. Briefly show initialization/membership command forms,
|
|
22
24
|
with no token contents on screen. The server is loopback-only.
|
|
25
|
+
Use the [role-based handoff](../../team-onboarding.md) connection card to show
|
|
26
|
+
which steps belong to the operator, reader and human reviewer. Run its actual
|
|
27
|
+
reader check in the disposable lab; never film a credential or replace the
|
|
28
|
+
personal memory entry. Keep a pause on the pending deployment decisions.
|
|
23
29
|
|
|
24
30
|
## 3:30–6:00 — Make the boundary visible
|
|
25
31
|
|
|
@@ -47,6 +53,19 @@ on “restored credentials revoked”: copying a backup must not silently restor
|
|
|
47
53
|
access. Show fresh-only restore, no-overwrite and uninstall-retention controls.
|
|
48
54
|
Explain that logical deletion is not secure disk erasure or backup deletion.
|
|
49
55
|
|
|
56
|
+
With a matching 2.26.0-or-newer client and team API, insert a short dynamic client segment:
|
|
57
|
+
open the harness checkboxes in `team connect`, pause on the no-write plan and
|
|
58
|
+
read-only default, then explicitly apply in a disposable project. Keep the
|
|
59
|
+
personal MCP entry visible beside the new team entry. Run `team doctor --client`
|
|
60
|
+
and zoom into expiry/project/roles, never the token file or original-config
|
|
61
|
+
backup. Switch folders, show the pinned project, then plan/apply disconnect.
|
|
62
|
+
Explain that disconnect is not revocation and running sessions need a restart.
|
|
63
|
+
Use the maintained `smoke-team-onboarding.mjs` results for interruption/drift
|
|
64
|
+
controls, not a fabricated typing transcript. The automated human-class policy
|
|
65
|
+
fixture is not actual human consent; no independent-human trial is claimed.
|
|
66
|
+
Do not record this addition against a 2.25-only client/API; follow the version
|
|
67
|
+
note in the onboarding guide and verify the published package before recording.
|
|
68
|
+
|
|
50
69
|
## 10:00–11:30 — Honest closing
|
|
51
70
|
|
|
52
71
|
End on the admission checklist in `docs/team.md`, not a production deployment.
|
|
@@ -59,6 +78,15 @@ remote MCP. Call out OIDC, team packs and multi-organization tenancy as deferred
|
|
|
59
78
|
|
|
60
79
|
## Recording contract
|
|
61
80
|
|
|
81
|
+
For an operations supplement on 2.27.0 or newer client/API/admin binaries, use the
|
|
82
|
+
[operations recipe](../../team-operations.md). Show the capacity counters,
|
|
83
|
+
optional page envelope and stale-cursor refusal, then a stopped disposable
|
|
84
|
+
service, read-only backup, audit export, no-write archive plan and exact apply.
|
|
85
|
+
Pause on “older server binaries cannot reopen v2”; keep all backups and tokens
|
|
86
|
+
off screen. Show the synthetic endurance counts without claiming real human
|
|
87
|
+
consent, native-harness UI coverage or a quality benchmark. Do not record these
|
|
88
|
+
commands against an older CLI/API; this remains a rehearsal brief.
|
|
89
|
+
|
|
62
90
|
Use legible real terminals, short scene changes, natural pauses and emphasis
|
|
63
91
|
around each changed authority boundary. Keep credentials, personal memory,
|
|
64
92
|
source excerpts from private projects and raw snapshot text off screen.
|
package/docs/operating.md
CHANGED
|
@@ -1550,6 +1550,16 @@ project memory. It is default off (`CAIRN_TEAM=1` required); serving also needs
|
|
|
1550
1550
|
`CAIRN_TEAM_HTTP=1`. It does not change ordinary setup or existing MCP entries.
|
|
1551
1551
|
Use [the team reference](team.md) for roles, private credentials, additional
|
|
1552
1552
|
local stdio registration, human review, backup/restore and incident handling.
|
|
1553
|
+
The 2.26.0 guided client workflow is documented in
|
|
1554
|
+
[team onboarding](team-onboarding.md#guided-connection-next-release--matching-source-checkout):
|
|
1555
|
+
`team connect` plans before explicit apply, `team doctor --client` checks only
|
|
1556
|
+
authenticated project/credential metadata, and `team disconnect` preserves
|
|
1557
|
+
personal memory and credentials. Both client and team API must support 2.26's
|
|
1558
|
+
connection check. No ordinary setup or production sharing is enabled implicitly.
|
|
1559
|
+
From 2.27.0, [team operations](team-operations.md) covers optional paging,
|
|
1560
|
+
capacity and offline, backup-bound audit archival. Keep matching client/API/admin
|
|
1561
|
+
binaries, stop older writers and retain all archives/backups. The no-write plan
|
|
1562
|
+
does not change a store; only explicit exact-digest apply upgrades it to v2.
|
|
1553
1563
|
The internal governed review and approved isolated native pilot are complete;
|
|
1554
1564
|
independent production review and a deployment-specific approved real-data pilot
|
|
1555
1565
|
are still required before using real organization data.
|
|
@@ -14,7 +14,7 @@ below (some operator-owned endpoints do not require a credential).
|
|
|
14
14
|
| Embedding-ranked search | Stored memory values that are not cached, plus the search query | `CAIRN_MEMORY_EMBEDDING_URL` or `CAIRN_LLM_API_URL` |
|
|
15
15
|
| Separately opted-in memory reranking | Query and at most 50 scope/current/filter-admitted key/value excerpts, each at most 4 KiB | Only the explicit `CAIRN_MEMORY_RERANK_URL`; separate optional credential, no retries/redirects/alternate hosts |
|
|
16
16
|
| `memory_extract` | The transcript supplied to the tool | `CAIRN_LLM_API_URL` |
|
|
17
|
-
| `domain_knowledge_query` | Workspace
|
|
17
|
+
| `domain_knowledge_query` | Workspace identifier and query | Configured domain provider: `ANYTHINGLLM_BASE_URL`, or separately enabled `CAIRN_OPENVIKING_BASE_URL` |
|
|
18
18
|
| `domain_knowledge_sync` | Files selected by the sync configuration | `ANYTHINGLLM_BASE_URL` |
|
|
19
19
|
| `route_check` | A health request, with no memory or prompt content | `CAIRN_ROUTE_ENDPOINT` |
|
|
20
20
|
| `context_explore` | Repository path and query are passed to the configured local executable | `CAIRN_EXPLORE_BINARY`; any further data flow is controlled by that tool |
|
|
@@ -57,6 +57,14 @@ it does not require or inherit `CAIRN_LLM_API_KEY`. A local provider is still a
|
|
|
57
57
|
separate process that receives these excerpts. Neither a chat agent nor a
|
|
58
58
|
research assistant is part of reranking or authorization.
|
|
59
59
|
|
|
60
|
+
## Domain retrieval configuration
|
|
61
|
+
|
|
62
|
+
Domain queries may derive a workspace identifier from local configuration;
|
|
63
|
+
that identifier is intentionally disclosed to the chosen provider. This does
|
|
64
|
+
not upload the configuration file or other local documents. See the
|
|
65
|
+
[provider data-flow review](provider-data-flow-review.md) for the exact tested
|
|
66
|
+
boundary and its limitations.
|
|
67
|
+
|
|
60
68
|
## Playbook decision and receipt flow
|
|
61
69
|
|
|
62
70
|
Playbooks are local workflow policy, not model inference. A check reads the
|
|
@@ -704,6 +712,15 @@ they do not authenticate a publisher or make extracted statements true.
|
|
|
704
712
|
|
|
705
713
|
## Team preview flow and isolation
|
|
706
714
|
|
|
715
|
+
The 2.27.0 [operations workflow](team-operations.md) adds only explicit
|
|
716
|
+
local audit export/archival, not automatic collection, sharing or deletion.
|
|
717
|
+
Audit exports contain activity/subject metadata and digests, not selected memory
|
|
718
|
+
values or bearer tokens; keep them private. Full backups still contain selected
|
|
719
|
+
team values and credential hashes. Doctor verifies active history from a stored
|
|
720
|
+
checkpoint, not unseen external archive retention. Digests are integrity checks,
|
|
721
|
+
not publisher authentication or secure erasure. Optional cursors are bound to
|
|
722
|
+
credentials and the visible query view; every page still checks current access.
|
|
723
|
+
|
|
707
724
|
The default-off [team preview](team.md) reads no personal memory automatically.
|
|
708
725
|
Only explicitly supplied, inspected text becomes an immutable project proposal;
|
|
709
726
|
only review by a different human credential publishes a shared revision.
|
|
@@ -720,3 +737,15 @@ tokens. Backups include shared proposals and memberships and need separate
|
|
|
720
737
|
encryption and access control. No unapproved personal content is discoverable.
|
|
721
738
|
A hash confirmation does not establish human consent or content truth.
|
|
722
739
|
Review and production admission remain separate operator responsibilities.
|
|
740
|
+
|
|
741
|
+
The opt-in guided connection workflow stores endpoint/org/project IDs and a
|
|
742
|
+
credential **file path**, never the credential bytes, in private client state.
|
|
743
|
+
Its project-local MCP entry references that connection file; personal/global
|
|
744
|
+
MCP configuration is not replaced. Private recovery snapshots copy the original
|
|
745
|
+
harness configuration and may therefore contain preexisting operator secrets;
|
|
746
|
+
keep them out of source control and protect/encrypt backups separately.
|
|
747
|
+
Client doctor's authenticated metadata probe discloses the chosen project ID
|
|
748
|
+
to the configured service and returns only subject, roles and credential
|
|
749
|
+
ID/class/expiry. It neither reads memory text nor sends data to model providers.
|
|
750
|
+
It appends a normal value-free service audit event. Disconnect retains backups
|
|
751
|
+
and tokens and is not server-side revocation. See [onboarding](team-onboarding.md).
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Domain retrieval data-flow review
|
|
2
|
+
|
|
3
|
+
The `js/file-access-to-http` findings in `domain-retrieval-provider.ts` trace
|
|
4
|
+
the default workspace from the local memory configuration through
|
|
5
|
+
`domain_knowledge_query` to the configured provider. The source is the
|
|
6
|
+
`anythingllm_workspaces` field, not arbitrary document contents or stored memory.
|
|
7
|
+
|
|
8
|
+
This is an intentional disclosure boundary, not evidence of no disclosure:
|
|
9
|
+
the configured workspace identifier and the selected query leave the process.
|
|
10
|
+
Only configure a provider trusted to receive both. A read-only MCP annotation
|
|
11
|
+
means the tool does not mutate Cairnkeep state; it does **not** mean no network
|
|
12
|
+
traffic. The tool's open-world annotation reflects this boundary.
|
|
13
|
+
|
|
14
|
+
## Boundaries checked
|
|
15
|
+
|
|
16
|
+
- Provider origin and authentication come from operator environment settings,
|
|
17
|
+
not workspace values or unrelated keys in a memory configuration file.
|
|
18
|
+
- The default provider percent-encodes the workspace as one path segment. A
|
|
19
|
+
workspace that resembles a URL cannot select another origin or add headers.
|
|
20
|
+
- The optional resource provider uses its fixed read-only endpoint, scopes
|
|
21
|
+
target identifiers below resources and rejects decoded traversal segments.
|
|
22
|
+
It requires explicit feature consent and separate remote-HTTP consent.
|
|
23
|
+
- Neither request path reads, enumerates or uploads local documents. The
|
|
24
|
+
query tool is separate from explicitly approved document synchronization.
|
|
25
|
+
- Both providers refuse redirects, bound responses and sanitize failures.
|
|
26
|
+
Do not weaken these controls to make a static-analysis finding disappear.
|
|
27
|
+
|
|
28
|
+
`smoke-provider-config-flow.mjs` exercises the actual stdio MCP configuration
|
|
29
|
+
path for both providers, including a URL-shaped workspace, unrelated file
|
|
30
|
+
sentinels and forged endpoint/credential fields. It asserts the exact selected
|
|
31
|
+
request body, fixed mock origin and operator-supplied authentication. All
|
|
32
|
+
fixtures are synthetic and run against loopback only. Existing outbound tests
|
|
33
|
+
cover redirect denial, consent, response bounds and payload-free failures.
|
|
34
|
+
|
|
35
|
+
## Review disposition and limits
|
|
36
|
+
|
|
37
|
+
The reviewed flows are expected provider-routing disclosures, not a discovered
|
|
38
|
+
arbitrary-file-upload or file-selected-origin vulnerability. The alerts are
|
|
39
|
+
not dismissed or suppressed by this change: retain the finding and this
|
|
40
|
+
rationale for review, and reassess when source fields, destination selection,
|
|
41
|
+
workspace handling or provider behavior changes.
|
|
42
|
+
|
|
43
|
+
This is not a sandbox or a provider-side workspace ACL. A trusted local caller
|
|
44
|
+
can explicitly choose another workspace served by its provider credential;
|
|
45
|
+
the existing shared-token HTTP service is one trusted storage domain. Team
|
|
46
|
+
authorization remains separate, and team retrieval does not use these providers.
|
|
47
|
+
Same-account processes can change operator configuration. Tests establish the
|
|
48
|
+
documented application boundary, not the trustworthiness of a configured host.
|
package/docs/releasing.md
CHANGED
|
@@ -100,6 +100,12 @@ npm supporting registry-signature and provenance verification. Use `--gh PATH`
|
|
|
100
100
|
or `--npm PATH` for explicit tool selection; stale trust data or unsupported
|
|
101
101
|
flags fail closed rather than skipping a check. No runtime dependency is added.
|
|
102
102
|
|
|
103
|
+
The npm verification install and signature audit use a fresh cache inside the
|
|
104
|
+
disposable verification prefix and explicitly request online metadata. Ambient
|
|
105
|
+
offline/prefer-offline settings cannot hide a newly published version behind
|
|
106
|
+
an older cached package listing. This writes no global npm configuration and
|
|
107
|
+
does not relax exact bytes, registry authority, signatures or provenance checks.
|
|
108
|
+
|
|
103
109
|
The tool checks successful maintained CI, security and publication workflows, immutable
|
|
104
110
|
tag/commit/tree binding, retained CI candidate checksums and exact release-asset
|
|
105
111
|
bytes, CycloneDX 1.6, registry bytes/integrity, npm signatures/attestations, both
|