Skip to content

Migrate darrow-review mechanics to Python + uv #182

Closed

Description

@BjRo

Parent: #168

Outcome

Migrate darrow-review's review routing, scope, provider, report, and result mechanics to Python + uv while preserving independent read-only review behavior.

Priority

8 of 14 remaining plugins. Its large parsing and subprocess surface should follow the Git migration pattern it consumes conceptually.

Scope

Migrate the substantial commands under bin/ while retaining external reviewer CLIs as provider boundaries and leaving review judgment in the skill/reviewer.

Done criteria

  • Preserve all commands, validated TSV formats, scope binding, route selection, report/result semantics, diagnostics, and exit codes.
  • Keep the plugin read-only against reviewed repositories and retain original/prior/current candidate binding across verification flows.
  • Use safe argument-vector subprocesses and cross-platform paths, encoding, temporary files, cancellation, and provider discovery.
  • Add deterministic tests for routing, quoted inputs, malformed records, context assembly, provider failures, and repair verification.
  • Register and lock the package and pass all strict Python quality gates.
  • Validate fresh copied-plugin execution on Linux, macOS, and native Windows with provider boundaries mocked or explicitly provisioned.
  • Keep review eval suites passing and update specs, docs, and matching manifest versions.

Migration blueprint

Use the implementation merged in PR #173 as the default blueprint for Python + uv plugin mechanics. Reuse its self-contained package layout, committed uv lock, runtime/development dependency separation, python-packages.txt inventory, Ruff and strict mypy gates, separate 95% line and branch coverage gates, and fresh copied-artifact validation. Extend that pattern with native-Windows fresh-artifact validation where this rollout requires Windows support. Document any plugin-specific deviation explicitly instead of introducing a competing convention.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions