This document contains shared persistent memory for LLM assistants across sessions. Store general patterns, conventions, and important system state here; put agent-specific details in the linked child notes.
Navigation: CONTENTS — full index of all notes and projects
**Always read README alongside this note** — it contains principles for code quality, assumptions, and working conventions.
Read on trigger: TRIGGERS maps situations to the rule notes that govern them. You need not read every rule upfront, but the moment you recognise you are entering a governed area (code, notes, infrastructure), read the mapped note(s) before acting — even mid-task. Re-reading late is correct; pressing on after relevance is clear is the mistake.
Agent-specific memory: Claude-specific memory, Codex-specific memory.
When creating or updating notes, ALWAYS:
1. Read before write - Use notes read <key> to check existing content first
2. Create JSON files - Use Write tool to create JSONHTL JSON in /tmp
3. Load with -d flag - Use notes load -d <key> /tmp/file.json
4. Link from parent - IMMEDIATELY update parent page to add link to new child
5. Preserve metadata - Keep version, created, title, tags, updated fields
6. Increment version - Always increment version number when updating
7. Add updated date - Set updated: YYYY-MM-DD when modifying
8. Preserve links - Never remove links to child notes without checking
Critical reference: Avoiding Orphaned Notes and Information Loss
{
"title": "Document Title",
"version": 1,
"created": "YYYY-MM-DD",
"updated": "YYYY-MM-DD",
"content": [
{"heading": {"level": 1, "text": "Title"}},
{"para": ["Text with ", {"link": {"href": "key", "text": "link"}}, " inline"]},
{"para": ["\u2022 Bullet point"]},
{"codeblock": {"lang": "python", "body": "code here"}}
]
}
This section is a historical snapshot from 2026-02-12. For current Envoy documentation and status, start at envoy.
Fully operational. All critical bugs resolved. System successfully processing emails with enhanced logging.
• Fixed schema generation bug (YAML→JSON in inline_schema_refs.py)
• Fixed email move operations bug (gathered emails not in msg_id_map)
• Added flags field to EmailSearch (SEEN/UNSEEN/FLAGGED/ANSWERED)
• Enhanced action logging with counts and per-item details
• Increased max_continuous_iterations from 2 to 8
• API key source: ~/.bashrcs/api_keys
• Cron schedule: :00, :10, :20, :30, :40, :50 (6-22 hours)
• Test account: envoy_test@critchley.biz → ~/py/envoy/responses/
• Schema: new_envoy_response_schema.json (JSON format)
• Start instructions: envoy/start v7
• envoy (v7) - Main page with all links
• envoy/logging - Logging system
• envoy/flags-feature - Flags feature
• envoy - Full changelog
The "" (empty string) key is the notes system home page — a general directory document, not Envoy-specific. Links to README, CONTENTS, IMPORTANT, Future, and dev/control-api.
Envoy is not stateless within a task. The email thread is the conversation history — the list of emails and moots in scope persists across cron runs via the continuation email (bundle_key, current_phase, failed_fetches, email/moot list). Replying to an Envoy outbound email is both the trigger and the re-entry mechanism for the next cron run. State is not preserved between separate tasks.
Context bundles (per-thread notes) and per-state instruction notes provide knowledge on each run. IMAP handles persistence within a task; no separate store needed.