Phase 9: Go Port

Phase 9: Go Port (Future)

Objective

Rewrite the association engine in Go once the Python version has proven the design.

Why Go

Go produces a single static binary — no interpreter, no virtual environment, no runtime dependencies. It is Kernighan’s language (co-author of The Go Programming Language), built for the same clarity and composability that makes awk and pipes effective. A Go binary deploys by copying one file.

Approach

The port reuses the same YAML data format from Phase 8. No schema changes. The Python version defines the contract; Go implements it with different tradeoffs (compile-time type safety, single binary distribution, goroutine concurrency).

The core concepts transfer directly: structs replace classes, maps replace dicts, slices replace lists. The associate() logic is identical — two maps, an inverse lookup, a deduplication guard.

When to Start

Not before the Python version has:

  • Stable data files that have been queried for real work

  • A proven API contract (endpoints, response shapes, error codes)

  • At least one month of use revealing what the design gets wrong

Build the right thing in Python first. Build the fast thing in Go second.