Harness State
What this does for you
- Memory that survives chat — progress and status in files, not context window
- Clear next step — highest-priority unfinished feature is obvious
- Proof of done — evidence recorded before marking a feature passing
Long tasks lose continuity if state lives only in chat (Lesson 05). Persist progress on disk so the next session resumes exactly where the last one stopped.
State artifacts
| File | Role | Update when |
|---|---|---|
feature_list.json |
Source of truth for features | Status changes or evidence is added |
progress.md / claude-progress.md |
Session log | At start (read) and close (write) |
session-handoff.md |
Compact handoff | When closing long sessions |
| Git log | Change history | Descriptive commits |
feature_list.json rules
{
"rules": {
"single_active_feature": true,
"passing_requires_evidence": true,
"do_not_skip_verification": true
}
}
Valid statuses:
not_started— no work yetin_progress— active feature (only one)blocked— blocker documented innotespassing— verification run + evidence inevidence[]
Evidence format
"evidence": [
{
"date": "2026-06-16",
"verification_run": "npm test && npm run lint",
"result": "pass",
"notes": "42 tests passed, 0 lint errors"
}
]
Do not mark passing without an entry in evidence.
progress.md structure
# Progress Log
## Current State
- Active feature: [id] — [title]
- Last verification: [command] — [pass/fail]
- Blockers: [none | description]
## Session History
### YYYY-MM-DD — [brief title]
- Worked on: ...
- Verification: ...
- Next: ...
Multi-session flow
Session start:
- Read
progress.md→ most recent verified state - Read
feature_list.json→ highest-priority unfinished feature git log --oneline -5→ recent changes./init.sh→ confirm healthy baseline
Session end:
- Update
progress.mdwith what was done and what remains - Update
feature_list.json(status + evidence) - Optional: complete
session-handoff.md - Commit if the repo is restartable
Anti-patterns
- Relying on chat memory
- Marking features done without evidence
- Leaving multiple features as
in_progress - Aspirational progress ("almost done") vs verified
Templates
Course reference
- Lesson 05: Why long tasks lose continuity
- Project 03: Continuity across sessions