5.4 KiB
5.4 KiB
Changelog: Requirements Persistence Feature
Summary
Enhanced the accumulative autonomous mode (--auto / default mode) to automatically persist requirements to a local .g3/requirements.md file.
Changes Made
1. Core Implementation (crates/g3-cli/src/lib.rs)
New Functions Added:
-
ensure_g3_dir(workspace_dir: &Path) -> Result<PathBuf>- Creates
.g3directory in the workspace if it doesn't exist - Returns the path to the
.g3directory
- Creates
-
load_existing_requirements(workspace_dir: &Path) -> Result<Vec<String>>- Loads requirements from
.g3/requirements.mdif the file exists - Parses numbered requirements (format:
1. requirement text) - Returns empty vector if file doesn't exist
- Loads requirements from
-
save_requirements(workspace_dir: &Path, requirements: &[String]) -> Result<()>- Saves accumulated requirements to
.g3/requirements.md - Creates
.g3directory if needed - Formats as markdown with numbered list
- Saves accumulated requirements to
Modified Functions:
run_accumulative_mode()- Now loads existing requirements on startup
- Displays loaded requirements to user
- Initializes turn number based on existing requirements count
- Saves requirements after each new requirement is added
- Shows save confirmation message
- Updated
/requirementscommand to show file location
2. Version Control (.gitignore)
- Added
.g3/directory to.gitignore - Prevents accidental commit of local requirements
- Users can opt-in to version control if desired
3. Documentation
New Documentation:
docs/REQUIREMENTS_PERSISTENCE.md- Comprehensive guide to the requirements persistence feature
- Usage examples and commands
- File format specification
- Use cases and best practices
- Comparison with traditional autonomous mode
Updated Documentation:
README.md- Added requirements persistence section to "Getting Started"
- Highlighted key benefits (resume, review, share)
- Added example showing
.g3/requirements.mdusage
4. Testing
test_requirements.sh- Simple test script for manual verification
- Creates test directory and provides instructions
User-Facing Changes
New Behavior
-
Automatic Saving
- Every requirement entered is immediately saved to
.g3/requirements.md - User sees confirmation:
💾 Saved to .g3/requirements.md
- Every requirement entered is immediately saved to
-
Automatic Loading
- On startup, G3 checks for existing
.g3/requirements.md - If found, loads and displays requirements
- Shows:
📂 Loaded N existing requirement(s) from .g3/requirements.md
- On startup, G3 checks for existing
-
Enhanced
/requirementsCommand- Now shows file location in output
- Format:
📋 Accumulated Requirements (saved to .g3/requirements.md):
-
Session Resumability
- Users can exit and resume work later
- Requirements persist across sessions
- Turn numbering continues from previous session
File Structure
my-project/
├── .g3/
│ └── requirements.md # NEW: Accumulated requirements
├── logs/ # Existing: Session logs
└── ... (project files)
Requirements File Format
# Project Requirements
1. First requirement
2. Second requirement
3. Third requirement
Benefits
- Persistence: No data loss if G3 crashes or is interrupted
- Transparency: Always know what G3 is working on
- Resumability: Pick up where you left off
- Documentation: Requirements serve as project documentation
- Collaboration: Share requirements with team members
- Auditability: Track what was requested and when
Backward Compatibility
- ✅ Fully backward compatible
- ✅ No breaking changes to existing functionality
- ✅ Works seamlessly with existing projects
- ✅ Graceful handling of missing
.g3directory - ✅ Error handling for file I/O issues
Error Handling
- If
.g3/requirements.mdcannot be read: Shows warning, continues with empty requirements - If
.g3/requirements.mdcannot be written: Shows warning, continues with in-memory requirements - Non-blocking errors don't interrupt workflow
Testing Checklist
- Build succeeds without errors
- Manual test: Create new requirements in fresh directory
- Manual test: Resume session with existing requirements
- Manual test:
/requirementscommand shows file location - Manual test: Requirements file format is correct
- Manual test: Error handling for permission issues
- Manual test:
.g3directory is created automatically - Manual test:
.g3directory is ignored by git
Future Enhancements
Potential improvements for future versions:
- Requirement status tracking (pending, in-progress, completed)
- Requirement dependencies and ordering
- Requirement templates and snippets
- Integration with issue trackers
- Requirement validation and linting
- Export to other formats (JSON, YAML, etc.)
- Requirement search and filtering
- Requirement history and versioning
Migration Guide
No migration needed! The feature works automatically:
- Update to the new version
- Run
g3in any directory - Enter requirements as usual
- Requirements are automatically saved to
.g3/requirements.md
Related Files
crates/g3-cli/src/lib.rs- Core implementation.gitignore- Version control exclusiondocs/REQUIREMENTS_PERSISTENCE.md- Feature documentationREADME.md- Updated getting started guidetest_requirements.sh- Test script