# Requirements Persistence in Accumulative Mode ## Overview In accumulative autonomous mode (`--auto` or default mode), G3 now automatically persists your requirements to a local `.g3/requirements.md` file. This provides several benefits: 1. **Persistence across sessions**: Your requirements are saved and can be resumed later 2. **Version control friendly**: Requirements are stored in a readable markdown format 3. **Easy review**: You can view and edit requirements directly in the file 4. **Transparency**: Always know what G3 is working on ## How It Works ### Automatic Saving When you run G3 in accumulative mode: ```bash g3 ``` Each requirement you enter is automatically: 1. Added to the accumulated requirements list 2. Saved to `.g3/requirements.md` in your workspace 3. Used for the autonomous implementation run ### File Format The `.g3/requirements.md` file uses a simple numbered list format: ```markdown # Project Requirements 1. Create a simple web server in Python with Flask 2. Add a /health endpoint that returns JSON 3. Add logging for all requests ``` ### Loading Existing Requirements When you start G3 in a directory that already has a `.g3/requirements.md` file, it will: 1. Automatically load the existing requirements 2. Display them on startup 3. Continue numbering from where you left off Example output: ``` 📂 Loaded 3 existing requirement(s) from .g3/requirements.md 1. Create a simple web server in Python with Flask 2. Add a /health endpoint that returns JSON 3. Add logging for all requests ============================================================ 📝 Turn 4 - What's next? (add more requirements or refinements) ============================================================ requirement> ``` ## Commands ### View Requirements Use the `/requirements` command to view all accumulated requirements: ``` requirement> /requirements 📋 Accumulated Requirements (saved to .g3/requirements.md): 1. Create a simple web server in Python with Flask 2. Add a /health endpoint that returns JSON 3. Add logging for all requests ``` ### Other Commands - `/help` - Show all available commands - `/chat` - Switch to interactive chat mode (preserves requirements context) - `exit` or `quit` - Exit the session ## File Location The requirements file is stored at: ``` /.g3/requirements.md ``` Where `` is your current working directory. ## Version Control The `.g3/` directory is automatically added to `.gitignore`, so your requirements won't be committed to version control by default. If you want to track requirements in git, you can: 1. Remove `.g3/` from `.gitignore` 2. Commit the `.g3/requirements.md` file This can be useful for: - Sharing requirements with team members - Tracking requirement evolution over time - Documenting project goals ## Manual Editing You can manually edit `.g3/requirements.md` if needed. G3 will parse the file and load any numbered requirements (format: `1. requirement text`). **Note**: Make sure to maintain the numbered list format for proper parsing. ## Error Handling If G3 cannot save or load requirements, it will: 1. Display a warning message 2. Continue operating with in-memory requirements 3. Not interrupt your workflow Example: ``` ⚠️ Warning: Could not save requirements to .g3/requirements.md: Permission denied ``` ## Use Cases ### Resuming Work ```bash # Day 1: Start a project cd my-project g3 requirement> Create a REST API with user authentication # ... work happens ... exit # Day 2: Resume work cd my-project g3 # G3 automatically loads previous requirements requirement> Add password reset functionality ``` ### Reviewing Progress ```bash # Check what you've asked G3 to build cat .g3/requirements.md # Or use the command within G3 requirement> /requirements ``` ### Sharing Requirements ```bash # Share requirements with a team member cp .g3/requirements.md requirements-backup.md # Or commit to version control git add .g3/requirements.md git commit -m "Add project requirements" ``` ## Implementation Details ### Functions - `ensure_g3_dir()` - Creates `.g3` directory if it doesn't exist - `load_existing_requirements()` - Loads requirements from `.g3/requirements.md` - `save_requirements()` - Saves requirements to `.g3/requirements.md` ### File Structure ``` my-project/ ├── .g3/ │ └── requirements.md # Accumulated requirements ├── logs/ # Session logs (existing) └── ... (your project files) ``` ## Benefits 1. **No data loss**: Requirements are persisted even if G3 crashes or is interrupted 2. **Transparency**: Always know what G3 is working on 3. **Resumability**: Pick up where you left off in any session 4. **Documentation**: Requirements serve as project documentation 5. **Collaboration**: Share requirements with team members 6. **Auditability**: Track what was requested and when ## Comparison with Traditional Autonomous Mode | Feature | Accumulative Mode | Traditional `--autonomous` | |---------|------------------|---------------------------| | Requirements file | `.g3/requirements.md` | `requirements.md` (root) | | Auto-save | ✅ Yes | ❌ No (manual edit) | | Interactive | ✅ Yes | ❌ No | | Incremental | ✅ Yes | ❌ No (one-shot) | | Resume support | ✅ Yes | ⚠️ Manual | ## Future Enhancements Potential future improvements: - Requirement status tracking (pending, in-progress, completed) - Requirement dependencies and ordering - Requirement templates and snippets - Integration with issue trackers - Requirement validation and linting