@cairnkeep/cli 2.13.1 → 2.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/CHANGELOG.md +45 -1
  2. package/README.md +29 -6
  3. package/claude/commands/cairn-work.md +19 -0
  4. package/docs/context-packs.md +13 -3
  5. package/docs/design/team-mode.md +145 -0
  6. package/docs/harness-compatibility.md +12 -11
  7. package/docs/learning/CURRICULUM-MAP.md +8 -4
  8. package/docs/learning/FEATURE-GUIDE.md +13 -5
  9. package/docs/learning/README.md +3 -1
  10. package/docs/learning/lessons/L00-why-cairnkeep.md +1 -1
  11. package/docs/learning/lessons/L01-safe-trial.md +3 -3
  12. package/docs/learning/lessons/L02-installation.md +2 -2
  13. package/docs/learning/lessons/L03-first-project.md +1 -1
  14. package/docs/learning/lessons/L19-validated-skill-improvement.md +1 -1
  15. package/docs/learning/lessons/L20-mcp-tool-profiles.md +1 -1
  16. package/docs/learning/lessons/L21-context-packs.md +5 -1
  17. package/docs/learning/lessons/L22-native-windows.md +2 -2
  18. package/docs/learning/lessons/L23-guided-setup.md +2 -2
  19. package/docs/learning/lessons/L24-okf-exchange.md +111 -0
  20. package/docs/learning/lessons/L25-playbooks.md +114 -0
  21. package/docs/learning/tracks/operator.md +8 -2
  22. package/docs/learning/tracks/practitioner.md +5 -3
  23. package/docs/learning/video-scripts/V24-okf-exchange.md +31 -0
  24. package/docs/learning/video-scripts/V25-playbooks.md +38 -0
  25. package/docs/native-windows.md +12 -0
  26. package/docs/open-knowledge-format.md +100 -0
  27. package/docs/operating.md +68 -0
  28. package/docs/privacy-and-data-flow.md +25 -0
  29. package/docs/quickstart.md +17 -1
  30. package/docs/storage.md +28 -0
  31. package/examples/eval/bundled-fake.json +1 -1
  32. package/kimi/skills/cairn-work/SKILL.md +13 -0
  33. package/mcp-memory-server/dist/context-pack-cli.js +54 -1
  34. package/mcp-memory-server/dist/context-pack.js +243 -47
  35. package/mcp-memory-server/dist/index.js +13 -1
  36. package/mcp-memory-server/dist/mcp-tool-catalog.js +1 -0
  37. package/mcp-memory-server/dist/note-store.js +44 -2
  38. package/mcp-memory-server/dist/okf.js +432 -0
  39. package/mcp-memory-server/dist/playbook-cli.js +321 -0
  40. package/mcp-memory-server/dist/playbook-receipt.js +245 -0
  41. package/mcp-memory-server/dist/playbook-schema.js +56 -0
  42. package/mcp-memory-server/dist/playbook.js +383 -0
  43. package/mcp-memory-server/package.json +4 -1
  44. package/opencode/command/cairn-work.md +13 -0
  45. package/package.json +2 -1
  46. package/pi/prompts/cairn-work.md +12 -0
  47. package/schemas/context-pack.schema.json +9 -0
  48. package/schemas/playbook.schema.json +29 -0
  49. package/scripts/bootstrap.sh +17 -0
  50. package/scripts/cairn-cli.mjs +2 -0
  51. package/scripts/completion.sh +26 -6
  52. package/scripts/doctor.sh +14 -1
  53. package/scripts/playbook-instructions.mjs +108 -0
  54. package/scripts/setup-core.mjs +1 -0
  55. package/scripts/setup.mjs +8 -0
  56. package/scripts/sync-kimi-assets.sh +3 -3
  57. package/scripts/sync-opencode-memory-assets.sh +2 -1
  58. package/scripts/sync-pi-assets.sh +2 -1
  59. package/scripts/test-cli-dispatch.sh +2 -0
  60. package/scripts/test-completion.sh +11 -2
  61. package/scripts/test-graph-harness-adapters.sh +9 -3
  62. package/scripts/test-harness-registry.sh +11 -0
  63. package/scripts/test-learning-docs.sh +23 -2
  64. package/scripts/test-package-install.sh +26 -0
  65. package/scripts/test-playbook-instructions.sh +60 -0
  66. package/scripts/test-windows-native.mjs +7 -0
  67. package/scripts/uninstall.sh +16 -1
  68. package/scripts/windows-platform.mjs +24 -3
  69. package/templates/playbook-agent-instructions.md.template +14 -0
  70. package/templates/playbooks.json.template +5 -0
