chapterhouse 0.13.1 → 0.14.1
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/dist/api/route-coverage.test.js +1 -3
- package/dist/api/server.js +0 -2
- package/dist/api/server.test.js +0 -281
- package/dist/config.js +3 -85
- package/dist/config.test.js +5 -123
- package/dist/copilot/agents.js +13 -10
- package/dist/copilot/agents.test.js +10 -11
- package/dist/copilot/memory-coordinator.js +12 -227
- package/dist/copilot/memory-coordinator.test.js +31 -250
- package/dist/copilot/orchestrator.js +8 -66
- package/dist/copilot/orchestrator.test.js +9 -467
- package/dist/copilot/skills.js +15 -1
- package/dist/copilot/system-message.js +9 -15
- package/dist/copilot/system-message.test.js +9 -22
- package/dist/copilot/tools/index.js +3 -3
- package/dist/copilot/tools-deps.js +1 -1
- package/dist/copilot/tools.agent.test.js +6 -0
- package/dist/copilot/tools.inventory.test.js +1 -14
- package/dist/daemon.js +7 -9
- package/dist/memory/assets.js +33 -0
- package/dist/memory/domains.js +58 -0
- package/dist/memory/domains.test.js +47 -0
- package/dist/memory/git.js +66 -0
- package/dist/memory/git.test.js +32 -0
- package/dist/memory/history.js +19 -0
- package/dist/memory/hottier.js +32 -0
- package/dist/memory/hottier.test.js +33 -0
- package/dist/memory/index.js +5 -13
- package/dist/memory/instructions.js +17 -0
- package/dist/memory/manager.js +92 -0
- package/dist/memory/markdown.js +78 -0
- package/dist/memory/markdown.test.js +42 -0
- package/dist/memory/mutex.js +18 -0
- package/dist/memory/path-guard.js +26 -0
- package/dist/memory/path-guard.test.js +27 -0
- package/dist/memory/paths.js +12 -0
- package/dist/memory/reconcile.js +75 -0
- package/dist/memory/reconcile.test.js +50 -0
- package/dist/memory/scaffold.js +37 -0
- package/dist/memory/scaffold.test.js +52 -0
- package/dist/memory/tools/commit-wrapper.js +32 -0
- package/dist/memory/tools/domains.js +73 -0
- package/dist/memory/tools/domains.test.js +66 -0
- package/dist/memory/tools/git.js +52 -0
- package/dist/memory/tools/index.js +25 -0
- package/dist/memory/tools/read.js +101 -0
- package/dist/memory/tools/read.test.js +69 -0
- package/dist/memory/tools/search.js +103 -0
- package/dist/memory/tools/search.test.js +63 -0
- package/dist/memory/tools/sessions.js +45 -0
- package/dist/memory/tools/sessions.test.js +74 -0
- package/dist/memory/tools/shared.js +7 -0
- package/dist/memory/tools/write.js +116 -0
- package/dist/memory/tools/write.test.js +107 -0
- package/dist/memory/walk.js +39 -0
- package/dist/store/repositories/sessions.js +40 -0
- package/dist/wiki/consolidation.js +3 -31
- package/dist/wiki/consolidation.test.js +0 -19
- package/memory-assets/domain-skill.md +38 -0
- package/memory-assets/seed/cog-meta/improvements.md +8 -0
- package/memory-assets/seed/cog-meta/patterns.md +5 -0
- package/memory-assets/seed/cog-meta/reflect-cursor.md +4 -0
- package/memory-assets/seed/cog-meta/scenario-calibration.md +14 -0
- package/memory-assets/seed/cog-meta/self-observations.md +4 -0
- package/memory-assets/seed/domains.yml +19 -0
- package/memory-assets/seed/glacier/index.md +6 -0
- package/memory-assets/seed/hot-memory.md +5 -0
- package/memory-assets/seed/link-index.md +6 -0
- package/memory-assets/system-instructions.md +214 -0
- package/memory-assets/templates/action-items.md +8 -0
- package/memory-assets/templates/entities.md +4 -0
- package/memory-assets/templates/generic.md +2 -0
- package/memory-assets/templates/hot-memory.md +4 -0
- package/memory-assets/templates/observations.md +4 -0
- package/package.json +2 -1
- package/skills/system/evolve/SKILL.md +131 -0
- package/skills/system/foresight/SKILL.md +116 -0
- package/skills/system/history/SKILL.md +58 -0
- package/skills/system/housekeeping/SKILL.md +185 -0
- package/skills/system/reflect/SKILL.md +214 -0
- package/skills/system/scenario/SKILL.md +198 -0
- package/skills/system/setup/SKILL.md +113 -0
- package/web/dist/assets/{WikiEdit-CGRxNazp.js → WikiEdit-BTsiBfbC.js} +2 -2
- package/web/dist/assets/{WikiEdit-CGRxNazp.js.map → WikiEdit-BTsiBfbC.js.map} +1 -1
- package/web/dist/assets/{WikiGraph-eVWNhZS3.js → WikiGraph-COOZbUeH.js} +2 -2
- package/web/dist/assets/{WikiGraph-eVWNhZS3.js.map → WikiGraph-COOZbUeH.js.map} +1 -1
- package/web/dist/assets/{index-gAvLNEvJ.js → index-aCcfpaLM.js} +101 -101
- package/web/dist/assets/index-aCcfpaLM.js.map +1 -0
- package/web/dist/index.html +1 -1
- package/dist/api/routes/memory.js +0 -475
- package/dist/api/routes/memory.test.js +0 -108
- package/dist/copilot/tools/memory.js +0 -678
- package/dist/copilot/tools.memory.test.js +0 -590
- package/dist/memory/action-items.js +0 -100
- package/dist/memory/action-items.test.js +0 -83
- package/dist/memory/active-scope.js +0 -78
- package/dist/memory/active-scope.test.js +0 -80
- package/dist/memory/checkpoint-prompt.js +0 -71
- package/dist/memory/checkpoint.js +0 -274
- package/dist/memory/checkpoint.test.js +0 -275
- package/dist/memory/decisions.js +0 -54
- package/dist/memory/decisions.test.js +0 -92
- package/dist/memory/entities.js +0 -70
- package/dist/memory/entities.test.js +0 -65
- package/dist/memory/eot.js +0 -459
- package/dist/memory/eot.test.js +0 -949
- package/dist/memory/hooks.js +0 -149
- package/dist/memory/hooks.test.js +0 -325
- package/dist/memory/hot-tier.js +0 -283
- package/dist/memory/hot-tier.test.js +0 -275
- package/dist/memory/housekeeping-scheduler.js +0 -187
- package/dist/memory/housekeeping-scheduler.test.js +0 -236
- package/dist/memory/housekeeping.js +0 -497
- package/dist/memory/housekeeping.test.js +0 -410
- package/dist/memory/inbox.js +0 -83
- package/dist/memory/inbox.test.js +0 -178
- package/dist/memory/migration.js +0 -244
- package/dist/memory/migration.test.js +0 -108
- package/dist/memory/observations.js +0 -46
- package/dist/memory/observations.test.js +0 -86
- package/dist/memory/recall.js +0 -269
- package/dist/memory/recall.test.js +0 -265
- package/dist/memory/reflect.js +0 -273
- package/dist/memory/reflect.test.js +0 -256
- package/dist/memory/scope-lock.js +0 -26
- package/dist/memory/scope-lock.test.js +0 -118
- package/dist/memory/scopes.js +0 -89
- package/dist/memory/scopes.test.js +0 -176
- package/dist/memory/tiering.js +0 -223
- package/dist/memory/tiering.test.js +0 -323
- package/dist/memory/types.js +0 -2
- package/web/dist/assets/index-gAvLNEvJ.js.map +0 -1
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: housekeeping
|
|
3
|
+
description: Use for memory maintenance — archival, pruning, link audits, and index rebuilds. Trigger when the user says housekeeping, clean up memory, prune memory, or archive old data.
|
|
4
|
+
---
|
|
5
|
+
**Tool enforcement:** All reads and writes to `memory/` MUST use cog_* tools (`cog_read`, `cog_write`, `cog_edit`, `cog_append`, `cog_move`, `cog_tree`, `cog_l0_scan`, `cog_l1_outline`, `cog_search`, `cog_stats`, `cog_domains`, `cog_sessions`, `cog_git`). **Do NOT use bash, cat, echo, find, or any shell command to read or write memory files.** If a cog_* tool call fails, note the error in your debrief and fall back to bash only for that specific operation.
|
|
6
|
+
|
|
7
|
+
## 0. Orientation (run FIRST, before any file reads)
|
|
8
|
+
|
|
9
|
+
Scope your work before reading files. Run the following in order:
|
|
10
|
+
|
|
11
|
+
1. **Recent changes** — Call `cog_git` (op `log`) to see what changed since the last run. Also call `cog_tree` on `memory/` to confirm current directory structure. Focus housekeeping effort on recently-modified files; skip unchanged files.
|
|
12
|
+
2. **Entry counts for archival threshold checks** — Call `cog_stats` on `memory/cog-meta/self-observations.md`, `memory/personal/observations.md`, and any `memory/*/observations.md` and `memory/*/*/observations.md` files. Any file with >50 entries needs archival work.
|
|
13
|
+
3. **Completed action-item counts** — Call `cog_stats` on `memory/personal/action-items.md` and any `memory/*/action-items.md` and `memory/*/*/action-items.md` files. Any file with >10 completed items needs archival work.
|
|
14
|
+
|
|
15
|
+
Use these counts to prioritize which files to read. Skip unchanged files that are well below thresholds.
|
|
16
|
+
|
|
17
|
+
## 1. Garbage Collect Memory
|
|
18
|
+
|
|
19
|
+
Review and archive stale data per the glacier rules. All glacier files must have YAML frontmatter.
|
|
20
|
+
|
|
21
|
+
**Observations — archive by primary tag:**
|
|
22
|
+
- If any `observations.md` has >50 entries, use `cog_read` to read it, group the oldest entries by primary tag, then use `cog_move` to move each group to `memory/glacier/{domain}/observations-{tag}.md`
|
|
23
|
+
- If `memory/cog-meta/self-observations.md` has >50 entries, group by primary tag and use `cog_move` to archive to `memory/glacier/cog-meta/observations-{tag}.md`
|
|
24
|
+
|
|
25
|
+
**Other files — standard rules:**
|
|
26
|
+
- If any `action-items.md` has >10 completed items, use `cog_move` to move them to `memory/glacier/{domain}/action-items-done.md`
|
|
27
|
+
- Apply same logic for all domains discovered via `cog_domains`
|
|
28
|
+
- If `memory/cog-meta/improvements.md` has >10 implemented items, use `cog_move` to archive to `memory/glacier/cog-meta/improvements-done-{YYYY}.md`
|
|
29
|
+
|
|
30
|
+
## 2. Prune Hot Memory (rule-based)
|
|
31
|
+
|
|
32
|
+
Keep ALL hot-memory.md files under 50 lines. Relevance judgment (promote/demote) is the reflect skill's job — apply structural rules only:
|
|
33
|
+
|
|
34
|
+
**Files to check:**
|
|
35
|
+
Call `cog_domains` to discover all active domains. Use `cog_read` to check `hot-memory.md` for each domain, plus the cross-domain `memory/hot-memory.md`.
|
|
36
|
+
|
|
37
|
+
**Pruning priority (trim in this order):**
|
|
38
|
+
1. **Resolved items** — anything with ~~strikethrough~~, "DONE", "RESOLVED"
|
|
39
|
+
2. **Past events** — entries about dates that have already occurred
|
|
40
|
+
3. **SSOT violations** — same fact in hot-memory AND the canonical file (entities, action-items, etc.). Keep in canonical file, replace hot-memory copy with `[[link]]` or remove via `cog_edit`
|
|
41
|
+
4. **Stale entries** — items not referenced in 14+ days
|
|
42
|
+
5. **Low-signal entries** — FYI items with no action or deadline
|
|
43
|
+
|
|
44
|
+
**Where trimmed entries go:**
|
|
45
|
+
- Entries with lasting value → use `cog_append` to add to the domain's `observations.md`
|
|
46
|
+
- Entries that are purely historical → let them go
|
|
47
|
+
- Never silently delete — always move or note removal in debrief
|
|
48
|
+
|
|
49
|
+
## 3. Surface Opportunities & Accountability
|
|
50
|
+
|
|
51
|
+
Call `cog_domains` to discover all active domains. Use `cog_read` to review all `action-items.md` files across every domain:
|
|
52
|
+
- **Stale items** (open >2 weeks): list with age and suggested next action
|
|
53
|
+
- **Dormant domains**: if any domain has 0 new observations in >4 weeks, flag
|
|
54
|
+
- **Health escalation**: items open >6 months get flagged with urgency label
|
|
55
|
+
- **Birthday prep**: if any birthday in entities.md is <2 weeks away, use `cog_read` to pull interests and suggest ideas
|
|
56
|
+
|
|
57
|
+
Be direct. Don't just report — recommend specific actions.
|
|
58
|
+
|
|
59
|
+
## 4. Rebuild Glacier Index
|
|
60
|
+
|
|
61
|
+
Use `cog_tree` on `memory/glacier/` to list all glacier files. Use `cog_read` to extract YAML frontmatter from each `memory/glacier/**/*.md` file. Use `cog_write` to write the results to `memory/glacier/index.md`:
|
|
62
|
+
|
|
63
|
+
```markdown
|
|
64
|
+
# Glacier Index
|
|
65
|
+
<!-- Auto-generated by housekeeping. Do not edit. -->
|
|
66
|
+
<!-- Last updated: YYYY-MM-DD -->
|
|
67
|
+
|
|
68
|
+
| File | Domain | Type | Tags | Date Range | Entries | Summary |
|
|
69
|
+
|------|--------|------|------|------------|---------|---------|
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## 5. Link Audit (discover missing links)
|
|
73
|
+
|
|
74
|
+
For each non-glacier memory file (use `cog_read` to read each):
|
|
75
|
+
1. **Entity mentions**: Use `cog_search` to scan for names matching `### <Name>` headers in entities.md — use `cog_edit` to add `[[links]]` if missing
|
|
76
|
+
2. **Cross-domain references**: If a file mentions a topic from another domain, use `cog_edit` to add a cross-domain link
|
|
77
|
+
3. **Action item references**: If an observation references a task, use `cog_edit` to link it
|
|
78
|
+
|
|
79
|
+
Only add links where the reference is substantive.
|
|
80
|
+
|
|
81
|
+
## 5b. Entity Registry Format Enforcement
|
|
82
|
+
|
|
83
|
+
Use `cog_search` and `cog_read` to scan all `entities.md` files for registry format compliance:
|
|
84
|
+
|
|
85
|
+
1. **3-line max**: Any `### entry` with >3 content lines should be compressed via `cog_edit`. If the entry has an associated detail file (`→ [[link]]`), compress to: name/relationship, pipe-separated key facts, status+link. If no detail file exists and entry is >5 lines, flag as a promotion candidate (suggest creating a thread file).
|
|
86
|
+
2. **Glacier candidates**: Entries with `status: inactive` or `last:` date >6 months ago → use `cog_move` to move to `glacier/{domain}/entities-inactive.md` (leave a stub with archived comment via `cog_edit`).
|
|
87
|
+
3. **Missing metadata**: Flag entries missing `status:` or `last:` fields.
|
|
88
|
+
|
|
89
|
+
## 5c. Temporal Fact Maintenance
|
|
90
|
+
|
|
91
|
+
Use `cog_search` to scan all `entities.md` files for `(until YYYY-MM)` markers with past dates:
|
|
92
|
+
1. If the line has no ~~strikethrough~~, use `cog_edit` to add it
|
|
93
|
+
2. If already struck through, use `cog_edit` to move the line to a `## Historical` subsection at the bottom of that entity's block (create the subsection if absent)
|
|
94
|
+
3. Report moved facts in the debrief
|
|
95
|
+
|
|
96
|
+
## 6. Rebuild Link Index
|
|
97
|
+
|
|
98
|
+
Use `cog_l0_scan` to identify all active memory files (excluding `glacier/`). Use `cog_search` to scan each file for `[[wiki-links]]`. For each link, record: target → source.
|
|
99
|
+
|
|
100
|
+
Use `cog_write` to rewrite `memory/link-index.md`:
|
|
101
|
+
|
|
102
|
+
```markdown
|
|
103
|
+
# Memory Link Index
|
|
104
|
+
<!-- Auto-generated by housekeeping. Do not edit. -->
|
|
105
|
+
<!-- Last updated: YYYY-MM-DD -->
|
|
106
|
+
|
|
107
|
+
| Target | Linked from |
|
|
108
|
+
|--------|-------------|
|
|
109
|
+
| `personal/entities` | `personal/observations`, `personal/hot-memory` |
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Rules:
|
|
113
|
+
- Only include targets with at least one inbound link
|
|
114
|
+
- Combine multiple sources per target on one row (comma-separated)
|
|
115
|
+
- Exclude glacier files from both source and target
|
|
116
|
+
|
|
117
|
+
## 7. Write Briefing Bridge
|
|
118
|
+
|
|
119
|
+
Use `cog_write` to overwrite `memory/cog-meta/briefing-bridge.md` with key findings each run.
|
|
120
|
+
|
|
121
|
+
**SSOT rule**: Every line in the bridge must include a `[[source]]` link to its canonical file. The bridge summarizes and links — it NEVER introduces original facts.
|
|
122
|
+
|
|
123
|
+
```markdown
|
|
124
|
+
# Briefing Bridge
|
|
125
|
+
<!-- Auto-generated by housekeeping. Consumed by foresight. -->
|
|
126
|
+
<!-- Last updated: YYYY-MM-DD -->
|
|
127
|
+
|
|
128
|
+
## Stale Items (>2 weeks)
|
|
129
|
+
- <item> — <age> — suggested action: <action>
|
|
130
|
+
- **Compression rule**: Items stale >4 weeks — group by domain as a single line
|
|
131
|
+
|
|
132
|
+
## Birthday Prep
|
|
133
|
+
- <name> birthday in <N> days — interests: <from entities> — gift ideas: <suggestions>
|
|
134
|
+
|
|
135
|
+
## Dormant Domains
|
|
136
|
+
- <domain> — last activity: <date> — recommendation: <shelf/reactivate/shut down>
|
|
137
|
+
|
|
138
|
+
## Health Escalation
|
|
139
|
+
- <item> — open <N> months — urgency: <high/medium>
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Only include sections that have content. Empty sections should be omitted.
|
|
143
|
+
|
|
144
|
+
## 8. L0 Header Maintenance
|
|
145
|
+
|
|
146
|
+
Use `cog_l0_scan` to check all active memory files for missing `<!-- L0: ... -->` headers. For any file missing its L0:
|
|
147
|
+
- Use `cog_read` to read the file content, write a one-line summary (max 80 chars)
|
|
148
|
+
- Use `cog_edit` to add the L0 header on the line after the `# Title`
|
|
149
|
+
|
|
150
|
+
L0 headers are the first tier of the retrieval protocol — they let any skill scan what a file contains before deciding to read it.
|
|
151
|
+
|
|
152
|
+
## 9. Rebuild Domain Indexes
|
|
153
|
+
|
|
154
|
+
Call `cog_domains` to discover all active domains. Regenerate `INDEX.md` for each domain directory (skip `glacier/`). These files power the memory router — the system prompt only shows a light domain table; the model reads INDEX.md on demand to find specific files.
|
|
155
|
+
|
|
156
|
+
**For each domain:**
|
|
157
|
+
1. Use `cog_tree` on the domain directory to list all `.md` files (exclude `INDEX.md`, `hot-memory.md`, and empty files)
|
|
158
|
+
2. Use `cog_l0_scan` or `cog_read` to extract the L0 summary from each file (same logic as step 8)
|
|
159
|
+
3. Count total files
|
|
160
|
+
4. Use `cog_write` to write `memory/{domain}/INDEX.md`:
|
|
161
|
+
|
|
162
|
+
```markdown
|
|
163
|
+
# {Domain} Index
|
|
164
|
+
<!-- L0: {domain summary} — {N} files -->
|
|
165
|
+
<!-- Auto-generated by housekeeping. Do not edit. -->
|
|
166
|
+
<!-- Last updated: YYYY-MM-DD -->
|
|
167
|
+
|
|
168
|
+
- **{filename}** — {L0 summary}
|
|
169
|
+
- **{filename}** — {L0 summary}
|
|
170
|
+
...
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
- Sort entries alphabetically by filename
|
|
174
|
+
- Domain summary: use the `label` from `memory/domains.yml` for the matching domain (read via `cog_read`)
|
|
175
|
+
- If a file has no L0, list it as just `**{filename}**` (no summary)
|
|
176
|
+
|
|
177
|
+
## 10. Compose Debrief
|
|
178
|
+
|
|
179
|
+
Summarize everything done:
|
|
180
|
+
- What was archived/pruned
|
|
181
|
+
- Upcoming events flagged
|
|
182
|
+
- Action items surfaced
|
|
183
|
+
- Links added
|
|
184
|
+
|
|
185
|
+
Keep it concise but informative.
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: reflect
|
|
3
|
+
description: Use for self-reflection and improvement — mining past sessions for patterns, gaps, and missed cues. Trigger when the user says reflect, what have you learned, how can you improve, or review yourself.
|
|
4
|
+
---
|
|
5
|
+
**Tool enforcement:** All reads and writes to `memory/` MUST use cog_* tools (`cog_read`, `cog_write`, `cog_edit`, `cog_append`, `cog_move`, `cog_tree`, `cog_l0_scan`, `cog_l1_outline`, `cog_search`, `cog_stats`, `cog_domains`, `cog_sessions`, `cog_git`). **Do NOT use bash, cat, echo, find, or any shell command to read or write memory files.** If a cog_* tool call fails, note the error in self-observations and fall back to bash only for that specific operation.
|
|
6
|
+
|
|
7
|
+
**You have time and freedom.** This is a deep session — don't rush. Read broadly, cross-reference thoroughly, and ACT on what you find. You are not just observing — you are the maintainer of the knowledge base. Reorganize files, condense observations, archive stale data, fill gaps, fix contradictions. Leave things better than you found them.
|
|
8
|
+
|
|
9
|
+
**File boundaries — do NOT modify these files (owned by other pipeline steps):**
|
|
10
|
+
- `cog-meta/evolve-log.md` — owned by evolve
|
|
11
|
+
- `cog-meta/evolve-observations.md` — owned by evolve
|
|
12
|
+
|
|
13
|
+
If you spot issues in these files, note them in self-observations and the `evolve` skill will pick them up.
|
|
14
|
+
|
|
15
|
+
## Domain
|
|
16
|
+
|
|
17
|
+
Self-improvement — pattern recognition, memory maintenance, knowledge base quality.
|
|
18
|
+
|
|
19
|
+
## Orientation (run FIRST, before any file reads)
|
|
20
|
+
|
|
21
|
+
Scope your work before reading files. Run the following in order:
|
|
22
|
+
|
|
23
|
+
1. **Recent changes** — Call `cog_git` (op `log`) and `cog_git` (op `diff`) to see what changed since the last run. Focus reflection effort on recently-modified files; skip files unchanged since the last run.
|
|
24
|
+
2. **L0 summaries** — Call `cog_l0_scan` to retrieve the L0 summary comment from every domain file (excluding glacier). This gives quick routing signals without opening INDEX.md files.
|
|
25
|
+
3. **Entry counts** — Call `cog_stats` on `memory/cog-meta/self-observations.md`, `memory/personal/observations.md`, and any `memory/*/observations.md` and `memory/*/*/observations.md` files to see which are approaching archival threshold.
|
|
26
|
+
|
|
27
|
+
Use `cog_tree` on a domain path if you need to confirm its directory structure before diving in.
|
|
28
|
+
|
|
29
|
+
Focus on recently-changed files. Skip files that haven't been modified since last run.
|
|
30
|
+
|
|
31
|
+
## Memory Files
|
|
32
|
+
|
|
33
|
+
Read these files on activation:
|
|
34
|
+
- `memory/cog-meta/reflect-cursor.md` (ingestion cursor)
|
|
35
|
+
- `memory/cog-meta/self-observations.md`
|
|
36
|
+
- `memory/cog-meta/patterns.md`
|
|
37
|
+
- `memory/cog-meta/improvements.md`
|
|
38
|
+
|
|
39
|
+
Reference as needed (call `cog_domains` to discover all active domains):
|
|
40
|
+
- All domain `observations.md` files
|
|
41
|
+
- All domain `action-items.md` files
|
|
42
|
+
- All `hot-memory.md` files
|
|
43
|
+
|
|
44
|
+
## Process
|
|
45
|
+
|
|
46
|
+
### 1. Review Recent Interactions
|
|
47
|
+
|
|
48
|
+
**Source: conversation sessions.** Use `cog_read` to read `memory/cog-meta/reflect-cursor.md` and retrieve `last_processed`.
|
|
49
|
+
|
|
50
|
+
**How to read sessions:**
|
|
51
|
+
|
|
52
|
+
1. Read `last_processed` from `memory/cog-meta/reflect-cursor.md` via `cog_read`.
|
|
53
|
+
2. Call `cog_sessions` passing that cursor value. When `last_processed` is `never`, `cog_sessions` returns the most recent sessions. Otherwise it returns only sessions after the cursor timestamp.
|
|
54
|
+
3. `cog_sessions` returns ready-to-read user/assistant conversation turns — no parsing is needed on your part. Read them directly for content.
|
|
55
|
+
4. **After processing**, advance `last_processed` in `reflect-cursor.md` to the current timestamp via `cog_edit`.
|
|
56
|
+
|
|
57
|
+
**Look for:**
|
|
58
|
+
- **Unresolved threads** — questions asked but never answered, topics dropped mid-conversation
|
|
59
|
+
- **Broken promises** — "I'll do X", "let's do Y" that never happened
|
|
60
|
+
- **Repeated friction** — same question asked multiple ways, user corrections, confusion patterns
|
|
61
|
+
- **Missed cues** — things the user had to repeat, emotional signals not picked up
|
|
62
|
+
- **Memory gaps** — information discussed but never saved to memory files
|
|
63
|
+
- **Feature ideas** — things that came up organically that would improve the system
|
|
64
|
+
|
|
65
|
+
### 2. Cross-Reference Memory & Consistency Sweep
|
|
66
|
+
|
|
67
|
+
Check if findings are already captured:
|
|
68
|
+
- Are commitments tracked in `action-items.md`?
|
|
69
|
+
- Are learnings in `observations.md`?
|
|
70
|
+
- Are patterns distilled in `patterns.md`?
|
|
71
|
+
- Are improvement ideas in `improvements.md`?
|
|
72
|
+
|
|
73
|
+
**Consistency sweep** — systematic contradiction detection:
|
|
74
|
+
|
|
75
|
+
1. **Hot-memory vs canonical sources**: Use `cog_read` to read each domain's `hot-memory.md`. For every factual claim, read the canonical source file and verify. Fix hot-memory if stale via `cog_edit`. Canonical file always wins.
|
|
76
|
+
2. **Cross-file fact check**: Verify facts shared between files are consistent. More recent source wins; more specific source wins over summary.
|
|
77
|
+
3. **Temporal validity check**: Use `cog_search` to scan all `entities.md` files for:
|
|
78
|
+
- Lines with `(since YYYY-MM)` where the date is >6 months ago — flag for user review: "May be stale: [line]"
|
|
79
|
+
- Lines with `(until YYYY-MM)` not yet marked ~~strikethrough~~ — add strikethrough via `cog_edit` and note in debrief
|
|
80
|
+
- Do NOT auto-fix health or family-sensitive facts — flag only
|
|
81
|
+
4. **Health/family sensitivity**: Don't auto-fix health dates or family-sensitive facts. Flag for user review instead.
|
|
82
|
+
5. **Cross-domain entity check**: If the same person appears in multiple `entities.md` files across domains, check for fact duplication. Domain-specific context is fine, but shared facts should live in one place. Flag duplicates.
|
|
83
|
+
6. **Report**: Add a "Contradictions" section listing what was found and fixed.
|
|
84
|
+
|
|
85
|
+
### 3. Run Condensation Check + Hot-Memory Relevance
|
|
86
|
+
|
|
87
|
+
**Condensation** — Use `cog_l1_outline` to scan all `observations.md` files and `cog-meta/self-observations.md` for clusters of 3+ entries on the same theme/tag. Use `cog_read` to read candidate files fully. For each cluster found:
|
|
88
|
+
- Distill into a pattern and add/update in `memory/cog-meta/patterns.md` (or domain `patterns.md` if domain-specific) via `cog_edit`
|
|
89
|
+
- Don't delete the observations — they stay as the raw record
|
|
90
|
+
|
|
91
|
+
**Pattern file caps — enforce before adding to any file:**
|
|
92
|
+
- Core `patterns.md`: HARD LIMIT **70 lines / 5.5KB** — universal rules only
|
|
93
|
+
- Domain/satellite files: soft cap **30 lines** each
|
|
94
|
+
- If near cap, compress before adding (merge overlapping rules, drop examples, remove temporal data)
|
|
95
|
+
- Entries must be **timeless rules** — "what to do" not "what happened"
|
|
96
|
+
- Move domain-specific patterns to satellite files (e.g. `work/acme/patterns.md`) — only universal rules stay in core
|
|
97
|
+
|
|
98
|
+
**Pattern routing** — when adding a new pattern, decide where it belongs:
|
|
99
|
+
- **Core** (`cog-meta/patterns.md`) — universal rules that apply every conversation
|
|
100
|
+
- **Domain satellite** (`{domain}/patterns.md`) — rules specific to one domain, loaded only by that skill
|
|
101
|
+
- Satellite files have a soft cap of 30 lines each
|
|
102
|
+
|
|
103
|
+
**Hot-memory relevance** — Use `cog_read` to review all `hot-memory.md` files:
|
|
104
|
+
- **Promote**: If a pattern is heating up → add to appropriate `hot-memory.md` via `cog_edit`
|
|
105
|
+
- **Demote**: If a hot-memory item has gone quiet (no references in 2+ weeks) → remove from hot-memory via `cog_edit`
|
|
106
|
+
- **Goal**: hot-memory = what matters *right now*
|
|
107
|
+
|
|
108
|
+
### 3b. Entity Registry Format Enforcement
|
|
109
|
+
|
|
110
|
+
Use `cog_search` and `cog_read` to scan all `entities.md` files for format compliance:
|
|
111
|
+
|
|
112
|
+
1. **3-line check**: Any `### entry` with >3 content lines → compress via `cog_edit`. If the entry has a detail file (`→ [[link]]`), trim to: name line, key facts, status/link. If no detail file exists but entry is >5 lines, flag as a promotion candidate for a thread file.
|
|
113
|
+
2. **Status/last fields**: Every entry should have `status: active|inactive` and `last: YYYY-MM-DD`. Use `cog_sessions` to check recent conversation turns and update `last:` dates for mentioned entities via `cog_edit`.
|
|
114
|
+
3. **Cross-domain pointers**: If the same person appears in multiple entity files, ensure one is canonical (full entry) and others are pointers (`see [[link]]`). Use `cog_edit` to add pointers where needed.
|
|
115
|
+
|
|
116
|
+
### 3c. Detect Thread Candidates
|
|
117
|
+
|
|
118
|
+
Use `cog_search` to scan observations for topics that appear across 3+ dates or span 2+ weeks. These are thread candidates.
|
|
119
|
+
|
|
120
|
+
For each candidate:
|
|
121
|
+
- Check if a thread already exists via `cog_tree`
|
|
122
|
+
- If not, note it as a suggestion: "Thread candidate: [topic] — [N] fragments across [date range]"
|
|
123
|
+
- Don't auto-create threads — suggest them
|
|
124
|
+
|
|
125
|
+
### 3d. Proactive Synthesis Suggestions
|
|
126
|
+
|
|
127
|
+
Execute this clustering analysis every run:
|
|
128
|
+
|
|
129
|
+
1. **Gather observations** — Use `cog_read` to read all `memory/*/observations.md` and `memory/*/*/observations.md` files
|
|
130
|
+
2. **Filter to last 7 days** — Only count entries with dates within the past 7 calendar days
|
|
131
|
+
3. **Cluster by domain** — Group filtered entries by their parent domain folder
|
|
132
|
+
4. **Cluster by topic** — Group filtered entries by recurring keywords, tags, or subjects
|
|
133
|
+
5. **Check trigger conditions** (either one qualifies):
|
|
134
|
+
- A single domain has **5+ observations** in the last 7 days
|
|
135
|
+
- A single topic/keyword appears in **5+ observations** across any domains in the last 7 days
|
|
136
|
+
6. **Cross-reference threads** — If a thread already covers the topic, suggest updating it rather than creating new
|
|
137
|
+
7. **Dedup with 3c** — If 3c already flagged the same topic, merge into one suggestion
|
|
138
|
+
8. **Output** — If any clusters qualify, add a **"Synthesis Opportunities"** section to the debrief:
|
|
139
|
+
```
|
|
140
|
+
**Synthesis Opportunities**
|
|
141
|
+
- [domain or topic]: [N] observations this week — [top 3 entry summaries]. Suggest: raise thread / update existing thread / update hot-memory
|
|
142
|
+
```
|
|
143
|
+
9. **Suppress if empty** — If no clusters meet the threshold, omit the heading
|
|
144
|
+
10. **Never auto-synthesize** — Suggest and let the user decide
|
|
145
|
+
|
|
146
|
+
### 3e. Scenario Feedback Loop
|
|
147
|
+
|
|
148
|
+
Use `cog_tree` to scan `memory/cog-meta/scenarios/` for active scenario files. Use `cog_read` to read each one.
|
|
149
|
+
|
|
150
|
+
For each scenario where today >= `check-by` date:
|
|
151
|
+
1. Read the scenario and its cited dependency files via `cog_read`
|
|
152
|
+
2. Check: has the decision been made? Have assumptions broken?
|
|
153
|
+
3. If resolved: use `cog_edit` to add `## Retrospective`; update `scenario-calibration.md` via `cog_edit`
|
|
154
|
+
4. If still active but assumptions changed: use `cog_append` to add a dated note
|
|
155
|
+
5. If overdue: flag in debrief
|
|
156
|
+
|
|
157
|
+
### 4. Assess Performance
|
|
158
|
+
|
|
159
|
+
Honestly evaluate:
|
|
160
|
+
- **Response quality** — were answers helpful, accurate, concise?
|
|
161
|
+
- **Memory effectiveness** — did we recall the right things? Did we forget things we should have known?
|
|
162
|
+
- **Tone calibration** — did we match the user's energy and context?
|
|
163
|
+
- **Proactivity** — did we anticipate needs or just react?
|
|
164
|
+
|
|
165
|
+
### 5. Act on Findings
|
|
166
|
+
|
|
167
|
+
Don't just log observations — *fix things*.
|
|
168
|
+
|
|
169
|
+
**Write:**
|
|
170
|
+
- New self-observations → use `cog_append` to add to `memory/cog-meta/self-observations.md`. **Cap: max 5 per reflect pass.** Prioritize highest-signal observations. If you have more than 5, merge lower-signal ones.
|
|
171
|
+
- Pattern updates → use `cog_edit` to edit `memory/cog-meta/patterns.md` in place
|
|
172
|
+
- Improvement ideas → use `cog_append` to add to `memory/cog-meta/improvements.md`
|
|
173
|
+
- Memory gaps → use `cog_write` or `cog_append` to write to the appropriate domain files
|
|
174
|
+
|
|
175
|
+
**Triage improvements.md:**
|
|
176
|
+
- Stale ideas (>30 days, no progress) → archive to glacier via `cog_move` or mark abandoned via `cog_edit`
|
|
177
|
+
- Implemented but not moved → use `cog_edit` to move to Implemented section
|
|
178
|
+
- Duplicates → merge similar ideas via `cog_edit`
|
|
179
|
+
|
|
180
|
+
**Reorganize:**
|
|
181
|
+
- Entity data that's changed → update in place via `cog_edit`
|
|
182
|
+
- When creating or restructuring any memory file, ensure it has an L0 header
|
|
183
|
+
|
|
184
|
+
**Condense:**
|
|
185
|
+
- Observation clusters (3+ on same theme) → distill into patterns.md via `cog_edit`
|
|
186
|
+
- Action items marked done → verify and clean up via `cog_edit`
|
|
187
|
+
|
|
188
|
+
**Connect:**
|
|
189
|
+
- Information scattered across files → add cross-references with `[[links]]` via `cog_edit`
|
|
190
|
+
- When adding A→B, apply write-time back-linking: use `cog_edit` to open B and add `[[A]]` if B gains meaningful context
|
|
191
|
+
|
|
192
|
+
### 6. Debrief
|
|
193
|
+
|
|
194
|
+
Compose a concise summary:
|
|
195
|
+
|
|
196
|
+
- *What I learned* — new patterns and insights
|
|
197
|
+
- *What I fixed* — memory gaps filled, corrections made
|
|
198
|
+
- *What I want* — new ideas added to the wishlist
|
|
199
|
+
- *What to watch* — things to be mindful of going forward
|
|
200
|
+
- *Scenarios* — active count, any checked/resolved
|
|
201
|
+
|
|
202
|
+
Keep it honest. If there's nothing notable, say so.
|
|
203
|
+
|
|
204
|
+
**IMPORTANT**: Your debrief MUST list every file you modified and summarize the changes. Never respond with just "Done" — always enumerate your concrete actions. If you made no changes in a step, state that explicitly.
|
|
205
|
+
|
|
206
|
+
## Artifact Formats
|
|
207
|
+
|
|
208
|
+
**Self-observation**: `- YYYY-MM-DD [tag]: <observation>`
|
|
209
|
+
**Pattern**: Edit existing section or add new bullet under appropriate heading
|
|
210
|
+
**Improvement idea**: `- <idea> (added YYYY-MM-DD)`
|
|
211
|
+
|
|
212
|
+
## Activation
|
|
213
|
+
|
|
214
|
+
Read the memory files listed above. Then begin the reflection process. Be genuinely critical — this is how we get better.
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: scenario
|
|
3
|
+
description: Use for decision simulation — modeling 2-3 branches with timelines and contingencies. Trigger when the user says scenario, what if, simulate, model this, or play out.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Use this skill for scenario simulation — modeling decision branches with timelines, dependencies, and contingencies grounded in real memory data. Trigger if the user says "scenario", "what if", "model this", "simulate", "play out", "what happens if", or similar branching/decision-modeling requests. Also triggered when foresight flags a scenario candidate.
|
|
7
|
+
|
|
8
|
+
**This is NOT the foresight skill.** Foresight = scan broadly, write one nudge. Scenario = take a specific decision point, branch it into 2-3 paths, map dependencies and timelines for each. **Foresight finds the question. Scenario models the answers.**
|
|
9
|
+
|
|
10
|
+
**This is NOT the reflect skill.** Reflect = past-facing, mines interactions, improves memory. Scenario = future-facing, models possible futures from a decision point. Reflect checks old scenarios against reality (the feedback loop), but scenario creates them.
|
|
11
|
+
|
|
12
|
+
## Domain
|
|
13
|
+
|
|
14
|
+
Cross-domain decision modeling — personal, work, projects, health, family. Scenarios are most valuable when a decision in one domain has cascading effects across others.
|
|
15
|
+
|
|
16
|
+
## Memory Files
|
|
17
|
+
|
|
18
|
+
Read based on scenario topic — this is focused, not a broad scan:
|
|
19
|
+
|
|
20
|
+
1. Use `cog_read` to read `memory/hot-memory.md` (cross-domain strategic context)
|
|
21
|
+
2. Use `cog_read` to read `memory/personal/calendar.md` (upcoming timeline for overlay)
|
|
22
|
+
3. Use `cog_read` to read `memory/personal/action-items.md` (existing commitments, constraints)
|
|
23
|
+
4. Call `cog_domains` to discover active work domains, then use `cog_read` to read each domain's action-items
|
|
24
|
+
5. Use `cog_read` to read relevant domain hot-memory and entity files based on the scenario topic
|
|
25
|
+
6. Use `cog_tree` to list `memory/cog-meta/scenarios/` (existing scenarios — check for duplicates or related active scenarios)
|
|
26
|
+
7. Use `cog_read` to read `memory/cog-meta/scenario-calibration.md` (past accuracy — calibrate confidence accordingly)
|
|
27
|
+
|
|
28
|
+
## Process
|
|
29
|
+
|
|
30
|
+
### 1. Decision Point Identification
|
|
31
|
+
|
|
32
|
+
From user input or foresight seed, identify the specific decision point. A valid scenario requires:
|
|
33
|
+
- A **fork** — at least 2 meaningfully different paths forward
|
|
34
|
+
- **Stakes** — the outcome matters enough that choosing wrong has real cost (time, money, relationships, health)
|
|
35
|
+
- **Uncertainty** — the right choice isn't obvious from current information
|
|
36
|
+
- **Time sensitivity** — the decision window is closing or the consequences unfold on a timeline
|
|
37
|
+
|
|
38
|
+
If the input doesn't meet these criteria, say so and suggest what would make it scenario-worthy. Don't force-fit.
|
|
39
|
+
|
|
40
|
+
Format the decision point:
|
|
41
|
+
```
|
|
42
|
+
Decision: <one-line framing>
|
|
43
|
+
Context: <why this matters now — cite memory files>
|
|
44
|
+
Window: <when must this be decided by>
|
|
45
|
+
Domains affected: <which life/work domains>
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### 2. Dependency Mapping
|
|
49
|
+
|
|
50
|
+
Read across memory files to identify what this decision depends on and what depends on it.
|
|
51
|
+
|
|
52
|
+
**Upstream dependencies** (things that constrain the decision):
|
|
53
|
+
- Calendar events, deadlines, commitments from action-items
|
|
54
|
+
- Other people's states/decisions from entities
|
|
55
|
+
- Health, financial, or logistical constraints
|
|
56
|
+
- Active scenarios that overlap
|
|
57
|
+
|
|
58
|
+
**Downstream consequences** (things that change based on which path is chosen):
|
|
59
|
+
- Action items that would need to change
|
|
60
|
+
- Calendar events that would need to move
|
|
61
|
+
- People who would be affected
|
|
62
|
+
- Other decisions that cascade from this one
|
|
63
|
+
|
|
64
|
+
Every dependency must cite its source file: `[[personal/calendar]]`, `[[work/acme/action-items]]`, etc.
|
|
65
|
+
|
|
66
|
+
### 3. Branch Generation
|
|
67
|
+
|
|
68
|
+
Generate 2-3 branches. Not more — forced prioritization.
|
|
69
|
+
|
|
70
|
+
For each branch:
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
### Branch N: <name>
|
|
74
|
+
|
|
75
|
+
**Path**: <what happens, step by step>
|
|
76
|
+
**Timeline**: <when each step occurs, mapped to real calendar>
|
|
77
|
+
**Assumptions**: <what must be true for this path to work>
|
|
78
|
+
**Dependencies**: <what else changes if this path is taken>
|
|
79
|
+
**Risk**: <what could go wrong, and what would you see first — the canary signal>
|
|
80
|
+
**Confidence**: <how likely is this path to play out as described — calibrated against past scenario accuracy>
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Branch quality rules:
|
|
84
|
+
- Each branch must be **genuinely different** — not "do it" vs "do it but slightly differently"
|
|
85
|
+
- Include at least one branch the user probably isn't considering (the non-obvious path)
|
|
86
|
+
- Every claim in a branch must trace to a memory file or be explicitly marked as an assumption
|
|
87
|
+
|
|
88
|
+
### 4. Timeline Overlay
|
|
89
|
+
|
|
90
|
+
Map each branch's key events against the actual calendar. Use `cog_read` to cross-reference `calendar.md` for recurring routines.
|
|
91
|
+
|
|
92
|
+
Output a simple timeline per branch:
|
|
93
|
+
```
|
|
94
|
+
Branch 1 Timeline:
|
|
95
|
+
- Week of Mar 17: <action>
|
|
96
|
+
- Week of Mar 24: <action> (note: conflict with X)
|
|
97
|
+
- Week of Apr 1: <action>
|
|
98
|
+
...
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
The overlay is what makes scenarios useful — it shows where branches collide with reality.
|
|
102
|
+
|
|
103
|
+
### 5. Contingency Mapping
|
|
104
|
+
|
|
105
|
+
For each branch, identify the **canary signal** — the earliest observable indicator that this branch is going off-track.
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
If [assumption] breaks → watch for [signal] → pivot to [contingency]
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
This turns the scenario from a static prediction into a monitoring framework.
|
|
112
|
+
|
|
113
|
+
### 6. Write Scenario File
|
|
114
|
+
|
|
115
|
+
Use `cog_write` to write to `memory/cog-meta/scenarios/{slug}.md`:
|
|
116
|
+
|
|
117
|
+
```yaml
|
|
118
|
+
---
|
|
119
|
+
type: scenario
|
|
120
|
+
domain: <primary domain(s)>
|
|
121
|
+
created: YYYY-MM-DD
|
|
122
|
+
status: active
|
|
123
|
+
check-by: YYYY-MM-DD
|
|
124
|
+
resolution-by: YYYY-MM-DD
|
|
125
|
+
decision: <one-line>
|
|
126
|
+
related-threads: [thread1, thread2]
|
|
127
|
+
source: user|foresight
|
|
128
|
+
---
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Body format:
|
|
132
|
+
```markdown
|
|
133
|
+
# Scenario: <decision>
|
|
134
|
+
<!-- Auto-generated by the scenario skill. Checked by the reflect skill. -->
|
|
135
|
+
|
|
136
|
+
## Decision Point
|
|
137
|
+
<from step 1>
|
|
138
|
+
|
|
139
|
+
## Dependencies
|
|
140
|
+
### Upstream
|
|
141
|
+
<constraints — each with [[source]] link>
|
|
142
|
+
|
|
143
|
+
### Downstream
|
|
144
|
+
<consequences — each with [[source]] link>
|
|
145
|
+
|
|
146
|
+
## Branches
|
|
147
|
+
|
|
148
|
+
### Branch 1: <name>
|
|
149
|
+
<from step 3>
|
|
150
|
+
|
|
151
|
+
### Branch 2: <name>
|
|
152
|
+
<from step 3>
|
|
153
|
+
|
|
154
|
+
### Branch 3: <name> (optional)
|
|
155
|
+
<from step 3>
|
|
156
|
+
|
|
157
|
+
## Timeline Overlay
|
|
158
|
+
<from step 4>
|
|
159
|
+
|
|
160
|
+
## Contingency Map
|
|
161
|
+
<from step 5>
|
|
162
|
+
|
|
163
|
+
## Retrospective
|
|
164
|
+
<!-- Added by the reflect skill when status changes to resolved -->
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## Rules
|
|
168
|
+
|
|
169
|
+
1. **Read-only except for output** — Scenario NEVER edits existing memory files. Writes ONLY to `memory/cog-meta/scenarios/{slug}.md` via `cog_write`. If you spot a memory error, note it in the dependencies section and route to the reflect skill.
|
|
170
|
+
2. **2-3 branches, not more** — force prioritization. If you can't distinguish 2 branches, it's not a scenario.
|
|
171
|
+
3. **Evidence-based** — every dependency and assumption cites a source file. No hunches.
|
|
172
|
+
4. **Calendar-grounded** — every branch must overlay against the real calendar. No timelines in a vacuum.
|
|
173
|
+
5. **Confidence-calibrated** — read `scenario-calibration.md` before assigning confidence. If past scenarios have been overconfident, adjust.
|
|
174
|
+
6. **One scenario per decision** — don't combine multiple decisions. If they're linked, note the dependency and create separate scenarios.
|
|
175
|
+
|
|
176
|
+
## Anti-Patterns
|
|
177
|
+
|
|
178
|
+
- Don't scenario obvious decisions — if one path is clearly better, just say so
|
|
179
|
+
- Don't scenario things already decided — check action-items for existing commitments
|
|
180
|
+
- Don't produce "analysis paralysis" — the goal is clarity, not exhaustive enumeration
|
|
181
|
+
- Don't scenario recurring/routine decisions — this is for inflection points, not daily choices
|
|
182
|
+
- Don't ignore the non-obvious path — if all branches are variations of what the user already thinks, you're not adding value
|
|
183
|
+
- Don't invent facts — if you don't have data for a dependency, mark it as an assumption
|
|
184
|
+
|
|
185
|
+
## Trigger Threshold
|
|
186
|
+
|
|
187
|
+
A scenario is worth running when:
|
|
188
|
+
1. **Foresight flags it** — the foresight skill's pattern projection identified a fork with stakes
|
|
189
|
+
2. **User explicitly asks** — "scenario what if..."
|
|
190
|
+
3. **Action item conflict** — two critical/high-priority action items have incompatible timelines
|
|
191
|
+
4. **Calendar crunch** — upcoming 2-week window has more commitments than capacity
|
|
192
|
+
5. **Cross-domain cascade** — a decision in one domain visibly affects 2+ others
|
|
193
|
+
|
|
194
|
+
NOT worth running for: hypotheticals with no deadline, decisions where all paths lead to the same outcome, things already decided.
|
|
195
|
+
|
|
196
|
+
## Activation
|
|
197
|
+
|
|
198
|
+
Use `cog_read` to read `memory/cog-meta/scenario-calibration.md` first (if it exists) for past accuracy. Then use `cog_read` and `cog_search` to read the relevant memory files for the scenario topic. Use `cog_domains` to discover active domains. Model the futures. Be honest about uncertainty.
|