Skip to main content
The journal is the source of truth for everything that happens in a TENET project. Every feature, fix, decision, and discovery is captured as a JSONL entry.

Format

Each journal file is JSONL (one JSON object per line):
{
  "v": 2,
  "ts": "2026-03-22T21:30:00.000Z",
  "session": "session-goose-20260322-2009-4dfeec",
  "type": "feature",
  "status": "complete",
  "title": "Memory system — auto-backfill embeddings",
  "summary": "Periodic indexer now auto-backfills missing embeddings on first tick",
  "detail": "Fixed root cause: one 35K-char memory was killing the entire backfill loop",
  "files": ["src/lib/memory-indexer.ts", "src/lib/memory-search.ts"],
  "learned": ["Truncate content >28K chars for embedding models"],
  "next": "Add graph edges to memory schema"
}

Entry Types

TypeWhen to Use
featureNew capability shipped
fixBug fix
decisionArchitectural or strategic choice
discoverySomething learned or found
milestoneSignificant achievement
pivotContext checkpoint (mid-session save)
session-endSession completed

File Location

.jfl/journal/
├── main.jsonl                              # Main branch entries
├── session-goose-20260322-2009-4dfeec.jsonl  # Session-specific
└── flow-engine.jsonl                       # Automated flow entries

Reading Journals

# Recent work summary
jfl synopsis 24

# Search memory (journals are indexed into memory DB)
jfl ask "What did we do about embeddings?"

# Raw journal
tail -5 .jfl/journal/main.jsonl | python3 -m json.tool

How Journals Feed the System

Journal entry written
  ↓ (every 60 seconds)
Memory indexer reads it

Extracts content (title + summary + detail + files + learned)

Computes TF-IDF tokens

Computes embedding (text-embedding-3-small)

Stored in memory.db → searchable via jfl_memory_search

Training tuples mined → feeds policy head

Writing Journal Entries

Agents write journal entries automatically via the Pi extension. You can also write them manually:
# Via the memory tool
jfl_memory_add --title "My discovery" --content "Details..." --type discovery

# Directly to JSONL
echo '{"v":2,"ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","session":"main","type":"note","title":"My note","summary":"Details"}' >> .jfl/journal/main.jsonl