Chapter 4: Work Notes: External Memory + Running Log

January 21, 2026 · 3 min read
blog

Series: LLM Development Guide

Chapter 4 of 15

Previous: Chapter 3: Prompt Documents: Prompts That Survive Sessions

Next: Chapter 5: The Execution Loop: Review Discipline + Commit Discipline

What you’ll be able to do

You’ll be able to keep multi-session work consistent by maintaining work notes that:

  • Preserve the model’s working state outside the chat.
  • Capture decisions and rationale for later review.
  • Make handoffs possible.
  • Provide a deterministic “resume” prompt.

TL;DR

  • LLMs have no durable memory. If it’s not written down, it doesn’t exist next session.
  • Mirror work-notes/ files to your phases exactly.
  • Track: status, decisions, assumptions, open questions, session log, commits.
  • In your prompts, require the model to update notes before moving forward.

Table of contents

Directory alignment

Keep your three directories aligned so you can load one phase without dragging unrelated context into the session:

plan/phase-2a-scaffolding.md
prompts/phase-2a-scaffolding.md
work-notes/phase-2a-scaffolding.md

This makes sessions resumable and makes parallel work possible.

A work-notes template you can paste

# Phase <X> - <Phase Name>

## Status
- [ ] Not started
- [ ] In progress
- [ ] Blocked
- [ ] Complete

## Decisions
- <Decision>: <Rationale>

## Assumptions
- <Assumption>

## Open questions
- [ ] <Question>

## Session log

### <YYYY-MM-DD HH:MM>
- What changed:
- Why:
- Blockers:
- Next:

## Commits
- <hash> - <message>

You can keep it simple. The win is consistency.

Session start and session end prompts

Start a session

Paste your phase prompt and current work notes, and tell the model to continue from the last session.

I'm continuing work on Phase <X>.

Prompt:
<paste prompts/phase-X.md>

Current state:
<paste work-notes/phase-X.md>

Please:
1. Summarize where we are (3 to 4 sentences).
2. List blockers and open questions.
3. Confirm the next logical unit.
4. Proceed with the next logical unit.

End a session

Before we stop:
1. Update the session log with what we did and what is next.
2. Ensure decisions, assumptions, and open questions are current.
3. Propose a commit message for any completed logical unit.
4. Show the updated work-notes file.

Verification

You can verify your notes are doing their job by forcing a cold start:

  1. Start a new chat.
  2. Paste only the phase prompt and the work-notes file.
  3. See if you can resume without re-explaining anything.

Mechanical checks:

# Work notes exist and are non-empty.
find work-notes -type f -name '*.md' -maxdepth 2 -print -exec test -s {} \;

# Work notes have at least the core sections.
rg -n "^## (Status|Decisions|Assumptions|Open questions|Session log|Commits)" work-notes

Gotchas

  • Notes without rationale are not useful later.
  • If you let the model continue without updating notes, the next session will drift.
  • Avoid dumping raw logs with sensitive data. Sanitize first.

Continue -> Chapter 5: The Execution Loop: Review Discipline + Commit Discipline

Authors
DevOps Architect · Applied AI Engineer
I’ve spent 20 years building systems across embedded firmware, security platforms, fintech, and enterprise architecture. Today I focus on production AI systems in Go — multi-agent orchestration, MCP server ecosystems, and the DevOps platforms that keep them running. I care about systems that work under pressure: observable, recoverable, and built to last.