@cairnkeep/cli 2.2.1 → 2.3.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 +12 -0
- package/README.md +6 -3
- package/bin/cairn +5 -0
- package/docs/learning/PRODUCTION-PLAN.md +122 -0
- package/docs/learning/README.md +58 -0
- package/docs/learning/instructor-guide.md +60 -0
- package/docs/learning/lessons/L00-why-cairnkeep.md +87 -0
- package/docs/learning/lessons/L01-safe-trial.md +96 -0
- package/docs/learning/lessons/L02-installation.md +115 -0
- package/docs/learning/lessons/L03-first-project.md +116 -0
- package/docs/learning/lessons/L04-memory-fundamentals.md +44 -0
- package/docs/learning/lessons/L05-daily-workflow.md +43 -0
- package/docs/learning/lessons/L06-repository-quality.md +45 -0
- package/docs/learning/lessons/L07-privacy-and-storage.md +42 -0
- package/docs/learning/lessons/L08-multiple-machines.md +41 -0
- package/docs/learning/lessons/L09-domain-knowledge.md +42 -0
- package/docs/learning/lessons/L10-context-exploration.md +42 -0
- package/docs/learning/lessons/L11-containers.md +42 -0
- package/docs/learning/lessons/L12-managed-overlays.md +43 -0
- package/docs/learning/templates/lesson-template.md +61 -0
- package/docs/learning/templates/video-script-template.md +50 -0
- package/docs/learning/tracks/operator.md +14 -0
- package/docs/learning/tracks/practitioner.md +15 -0
- package/docs/learning/tracks/quickstart.md +14 -0
- package/docs/learning/video-scripts/L00-why-cairnkeep.md +76 -0
- package/docs/learning/video-scripts/L01-safe-trial.md +78 -0
- package/docs/learning/video-scripts/L02-installation.md +90 -0
- package/docs/learning/video-scripts/L03-first-project.md +96 -0
- package/docs/operating.md +14 -0
- package/package.json +1 -1
- package/scripts/completion.sh +80 -0
- package/scripts/test-completion.sh +24 -0
- package/scripts/test-learning-docs.sh +78 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# L03 - Bootstrap the first project
|
|
2
|
+
|
|
3
|
+
**Status:** Ready
|
|
4
|
+
**Track:** Quickstart
|
|
5
|
+
**Time:** 25 minutes
|
|
6
|
+
**Tested with:** Cairnkeep 2.3.0
|
|
7
|
+
|
|
8
|
+
## Outcome
|
|
9
|
+
|
|
10
|
+
You can bootstrap a disposable project, verify its wiring, store one accepted
|
|
11
|
+
fact, and recall it from a new harness session.
|
|
12
|
+
|
|
13
|
+
## Prerequisites
|
|
14
|
+
|
|
15
|
+
- Completed [L02](L02-installation.md).
|
|
16
|
+
- Git and a supported harness.
|
|
17
|
+
- A disposable directory that contains no real project or confidential data.
|
|
18
|
+
|
|
19
|
+
## Exercise
|
|
20
|
+
|
|
21
|
+
1. Create a disposable repository:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
mkdir -p "$HOME/cairnkeep-course/first-project"
|
|
25
|
+
cd "$HOME/cairnkeep-course/first-project"
|
|
26
|
+
git init
|
|
27
|
+
printf '# Cairnkeep course project\n' > README.md
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
2. Bootstrap the project:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
cairn bootstrap "$PWD"
|
|
34
|
+
cp .ai/env.example .ai/.env
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
3. Keep optional endpoint and model values unset for this local exercise. Run
|
|
38
|
+
diagnostics:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
cairn doctor
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
4. Launch Claude Code through the generated project launcher:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
./.ai/start-claude.sh
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
5. In the harness, store a deliberately synthetic convention:
|
|
51
|
+
|
|
52
|
+
```text
|
|
53
|
+
/remember Course convention: examples use UTC timestamps.
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
6. Retrieve it:
|
|
57
|
+
|
|
58
|
+
```text
|
|
59
|
+
/recall UTC timestamps
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
7. Exit the harness, start it again with the same launcher, and repeat the
|
|
63
|
+
recall. This second session is the persistence proof.
|
|
64
|
+
|
|
65
|
+
## Verify
|
|
66
|
+
|
|
67
|
+
The lesson is complete only if:
|
|
68
|
+
|
|
69
|
+
- `cairn doctor` reports no configured dependency failures;
|
|
70
|
+
- `/remember` confirms a durable key;
|
|
71
|
+
- `/recall` finds the fact after the first session has exited;
|
|
72
|
+
- `cairn memory path` points to local storage on this machine.
|
|
73
|
+
|
|
74
|
+
## Common failures
|
|
75
|
+
|
|
76
|
+
| Symptom | Cause | Recovery |
|
|
77
|
+
|---|---|---|
|
|
78
|
+
| Launcher is missing | A different directory was bootstrapped | Run `pwd`, then bootstrap that exact path |
|
|
79
|
+
| `.ai/.env` is missing | Only the example is generated | Copy `.ai/env.example` to `.ai/.env` |
|
|
80
|
+
| `cairn-memory` is unavailable | L02 MCP registration is absent or stale | Run `claude mcp get cairn-memory`, repair it, then restart Claude Code |
|
|
81
|
+
| Slash commands are unknown | Operating assets were not loaded | Run `cairn sync --check`, apply if needed, then restart the harness |
|
|
82
|
+
| Recall works only in the first session | Sessions used different storage routing | Compare launchers and environment, then inspect `cairn memory path` |
|
|
83
|
+
|
|
84
|
+
## Privacy and trust boundary
|
|
85
|
+
|
|
86
|
+
Use synthetic memory in the course. The local stdio server writes to local
|
|
87
|
+
AgentFS/SQLite storage. Project wiki and planning files are derived artifacts;
|
|
88
|
+
the repository remains canonical.
|
|
89
|
+
|
|
90
|
+
## Clean up
|
|
91
|
+
|
|
92
|
+
Exit the harness before removing the disposable project:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
rm -rf "$HOME/cairnkeep-course/first-project"
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
This removes project scaffolding but not the global memory store. Remove the
|
|
99
|
+
synthetic memory through the normal memory review/delete workflow if required.
|
|
100
|
+
|
|
101
|
+
## Optional challenge
|
|
102
|
+
|
|
103
|
+
Repeat bootstrap with `--untracked` in another disposable Git repository, then
|
|
104
|
+
inspect `.git/info/exclude` to see how contributor mode avoids shared changes.
|
|
105
|
+
|
|
106
|
+
## Recap
|
|
107
|
+
|
|
108
|
+
- Bootstrap is project-specific and follows machine setup.
|
|
109
|
+
- The generated launcher establishes a repeatable project environment.
|
|
110
|
+
- Persistence is proven only after a new session recalls the accepted fact.
|
|
111
|
+
|
|
112
|
+
Next: [L04 - Memory fundamentals](L04-memory-fundamentals.md).
|
|
113
|
+
|
|
114
|
+
## Video
|
|
115
|
+
|
|
116
|
+
Use [the L03 presenter script](../video-scripts/L03-first-project.md).
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# L04 - Memory fundamentals
|
|
2
|
+
|
|
3
|
+
**Status:** Brief
|
|
4
|
+
**Track:** Practitioner
|
|
5
|
+
**Planned time:** 35 minutes
|
|
6
|
+
|
|
7
|
+
## Outcome
|
|
8
|
+
|
|
9
|
+
Choose an appropriate scope and key, search by meaning, inspect history, and
|
|
10
|
+
review extracted candidates before they become durable memory.
|
|
11
|
+
|
|
12
|
+
## Planned lesson
|
|
13
|
+
|
|
14
|
+
- Identity, project, and global scopes.
|
|
15
|
+
- Key families: `decisions/`, `pitfalls/`, `patterns/`, `bugs/`,
|
|
16
|
+
`constraints/`, and `conventions/`.
|
|
17
|
+
- Exact read versus semantic search and substring fallback.
|
|
18
|
+
- Superseding a fact without losing history.
|
|
19
|
+
- Session-end candidate extraction and `/memory-review` as the acceptance gate.
|
|
20
|
+
- Deleting synthetic course memory safely.
|
|
21
|
+
|
|
22
|
+
## Hands-on lab
|
|
23
|
+
|
|
24
|
+
Store three synthetic facts in different categories, retrieve them by an
|
|
25
|
+
imprecise query, supersede one, inspect its history, and reject one staged
|
|
26
|
+
candidate.
|
|
27
|
+
|
|
28
|
+
## Acceptance criteria
|
|
29
|
+
|
|
30
|
+
- The learner can justify the scope and category for each fact.
|
|
31
|
+
- Search finds a fact without requiring its exact key.
|
|
32
|
+
- Superseding preserves the prior value in history.
|
|
33
|
+
- No extracted candidate becomes durable without an explicit review action.
|
|
34
|
+
|
|
35
|
+
## Planned video
|
|
36
|
+
|
|
37
|
+
Open with two contradictory memories, demonstrate search and superseding, then
|
|
38
|
+
finish with the review queue. Target 12-15 minutes. Write the complete script in
|
|
39
|
+
Wave 2 after the lab fixture is executable.
|
|
40
|
+
|
|
41
|
+
## Source material
|
|
42
|
+
|
|
43
|
+
- [Operating guide](../../operating.md#the-workflow)
|
|
44
|
+
- [Storage and deployment](../../storage.md)
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# L05 - The daily workflow
|
|
2
|
+
|
|
3
|
+
**Status:** Brief
|
|
4
|
+
**Track:** Practitioner
|
|
5
|
+
**Planned time:** 40 minutes
|
|
6
|
+
|
|
7
|
+
## Outcome
|
|
8
|
+
|
|
9
|
+
Use memory, the cited wiki, alignment artifacts, and automatic hooks without
|
|
10
|
+
confusing derived knowledge with canonical project sources.
|
|
11
|
+
|
|
12
|
+
## Planned lesson
|
|
13
|
+
|
|
14
|
+
- SessionStart recall, pre-edit recall, and SessionEnd candidate staging.
|
|
15
|
+
- `/wiki-ingest`, `/wiki-query`, and `/wiki-lint`.
|
|
16
|
+
- Sparse, citation-heavy wiki pages rather than copied documentation.
|
|
17
|
+
- Alignment gaps, contradictions, and project planning artifacts.
|
|
18
|
+
- `/memory-sync` for configured git-provider state.
|
|
19
|
+
- A start-of-task and end-of-task checklist.
|
|
20
|
+
|
|
21
|
+
## Hands-on lab
|
|
22
|
+
|
|
23
|
+
Ingest one synthetic ADR, query it with citations, change the canonical ADR,
|
|
24
|
+
observe staleness, refresh the derived page, and review the session candidate
|
|
25
|
+
queue before exiting.
|
|
26
|
+
|
|
27
|
+
## Acceptance criteria
|
|
28
|
+
|
|
29
|
+
- Every derived claim links to a canonical source.
|
|
30
|
+
- A stale or contradictory page is detected rather than silently trusted.
|
|
31
|
+
- Automatic hooks are observable and do not bypass human memory review.
|
|
32
|
+
- The learner can describe what to do at session start, before editing, and at
|
|
33
|
+
session end.
|
|
34
|
+
|
|
35
|
+
## Planned video
|
|
36
|
+
|
|
37
|
+
Follow one small feature from session start to reviewed handoff. Target 15
|
|
38
|
+
minutes and split wiki maintenance into a second video if rehearsal runs long.
|
|
39
|
+
|
|
40
|
+
## Source material
|
|
41
|
+
|
|
42
|
+
- [Operating guide](../../operating.md#the-workflow)
|
|
43
|
+
- [Git provider configuration](../../git-providers.md)
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# L06 - Repository review and security
|
|
2
|
+
|
|
3
|
+
**Status:** Brief
|
|
4
|
+
**Track:** Practitioner
|
|
5
|
+
**Planned time:** 45 minutes
|
|
6
|
+
|
|
7
|
+
## Outcome
|
|
8
|
+
|
|
9
|
+
Run `/repo-review` and `/security-audit` against a bounded target, validate
|
|
10
|
+
findings, and keep generated reports separate from automatic code changes.
|
|
11
|
+
|
|
12
|
+
## Planned lesson
|
|
13
|
+
|
|
14
|
+
- When to use repository review versus a security audit.
|
|
15
|
+
- Target selection, repository boundaries, and safe local-only policy.
|
|
16
|
+
- Investigator and validator roles.
|
|
17
|
+
- Severity, evidence, reproduction, false positives, and remediation ordering.
|
|
18
|
+
- Reviewing `REVIEW.md` and `.planning/security/` before acting.
|
|
19
|
+
- Why a report is not permission to modify unrelated code.
|
|
20
|
+
|
|
21
|
+
## Hands-on lab
|
|
22
|
+
|
|
23
|
+
Use a deliberately vulnerable toy service containing a correctness defect, an
|
|
24
|
+
authorization defect, and one tempting false positive. Run both workflows,
|
|
25
|
+
reproduce valid findings, reject the false positive, and apply fixes on a
|
|
26
|
+
solution branch.
|
|
27
|
+
|
|
28
|
+
## Acceptance criteria
|
|
29
|
+
|
|
30
|
+
- The learner finds both real defects and does not report the planted false
|
|
31
|
+
positive as confirmed.
|
|
32
|
+
- Every accepted finding contains evidence and a reproduction path.
|
|
33
|
+
- No scan reaches outside the disposable repository or its local processes.
|
|
34
|
+
- The lab passes after remediation and fails in its tagged starter state.
|
|
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
|
+
## Source material
|
|
43
|
+
|
|
44
|
+
- [Operating guide](../../operating.md#the-workflow)
|
|
45
|
+
- Course-labs repository to be created in Wave 2
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# L07 - Privacy and storage
|
|
2
|
+
|
|
3
|
+
**Status:** Brief
|
|
4
|
+
**Track:** Practitioner
|
|
5
|
+
**Planned time:** 30 minutes
|
|
6
|
+
|
|
7
|
+
## Outcome
|
|
8
|
+
|
|
9
|
+
Predict where memory, project artifacts, credentials, and optional model data
|
|
10
|
+
will go before starting a session.
|
|
11
|
+
|
|
12
|
+
## Planned lesson
|
|
13
|
+
|
|
14
|
+
- The placement rule: the server process owns the store it opens.
|
|
15
|
+
- Local stdio versus explicitly configured remote HTTP.
|
|
16
|
+
- AgentFS/SQLite data at rest and project-derived artifacts.
|
|
17
|
+
- Credential boundaries and environment-variable precedence.
|
|
18
|
+
- Embedding/extraction endpoints and what content they receive.
|
|
19
|
+
- `cairn memory path` and a preflight data-flow checklist.
|
|
20
|
+
|
|
21
|
+
## Hands-on lab
|
|
22
|
+
|
|
23
|
+
Draw the data flow for a default local setup and for a disposable loopback HTTP
|
|
24
|
+
setup. Verify the local store path, inspect only file permissions and database
|
|
25
|
+
names, and prove that no remote destination was discovered.
|
|
26
|
+
|
|
27
|
+
## Acceptance criteria
|
|
28
|
+
|
|
29
|
+
- The learner predicts the correct storage host for both topologies.
|
|
30
|
+
- Secrets are never printed, committed, or included in screenshots.
|
|
31
|
+
- Optional model and RAG flows are identified separately from memory storage.
|
|
32
|
+
- The learner can stop when an effective destination is ambiguous.
|
|
33
|
+
|
|
34
|
+
## Planned video
|
|
35
|
+
|
|
36
|
+
Use two simple diagrams and one terminal preflight. Target 10 minutes. Do not
|
|
37
|
+
demonstrate real endpoints or credentials.
|
|
38
|
+
|
|
39
|
+
## Source material
|
|
40
|
+
|
|
41
|
+
- [Privacy and data flow](../../privacy-and-data-flow.md)
|
|
42
|
+
- [Storage and deployment](../../storage.md)
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# L08 - Multiple machines
|
|
2
|
+
|
|
3
|
+
**Status:** Brief
|
|
4
|
+
**Track:** Practitioner
|
|
5
|
+
**Planned time:** 40 minutes
|
|
6
|
+
|
|
7
|
+
## Outcome
|
|
8
|
+
|
|
9
|
+
Choose between independent local stores, export/import migration, and a trusted
|
|
10
|
+
remote service, then execute a backup-first migration without data loss.
|
|
11
|
+
|
|
12
|
+
## Planned lesson
|
|
13
|
+
|
|
14
|
+
- Independent local memory versus intentional centralization.
|
|
15
|
+
- WAL-safe `cairn memory export` and backup-first import.
|
|
16
|
+
- Trusted-client automation with private configuration.
|
|
17
|
+
- Authenticated HTTP routing and one-server/one-trust-domain limitations.
|
|
18
|
+
- Migration ordering, rollback, and old-client compatibility.
|
|
19
|
+
- Verifying source and destination before decommissioning anything.
|
|
20
|
+
|
|
21
|
+
## Hands-on lab
|
|
22
|
+
|
|
23
|
+
Create a disposable store, write two synthetic facts, export it, import into a
|
|
24
|
+
second isolated base directory, verify both facts, and demonstrate rollback to
|
|
25
|
+
the pre-import backup.
|
|
26
|
+
|
|
27
|
+
## Acceptance criteria
|
|
28
|
+
|
|
29
|
+
- Source data remains intact throughout the exercise.
|
|
30
|
+
- The destination is backed up automatically before import.
|
|
31
|
+
- The learner verifies counts and exact synthetic values on both sides.
|
|
32
|
+
- No remote service is introduced merely to complete the migration lab.
|
|
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
|
+
## Source material
|
|
40
|
+
|
|
41
|
+
- [Storage and deployment](../../storage.md#inspecting-and-moving-memory)
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# L09 - Domain knowledge with RAG
|
|
2
|
+
|
|
3
|
+
**Status:** Brief
|
|
4
|
+
**Track:** Operator
|
|
5
|
+
**Planned time:** 35 minutes
|
|
6
|
+
|
|
7
|
+
## Outcome
|
|
8
|
+
|
|
9
|
+
Connect an optional document-RAG workspace, query it, and disable it again
|
|
10
|
+
without affecting core Cairnkeep memory.
|
|
11
|
+
|
|
12
|
+
## Planned lesson
|
|
13
|
+
|
|
14
|
+
- Memory versus document RAG responsibilities.
|
|
15
|
+
- Workspace selection and project configuration.
|
|
16
|
+
- Query-only setup before document synchronization.
|
|
17
|
+
- Incremental, full, and replacement synchronization boundaries.
|
|
18
|
+
- Endpoint, credential, and document-selection safety.
|
|
19
|
+
- Diagnosing an unavailable RAG service with `cairn doctor`.
|
|
20
|
+
|
|
21
|
+
## Hands-on lab
|
|
22
|
+
|
|
23
|
+
Index a synthetic three-document corpus into a disposable workspace, ask a
|
|
24
|
+
question requiring citations to two documents, update one document, resync, and
|
|
25
|
+
verify the new answer. Then unset the integration and prove memory still works.
|
|
26
|
+
|
|
27
|
+
## Acceptance criteria
|
|
28
|
+
|
|
29
|
+
- Only allowlisted synthetic documents are uploaded.
|
|
30
|
+
- The learner can identify the selected workspace and endpoint without printing
|
|
31
|
+
its credential.
|
|
32
|
+
- Updated content replaces stale retrieval results.
|
|
33
|
+
- Disabling RAG leaves `/remember` and `/recall` healthy.
|
|
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
|
+
## Source material
|
|
41
|
+
|
|
42
|
+
- [Domain knowledge](../../domain-knowledge.md)
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# L10 - Faster context exploration
|
|
2
|
+
|
|
3
|
+
**Status:** Brief
|
|
4
|
+
**Track:** Operator
|
|
5
|
+
**Planned time:** 30 minutes
|
|
6
|
+
|
|
7
|
+
## Outcome
|
|
8
|
+
|
|
9
|
+
Use optional token-miser/FastContext exploration with compact citations and
|
|
10
|
+
understand caching, routing, and fallback behavior.
|
|
11
|
+
|
|
12
|
+
## Planned lesson
|
|
13
|
+
|
|
14
|
+
- `context_explore` as a thin delegate rather than a second memory store.
|
|
15
|
+
- Repository root, query, citations, and cache keys.
|
|
16
|
+
- Cross-referencing citations with memory and the wiki.
|
|
17
|
+
- Optional pre-task invocation and its privacy implication.
|
|
18
|
+
- `route_check` health versus model-selection policy.
|
|
19
|
+
- Failure behavior when the optional subprocess is absent.
|
|
20
|
+
|
|
21
|
+
## Hands-on lab
|
|
22
|
+
|
|
23
|
+
Explore a synthetic repository, verify every returned path and line range,
|
|
24
|
+
repeat the query to observe caching, modify the repository, and confirm cache
|
|
25
|
+
invalidation. Disable the binary and verify standalone Cairnkeep remains usable.
|
|
26
|
+
|
|
27
|
+
## Acceptance criteria
|
|
28
|
+
|
|
29
|
+
- Every reported citation resolves to current repository content.
|
|
30
|
+
- Dirty-state or HEAD changes prevent stale cache reuse.
|
|
31
|
+
- The learner distinguishes exploration output from durable memory.
|
|
32
|
+
- An unavailable explorer fails locally without breaking memory operations.
|
|
33
|
+
|
|
34
|
+
## Planned video
|
|
35
|
+
|
|
36
|
+
Compare a broad manual search with one cited exploration result. Target 10
|
|
37
|
+
minutes and keep routing as a separate optional chapter.
|
|
38
|
+
|
|
39
|
+
## Source material
|
|
40
|
+
|
|
41
|
+
- [Operating guide](../../operating.md#exploration-cache-context_explore-on-by-default)
|
|
42
|
+
- [token-miser](https://github.com/cairnkeep/token-miser)
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# L11 - Containers and isolation
|
|
2
|
+
|
|
3
|
+
**Status:** Brief
|
|
4
|
+
**Track:** Operator
|
|
5
|
+
**Planned time:** 40 minutes
|
|
6
|
+
|
|
7
|
+
## Outcome
|
|
8
|
+
|
|
9
|
+
Select and operate local stdio, authenticated HTTP, persistent service, or
|
|
10
|
+
isolated workspace container modes while preserving data deliberately.
|
|
11
|
+
|
|
12
|
+
## Planned lesson
|
|
13
|
+
|
|
14
|
+
- Minimal server image versus workspace base image.
|
|
15
|
+
- Rootless execution, read-only filesystems, volumes, and secret mounts.
|
|
16
|
+
- Loopback HTTP, TLS/rebinding boundaries, and trust domains.
|
|
17
|
+
- Podman Compose and Quadlet persistence.
|
|
18
|
+
- Sandbox-copy versus shared-host workspace modes.
|
|
19
|
+
- Backup and rollback before image replacement.
|
|
20
|
+
|
|
21
|
+
## Hands-on lab
|
|
22
|
+
|
|
23
|
+
Start a loopback authenticated server with a disposable token file and volume,
|
|
24
|
+
probe health and memory persistence across container replacement, then remove
|
|
25
|
+
only the course resources.
|
|
26
|
+
|
|
27
|
+
## Acceptance criteria
|
|
28
|
+
|
|
29
|
+
- No credential appears in the image, command line, or repository.
|
|
30
|
+
- The service binds only to the documented interface.
|
|
31
|
+
- Memory survives container replacement and disappears only when the course
|
|
32
|
+
volume is deliberately removed.
|
|
33
|
+
- The learner can enumerate every mount and network boundary.
|
|
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
|
+
## Source material
|
|
41
|
+
|
|
42
|
+
- [Containers](../../containers.md)
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# L12 - Managed overlays
|
|
2
|
+
|
|
3
|
+
**Status:** Brief
|
|
4
|
+
**Track:** Operator
|
|
5
|
+
**Planned time:** 45 minutes
|
|
6
|
+
|
|
7
|
+
## Outcome
|
|
8
|
+
|
|
9
|
+
Design a private managed distribution that pins the public core, injects policy
|
|
10
|
+
through supported seams, delivers no secrets, and upgrades fleets safely.
|
|
11
|
+
|
|
12
|
+
## Planned lesson
|
|
13
|
+
|
|
14
|
+
- Why an overlay is a distribution, not a fork of core behavior.
|
|
15
|
+
- Manifest, core pin, launcher seams, and project profile lock.
|
|
16
|
+
- Private registry and derived container image options.
|
|
17
|
+
- Machine-private configuration versus distributable defaults.
|
|
18
|
+
- Bootstrap, diagnostics, fleet status/update, release gates, and rollback.
|
|
19
|
+
- Compatibility guarantees for existing clients and stored memory.
|
|
20
|
+
|
|
21
|
+
## Hands-on lab
|
|
22
|
+
|
|
23
|
+
Build a generic example overlay that adds a harmless pre-launch environment
|
|
24
|
+
marker, packages it to a local registry, bootstraps two disposable projects,
|
|
25
|
+
upgrades the pin, verifies fleet status, and rolls one project back.
|
|
26
|
+
|
|
27
|
+
## Acceptance criteria
|
|
28
|
+
|
|
29
|
+
- The public core remains provider-neutral and unmodified.
|
|
30
|
+
- The package and image contain no credential or machine-private configuration.
|
|
31
|
+
- Effective storage and service destinations are explainable before launch.
|
|
32
|
+
- Upgrade and rollback preserve the disposable memory store.
|
|
33
|
+
|
|
34
|
+
## Planned video
|
|
35
|
+
|
|
36
|
+
Show the same project under public core and a generic managed overlay, then
|
|
37
|
+
explain the small delta. Target 15 minutes; keep registry administration in the
|
|
38
|
+
written operator lab.
|
|
39
|
+
|
|
40
|
+
## Source material
|
|
41
|
+
|
|
42
|
+
- [Building a private overlay](../../building-an-overlay.md)
|
|
43
|
+
- [Managed distributions](../../overlay-distributions.md)
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# LXX - Lesson title
|
|
2
|
+
|
|
3
|
+
**Status:** Draft
|
|
4
|
+
**Track:** Quickstart | Practitioner | Operator
|
|
5
|
+
**Time:** NN minutes
|
|
6
|
+
**Tested with:** Cairnkeep X.Y.Z
|
|
7
|
+
|
|
8
|
+
## Outcome
|
|
9
|
+
|
|
10
|
+
State one observable capability the learner will have at the end.
|
|
11
|
+
|
|
12
|
+
## Why this matters
|
|
13
|
+
|
|
14
|
+
Describe the practical problem in no more than three paragraphs.
|
|
15
|
+
|
|
16
|
+
## Prerequisites
|
|
17
|
+
|
|
18
|
+
- Required prior lesson.
|
|
19
|
+
- Required software and supported versions.
|
|
20
|
+
- Starting repository and state.
|
|
21
|
+
|
|
22
|
+
## Mental model
|
|
23
|
+
|
|
24
|
+
Explain only the concepts required for this exercise.
|
|
25
|
+
|
|
26
|
+
## Exercise
|
|
27
|
+
|
|
28
|
+
Number each action. Put commands in copyable code blocks and explain the effect
|
|
29
|
+
before the command.
|
|
30
|
+
|
|
31
|
+
## Verify
|
|
32
|
+
|
|
33
|
+
Provide a command or observation that distinguishes complete, partial, and
|
|
34
|
+
failed setup.
|
|
35
|
+
|
|
36
|
+
## Common failures
|
|
37
|
+
|
|
38
|
+
| Symptom | Cause | Recovery |
|
|
39
|
+
|---|---|---|
|
|
40
|
+
| Example | Explain without guessing | Exact safe recovery |
|
|
41
|
+
|
|
42
|
+
## Privacy and trust boundary
|
|
43
|
+
|
|
44
|
+
State where data and credentials go, what leaves the machine, and what remains
|
|
45
|
+
derived rather than canonical.
|
|
46
|
+
|
|
47
|
+
## Clean up
|
|
48
|
+
|
|
49
|
+
Provide reversible cleanup for every resource created by the lesson.
|
|
50
|
+
|
|
51
|
+
## Optional challenge
|
|
52
|
+
|
|
53
|
+
Offer one bounded extension that is not required for the next lesson.
|
|
54
|
+
|
|
55
|
+
## Recap
|
|
56
|
+
|
|
57
|
+
List three facts and link the next lesson.
|
|
58
|
+
|
|
59
|
+
## Video
|
|
60
|
+
|
|
61
|
+
Link to `../video-scripts/LXX-title.md` only after the script is verified.
|
|
@@ -0,0 +1,50 @@
|
|
|
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.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Operator Track
|
|
2
|
+
|
|
3
|
+
**Audience:** advanced users and platform maintainers
|
|
4
|
+
**Prerequisite:** Practitioner track
|
|
5
|
+
**Total time:** about 3 hours
|
|
6
|
+
|
|
7
|
+
1. [L09 - Domain knowledge with RAG](../lessons/L09-domain-knowledge.md)
|
|
8
|
+
2. [L10 - Faster context exploration](../lessons/L10-context-exploration.md)
|
|
9
|
+
3. [L11 - Containers and isolation](../lessons/L11-containers.md)
|
|
10
|
+
4. [L12 - Managed overlays](../lessons/L12-managed-overlays.md)
|
|
11
|
+
|
|
12
|
+
All modules are optional. The track is complete when the operator can add and
|
|
13
|
+
remove each integration without breaking the standalone local workflow and can
|
|
14
|
+
explain its storage, network, credential, and rollback boundaries.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Practitioner Track
|
|
2
|
+
|
|
3
|
+
**Audience:** developers adopting Cairnkeep in daily work
|
|
4
|
+
**Prerequisite:** Quickstart track
|
|
5
|
+
**Total time:** about 3.5 hours
|
|
6
|
+
|
|
7
|
+
1. [L04 - Memory fundamentals](../lessons/L04-memory-fundamentals.md)
|
|
8
|
+
2. [L05 - The daily workflow](../lessons/L05-daily-workflow.md)
|
|
9
|
+
3. [L06 - Repository review and security](../lessons/L06-repository-quality.md)
|
|
10
|
+
4. [L07 - Privacy and storage](../lessons/L07-privacy-and-storage.md)
|
|
11
|
+
5. [L08 - Multiple machines](../lessons/L08-multiple-machines.md)
|
|
12
|
+
|
|
13
|
+
The track is complete when the learner can decide what should become memory,
|
|
14
|
+
review derived knowledge, run governed repository checks, locate the store, and
|
|
15
|
+
perform a reversible backup or migration.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Quickstart Track
|
|
2
|
+
|
|
3
|
+
**Audience:** developers evaluating Cairnkeep
|
|
4
|
+
**Total time:** about 75 minutes
|
|
5
|
+
**Infrastructure:** local machine; Podman is optional
|
|
6
|
+
|
|
7
|
+
1. [L00 - Why Cairnkeep?](../lessons/L00-why-cairnkeep.md)
|
|
8
|
+
2. [L01 - Try it safely](../lessons/L01-safe-trial.md)
|
|
9
|
+
3. [L02 - Install the local workflow](../lessons/L02-installation.md)
|
|
10
|
+
4. [L03 - Bootstrap the first project](../lessons/L03-first-project.md)
|
|
11
|
+
|
|
12
|
+
The track is complete when a learner can start a new harness session, retrieve
|
|
13
|
+
a previously accepted fact, and explain that default stdio memory is stored on
|
|
14
|
+
the local machine rather than a discovered remote service.
|