**Target Audience:** Large Language Models (LLMs) acting as Senior Engineers.
**Goal:** To maintain long-term project coherence, prevent context window exhaustion, and ensure high-quality, testable code generation in large software projects.
---
## 1. The Philosophy
We treat the codebase as the implementation of a **"Living Specification."**
Instead of ephemeral chat prompts ("Fix this", "Add that"), we work through persistent artifacts.
***Stories** define the *Change*.
***Specs** define the *Truth*.
***Code** defines the *Reality*.
**The Golden Rule:** You are not allowed to write code until the Spec reflects the new reality requested by the Story.
---
## 2. Directory Structure
When initializing a new project under this workflow, create the following structure immediately:
```text
project_root/
.living_spec
|-- README.md # This document
├── stories/ # The "Inbox" of feature requests.
├── specs/ # The "Brain" of the project.
│ ├── README.md # Explains this workflow to future sessions.
│ ├── 00_CONTEXT.md # High-level goals, domain definition, and glossary.
***Action:** Run compilation and make sure it succeeds without errors. Fix warnings if possible. Run tests and make sure they all pass before proceeding. Ask questions here if needed.
***Action:** Ask the user to accept the story. **Wait for user acceptance.**
***Action:** When the user accepts:
1. Mark the acceptance criteria as complete (change `[ ]` to `[x]`)
2. Move the story file to `stories/archive/` (e.g., `mv stories/XX_story_name.md stories/archive/`)
3. Commit both changes to the feature branch
4. Perform the squash merge: `git merge --squash feature/story-name`
5. Commit to master with a comprehensive commit message
6. Delete the feature branch: `git branch -D feature/story-name`
***Important:** Do NOT mark acceptance criteria as complete before user acceptance. Only mark them complete when the user explicitly accepts the story.
When the LLM context window fills up (or the chat gets slow/confused):
1.**Stop Coding.**
2.**Instruction:** Tell the user to open a new chat.
3.**Handoff:** The only context the new LLM needs is in the `specs/` folder.
**Prompt for New Session:* "I am working on Project X. Read `specs/00_CONTEXT.md` and `specs/tech/STACK.md`. Then look at `stories/` to see what is pending."
---
## 5. Setup Instructions (For the LLM)
If a user hands you this document and says "Apply this process to my project":
1.**Analyze the Request:** Ask for the high-level goal ("What are we building?") and the tech preferences ("Rust or Python?").