Experimental go migration of APM.
The Python-to-Go CLI migration is now landed but still intentionally keeps both implementations in the tree:
- The Python CLI remains the reference implementation and parity oracle.
- The Go CLI lives under
cmd/apmand can be built as a localapm-gobinary. - The Crane migration PR was merged in
githubnext/apm#91, and the
migration issue is marked
crane-completedin githubnext/apm#78. - The restored migration workflow verifies Python-vs-Go parity with
APM_PYTHON_BINset. Latest verified parity evidence reportsmigration_score=1,progress=1, and706/706parity tests passing. - The benchmark workflow follow-up in
githubnext/apm#93 uploads a
migration-benchmark-evidenceartifact with Python-vs-Go CLI timings.
This means Python unit tests and Go parity tests pass for the migration gate. That gate is not the same thing as claiming all historical Python integration, live-service, and benchmark coverage is now green for every workflow.
From the repository root:
go build -o ./dist/apm-go ./cmd/apmThen try the local binary:
./dist/apm-go --help
./dist/apm-go init --yesWhen the Python CLI is installed in the project virtual environment, run:
uv sync --extra dev
export APM_PYTHON_BIN="$PWD/.venv/bin/apm"
go test ./...
go test -json ./... | go run .crane/scripts/score.goAPM_PYTHON_BIN is required for the hard Python-vs-Go parity gate; without it,
Go-only tests are not completion evidence.
Maintainers can dispatch the migration workflow manually:
gh workflow run migration-ci.yml --repo githubnext/apm --ref mainAfter it runs, open the Migration Benchmarks job summary for the timing
table. The same run uploads the migration-benchmark-evidence artifact with
JSON and Markdown copies of the benchmark data. In the benchmark table, the
Go/Python ratio is the Go median duration divided by the Python median
duration: values below 1.00x mean Go is faster. Recent smoke benchmark
evidence for startup/help/init-style commands shows the Go CLI roughly
327x-370x faster than the Python CLI.