package/CHANGELOG.md CHANGED
@@ -5,6 +5,48 @@ All notable user-facing changes are documented here. This project follows
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [2.15.0] - 2026-08-17
9
+
10
+ ### Added
11
+
12
+ - Add strict local project playbooks with `minimal`, `balanced`, and `strict`
13
+ profiles, bounded canonical action overrides, deterministic start/check/finish
14
+ decisions, enforcement for missing `must` evidence, and stable policy and
15
+ decision digests.
16
+ - Add private project-bound outcome receipts with bounded unauthenticated actor
17
+ provenance, lifecycle inspection, and doctor validation without storing
18
+ prompts, source bodies, changed paths, diffs, credentials, or command output.
19
+ - Add ownership-safe managed `AGENTS.md` guidance plus thin Claude, OpenCode,
20
+ Pi, and Kimi `/cairn-work` adapters; Codex and Qwen use the portable project
21
+ instructions without automatic skill activation.
22
+ - Add an implementation-ready future team-mode contract covering authenticated
23
+ identity, scopes, ACLs, review queues, audit history, tenant isolation,
24
+ retention, migration, and release gates while keeping team operation deferred.
25
+ - Add a release-verified playbook lesson, course checkpoint, feature/curriculum
26
+ coverage, and companion video script.
27
+
28
+ ### Changed
29
+
30
+ - Guided setup and tracked bootstrap now install the balanced policy and safely
31
+ reconcile the managed agent-instruction block. Untracked bootstrap leaves
32
+ shared `AGENTS.md` untouched.
33
+ - Extend completion, native Windows, package, doctor, and backup-first uninstall
34
+ coverage to the playbook lifecycle and harness adapters.
35
+
36
+ ## [2.14.0] - 2026-08-17
37
+
38
+ ### Added
39
+
40
+ - Add validation and immutable context-pack import for Open Knowledge Format
41
+ 0.1/0.2 bundles, preserving structured source, trust, freshness, and gap
42
+ diagnostics without activating computations or instructions.
43
+ - Add deterministic digest-keyed document links and the read-only,
44
+ closed-world `context_pack_related` MCP observation.
45
+ - Add allowlist-only, redacted OKF 0.2 export for named project Markdown and
46
+ promoted shared notes, with a no-write preview and exact-digest atomic apply.
47
+ - Add offline retrieval/freshness/gap regression fixtures and an explicit
48
+ decision gate for any future external knowledge-system adapter.
49
+
8
50
  ## [2.13.1] - 2026-08-17
9
51
 
10
52
  ### Fixed
@@ -356,7 +398,9 @@ stored memories.
356
398
  - Preserve executable permissions and Bash 3.2 portability on macOS.
357
399
  - Add backup-first uninstall and SQLite-safe memory export/import guidance.
358
400
 
359
- [Unreleased]: https://github.com/cairnkeep/cairnkeep/compare/v2.13.1...HEAD
401
+ [Unreleased]: https://github.com/cairnkeep/cairnkeep/compare/v2.15.0...HEAD
402
+ [2.15.0]: https://github.com/cairnkeep/cairnkeep/compare/v2.14.0...v2.15.0
403
+ [2.14.0]: https://github.com/cairnkeep/cairnkeep/compare/v2.13.1...v2.14.0
360
404
  [2.13.1]: https://github.com/cairnkeep/cairnkeep/compare/v2.13.0...v2.13.1
361
405
  [2.13.0]: https://github.com/cairnkeep/cairnkeep/compare/v2.12.0...v2.13.0
362
406
  [2.12.0]: https://github.com/cairnkeep/cairnkeep/compare/v2.11.0...v2.12.0
package/README.md CHANGED
@@ -32,11 +32,11 @@ verification, and the first remember/recall cycle.
32
32
  ## Status
33
33
 
34
34
  Shipped: the memory server, the `cairn` CLI (`setup`, `bootstrap`, `memory-server`, `sync`, `sync-pi`, `sync-kimi`,
35
- `doctor`, `trajectory`, `artifact`, `evidence`, `mcp-tools`, `pack`, `notes`, `memory`, `eval`, `audit-timer`, `completion`, `uninstall`) installable via
35
+ `doctor`, `playbook`, `trajectory`, `artifact`, `evidence`, `mcp-tools`, `pack`, `notes`, `memory`, `eval`, `audit-timer`, `completion`, `uninstall`) installable via
36
36
  `npm i -g @cairnkeep/cli`, and the
37
37
  operating layer (commands,
38
38
  agents, hooks) installed on Claude Code and OpenCode, plus the native Pi
39
- trajectory extension and thin Pi/Kimi graph adapters. The generic launchers
39
+ trajectory extension and thin Pi/Kimi graph and playbook adapters. The generic launchers
40
40
  expose wrapper seams (`.ai/pre-launch.sh`/`.ai/pre-launch.ps1`,
41
41
  `CAIRN_EXTRA_SETTINGS`, `.ai/post-exit.sh`/`.ai/post-exit.ps1`) so an enterprise wrapper can add provider/credential setup
42
42
  without forking them. Also shipped: context exploration (`/context-explore`) and
@@ -48,6 +48,9 @@ Version 2.12 adds a declarative harness registry, first-class Codex project
48
48
  setup, and a shorter path from installation to verified recall.
49
49
  Version 2.13 adds opt-in local Git-linked work evidence around generated harness
50
50
  launchers, including native Windows, without capturing prompts or replacing Git.
51
+ Version 2.15 adds bounded project playbooks that help agents select existing
52
+ recall, planning, verification, review, security, documentation, and learning
53
+ steps without becoming an agent runtime or granting approval.
51
54
 
52
55
  ## Compatibility
53
56
 
@@ -199,6 +202,19 @@ patterns/transactional-migrations: Use transactional migrations for schema chang
199
202
  The exact command rendering depends on the client. Any MCP client can call
200
203
  `memory_write` and `memory_search` directly.
201
204
 
