Skip to content

Migrate darrow-tickets-github mechanics to Python + uv #178

Description

@BjRo

Parent: #168

Outcome

Migrate darrow-tickets-github's GitHub Issues facade to Python + uv and make its filesystem, subprocess, JSON, and native-Windows behavior explicit.

Priority

4 of 14 remaining plugins. It is a bounded single-provider CLI and establishes the wrapped-CLI pattern before the larger Git and review plugins.

Scope

Migrate the substantial mechanics in bin/ticket while retaining the gh CLI as the authenticated provider boundary. Preserve skill authority and all current repository binding, duplicate detection, exact-label, relationship, and mutation safeguards.

Done criteria

  • Preserve every public command, option, output record, refusal, and exit code used by the four ticket skills.
  • Use argument-vector subprocess calls without shell interpolation and handle Windows paths and temporary files natively.
  • Retain read-before-write safeguards and exact repository/ticket identity checks; tests must not mutate live GitHub state.
  • Add the package to the Python inventory and meet strict typing, complexity, property-test, and separate coverage thresholds.
  • Validate mocked provider behavior plus fresh-plugin execution on Linux, macOS, and native Windows with gh available.
  • Keep all ticket skill evals passing and update documentation 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