@cairnkeep/cli 2.6.0 → 2.8.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 (80) hide show
  1. package/CHANGELOG.md +35 -1
  2. package/README.md +45 -8
  3. package/bin/cairn +21 -3
  4. package/claude/commands/graphify.md +46 -55
  5. package/docs/design/meta-agent.md +39 -35
  6. package/docs/harness-compatibility.md +13 -5
  7. package/docs/learning/CURRICULUM-MAP.md +10 -3
  8. package/docs/learning/FEATURE-GUIDE.md +8 -5
  9. package/docs/learning/README.md +16 -14
  10. package/docs/learning/lessons/L00-why-cairnkeep.md +1 -5
  11. package/docs/learning/lessons/L01-safe-trial.md +3 -7
  12. package/docs/learning/lessons/L02-installation.md +6 -8
  13. package/docs/learning/lessons/L03-first-project.md +1 -5
  14. package/docs/learning/lessons/L04-memory-fundamentals.md +0 -6
  15. package/docs/learning/lessons/L05-daily-workflow.md +0 -5
  16. package/docs/learning/lessons/L06-repository-quality.md +0 -6
  17. package/docs/learning/lessons/L07-privacy-and-storage.md +0 -5
  18. package/docs/learning/lessons/L08-multiple-machines.md +0 -5
  19. package/docs/learning/lessons/L09-domain-knowledge.md +0 -5
  20. package/docs/learning/lessons/L10-context-exploration.md +0 -5
  21. package/docs/learning/lessons/L11-containers.md +0 -5
  22. package/docs/learning/lessons/L12-managed-overlays.md +0 -6
  23. package/docs/learning/lessons/L13-session-evidence.md +0 -6
  24. package/docs/learning/lessons/L14-typed-memory.md +0 -6
  25. package/docs/learning/lessons/L15-capability-governance.md +0 -6
  26. package/docs/learning/lessons/L16-evaluation.md +0 -7
  27. package/docs/learning/lessons/L17-agent-boundary.md +12 -14
  28. package/docs/learning/lessons/L18-local-code-graph.md +97 -0
  29. package/docs/learning/lessons/L19-validated-skill-improvement.md +87 -0
  30. package/docs/learning/templates/lesson-template.md +0 -4
  31. package/docs/learning/tracks/evidence-and-evaluation.md +5 -3
  32. package/docs/learning/tracks/practitioner.md +5 -4
  33. package/docs/operating.md +102 -9
  34. package/docs/privacy-and-data-flow.md +42 -0
  35. package/docs/skill-improvement.md +124 -0
  36. package/docs/storage.md +25 -0
  37. package/examples/eval/bundled-fake.json +1 -1
  38. package/kimi/skills/graphify/SKILL.md +33 -0
  39. package/mcp-memory-server/dist/capability-registry.js +2 -2
  40. package/mcp-memory-server/dist/eval-plan.js +22 -5
  41. package/mcp-memory-server/dist/eval-process.js +31 -0
  42. package/mcp-memory-server/dist/eval-runner.js +10 -4
  43. package/mcp-memory-server/dist/eval-schema.js +1 -1
  44. package/mcp-memory-server/dist/eval-workspace.js +50 -1
  45. package/mcp-memory-server/dist/graph-cli.js +386 -0
  46. package/mcp-memory-server/dist/skill-cli.js +236 -0
  47. package/mcp-memory-server/dist/skill-evaluation.js +244 -0
  48. package/mcp-memory-server/dist/skill-schema.js +164 -0
  49. package/mcp-memory-server/dist/skill-store.js +583 -0
  50. package/mcp-memory-server/package.json +3 -1
  51. package/opencode/command/graphify.md +48 -58
  52. package/package.json +2 -1
  53. package/pi/prompts/graphify.md +32 -0
  54. package/schemas/eval-report.schema.json +1 -1
  55. package/schemas/skill-adapter.schema.json +39 -0
  56. package/schemas/skill-proposal-protocol.schema.json +97 -0
  57. package/scripts/bootstrap.sh +2 -1
  58. package/scripts/completion.sh +55 -6
  59. package/scripts/smoke-bash32.sh +1 -0
  60. package/scripts/sync-kimi-assets.sh +77 -0
  61. package/scripts/sync-pi-assets.sh +52 -31
  62. package/scripts/test-bootstrap-untracked.sh +21 -0
  63. package/scripts/test-cli-dispatch.sh +4 -0
  64. package/scripts/test-completion.sh +16 -0
  65. package/scripts/test-graph-harness-adapters.sh +46 -0
  66. package/scripts/test-launcher-hooks.sh +4 -2
  67. package/scripts/test-learning-docs.sh +13 -11
  68. package/scripts/test-package-install.sh +24 -0
  69. package/scripts/test-skill-cli.sh +30 -0
  70. package/scripts/test-trajectory-hooks.sh +5 -1
  71. package/scripts/test-uninstall.sh +12 -2
  72. package/scripts/uninstall.sh +11 -4
  73. package/templates/graph-policy.md.template +26 -5
  74. package/docs/learning/PRODUCTION-PLAN.md +0 -153
  75. package/docs/learning/instructor-guide.md +0 -66
  76. package/docs/learning/templates/video-script-template.md +0 -50
  77. package/docs/learning/video-scripts/L00-why-cairnkeep.md +0 -80
  78. package/docs/learning/video-scripts/L01-safe-trial.md +0 -78
  79. package/docs/learning/video-scripts/L02-installation.md +0 -97
  80. package/docs/learning/video-scripts/L03-first-project.md +0 -99