205
+ Setup also installs a balanced `.ai/playbooks.json` policy and an ownership-safe
206
+ managed block in `AGENTS.md`. Agents can evaluate it at task boundaries:
207
+
208
+ ```bash
209
+ cairn playbook check start --complexity standard --familiarity mixed
210
+ cairn playbook check finish --changed src/example.ts --completed verify.tests --enforce
211
+ ```
212
+
213
+ The result selects only existing Cairnkeep actions. It never runs them, enables
214
+ a disabled capability, grants approval, or promotes memory automatically. Use
215
+ `cairn playbook status`, `set minimal|balanced|strict`, and `enable|disable` to
216
+ inspect or customize the project policy.
217
+
202
218
  For Codex CLI, `cairn setup --harness codex --memory local` writes the
203
219
  project-scoped `.codex/config.toml` entry and both POSIX and native Windows
204
220
  launchers. Review the configuration and trust the project before launching.
@@ -322,9 +338,13 @@ search):
322
338
  | `CAIRN_AGENTFS_BASE_DIR` | Base dir for global memory scopes (default `~/.cairnkeep`) |
323
339
  | `CAIRN_MCP_TOOL_PROFILE` | Process override for MCP exposure: `full`, `read-only`, or `custom` |
324
340
  | `CAIRN_MCP_ALLOWED_TOOLS` | Comma-separated exact allowlist required by a custom process profile |
325
- | `CAIRN_CONTEXT_PACKS` | Opt in to local context-pack list/search/read tools (default off) |
341
+ | `CAIRN_CONTEXT_PACKS` | Opt in to local context-pack list/search/read/related tools (default off) |
326
342
  | `CAIRN_CONTEXT_PACK_HTTP` | Separately consent to context-pack tools over authenticated HTTP (default off) |
327
343
  | `CAIRN_PACK_BASE_DIR` | Immutable pack objects, source records, pointers, and retrieval cache (default `~/.cairnkeep/packs`) |
344
+ | `CAIRN_PLAYBOOK_PROFILE` | Process-only playbook profile override: `minimal`, `balanced`, or `strict` (project default: `balanced`) |
345
+ | `CAIRN_PLAYBOOK_ACTOR` | Optional local receipt label; caller-supplied and unauthenticated in v2.15 |
346
+ | `CAIRN_PLAYBOOK_ACTOR_KIND` | Optional local actor kind: `user`, `agent`, or `service` |
347
+ | `CAIRN_PLAYBOOK_SESSION` | Optional bounded session label used by playbook decisions and receipts |
328
348
  | `CAIRN_TRAJECTORY_CAPTURE` | Opt in to local structured session capture (`1`, `true`, `yes`, or `on`; default off) |
329
349
  | `CAIRN_TRAJECTORY_SESSION_MAX_BYTES` | Maximum serialized bytes per captured session (default `5242880`, 5 MiB) |
330
350
  | `CAIRN_TRAJECTORY_STORE_MAX_BYTES` | Maximum logical bytes across local trajectories (default `268435456`, 256 MiB) |
@@ -389,10 +409,12 @@ cannot bypass capability or feature gates. See
389
409
 
390
410
  Context packs are immutable, digest-addressed local document/skill bundles.
391
411
  They are installed and project-pinned manually; no background Git sync occurs.
392
- With `CAIRN_CONTEXT_PACKS=1`, enabled documents are searchable through three
393
- read-only MCP tools. Skills remain invisible until their exact file digest is
412
+ With `CAIRN_CONTEXT_PACKS=1`, enabled documents are searchable and their local
413
+ links traversable through four read-only MCP tools. Skills remain invisible until their exact file digest is
394
414
  approved, and are never copied or executed. See
395
- [Immutable context packs](docs/context-packs.md).
415
+ [Immutable context packs](docs/context-packs.md). OKF 0.1/0.2 import and
416
+ privacy-reviewed OKF 0.2 export are documented in
417
+ [Open Knowledge Format exchange](docs/open-knowledge-format.md).
396
418
 
397
419
  ### Managed capability contract (opt-in)
398
420
 
