Skip to content

Commit bf3272a

Browse files
Paul Kyleclaude
andcommitted
fix: Codex review blockers — nightly prompt schema, API docs, task enum, ADR-003
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent d1c7747 commit bf3272a

7 files changed

Lines changed: 12 additions & 12 deletions

File tree

ADR-003-memory-harness-boundary.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ This looks correct. It is not. It is **save and pray** — the implicit assumpti
2727

2828
The failure mode is always the same: **the agent doesn't know what it doesn't know.** It proceeds with confidence on incomplete context. There is no error. There is no warning. The dashboard is green. The memories are gone.
2929

30-
This is not a theoretical risk. Research from 2026 shows agents completing tasks while losing access to 87% of stored knowledge under complexity. Task completion rates stay high while memory recall drops to 13%. The agent finishes the work. The work is wrong.
30+
This is not a theoretical risk. Early benchmarks on agent memory retrieval suggest that recall degrades significantly under task complexity — agents complete work while missing large portions of their stored knowledge. Task completion metrics stay green even as retrieval quality degrades. The agent finishes the work. The work is wrong.
3131

3232
## Architecture: Two Systems, One Contract
3333

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ pip install -e .
7676
# Create your memory directory
7777
mkdir -p ~/.palinode/{people,projects,decisions,insights,daily}
7878
cd ~/.palinode && git init
79-
cp ~/palinode/palinode.config.yaml.example palinode.config.yaml
79+
cp /path/to/palinode/palinode.config.yaml.example palinode.config.yaml # adjust path
8080

8181
# Start services
8282
PALINODE_DIR=~/.palinode palinode-api # REST API on :6340
@@ -213,11 +213,11 @@ Optional: a chat model for consolidation (any 7B+ works), OpenClaw for agent plu
213213
| `GET/POST` | `/triggers` | Prospective recall triggers |
214214
| `POST` | `/consolidate` | Run or preview compaction |
215215
| `GET` | `/list` | Browse files by type |
216-
| `GET` | `/read/{path}` | Read a memory file |
217-
| `GET` | `/history/{path}` | Git log for a file |
216+
| `GET` | `/read?file_path=...` | Read a memory file |
217+
| `GET` | `/history/{file_path}` | Git log for a file |
218218
| `GET` | `/diff` | Recent changes |
219-
| `GET` | `/blame` | Git blame |
220-
| `GET` | `/timeline` | File evolution |
219+
| `GET` | `/blame/{file_path}` | Git blame |
220+
| `GET` | `/timeline/{file_path}` | File evolution |
221221
| `POST` | `/rollback` | Revert a file |
222222
| `POST` | `/push` | Push to git remote |
223223
| `POST` | `/reindex` | Rebuild indices |

docs/OBSIDIAN-SETUP.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@ Because Palinode stores all memories as standard markdown files, you can use [Ob
1212

1313
- **Visual Graph:** See how your agent connects people, projects, and ideas (frontmatter `entities` arrays act as tags/links if you configure Obsidian's Dataview)
1414
- **Manual Curation:** If the agent gets a detail wrong, just type to fix it. The file watcher will pick up your changes within 2 seconds.
15-
- **GrueBrain Rationalization:** If you use GrueBrain, you can symlink specific subdirectories (like `projects/` or `daily/`) into your main GrueBrain vault.
15+
- **Second Brain Integration:** You can symlink specific subdirectories (like `projects/` or `daily/`) into an existing Obsidian vault.

palinode/cli/consolidate.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
@click.option("--dry-run", is_flag=True, help="Preview changes without applying")
88
@click.option("--format", "fmt", type=click.Choice(["json", "text"]), help="Output format")
99
def consolidate(nightly, dry_run, fmt):
10-
"""Run or preview weekly compaction."""
10+
"""Run or preview memory compaction (weekly full or --nightly lightweight)."""
1111
try:
1212
data = api_client.consolidate(dry_run=dry_run, nightly=nightly)
1313

palinode/cli/prompt.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def prompt():
2020

2121

2222
@prompt.command(name="list")
23-
@click.option("--task", type=click.Choice(["compaction", "extraction", "update", "classification"]),
23+
@click.option("--task", type=click.Choice(["compaction", "extraction", "update", "classification", "nightly-consolidation"]),
2424
help="Filter by task type")
2525
@click.option("--format", "fmt", type=click.Choice(["text", "json"]), default=None)
2626
def prompt_list(task: str | None, fmt: str | None) -> None:

palinode/mcp.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -479,7 +479,7 @@ async def list_tools() -> list[types.Tool]:
479479
"task": {
480480
"type": "string",
481481
"description": "For 'list': filter by task type",
482-
"enum": ["compaction", "extraction", "update", "classification"],
482+
"enum": ["compaction", "extraction", "update", "classification", "nightly-consolidation"],
483483
},
484484
},
485485
"required": ["action"],

specs/prompts/nightly-consolidation.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ For each project mentioned in the daily notes, propose UPDATE or SUPERSEDE opera
1919
## Rules
2020
- Only UPDATE (append new info) or SUPERSEDE (replace outdated line with current info)
2121
- Do NOT ARCHIVE, MERGE, or KEEP — those are weekly operations
22-
- Each operation targets a specific fact_id in the status file
22+
- Each operation targets a specific `id` (fact ID) in the status file
2323
- If a status line is now outdated by today's work, SUPERSEDE it
2424
- If today adds new information, UPDATE with a new status line
2525
- Be concise: one line per status entry, format: `- [YYYY-MM-DD] summary`
2626

2727
## Output
2828
Return a JSON array of operations:
29-
[{"op": "UPDATE", "fact_id": "...", "content": "..."}, ...]
29+
[{"op": "UPDATE", "id": "...", "new_text": "..."}, ...]

0 commit comments

Comments
 (0)