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.