@@ -1,6 +1,6 @@
1
1
  # Cairnkeep feature guide
2
2
 
3
- **Baseline:** Cairnkeep 2.6.0
3
+ **Baseline:** Cairnkeep 2.8.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,9 @@ 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 |
35
36
 
36
- Every stage is independently useful. Stages 4-7 are opt-in and are not
37
+ Every stage is independently useful. Stages 4-8 are opt-in and are not
37
38
  prerequisites for ordinary memory.
38
39
 
39
40
  ## Core and derived knowledge
@@ -43,7 +44,7 @@ prerequisites for ordinary memory.
43
44
  | 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
45
  | 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
46
  | 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
- | Knowledge graph | `/graphify` and graph tools | Disabled until configured/invoked; derived graph files | Rebuild from canonical sources; never treat the graph as canonical | `course-02-memory` |
47
+ | 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
48
  | 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
49
 
49
50
  ## Storage and optional topology
@@ -70,13 +71,15 @@ prerequisites for ordinary memory.
70
71
  | 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
72
  | 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
73
  | 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
- | Meta-agent loop | Not shipped | Not applicable | Design contract only; never advertise as an available command | `course-07-evaluation` |
74
+ | 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 | Planned: `course-09-skill` |
75
+ | General meta-agent loop | Not shipped | Not applicable | Skill-file lifecycle only; no generic configuration loop or scheduler | `course-07-evaluation` |
74
76
 
75
77
  ## Harness and maintenance checks
76
78
 
77
79
  - Use a generated launcher so project environment and hooks are repeatable.
78
80
  - Run `cairn sync --check` after every core upgrade; apply only reported drift.
79
- - Run `cairn sync-pi --check` when the optional Pi capture adapter is installed.
81
+ - Run `cairn sync-pi --check` when the optional Pi capture/graph adapter is installed.
82
+ - Run `cairn sync-kimi --check` when the optional Kimi graph Skill is installed.
80
83
  - Use `cairn doctor --repair` only after preserving the affected store and only
81
84
  for repairable derived indexes/metadata.
82
85
  - Use `cairn uninstall --dry-run` before uninstall; durable memory is retained
@@ -1,8 +1,8 @@
1
1
  # Learn Cairnkeep
2
2
 
3
- This learning path teaches Cairnkeep through small, verifiable outcomes. The
4
- canonical lesson is written once and can be reused as a guide, blog post,
5
- workshop handout, or video script.
3
+ This public learning path teaches Cairnkeep through small, verifiable outcomes.
4
+ It is the technical source for guides, workshops, and independently reviewed
5
+ publication material.
6
6
 
7
7
  ## Start here
8
8
 
@@ -22,9 +22,9 @@ The public [course labs](https://github.com/cairnkeep/cairnkeep-course-labs)
22
22
  provide one synthetic project with tagged checkpoints shared by lessons,
23
23
  articles, workshops, and videos.
24
24
 
25
- Lessons marked **Ready** include a complete exercise and presenter script.
26
- Lessons marked **Brief** define outcomes and acceptance criteria and will be
27
- expanded according to the [production plan](PRODUCTION-PLAN.md).
25
+ Lessons marked **Ready** include a complete, release-verified exercise. Lessons
26
+ marked **Brief** define public outcomes and acceptance criteria and will be
27
+ expanded only after their labs are executable.
28
28
 
29
29
  ## Curriculum
30
30
 
@@ -48,6 +48,8 @@ expanded according to the [production plan](PRODUCTION-PLAN.md).
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) | Brief | 50 min |
51
53
 
