Skip to content

Rewrite start-issue CLI in Go with parity-first migration #34

Description

@dapi

Summary

Rewrite the start-issue CLI in Go while preserving its current user-facing behavior and workflow guarantees.

Goals

  • Make Go the primary implementation and distribution artifact.
  • Keep the current CLI contract stable unless a behavior change is intentional and documented.
  • Preserve the shell-oriented integrations with git, gh, and supported agent CLIs for the first migration phase.
  • Establish executable parity coverage before making Go the default runtime.

Scope

  • Create a Go module and a parallel CLI entrypoint.
  • Port argument parsing, configuration resolution, prompt rendering, repository detection, branch/worktree lifecycle, and agent launch adapters.
  • Reuse or adapt existing fixtures and fake CLIs for regression coverage.
  • Add a repeatable Bash/Rust-to-Go parity test harness covering help, invalid input, configuration precedence, dry-run output, worktree planning/reuse, and agent launch command generation.
  • Update build, install, release, and documentation flows once parity is proven.

Non-goals

  • Replacing git or gh with native protocol/API clients during the initial rewrite.
  • Broad product redesign as part of the runtime migration.
  • Removing the existing implementation before the Go CLI has demonstrated parity.

Suggested execution order

  1. Freeze the current behavior as executable tests.
  2. Scaffold a parallel Go CLI.
  3. Port pure configuration and prompt logic.
  4. Port repository, branch, and worktree orchestration.
  5. Port agent adapters and launch flow.
  6. Run systematic parity validation.
  7. Cut over distribution and releases after acceptance criteria are met.

Acceptance criteria

  • The Go CLI passes its unit and integration tests.
  • The parity suite covers the current critical workflows and documents intentional differences.
  • make test validates the relevant Go and compatibility test suites.
  • Installation and release workflows publish the Go binary successfully.
  • The default start-issue runtime is Go only after parity is established.

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