5.4 KiB
5.4 KiB
Task Completion Checklist
When completing a task in Aspen, follow these steps to ensure code quality and consistency.
Pre-Commit Checklist
1. Code Formatting
cargo fmt
- Formats all code according to
rustfmt.toml - Must pass before committing
- Check with:
cargo fmt -- --check
2. Linting
cargo clippy --all-targets --all-features
- Checks for common mistakes and anti-patterns
- Address all warnings
- For strict mode:
cargo clippy -- -D warnings
3. Type Checking & Compilation
cargo check
cargo build
- Ensure code compiles without errors
- Check both debug and release if performance-critical:
cargo build --release
4. Testing
# Run all tests
cargo test
# Run with output
cargo test -- --nocapture
# Run integration tests
cargo test --test sync_integration
- All existing tests must pass
- Add new tests for new functionality
- Integration tests for cross-component features
5. Platform-Specific Testing
iOS Simulator
cargo xtask ios-run
- Test on iOS Simulator (default: iPad Pro 12.9-inch M2)
- Verify Apple Pencil interactions if applicable
- Check logging output for errors
Physical Device (if iOS changes)
cargo xtask ios-device
- Test on actual iPad if Apple Pencil features are involved
- Verify Developer Mode is enabled
macOS Desktop
cargo run --package app --features desktop
- Test desktop functionality
- Verify window handling and input
6. Documentation
cargo doc --open
- Add doc comments to public APIs
- Update module-level documentation if structure changed
- Verify generated docs render correctly
- Update RFCs if architectural changes were made
Specific Checks by Change Type
For New Features
- Write RFC if architectural change (see
docs/rfcs/README.md) - Add public API documentation
- Add examples in doc comments
- Write integration tests
- Test on both macOS and iOS if cross-platform
- Update relevant memory files if workflow changes
For Bug Fixes
- Add regression test
- Document the bug in commit message
- Verify fix on affected platform(s)
- Check for similar bugs in related code
For Performance Changes
- Run benchmarks before and after
cargo bench - Document performance impact in commit message
- Test on debug and release builds
For Refactoring
- Ensure all tests still pass
- Verify no behavioral changes
- Update related documentation
- Check that clippy warnings didn't increase
For Dependency Updates
- Update
Cargo.toml(workspace or specific crate) - Run
cargo update - Check for breaking changes in changelog
- Re-run full test suite
- Test on both platforms
Before Pushing
Final Validation
# One-liner for comprehensive check
cargo fmt && cargo clippy --all-targets && cargo test && cargo xtask ios-run
Git Checks
- Review
git difffor unintended changes - Ensure sensitive data isn't included
- Write clear commit message (see code_style_conventions.md)
- Verify correct branch
Issue Tracking
- Update issue status (use GitHub issue templates)
- Link commits to issues in commit message
- Update project board if using one
Platform-Specific Considerations
iOS Changes
- Test on iOS Simulator
- Verify Info.plist changes if app metadata changed
- Check Entitlements.plist if permissions changed
- Test with Apple Pencil if input handling changed
- Verify app signing (bundle ID:
G872CZV7WG.aspen)
Networking Changes
- Test P2P connectivity on local network
- Verify gossip propagation with multiple peers
- Check CRDT merge behavior with concurrent edits
- Test with network interruptions
Persistence Changes
- Test database migrations if schema changed
- Verify data integrity across app restarts
- Check SQLite WAL mode behavior
- Test with large datasets
UI Changes
- Test with debug UI enabled
- Verify on different screen sizes (iPad, desktop)
- Check touch and mouse input paths
- Test accessibility if UI changed
Common Issues to Watch For
Compilation
- Missing feature flags for conditional compilation
- Platform-specific code not properly gated with
#[cfg(...)] - Incorrect use of async/await in synchronous contexts
Runtime
- Panics in production code (should return
Resultinstead) - Deadlocks with locks (use
parking_lotcorrectly) - Memory leaks with Arc/Rc cycles
- Thread spawning without proper cleanup
iOS-Specific
- Using
println!instead oftracing(doesn't work on iOS) - Missing
tracing-osloginitialization - Incorrect bundle ID or entitlements
- Not testing on actual device for Pencil features
When Task is Complete
-
Run final validation:
cargo fmt && cargo clippy && cargo test && cargo xtask ios-run -
Commit with good message:
git add . git commit -m "Clear, descriptive message" -
Push to remote:
git push origin <branch-name> -
Create pull request (if working in feature branch):
- Reference related issues
- Describe changes and rationale
- Note any breaking changes
- Request review if needed
-
Update documentation:
- Update RFCs if architectural change
- Update memory files if workflow changed
- Update README if user-facing change