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 mainThat default manual run collects parity and benchmark evidence without treating known migration gaps as a CI failure. To run the deterministic hard completion gate, opt in explicitly:
gh workflow run migration-ci.yml --repo githubnext/apm --ref main -f enforce_completion=trueAfter 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. The benchmark includes
fixture-backed commands that read, write, execute, or fail against realistic APM
project state: apm.yml, apm.lock.yaml, installed apm_modules, local
.apm primitives, target directories, deployed prompt files, and sample source
files.