Ongoing Work Tracking
Convention for maintaining development context between sessions
The Pattern
Create .ongoing/task-name.md
files to track active development work. One file per logical feature - the "big things I am working on right now". Multiple ongoing files can exist simultaneously for different features. These living documents evolve as understanding grows and enable easy work resumption.
File Naming Convention
.ongoing/
├── feature-user-authentication.md
├── bug-memory-leak-parser.md
├── refactor-database-layer.md
└── config-restructure.md
Use descriptive names that capture the work's essence. Prefix with type when helpful (feature-, bug-, refactor-, etc.).
Essential Content Structure
# Task Name
**Status**: Planning | In Progress | Blocked | Complete
**Started**: YYYY-MM-DD
**Goal**: One sentence describing success
## Current State
Brief context of where things stand right now
## Next Steps
- [ ] Specific actionable item with file:line references
- [ ] Another concrete next step
- [ ] etc.
## Blockers
(Only include this section when status is Blocked)
- Concrete external dependency preventing progress
- Who/what needs to resolve it
## Open Questions
- What approach for handling edge case X?
- Need to decide between option A vs B
## Context & Decisions
Key background info and why certain choices were made
Status Definitions
- Planning: Designing approach, gathering requirements
- In Progress: Actively implementing
- Blocked: Cannot proceed due to external dependency (identify the concrete blocker)
- Complete: Ready to delete file
Key Conventions
Real-time updates: Update the file as work progresses - after completing each next step, making discoveries, or at natural pause points
Specific next steps: Include file paths and line numbers where possible
- ❌ "Fix the validation logic"
- ✅ "Update validateUser() in src/auth.ts:42 to handle empty email case"
Preserve decision context: Capture not just what was decided, but why - prevents re-litigating settled questions
Living evolution: Move completed next steps to "Context & Decisions", add new discoveries, update status and current state
File lifecycle: Delete the file when work is complete (after feature is merged/deployed, not just when code is written)
Git Tracking
Follow your project's existing pattern for .ongoing/
files:
- If other
.ongoing/
files are committed → commit yours - If they're gitignored → ignore yours
- If unclear, ask the project maintainer
Workflow Example
Starting new logical feature:
# 1. Create .ongoing/feature-name.md with template
# 2. Set status to "Planning", fill in goal
# 3. Add initial next steps
# 4. Begin implementation
During development session:
# 1. Read .ongoing/feature-name.md to reload context
# 2. Work from "Next Steps" list
# 3. Update file as you complete items:
# - Move completed steps to "Context & Decisions"
# - Add new next steps as they emerge
# - Update "Current State" with progress
Session completion:
# 1. Update "Current State" with where you left off
# 2. Refine "Next Steps" for next session
# 3. Document any new discoveries or decisions
Work completion:
# 1. Set status to "Complete"
# 2. After feature is merged/deployed, delete the file
# (context is preserved in git history and commit messages)
Integration with Commits
Reference ongoing files in commit messages to show larger context:
Add user input validation to login form
Implement email format checking and required field validation
as the first step toward secure authentication, per the plan
in .ongoing/feature-user-authentication.md
This creates traceability between individual commits and the broader feature work.
Benefits
- Context preservation: No mental reload time between sessions
- Handoff ready: Team members can pick up work easily
- Decision tracking: Why choices were made stays visible
- Progress visibility: Status and next steps always current
- Commit clarity: Larger context visible in commit messages