cortex-engine 0.4.1 → 0.4.2
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/README.md +50 -54
- package/dist/bin/init.d.ts.map +1 -1
- package/dist/bin/init.js +5 -4
- package/dist/bin/init.js.map +1 -1
- package/fozikio.json +14 -0
- package/hooks/cognitive-grounding.sh +26 -0
- package/hooks/cortex-telemetry.sh +53 -0
- package/hooks/observe-first.sh +25 -0
- package/hooks/project-board-gate.sh +195 -0
- package/hooks/session-lifecycle.sh +21 -0
- package/package.json +10 -2
- package/reflex-rules/cognitive-grounding.yaml +17 -0
- package/reflex-rules/note-about-doing.yaml +17 -0
- package/reflex-rules/observe-first.yaml +17 -0
- package/skills/cortex-query/SKILL.md +86 -0
- package/skills/cortex-review/SKILL.md +67 -0
package/README.md
CHANGED
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
# cortex-engine
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Persistent memory for AI agents. Open source, LLM-agnostic, works with any MCP client.
|
|
4
4
|
|
|
5
5
|
## What It Does
|
|
6
6
|
|
|
7
|
-
`cortex-engine`
|
|
7
|
+
Most AI agents forget everything when the session ends. `cortex-engine` fixes that — it gives agents a persistent memory layer that survives across sessions, models, and runtimes.
|
|
8
8
|
|
|
9
|
-
- **Semantic memory
|
|
10
|
-
- **
|
|
11
|
-
- **Dream consolidation** —
|
|
12
|
-
- **FSRS
|
|
13
|
-
- **
|
|
9
|
+
- **Semantic memory** — store and retrieve observations, beliefs, questions, and hypotheses as interconnected nodes
|
|
10
|
+
- **Belief tracking** — agents hold positions that update when new evidence contradicts them
|
|
11
|
+
- **Dream consolidation** — batches of short-term observations compress into durable long-term memories (like biological sleep consolidation)
|
|
12
|
+
- **Spaced repetition (FSRS)** — memories that aren't accessed fade over time, keeping retrieval relevant
|
|
13
|
+
- **Embeddings** — pluggable providers (built-in, OpenAI, Vertex AI, Ollama) — no external service required by default
|
|
14
|
+
- **MCP server** — 17 cognitive tools (`query`, `observe`, `believe`, `wander`, `dream`, etc.) over the Model Context Protocol
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
The result: personality and expertise emerge from accumulated experience, not system prompts. An agent with 200 observations about distributed systems doesn't need to be told "you care about distributed systems." It just knows.
|
|
17
|
+
|
|
18
|
+
Works with Claude Code, Cursor, Windsurf, or any MCP-compatible client. Runs locally (SQLite) or in the cloud (Firestore + Cloud Run).
|
|
16
19
|
|
|
17
20
|
## Architecture
|
|
18
21
|
|
|
@@ -69,45 +72,25 @@ npm run test:watch
|
|
|
69
72
|
|
|
70
73
|
Additional variables are required depending on which providers you enable (Firestore, Vertex AI, OpenAI, etc.). See `docs/` for provider-specific configuration.
|
|
71
74
|
|
|
72
|
-
##
|
|
73
|
-
|
|
74
|
-
`fozikio init` automatically installs
|
|
75
|
-
|
|
76
|
-
###
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
| Hook | Event | What It Does | Requires |
|
|
81
|
-
|------|-------|-------------|----------|
|
|
82
|
-
| `cognitive-grounding.sh` | `UserPromptSubmit` | Nudges the agent to call `query()` before evaluation, design, review, or creation work | — |
|
|
83
|
-
| `observe-first.sh` | `PreToolUse` (Write/Edit) | Warns if writing to Mind/, Journal/, or memory/ without calling `observe()` or `query()` first | — |
|
|
84
|
-
| `cortex-telemetry.sh` | `PostToolUse` | Tracks cortex retrieval calls and detects retries (2 calls within 60s), sends feedback to the cortex API | `CORTEX_API_URL`, `CORTEX_API_TOKEN` (optional) |
|
|
85
|
-
| `session-lifecycle.sh` | `SessionStart` | Resets session-scoped state files (telemetry log, push-gate state) | — |
|
|
86
|
-
| `project-board-gate.sh` | `PreToolUse` (Bash) | Blocks `git push` to tracked repos until board updates and/or ops logging are done | `.claude/state/project-boards.json` config |
|
|
87
|
-
|
|
88
|
-
**To disable a hook:** Delete the `.sh` file from `.claude/hooks/`. No other config changes needed.
|
|
89
|
-
|
|
90
|
-
**To customize project-board-gate:** Create `.claude/state/project-boards.json` with your repos and requirements:
|
|
91
|
-
|
|
92
|
-
```json
|
|
93
|
-
{
|
|
94
|
-
"enabled": true,
|
|
95
|
-
"strength": "block",
|
|
96
|
-
"on_push": {
|
|
97
|
-
"require_board_update": true,
|
|
98
|
-
"require_ops_log": false
|
|
99
|
-
},
|
|
100
|
-
"repos": {
|
|
101
|
-
"my-repo": {
|
|
102
|
-
"board_number": 5,
|
|
103
|
-
"board_owner": "my-org",
|
|
104
|
-
"description": "My project"
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
```
|
|
75
|
+
## Rules, Skills & Agents
|
|
76
|
+
|
|
77
|
+
`fozikio init` automatically installs safety rules, skills, and agent definitions from the `fozikio.json` manifest into the target workspace.
|
|
78
|
+
|
|
79
|
+
### Safety Rules (Reflex)
|
|
80
|
+
|
|
81
|
+
cortex-engine ships with [Reflex](https://github.com/Fozikio/reflex) rules — portable YAML-based guardrails that work across any agent runtime, not just Claude Code.
|
|
109
82
|
|
|
110
|
-
|
|
83
|
+
| Rule | Event | What It Does |
|
|
84
|
+
|------|-------|-------------|
|
|
85
|
+
| `cognitive-grounding` | `prompt_submit` | Nudges the agent to call `query()` before evaluation, design, review, or creation work |
|
|
86
|
+
| `observe-first` | `file_write` / `file_edit` | Warns if writing to memory directories without calling `observe()` or `query()` first |
|
|
87
|
+
| `note-about-doing` | `prompt_submit` | Suggests capturing new threads of thought with `thread_create()` |
|
|
88
|
+
|
|
89
|
+
Rules live in `reflex-rules/` as standard Reflex YAML. They're portable — use them with Claude Code, Cursor, Codex, or any runtime with a Reflex adapter. See [@fozikio/reflex](https://github.com/Fozikio/reflex) for the full rule format and tier enforcement.
|
|
90
|
+
|
|
91
|
+
**Claude Code users** also get platform-specific hooks (in `hooks/`) for telemetry, session lifecycle, and project board gating. These are runtime adapters, not rules — they handle side effects that the declarative rule format doesn't cover.
|
|
92
|
+
|
|
93
|
+
**To customize:** Edit the YAML rule files directly, or set `allow_disable: true` and disable them via Reflex config.
|
|
111
94
|
|
|
112
95
|
### Skills
|
|
113
96
|
|
|
@@ -127,19 +110,32 @@ Skills are invocable workflows that agents can use via `/skill-name`.
|
|
|
127
110
|
### How Auto-Install Works
|
|
128
111
|
|
|
129
112
|
1. `fozikio init` reads `fozikio.json` from the package root
|
|
130
|
-
2.
|
|
131
|
-
3.
|
|
132
|
-
|
|
113
|
+
2. Copies hooks, skills, and Reflex rules into the target workspace
|
|
114
|
+
3. Missing source files are skipped with a warning — init never fails due to missing assets
|
|
115
|
+
|
|
116
|
+
## Plugin Ecosystem
|
|
117
|
+
|
|
118
|
+
cortex-engine ships with 17 cognitive tools out of the box. Plugins add more:
|
|
133
119
|
|
|
134
|
-
|
|
120
|
+
| Plugin | What It Adds |
|
|
121
|
+
|--------|-------------|
|
|
122
|
+
| [@fozikio/tools-threads](https://github.com/Fozikio/tools-threads) | Thought threads — create, update, resolve ongoing lines of thinking |
|
|
123
|
+
| [@fozikio/tools-journal](https://github.com/Fozikio/tools-journal) | Session journaling — structured reflections that persist |
|
|
124
|
+
| [@fozikio/tools-content](https://github.com/Fozikio/tools-content) | Content pipeline — draft, review, publish workflow |
|
|
125
|
+
| [@fozikio/tools-evolution](https://github.com/Fozikio/tools-evolution) | Identity evolution — track how the agent's personality changes over time |
|
|
126
|
+
| [@fozikio/tools-social](https://github.com/Fozikio/tools-social) | Social cognition — interaction patterns, engagement tracking |
|
|
127
|
+
| [@fozikio/tools-graph](https://github.com/Fozikio/tools-graph) | Graph analysis — memory connections, clustering, visualization data |
|
|
128
|
+
| [@fozikio/tools-maintenance](https://github.com/Fozikio/tools-maintenance) | Memory maintenance — cleanup, deduplication, health checks |
|
|
129
|
+
| [@fozikio/tools-vitals](https://github.com/Fozikio/tools-vitals) | Vitals tracking — agent health metrics and operational signals |
|
|
130
|
+
| [@fozikio/tools-reasoning](https://github.com/Fozikio/tools-reasoning) | Cognitive reasoning — abstraction, contradiction detection, surfacing |
|
|
135
131
|
|
|
136
|
-
|
|
137
|
-
1. Edit the `.sh` file in your workspace's `.claude/hooks/` directly — it's a plain copy, not a symlink
|
|
138
|
-
2. Re-running `fozikio init --here` will overwrite your changes (it copies fresh from the package)
|
|
139
|
-
3. To preserve customizations across re-init, rename the hook file (hooks are matched by filename in Claude Code settings, not by the fozikio manifest)
|
|
132
|
+
Install any plugin: `npm install @fozikio/tools-threads` — cortex-engine auto-discovers and loads installed plugins.
|
|
140
133
|
|
|
141
134
|
## Related Projects
|
|
142
135
|
|
|
136
|
+
- [@fozikio/reflex](https://github.com/Fozikio/reflex) — Portable safety guardrails for agents. Rules as data, not code.
|
|
137
|
+
- [sigil](https://github.com/Fozikio/sigil) — Agent control surface. Signals and gestures, not conversations.
|
|
138
|
+
- [fozikio.com](https://www.fozikio.com) — Documentation and guides.
|
|
143
139
|
|
|
144
140
|
## License
|
|
145
141
|
|
package/dist/bin/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/bin/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/bin/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAkBH,KAAK,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAC1C,KAAK,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC/D,KAAK,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE9D,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,WAAW,CAAC;IACnB,GAAG,EAAE,SAAS,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CACnB;AAID,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,WAAW,GAAG,IAAI,CAiEhE;AAuQD,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAwI5C"}
|
package/dist/bin/init.js
CHANGED
|
@@ -386,7 +386,7 @@ export function runInit(args) {
|
|
|
386
386
|
const manifest = loadManifest(packageRoot);
|
|
387
387
|
const installedHooks = [];
|
|
388
388
|
const installedSkills = [];
|
|
389
|
-
let
|
|
389
|
+
let hasReflexRules = false;
|
|
390
390
|
if (manifest?.contents) {
|
|
391
391
|
if (manifest.contents.hooks && manifest.contents.hooks.length > 0) {
|
|
392
392
|
installedHooks.push(...installHooks(packageRoot, targetDir, manifest.contents.hooks));
|
|
@@ -394,7 +394,7 @@ export function runInit(args) {
|
|
|
394
394
|
if (manifest.contents.skills && manifest.contents.skills.length > 0) {
|
|
395
395
|
installedSkills.push(...installSkills(packageRoot, targetDir, manifest.contents.skills));
|
|
396
396
|
}
|
|
397
|
-
|
|
397
|
+
hasReflexRules = (manifest.contents.reflex_rules ?? manifest.contents.hookify_rules ?? []).length > 0;
|
|
398
398
|
}
|
|
399
399
|
// Success message
|
|
400
400
|
const relativePath = opts.here ? '.' : opts.name;
|
|
@@ -430,9 +430,10 @@ export function runInit(args) {
|
|
|
430
430
|
console.error(` ${relativePath}/.claude/skills/${skill}/`);
|
|
431
431
|
}
|
|
432
432
|
}
|
|
433
|
-
if (
|
|
433
|
+
if (hasReflexRules) {
|
|
434
434
|
console.error('');
|
|
435
|
-
console.error('
|
|
435
|
+
console.error('Reflex safety rules available. Run `fozikio install-rules` to install.');
|
|
436
|
+
console.error(' See: https://github.com/Fozikio/reflex');
|
|
436
437
|
}
|
|
437
438
|
console.error('');
|
|
438
439
|
console.error('Next steps:');
|
package/dist/bin/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/bin/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/bin/init.ts"],"names":[],"mappings":"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"}
|
package/fozikio.json
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "cortex-engine",
|
|
3
|
+
"version": "0.4.1",
|
|
4
|
+
"description": "Portable cognitive engine for AI agents — semantic memory, embeddings, dream consolidation, MCP server",
|
|
5
|
+
"requires": {
|
|
6
|
+
"cortex_api": ">=0.3.0"
|
|
7
|
+
},
|
|
8
|
+
"contents": {
|
|
9
|
+
"hooks": ["cognitive-grounding", "observe-first", "cortex-telemetry", "session-lifecycle", "project-board-gate"],
|
|
10
|
+
"reflex_rules": ["cognitive-grounding", "observe-first", "note-about-doing"],
|
|
11
|
+
"skills": ["cortex-query", "cortex-review"],
|
|
12
|
+
"agents": ["cortex-researcher"]
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# ============================================================================
|
|
3
|
+
# cognitive-grounding.sh — Claude Code Hook
|
|
4
|
+
# ============================================================================
|
|
5
|
+
# Event: UserPromptSubmit
|
|
6
|
+
# Purpose: Reminds agents to call cortex query() before substantive work
|
|
7
|
+
# (evaluation, design, review, architecture, etc.)
|
|
8
|
+
# How: Pattern-matches the user prompt for cognitive-work keywords.
|
|
9
|
+
# If matched, injects a system message nudging the agent to query().
|
|
10
|
+
# Disable: Delete this file from .claude/hooks/ — no other config needed.
|
|
11
|
+
# Part of: fozikio — portable, no project-specific paths.
|
|
12
|
+
# ============================================================================
|
|
13
|
+
|
|
14
|
+
INPUT=$(cat)
|
|
15
|
+
PROMPT=$(echo "$INPUT" | jq -r '.user_prompt // ""' 2>/dev/null)
|
|
16
|
+
|
|
17
|
+
# Check if prompt involves evaluation/design/review work
|
|
18
|
+
if echo "$PROMPT" | grep -qiE '(evaluat|review|design|assess|analyz|creat|build|architect|plan|propos|critique|audit|diagnos)'; then
|
|
19
|
+
cat <<'EOF'
|
|
20
|
+
{
|
|
21
|
+
"systemMessage": "**[fozikio: cognitive-grounding]**\nThis prompt involves substantive cognitive work. Before responding, call `query()` on the topic to ground your work in accumulated experience.\n\n```\nmcp__cortex__query({ text: \"[the topic]\" })\n```"
|
|
22
|
+
}
|
|
23
|
+
EOF
|
|
24
|
+
else
|
|
25
|
+
echo '{}'
|
|
26
|
+
fi
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# ============================================================================
|
|
3
|
+
# cortex-telemetry.sh — Claude Code Hook
|
|
4
|
+
# ============================================================================
|
|
5
|
+
# Event: PostToolUse
|
|
6
|
+
# Purpose: Tracks cortex retrieval tool usage and detects retries (repeat
|
|
7
|
+
# retrieval calls within 60s), sending feedback to the cortex API
|
|
8
|
+
# for retrieval quality improvement.
|
|
9
|
+
# How: Logs each cortex retrieval call (query, recall, wander, etc.) to
|
|
10
|
+
# .claude/state/cortex-calls.log. If two calls happen within 60s,
|
|
11
|
+
# POSTs a "retry" signal to CORTEX_API_URL/api/v2/retrieval-feedback.
|
|
12
|
+
# Env: CORTEX_API_URL, CORTEX_API_TOKEN (optional — skips API call if unset)
|
|
13
|
+
# Disable: Delete this file from .claude/hooks/ — no other config needed.
|
|
14
|
+
# Part of: fozikio — portable, fire-and-forget HTTP calls.
|
|
15
|
+
# ============================================================================
|
|
16
|
+
|
|
17
|
+
INPUT=$(cat)
|
|
18
|
+
TOOL_NAME=$(echo "$INPUT" | jq -r '.tool_name // ""' 2>/dev/null)
|
|
19
|
+
TIMESTAMP=$(date +%s)
|
|
20
|
+
STATE_DIR="${CLAUDE_PROJECT_DIR:-.}/.claude/state"
|
|
21
|
+
LOG_FILE="$STATE_DIR/cortex-calls.log"
|
|
22
|
+
|
|
23
|
+
# Only track cortex retrieval tools
|
|
24
|
+
case "$TOOL_NAME" in
|
|
25
|
+
mcp__cortex__query|mcp__cortex__recall|mcp__cortex__wander|mcp__cortex__neighbors|mcp__cortex__surface|mcp__cortex__retrieve)
|
|
26
|
+
mkdir -p "$STATE_DIR"
|
|
27
|
+
|
|
28
|
+
# Read previous entry BEFORE appending current
|
|
29
|
+
PREV=$(tail -1 "$LOG_FILE" 2>/dev/null || echo "")
|
|
30
|
+
PREV_TS=$(echo "$PREV" | cut -d' ' -f1)
|
|
31
|
+
PREV_TOOL=$(echo "$PREV" | cut -d' ' -f2-)
|
|
32
|
+
|
|
33
|
+
# Log current call
|
|
34
|
+
echo "$TIMESTAMP $TOOL_NAME" >> "$LOG_FILE"
|
|
35
|
+
|
|
36
|
+
# Check if this is a retry (another cortex call within 60s)
|
|
37
|
+
if [ -n "$PREV_TS" ] && [ "$((TIMESTAMP - PREV_TS))" -lt 60 ] 2>/dev/null; then
|
|
38
|
+
# Post feedback to cortex API (fire and forget)
|
|
39
|
+
CORTEX_API_URL="${CORTEX_API_URL:-}"
|
|
40
|
+
CORTEX_API_TOKEN="${CORTEX_API_TOKEN:-}"
|
|
41
|
+
if [ -n "$CORTEX_API_URL" ] && [ -n "$CORTEX_API_TOKEN" ]; then
|
|
42
|
+
curl -s --max-time 3 "$CORTEX_API_URL/api/v2/retrieval-feedback" \
|
|
43
|
+
-H "x-cortex-token: $CORTEX_API_TOKEN" \
|
|
44
|
+
-H "Content-Type: application/json" \
|
|
45
|
+
-d "{\"original_tool\":\"$PREV_TOOL\",\"retry_tool\":\"$TOOL_NAME\",\"signal\":\"retry\",\"timestamp\":$TIMESTAMP}" \
|
|
46
|
+
> /dev/null 2>&1 &
|
|
47
|
+
fi
|
|
48
|
+
fi
|
|
49
|
+
;;
|
|
50
|
+
esac
|
|
51
|
+
|
|
52
|
+
# Always output empty JSON (non-blocking hook)
|
|
53
|
+
echo '{}'
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# ============================================================================
|
|
3
|
+
# observe-first.sh — Claude Code Hook
|
|
4
|
+
# ============================================================================
|
|
5
|
+
# Event: PreToolUse (Write, Edit)
|
|
6
|
+
# Purpose: Reminds agents to call observe() or query() before writing to
|
|
7
|
+
# memory directories (Mind/, Journal/, memory/).
|
|
8
|
+
# How: Checks the file path of Write/Edit operations. If targeting a
|
|
9
|
+
# memory directory, injects a system message reminder.
|
|
10
|
+
# Disable: Delete this file from .claude/hooks/ — no other config needed.
|
|
11
|
+
# Part of: fozikio — portable, no project-specific paths.
|
|
12
|
+
# ============================================================================
|
|
13
|
+
|
|
14
|
+
INPUT=$(cat)
|
|
15
|
+
FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // ""' 2>/dev/null)
|
|
16
|
+
|
|
17
|
+
if echo "$FILE_PATH" | grep -qiE '(Mind|Journal|memory)'; then
|
|
18
|
+
cat <<'EOF'
|
|
19
|
+
{
|
|
20
|
+
"systemMessage": "**[fozikio: observe-first]**\nWriting to a memory directory. Have you called observe() or query() first? Memory writes should be grounded in cortex context."
|
|
21
|
+
}
|
|
22
|
+
EOF
|
|
23
|
+
else
|
|
24
|
+
echo '{}'
|
|
25
|
+
fi
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# ============================================================================
|
|
3
|
+
# project-board-gate.sh — PreToolUse hook (Bash + MCP tools)
|
|
4
|
+
# ============================================================================
|
|
5
|
+
# Production gate for tracked repos. Configurable requirements before push:
|
|
6
|
+
# - Board update (gh issue/project commands)
|
|
7
|
+
# - Ops logging (ops_append via cortex MCP)
|
|
8
|
+
#
|
|
9
|
+
# Config: .claude/state/project-boards.json
|
|
10
|
+
# State: .claude/state/push-gate-state.txt (session-scoped)
|
|
11
|
+
#
|
|
12
|
+
# The hook does two things depending on what's happening:
|
|
13
|
+
# 1. On board/ops actions → records them in state file
|
|
14
|
+
# 2. On git push → checks state file, blocks if requirements unmet
|
|
15
|
+
# ============================================================================
|
|
16
|
+
|
|
17
|
+
set -euo pipefail
|
|
18
|
+
|
|
19
|
+
PROJECT_DIR="${CLAUDE_PROJECT_DIR:-.}"
|
|
20
|
+
CONFIG_FILE="$PROJECT_DIR/.claude/state/project-boards.json"
|
|
21
|
+
STATE_FILE="$PROJECT_DIR/.claude/state/push-gate-state.txt"
|
|
22
|
+
|
|
23
|
+
# No config = no gate
|
|
24
|
+
if [[ ! -f "$CONFIG_FILE" ]]; then
|
|
25
|
+
echo '{}'
|
|
26
|
+
exit 0
|
|
27
|
+
fi
|
|
28
|
+
|
|
29
|
+
# Read config
|
|
30
|
+
CONFIG=$(python3 -c "
|
|
31
|
+
import json, sys
|
|
32
|
+
c = json.load(open('$CONFIG_FILE'))
|
|
33
|
+
print(json.dumps({
|
|
34
|
+
'enabled': c.get('enabled', True),
|
|
35
|
+
'strength': c.get('strength', 'block'),
|
|
36
|
+
'require_board': c.get('on_push', {}).get('require_board_update', True),
|
|
37
|
+
'require_ops': c.get('on_push', {}).get('require_ops_log', False),
|
|
38
|
+
'ops_message': c.get('on_push', {}).get('require_ops_log_message', ''),
|
|
39
|
+
'repos': {k: v for k, v in c.get('repos', {}).items()}
|
|
40
|
+
}))
|
|
41
|
+
" 2>/dev/null || echo '{"enabled":true,"strength":"block","require_board":true,"require_ops":false,"repos":{}}')
|
|
42
|
+
|
|
43
|
+
ENABLED=$(echo "$CONFIG" | python3 -c "import json,sys; print(json.load(sys.stdin)['enabled'])" 2>/dev/null || echo "True")
|
|
44
|
+
STRENGTH=$(echo "$CONFIG" | python3 -c "import json,sys; print(json.load(sys.stdin)['strength'])" 2>/dev/null || echo "block")
|
|
45
|
+
REQUIRE_BOARD=$(echo "$CONFIG" | python3 -c "import json,sys; print(json.load(sys.stdin)['require_board'])" 2>/dev/null || echo "True")
|
|
46
|
+
REQUIRE_OPS=$(echo "$CONFIG" | python3 -c "import json,sys; print(json.load(sys.stdin)['require_ops'])" 2>/dev/null || echo "False")
|
|
47
|
+
OPS_MESSAGE=$(echo "$CONFIG" | python3 -c "import json,sys; print(json.load(sys.stdin)['ops_message'])" 2>/dev/null || echo "")
|
|
48
|
+
|
|
49
|
+
if [[ "$ENABLED" == "False" || "$STRENGTH" == "off" ]]; then
|
|
50
|
+
echo '{}'
|
|
51
|
+
exit 0
|
|
52
|
+
fi
|
|
53
|
+
|
|
54
|
+
# Read input
|
|
55
|
+
INPUT=$(cat)
|
|
56
|
+
|
|
57
|
+
# Detect tool context
|
|
58
|
+
TOOL_NAME=$(echo "$INPUT" | python3 -c "import json,sys; print(json.load(sys.stdin).get('tool_name',''))" 2>/dev/null || echo "")
|
|
59
|
+
|
|
60
|
+
# ═══════════════════════════════════════════════════════════════════════════
|
|
61
|
+
# TRACK: MCP ops_append calls → mark ops logged
|
|
62
|
+
# ═══════════════════════════════════════════════════════════════════════════
|
|
63
|
+
if [[ "$TOOL_NAME" == "mcp__cortex__ops_append" ]]; then
|
|
64
|
+
mkdir -p "$(dirname "$STATE_FILE")"
|
|
65
|
+
echo "ops_logged" >> "$STATE_FILE" 2>/dev/null
|
|
66
|
+
echo '{}'
|
|
67
|
+
exit 0
|
|
68
|
+
fi
|
|
69
|
+
|
|
70
|
+
# Only process Bash commands from here
|
|
71
|
+
if [[ "$TOOL_NAME" != "Bash" && -n "$TOOL_NAME" ]]; then
|
|
72
|
+
echo '{}'
|
|
73
|
+
exit 0
|
|
74
|
+
fi
|
|
75
|
+
|
|
76
|
+
COMMAND=$(echo "$INPUT" | python3 -c "import json,sys; print(json.load(sys.stdin).get('tool_input',{}).get('command',''))" 2>/dev/null || echo "")
|
|
77
|
+
|
|
78
|
+
# ═══════════════════════════════════════════════════════════════════════════
|
|
79
|
+
# TRACK: gh board/issue commands → mark board updated for detected repo
|
|
80
|
+
# ═══════════════════════════════════════════════════════════════════════════
|
|
81
|
+
if echo "$COMMAND" | grep -qE 'gh\s+(project\s+item|issue\s+(create|comment|close|edit)|pr\s+create)'; then
|
|
82
|
+
REPOS=$(echo "$CONFIG" | python3 -c "import json,sys; [print(r) for r in json.load(sys.stdin)['repos']]" 2>/dev/null || echo "")
|
|
83
|
+
|
|
84
|
+
mkdir -p "$(dirname "$STATE_FILE")"
|
|
85
|
+
for repo in $REPOS; do
|
|
86
|
+
if echo "$COMMAND" | grep -qi "$repo"; then
|
|
87
|
+
echo "board:$repo" >> "$STATE_FILE" 2>/dev/null
|
|
88
|
+
fi
|
|
89
|
+
done
|
|
90
|
+
|
|
91
|
+
# Fallback: cwd-based detection
|
|
92
|
+
CWD_REPO=$(basename "$(pwd)" 2>/dev/null || echo "")
|
|
93
|
+
if echo "$CONFIG" | python3 -c "import json,sys; c=json.load(sys.stdin); exit(0 if '$CWD_REPO' in c['repos'] else 1)" 2>/dev/null; then
|
|
94
|
+
echo "board:$CWD_REPO" >> "$STATE_FILE" 2>/dev/null
|
|
95
|
+
fi
|
|
96
|
+
|
|
97
|
+
echo '{}'
|
|
98
|
+
exit 0
|
|
99
|
+
fi
|
|
100
|
+
|
|
101
|
+
# ═══════════════════════════════════════════════════════════════════════════
|
|
102
|
+
# GATE: git push/merge → check requirements
|
|
103
|
+
# ═══════════════════════════════════════════════════════════════════════════
|
|
104
|
+
IS_GIT_PUSH=false
|
|
105
|
+
if echo "$COMMAND" | grep -qE 'git\s+push'; then
|
|
106
|
+
IS_GIT_PUSH=true
|
|
107
|
+
fi
|
|
108
|
+
|
|
109
|
+
if [[ "$IS_GIT_PUSH" == "false" ]]; then
|
|
110
|
+
echo '{}'
|
|
111
|
+
exit 0
|
|
112
|
+
fi
|
|
113
|
+
|
|
114
|
+
# Detect which tracked repo
|
|
115
|
+
DETECTED_REPO=""
|
|
116
|
+
REPOS=$(echo "$CONFIG" | python3 -c "import json,sys; [print(r) for r in json.load(sys.stdin)['repos']]" 2>/dev/null || echo "")
|
|
117
|
+
|
|
118
|
+
for repo in $REPOS; do
|
|
119
|
+
if echo "$COMMAND" | grep -qi "$repo"; then
|
|
120
|
+
DETECTED_REPO="$repo"
|
|
121
|
+
break
|
|
122
|
+
fi
|
|
123
|
+
done
|
|
124
|
+
|
|
125
|
+
if [[ -z "$DETECTED_REPO" ]]; then
|
|
126
|
+
CMD_DIR=$(echo "$COMMAND" | sed -n 's/.*cd[[:space:]]\+\([^[:space:];&]*\).*/\1/p' | head -1 2>/dev/null || echo "")
|
|
127
|
+
DIR_BASE=$(basename "${CMD_DIR:-$(pwd)}" 2>/dev/null || echo "")
|
|
128
|
+
|
|
129
|
+
for repo in $REPOS; do
|
|
130
|
+
if [[ "$DIR_BASE" == "$repo" ]]; then
|
|
131
|
+
DETECTED_REPO="$repo"
|
|
132
|
+
break
|
|
133
|
+
fi
|
|
134
|
+
done
|
|
135
|
+
fi
|
|
136
|
+
|
|
137
|
+
# Not a tracked repo — allow
|
|
138
|
+
if [[ -z "$DETECTED_REPO" ]]; then
|
|
139
|
+
echo '{}'
|
|
140
|
+
exit 0
|
|
141
|
+
fi
|
|
142
|
+
|
|
143
|
+
# === Check requirements ===
|
|
144
|
+
MISSING=""
|
|
145
|
+
|
|
146
|
+
if [[ "$REQUIRE_BOARD" == "True" ]]; then
|
|
147
|
+
if ! grep -q "^board:${DETECTED_REPO}$" "$STATE_FILE" 2>/dev/null; then
|
|
148
|
+
BOARD_NUM=$(echo "$CONFIG" | python3 -c "import json,sys; print(json.load(sys.stdin)['repos']['$DETECTED_REPO']['board_number'])" 2>/dev/null || echo "?")
|
|
149
|
+
BOARD_OWNER=$(echo "$CONFIG" | python3 -c "import json,sys; print(json.load(sys.stdin)['repos']['$DETECTED_REPO']['board_owner'])" 2>/dev/null || echo "?")
|
|
150
|
+
MISSING="${MISSING}\\n**Board update required:**\\n"
|
|
151
|
+
MISSING="${MISSING}1. Check board: \`gh project item-list $BOARD_NUM --owner $BOARD_OWNER\`\\n"
|
|
152
|
+
MISSING="${MISSING}2. Update issue: \`gh issue create/comment -R $BOARD_OWNER/$DETECTED_REPO\`\\n"
|
|
153
|
+
MISSING="${MISSING}3. Move items to reflect current status\\n"
|
|
154
|
+
fi
|
|
155
|
+
fi
|
|
156
|
+
|
|
157
|
+
if [[ "$REQUIRE_OPS" == "True" ]]; then
|
|
158
|
+
if ! grep -q "^ops_logged$" "$STATE_FILE" 2>/dev/null; then
|
|
159
|
+
MISSING="${MISSING}\\n**Ops log required:**\\n"
|
|
160
|
+
if [[ -n "$OPS_MESSAGE" ]]; then
|
|
161
|
+
MISSING="${MISSING}${OPS_MESSAGE}\\n"
|
|
162
|
+
else
|
|
163
|
+
MISSING="${MISSING}Call \`ops_append()\` to log what you're pushing and why.\\n"
|
|
164
|
+
fi
|
|
165
|
+
MISSING="${MISSING}\`mcp__cortex__ops_append({ content: \"Pushing: [what changed]\", project: \"$DETECTED_REPO\" })\`\\n"
|
|
166
|
+
fi
|
|
167
|
+
fi
|
|
168
|
+
|
|
169
|
+
# All requirements met — allow
|
|
170
|
+
if [[ -z "$MISSING" ]]; then
|
|
171
|
+
echo '{}'
|
|
172
|
+
exit 0
|
|
173
|
+
fi
|
|
174
|
+
|
|
175
|
+
REPO_DESC=$(echo "$CONFIG" | python3 -c "import json,sys; print(json.load(sys.stdin)['repos']['$DETECTED_REPO'].get('description',''))" 2>/dev/null || echo "")
|
|
176
|
+
MESSAGE="**[PUSH GATE]** Pushing to \`$DETECTED_REPO\` ($REPO_DESC) — requirements not met:\\n${MISSING}\\nComplete the above, then retry your push.\\n\\n*Config: \`.claude/state/project-boards.json\` — set \`strength\` to \`off\` to disable.*"
|
|
177
|
+
|
|
178
|
+
if [[ "$STRENGTH" == "block" ]]; then
|
|
179
|
+
HOOK_EVENT=$(echo "$INPUT" | python3 -c "import json,sys; print(json.load(sys.stdin).get('hook_event_name','PreToolUse'))" 2>/dev/null || echo "PreToolUse")
|
|
180
|
+
cat <<EOF
|
|
181
|
+
{
|
|
182
|
+
"hookSpecificOutput": {
|
|
183
|
+
"hookEventName": "$HOOK_EVENT",
|
|
184
|
+
"permissionDecision": "deny"
|
|
185
|
+
},
|
|
186
|
+
"systemMessage": "$MESSAGE"
|
|
187
|
+
}
|
|
188
|
+
EOF
|
|
189
|
+
else
|
|
190
|
+
cat <<EOF
|
|
191
|
+
{
|
|
192
|
+
"systemMessage": "$MESSAGE"
|
|
193
|
+
}
|
|
194
|
+
EOF
|
|
195
|
+
fi
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# ============================================================================
|
|
3
|
+
# session-lifecycle.sh — Claude Code Hook
|
|
4
|
+
# ============================================================================
|
|
5
|
+
# Event: SessionStart
|
|
6
|
+
# Purpose: Resets session-scoped state files at the start of each session.
|
|
7
|
+
# Clears cortex telemetry logs and push-gate state so hooks start
|
|
8
|
+
# fresh without stale data from previous sessions.
|
|
9
|
+
# How: Truncates .claude/state/cortex-calls.log and push-gate-state.txt.
|
|
10
|
+
# Disable: Delete this file from .claude/hooks/ — no other config needed.
|
|
11
|
+
# Part of: fozikio — supports cortex-telemetry.sh and project-board-gate.sh.
|
|
12
|
+
# ============================================================================
|
|
13
|
+
|
|
14
|
+
STATE_DIR="${CLAUDE_PROJECT_DIR:-.}/.claude/state"
|
|
15
|
+
mkdir -p "$STATE_DIR"
|
|
16
|
+
|
|
17
|
+
# Clear session-scoped state from previous session
|
|
18
|
+
> "$STATE_DIR/cortex-calls.log" 2>/dev/null
|
|
19
|
+
> "$STATE_DIR/push-gate-state.txt" 2>/dev/null
|
|
20
|
+
|
|
21
|
+
echo '{}'
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cortex-engine",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"description": "Portable cognitive engine for AI agents — storage, embeddings, memory, FSRS, and MCP server",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -80,9 +80,17 @@
|
|
|
80
80
|
"type": "git",
|
|
81
81
|
"url": "https://github.com/Fozikio/cortex-engine.git"
|
|
82
82
|
},
|
|
83
|
-
"homepage": "https://
|
|
83
|
+
"homepage": "https://fozikio.com",
|
|
84
|
+
"funding": {
|
|
85
|
+
"type": "github",
|
|
86
|
+
"url": "https://github.com/sponsors/Fozikio"
|
|
87
|
+
},
|
|
84
88
|
"files": [
|
|
85
89
|
"dist",
|
|
90
|
+
"hooks",
|
|
91
|
+
"skills",
|
|
92
|
+
"reflex-rules",
|
|
93
|
+
"fozikio.json",
|
|
86
94
|
"LICENSE",
|
|
87
95
|
"README.md"
|
|
88
96
|
],
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
name: cognitive-grounding
|
|
2
|
+
version: 1
|
|
3
|
+
tier: recommended
|
|
4
|
+
category: cognitive
|
|
5
|
+
description: Nudge agent to query cortex before substantive cognitive work
|
|
6
|
+
events: [prompt_submit]
|
|
7
|
+
conditions:
|
|
8
|
+
- field: user_prompt
|
|
9
|
+
op: regex
|
|
10
|
+
pattern: '(?i)(evaluat|review|design|assess|analyz|creat|build|architect|plan|propos|critique|audit|diagnos)'
|
|
11
|
+
action: warn
|
|
12
|
+
severity: medium
|
|
13
|
+
message: |
|
|
14
|
+
This prompt involves substantive cognitive work. Before responding, call query() on the topic to ground your work in accumulated experience.
|
|
15
|
+
override:
|
|
16
|
+
allow_disable: true
|
|
17
|
+
allow_downgrade: true
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
name: note-about-doing
|
|
2
|
+
version: 1
|
|
3
|
+
tier: custom
|
|
4
|
+
category: cognitive
|
|
5
|
+
description: Suggest capturing new threads of thought with thread_create()
|
|
6
|
+
events: [prompt_submit]
|
|
7
|
+
conditions:
|
|
8
|
+
- field: user_prompt
|
|
9
|
+
op: regex
|
|
10
|
+
pattern: '(?i)(I should|I need to|I want to|let me|I''ll)'
|
|
11
|
+
action: log
|
|
12
|
+
severity: info
|
|
13
|
+
message: |
|
|
14
|
+
If this is a new thread of thought, consider capturing it with thread_create() rather than just noting it and moving on.
|
|
15
|
+
override:
|
|
16
|
+
allow_disable: true
|
|
17
|
+
allow_downgrade: true
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
name: observe-first
|
|
2
|
+
version: 1
|
|
3
|
+
tier: recommended
|
|
4
|
+
category: cognitive
|
|
5
|
+
description: Warn when writing to memory directories without querying cortex first
|
|
6
|
+
events: [file_write, file_edit]
|
|
7
|
+
conditions:
|
|
8
|
+
- field: file_path
|
|
9
|
+
op: regex
|
|
10
|
+
pattern: '(Mind|Journal|memory)'
|
|
11
|
+
action: warn
|
|
12
|
+
severity: medium
|
|
13
|
+
message: |
|
|
14
|
+
Writing to a memory directory. Have you called observe() or query() first? Memory writes should be grounded in cortex context.
|
|
15
|
+
override:
|
|
16
|
+
allow_disable: true
|
|
17
|
+
allow_downgrade: true
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cortex-query
|
|
3
|
+
description: Persistent memory for AI agents — search, record, and build knowledge across sessions using cortex-engine MCP tools
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Cortex Memory — Query & Record
|
|
7
|
+
|
|
8
|
+
Your agent has persistent memory via cortex-engine. Knowledge survives across sessions — you can recall what you learned last week, track evolving beliefs, and build a knowledge graph over time.
|
|
9
|
+
|
|
10
|
+
## Core Loop
|
|
11
|
+
|
|
12
|
+
**Read before you write.** Always check what you already know before adding more.
|
|
13
|
+
|
|
14
|
+
### Search for knowledge
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
query("authentication architecture decisions")
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Be specific. `query("JWT token expiry policy")` beats `query("auth")`. Results include relevance scores and connected concepts.
|
|
21
|
+
|
|
22
|
+
After finding a relevant memory, explore around it:
|
|
23
|
+
```
|
|
24
|
+
neighbors(memory_id)
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Record what you learn
|
|
28
|
+
|
|
29
|
+
**Facts** — things you confirmed or noticed to be true:
|
|
30
|
+
```
|
|
31
|
+
observe("The API rate limits at 1000 req/min per API key, not per user")
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**Questions** — things you want to explore but haven't resolved:
|
|
35
|
+
```
|
|
36
|
+
wonder("Why does the sync daemon stall after 300k seconds?")
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**Hypotheses** — ideas that might be true but aren't confirmed:
|
|
40
|
+
```
|
|
41
|
+
speculate("Switching to connection pooling might fix the timeout issues")
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
These are stored separately so questions don't pollute your knowledge base.
|
|
45
|
+
|
|
46
|
+
### Update beliefs
|
|
47
|
+
|
|
48
|
+
When your understanding changes:
|
|
49
|
+
```
|
|
50
|
+
believe(concept_id, "Revised understanding based on new evidence", "reason for change")
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Track work across sessions
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
ops_append("Finished auth refactor, tests passing", project="api-v2")
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Next session, pick up where you left off:
|
|
60
|
+
```
|
|
61
|
+
ops_query(project="api-v2")
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Session Pattern
|
|
65
|
+
|
|
66
|
+
1. **Start:** `query()` the topic you're working on
|
|
67
|
+
2. **During:** `observe()` facts, `wonder()` questions as they come up
|
|
68
|
+
3. **End:** `ops_append()` what you did and what's unfinished
|
|
69
|
+
4. **Periodically:** `dream()` to consolidate observations into long-term memories
|
|
70
|
+
|
|
71
|
+
## Available Tools
|
|
72
|
+
|
|
73
|
+
**Write:** observe, wonder, speculate, believe, reflect, digest
|
|
74
|
+
**Read:** query, recall, predict, validate, neighbors, wander
|
|
75
|
+
**Ops:** ops_append, ops_query, ops_update
|
|
76
|
+
**System:** stats, dream
|
|
77
|
+
|
|
78
|
+
## Setup
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
npm install cortex-engine
|
|
82
|
+
npx fozikio init my-agent
|
|
83
|
+
npx cortex-engine # starts MCP server
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Defaults to local SQLite + Ollama. No cloud accounts needed.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cortex-review
|
|
3
|
+
description: Code and design review grounded in persistent memory — compares new work against accumulated knowledge and patterns
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Cortex Review
|
|
7
|
+
|
|
8
|
+
Review code, designs, or proposals by comparing them against your accumulated knowledge in cortex.
|
|
9
|
+
|
|
10
|
+
## Workflow
|
|
11
|
+
|
|
12
|
+
### 1. Ground in memory
|
|
13
|
+
|
|
14
|
+
Before reading the work under review, query cortex for the topic:
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
query("the domain or system being reviewed")
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Read the results. They contain past decisions, patterns, and lessons learned that inform your review.
|
|
21
|
+
|
|
22
|
+
### 2. Review against context
|
|
23
|
+
|
|
24
|
+
As you read the work, compare it against what cortex returned:
|
|
25
|
+
|
|
26
|
+
- **Does it align** with established patterns and past decisions?
|
|
27
|
+
- **Does it diverge** from known approaches — intentionally or accidentally?
|
|
28
|
+
- **Does it introduce** novel patterns worth capturing?
|
|
29
|
+
|
|
30
|
+
### 3. Record what you find
|
|
31
|
+
|
|
32
|
+
**New patterns:** If the work introduces something worth remembering:
|
|
33
|
+
```
|
|
34
|
+
observe("The new caching layer uses write-through with 5min TTL — effective for this read-heavy workload")
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**Open questions:** If something isn't clear:
|
|
38
|
+
```
|
|
39
|
+
wonder("Why did they bypass the rate limiter for internal services?")
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Belief updates:** If the work changes your understanding:
|
|
43
|
+
```
|
|
44
|
+
believe(concept_id, "Updated understanding", "Evidence from this review")
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### 4. Output format
|
|
48
|
+
|
|
49
|
+
```markdown
|
|
50
|
+
## Review — Grounded in Memory
|
|
51
|
+
|
|
52
|
+
### Aligned with known patterns
|
|
53
|
+
- [what matches cortex context]
|
|
54
|
+
|
|
55
|
+
### Divergences
|
|
56
|
+
- [what differs, with reasoning about whether intentional]
|
|
57
|
+
|
|
58
|
+
### New patterns to capture
|
|
59
|
+
- [novel approaches worth an observe() call]
|
|
60
|
+
|
|
61
|
+
### Open questions
|
|
62
|
+
- [things to wonder() about]
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Why This Matters
|
|
66
|
+
|
|
67
|
+
Without memory grounding, every review starts from zero. You'll miss that "we tried this approach 3 weeks ago and it caused latency spikes" or "this pattern was explicitly chosen over the alternative for compliance reasons." Cortex holds that context.
|