Skip to content

Commit 16f4f06

Browse files
Paul Kyleclaude
andcommitted
feat: v0.6.0 — CLI parity, list/read tools, README restructure, tests
Major update bringing Palinode to full MCP/API/CLI parity: - Full CLI: save, search, read, list, diff, blame, rollback, status, consolidate, session-end, doctor, trigger, manage - New tools: palinode_list (browse memory by category), palinode_read (read full file contents) - README restructured: Git blame your AI agent brain opening, How It Works section aligned with LLM Knowledge Base pattern - Deterministic compaction executor hardened (dict validation) - Test suite: 20 tests covering executor, parser, fact IDs, git tools, store, list/read, source surface - CI: GitHub Actions workflow for automated testing - Source surface tracking on saves and session-end - ADR-001: Tools over pipeline architecture decision - Plugin scaffold for Neovim/Obsidian integration Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 8d4fdf0 commit 16f4f06

60 files changed

Lines changed: 3029 additions & 396 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/test.yml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
name: Tests
2+
3+
on:
4+
push:
5+
branches: [ main ]
6+
pull_request:
7+
branches: [ main ]
8+
9+
jobs:
10+
test:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v4
14+
15+
- name: Set up Python
16+
uses: actions/setup-python@v5
17+
with:
18+
python-version: "3.11"
19+
cache: 'pip'
20+
21+
- name: Install dependencies
22+
run: |
23+
python -m pip install --upgrade pip
24+
pip install -e .[dev]
25+
26+
- name: Run Pytest
27+
run: |
28+
pytest tests/ -v

.gitignore

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
# ============================================================
22
# PRIVATE DATA — never commit to public repo
33
# ============================================================
4-
# Memory directories contain personal data. They stay local only.
4+
# These directories contain personal memories, session transcripts,
5+
# and private project data. They stay local only.
56
people/
67
projects/
78
decisions/
@@ -17,15 +18,19 @@ research/
1718
# ============================================================
1819
# Rebuildable from files
1920
.palinode.db
20-
.palinode.db-journal
21-
.palinode.db-wal
22-
.palinode.db-shm
23-
.engram.db
21+
*.db-journal
22+
*.db-wal
23+
*.db-shm
2424

25-
# Logs
25+
# Operational logs
2626
logs/
27-
server.log
28-
nohup.out
27+
28+
# Execution prompts (contain infrastructure details)
29+
M1-EXECUTE-PROMPT.md
30+
M1.5-EXECUTE-PROMPT.md
31+
M2-EXECUTE-PROMPT.md
32+
M3-EXECUTE-PROMPT.md
33+
M3.5-EXECUTE-PROMPT.md
2934

3035
# OS
3136
.DS_Store
@@ -37,3 +42,8 @@ palinode.egg-info/
3742
__pycache__/
3843
*.pyc
3944
venv/
45+
46+
# Server logs
47+
server.log
48+
nohup.out
49+
.engram.db

ADR-001-tools-over-pipeline.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# ADR-001: Tools Over Pipeline
2+
3+
**Status:** Accepted
4+
**Date:** 2026-04-01
5+
**Context:** Claude Mythos announcement, Nate B Jones "compensating complexity" framework
6+
7+
## Decision
8+
9+
Palinode's primary value is its **14 MCP tools + file-based storage + git versioning**, not its 4-phase injection pipeline. The pipeline is scaffolding for current models. The tools survive any model upgrade.
10+
11+
## Context
12+
13+
Nate B Jones' framework distinguishes:
14+
- **Outcome specs** — what you want (survives model upgrades)
15+
- **Procedures** — how to do it (breaks on model upgrades)
16+
- **Tools** — capabilities the model can use (survives)
17+
- **Compensating complexity** — workarounds for model limitations (disposable)
18+
19+
Applied to Palinode:
20+
21+
### What survives any model
22+
- `palinode_search` — find relevant memories
23+
- `palinode_save` — store typed memories
24+
- `palinode_session_end` — capture session outcomes
25+
- `palinode_diff/blame/rollback/push` — git operations
26+
- `palinode_trigger` — prospective recall
27+
- Deterministic executor (validates LLM output, applies ops)
28+
- Markdown files as source of truth
29+
- Git versioning
30+
- Security scanning (business rule)
31+
32+
### What's compensating complexity (today's scaffolding)
33+
- 4-phase auto-injection (Phase 1-4) — compensates for models that don't know to search
34+
- Trivial message skip list — compensates for models that can't judge query relevance
35+
- Layer split keyword heuristics — compensates for models that can't classify by content
36+
- `json_repair` — compensates for models that output malformed JSON
37+
- Explicit JSON format instructions in compaction prompt — same
38+
39+
## Consequences
40+
41+
### Positioning
42+
Lead with: "14 tools + a memory directory your agent uses however it wants."
43+
Not: "4-phase injection pipeline."
44+
45+
The pipeline is an implementation detail. The tools are the interface.
46+
47+
### Architecture evolution
48+
1. **v0.5 (now):** Pipeline + tools. Pipeline does automatic injection. Tools available for explicit use.
49+
2. **v1.0:** Pipeline becomes optional/configurable. Default to tools-first for capable models. Pipeline as fallback.
50+
3. **v2.0:** Tools-only mode. Model decides what to retrieve, when to consolidate. Pipeline removed or opt-in legacy.
51+
52+
### What stays regardless of version
53+
- MCP tool interface (the API contract)
54+
- File-based storage (markdown + git)
55+
- Deterministic executor (LLM proposes, executor disposes)
56+
- Security guardrails
57+
- `core: true` flagging (user intent, not model workaround)
58+
59+
### What to audit on each model upgrade
60+
Run the compaction pipeline with prompt sections deleted. Measure what gets worse vs what stays the same. Remove what the new model makes unnecessary.
61+
62+
## References
63+
- Nate B Jones, "Every workaround you built for the last model is now breaking the next one" (April 2026)
64+
- Issue #56
65+
- Cursor's Planner-Worker-Judge convergence (same structural pattern across Anthropic, DeepMind, OpenAI)

0 commit comments

Comments
 (0)