52
54
  The [curriculum coverage map](CURRICULUM-MAP.md) records where every public
53
55
  feature is introduced, practised, and operated. It also marks design-only work
@@ -62,16 +64,16 @@ Every complete lesson contains:
62
64
  3. A hands-on exercise using non-sensitive sample data.
63
65
  4. Verification and recovery steps.
64
66
  5. A privacy or security boundary.
65
- 6. A presenter-ready video script.
67
+ 6. Release compatibility metadata for completed exercises.
66
68
 
67
69
  The learner should never need optional infrastructure to complete L00-L06.
68
- Remote memory, RAG, routing, containers, structured capture, typed nodes,
69
- capability governance, and evaluation are separate opt-in modules.
70
+ Remote memory, RAG, routing, containers, graph indexing, structured capture,
71
+ typed nodes, capability governance, and evaluation are separate opt-in modules.
70
72
 
71
73
  ## For contributors
72
74
 
73
- Use [the lesson template](templates/lesson-template.md) and
74
- [the video template](templates/video-script-template.md). The
75
- [instructor guide](instructor-guide.md) defines rehearsal, recording, and
76
- publication checks. Commands in finished lessons must be tested against the
77
- current release before publication.
75
+ Use [the lesson template](templates/lesson-template.md). Commands in finished
76
+ lessons must be tested against the current release before publication.
77
+ Unpublished editorial plans and recording scripts are intentionally maintained
78
+ outside the public product repository; stable video links or transcripts can
79
+ be added here after publication.
@@ -3,7 +3,7 @@
3
3
  **Status:** Ready
4
4
  **Track:** Quickstart
5
5
  **Time:** 10 minutes
6
- **Tested with:** Cairnkeep 2.6.0
6
+ **Tested with:** Cairnkeep 2.8.0
7
7
 
8
8
  ## Outcome
9
9
 
@@ -93,7 +93,3 @@ configuration and are taught later.
93
93
  - Optional services are not prerequisites.
94
94
 
95
95
  Next: [L01 - Try it safely](L01-safe-trial.md).
96
-
97
- ## Video
98
-
99
- Use [the L00 presenter script](../video-scripts/L00-why-cairnkeep.md).
@@ -3,7 +3,7 @@
3
3
  **Status:** Ready
4
4
  **Track:** Quickstart
5
5
  **Time:** 15 minutes
6
- **Tested with:** Cairnkeep 2.6.0
6
+ **Tested with:** Cairnkeep 2.8.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.6.0
29
+ podman pull ghcr.io/cairnkeep/cairnkeep:2.8.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.6.0 stdio
41
+ ghcr.io/cairnkeep/cairnkeep:2.8.0 stdio
42
42
  ```
43
43
 
44
44
  3. The process waits quietly for MCP input. Press `Ctrl-C` after confirming it
@@ -90,7 +90,3 @@ podman volume rm cairnkeep-course-data
90
90
  - Persistence belongs to an explicitly named volume.
91
91
 
92
92
  Next: [L02 - Install the local workflow](L02-installation.md).
93
-
94
- ## Video
95
-
96
- Use [the L01 presenter script](../video-scripts/L01-safe-trial.md).
@@ -3,7 +3,7 @@
3
3
  **Status:** Ready
4
4
  **Track:** Quickstart
5
5
  **Time:** 25 minutes
6
- **Tested with:** Cairnkeep 2.6.0 and Node.js 22 or newer
6
+ **Tested with:** Cairnkeep 2.8.0 and Node.js 22 or newer
7
7
 
8
8
  ## Outcome
9
9
 
@@ -41,7 +41,7 @@ machine-level steps.
41
41
  2. Install Cairnkeep:
42
42
 
43
43
  ```bash
44
- npm install --global @cairnkeep/cli@2.6.0
44
+ npm install --global @cairnkeep/cli@2.8.0
45
45
  cairn --version
