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.

Activity

  1. dapi commented on Jul 22, 2026

    @dapi
    OwnerAuthor

    Feature package for this issue has been created: memory-bank/features/FT-016/brief.md. It is currently at the bootstrap gate: the Go release distribution matrix needs an explicit product/release decision before design and implementation planning can proceed.

  2. dapi commented on Jul 22, 2026

    @dapi
    OwnerAuthor

    The feature package is now Problem Ready, Solution Ready, and Plan Ready. The accepted Go release contract is DL-01/DL-02: GoReleaser builds Linux amd64/arm64, macOS amd64/arm64, and Windows amd64 assets; Linux/macOS use verified automatic install/update, while Windows documents manual install/update. Downstream documents: design.md and implementation-plan.md.

  3. dapi commented on Jul 22, 2026

    @dapi
    OwnerAuthor

    Implementation PR: #36

    Feature package: memory-bank/features/FT-016/ (brief, design, and implementation plan are included in the PR).

    This is the v2.0.0 Go cutover: repository-owned Bash/Bats runtime and test surfaces are removed; CI validates Go tests and cross-builds.

  4. dapi commented on Aug 4, 2026

    @dapi
    OwnerAuthor

    Закрыто: Go-миграция завершена.

    Подтверждение:

    • Go стал основным runtime и distribution artifact.
    • Unit/integration/parity tests проходят.
    • make test и sandbox E2E проходят в release workflow.
    • Опубликован релиз v2.0.1 с platform-specific Go binaries и checksums.
    • Локальная установка проверена как start-issue v2.0.1.

    Parity сравнивает Go с сохранённым Bash baseline; отдельной Rust-реализации в репозитории не было.

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