gitr 0.3.0

Async typed git CLI wrapper for agents and automation.
Documentation
# gitr — Current Tasks & Known Gaps

## In Progress

_None — this file is updated as work is claimed._

## Next Up

### Testing Infrastructure

- [x] **Hermetic unit tests** — Partial: `command` tests use shell scripts (no git binary).
  Full `ScriptedRunner`/`RecordingRunner` deferred to post-0.1.
- [x] **Parse-only unit tests** — Every parser has tests with sample output.
- [x] **Integration test un-ignore**`tests/repo.rs` now runs without `#[ignore]`;
  skips gracefully when git is not in PATH.

### API Evolution

- [x] **`GitApi` trait** — Deferred to 0.2.0; `ScriptedRunner` provides hermetic testability now.
- [x] **Typed porcelain parsers expansion**
  - `diff --shortstat``DiffShortstat`  - `log --format` with `\x1f` delimiters → `Vec<GitLogEntry>` (reserved)
  - `status -z` → null-delimited porcelain for paths with spaces (reserved)
- [ ] **Agent helpers** — Convenience methods for common agent workflows:
  - `is_merge_conflict() -> bool`
  - `is_nothing_to_commit() -> bool`
  - `is_transient_fetch_error() -> bool`
  - `has_untracked_files() -> bool`

### Missing Features (vs. omk needs)

- [ ] **`merge_tree` enhancement** — Parse `tree_oid` from merge-tree output correctly.
- [ ] **Conflict classification** — Distinguish content vs. rename vs. delete conflicts.
- [ ] **Transient fetch detection** — Parse stderr for network-related fetch failures.
- [ ] **Worktree validation**`open_worktree(path)` that validates the path is a
  registered worktree before returning a `Repository` handle.

### Documentation

- [x] **Module-level README.md** — Every `src/X/` module needs README with:
  - Purpose
  - Public API (types, traits, functions)
  - Consumers
  - Invariants
- [x] **SPEC.md** — Formal API contract and design decisions.
- [ ] **ROADMAP.md** — Staging for 0.2.0, 0.3.0, 1.0.0.

### Code Quality

- [ ] **Remove `#[allow(dead_code)]`**`GitLogEntry`, `GitRemote`, `stderr`/`exit_code`
  in `CommandOutput` should be used or removed.
- [ ] **`run_with_timeout` actually uses timeout** — Currently `_dur` is unused;
  `tokio::time::timeout` must be applied.
- [x] **Clippy lint policy in `src/lib.rs`** — Add `#![warn(...)]` for Tier 1 lints.

## Done

- [x] Initial crate scaffolding
- [x] CI pipeline (matrix, deny, coverage, semver)
- [x] Core types (`GitStatus`, `GitMergeResult`, `GitWorktree`)
- [x] Core parsers (`status`, `worktrees`, `branches`, `merge-tree`)
- [x] `Repository` API surface (open, branch, worktree, commit, push, fetch, rebase, merge, stash)
- [x] `CHANGELOG.md` with per-PR discipline