Chapter 4: Work Notes: External Memory + Running Log

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
- A work-notes template you can paste
- Session start and session end prompts
- Verification
- Gotchas
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:
- Start a new chat.
- Paste only the phase prompt and the work-notes file.
- 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