@@ -581,6 +603,7 @@ exposes trajectory data. See the [operating guide](docs/operating.md#compaction-
581
603
  - **Privacy and data flow** — [docs/privacy-and-data-flow.md](docs/privacy-and-data-flow.md)
582
604
  - **MCP tool profiles** — [docs/mcp-tool-profiles.md](docs/mcp-tool-profiles.md)
583
605
  - **Immutable context packs** — [docs/context-packs.md](docs/context-packs.md)
606
+ - **Open Knowledge Format exchange** — [docs/open-knowledge-format.md](docs/open-knowledge-format.md)
584
607
  - **Validated skill improvement** — [docs/skill-improvement.md](docs/skill-improvement.md)
585
608
  - **Git providers** — [docs/git-providers.md](docs/git-providers.md)
586
609
  - **Support** — [SUPPORT.md](SUPPORT.md)
@@ -0,0 +1,19 @@
1
+ ---
2
+ description: Evaluate Cairnkeep's project playbook at task start, scope changes, or finish
3
+ argument-hint: "start|check|finish [cairn playbook check options]"
4
+ allowed-tools: Bash
5
+ ---
6
+
7
+ <!-- managed-by:cairnkeep -->
8
+ # Cairnkeep playbook check
9
+
10
+ Run exactly one local command:
11
+
12
+ ```text
13
+ cairn playbook check $ARGUMENTS
14
+ ```
15
+
16
+ Accept `start`, `check`, or `finish` followed only by check options documented by
17
+ `cairn playbook --help`. Safely quote every argument. Return the decision
18
+ and explain which `must`, `should`, and `may` actions you will follow. Never
19
+ claim that this command executed an action or granted approval.
@@ -61,9 +61,11 @@ switches only the named project.
61
61
 
62
62
  ## Retrieval and skill approval
63
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,
64
+ Set `CAIRN_CONTEXT_PACKS=1` and restart the memory server to register the
65
+ read-only, closed-world tools: `context_pack_list`, `context_pack_search`,
66
+ `context_pack_read`, and `context_pack_related`. The related tool is available
67
+ for imported OKF bundles and traverses only deterministic local document links.
68
+ Every file or search result includes pack ID, version,
67
69
  pack digest, path, kind, and file digest. Search uses the existing optional
68
70
  embedding configuration and falls back to deterministic substring matching if
69
71
  configuration or the endpoint is unavailable. Embedding cache data is stored
@@ -92,3 +94,11 @@ Authenticated HTTP deployments need the separate
92
94
  `CAIRN_CONTEXT_PACKS=1`, the existing bearer token, Host/CORS guards, and a
93
95
  project header. Pack digests prove integrity, not publisher authenticity.
94
96
  Publisher signatures remain future work.
97
+
98
+ ## Open Knowledge Format exchange
99
+
100
+ Use `cairn pack validate-okf` and `cairn pack import-okf` to consume OKF 0.1 or
101
+ 0.2 as an immutable pack. Use the preview-and-confirm `cairn pack export-okf`
102
+ workflow to export only named project Markdown and promoted shared notes. See
103
+ [Open Knowledge Format exchange](open-knowledge-format.md) for the provenance,
104
+ graph, privacy, regression, and external-adapter decision contracts.
@@ -0,0 +1,145 @@
1
+ # Team mode design contract
2
+
3
+ **Status:** design only; not shipped in Cairnkeep 2.15
4
+
5
+ Cairnkeep 2.15 remains a local, single-operator product. Its playbook receipts
6
+ carry provider-neutral project and actor fields so a future authenticated team
7
+ service can preserve provenance, but those fields are caller assertions and
8
+ must not be used for authorization. This document defines the boundary a team
9
+ implementation must satisfy before that statement can change.
10
+
11
+ ## Goal and non-goals
12
+
13
+ Team mode would let an organization share reviewed memory, context packs,
14
+ policies, decisions, and workflow evidence without turning private local
15
+ stores into a common bucket. It must retain local-first operation and explicit
16
+ promotion. It is not collaborative editing, an agent runtime, employee
17
+ monitoring, automatic message ingestion, or an implicit channel for prompts,
18
+ credentials, source trees, or session transcripts.
19
+
20
+ ## Identity and project scope
21
+
22
+ The service must authenticate a human or workload before accepting a team
23
+ operation. Stable internal subject IDs, organization IDs, and canonical project
24
+ IDs are authoritative; display names, email addresses, Git usernames, and the
25
+ current 2.15 `--actor` value are labels only. Authentication adapters may use
26
+ OIDC/OAuth, mTLS workload identity, or a locally administered service token,
27
+ but normalized claims must include issuer, subject, audience, authentication
28
+ time, and credential class. Tokens and raw identity claims never enter memory
29
+ or receipts.
30
+
31
+ Every object has exactly one scope:
32
+
33
+ | Scope | Owner | Default visibility | Promotion |
34
+ |---|---|---|---|
35
+ | personal | authenticated subject | that subject | explicit review request |
36
+ | project | canonical project | authorized project members | project review policy |
37
+ | team | organization collection | named collection members | collection review policy |
38
+
39
+ Reads never fall through from one project or organization to another. A
40
+ personal object is not discoverable through project search until its selected,
41
+ redacted form has been approved and copied as a new immutable project object.
42
+
43
+ ## Authorization
44
+
45
+ Authorization must be deny-by-default and evaluated server-side after
46
+ authentication. Minimum roles are `reader`, `contributor`, `reviewer`,
47
+ `maintainer`, and `auditor`. Roles map to explicit operations rather than broad
48
+ administrator shortcuts:
49
+
50
+ - readers may list and read approved project objects;
51
+ - contributors may create private proposals and submit review requests;
52
+ - reviewers may approve or reject proposals but cannot alter their bytes;
53
+ - maintainers may manage membership, retention, and project policy but cannot
54
+ approve their own content unless an explicit small-team exception is enabled
55
+ and audited;
56
+ - auditors may read append-only audit records, not content by default.
57
+
58
+ Capability contracts and MCP profiles remain an additional intersection. An
59
+ ACL cannot enable a disabled capability, broaden a tool profile, satisfy a
60
+ human confirmation, or make a destructive operation read-only.
61
+
62
+ ## Review and conflict model
63
+
64
+ Shared durable memory and policies use immutable proposals. A proposal binds
65
+ the source scope, source object digest, redacted candidate bytes, base revision,
66
+ target scope, submitter identity, policy digest, and expiry. Approval creates a
67
+ new immutable revision and an audit event; it never mutates the proposal.
68
+
69
+ Concurrent proposals against the same base remain separate. The service may
70
+ compute a deterministic conflict report but must not select or merge a winner.
71
+ A reviewer resolves the conflict by accepting one proposal or submitting new
72
+ combined bytes. Playbook distribution follows the same review path and may not
73
+ silently replace a project override.
74
+
75
+ ## Audit and receipts
76
+
77
+ Accepted operations append a canonical event containing organization,
78
+ project, subject, credential class, operation, object identity and digests,
79
+ authorization decision, policy revision, request ID, server time, and result.
80
+ Rejected privileged operations append a value-free denial event. Audit records
81
+ exclude prompt bodies, source content, secrets, tokens, full environment
82
+ snapshots, and unredacted personal data.
83
+
84
+ Audit history is append-only, hash-linked, bounded by an explicit retention
85
+ class, exportable by auditors, and covered by backup/restore verification.
86
+ Corrections append superseding events; they never rewrite history. A team
87
+ playbook receipt must distinguish the authenticated server subject from any
88
+ agent label supplied by a harness.
89
+
90
+ ## Tenant isolation and storage
91
+
92
+ Organization and project identity must be part of every storage key and every
93
+ cache key. Database row policies or physically separate stores must be tested
94
+ with cross-tenant negative cases. Context-pack objects may be content-addressed
95
+ globally only when existence, metadata, timing, and deduplication cannot leak
96
+ across tenants; otherwise storage is tenant-local. Encryption keys, backup
97
+ namespaces, search indexes, embedding caches, temporary files, logs, and rate
98
+ limits observe the same boundary.
99
+
100
+ The HTTP deployment must retain authentication, Host and CORS validation,
101
+ request-size limits, timeouts, and explicit feature consent. No unauthenticated
102
+ compatibility mode may expose team data.
103
+
104
+ ## Retention, deletion, and portability
105
+
106
+ Each scope declares retention for content, proposals, receipts, audit events,
107
+ indexes, and backups. Legal hold is an explicit audited state. Deletion first
108
+ revokes visibility, then schedules content and derived indexes for removal;
109
+ immutable audit tombstones retain only the minimum identifiers required by the
110
+ declared policy. An organization export uses open, versioned schemas with
111
+ digests and includes neither credentials nor another tenant's deduplicated
112
+ metadata.
113
+
114
+ ## Migration and compatibility
115
+
116
+ Enabling team mode is an explicit deployment and project decision. Existing
117
+ local memory, packs, policies, and receipts remain local until individually
118
+ selected for a previewable import. The importer validates schemas and digests,
119
+ shows destination scope and redactions, and requires confirmation. There is no
120
+ automatic upload, background synchronization, or inference from local paths.
121
+
122
+ Offline local commands keep working when a team service is unavailable. Local
123
+ and server configuration use separate names and provenance so failover cannot
124
+ mistake an unverified local actor for an authenticated subject. Downgrade and
125
+ export paths must be documented before general availability.
126
+
127
+ ## Admission gates
128
+
129
+ Team mode is not releasable until all of the following have evidence:
130
+
131
+ 1. Threat model and independent security review covering authentication,
132
+ authorization, confused-deputy attacks, tenant isolation, and audit integrity.
133
+ 2. Cross-tenant tests for every read, search, cache, export, backup, and error
134
+ path, plus concurrent proposal and stale-policy tests.
135
+ 3. A privacy review with data inventory, retention/deletion exercises, and
136
+ proof that local projects never upload implicitly.
137
+ 4. Restore and disaster-recovery rehearsal preserving scope, audit links, and
138
+ revision digests.
139
+ 5. A migration pilot using synthetic data, followed by an explicitly approved
140
+ limited real-world pilot with rollback.
141
+ 6. Operational ownership for identity-provider failures, revocation latency,
142
+ incident response, audit export, and key rotation.
143
+
144
+ Until these gates pass, Cairnkeep documentation and output must describe actor
145
+ identity as unverified and team support as deferred.
@@ -14,24 +14,25 @@ Cairnkeep commands, hooks or native trajectory capture.
14
14
 
15
15
  | Harness | Supported surface | Runtime status |
16
16
  |---|---|---|
17
- | Claude Code | Memory MCP, commands, agents, hooks, launcher | Exercised by Cairnkeep tests |
18
- | OpenCode | Memory MCP, commands, workflows, plugins, launcher | Exercised by Cairnkeep tests |
19
- | Kimi Code | Memory MCP, `AGENTS.md`, launcher, opt-in graph Skill | Launcher tested; remote MCP tested with Kimi Code 0.30.0; graph Skill contract-tested |
20
- | Qwen Code | Memory MCP, launcher | Launcher tested; stdio and remote MCP tested with Qwen Code 0.21.1 |
21
- | Pi | Memory MCP through maintained local stdio extension, native opt-in trajectory extension, launcher, and graph prompt | Pi 0.84.1 validated minimum; deterministic and real bridge/lifecycle tests |
22
- | Codex CLI | Project-scoped memory MCP and launcher | Setup and launcher contract-tested on POSIX and simulated native Windows; project trust remains operator-controlled |
17
+ | Claude Code | Memory MCP, commands (including `/cairn-work`), agents, hooks, launcher | Exercised by Cairnkeep tests |
18
+ | OpenCode | Memory MCP, commands (including `/cairn-work`), workflows, plugins, launcher | Exercised by Cairnkeep tests |
19
+ | Kimi Code | Memory MCP, `AGENTS.md`, launcher, opt-in graph and cairn-work Skills | Launcher tested; remote MCP tested with Kimi Code 0.30.0; Skills contract-tested |
20
+ | Qwen Code | Memory MCP, launcher, project `AGENTS.md` playbook guidance | Launcher tested; stdio and remote MCP tested with Qwen Code 0.21.1 |
21
+ | Pi | Memory MCP through maintained local stdio extension, native opt-in trajectory extension, launcher, graph and cairn-work prompts | Pi 0.84.1 validated minimum; deterministic and real bridge/lifecycle tests |
22
+ | Codex CLI | Project-scoped memory MCP, launcher, and project `AGENTS.md` playbook guidance | Setup and launcher contract-tested on POSIX and simulated native Windows; project trust remains operator-controlled |
23
23
  | Other MCP clients | Memory plus optional domain-knowledge and context-pack tools | Protocol-compatible; not automatically runtime-tested |
24
24
 
25
25
  Only Claude Code and OpenCode currently receive the complete operating layer.
26
- Kimi receives one narrow graph Skill, while Pi receives one narrow graph prompt;
26
+ Kimi receives narrow graph and playbook Skills, while Pi receives matching narrow prompts;
27
27
  neither is equivalent to the full commands, agents, hooks, and plugins surface.
28
28
  Qwen skills and hooks still require harness-specific adaptation and validation.
29
- Codex receives a project-local MCP entry and launcher, but not Cairnkeep-specific
30
- commands, hooks, agents, or automatic skill activation.
29
+ Codex receives a project-local MCP entry, launcher, and portable playbook
30
+ instructions, but not Cairnkeep-specific commands, hooks, agents, or automatic
31
+ skill activation.
31
32
 
32
33
  Every MCP client receives complete tool annotations and may use a Cairnkeep
33
34
  least-authority profile independent of harness assets. Context-pack tools are
34
- ordinary read-only MCP tools and require the pack feature gate; authenticated
35
+ ordinary read-only MCP tools (including imported-OKF link traversal) and require the pack feature gate; authenticated
35
36
  HTTP additionally requires separate pack-HTTP consent. Approved pack skills
36
37
  remain context documents, not native harness Skills or automatic instructions.
37
38
 
@@ -48,7 +49,7 @@ extension; it does not expand the other support levels.
48
49
 
49
50
  Run `cairn sync-pi --apply` explicitly to install
50
51
  `extensions/cairnkeep-memory.ts`, `extensions/cairnkeep-trajectory.ts`, and
51
- `prompts/graphify.md` under the Pi agent root. Use `--check` for drift and
52
+ `prompts/graphify.md`, and `prompts/cairn-work.md` under the Pi agent root. Use `--check` for drift and
52
53
  `cairn doctor` from a project that selected Pi for setup-aware diagnosis. Setup
53
54
  reports this machine command but never runs it automatically. Uninstall removes
54
55
  only those owned paths, backup-first.
@@ -1,7 +1,7 @@
1
1
  # Curriculum Coverage Map
2
2
 
3
- **Baseline:** Cairnkeep 2.13.1
4
- **Last reviewed:** 2026-08-13
3
+ **Baseline:** Cairnkeep 2.15.0
4
+ **Last reviewed:** 2026-08-17
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
@@ -39,6 +39,8 @@ been rehearsed.
39
39
  | Native Windows x64 CLI, hooks, ACLs, scheduling, and recovery | L22 | L22 | Ready; PowerShell-native |
40
40
  | Guided project setup, selected harness state, and Git-less limitations | L03 | L03 and L23 | Ready |
41
41
  | Pi local stdio memory bridge, trusted annotation details, and explicit lifecycle | L23 | L23 | Ready; Pi 0.84.1 validated minimum |
42
+ | OKF 0.1/0.2 validation/import, provenance, links, regressions, and reviewed 0.2 export | L24 | L24 | Ready; local/offline by default |
43
+ | Bounded project playbooks, managed agent guidance, enforcement, and private receipts | L25 | L25 | Ready; balanced/local by default; actor identity unverified |
42
44
 
43
45
  ## Release Review
44
46
 
@@ -69,9 +71,10 @@ repository remains the canonical source for explanations and scripts.
69
71
  | `course-07-evaluation` | L16-L17 | Package-owned offline fixture and design boundary |
70
72
  | `course-08-graph` | L18 | Optional local structural graph workflow |
71
73
  | `course-09-skill` | L19 | Validated skill improvement in a disposable project |
72
- | `course-10-trust-context` | L20-L21 | MCP authority profiles and offline context-pack lifecycle |
74
+ | `course-10-trust-context` | L20-L21 and L24 | MCP authority profiles, offline context-pack lifecycle, and reviewed OKF exchange |
73
75
  | `course-11-windows` | L22 | Native PowerShell lifecycle, ACL inspection, and reversible uninstall |
74
76
  | `course-12-guided-setup` | L23 | Deterministic setup, Pi local stdio, recovery, and backup-first uninstall |
77
+ | `course-13-playbooks` | L25 | Policy profiles, lifecycle decisions, enforcement, receipts, and ownership-safe instructions |
75
78
 
76
79
  ## Command Ownership
77
80
 
@@ -87,12 +90,13 @@ against `cairn help` so a new command cannot bypass a curriculum decision.
87
90
  | `cairn sync-pi` | L13 and L23 |
88
91
  | `cairn sync-kimi` | L02 |
89
92
  | `cairn doctor` | L03; advanced repair in L13-L14 |
93
+ | `cairn playbook` | L25 |
90
94
  | `cairn trajectory` | L13 |
91
95
  | `cairn artifact` | L13 |
92
96
  | `cairn evidence` | L13 |
93
97
  | `cairn capabilities` | L15 |
94
98
  | `cairn mcp-tools` | L20 |
95
- | `cairn pack` | L21 |
99
+ | `cairn pack` | L21 and L24 |
96
100
  | `cairn notes` | L13 |
97
101
  | `cairn eval` | L16 |
98
102
  | `cairn skill` | L19 |
@@ -1,6 +1,6 @@
1
1
  # Cairnkeep feature guide
2
2
 
3
- **Baseline:** Cairnkeep 2.13.1
3
+ **Baseline:** Cairnkeep 2.15.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
@@ -15,6 +15,11 @@ trust. See [L03](lessons/L03-first-project.md) and
15
15
  Version 2.13 adds local Git-linked work evidence around all generated harness
16
16
  launchers; [L13](lessons/L13-session-evidence.md) covers its privacy and
17
17
  retention contract.
18
+ Version 2.14 adds OKF 0.1/0.2 import, structured provenance,
19
+ deterministic links, and reviewed OKF 0.2 export; see
20
+ [L24](lessons/L24-okf-exchange.md).
21
+ Version 2.15 adds local bounded playbooks and private outcome receipts; see
22
+ [L25](lessons/L25-playbooks.md).
18
23
 
19
24
  ## The three-layer model
20
25
 
@@ -43,7 +48,8 @@ Run setup in that order, then confirm `cairn doctor`, `cairn sync --check`, and
43
48
  | 7 | Evaluation and ablation | A concrete change needs bounded measurement |
44
49
  | 8 | Validated skill improvement | Repeated resolved hindsight warrants a measured skill change |
45
50
  | 9 | Least-authority MCP profiles | A client should receive fewer tools than the default catalog |
46
- | 10 | Immutable context packs | Reviewed external context should be pinned without becoming memory |
51
+ | 10 | Immutable context packs and OKF exchange | Reviewed external context should be pinned or exchanged without becoming memory |
52
+ | 11 | Bounded project playbooks | Agents should select proportional workflow checks under inspectable local policy |
47
53
 
48
54
  Every stage is independently useful. Stages 4-8 are opt-in and are not
49
55
  prerequisites for ordinary memory.
@@ -59,6 +65,7 @@ prerequisites for ordinary memory.
59
65
  | Repository quality | `/repo-review`, `/security-audit` | On-demand workflow; findings are hypotheses until reproduced | Require file/line evidence and regression tests | `course-03-quality` |
60
66
  | Guided project setup | `cairn setup PATH --git init\|existing\|none --harness LIST --memory local\|none --yes` | Reconciles only selected project assets from one harness registry; private `.ai/cairnkeep.json`; machine sync is never automatic | Repeat deterministically, run doctor, or replay its recovery command; Git-less mode remains limited | `course-12-guided-setup` |
61
67
  | Codex project memory | Select `--harness codex --memory local` | Writes `.codex/config.toml` plus POSIX/native Windows launchers; local stdio; user-wide configuration and trust remain untouched | Review the MCP table, accept Codex project trust, run doctor, and relaunch; uninstall is backup-first | `course-01-bootstrap` |
68
+ | Workflow playbooks | `cairn playbook check start|check|finish`; project `minimal`, `balanced`, or `strict` policy | Balanced by default; private `.ai/playbooks.json`; optional receipts in `.agentfs/playbooks/`; checks are offline and execute nothing | Inspect status/digests, enforce truthful `must` evidence, inspect receipts, reset overrides, remove only the managed `AGENTS.md` block | `course-13-playbooks` |
62
69
 
63
70
  ## Storage and optional topology
64
71
 
@@ -73,6 +80,7 @@ prerequisites for ordinary memory.
73
80
  | 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` |
74
81
  | 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` |
75
82
  | 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` |
83
+ | OKF exchange | `cairn pack validate-okf`, `import-okf`, and preview-confirm `export-okf` | Local import/export by default; explicit file/shared-note allowlist; redacted output | Inspect diagnostics/provenance/output list; exact-digest apply; disable/remove imported pack | `course-10-trust-context` |
76
84
  | Pi local stdio memory | Select Pi during setup, then explicitly run `cairn sync-pi --apply` | Local memory-server child; dynamic effective tool catalog; annotations retained in trusted details, not a native Pi field | `cairn sync-pi --check`, `cairn doctor`, cancel one call, then observe awaited shutdown with no orphan | `course-12-guided-setup` |
77
85
 
78
86
  ## Evidence, governance, and measurement
@@ -89,7 +97,7 @@ prerequisites for ordinary memory.
89
97
  | 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` |
90
98
  | 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` |
91
99
  | 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` |
92
- | General meta-agent loop | Not shipped | Not applicable | Skill-file lifecycle only; no generic configuration loop or scheduler | `course-07-evaluation` |
100
+ | General meta-agent loop | Not shipped | Not applicable | Playbooks select bounded existing actions; no generic configuration loop, command language, or scheduler | `course-07-evaluation` |
93
101
  | 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` |
94
102
 
95
103
  ## Harness and maintenance checks
@@ -98,8 +106,8 @@ prerequisites for ordinary memory.
98
106
  - For Codex, review `.codex/config.toml` and accept project trust; no machine
99
107
  sync is required for the memory-only integration.
100
108
  - Run `cairn sync --check` after every core upgrade; apply only reported drift.
101
- - Run `cairn sync-pi --check` when the Pi memory/trajectory/graph assets are installed.
102
- - Run `cairn sync-kimi --check` when the optional Kimi graph Skill is installed.
109
+ - Run `cairn sync-pi --check` when the Pi memory/trajectory/graph/playbook assets are installed.
110
+ - Run `cairn sync-kimi --check` when the optional Kimi graph/playbook Skills are installed.
103
111
  - Use `cairn doctor --repair` only after preserving the affected store and only
104
112
  for repairable derived indexes/metadata.
105
113
  - Use `cairn uninstall --dry-run` before uninstall; durable memory is retained
@@ -55,6 +55,8 @@ expanded only after their labs are executable.
55
55
  | L21 | [Immutable context packs and skill approval](lessons/L21-context-packs.md) | Ready | 40 min |
56
56
  | L22 | [Operate Cairnkeep on native Windows](lessons/L22-native-windows.md) | Ready | 30 min |
57
57
  | L23 | [Guided setup and Pi memory](lessons/L23-guided-setup.md) | Ready | 35 min |
58
+ | L24 | [Reviewed knowledge exchange](lessons/L24-okf-exchange.md) | Ready | 35 min |
59
+ | L25 | [Bounded workflow playbooks](lessons/L25-playbooks.md) | Ready | 35 min |
58
60
 
59
61
  The [curriculum coverage map](CURRICULUM-MAP.md) records where every public
60
62
  feature is introduced, practised, and operated. It also marks design-only work
@@ -73,7 +75,7 @@ Every complete lesson contains:
73
75
 
74
76
  The learner should never need optional infrastructure to complete L00-L06.
75
77
  Remote memory, RAG, routing, containers, graph indexing, structured capture,
76
- typed nodes, capability governance, evaluation, and context packs are separate
78
+ typed nodes, capability governance, evaluation, context packs, OKF exchange, and playbooks are separate
77
79
  opt-in modules. MCP profiles are restrictive and never activate an optional
78
80
  feature.
79
81
 
@@ -3,7 +3,7 @@
3
3
  **Status:** Ready
4
4
  **Track:** Quickstart
5
5
  **Time:** 10 minutes
6
- **Tested with:** Cairnkeep 2.13.1
6
+ **Tested with:** Cairnkeep 2.15.0
7
7
 
8
8
  ## Outcome
9
9
 
@@ -3,7 +3,7 @@
3
3
  **Status:** Ready
4
4
  **Track:** Quickstart
5
5
  **Time:** 15 minutes
6
- **Tested with:** Cairnkeep 2.13.1
6
+ **Tested with:** Cairnkeep 2.15.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.13.1
29
+ podman pull ghcr.io/cairnkeep/cairnkeep:2.14.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.13.1 stdio
41
+ ghcr.io/cairnkeep/cairnkeep:2.14.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.13.1 and Node.js 22 or newer
6
+ **Tested with:** Cairnkeep 2.15.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.13.1
50
+ npm install --global @cairnkeep/cli@2.14.0
51
51
  cairn --version
52
52
  ```
53
53
 
@@ -3,7 +3,7 @@
3
3
  **Status:** Ready
4
4
  **Track:** Quickstart
5
5
  **Time:** 25 minutes
6
- **Tested with:** Cairnkeep 2.13.1
6
+ **Tested with:** Cairnkeep 2.15.0
7
7
 
8
8
  ## Outcome
9
9
 
@@ -3,7 +3,7 @@
3
3
  **Status:** Ready
4
4
  **Track:** Evidence and Evaluation
5
5
  **Time:** 50 minutes
6
- **Tested with:** Cairnkeep 2.13.1
6
+ **Tested with:** Cairnkeep 2.15.0
7
7
 
8
8
  ## Outcome
9
9
 
@@ -1,7 +1,7 @@
1
1
  # L20 - Least-authority MCP tool profiles
2
2
 
3
3
  **Status:** Ready
4
- **Tested with:** Cairnkeep 2.13.1 and Node.js 22 or newer
4
+ **Tested with:** Cairnkeep 2.15.0 and Node.js 22 or newer
5
5
  **Time:** 25 minutes
6
6
 
7
7
  ## Outcome
@@ -1,7 +1,7 @@
1
1
  # L21 - Immutable context packs and skill approval
2
2
 
3
3
  **Status:** Ready
4
- **Tested with:** Cairnkeep 2.13.1 and Node.js 22 or newer
4
+ **Tested with:** Cairnkeep 2.15.0 and Node.js 22 or newer
5
5
  **Time:** 40 minutes
6
6
 
7
7
  ## Outcome
@@ -77,3 +77,7 @@ rm -rf "$lab"
77
77
  - `CAIRN_CONTEXT_PACKS=1` enables local read-only tools only after restart.
78
78
  - HTTP additionally requires `CAIRN_CONTEXT_PACK_HTTP=1` and existing auth.
79
79
  - A digest proves integrity, not publisher authenticity.
80
+
81
+ Continue with [L24](L24-okf-exchange.md) for structured OKF provenance,
82
+ deterministic related-document retrieval, regression diagnostics, and the
83
+ privacy-reviewed export workflow.
@@ -3,7 +3,7 @@
3
3
  **Status:** Ready
4
4
  **Track:** Operator
5
5
  **Time:** 30 minutes
6
- **Tested with:** Cairnkeep 2.13.1, Windows x64, and Node.js 22 or newer
6
+ **Tested with:** Cairnkeep 2.15.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.13.1
19
+ npm install --global @cairnkeep/cli@2.14.0
20
20
  cairn version
21
21
 
22
22
  $Lab = Join-Path $env:TEMP 'Cairnkeep Windows Lab'