What Are Issues?
Issues are the second tier in sudocode’s 4-tier abstraction structure. They capture agent intent - the HOW to implement what specs define. Think of issues as actionable work items scoped to what an AI agent (or human developer) can accomplish in a single focused session.Key Principle: Issues capture how to implement. Specs (tier 1) capture what to build. Issues are derived from specs and linked back to the requirements they fulfill.
- Implementation tasks - “Implement login endpoint”
- Bug fixes - “Fix token expiration bug”
- Feature work - “Add password reset flow”
- Epics - “Build authentication system” (contains sub-issues)
- Chores - “Update dependency versions”
Issues vs. Specs
Specs
User intent (WHAT)
- High-level requirements
- Written primarily by humans
- Long-lived, evolve over time
- Multiple issues per spec
Issues
Agent tasks (HOW)
- Actionable implementation
- Created by humans or agents
- Closed when complete
- One spec per issue (typically)
Issue Lifecycle
Issues progress through a well-defined lifecycle from creation to completion:open - Ready to be worked on
open - Ready to be worked on
Issues start as
open when created. An open issue means:- Ready to be claimed by an agent or developer
- No blocking dependencies (or blockers resolved)
- Has sufficient detail to begin work
- May be in the “ready” queue for execution
in_progress - Currently being worked on
in_progress - Currently being worked on
When an agent or developer claims an issue:
- Status changes to
in_progress - Assignee is set to the agent/user
- Other agents know this work is claimed
- Implementation is actively happening
blocked - Waiting on dependencies
blocked - Waiting on dependencies
Issues can become blocked when:
- Another issue must be completed first
- External dependency is unavailable
- Waiting for spec clarification
- Blockers tracked via
blocksrelationships
needs_review - Implementation complete, awaiting review
needs_review - Implementation complete, awaiting review
After implementation is done but before closing:
- Code changes awaiting review
- Testing in progress
- Validation needed
- Feedback being incorporated
closed - Work completed
closed - Work completed
Issues are closed when:
- Implementation is complete
- Tests pass
- Code reviewed and merged
- Requirements fulfilled
- Can be reopened if needed
Issue Types
Issues are categorized by type to help with organization and filtering:| Type | Purpose | Example |
|---|---|---|
| task | Implementation work | ”Create login endpoint” |
| bug | Fix defects | ”Fix token expiration bug” |
| feature | New functionality | ”Add password reset flow” |
| epic | Large work with sub-issues | ”Build authentication system” |
| chore | Maintenance work | ”Update dependencies” |
Issue Structure
Issues are stored as markdown files with YAML frontmatter in.sudocode/issues/:
File Format
Flexible Content: The markdown body is completely flexible. Common sections include Description, Design Notes, Acceptance Criteria, and Implementation Notes, but you can structure it however makes sense.
Cross-References
Issues support bidirectional linking to specs and other issues:Link to Specs
Reference the spec(s) this issue implements:Link to Other Issues
Reference related issues:Automatic Backlinks: sudocode tracks all references automatically, enabling graph-based planning and dependency resolution.
Relationships and Dependencies
Issues can have typed relationships to model dependencies and connections:Relationship Types
| Type | Description | Example |
|---|---|---|
| blocks | Hard blocker dependency | ”ISSUE-001 blocks ISSUE-002” |
| implements | Implements a spec | ”ISSUE-001 implements SPEC-001” |
| parent-child | Epic/subtask hierarchy | ”ISSUE-010 is parent of ISSUE-011” |
| related | Contextual connection | ”ISSUE-001 related to ISSUE-005” |
| discovered-from | Found during implementation | ”ISSUE-020 discovered from ISSUE-015” |
Creating Dependencies
Relationships Documentation
Learn more about relationship types and graph-based planning
Hierarchical Organization
Issues can be organized hierarchically for complex work:- Break epics into manageable tasks
- Organize related work items
- Track progress on large features
- Enable agent handoffs between subtasks
Priority Levels
Issues use a 0-4 priority scale (same as specs):Priority Levels
Priority Levels
- 0 - Critical (highest priority)
- 1 - High
- 2 - Medium (default)
- 3 - Low
- 4 - Lowest
- Execution order - Combined with topological ordering of dependencies
- Ready queue - Higher priority issues surface first
- Agent selection - Agents claim highest priority ready work
Storage and Versioning
Issues are stored in three synchronized layers:Markdown Files (.md)
Markdown Files (.md)
Purpose: Human-editable interface
- Located in
.sudocode/issues/ - YAML frontmatter + markdown body
- Edit directly or via CLI
- Synced to JSONL automatically
JSONL File (issues.jsonl)
JSONL File (issues.jsonl)
Purpose: Source of truth, git-tracked
- One JSON object per line
- Contains all issue data
- Committed to version control
- Used for distribution via git
SQLite Cache (cache.db)
SQLite Cache (cache.db)
Purpose: Fast queries and relationships
- Rebuilt from JSONL after git pull
- Enables efficient graph queries
- Not committed to git
- Auto-synced from JSONL
Git-Native: Issues are version-controlled alongside code. Track work history, see who did what, and understand evolution over time.
Best Practices
When to Create an Issue
✅ Good candidates for issues
✅ Good candidates for issues
- Concrete implementation tasks
- Bug fixes with clear reproduction steps
- Work that can be completed in one session
- Tasks scoped for a single agent or developer
- Subtasks of a larger spec or epic
- Actionable items with clear acceptance criteria
❌ Not good candidates for issues
❌ Not good candidates for issues
- Strategic decisions (create a spec instead)
- Vague ideas without clear implementation path
- Work requiring multiple independent components
- High-level requirements (should be specs)
Writing Effective Issues
Scoping Issues for Agents
Issues should be scoped to what an agent can complete in one focused session:✅ Well-scoped
- “Implement POST /api/auth/login endpoint”
- “Fix token expiration validation bug”
- “Add unit tests for user service”
- “Update API documentation for auth endpoints”
❌ Too broad
- “Build authentication system” (epic, not issue)
- “Improve performance” (too vague)
- “Refactor codebase” (too large)
- “Add features” (not specific)
CLI Commands
Quick reference for working with issues:Complete CLI Reference
See full documentation for all issue commands and options
Agent Workflows
Claiming and Executing Work
Agents use issues to coordinate work:Handling Blocked Work
When an issue is blocked:Common Workflows
Creating Issues from a Spec
Converting a Bug Report to an Issue
Add reproduction steps
Edit
.sudocode/issues/ISSUE-001.md to add:- Steps to reproduce
- Expected behavior
- Actual behavior
- System information

