diff --git a/.story_kit/stories/upcoming/60_status_based_directory_layout.md b/.story_kit/stories/upcoming/60_status_based_directory_layout.md new file mode 100644 index 0000000..18c53b6 --- /dev/null +++ b/.story_kit/stories/upcoming/60_status_based_directory_layout.md @@ -0,0 +1,74 @@ +--- +name: Status-Based Directory Layout +test_plan: pending +--- + +# Story 60: Status-Based Directory Layout + +## User Story + +As a developer, I want work items organized by pipeline status rather than by type, with a unified naming convention, so the directory structure reflects what stage everything is at. + +## Current Layout (mixed) + +``` +.story_kit/ + current/ + stories/ + upcoming/ + archived/ + bugs/ + archive/ + spikes/ + specs/ +``` + +## New Layout + +``` +.story_kit/ + upcoming/ ← all work items waiting to start + current/ ← being coded + qa/ ← being reviewed by QA agent + merge/ ← being merged to master + archived/ ← done + specs/ ← long-lived project info (not a work item) + worktrees/ ← agent worktrees (unchanged) + project.toml ← config (unchanged) +``` + +## Naming Convention + +All work items use: `{number}_{type}_{slug}.md` + +``` +upcoming/57_story_foo_bar_blah.md +upcoming/58_spike_a_b_c.md +upcoming/59_bug_flappapa.md +``` + +Types: `story`, `bug`, `spike`. The number is the primary identifier, auto-incremented across all types. You say "story 57", "bug 59", etc. + +## Acceptance Criteria + +- [ ] Migrate existing `stories/upcoming/` → `upcoming/`, renaming files to include `_story_` type prefix +- [ ] Migrate existing `stories/archived/` → `archived/`, renaming files to include `_story_` type prefix +- [ ] Migrate existing `bugs/` → `archived/` (for closed) or `upcoming/` (for open), renaming to include `_bug_` type prefix +- [ ] Remove old `stories/`, `bugs/` directories +- [ ] `create_story`, `create_bug` MCP tools use the new naming convention and write to `upcoming/` +- [ ] `start_agent` moves from `upcoming/` to `current/` +- [ ] `accept_story` and `close_bug` move from `current/` (or `merge/`) to `archived/` +- [ ] `find_story_file()` and all path references updated to search by status dirs +- [ ] `next_story_number()` scans all status dirs for the highest number across all types +- [ ] All existing tests updated for new paths +- [ ] Integration test: full lifecycle through upcoming → current → archived + +## Supersedes + +- Story 51 (Deterministic Spike Lifecycle) — folded into this story's naming convention + +## Out of Scope + +- QA and merge pipeline automation (just create the empty directories) +- Frontend changes to reflect new layout +- Spike-specific MCP tools (create_spike, archive_spike) — follow-up