MEMORY - Assistant Memory

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.

Notes System Conventions (CRITICAL)

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

JSONHTL Structure Template

{
  "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"}}
  ]
}

Historical Envoy Snapshot (2026-02-12)

This section is a historical snapshot from 2026-02-12. For current Envoy documentation and status, start at envoy.

Operational Status

Fully operational. All critical bugs resolved. System successfully processing emails with enhanced logging.

Recent Changes (2026-02-12)

• 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

Configuration

• 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

Key Documentation

envoy (v7) - Main page with all links

envoy/logging - Logging system

envoy/flags-feature - Flags feature

envoy - Full changelog

Notes System Entry Points (2026-06-17)

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 Conversation Model (2026-06-17)

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.

version 7  ·  created 2026-02-12  ·  updated 2026-06-17