double-o 0.4.0

Context-efficient command runner for AI coding agents
Documentation
# Contributing to oo

Thank you for your interest in contributing! This guide covers the essentials.

## Workflow

1. **Fork and clone** your fork
2. **Create a branch**: `feature/issue-N-description` or `fix/issue-N-description`
3. **Make changes** with conventional commits: `feat(#N): description`, `fix(#N): description`, `chore: description`
4. **Run quality gates** (ALL must pass):
   ```bash
   cargo fmt --check
   cargo clippy -- -D warnings
   cargo test
   cargo tarpaulin --fail-under 70
   ```
5. **Open a PR** linking to a GitHub issue with `Fixes #N` in the body

## Code Style

- Edition 2024, Rust 1.85+
- Use `thiserror` for error types
- No `unwrap()` in library code (tests OK)
- File size: 500 lines hard cap, 300 lines ideal

## Testing

- TDD preferred — write tests before implementation
- 80%+ coverage for new code (enforced by `cargo tarpaulin`)
- Unit tests in-module (`#[cfg(test)]`)
- Integration tests in `tests/` using `assert_cmd`
- Network-dependent tests: mark `#[ignore]` with explanation

## Additional Guidelines

- Public API items get `///` doc comments
- Comments explain WHY, not WHAT
- No TODO/FIXME comments — open a GitHub issue instead
- Minimalist engineering: question necessity before creating

See [AGENTS.md](AGENTS.md) for complete project conventions.