46
46
  ```
47
47
 
@@ -99,14 +99,16 @@ installation.
99
99
  This registration starts `cairn memory-server` locally as a stdio child. It
100
100
  does not discover a server, send memory to a remote host, configure embeddings,
101
101
  enable session capture, or enable an optional document-RAG integration. Pi uses
102
- the separate `cairn sync-pi` trajectory adapter and still needs a user-selected
103
- bridge if Pi should expose MCP memory tools.
102
+ the separate `cairn sync-pi` trajectory and graph-prompt adapter and still needs
103
+ a user-selected bridge if Pi should expose MCP memory tools.
104
104
 
105
105
  Kimi Code can use the same memory server through its generated
106
106
  `.ai/start-kimi.sh` launcher, but its HTTP MCP configuration requires a literal
107
107
  URL rather than `${CAIRN_MEMORY_REMOTE_URL}`. Keep the resolved URL in a private
108
108
  `.kimi-code/mcp.json` and keep the bearer token in the environment. See
109
109
  [Harness compatibility](../../harness-compatibility.md#kimi-code).
110
+ Its optional `cairn sync-kimi` Skill adds only the local `/graphify` delegate;
111
+ it does not change memory transport or send graph data to a new destination.
110
112
 
111
113
  Qwen Code can use the generated `.ai/start-qwen.sh` launcher. Its project
112
114
  `.qwen/settings.json` supports environment references for both the remote URL
@@ -135,7 +137,3 @@ Do not delete memory stores as part of a course cleanup.
135
137
  - Default stdio memory is local.
136
138
 
137
139
  Next: [L03 - Bootstrap the first project](L03-first-project.md).
138
-
139
- ## Video
140
-
141
- Use [the L02 presenter script](../video-scripts/L02-installation.md).
@@ -3,7 +3,7 @@
3
3
  **Status:** Ready
4
4
  **Track:** Quickstart
5
5
  **Time:** 25 minutes
6
- **Tested with:** Cairnkeep 2.6.0
6
+ **Tested with:** Cairnkeep 2.8.0
7
7
 
8
8
  ## Outcome
9
9
 
@@ -115,7 +115,3 @@ inspect `.git/info/exclude` to see how contributor mode avoids shared changes.
115
115
  - Persistence is proven only after a new session recalls the accepted fact.
116
116
 
117
117
  Next: [L04 - Memory fundamentals](L04-memory-fundamentals.md).
118
-
119
- ## Video
120
-
121
- Use [the L03 presenter script](../video-scripts/L03-first-project.md).
@@ -35,12 +35,6 @@ candidate.
35
35
  - No extracted candidate becomes durable without an explicit review action.
36
36
  - Enabling typed nodes changes discovery structure, not the authority of a fact.
37
37
 
38
- ## Planned video
39
-
40
- Open with two contradictory memories, demonstrate search and superseding, then
41
- finish with the review queue. Target 12-15 minutes. Write the complete script in
42
- Wave 2 after the lab fixture is executable.
43
-
44
38
  ## Source material
45
39
 
46
40
  - [Operating guide](../../operating.md#the-workflow)
@@ -35,11 +35,6 @@ queue before exiting.
35
35
  - The learner can describe what to do at session start, before editing, and at
36
36
  session end.
37
37
 
38
- ## Planned video
39
-
40
- Follow one small feature from session start to reviewed handoff. Target 15
41
- minutes and split wiki maintenance into a second video if rehearsal runs long.
42
-
43
38
  ## Source material
44
39
 
45
40
  - [Operating guide](../../operating.md#the-workflow)
@@ -33,12 +33,6 @@ solution branch.
33
33
  - No scan reaches outside the disposable repository or its local processes.
34
34
  - The lab passes after remediation and fails in its tagged starter state.
35
35
 
36
- ## Planned video
37
-
38
- This is the flagship value demonstration. Show one serious synthetic defect
39
- from discovery through validation and fix. Target 15 minutes; publish the full
40
- 45-minute exercise as a workshop.
41
-
42
36
  ## Source material
43
37
 
44
38
  - [Operating guide](../../operating.md#the-workflow)
@@ -34,11 +34,6 @@ names, and prove that no remote destination was discovered.
34
34
  - The learner can stop when an effective destination is ambiguous.
35
35
  - Independent feature flags are not treated as one blanket consent switch.
36
36
 
37
- ## Planned video
38
-
39
- Use two simple diagrams and one terminal preflight. Target 10 minutes. Do not
40
- demonstrate real endpoints or credentials.
41
-
42
37
  ## Source material
43
38
 
44
39
  - [Privacy and data flow](../../privacy-and-data-flow.md)
@@ -31,11 +31,6 @@ the pre-import backup.
31
31
  - The learner verifies counts and exact synthetic values on both sides.
32
32
  - No remote service is introduced merely to complete the migration lab.
33
33
 
34
- ## Planned video
35
-
36
- Record the backup, migration, verification, and rollback without cuts that hide
37
- state transitions. Target 12 minutes.
38
-
39
34
  ## Source material
40
35
 
41
36
  - [Storage and deployment](../../storage.md#inspecting-and-moving-memory)
@@ -32,11 +32,6 @@ verify the new answer. Then unset the integration and prove memory still works.
32
32
  - Updated content replaces stale retrieval results.
33
33
  - Disabling RAG leaves `/remember` and `/recall` healthy.
34
34
 
35
- ## Planned video
36
-
37
- Lead with “optional, not required”, show query then sync, and finish by disabling
38
- the integration. Target 12 minutes.
39
-
40
35
  ## Source material
41
36
 
42
37
  - [Domain knowledge](../../domain-knowledge.md)
@@ -33,11 +33,6 @@ invalidation. Disable the binary and verify standalone Cairnkeep remains usable.
33
33
  - The learner distinguishes exploration output from durable memory.
34
34
  - An unavailable explorer fails locally without breaking memory operations.
35
35
 
36
- ## Planned video
37
-
38
- Compare a broad manual search with one cited exploration result. Target 10
39
- minutes and keep routing as a separate optional chapter.
40
-
41
36
  ## Source material
42
37
 
43
38
  - [Operating guide](../../operating.md#exploration-cache-context_explore-on-by-default)
@@ -32,11 +32,6 @@ only the course resources.
32
32
  volume is deliberately removed.
33
33
  - The learner can enumerate every mount and network boundary.
34
34
 
35
- ## Planned video
36
-
37
- Use a diagram first, then replace a running container while retaining its
38
- volume. Target 15 minutes.
39
-
40
35
  ## Source material
41
36
 
42
37
  - [Containers](../../containers.md)
@@ -33,12 +33,6 @@ upgrades the pin, verifies fleet status, and rolls one project back.
33
33
  - Effective storage and service destinations are explainable before launch.
34
34
  - Upgrade and rollback preserve the disposable memory store.
35
35
 
36
- ## Planned video
37
-
38
- Show the same project under public core and a generic managed overlay, then
39
- explain the small delta. Target 15 minutes; keep registry administration in the
40
- written operator lab.
41
-
42
36
  ## Source material
43
37
 
44
38
  - [Building a private overlay](../../building-an-overlay.md)
@@ -57,12 +57,6 @@ cairn artifact list --json
57
57
  memory by purpose, store, lifecycle, and trust level.
58
58
  - Cleanup targets only the disposable course evidence.
59
59
 
60
- ## Planned video
61
-
62
- Draw the evidence lifecycle, capture one synthetic session, inspect the redacted
63
- record, and find the resulting failure note. Target 14 minutes. Treat compaction
64
- and Pi as short boundary chapters rather than requiring three harness demos.
65
-
66
60
  ## Source material
67
61
 
68
62
  - [Operating guide: structured trajectories](../../operating.md#structured-session-trajectories-opt-in)
@@ -38,12 +38,6 @@ import.
38
38
  - Imported values never appear in command diagnostics or course screenshots.
39
39
  - The learner does not present a logical note address as a host path.
40
40
 
41
- ## Planned video
42
-
43
- Use a small type-and-tag diagram, then demonstrate filtered discovery and the
44
- dry-run/replay sequence. Target 12 minutes. Keep the full import limits in the
45
- written lesson rather than narrating a table of numbers.
46
-
47
41
  ## Source material
48
42
 
49
43
  - [Operating guide: typed memory nodes](../../operating.md#typed-memory-nodes-and-note-address-spaces-opt-in)
@@ -43,12 +43,6 @@ CAIRN_CAPABILITY_CONTRACT=1 cairn capabilities logging enable
43
43
  - No callback record contains prompts, tool arguments, results, or memory values.
44
44
  - Disabling an optional capability does not break standalone memory.
45
45
 
46
- ## Planned video
47
-
48
- Show precedence as three stacked layers, then perform one disable/reset cycle.
49
- Target 11 minutes. Use JSON status for evidence and avoid presenting a digest as
50
- a security signature or performance result.
51
-
52
46
  ## Source material
53
47
 
54
48
  - [Operating guide: managed capability contract](../../operating.md#managed-capability-contract-opt-in)
@@ -52,13 +52,6 @@ after the lab is rehearsed from the packaged CLI rather than a source clone.
52
52
  without claiming causality, significance, or product improvement.
53
53
  - Course cleanup is limited to its temporary contained experiment root.
54
54
 
55
- ## Planned video
56
-
57
- Start with the claim boundary, validate before running, inspect one two-pass
58
- report, and close by marking the fixture `offline-framework`. Target 16 minutes.
59
- Publish ablation as a second short video if the complete schedule obscures the
60
- measurement concepts.
61
-
62
55
  ## Source material
63
56
 
64
57
  - [Operating guide: evaluation harness](../../operating.md#evaluation-harness-opt-in)
@@ -6,23 +6,25 @@
6
6
 
7
7
  ## Outcome
8
8
 
9
- Separate Cairnkeep's shipped evidence and evaluation substrates from the
10
- design-only bounded meta-agent proposal, and identify which authority always
11
- remains with the operator and external harness.
9
+ Separate Cairnkeep's shipped evidence, evaluation, and narrow skill-file
10
+ lifecycle from the design-only general meta-agent proposal, and identify which
11
+ authority always remains with the operator and external harness.
12
12
 
13
13
  ## Planned lesson
14
14
 
15
15
  - Current facts: typed capability state, local evidence, immutable evaluation
16
16
  inputs, isolated schedules, independent verification, and canonical reports.
17
- - Design only: natural-language form compilation, candidate generation,
18
- candidate injection, comparison, proposal bundles, patch application, and
19
- rollback ledgers.
17
+ - Shipped in 2.8.0: reviewed hindsight candidates, bounded edits to one existing
18
+ `SKILL.md`, isolated baseline/candidate comparison, held-out confirmation,
19
+ exact-digest application, and rollback ledgers.
20
+ - Design only: general natural-language configuration compilation, arbitrary
21
+ target types, autonomous scheduling, and an owner inference loop.
20
22
  - Cairnkeep coordinates evidence; it does not own a harness inference loop.
21
23
  - Natural language is untrusted proposal data, not executable authorization.
22
24
  - Separate human gates for form, evaluation, application, confirmation, and
23
25
  rollback.
24
- - Why no CLI command, schema, runtime default, or quality claim ships for the
25
- proposed meta-agent loop.
26
+ - Why the shipped `cairn skill` command does not authorize or imply the broader
27
+ proposed meta-agent loop or a product quality claim.
26
28
 
27
29
  ## Hands-on lab
28
30
 
@@ -36,6 +38,8 @@ be required before any future implementation could act.
36
38
 
37
39
  - No learner attempts to invoke a meta-agent command or treats an illustrative
38
40
  block as a supported schema.
41
+ - The learner can distinguish supported `cairn skill` operations from the
42
+ broader design-only proposal.
39
43
  - Every inference execution remains owned by an operator-configured adapter.
40
44
  - A capability digest is not treated as approval, identity proof, or evidence
41
45
  of improvement.
@@ -43,12 +47,6 @@ be required before any future implementation could act.
43
47
  - The learner can name at least one explicit future prerequisite and one
44
48
  unconditional human stop point.
45
49
 
46
- ## Planned video
47
-
48
- Use one ownership diagram and one fictional proposal. Target 9 minutes. Put a
49
- persistent `DESIGN ONLY` label on every future component and end on the exact
50
- current-versus-future boundary.
51
-
52
50
  ## Source material
53
51
 
54
52
  - [Meta-agent design contract](../../design/meta-agent.md)
@@ -0,0 +1,97 @@
1
+ # L18 - Local code graph
2
+
3
+ **Status:** Brief
4
+ **Track:** Practitioner
5
+ **Planned time:** 35 minutes
6
+ **Introduced in:** Cairnkeep 2.7.0
7
+
8
+ ## Outcome
9
+
10
+ Build and inspect an optional local structural graph without confusing derived
11
+ graph data with canonical source code or granting an external tool ownership of
12
+ the Cairnkeep operating layer.
13
+
14
+ ## Planned lesson
15
+
16
+ - When a structural graph answers a code-navigation question better than
17
+ durable memory, the wiki, or broad text search.
18
+ - Why the graph capability is disabled unless the managed capability contract
19
+ enables `graph` or the compatibility setting `graphify.enabled` is true.
20
+ - How to install only the isolated `graphify` executable with `uv tool install
21
+ graphifyy` or `pipx install graphifyy`. Do not run `graphify install` because
22
+ Cairnkeep owns the harness commands, policies, and lifecycle.
23
+ - How `cairn graph build`, `cairn graph status`, `cairn graph query`,
24
+ `cairn graph explain`, `cairn graph path`, and `cairn graph diff` share one
25
+ portable owner across harnesses and the shell.
26
+ - Why builds index local code only, use a reduced subprocess environment, avoid
27
+ provider credentials and semantic document extraction, and publish validated
28
+ artifacts atomically under `.planning/graphs/` while Graphify maintains its
29
+ separate incremental work directory under `graphify-out/`.
30
+ - How the previous successful graph snapshot supports `diff`, and why `--force`
31
+ is appropriate only when an intentional code deletion reduces the graph.
32
+ - Why exact symbols and narrow terms are more reliable than broad prose, and
33
+ why every graph result must be checked against canonical source files.
34
+ - How Claude Code and OpenCode receive managed `/graphify` wrappers while
35
+ `cairn sync-kimi --apply` and `cairn sync-pi --apply` install thin delegates
36
+ that call only `cairn graph`.
37
+
38
+ ## Hands-on lab
39
+
40
+ Use the synthetic course repository at checkpoint `course-08-graph` in a
41
+ disposable clone. Confirm that a disabled graph fails before Graphify or graph
42
+ artifacts are accessed. Install only the isolated executable, enable the graph
43
+ through one documented capability path, and then run:
44
+
45
+ ```bash
46
+ cairn graph build
47
+ cairn graph status
48
+ cairn graph query addItem
49
+ cairn graph explain addItem
50
+ cairn graph path addItem writeLedger
51
+ ```
52
+
53
+ Make one reversible change to the synthetic ledger, rebuild, and inspect
54
+ `cairn graph diff`. Revert the source change, rebuild again, and verify the
55
+ status. Inspect `.planning/graphs/` and `graphify-out/` without adding either
56
+ derived location to Git.
57
+
58
+ ## Acceptance criteria
59
+
60
+ - The disabled-path check creates or changes no graph artifact.
61
+ - `status` identifies whether the published graph is present and current.
62
+ - `query`, `explain`, and `path` return structural discovery evidence that the
63
+ learner verifies against `src/trail-ledger.mjs`.
64
+ - A second successful build produces a snapshot-backed diff.
65
+ - The learner can explain why `--force` is not a generic retry flag.
66
+ - The repository contains no Graphify-owned harness assets and neither
67
+ `graphify-out/` nor a published graph artifact is staged for commit.
68
+ - The learner can distinguish graph storage and subprocess data flow from
69
+ Cairnkeep memory storage and optional embedding traffic.
70
+
71
+ ## Common failures
72
+
73
+ - If `graphify` is missing, install the isolated CLI and verify it is on
74
+ `PATH`; do not run its harness installer.
75
+ - If the capability is disabled, enable it through the managed contract or the
76
+ compatibility setting rather than bypassing the owner.
77
+ - If no previous snapshot exists, make a successful build after a real code
78
+ change before requesting `diff`.
79
+ - If a path or explanation is empty, retry with exact symbol names and verify
80
+ the source directly instead of treating a broad query as proof.
81
+
82
+ ## Privacy and trust boundary
83
+
84
+ The managed build passes the repository path to a local Graphify subprocess and
85
+ publishes a validated view locally. Its reduced environment excludes provider
86
+ credentials, and the managed workflow does not perform semantic document
87
+ extraction. Graphify's incremental `graphify-out/` workspace and Cairnkeep's
88
+ published `.planning/graphs/` view can both contain sensitive structural data.
89
+ Keep both local by default, review ignore rules, and never present the graph as
90
+ canonical evidence.
91
+
92
+ ## Source material
93
+
94
+ - [Operating guide](../../operating.md#optional-graphify-workflow)
95
+ - [Harness compatibility](../../harness-compatibility.md)
96
+ - [Privacy and data flow](../../privacy-and-data-flow.md)
97
+ - [L15 - Capability governance](L15-capability-governance.md)
@@ -0,0 +1,87 @@
1
+ # L19 - Validated skill improvement
2
+
3
+ **Status:** Brief
4
+ **Track:** Evidence and Evaluation
5
+ **Planned time:** 50 minutes
6
+ **Introduced in:** Cairnkeep 2.8.0
7
+
8
+ ## Outcome
9
+
10
+ Turn repeated failure and demonstrated resolution evidence into one reviewed
11
+ skill proposal, measure it on separate exploration and confirmation tasks,
12
+ apply only the exact eligible digest, and prove rollback without risking a real
13
+ project.
14
+
15
+ ## Planned lesson
16
+
17
+ - Why harvest requires failures from at least two sessions and at least one
18
+ recorded resolution.
19
+ - How `harvest`, `show`, and `review --approve` keep evidence local until the
20
+ learner consents to proposal-adapter egress.
21
+ - How the strict proposal adapter receives a bounded request, a private process
22
+ environment, and an edit budget for one existing `SKILL.md`.
23
+ - Why proposal generation and evaluation never modify the live target.
24
+ - How separate committed sets with at least two disjoint task IDs and
25
+ definitions each, one immutable source revision, fresh Git worktrees, exact
26
+ adapter digests, and an independent verifier protect the gate.
27
+ - Why improvements count distinct tasks, any regressed task rejects the
28
+ candidate, and small passing fixtures are not universal quality proof.
29
+ - How full proposal-digest confirmation, backup-first atomic replacement, and
30
+ concurrent-edit-safe rollback limit application authority.
31
+
32
+ ## Hands-on lab
33
+
34
+ Use a future disposable `course-09-skill` checkpoint containing synthetic
35
+ hindsight evidence, a small `SKILL.md`, deterministic proposal and evaluation
36
+ adapters, and separate committed task sets. The lab will run:
37
+
38
+ ```bash
39
+ cairn skill harvest --project . --json
40
+ cairn skill show --kind candidate --id CANDIDATE_ID
41
+ cairn skill review --candidate CANDIDATE_ID --approve --json
42
+ cairn skill propose --candidate CANDIDATE_ID --target skills/demo/SKILL.md \
43
+ --adapter fixtures/proposal-adapter.json --json
44
+
45
+ export CAIRN_EVAL=1
46
+ cairn skill evaluate --proposal PROPOSAL_ID \
47
+ --exploration-task-set eval/exploration.json \
48
+ --confirmation-task-set eval/confirmation.json \
49
+ --adapter eval/adapter.json --repetitions 2 --yes --json
50
+
51
+ cairn skill apply --proposal PROPOSAL_ID --evaluation EVALUATION_ID \
52
+ --confirm FULL_PROPOSAL_DIGEST --json
53
+ cairn skill rollback --application APPLICATION_ID --confirm --json
54
+ ```
55
+
56
+ The lesson remains a Brief until that checkpoint is public and every command is
57
+ rehearsed against the release package.
58
+
59
+ ## Acceptance criteria
60
+
61
+ - No candidate exists for repeated failure without resolution evidence.
62
+ - Proposal execution cannot inherit unapproved credentials or isolation-owned
63
+ environment variables.
64
+ - The live `SKILL.md` is byte-identical before and after propose/evaluate.
65
+ - Overlapping task IDs, changed adapters, unknown verifier results, and any
66
+ regression fail closed.
67
+ - Apply rejects a wrong digest or changed target.
68
+ - Rollback restores the original bytes and refuses to overwrite a later edit.
69
+ - The learner can explain why an eligible small task set supports one local
70
+ decision but not a universal performance claim.
71
+
72
+ ## Privacy and trust boundary
73
+
74
+ Hindsight excerpts and skill content remain local until candidate approval.
75
+ Approval permits those exact fields to enter the explicitly configured proposal
76
+ adapter. Evaluation adapters receive isolated worktrees with baseline or
77
+ candidate skill bytes, not the hindsight evidence. Candidate, proposal,
78
+ evaluation, application, backup, and report artifacts remain sensitive local
79
+ project state under `.agentfs/`.
80
+
81
+ ## Source material
82
+
83
+ - [Validated skill improvement](../../skill-improvement.md)
84
+ - [Evaluation and ablation](L16-evaluation.md)
85
+ - [The agent boundary](L17-agent-boundary.md)
86
+ - [Storage](../../storage.md#validated-skill-storage)
87
+ - [Privacy and data flow](../../privacy-and-data-flow.md#validated-skill-improvement-flow)
@@ -58,7 +58,3 @@ Offer one bounded extension that is not required for the next lesson.
58
58
  ## Recap
59
59
 
60
60
  List three facts and link the next lesson.
61
-
62
- ## Video
63
-
64
- Link to `../video-scripts/LXX-title.md` only after the script is verified.