This template codifies the section patterns that have emerged across 40+ dev log entries. Use it as a guide for consistency, but adapt freely when the session calls for different structure.
Flexibility: If a particular session needs different sections or organization, use your judgment. This template captures common patterns, not rigid rules. Examples of when to diverge:
- Investigation-heavy sessions may need more "Discovery" sections
- Multi-issue sessions may need per-issue subsections
- Planning sessions may emphasize "Design Decisions" over "Implementation"
- Quick fixes may not need full structure (but document them anyway!)
The goal is comprehensive documentation for future sessions, not adherence to a format.
# YYYY-MM-DDThh:mm+zzzz (Location) - Brief TitleHigh-level summary of what was accomplished. 2-3 sentences capturing the essence.
Purpose: Quick understanding without reading full entry.
Why this work? What's the background?
- Reference Linear issues (BIG-XXX)
- Link to previous sessions if continuing work
- Explain user requests or pain points being addressed
Purpose: Understanding motivation and how this fits into larger picture.
For bug fixes:
- Root cause discovery process
- Investigation steps taken
- What was broken and why
For features:
- Architectural decisions
- Approach chosen
- High-level design
Purpose: Understanding the problem space or design approach before diving into code.
What code changes were made? What was built?
Be specific:
- File changes with line numbers when relevant (e.g.,
TimelineProcessor.swift:234) - Key code patterns or algorithms
- Database migrations, schema changes
- Build issues encountered and how fixed
- UI changes with before/after descriptions
Purpose: Detailed record of what was actually changed.
How was it validated?
Must include:
- On-device testing results (required per version control rules for code changes)
- Specific scenarios tested
- Edge cases verified
- What worked, what didn't
- Performance measurements if relevant
Purpose: Proving the changes work and documenting test coverage.
CRITICAL SECTION - Document "why X not Y" thinking using this pattern:
#### Why [Decision About What]?
**Considered**: [Alternative approach A]
- Pros: ...
- Cons: ...
**Rejected**: [Reason it didn't work]
**Chosen**: [Approach we took] because:
- [Rationale point 1]
- [Rationale point 2]Examples of good design decision topics:
- Why this data structure over that one
- Why this API pattern vs alternatives
- Why solve now vs defer
- Why this level of abstraction
- Why this testing approach
Purpose: Future sessions need to understand WHY decisions were made. This is often the most valuable section.
What did we discover? What would we do differently?
Include:
- Mistakes made and how corrected (be explicit!)
- Unexpected behaviors or patterns discovered
- Things that surprised us
- Better ways to approach similar problems in future
- "If I had to do this again, I would..."
Purpose: Capturing knowledge that prevents repeating mistakes and informs future similar work.
Complete list with repo context.
Format:
**LocoKit2**:
- `Sources/LocoKit2/Models/TimelineItem.swift` - Added preventAutoMerge field
- `Sources/LocoKit2/Database/Database+Schema.swift` - Migration for new column
**Arc Timeline Editor**:
- `Arc Timeline Editor/Views/Timeline/TimelineMap.swift` - Updated gesture handlingPurpose: Quick reference for what changed and where.
List all commits made, or note if uncommitted with rationale.
Format:
**LocoKit2** (`a1b2c3d`):
- Brief description of commit
- Key changes included
**Arc Timeline Editor** (`d4e5f6g`):
- Brief description
**Uncommitted**: [Explain why - usually waiting for testing or related work]Purpose: Linking session to git history and documenting commit strategy.
Include these when relevant:
Unfinished tasks, next steps, follow-up items.
Use when:
- Session ended due to context limits mid-task
- Discovered additional work during implementation
- Follow-up tasks identified
Format: Bulleted list with enough detail for next session to pick up.
Things we need to figure out but haven't resolved yet.
Format:
**Question**: [Specific question]
**Context**: Why it matters
**Status**: Not blocking / Blocking for XThings we don't understand. Be explicit about unknowns.
Examples:
- Unexpected behavior we observed but couldn't explain
- Performance characteristics we don't understand
- API behaviors that seem inconsistent
- Edge cases we discovered but didn't fully investigate
Purpose: Honest documentation of gaps in understanding. Future sessions may need to investigate these.
Linear issues: List with status changes made Related sessions: Link to previous work on same feature Knowledge files: Which ones were read or updated External docs: Links to API docs, blog posts, etc.
-
Write for your future self: You have no memory between sessions. What context would you need?
-
Document mistakes: Failed approaches are valuable. Future sessions need to know what doesn't work.
-
Be specific: "Fixed the bug" is useless. "Fixed race condition in TimelineObserver by adding 100ms debounce" is useful.
-
Capture "why": Code shows "what", dev logs should show "why".
-
Design Decisions are gold: These age best. Implementation details may change, but decision rationale remains valuable.
-
Don't skip "Mysteries": Unknown behaviors need documentation so future sessions can investigate or work around them.
-
More detail > less detail: 500-line entries are fine. Token efficiency comes from loading only relevant sessions, not skimping on detail.
Based on analysis of weeks 39-42 (40+ entries):
Most common sections:
- Files Modified (27 times) - universal
- Overview (26 times) - universal
- Key Learnings (16 times) - very high value
- Commits (16 times) - tracking
- Mysteries and Uncertainties (16 times) - documenting unknowns
- Context/Problem Context (16 times) - motivation
- Design Decisions (10 times) - very high value
Section naming consistency:
- Use "Mysteries and Uncertainties" (not "Mysteries/Uncertainties" or "Mysteries & Uncertainties")
- Use "Key Learnings" (not "Key Learning" or "Learnings")
- Use "Design Decisions" (not "Key Decisions")
- Use "Files Modified" (not "Changed Files" or "Modifications")