Use Go 1.27+, Python 3.11+ and Node.js 22.12+. Exact frontend and Go dependencies are locked in web/package-lock.json and go.sum.
npm ci --prefix web
npm run build --prefix web
go test . ./cmd/checkpoint ./internal/engine -count=1
go vet . ./cmd/checkpoint ./internal/engine
python -m unittest discover -s sdk/tests
npm test --prefix webSet CHECKPOINT_TEST_PYTHON to the desired interpreter for Go integration tests. Set PYTHONPATH=./sdk for SDK tests, or install ./sdk in that interpreter first. The integration suite starts real workers and controlled loopback destinations. Run go test -race . ./cmd/checkpoint ./internal/engine -count=1 on Linux; the verified local Linux run used a Debian container.
For UI development, start the engine on port 3038 and run npm run dev --prefix web. Vite serves port 3039 and proxies API calls to the engine. Production embeds the built UI into the binary and uses one origin. Build the UI before Go builds or tests: assets.go requires web/dist to exist.
python scripts/release.py --go /path/to/goThis builds the frontend, SDK wheel, Windows x64 ZIP and Linux x64 tarball, then writes SHA256SUMS into dist. --skip-web-build is for a deliberately prebuilt interface. The script does not publish. Build environments need pip/setuptools for the wheel and npm for the frontend. The binaries use CGO_ENABLED=0.
The platform archives include the binary, examples, wheel, README and ordinary source/dependency notices. The binary embeds its own runtime and interface. Keep source archives separate from runtime history. Native clean-install checks are required before advertising a platform; cross-compilation alone is insufficient.
Run the fictional supplier example and its successful input branch locally, then explicitly capture those IDs:
python scripts/capture_demo.py --original ORIGINAL_ID --child CHILD_IDReview the selected JSON and artifacts. The capture normalizes code locations and excludes session credentials. It is not a generic secret-redaction tool. Build with VITE_RECORDED_DEMO=true; the same workbench reads demo.json and disables execution and export saving. The captured inspection inventory and file previews remain readable. On PowerShell set $env:VITE_RECORDED_DEMO='true' before npm run build --prefix web and remove it afterward. GitHub Pages can serve the resulting static directory.
scripts/benchmark.py defines the workload and writes a raw JSON receipt. It compares an equivalent one-process Python baseline with instrumented record/replay, reports storage growth and samples local API latency. See performance for the method, environment and limits.
The container test image installs the optional HTTPX extra in its own Python environment. Its full Go race suite includes the real client/broker/offline reproduction test. To exercise all Python transport regressions locally, install the extra before python -m unittest discover -s sdk/tests -v; a core-only environment skips those optional tests.
Build the local application and recorded viewer separately. Both use web/dist; do not run a viewer build while native packages are being compiled. The release script checks the local-build marker and verifies that the frontend files stay unchanged through packaging. The extracted-package smoke also checks that its embedded interface is the local app.