@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.
- package/CHANGELOG.md +35 -1
- package/README.md +45 -8
- package/bin/cairn +21 -3
- package/claude/commands/graphify.md +46 -55
- package/docs/design/meta-agent.md +39 -35
- package/docs/harness-compatibility.md +13 -5
- package/docs/learning/CURRICULUM-MAP.md +10 -3
- package/docs/learning/FEATURE-GUIDE.md +8 -5
- package/docs/learning/README.md +16 -14
- package/docs/learning/lessons/L00-why-cairnkeep.md +1 -5
- package/docs/learning/lessons/L01-safe-trial.md +3 -7
- package/docs/learning/lessons/L02-installation.md +6 -8
- package/docs/learning/lessons/L03-first-project.md +1 -5
- package/docs/learning/lessons/L04-memory-fundamentals.md +0 -6
- package/docs/learning/lessons/L05-daily-workflow.md +0 -5
- package/docs/learning/lessons/L06-repository-quality.md +0 -6
- package/docs/learning/lessons/L07-privacy-and-storage.md +0 -5
- package/docs/learning/lessons/L08-multiple-machines.md +0 -5
- package/docs/learning/lessons/L09-domain-knowledge.md +0 -5
- package/docs/learning/lessons/L10-context-exploration.md +0 -5
- package/docs/learning/lessons/L11-containers.md +0 -5
- package/docs/learning/lessons/L12-managed-overlays.md +0 -6
- package/docs/learning/lessons/L13-session-evidence.md +0 -6
- package/docs/learning/lessons/L14-typed-memory.md +0 -6
- package/docs/learning/lessons/L15-capability-governance.md +0 -6
- package/docs/learning/lessons/L16-evaluation.md +0 -7
- package/docs/learning/lessons/L17-agent-boundary.md +12 -14
- package/docs/learning/lessons/L18-local-code-graph.md +97 -0
- package/docs/learning/lessons/L19-validated-skill-improvement.md +87 -0
- package/docs/learning/templates/lesson-template.md +0 -4
- package/docs/learning/tracks/evidence-and-evaluation.md +5 -3
- package/docs/learning/tracks/practitioner.md +5 -4
- package/docs/operating.md +102 -9
- package/docs/privacy-and-data-flow.md +42 -0
- package/docs/skill-improvement.md +124 -0
- package/docs/storage.md +25 -0
- package/examples/eval/bundled-fake.json +1 -1
- package/kimi/skills/graphify/SKILL.md +33 -0
- package/mcp-memory-server/dist/capability-registry.js +2 -2
- 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-runner.js +10 -4
- package/mcp-memory-server/dist/eval-schema.js +1 -1
- package/mcp-memory-server/dist/eval-workspace.js +50 -1
- package/mcp-memory-server/dist/graph-cli.js +386 -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 +3 -1
- package/opencode/command/graphify.md +48 -58
- package/package.json +2 -1
- package/pi/prompts/graphify.md +32 -0
- package/schemas/eval-report.schema.json +1 -1
- package/schemas/skill-adapter.schema.json +39 -0
- package/schemas/skill-proposal-protocol.schema.json +97 -0
- package/scripts/bootstrap.sh +2 -1
- package/scripts/completion.sh +55 -6
- package/scripts/smoke-bash32.sh +1 -0
- package/scripts/sync-kimi-assets.sh +77 -0
- package/scripts/sync-pi-assets.sh +52 -31
- package/scripts/test-bootstrap-untracked.sh +21 -0
- package/scripts/test-cli-dispatch.sh +4 -0
- package/scripts/test-completion.sh +16 -0
- package/scripts/test-graph-harness-adapters.sh +46 -0
- package/scripts/test-launcher-hooks.sh +4 -2
- package/scripts/test-learning-docs.sh +13 -11
- package/scripts/test-package-install.sh +24 -0
- package/scripts/test-skill-cli.sh +30 -0
- package/scripts/test-trajectory-hooks.sh +5 -1
- package/scripts/test-uninstall.sh +12 -2
- package/scripts/uninstall.sh +11 -4
- package/templates/graph-policy.md.template +26 -5
- package/docs/learning/PRODUCTION-PLAN.md +0 -153
- package/docs/learning/instructor-guide.md +0 -66
- package/docs/learning/templates/video-script-template.md +0 -50
- package/docs/learning/video-scripts/L00-why-cairnkeep.md +0 -80
- package/docs/learning/video-scripts/L01-safe-trial.md +0 -78
- package/docs/learning/video-scripts/L02-installation.md +0 -97
- package/docs/learning/video-scripts/L03-first-project.md +0 -99
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
# Learning Path Production Plan
|
|
2
|
-
|
|
3
|
-
This plan grows the course in small publishable waves. Each wave produces a
|
|
4
|
-
useful learner outcome on its own and leaves the public material in a coherent
|
|
5
|
-
state.
|
|
6
|
-
|
|
7
|
-
## Guiding principles
|
|
8
|
-
|
|
9
|
-
- Demonstrate value before architecture.
|
|
10
|
-
- Keep public lessons provider-neutral and free of private configuration.
|
|
11
|
-
- Teach local storage first; remote storage must always be an explicit choice.
|
|
12
|
-
- Write the canonical lesson before recording the video.
|
|
13
|
-
- Use short videos that can be replaced independently after product changes.
|
|
14
|
-
- Treat commands, expected output, and recovery instructions as tested product
|
|
15
|
-
surfaces rather than informal prose.
|
|
16
|
-
- Keep default-off evidence and evaluation features out of the quickstart.
|
|
17
|
-
- Never convert framework-fixture results into product-performance claims.
|
|
18
|
-
|
|
19
|
-
## Wave 0 - Course foundation
|
|
20
|
-
|
|
21
|
-
**Deliverables**
|
|
22
|
-
|
|
23
|
-
- Stable lesson IDs L00-L17.
|
|
24
|
-
- Quickstart, practitioner, evidence-and-evaluation, and operator tracks.
|
|
25
|
-
- Lesson, video, and instructor templates.
|
|
26
|
-
- Complete L00-L03 lesson and recording scripts.
|
|
27
|
-
- Briefs and acceptance criteria for L04-L17.
|
|
28
|
-
- A release-reviewed feature-to-lesson coverage map.
|
|
29
|
-
|
|
30
|
-
**Exit gate**
|
|
31
|
-
|
|
32
|
-
- A new learner can follow L00-L03 on a clean machine or stop safely after the
|
|
33
|
-
container trial.
|
|
34
|
-
- Every command is current and no optional service is presented as mandatory.
|
|
35
|
-
|
|
36
|
-
## Wave 1 - Pilot the quickstart
|
|
37
|
-
|
|
38
|
-
1. Rehearse L00-L03 without recording and log confusing steps.
|
|
39
|
-
2. Run the lessons on one clean Linux environment and one macOS environment.
|
|
40
|
-
3. Record the four short videos from the supplied scripts.
|
|
41
|
-
4. Ask two learners to complete the track without live assistance.
|
|
42
|
-
5. Fix every repeated point of confusion before public promotion.
|
|
43
|
-
|
|
44
|
-
**Artifacts:** four videos, four blog-ready lessons, one learner feedback form.
|
|
45
|
-
|
|
46
|
-
**Exit gate:** both pilot learners reach a successful `/remember` and `/recall`
|
|
47
|
-
round trip and can explain where their memory is stored.
|
|
48
|
-
|
|
49
|
-
## Wave 2 - Daily practitioner value
|
|
50
|
-
|
|
51
|
-
Expand L04-L06 and L13 in this order:
|
|
52
|
-
|
|
53
|
-
1. L04 memory keys, scopes, search, history, and review.
|
|
54
|
-
2. L05 wiki, alignment, session hooks, and derived-knowledge boundaries.
|
|
55
|
-
3. L06 `/repo-review` and `/security-audit` against a deliberately vulnerable
|
|
56
|
-
toy repository.
|
|
57
|
-
4. L13 structured evidence, redaction, deterministic hindsight, compaction,
|
|
58
|
-
artifact inspection, and cleanup against synthetic sessions.
|
|
59
|
-
|
|
60
|
-
Use the public `cairnkeep-course-labs` repository created for this wave. Its
|
|
61
|
-
synthetic Trail Ledger project, prominent safety boundary, eight tagged
|
|
62
|
-
checkpoints, executable verification, offline evaluation route, and
|
|
63
|
-
`solutions/review-target` branch are the shared demo source. Expand lesson prose
|
|
64
|
-
and presenter scripts against those immutable starts rather than copying the
|
|
65
|
-
demo into this repository.
|
|
66
|
-
|
|
67
|
-
**Exit gate:** a learner can complete all labs from a fresh clone, and CI resets
|
|
68
|
-
and verifies every starter state.
|
|
69
|
-
|
|
70
|
-
## Wave 3 - Safe operation
|
|
71
|
-
|
|
72
|
-
Expand L07-L08 and add a backup/restore lab:
|
|
73
|
-
|
|
74
|
-
- Draw the local stdio and explicit remote HTTP data flows.
|
|
75
|
-
- Demonstrate `cairn memory path`, export, import, and rollback.
|
|
76
|
-
- Explain identity, project, and global routing without using real credentials.
|
|
77
|
-
- Test the multiple-machine procedure with disposable stores before recording.
|
|
78
|
-
|
|
79
|
-
**Exit gate:** the learner can predict the storage destination before starting
|
|
80
|
-
a session and can restore a snapshot without losing the pre-existing store.
|
|
81
|
-
|
|
82
|
-
## Wave 4 - Optional accelerators
|
|
83
|
-
|
|
84
|
-
Expand L09-L10 as independent modules:
|
|
85
|
-
|
|
86
|
-
- Optional document RAG, workspace selection, query, and sync.
|
|
87
|
-
- token-miser/FastContext exploration, citations, caching, and failure modes.
|
|
88
|
-
|
|
89
|
-
Each lesson begins and ends with the reminder that Cairnkeep works without the
|
|
90
|
-
optional component.
|
|
91
|
-
|
|
92
|
-
**Exit gate:** disabling either integration returns the learner to a healthy
|
|
93
|
-
standalone Cairnkeep workflow.
|
|
94
|
-
|
|
95
|
-
## Wave 5 - Evidence governance and measurement
|
|
96
|
-
|
|
97
|
-
Expand L14-L17 in dependency order:
|
|
98
|
-
|
|
99
|
-
1. L14 typed nodes, hard filters, logical note addresses, and import replay.
|
|
100
|
-
2. L15 capability precedence, omission, restart boundaries, and value-free
|
|
101
|
-
callbacks.
|
|
102
|
-
3. L16 offline two-pass fixtures, one-capability ablation, report reading,
|
|
103
|
-
missingness, uncertainty, retention, and claim boundaries.
|
|
104
|
-
4. L17 current-versus-design-only ownership and approval boundaries.
|
|
105
|
-
|
|
106
|
-
The first L16 lab must use only the committed deterministic fixture. A separate
|
|
107
|
-
live-evaluation course artifact may be introduced only after its provenance and
|
|
108
|
-
claim anchors pass the repository's runtime-evidence verifier.
|
|
109
|
-
|
|
110
|
-
**Exit gate:** the learner can inspect effective state and retained evidence,
|
|
111
|
-
execute the fixture safely, and state exactly why it does not prove a quality or
|
|
112
|
-
efficiency gain.
|
|
113
|
-
|
|
114
|
-
## Wave 6 - Operators and platform teams
|
|
115
|
-
|
|
116
|
-
Expand L11-L12:
|
|
117
|
-
|
|
118
|
-
- Rootless containers, persistent volumes, authenticated HTTP, and isolation.
|
|
119
|
-
- Overlay manifests, private package delivery, bootstrap policy, fleet updates,
|
|
120
|
-
rollback, and release gates.
|
|
121
|
-
|
|
122
|
-
**Exit gate:** the operator can explain every host mount, network boundary,
|
|
123
|
-
credential source, storage destination, and rollback action.
|
|
124
|
-
|
|
125
|
-
## Wave 7 - Publication and maintenance
|
|
126
|
-
|
|
127
|
-
1. Publish a landing article linking to the four tracks.
|
|
128
|
-
2. Publish videos as a playlist with lesson IDs in every title.
|
|
129
|
-
3. Add release compatibility metadata to each completed lesson.
|
|
130
|
-
4. Run a command-verification pass for every Cairnkeep minor release.
|
|
131
|
-
5. Reconcile `cairn help`, the changelog, and the curriculum coverage map for
|
|
132
|
-
every minor release.
|
|
133
|
-
6. Review learner feedback monthly during the pilot, then quarterly.
|
|
134
|
-
|
|
135
|
-
## How we will work together
|
|
136
|
-
|
|
137
|
-
For each lesson, follow this loop:
|
|
138
|
-
|
|
139
|
-
1. **Select:** choose the next lesson from the current wave.
|
|
140
|
-
2. **Discover:** collect real learner questions and one convincing use case.
|
|
141
|
-
3. **Draft:** complete the lesson using the template.
|
|
142
|
-
4. **Verify:** execute every command from a clean starting state.
|
|
143
|
-
5. **Script:** derive the video script from the verified lesson.
|
|
144
|
-
6. **Rehearse:** read it aloud while performing the demo once without recording.
|
|
145
|
-
7. **Record:** capture the short lesson in sections, not one continuous take.
|
|
146
|
-
8. **Pilot:** give the written lesson to a learner before publishing the video.
|
|
147
|
-
9. **Improve:** incorporate observed failures and publish both formats together.
|
|
148
|
-
|
|
149
|
-
The immediate next step is an unrecorded L00-L03 rehearsal using
|
|
150
|
-
`course-00-app` and `course-01-bootstrap`. Then expand L04-L06 and L13 against
|
|
151
|
-
`course-02-memory`, `course-03-quality`, and `course-05-evidence`. Use the
|
|
152
|
-
checklist in the [instructor guide](instructor-guide.md) and record questions
|
|
153
|
-
rather than polishing video production prematurely.
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
# Instructor Guide
|
|
2
|
-
|
|
3
|
-
## Before each lesson
|
|
4
|
-
|
|
5
|
-
- Confirm the lesson is marked **Ready**, not **Brief**.
|
|
6
|
-
- Run every command against the current Cairnkeep release.
|
|
7
|
-
- Use a disposable repository and synthetic names, URLs, tokens, and data.
|
|
8
|
-
- Hide notifications, shell history, credentials, bookmarks, and unrelated
|
|
9
|
-
repositories before screen recording.
|
|
10
|
-
- Increase terminal font size and keep one command per visible line.
|
|
11
|
-
- Prepare a clean start snapshot and a known-good completed snapshot.
|
|
12
|
-
- Rehearse the failure-recovery section, not only the happy path.
|
|
13
|
-
- For L13-L16, prove every optional flag starts disabled and clean up only the
|
|
14
|
-
disposable evidence or experiment root created by the lesson.
|
|
15
|
-
- Label deterministic evaluation fixtures as framework evidence, never product
|
|
16
|
-
quality or efficiency evidence.
|
|
17
|
-
|
|
18
|
-
## Recommended recording format
|
|
19
|
-
|
|
20
|
-
Record each video as independent segments:
|
|
21
|
-
|
|
22
|
-
1. **Hook:** the concrete problem in 20-40 seconds.
|
|
23
|
-
2. **Outcome:** what the learner will be able to verify.
|
|
24
|
-
3. **Concept:** only the mental model required for the exercise.
|
|
25
|
-
4. **Demo:** commands and observable results.
|
|
26
|
-
5. **Boundary:** storage, privacy, or trust implication.
|
|
27
|
-
6. **Recap:** result and next lesson.
|
|
28
|
-
|
|
29
|
-
Aim for 8-15 minutes. If a script exceeds 15 minutes, split the lesson rather
|
|
30
|
-
than speaking faster.
|
|
31
|
-
|
|
32
|
-
## Recording conventions
|
|
33
|
-
|
|
34
|
-
- Say command intent before typing the command.
|
|
35
|
-
- Pause after important output so it can be read.
|
|
36
|
-
- Never paste a real token, cookie, endpoint, email, or repository name.
|
|
37
|
-
- Describe output rather than claiming every learner will see identical text.
|
|
38
|
-
- Keep mistakes that teach a recovery step; remove unrelated typing mistakes.
|
|
39
|
-
- Refer to lessons by stable ID, for example “L02”, so links survive title edits.
|
|
40
|
-
|
|
41
|
-
## Pilot feedback
|
|
42
|
-
|
|
43
|
-
Ask each pilot learner:
|
|
44
|
-
|
|
45
|
-
1. Where did you first become uncertain?
|
|
46
|
-
2. Which command did you run without understanding its effect?
|
|
47
|
-
3. Where do you believe memory is stored?
|
|
48
|
-
4. What would prevent you from using this in a real project tomorrow?
|
|
49
|
-
5. Which result made the value clear?
|
|
50
|
-
|
|
51
|
-
Record observations without collecting project content, prompts, credentials,
|
|
52
|
-
or memory values.
|
|
53
|
-
|
|
54
|
-
## Definition of done
|
|
55
|
-
|
|
56
|
-
A lesson is **Ready** only when:
|
|
57
|
-
|
|
58
|
-
- prerequisites and cleanup are explicit;
|
|
59
|
-
- all commands were executed from the documented starting state;
|
|
60
|
-
- verification distinguishes success from partial installation;
|
|
61
|
-
- common failures have actionable recovery steps;
|
|
62
|
-
- storage and privacy implications are stated;
|
|
63
|
-
- the video script matches the verified lesson;
|
|
64
|
-
- a learner other than the author completed it without hidden instructions.
|
|
65
|
-
- the command surface and lesson assignment agree with the
|
|
66
|
-
[curriculum coverage map](CURRICULUM-MAP.md).
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
# LXX Video Script - Title
|
|
2
|
-
|
|
3
|
-
**Target duration:** NN minutes
|
|
4
|
-
**Companion lesson:** link
|
|
5
|
-
|
|
6
|
-
## Recording setup
|
|
7
|
-
|
|
8
|
-
- Screen and terminal state.
|
|
9
|
-
- Files or browser tabs prepared in advance.
|
|
10
|
-
- Sensitive information that must be hidden.
|
|
11
|
-
|
|
12
|
-
## 00:00 - Hook
|
|
13
|
-
|
|
14
|
-
**Say:** Presenter wording.
|
|
15
|
-
|
|
16
|
-
**Show:** Exact visual or terminal state.
|
|
17
|
-
|
|
18
|
-
## 00:30 - Outcome
|
|
19
|
-
|
|
20
|
-
**Say:** What the learner will prove.
|
|
21
|
-
|
|
22
|
-
**Show:** Final result briefly, without teaching it yet.
|
|
23
|
-
|
|
24
|
-
## 01:00 - Mental model
|
|
25
|
-
|
|
26
|
-
**Say:** Minimum required explanation.
|
|
27
|
-
|
|
28
|
-
**Show:** Diagram, slide, or command help.
|
|
29
|
-
|
|
30
|
-
## 02:00 - Demonstration
|
|
31
|
-
|
|
32
|
-
For every step include:
|
|
33
|
-
|
|
34
|
-
- **Say:** intent before action;
|
|
35
|
-
- **Do:** command or interaction;
|
|
36
|
-
- **Point out:** the one important result.
|
|
37
|
-
|
|
38
|
-
## NN:NN - Boundary and recovery
|
|
39
|
-
|
|
40
|
-
Explain storage/privacy implications and demonstrate one common recovery.
|
|
41
|
-
|
|
42
|
-
## NN:NN - Recap
|
|
43
|
-
|
|
44
|
-
Restate the verified outcome and name the next lesson by ID.
|
|
45
|
-
|
|
46
|
-
## Editing notes
|
|
47
|
-
|
|
48
|
-
- Chapters and on-screen captions.
|
|
49
|
-
- Sections safe to re-record independently.
|
|
50
|
-
- Links for the description.
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
# L00 Video Script - Why Cairnkeep?
|
|
2
|
-
|
|
3
|
-
**Target duration:** 7 minutes
|
|
4
|
-
**Companion lesson:** [L00](../lessons/L00-why-cairnkeep.md)
|
|
5
|
-
|
|
6
|
-
## Recording setup
|
|
7
|
-
|
|
8
|
-
- Show only the trust-ladder table from the lesson.
|
|
9
|
-
- Prepare one slide containing the question: “What should survive this session?”
|
|
10
|
-
- No terminal or private project is required.
|
|
11
|
-
|
|
12
|
-
## 00:00 - Hook
|
|
13
|
-
|
|
14
|
-
**Say:** “A coding agent can solve a difficult problem today and make the same
|
|
15
|
-
mistake tomorrow. The missing piece is often not more context. It is a small,
|
|
16
|
-
reviewed record of what the project already learned.”
|
|
17
|
-
|
|
18
|
-
**Show:** The question slide.
|
|
19
|
-
|
|
20
|
-
## 00:35 - Outcome
|
|
21
|
-
|
|
22
|
-
**Say:** “In this lesson you will learn where Cairnkeep fits, what it should
|
|
23
|
-
remember, and what must remain in the repository or another canonical system.”
|
|
24
|
-
|
|
25
|
-
**Show:** The lesson outcome.
|
|
26
|
-
|
|
27
|
-
## 01:00 - Trust ladder
|
|
28
|
-
|
|
29
|
-
**Say:** “Follow information through a trust ladder. The current conversation is
|
|
30
|
-
working context. Optional captured evidence and hindsight notes preserve bounded
|
|
31
|
-
local observations, but they are not automatically trusted memory. Cairnkeep
|
|
32
|
-
memory holds concise operational facts. The project wiki is derived, cited
|
|
33
|
-
knowledge. Code, tests, specifications, policies, and issue trackers remain
|
|
34
|
-
canonical.”
|
|
35
|
-
|
|
36
|
-
**Show:** Reveal one table row at a time.
|
|
37
|
-
|
|
38
|
-
**Say:** “If these disagree, the canonical source wins. Cairnkeep helps the
|
|
39
|
-
agent find and apply knowledge; it does not redefine truth.”
|
|
40
|
-
|
|
41
|
-
## 02:40 - Memory versus RAG
|
|
42
|
-
|
|
43
|
-
**Say:** “Document RAG and codebase exploration answer a different question:
|
|
44
|
-
which source material is relevant right now? Cairnkeep can integrate with those
|
|
45
|
-
retrieval paths, but it does not require them. A decision such as ‘use
|
|
46
|
-
transactional migrations’ is a memory. The complete migration policy remains a
|
|
47
|
-
document.”
|
|
48
|
-
|
|
49
|
-
**Show:** Memory on the left, document retrieval on the right.
|
|
50
|
-
|
|
51
|
-
## 03:40 - Classification exercise
|
|
52
|
-
|
|
53
|
-
**Say:** “Consider four statements. A confirmed API behavior can become memory
|
|
54
|
-
and should still be traceable to code or a specification. A complete API
|
|
55
|
-
specification remains canonical. A debugging hypothesis stays in the session
|
|
56
|
-
until confirmed. A verified operational prohibition is a durable constraint.”
|
|
57
|
-
|
|
58
|
-
**Show:** The four L00 exercise statements and reveal answers after a pause.
|
|
59
|
-
|
|
60
|
-
## 05:10 - Boundary
|
|
61
|
-
|
|
62
|
-
**Say:** “Cairnkeep does not store every sentence from a session. The default
|
|
63
|
-
stdio setup stores memory on this computer. Structured capture, notes,
|
|
64
|
-
artifacts, evaluation, remote storage, model extraction, embeddings, and
|
|
65
|
-
document RAG are separate explicit choices.”
|
|
66
|
-
|
|
67
|
-
**Show:** “Local by default. Optional means opt-in.”
|
|
68
|
-
|
|
69
|
-
## 06:10 - Recap
|
|
70
|
-
|
|
71
|
-
**Say:** “Remember three things: durable memory is selective, evidence is not
|
|
72
|
-
automatically trusted memory, and canonical sources still win. Optional layers
|
|
73
|
-
are not prerequisites. In L01 we will inspect the published container without
|
|
74
|
-
installing the complete workflow.”
|
|
75
|
-
|
|
76
|
-
## Editing notes
|
|
77
|
-
|
|
78
|
-
- Chapters: Problem, Trust ladder, Memory vs retrieval, Exercise, Boundary.
|
|
79
|
-
- Link L00 and L01 in the description.
|
|
80
|
-
- Re-record the version-independent slide only if the conceptual model changes.
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
# L01 Video Script - Try it safely
|
|
2
|
-
|
|
3
|
-
**Target duration:** 8 minutes
|
|
4
|
-
**Companion lesson:** [L01](../lessons/L01-safe-trial.md)
|
|
5
|
-
|
|
6
|
-
## Recording setup
|
|
7
|
-
|
|
8
|
-
- Use a terminal with no registry credentials or unrelated containers visible.
|
|
9
|
-
- Remove any prior `cairnkeep-course-data` volume before recording.
|
|
10
|
-
- Put the complete Podman command in a prepared text file to avoid typing errors.
|
|
11
|
-
|
|
12
|
-
## 00:00 - Hook
|
|
13
|
-
|
|
14
|
-
**Say:** “Before installing commands or changing a coding harness, we can inspect
|
|
15
|
-
how the Cairnkeep server is packaged and what it is allowed to persist.”
|
|
16
|
-
|
|
17
|
-
**Show:** An empty terminal and `podman --version`.
|
|
18
|
-
|
|
19
|
-
## 00:30 - Outcome
|
|
20
|
-
|
|
21
|
-
**Say:** “We will run the server as an unprivileged, read-only container, expose
|
|
22
|
-
no network port, and identify the single named volume that would hold memory.”
|
|
23
|
-
|
|
24
|
-
## 01:00 - Pull the image
|
|
25
|
-
|
|
26
|
-
**Say:** “I am pinning the course version rather than using `latest`, so this
|
|
27
|
-
recording and the written instructions refer to the same artifact.”
|
|
28
|
-
|
|
29
|
-
**Do:** Run the L01 `podman pull` command.
|
|
30
|
-
|
|
31
|
-
**Point out:** The exact image name and version, without dwelling on layer output.
|
|
32
|
-
|
|
33
|
-
## 02:00 - Explain the isolation flags
|
|
34
|
-
|
|
35
|
-
**Say:** “The root filesystem is read-only, Linux capabilities are dropped,
|
|
36
|
-
new privileges are disabled, and only a constrained temporary directory plus a
|
|
37
|
-
named data volume are writable. No home directory or project is mounted.”
|
|
38
|
-
|
|
39
|
-
**Show:** Highlight the command in sections before running it.
|
|
40
|
-
|
|
41
|
-
## 03:15 - Start and stop
|
|
42
|
-
|
|
43
|
-
**Do:** Run the direct Podman stdio command.
|
|
44
|
-
|
|
45
|
-
**Say:** “The quiet process is expected. It is waiting for MCP messages on
|
|
46
|
-
standard input; it is not a web application.”
|
|
47
|
-
|
|
48
|
-
**Do:** Pause for two seconds, then press `Ctrl-C`.
|
|
49
|
-
|
|
50
|
-
## 04:30 - Inspect persistence
|
|
51
|
-
|
|
52
|
-
**Do:** Run `podman volume inspect cairnkeep-course-data`.
|
|
53
|
-
|
|
54
|
-
**Say:** “The container was disposable. The named volume is separate and would
|
|
55
|
-
survive replacement of the container. Removing that volume would remove its
|
|
56
|
-
stored databases.”
|
|
57
|
-
|
|
58
|
-
## 05:40 - Boundary and recovery
|
|
59
|
-
|
|
60
|
-
**Say:** “This test exposed no port and contacted no remote Cairnkeep server.
|
|
61
|
-
If your environment blocks GHCR or Podman, skip this optional trial and use the
|
|
62
|
-
npm installation in L02.”
|
|
63
|
-
|
|
64
|
-
**Do:** Run `podman volume exists cairnkeep-course-data` and show status `0`.
|
|
65
|
-
|
|
66
|
-
## 06:50 - Cleanup and recap
|
|
67
|
-
|
|
68
|
-
**Do:** Run `podman volume rm cairnkeep-course-data`.
|
|
69
|
-
|
|
70
|
-
**Say:** “Never run that cleanup against a real memory volume. We proved three
|
|
71
|
-
things: the server runs unprivileged, stdio exposes no listener, and persistence
|
|
72
|
-
is explicit. In L02 we install the complete local workflow.”
|
|
73
|
-
|
|
74
|
-
## Editing notes
|
|
75
|
-
|
|
76
|
-
- Blur unrelated image and volume names if they appear.
|
|
77
|
-
- Add a warning caption before volume removal.
|
|
78
|
-
- Link the Containers documentation and L02.
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
# L02 Video Script - Install the local workflow
|
|
2
|
-
|
|
3
|
-
**Target duration:** 12 minutes
|
|
4
|
-
**Companion lesson:** [L02](../lessons/L02-installation.md)
|
|
5
|
-
|
|
6
|
-
## Recording setup
|
|
7
|
-
|
|
8
|
-
- Use a clean user profile or disposable VM with Node.js 22 or newer.
|
|
9
|
-
- Install Claude Code but remove any existing `cairn-memory` registration.
|
|
10
|
-
- Ensure no private MCP servers, provider URLs, or environment variables appear.
|
|
11
|
-
- Prepare a snapshot before installation for a repeatable retake.
|
|
12
|
-
|
|
13
|
-
## 00:00 - Hook
|
|
14
|
-
|
|
15
|
-
**Say:** “The most common incomplete installation has a running memory server
|
|
16
|
-
but no Cairnkeep commands or hooks. We will install and verify all three parts
|
|
17
|
-
of the local workflow.”
|
|
18
|
-
|
|
19
|
-
**Show:** A three-part diagram: CLI, MCP registration, operating layer.
|
|
20
|
-
|
|
21
|
-
## 00:40 - Outcome
|
|
22
|
-
|
|
23
|
-
**Say:** “At the end, Claude Code can start the local `cairn-memory` server and
|
|
24
|
-
the managed command assets pass a non-writing drift check.”
|
|
25
|
-
|
|
26
|
-
## 01:10 - Runtime preflight
|
|
27
|
-
|
|
28
|
-
**Do:** Run `node --version` and `npm --version`.
|
|
29
|
-
|
|
30
|
-
**Say:** “Cairnkeep requires Node.js 22 or newer. I verify that before changing
|
|
31
|
-
the machine.”
|
|
32
|
-
|
|
33
|
-
## 02:00 - Install the CLI
|
|
34
|
-
|
|
35
|
-
**Do:** Run the pinned npm install and `cairn --version` from L02.
|
|
36
|
-
|
|
37
|
-
**Say:** “For a course recording I pin the version. Users can follow the current
|
|
38
|
-
release instructions when the lesson is updated.”
|
|
39
|
-
|
|
40
|
-
## 03:30 - Register MCP
|
|
41
|
-
|
|
42
|
-
**Say:** “The stable server name is `cairn-memory`. This command tells Claude
|
|
43
|
-
Code to launch a local stdio child process. It does not configure a remote URL.”
|
|
44
|
-
|
|
45
|
-
**Do:** Run the `claude mcp add` command, followed by `claude mcp get cairn-memory`.
|
|
46
|
-
|
|
47
|
-
**Point out:** The command is `cairn memory-server`.
|
|
48
|
-
|
|
49
|
-
## 05:15 - Install the operating layer
|
|
50
|
-
|
|
51
|
-
**Say:** “MCP tools alone do not install `/remember`, `/recall`, wiki commands,
|
|
52
|
-
review workflows, agents, or hooks. That is the job of `cairn sync`.”
|
|
53
|
-
|
|
54
|
-
**Do:** Run `cairn sync --apply`.
|
|
55
|
-
|
|
56
|
-
**Pause:** Allow the learner to see the asset summary.
|
|
57
|
-
|
|
58
|
-
## 07:00 - Verify without writing
|
|
59
|
-
|
|
60
|
-
**Do:** Run `cairn sync --check`.
|
|
61
|
-
|
|
62
|
-
**Say:** “This is the repeatable drift check. A healthy result means the
|
|
63
|
-
operating layer matches the installed distribution. MCP registration plus this
|
|
64
|
-
check distinguishes a complete setup from a partial one.”
|
|
65
|
-
|
|
66
|
-
## 08:30 - Common failure demonstration
|
|
67
|
-
|
|
68
|
-
**Say:** “If slash commands are missing, do not reinstall everything blindly.
|
|
69
|
-
First check the MCP registration, then check operating-layer drift, and restart
|
|
70
|
-
the harness after applying assets.”
|
|
71
|
-
|
|
72
|
-
**Show:** The two verification commands together.
|
|
73
|
-
|
|
74
|
-
## 09:30 - Optional shell completion
|
|
75
|
-
|
|
76
|
-
**Do:** Run `source <(cairn completion bash)` and complete `cairn tra`.
|
|
77
|
-
|
|
78
|
-
**Say:** “Completion is optional convenience. It does not start another server
|
|
79
|
-
or enable any feature.”
|
|
80
|
-
|
|
81
|
-
## 10:00 - Boundary
|
|
82
|
-
|
|
83
|
-
**Say:** “This default server is local. We did not configure embeddings,
|
|
84
|
-
document RAG, or remote HTTP memory. Those choices have separate lessons
|
|
85
|
-
because they change data flow.”
|
|
86
|
-
|
|
87
|
-
## 11:00 - Recap
|
|
88
|
-
|
|
89
|
-
**Say:** “The machine setup has three pieces: CLI, MCP registration, and the
|
|
90
|
-
operating layer. In L03 we add the fourth piece, a bootstrapped project, and
|
|
91
|
-
prove memory survives a new session.”
|
|
92
|
-
|
|
93
|
-
## Editing notes
|
|
94
|
-
|
|
95
|
-
- Chapter markers: Preflight, CLI, MCP, Operating layer, Verify, Boundary.
|
|
96
|
-
- Do not show the general MCP list if it contains unrelated server names.
|
|
97
|
-
- Link L02, the operating guide, and L03.
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
# L03 Video Script - Bootstrap the first project
|
|
2
|
-
|
|
3
|
-
**Target duration:** 13 minutes
|
|
4
|
-
**Companion lesson:** [L03](../lessons/L03-first-project.md)
|
|
5
|
-
|
|
6
|
-
## Recording setup
|
|
7
|
-
|
|
8
|
-
- Start from the completed L02 VM snapshot.
|
|
9
|
-
- Confirm `$HOME/cairnkeep-course/first-project` does not exist.
|
|
10
|
-
- Use only the synthetic UTC convention from the lesson.
|
|
11
|
-
- Prepare to stop and restart the harness during the recording.
|
|
12
|
-
|
|
13
|
-
## 00:00 - Hook
|
|
14
|
-
|
|
15
|
-
**Say:** “An installation is not proven by files on disk. The useful proof is a
|
|
16
|
-
fact accepted in one session and recalled in a new session.”
|
|
17
|
-
|
|
18
|
-
## 00:30 - Outcome
|
|
19
|
-
|
|
20
|
-
**Say:** “We will bootstrap a disposable Git repository, run diagnostics, store
|
|
21
|
-
one synthetic convention, restart Claude Code, and retrieve it again.”
|
|
22
|
-
|
|
23
|
-
## 01:00 - Create the project
|
|
24
|
-
|
|
25
|
-
**Do:** Run the directory, `git init`, and README commands from L03.
|
|
26
|
-
|
|
27
|
-
**Say:** “I use a disposable repository so no course artifact can reach a real
|
|
28
|
-
project.”
|
|
29
|
-
|
|
30
|
-
## 02:00 - Bootstrap
|
|
31
|
-
|
|
32
|
-
**Say:** “Bootstrap adds project launchers and derived-knowledge scaffolding. It
|
|
33
|
-
does not reinstall the machine-level MCP server or operating assets.”
|
|
34
|
-
|
|
35
|
-
**Do:** Run `cairn bootstrap "$PWD"` and copy `.ai/env.example` to `.ai/.env`.
|
|
36
|
-
|
|
37
|
-
**Point out:** The generated next steps without reading every created filename.
|
|
38
|
-
|
|
39
|
-
## 03:45 - Diagnose
|
|
40
|
-
|
|
41
|
-
**Do:** Run `cairn doctor`.
|
|
42
|
-
|
|
43
|
-
**Say:** “Optional unconfigured integrations may be skipped. A configured but
|
|
44
|
-
unreachable dependency is a failure and should be fixed before relying on it.”
|
|
45
|
-
|
|
46
|
-
**Point out:** Session capture, notes, compaction, artifacts, typed memory,
|
|
47
|
-
capability governance, and evaluation remain off for the core-memory proof.
|
|
48
|
-
|
|
49
|
-
## 05:00 - Launch and remember
|
|
50
|
-
|
|
51
|
-
**Do:** Start `./.ai/start-claude.sh`.
|
|
52
|
-
|
|
53
|
-
**Say:** “I launch through the project script so every session loads the same
|
|
54
|
-
project environment.”
|
|
55
|
-
|
|
56
|
-
**Do in Claude:** `/remember Course convention: examples use UTC timestamps.`
|
|
57
|
-
|
|
58
|
-
**Point out:** The durable key returned by the workflow.
|
|
59
|
-
|
|
60
|
-
## 07:00 - Recall
|
|
61
|
-
|
|
62
|
-
**Do in Claude:** `/recall UTC timestamps`
|
|
63
|
-
|
|
64
|
-
**Say:** “This confirms retrieval inside the first session, but not yet
|
|
65
|
-
persistence across sessions.”
|
|
66
|
-
|
|
67
|
-
## 08:00 - Persistence proof
|
|
68
|
-
|
|
69
|
-
**Do:** Exit Claude Code, run the launcher again, and repeat `/recall UTC timestamps`.
|
|
70
|
-
|
|
71
|
-
**Pause:** Keep the retrieved result visible.
|
|
72
|
-
|
|
73
|
-
**Say:** “This is the important proof. The second harness process recovered the
|
|
74
|
-
accepted fact from durable local storage.”
|
|
75
|
-
|
|
76
|
-
## 10:00 - Locate storage
|
|
77
|
-
|
|
78
|
-
**Do:** Exit the harness and run `cairn memory path`.
|
|
79
|
-
|
|
80
|
-
**Say:** “The command reports the local store location. Nothing in bootstrap
|
|
81
|
-
silently selected a remote server.”
|
|
82
|
-
|
|
83
|
-
## 11:00 - Recovery and boundary
|
|
84
|
-
|
|
85
|
-
**Say:** “If recall fails after restart, compare the launcher and environment,
|
|
86
|
-
check the MCP registration, and verify the storage path. Do not solve routing
|
|
87
|
-
problems by copying database files while the server is running.”
|
|
88
|
-
|
|
89
|
-
## 12:00 - Recap
|
|
90
|
-
|
|
91
|
-
**Say:** “We bootstrapped one project, used its launcher, and proved persistence
|
|
92
|
-
across a new session. The quickstart is complete. L04 will teach how to choose
|
|
93
|
-
keys, scopes, search, history, and the memory review gate.”
|
|
94
|
-
|
|
95
|
-
## Editing notes
|
|
96
|
-
|
|
97
|
-
- Do not cut away the harness exit/restart; it is the central proof.
|
|
98
|
-
- Add captions for “first session” and “second session”.
|
|
99
|
-
- Link L03 and L04 in the description.
|