@cairnkeep/cli 2.7.0 → 2.9.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 +44 -1
- package/README.md +51 -2
- package/bin/cairn +19 -1
- package/docs/context-packs.md +94 -0
- package/docs/design/meta-agent.md +39 -35
- package/docs/harness-compatibility.md +7 -1
- package/docs/learning/CURRICULUM-MAP.md +14 -4
- package/docs/learning/FEATURE-GUIDE.md +11 -4
- package/docs/learning/README.md +8 -2
- 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/L17-agent-boundary.md +12 -8
- package/docs/learning/lessons/L18-local-code-graph.md +97 -0
- package/docs/learning/lessons/L19-validated-skill-improvement.md +118 -0
- package/docs/learning/lessons/L20-mcp-tool-profiles.md +67 -0
- package/docs/learning/lessons/L21-context-packs.md +79 -0
- package/docs/learning/tracks/evidence-and-evaluation.md +5 -3
- package/docs/learning/tracks/operator.md +4 -2
- package/docs/learning/tracks/practitioner.md +5 -4
- package/docs/mcp-tool-profiles.md +43 -0
- package/docs/operating.md +61 -0
- package/docs/privacy-and-data-flow.md +59 -1
- package/docs/skill-improvement.md +124 -0
- package/docs/storage.md +42 -0
- package/examples/eval/bundled-fake.json +1 -1
- package/mcp-memory-server/dist/context-pack-cli.js +185 -0
- package/mcp-memory-server/dist/context-pack.js +830 -0
- package/mcp-memory-server/dist/eval-plan.js +22 -5
- package/mcp-memory-server/dist/eval-process.js +31 -0
- package/mcp-memory-server/dist/eval-report.js +1 -0
- package/mcp-memory-server/dist/eval-runner.js +12 -4
- package/mcp-memory-server/dist/eval-schema.js +2 -1
- package/mcp-memory-server/dist/eval-workspace.js +50 -1
- package/mcp-memory-server/dist/index.js +68 -17
- package/mcp-memory-server/dist/mcp-tool-catalog.js +47 -0
- package/mcp-memory-server/dist/mcp-tool-cli.js +85 -0
- package/mcp-memory-server/dist/mcp-tool-profile.js +162 -0
- package/mcp-memory-server/dist/skill-cli.js +236 -0
- package/mcp-memory-server/dist/skill-evaluation.js +244 -0
- package/mcp-memory-server/dist/skill-schema.js +164 -0
- package/mcp-memory-server/dist/skill-store.js +583 -0
- package/mcp-memory-server/package.json +4 -1
- package/package.json +1 -1
- package/schemas/context-pack.schema.json +33 -0
- package/schemas/eval-report.schema.json +2 -1
- package/schemas/skill-adapter.schema.json +39 -0
- package/schemas/skill-proposal-protocol.schema.json +97 -0
- package/scripts/completion.sh +62 -5
- package/scripts/doctor.sh +39 -0
- package/scripts/test-cli-dispatch.sh +6 -0
- package/scripts/test-completion.sh +16 -0
- package/scripts/test-learning-docs.sh +13 -3
- package/scripts/test-package-install.sh +35 -0
- package/scripts/test-skill-cli.sh +30 -0
- package/scripts/test-uninstall.sh +21 -0
- package/scripts/uninstall.sh +26 -1
- package/templates/env.example.template +11 -0
- package/templates/graph-policy.md.template +3 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,47 @@ All notable user-facing changes are documented here. This project follows
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [2.9.0] - 2026-08-06
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Publish complete, centralized MCP tool annotations and add project-scoped
|
|
13
|
+
`full`, derived `read-only`, and exact custom tool profiles with strict
|
|
14
|
+
environment precedence and canonical provenance digests.
|
|
15
|
+
- Add immutable context-pack manifests, local and commit-pinned Git installs,
|
|
16
|
+
atomic project enablement and confirmed updates, retained object storage,
|
|
17
|
+
integrity diagnostics, and explicit uninstall purge consent.
|
|
18
|
+
- Add read-only context-pack list/search/read tools behind separate local and
|
|
19
|
+
authenticated-HTTP consent gates. Documents include full provenance; skills
|
|
20
|
+
remain invisible until their exact project/pack/path/file digest is approved.
|
|
21
|
+
- Add deterministic Markdown chunking, optional embedding-ranked retrieval with
|
|
22
|
+
offline substring fallback, shell completion, lifecycle tests, operator docs,
|
|
23
|
+
and learning-path exercises.
|
|
24
|
+
|
|
25
|
+
Context packs add no runtime dependency, telemetry, background synchronization,
|
|
26
|
+
publisher-authenticity claim, ACL system, automatic skill activation, or
|
|
27
|
+
provider-specific runtime integration.
|
|
28
|
+
|
|
29
|
+
## [2.8.0] - 2026-08-03
|
|
30
|
+
|
|
31
|
+
### Added
|
|
32
|
+
|
|
33
|
+
- Add `cairn skill harvest|list|show|review|propose|evaluate|apply|rollback`
|
|
34
|
+
for turning recurring hindsight evidence into explicitly reviewed, bounded,
|
|
35
|
+
independently evaluated, reversible skill-file improvements.
|
|
36
|
+
- Add strict proposal-adapter schemas and environment allowlisting, immutable
|
|
37
|
+
baseline/candidate worktree overlays, disjoint exploration and confirmation
|
|
38
|
+
gates, exact-digest application, private backups, and concurrent-edit-safe
|
|
39
|
+
rollback.
|
|
40
|
+
- Add installed-style CLI and shell-completion coverage, an end-to-end Git
|
|
41
|
+
worktree evaluation fixture, and documentation for consent, storage,
|
|
42
|
+
inference ownership, evaluation limits, and recovery.
|
|
43
|
+
|
|
44
|
+
The lifecycle is local and operator-controlled. It performs no proposal call
|
|
45
|
+
before evidence approval, evaluation remains disabled unless `CAIRN_EVAL=1`,
|
|
46
|
+
and no candidate is applied automatically. Existing MCP tools, memory storage,
|
|
47
|
+
remote HTTP clients, and project launchers are unchanged.
|
|
48
|
+
|
|
8
49
|
## [2.7.0] - 2026-08-02
|
|
9
50
|
|
|
10
51
|
### Added
|
|
@@ -232,7 +273,9 @@ stored memories.
|
|
|
232
273
|
- Preserve executable permissions and Bash 3.2 portability on macOS.
|
|
233
274
|
- Add backup-first uninstall and SQLite-safe memory export/import guidance.
|
|
234
275
|
|
|
235
|
-
[Unreleased]: https://github.com/cairnkeep/cairnkeep/compare/v2.
|
|
276
|
+
[Unreleased]: https://github.com/cairnkeep/cairnkeep/compare/v2.9.0...HEAD
|
|
277
|
+
[2.9.0]: https://github.com/cairnkeep/cairnkeep/compare/v2.8.0...v2.9.0
|
|
278
|
+
[2.8.0]: https://github.com/cairnkeep/cairnkeep/compare/v2.7.0...v2.8.0
|
|
236
279
|
[2.7.0]: https://github.com/cairnkeep/cairnkeep/compare/v2.6.0...v2.7.0
|
|
237
280
|
[2.6.0]: https://github.com/cairnkeep/cairnkeep/compare/v2.5.0...v2.6.0
|
|
238
281
|
[2.5.0]: https://github.com/cairnkeep/cairnkeep/compare/v2.4.0...v2.5.0
|
package/README.md
CHANGED
|
@@ -15,7 +15,7 @@ Qwen Code, Pi, and other MCP clients).
|
|
|
15
15
|
## Status
|
|
16
16
|
|
|
17
17
|
Shipped: the memory server, the `cairn` CLI (`bootstrap`, `memory-server`, `sync`, `sync-pi`, `sync-kimi`,
|
|
18
|
-
`doctor`, `trajectory`, `artifact`, `notes`, `memory`, `eval`, `audit-timer`, `completion`, `uninstall`) installable via
|
|
18
|
+
`doctor`, `trajectory`, `artifact`, `mcp-tools`, `pack`, `notes`, `memory`, `eval`, `audit-timer`, `completion`, `uninstall`) installable via
|
|
19
19
|
`npm i -g @cairnkeep/cli`, and the
|
|
20
20
|
operating layer (commands,
|
|
21
21
|
agents, hooks) installed on Claude Code and OpenCode, plus a native Pi
|
|
@@ -41,7 +41,7 @@ and 20 are end-of-life upstream.
|
|
|
41
41
|
| Qwen Code on Linux/macOS | Memory MCP server plus project launcher; no Cairnkeep operating-layer assets yet |
|
|
42
42
|
| Pi on Linux/macOS | Native opt-in trajectory extension, launcher, and `/graphify` prompt; no bundled MCP bridge |
|
|
43
43
|
| Codex CLI | Memory MCP server; no Cairnkeep operating-layer assets |
|
|
44
|
-
| Other MCP clients | Memory
|
|
44
|
+
| Other MCP clients | Memory plus optional domain-knowledge and context-pack MCP tools |
|
|
45
45
|
| Native Windows | Not supported by the Bash-based installer; use WSL (not yet CI-verified) |
|
|
46
46
|
|
|
47
47
|
The `cairn graph` CLI is harness-independent and can be run from a project
|
|
@@ -82,8 +82,14 @@ storage paths, secrets, and private derived images, see
|
|
|
82
82
|
`.ai/` launchers + env; `cairn doctor` health-checks the configured pieces;
|
|
83
83
|
`cairn trajectory list|show|prune` manages opt-in local session trajectories;
|
|
84
84
|
`cairn artifact list|show|delete|prune` manages opt-in local artifacts;
|
|
85
|
+
`cairn mcp-tools list|status|set|reset` applies least-authority discovery
|
|
86
|
+
profiles; `cairn pack` validates, installs, pins, updates, and approves
|
|
87
|
+
immutable external context;
|
|
85
88
|
`cairn eval validate|run|ablate|report|prune|delete` coordinates explicit
|
|
86
89
|
local two-pass and one-capability-at-a-time measurements;
|
|
90
|
+
`cairn skill harvest|list|show|review|propose|evaluate|apply|rollback`
|
|
91
|
+
turns recurring hindsight evidence into reviewed, measured, reversible
|
|
92
|
+
skill-file improvements;
|
|
87
93
|
`cairn graph build|query|status|diff|explain|path` owns the local Graphify
|
|
88
94
|
workflow from any project shell without installing Graphify-owned harness
|
|
89
95
|
assets; Claude Code, OpenCode, Pi, and Kimi add thin `/graphify` wrappers;
|
|
@@ -259,6 +265,11 @@ search):
|
|
|
259
265
|
| `CAIRN_MEMORY_EMBEDDING_MODEL` | Embedding model name (required for semantic search) |
|
|
260
266
|
| `CAIRN_MEMORY_EMBEDDING_TIMEOUT_MS` | Embedding request timeout before substring fallback (default `15000`) |
|
|
261
267
|
| `CAIRN_AGENTFS_BASE_DIR` | Base dir for global memory scopes (default `~/.cairnkeep`) |
|
|
268
|
+
| `CAIRN_MCP_TOOL_PROFILE` | Process override for MCP exposure: `full`, `read-only`, or `custom` |
|
|
269
|
+
| `CAIRN_MCP_ALLOWED_TOOLS` | Comma-separated exact allowlist required by a custom process profile |
|
|
270
|
+
| `CAIRN_CONTEXT_PACKS` | Opt in to local context-pack list/search/read tools (default off) |
|
|
271
|
+
| `CAIRN_CONTEXT_PACK_HTTP` | Separately consent to context-pack tools over authenticated HTTP (default off) |
|
|
272
|
+
| `CAIRN_PACK_BASE_DIR` | Immutable pack objects, source records, pointers, and retrieval cache (default `~/.cairnkeep/packs`) |
|
|
262
273
|
| `CAIRN_TRAJECTORY_CAPTURE` | Opt in to local structured session capture (`1`, `true`, `yes`, or `on`; default off) |
|
|
263
274
|
| `CAIRN_TRAJECTORY_SESSION_MAX_BYTES` | Maximum serialized bytes per captured session (default `5242880`, 5 MiB) |
|
|
264
275
|
| `CAIRN_TRAJECTORY_STORE_MAX_BYTES` | Maximum logical bytes across local trajectories (default `268435456`, 256 MiB) |
|
|
@@ -305,6 +316,22 @@ remote memory, and delegated exploration can send content to endpoints you
|
|
|
305
316
|
configure. Review [Privacy and data flow](docs/privacy-and-data-flow.md) before
|
|
306
317
|
enabling them.
|
|
307
318
|
|
|
319
|
+
### MCP authority and context packs
|
|
320
|
+
|
|
321
|
+
Every tool publishes a stable title and all four MCP annotation hints. Use
|
|
322
|
+
`cairn mcp-tools set read-only` for observation-only clients, or an exact custom
|
|
323
|
+
allowlist when a workflow needs fewer tools. Process settings override the
|
|
324
|
+
strict project file; the default remains `full`. Profiles only remove tools and
|
|
325
|
+
cannot bypass capability or feature gates. See
|
|
326
|
+
[MCP tool profiles](docs/mcp-tool-profiles.md).
|
|
327
|
+
|
|
328
|
+
Context packs are immutable, digest-addressed local document/skill bundles.
|
|
329
|
+
They are installed and project-pinned manually; no background Git sync occurs.
|
|
330
|
+
With `CAIRN_CONTEXT_PACKS=1`, enabled documents are searchable through three
|
|
331
|
+
read-only MCP tools. Skills remain invisible until their exact file digest is
|
|
332
|
+
approved, and are never copied or executed. See
|
|
333
|
+
[Immutable context packs](docs/context-packs.md).
|
|
334
|
+
|
|
308
335
|
### Managed capability contract (opt-in)
|
|
309
336
|
|
|
310
337
|
`CAIRN_CAPABILITY_CONTRACT=1` enables one versioned, typed boundary around the
|
|
@@ -391,6 +418,25 @@ descendant-process-tree termination is not guaranteed. See the
|
|
|
391
418
|
[storage contract](docs/storage.md#evaluation-report-and-note-snapshot-storage),
|
|
392
419
|
and [privacy flow](docs/privacy-and-data-flow.md#evaluation-adapter-and-report-flow).
|
|
393
420
|
|
|
421
|
+
### Validated skill improvement (opt-in)
|
|
422
|
+
|
|
423
|
+
`cairn skill` promotes repeated, resolved hindsight evidence through a guarded
|
|
424
|
+
lifecycle: local harvest, explicit evidence review, bounded proposal generation,
|
|
425
|
+
separate exploration and confirmation evaluations, exact-digest application,
|
|
426
|
+
and backup-first rollback. Cairnkeep never rewrites a live skill during proposal
|
|
427
|
+
or evaluation, never sends evidence to the proposal adapter before approval,
|
|
428
|
+
and never applies a candidate automatically.
|
|
429
|
+
|
|
430
|
+
Proposal generation uses an explicit strict adapter configuration with an
|
|
431
|
+
environment allowlist. Evaluation remains disabled unless `CAIRN_EVAL=1`, uses
|
|
432
|
+
the existing isolated worktree runner and independent verifier, and requires
|
|
433
|
+
disjoint committed task sets bound to one immutable source revision. A
|
|
434
|
+
candidate is eligible only when both stages meet the configured improvement
|
|
435
|
+
floor with no regression or unknown pair. See the
|
|
436
|
+
[validated skill guide](docs/skill-improvement.md),
|
|
437
|
+
[storage contract](docs/storage.md#validated-skill-storage), and
|
|
438
|
+
[privacy flow](docs/privacy-and-data-flow.md#validated-skill-improvement-flow).
|
|
439
|
+
|
|
394
440
|
### Typed memory nodes and structured import (opt-in)
|
|
395
441
|
|
|
396
442
|
`CAIRN_TYPED_MEMORY_NODES=1` adds schema-v1 `node_type`, canonical `tags`,
|
|
@@ -460,6 +506,9 @@ exposes trajectory data. See the [operating guide](docs/operating.md#compaction-
|
|
|
460
506
|
- **Memory storage and deployment** — [docs/storage.md](docs/storage.md)
|
|
461
507
|
- **Podman and OCI containers** — [docs/containers.md](docs/containers.md)
|
|
462
508
|
- **Privacy and data flow** — [docs/privacy-and-data-flow.md](docs/privacy-and-data-flow.md)
|
|
509
|
+
- **MCP tool profiles** — [docs/mcp-tool-profiles.md](docs/mcp-tool-profiles.md)
|
|
510
|
+
- **Immutable context packs** — [docs/context-packs.md](docs/context-packs.md)
|
|
511
|
+
- **Validated skill improvement** — [docs/skill-improvement.md](docs/skill-improvement.md)
|
|
463
512
|
- **Git providers** — [docs/git-providers.md](docs/git-providers.md)
|
|
464
513
|
- **Support** — [SUPPORT.md](SUPPORT.md)
|
|
465
514
|
- **Contributing** — [CONTRIBUTING.md](CONTRIBUTING.md)
|
package/bin/cairn
CHANGED
|
@@ -52,6 +52,12 @@ Usage:
|
|
|
52
52
|
Inspect and manage project capability state. MCP changes
|
|
53
53
|
require a memory-server restart; operating changes apply
|
|
54
54
|
on the next invocation.
|
|
55
|
+
cairn mcp-tools <list|status|set|reset>
|
|
56
|
+
Inspect and restrict MCP tool exposure with full,
|
|
57
|
+
read-only, or exact custom project profiles.
|
|
58
|
+
cairn pack <init|lock|validate|install|list|show|remove|enable|disable|update|skills|approve-skill|revoke-skill>
|
|
59
|
+
Build, verify, install, pin, and retrieve immutable
|
|
60
|
+
context packs. Packs stay local and disabled by default.
|
|
55
61
|
cairn notes <distill|search-error|promote|doctor>
|
|
56
62
|
Compile closed trajectories into local hindsight notes,
|
|
57
63
|
search exact failure signatures, promote corroborated
|
|
@@ -59,6 +65,9 @@ Usage:
|
|
|
59
65
|
cairn eval <validate|run|ablate|report|prune|delete>
|
|
60
66
|
Validate or run default-off local evaluations, inspect
|
|
61
67
|
reports, and manage retained experiment results.
|
|
68
|
+
cairn skill <harvest|list|show|review|propose|evaluate|apply|rollback>
|
|
69
|
+
Turn recurring hindsight evidence into reviewed,
|
|
70
|
+
evaluated, reversible skill-file improvements.
|
|
62
71
|
cairn graph <build|query|status|diff|explain|path>
|
|
63
72
|
Build the local code graph, inspect freshness and
|
|
64
73
|
changes, or query exact symbols and paths.
|
|
@@ -69,7 +78,7 @@ Usage:
|
|
|
69
78
|
cairn audit-timer [--on-calendar SPEC] [--para-root PATH] [--render-only DIR]
|
|
70
79
|
Install (opt-in) a systemd user timer that runs the
|
|
71
80
|
memory+wiki audit on a schedule; prints a cron alternative.
|
|
72
|
-
cairn uninstall [--dry-run] [--yes] [--purge-memory] [--live-root DIR]
|
|
81
|
+
cairn uninstall [--dry-run] [--yes] [--purge-memory] [--purge-packs] [--live-root DIR]
|
|
73
82
|
[--pi-live-root DIR] [--kimi-live-root DIR] [PROJECT ...]
|
|
74
83
|
Reverse what cairnkeep installed/modified (operating
|
|
75
84
|
layer, hook registrations, MCP registration, audit
|
|
@@ -110,12 +119,21 @@ case "$cmd" in
|
|
|
110
119
|
capabilities)
|
|
111
120
|
exec node "$CAIRN_ROOT/mcp-memory-server/dist/capability-cli.js" "$@"
|
|
112
121
|
;;
|
|
122
|
+
mcp-tools)
|
|
123
|
+
exec node "$CAIRN_ROOT/mcp-memory-server/dist/mcp-tool-cli.js" "$@"
|
|
124
|
+
;;
|
|
125
|
+
pack)
|
|
126
|
+
exec node "$CAIRN_ROOT/mcp-memory-server/dist/context-pack-cli.js" "$@"
|
|
127
|
+
;;
|
|
113
128
|
notes)
|
|
114
129
|
exec node "$CAIRN_ROOT/mcp-memory-server/dist/note-cli.js" "$@"
|
|
115
130
|
;;
|
|
116
131
|
eval)
|
|
117
132
|
exec node "$CAIRN_ROOT/mcp-memory-server/dist/eval-cli.js" "$@"
|
|
118
133
|
;;
|
|
134
|
+
skill)
|
|
135
|
+
exec node "$CAIRN_ROOT/mcp-memory-server/dist/skill-cli.js" "$@"
|
|
136
|
+
;;
|
|
119
137
|
graph)
|
|
120
138
|
exec node "$CAIRN_ROOT/mcp-memory-server/dist/graph-cli.js" "$@"
|
|
121
139
|
;;
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Immutable context packs
|
|
2
|
+
|
|
3
|
+
Context packs provide project-approved reference documents and skills without
|
|
4
|
+
copying them into a harness or promoting them into durable memory. They are
|
|
5
|
+
local, immutable, disabled by default, and never execute instructions.
|
|
6
|
+
|
|
7
|
+
## Format and identity
|
|
8
|
+
|
|
9
|
+
The root `context-pack.json` follows
|
|
10
|
+
[`schemas/context-pack.schema.json`](../schemas/context-pack.schema.json). It
|
|
11
|
+
declares a kebab-case ID, semantic version, descriptive metadata, license, and
|
|
12
|
+
an ordered list of UTF-8 `document` or `skill` files with SHA-256 digests.
|
|
13
|
+
|
|
14
|
+
Validation rejects unknown manifest fields, absolute or traversing paths,
|
|
15
|
+
symlinks, devices, duplicate, missing or undeclared files, invalid UTF-8, and
|
|
16
|
+
digest mismatches. Limits are 1 MiB per file, 1,024 entries, and 64 MiB total.
|
|
17
|
+
The authoritative pack digest covers the exact manifest bytes plus sorted
|
|
18
|
+
path/content bytes. The version label is informative; the digest is identity.
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
cairn pack init ./my-pack --id my-pack --version 1.0.0 \
|
|
22
|
+
--title "My pack" --description "Reviewed local guidance" --license Apache-2.0
|
|
23
|
+
# Edit metadata/kinds if needed, then refresh file hashes.
|
|
24
|
+
cairn pack lock ./my-pack
|
|
25
|
+
cairn pack validate ./my-pack
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Installation and project pinning
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
cairn pack install ./my-pack
|
|
32
|
+
cairn pack install https://example.invalid/repository.git --ref v1.0.0
|
|
33
|
+
cairn pack list
|
|
34
|
+
cairn pack show PACK-DIGEST
|
|
35
|
+
cairn pack enable PACK-DIGEST --project ./project
|
|
36
|
+
cairn pack disable my-pack --project ./project
|
|
37
|
+
cairn pack remove PACK-DIGEST
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Local installation performs no network operation. Git installation requires
|
|
41
|
+
`--ref`, invokes the system `git` executable with an argument array, records
|
|
42
|
+
the exact resolved commit, rejects credentials embedded in URLs, and stores no
|
|
43
|
+
checkout metadata. Immutable objects live under `CAIRN_PACK_BASE_DIR` (default
|
|
44
|
+
`~/.cairnkeep/packs`). Project pointers are atomic and digest-pinned. Remote
|
|
45
|
+
administration may use a validated `--project-id` instead of a local path.
|
|
46
|
+
|
|
47
|
+
Objects are retained until explicitly removed. Removal is refused while any
|
|
48
|
+
project points to the digest. Ordinary uninstall retains them; use
|
|
49
|
+
`cairn uninstall --purge-packs` only after reviewing the dry run and backup.
|
|
50
|
+
|
|
51
|
+
Updates never synchronize in the background:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
cairn pack update my-pack --check --project ./project
|
|
55
|
+
cairn pack update my-pack --apply --confirm CANDIDATE-DIGEST --project ./project
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
`--check` does not install or switch a project. `--apply` re-inspects the source,
|
|
59
|
+
requires the candidate digest, installs an immutable object, and atomically
|
|
60
|
+
switches only the named project.
|
|
61
|
+
|
|
62
|
+
## Retrieval and skill approval
|
|
63
|
+
|
|
64
|
+
Set `CAIRN_CONTEXT_PACKS=1` and restart the memory server to register the three
|
|
65
|
+
read-only, closed-world tools: `context_pack_list`, `context_pack_search`, and
|
|
66
|
+
`context_pack_read`. Every file or search result includes pack ID, version,
|
|
67
|
+
pack digest, path, kind, and file digest. Search uses the existing optional
|
|
68
|
+
embedding configuration and falls back to deterministic substring matching if
|
|
69
|
+
configuration or the endpoint is unavailable. Embedding cache data is stored
|
|
70
|
+
outside immutable objects.
|
|
71
|
+
|
|
72
|
+
Markdown is split deterministically at headings and paragraphs, with chunks
|
|
73
|
+
bounded to 8 KiB and 512-byte overlap. Only packs enabled for the current
|
|
74
|
+
project are searched.
|
|
75
|
+
|
|
76
|
+
Skills remain invisible until their exact file digest is approved:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
cairn pack skills --project ./project
|
|
80
|
+
cairn pack approve-skill PACK-DIGEST path/to/SKILL.md \
|
|
81
|
+
--confirm FILE-DIGEST --project ./project
|
|
82
|
+
cairn pack revoke-skill PACK-DIGEST path/to/SKILL.md --project ./project
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Approval binds the project identity, pack digest, path, and file digest. A pack
|
|
86
|
+
update invalidates approval. Approved skills are only discoverable/readable
|
|
87
|
+
through the context-pack tools; Cairnkeep does not copy, activate, or execute
|
|
88
|
+
them.
|
|
89
|
+
|
|
90
|
+
Authenticated HTTP deployments need the separate
|
|
91
|
+
`CAIRN_CONTEXT_PACK_HTTP=1` consent flag in addition to
|
|
92
|
+
`CAIRN_CONTEXT_PACKS=1`, the existing bearer token, Host/CORS guards, and a
|
|
93
|
+
project header. Pack digests prove integrity, not publisher authenticity.
|
|
94
|
+
Publisher signatures remain future work.
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
# Meta-agent design contract
|
|
2
2
|
|
|
3
|
-
> **
|
|
4
|
-
>
|
|
5
|
-
>
|
|
6
|
-
>
|
|
7
|
-
>
|
|
8
|
-
>
|
|
3
|
+
> **General-loop design status.** Cairnkeep 2.8.0 ships a narrower validated
|
|
4
|
+
> lifecycle for one existing `SKILL.md`; see
|
|
5
|
+
> [Validated skill improvement](../skill-improvement.md). It does not ship the
|
|
6
|
+
> general natural-language configuration compiler, autonomous search loop,
|
|
7
|
+
> arbitrary target policy, or capability optimizer specified here. Requirements
|
|
8
|
+
> in this document remain future work except where a paragraph explicitly names
|
|
9
|
+
> the 2.8.0 skill-file lifecycle as current behavior.
|
|
9
10
|
|
|
10
11
|
## Status and normative language
|
|
11
12
|
|
|
12
|
-
This document specifies a future, bounded build-test-improve
|
|
13
|
-
loop. It
|
|
14
|
-
|
|
13
|
+
This document specifies a future, general bounded build-test-improve
|
|
14
|
+
configuration loop. It is not the executable interface for `cairn skill`; the
|
|
15
|
+
skill schemas and operating guide are authoritative for that narrower surface.
|
|
16
|
+
In future requirements, **MUST**, **MUST NOT**, **REQUIRED**, and **SHALL** are normative;
|
|
15
17
|
**SHOULD** and **MAY** describe constrained choices. Statements explicitly
|
|
16
18
|
labelled current describe accepted Phase 18 or Phase 19 behavior rather than
|
|
17
19
|
new behavior.
|
|
@@ -24,11 +26,12 @@ authority.
|
|
|
24
26
|
## Paper concept and Cairnkeep boundary
|
|
25
27
|
|
|
26
28
|
The paper's build-test-improve concept motivates a future bounded configuration
|
|
27
|
-
loop, but does not redefine Cairnkeep's ownership.
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
It must not own a harness
|
|
31
|
-
the authority over
|
|
29
|
+
loop, but does not redefine Cairnkeep's ownership. The shipped skill lifecycle
|
|
30
|
+
can propose one bounded `SKILL.md` candidate through an operator-configured
|
|
31
|
+
adapter. Cairnkeep may eventually compile a broader operator objective into a
|
|
32
|
+
reviewable form and coordinate general candidates. It must not own a harness
|
|
33
|
+
inference loop. Existing repository contracts remain the authority over
|
|
34
|
+
external design inspiration.
|
|
32
35
|
|
|
33
36
|
Natural-language objectives are untrusted proposal data. They never authorize
|
|
34
37
|
repository reads, writes, commands, network use, evaluation, or application.
|
|
@@ -159,9 +162,12 @@ untrusted objective
|
|
|
159
162
|
-> accept | inconclusive | no_eligible_candidate | rollback
|
|
160
163
|
```
|
|
161
164
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
+
For the future general loop, there is no direct inference edge from a
|
|
166
|
+
Cairnkeep-owned generator, selector, applier, or rollback operation. The shipped
|
|
167
|
+
skill lifecycle has one explicit exception: its operator-configured proposal
|
|
168
|
+
adapter may perform candidate-generation inference through a strict bounded
|
|
169
|
+
process contract. Evaluation still uses the Phase 19 coordinator and external
|
|
170
|
+
adapter; Cairnkeep owns neither inference loop.
|
|
165
171
|
|
|
166
172
|
| Actor or component | May do | Must not do | Required authority |
|
|
167
173
|
|---|---|---|---|
|
|
@@ -189,12 +195,12 @@ diagnostics or model output.
|
|
|
189
195
|
| Concern | Current accepted Phase 18/19 behavior | Missing future contract; not shipped by Phase 20 |
|
|
190
196
|
|---|---|---|
|
|
191
197
|
| Capability identity | `expected_capability_digest` and `observed_capability_digest` bind the complete Phase 18 effective state. | Candidate-overlay identity and expected/observed candidate digests for arbitrary prompt/config candidates. |
|
|
192
|
-
| Adapter identity | `adapter_config_digest` binds the operator adapter configuration.
|
|
193
|
-
| Request surface | Phase 19 sends experiment/task identity, arm, repetition, pass, isolated paths, fixed input, limits, seed, expected capability digest, and output path. | Phase 19 has no arbitrary
|
|
198
|
+
| Adapter identity | `adapter_config_digest` binds the operator adapter configuration. The 2.8.0 skill lifecycle additionally binds proposal and evaluation adapter executable digests. | These identities grant no general selection or apply authority. |
|
|
199
|
+
| Request surface | Phase 19 sends experiment/task identity, arm, repetition, pass, isolated paths, fixed input, limits, seed, expected capability digest, and output path. The skill lifecycle overlays exact baseline/candidate `SKILL.md` bytes before invocation. | Phase 19 has no public arbitrary configuration-overlay protocol or adapter-selected target. |
|
|
194
200
|
| Result surface | Strict results may report bounded metrics, identities, references, and `observed_capability_digest`. | There is no observed candidate-overlay digest, and no candidate pass/approval field. |
|
|
195
201
|
| Ablation | `runCapabilityAblation()` compares an all-enabled baseline with exactly one disabled capability and requires four invocations per task/repetition: two passes in each of two arms. | It is not generic prompt search, arbitrary configuration injection, or a multi-capability candidate arm. |
|
|
196
|
-
| Scheduling | Deterministic, serial, immutable, paired schedules and fresh isolated workspaces are current.
|
|
197
|
-
| Report | Canonical reports preserve observations, aggregates, condition levels, eligible pairs, missingness, warnings, intervals, evidence scope, and provenance. |
|
|
202
|
+
| Scheduling | Deterministic, serial, immutable, paired schedules and fresh isolated workspaces are current. The skill lifecycle coordinates separate disjoint exploration and confirmation sets. | Adaptive general candidate generation and search remain absent. |
|
|
203
|
+
| Report | Canonical reports preserve observations, aggregates, condition levels, eligible pairs, missingness, warnings, intervals, evidence scope, and provenance. A separate skill evaluation artifact applies the narrow no-regression gate. | Evaluation reports themselves do not authorize application or general configuration selection. |
|
|
198
204
|
|
|
199
205
|
Exploration and held-out confirmation task sets MUST be separate, committed,
|
|
200
206
|
immutable, non-overlapping, and digest-bound. Exploration results may inform the
|
|
@@ -357,14 +363,14 @@ not backlog rows.
|
|
|
357
363
|
Each row is future work requiring separate approval. The list is exactly nine
|
|
358
364
|
items; Phase 20 delivers none of them.
|
|
359
365
|
|
|
360
|
-
| # |
|
|
366
|
+
| # | General-loop capability | Accepted substrate it may reuse | Delivery status |
|
|
361
367
|
|---|---|---|---|
|
|
362
368
|
| 1 | Natural-language-to-form compiler and validator | Strict versioning, canonical digests, and path validation patterns | Future work requiring separate approval; not delivered by Phase 20 |
|
|
363
|
-
| 2 | Bounded candidate generator | Phase 18 typed capability identities and retained evidence |
|
|
364
|
-
| 3 | Candidate-config injection contract for external adapters | Phase 19 adapter seam and Phase 18 capability digests
|
|
365
|
-
| 4 | Scoped proposal/artifact schema | Existing strict versioned local artifacts and canonical reports |
|
|
366
|
-
| 5 | Backup-first patch applier and rollback ledger | Existing backup-first uninstall/revert and atomic single-file write precedents |
|
|
367
|
-
| 6 | Exploration and held-out committed task sets | Current committed task-set schema, exact revisions, and verifier |
|
|
369
|
+
| 2 | Bounded candidate generator | Phase 18 typed capability identities and retained evidence | Narrow skill proposer shipped; general objective compiler and candidate search remain future work |
|
|
370
|
+
| 3 | Candidate-config injection contract for external adapters | Phase 19 adapter seam and Phase 18 capability digests | Exact coordinator-owned `SKILL.md` overlays shipped; arbitrary configuration overlays remain future work |
|
|
371
|
+
| 4 | Scoped proposal/artifact schema | Existing strict versioned local artifacts and canonical reports | Narrow candidate/proposal/evaluation/application artifacts shipped; general proposal bundles remain future work |
|
|
372
|
+
| 5 | Backup-first patch applier and rollback ledger | Existing backup-first uninstall/revert and atomic single-file write precedents | One-file exact-digest skill apply/rollback shipped; arbitrary patches remain future work |
|
|
373
|
+
| 6 | Exploration and held-out committed task sets | Current committed task-set schema, exact revisions, and verifier | Shipped for the skill lifecycle; general campaigns remain future work |
|
|
368
374
|
| 7 | Selection policy accounting for uncertainty and repeated comparisons | Phase 19 condition levels, paired estimates, missingness, warnings, and intervals | Future work requiring separate approval; not delivered by Phase 20 |
|
|
369
375
|
| 8 | Sufficient live baseline evidence | Validator-checked evidence scope and exact-source runtime provenance; existing offline evidence is framework-only | Future work requiring separate approval; not delivered by Phase 20 |
|
|
370
376
|
| 9 | Dedicated privacy/security threat review | Current local privacy, bounded storage, secret exclusion, and public hygiene guards | Future work requiring separate approval; not delivered by Phase 20 |
|
|
@@ -377,12 +383,10 @@ items; Phase 20 delivers none of them.
|
|
|
377
383
|
- Architect-style in-loop compression is outside this design and Phase 20.
|
|
378
384
|
- Trace UI is outside this design and Phase 20.
|
|
379
385
|
- Eval UI is outside this design and Phase 20.
|
|
380
|
-
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
- Phase 20 adds no symbol, command, flag, package, dependency, test source,
|
|
385
|
-
executable interface, release, publication, or automatic product claim.
|
|
386
|
+
- Cairnkeep 2.8.0 implements only the reviewed `SKILL.md` lifecycle documented
|
|
387
|
+
separately. It adds no general objective compiler, autonomous scheduler,
|
|
388
|
+
capability optimizer, arbitrary patch surface, UI, or automatic product
|
|
389
|
+
claim.
|
|
386
390
|
|
|
387
391
|
All excluded implementation work requires a new plan, threat review, approval,
|
|
388
392
|
tests, and evidence. Naming a future contract here does not reserve a public
|
|
@@ -394,12 +398,12 @@ interface or represent it as delivered.
|
|
|
394
398
|
|---|---|---|
|
|
395
399
|
| META-01 | Natural-language specification → strict form | Untrusted prose can become only a complete, versioned, fail-closed future form. |
|
|
396
400
|
| META-02 | Ownership; evaluation; proposal; state machine | Candidates are bounded, measured only through Phase 19/adapters, and separately approved for application. |
|
|
397
|
-
| META-03 | Prerequisites; explicit exclusions |
|
|
401
|
+
| META-03 | Prerequisites; explicit exclusions | Narrow skill delivery is separated from remaining general-loop prerequisites and prohibited ownership/UI behavior. |
|
|
398
402
|
| D-01 | Natural-language specification → strict form | Natural language is untrusted proposal data, never executable control. |
|
|
399
403
|
| D-02 | Required configuration fields | Scope, revisions, paths, resources, safety, capabilities, tasks, evaluation, selection, mutation, and authority are required. |
|
|
400
404
|
| D-03 | Admission is fail closed | Omissions, unknowns, unsafe paths, unresolved revisions, non-finite resources, and inferred defaults invalidate. |
|
|
401
405
|
| D-04 | Admission; privacy invariants | Only value-free operator-owned references are allowed; secret/endpoint/environment values are forbidden. |
|
|
402
|
-
| D-05 | Status and normative language | The artifact is design-only; examples are non-normative;
|
|
406
|
+
| D-05 | Status and normative language | The general-loop artifact is design-only; examples are non-normative; the separate narrow skill schema and CLI do not imply broader delivery. |
|
|
403
407
|
| D-06 | Ownership and authority | Phase 19 is the sole execution/measurement seam and the external adapter owns inference. |
|
|
404
408
|
| D-07 | Candidate evaluation | Source, tasks, verifier, adapter identity, schedule, limits, seeds, and digests are frozen and comparable. |
|
|
405
409
|
| D-08 | Candidate evaluation | Canonical terminal/pass states, condition levels, missingness, uncertainty, and evidence scope remain authoritative. |
|
|
@@ -14,13 +14,19 @@ commands, hooks, plugins, or trajectory adapters.
|
|
|
14
14
|
| Qwen Code | Memory MCP, launcher | Launcher tested; stdio and remote MCP tested with Qwen Code 0.21.1 |
|
|
15
15
|
| Pi | Native opt-in trajectory extension, launcher, and graph prompt | Exercised by Cairnkeep tests; no bundled MCP bridge |
|
|
16
16
|
| Codex CLI | Memory MCP | Configuration supported; no Cairnkeep operating-layer assets or launcher |
|
|
17
|
-
| Other MCP clients | Memory
|
|
17
|
+
| Other MCP clients | Memory plus optional domain-knowledge and context-pack tools | Protocol-compatible; not automatically runtime-tested |
|
|
18
18
|
|
|
19
19
|
Only Claude Code and OpenCode currently receive the complete operating layer.
|
|
20
20
|
Kimi receives one narrow graph Skill, while Pi receives one narrow graph prompt;
|
|
21
21
|
neither is equivalent to the full commands, agents, hooks, and plugins surface.
|
|
22
22
|
Qwen skills and hooks still require harness-specific adaptation and validation.
|
|
23
23
|
|
|
24
|
+
Every MCP client receives complete tool annotations and may use a Cairnkeep
|
|
25
|
+
least-authority profile independent of harness assets. Context-pack tools are
|
|
26
|
+
ordinary read-only MCP tools and require the pack feature gate; authenticated
|
|
27
|
+
HTTP additionally requires separate pack-HTTP consent. Approved pack skills
|
|
28
|
+
remain context documents, not native harness Skills or automatic instructions.
|
|
29
|
+
|
|
24
30
|
`cairn graph` is a separate, harness-independent project-shell CLI. Kimi Code,
|
|
25
31
|
Pi, Qwen Code, Codex, and other shell-capable clients can invoke
|
|
26
32
|
`cairn graph build|query|status|diff|explain|path` when `cairn` and the isolated
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Curriculum Coverage Map
|
|
2
2
|
|
|
3
|
-
**Baseline:** Cairnkeep 2.
|
|
4
|
-
**Last reviewed:** 2026-
|
|
3
|
+
**Baseline:** Cairnkeep 2.9.0
|
|
4
|
+
**Last reviewed:** 2026-08-06
|
|
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
|
|
@@ -16,7 +16,8 @@ been rehearsed.
|
|
|
16
16
|
| Local stdio memory and MCP registration | L00-L02 | L03-L04 | L00-L03 Ready; L04 Brief |
|
|
17
17
|
| Project bootstrap, launchers, and contributor mode | L02-L03 | L05 | L02-L03 Ready; L05 Brief |
|
|
18
18
|
| Memory scopes, keys, search, supersession, and history | L04 | L04-L05 | Brief |
|
|
19
|
-
| Wiki, alignment,
|
|
19
|
+
| Wiki, alignment, and repository quality workflows | L05-L06 | L05-L06 | Brief |
|
|
20
|
+
| Optional local code graph, graph inspection, and harness delegates | L18 | L18 | Brief; default off |
|
|
20
21
|
| Storage placement, export/import, and authenticated remote memory | L07 | L07-L08 | Brief |
|
|
21
22
|
| Document RAG | L00 | L09 | Brief; optional |
|
|
22
23
|
| token-miser exploration and routing | L00 | L10 | Brief; optional |
|
|
@@ -30,6 +31,9 @@ been rehearsed.
|
|
|
30
31
|
| Deterministic two-pass evaluation and one-capability ablation | L16 | L16 | Brief; default off |
|
|
31
32
|
| Shell completion | L02 | L02 | Ready; optional convenience |
|
|
32
33
|
| Bounded meta-agent configuration loop | L17 | None | Design-only; not shipped |
|
|
34
|
+
| Reviewed, evaluated, reversible skill-file improvement | L19 | L19 | Ready; explicit and default off |
|
|
35
|
+
| Complete MCP annotations and least-authority tool profiles | L20 | L20 | Ready; default profile remains full |
|
|
36
|
+
| Immutable context packs and exact-digest skill approval | L21 | L21 | Ready; default off |
|
|
33
37
|
|
|
34
38
|
## Release Review
|
|
35
39
|
|
|
@@ -58,6 +62,9 @@ repository remains the canonical source for explanations and scripts.
|
|
|
58
62
|
| `course-05-evidence` | L13-L14 | Evidence lifecycle and typed memory |
|
|
59
63
|
| `course-06-governance` | L15 | Capability precedence and restart boundaries |
|
|
60
64
|
| `course-07-evaluation` | L16-L17 | Package-owned offline fixture and design boundary |
|
|
65
|
+
| `course-08-graph` | L18 | Optional local structural graph workflow |
|
|
66
|
+
| `course-09-skill` | L19 | Validated skill improvement in a disposable project |
|
|
67
|
+
| `course-10-trust-context` | L20-L21 | MCP authority profiles and offline context-pack lifecycle |
|
|
61
68
|
|
|
62
69
|
## Command Ownership
|
|
63
70
|
|
|
@@ -75,9 +82,12 @@ against `cairn help` so a new command cannot bypass a curriculum decision.
|
|
|
75
82
|
| `cairn trajectory` | L13 |
|
|
76
83
|
| `cairn artifact` | L13 |
|
|
77
84
|
| `cairn capabilities` | L15 |
|
|
85
|
+
| `cairn mcp-tools` | L20 |
|
|
86
|
+
| `cairn pack` | L21 |
|
|
78
87
|
| `cairn notes` | L13 |
|
|
79
88
|
| `cairn eval` | L16 |
|
|
80
|
-
| `cairn
|
|
89
|
+
| `cairn skill` | L19 |
|
|
90
|
+
| `cairn graph` | L18 |
|
|
81
91
|
| `cairn memory` | L07-L08 |
|
|
82
92
|
| `cairn audit-timer` | L05 and L13 |
|
|
83
93
|
| `cairn uninstall` | L02 and L11-L12 |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Cairnkeep feature guide
|
|
2
2
|
|
|
3
|
-
**Baseline:** Cairnkeep 2.
|
|
3
|
+
**Baseline:** Cairnkeep 2.9.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
|
|
@@ -32,8 +32,11 @@ Run setup in that order, then confirm `cairn doctor`, `cairn sync --check`, and
|
|
|
32
32
|
| 5 | Trajectories, notes, compaction, artifacts | Local session evidence has an explicit retention purpose |
|
|
33
33
|
| 6 | Typed nodes and capability governance | Filtering and centrally inspectable feature state are needed |
|
|
34
34
|
| 7 | Evaluation and ablation | A concrete change needs bounded measurement |
|
|
35
|
+
| 8 | Validated skill improvement | Repeated resolved hindsight warrants a measured skill change |
|
|
36
|
+
| 9 | Least-authority MCP profiles | A client should receive fewer tools than the default catalog |
|
|
37
|
+
| 10 | Immutable context packs | Reviewed external context should be pinned without becoming memory |
|
|
35
38
|
|
|
36
|
-
Every stage is independently useful. Stages 4-
|
|
39
|
+
Every stage is independently useful. Stages 4-8 are opt-in and are not
|
|
37
40
|
prerequisites for ordinary memory.
|
|
38
41
|
|
|
39
42
|
## Core and derived knowledge
|
|
@@ -43,7 +46,7 @@ prerequisites for ordinary memory.
|
|
|
43
46
|
| Scoped memory | `/remember`, `/recall`, MCP memory tools | Available after MCP registration; named/global DBs under `CAIRN_AGENTFS_BASE_DIR`, project DB under `<server-cwd>/.agentfs/` | Recall in a new session; use reviewed delete/supersession rather than filesystem removal | `course-02-memory` |
|
|
44
47
|
| Memory lifecycle | `/memory-review`, `memory_supersede`, `memory_history`, reviewed apply/invalidate tools | Durable history; no automatic promotion | Inspect key history and provenance | `course-02-memory` |
|
|
45
48
|
| Wiki and alignment | `/wiki-ingest`, `/wiki-query`, `/wiki-lint`, alignment files | Written only when invoked; reviewable `.planning/` artifacts | Re-run lint, inspect source citations, revert tracked changes normally | `course-02-memory` |
|
|
46
|
-
|
|
|
49
|
+
| Local code graph | `cairn graph build|query|status|diff|explain|path`; `/graphify` delegates | Default off; optional isolated `graphify` executable; incremental work under `graphify-out/`, published view under `.planning/graphs/` | Ignore both derived locations; check status and source before trusting a result; use `--force` only after intentional deletion; uninstall adapters separately | `course-08-graph` |
|
|
47
50
|
| Repository quality | `/repo-review`, `/security-audit` | On-demand workflow; findings are hypotheses until reproduced | Require file/line evidence and regression tests | `course-03-quality` |
|
|
48
51
|
|
|
49
52
|
## Storage and optional topology
|
|
@@ -57,6 +60,8 @@ prerequisites for ordinary memory.
|
|
|
57
60
|
| Context exploration | Configure an operator-owned exploration binary or route endpoint | Source/context goes only to the selected local or remote component | Check citations/cache; remove variables and relaunch | `course-04-operation` |
|
|
58
61
|
| Containers | Rootless memory or workspace launcher | Named volumes persist; shared checkout mode is read/write, sandbox mode copies into a volume | Inspect mounts/volumes; remove only explicitly named disposable resources | `course-04-operation` |
|
|
59
62
|
| Managed overlays | Separate distribution manifest, wrapper, profile lock, fleet and rollback gates | Policy and secrets belong in the private distribution/machine config, never core | `overlay info`, doctor, fleet dry run/current state, rollback | `course-04-operation` |
|
|
63
|
+
| MCP tool profiles | `cairn mcp-tools set full|read-only|custom` | Strict mode-`0600` project config; process overrides take precedence; profile only removes tools | Inspect catalog/status digest; reset and restart MCP | `course-10-trust-context` |
|
|
64
|
+
| Context packs | Manual local or commit-pinned Git install plus project enablement | Immutable objects and atomic pointers under `CAIRN_PACK_BASE_DIR`; no background sync | Validate, inspect digest, check/apply update, disable/remove | `course-10-trust-context` |
|
|
60
65
|
|
|
61
66
|
## Evidence, governance, and measurement
|
|
62
67
|
|
|
@@ -70,7 +75,9 @@ prerequisites for ordinary memory.
|
|
|
70
75
|
| Typed nodes/import | `CAIRN_TYPED_MEMORY_NODES=1` | Restart MCP server; tool schema changes | Hard-filter search; dry-run, replay-safe import; `cairn doctor --repair` only for derived state | `course-05-evidence` |
|
|
71
76
|
| Capability contract | `CAIRN_CAPABILITY_CONTRACT=1` | MCP changes require restart; operating changes apply next invocation | `cairn capabilities list|status|enable|disable|reset|logging`; digest identifies state only | `course-06-governance` |
|
|
72
77
|
| Evaluation | `CAIRN_EVAL=1` for the coordinator process | No harness chosen by Cairnkeep | `validate` before `run`; inspect report, missingness and evidence scope; dry-run prune/delete | `course-07-evaluation` |
|
|
73
|
-
|
|
|
78
|
+
| Validated skill improvement | Reviewed recurring hindsight; proposal adapter; `CAIRN_EVAL=1` for evaluation | No server restart; explicit subprocesses only | `cairn skill list|show`; exact-digest apply; concurrent-edit-safe rollback | `course-09-skill` |
|
|
79
|
+
| General meta-agent loop | Not shipped | Not applicable | Skill-file lifecycle only; no generic configuration loop or scheduler | `course-07-evaluation` |
|
|
80
|
+
| Pack retrieval and skills | `CAIRN_CONTEXT_PACKS=1`; HTTP needs separate consent; skills need exact-digest approval | Restart MCP server | `cairn pack skills`; revoke approval or disable pack; no automatic execution | `course-10-trust-context` |
|
|
74
81
|
|
|
75
82
|
## Harness and maintenance checks
|
|
76
83
|
|
package/docs/learning/README.md
CHANGED
|
@@ -48,6 +48,10 @@ expanded only after their labs are executable.
|
|
|
48
48
|
| L15 | [Capability governance](lessons/L15-capability-governance.md) | Brief | 35 min |
|
|
49
49
|
| L16 | [Evaluation and ablation](lessons/L16-evaluation.md) | Brief | 50 min |
|
|
50
50
|
| L17 | [The agent boundary](lessons/L17-agent-boundary.md) | Brief | 25 min |
|
|
51
|
+
| L18 | [Local code graph](lessons/L18-local-code-graph.md) | Brief | 35 min |
|
|
52
|
+
| L19 | [Validated skill improvement](lessons/L19-validated-skill-improvement.md) | Ready | 50 min |
|
|
53
|
+
| L20 | [Least-authority MCP tool profiles](lessons/L20-mcp-tool-profiles.md) | Ready | 25 min |
|
|
54
|
+
| L21 | [Immutable context packs and skill approval](lessons/L21-context-packs.md) | Ready | 40 min |
|
|
51
55
|
|
|
52
56
|
The [curriculum coverage map](CURRICULUM-MAP.md) records where every public
|
|
53
57
|
feature is introduced, practised, and operated. It also marks design-only work
|
|
@@ -65,8 +69,10 @@ Every complete lesson contains:
|
|
|
65
69
|
6. Release compatibility metadata for completed exercises.
|
|
66
70
|
|
|
67
71
|
The learner should never need optional infrastructure to complete L00-L06.
|
|
68
|
-
Remote memory, RAG, routing, containers,
|
|
69
|
-
capability governance, and
|
|
72
|
+
Remote memory, RAG, routing, containers, graph indexing, structured capture,
|
|
73
|
+
typed nodes, capability governance, evaluation, and context packs are separate
|
|
74
|
+
opt-in modules. MCP profiles are restrictive and never activate an optional
|
|
75
|
+
feature.
|
|
70
76
|
|
|
71
77
|
## For contributors
|
|
72
78
|
|