Skip to content

fix: move Darrow state into user directories - #238

Merged
BjRo merged 6 commits into
mainfrom
fix/225-review-artifact-lifecycle
Sep 24, 2026
Merged

BjRo merged 6 commits into
mainfrom
fix/225-review-artifact-lifecycle

Conversation

@BjRo

@BjRo BjRo commented Sep 24, 2026

Copy link
Copy Markdown
Owner

Why

Closes #225. Review artifacts stored under repository Git directories have an unclear lifetime. Put Darrow state under one user-local root and make review cleanup explicit. This also updates the default UV project-environment location from the already implemented #226.

What changed

  • Store review runs under ~/.darrow/reviews/ on macOS/Linux or %LOCALAPPDATA%\Darrow\Reviews\ on Windows, with repository/worktree buckets, unique runs, and private permissions where supported. Keep DARROW_REVIEW_STATE_DIR as an absolute-path override.
  • Add 30-day dependency-aware pruning and pin/unpin commands. Preserve review evidence referenced by newer runs or pinned by a user; retain blocked review results so they can be pinned.
  • Move the default UV project environment for all 12 registered Python plugins to ~/.darrow/cache/ or %LOCALAPPDATA%\Darrow\Cache\. Preserve DARROW_CACHE_DIR; leave UV_CACHE_DIR under UV or caller control.
  • Update the review invariant, Python quality spec, plugin documentation, and colocated evals for the new paths and cleanup rules.

Verification

  • bun run check:python passed across all 12 packages; darrow-review: 229 tests, 96.82% line and 95.73% branch coverage.
  • bun run lint, bun run check:docs, bun run lint:ts, bun run typecheck, and git diff --check passed.
  • Eval runner and fixture tests: 36 passed; bun run test:eval-runner-compatibility: 5 passed.
  • Review backend frozen fresh-install test passed for all 7 entrypoints. Skill inspection passed. Focused Codex code-review-empty-diff live eval passed task and activation (1/1); no matched control was required for this focused run.
  • Claude live evals were attempted: implicit empty-diff failed activation, and explicit reviewer-route-unavailable activated the skill but did not produce its required artifact commands. These are open skill-behavior verification limits.
  • The changed launcher scripts are Python, so bash and /bin/bash script checks do not apply.

Review notes

No migration runs. Files in previous Git and UV locations remain untouched. Review evidence is retained until eligible for 30-day pruning; cache files are disposable and managed separately. Windows behavior has unit coverage with simulated platform paths and locking; it was not run on a native Windows host. Review darrow_review/storage.py and the eval runner state isolation for the highest-risk changes.

Checklist

  • I have read and followed CONTRIBUTING.md, including the contribution licensing terms.
  • I added or updated the applicable invariant before implementation, or this change does not affect a capability invariant.
  • I added or updated colocated evals, or this change does not affect skill behavior.
  • I confirmed that each changed plugin remains self-contained, or this change does not affect plugin content.
  • I ran bun run check:python, or this change does not affect registered Python packages or their repository quality infrastructure.

Keep review evidence outside Git directories with bounded retention
and dependency-preserving cleanup. Place locked UV environments in
the sibling user cache. Leave existing files in place.
@BjRo
BjRo merged commit 18bda90 into main Sep 24, 2026
182 checks passed
@BjRo
BjRo deleted the fix/225-review-artifact-lifecycle branch September 24, 2026 10:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

double check location of review results

1 participant