golang/go

Zero `.github/workflows/`, zero `Makefile`, zero `.golangci.yml` — alint encodes Go's structural contract for the first time, in 31 testable rules.

Narrative
Encodes conventions enforced only by code-review discipline
Rules
64
Last revalidated
Engineering reference
README on GitHub · .alint.yml

Why this matters

golang/go is the convention-heavy minimal-tooling extreme of every repo we’ve inventoried. Where kubernetes/kubernetes ships 50 hand-rolled hack/verify-*.sh scripts and tokio-rs/tokio runs a 1,365-line GitHub Actions matrix, golang/go has:

This is the most tightly-curated minimal-tooling project in the catalogue. Russ Cox & co. enforce the structural contract by code- review etiquette; nothing else does.

Headline catch

The pitch isn’t “alint replaces N hand-rolled scripts” (golang/go has effectively zero) — it’s “alint encodes the unwritten Go conventions enforceable for the first time.”

The 3-line BSD license header, the 4-go.mod canonical layout, the .github/PULL_REQUEST_TEMPLATE “No Markdown” rule, the .gitattributes * -text line that’s load-bearing for Windows builds, the doc/next/6-stdlib/99-minor/<package>/<issue-number>.md filename grammar, the FIPS 140 module registry — none of these are checked by any script, anywhere in golang/go today. They are enforced by Russ Cox & co. in code review. alint makes them machine-checkable in 31 rules across one file.

A few of the most load-bearing:

Where alint earns its keep here

This is the fourth distinct positioning narrative in the case-study catalogue and the most extreme along the “convention-only” axis:

NarrativeStrongest data point
Replaces N hand-rolled validation scriptskubernetes (50→17), airflow (109 hooks→40 %), cpython (12 surfaces consolidated)
Catches conventions your pipeline assumes but doesn’t verifytokio (15 conventions, 0 scripts), uv (67-crate workspace), pnpm, react
Adds a structural floor on top of mature toolingtypescript, ruff, prettier
Encodes conventions enforced only by code-review disciplinegolang/go (31 conventions, 0 scripts, 0 workflows)

The pitch lands as: “you have a clear set of unwritten rules that everyone reviewing your code knows; alint writes them down, makes them testable, and lets the next contributor read them in one file instead of inferring them from the corpus.”

The same shape generalises to every tightly-curated, minimal- tooling project: the Linux kernel’s structural conventions, plan9, the suckless tools, every house-style internal codebase where “this is how we do it” is folklore rather than a config file.

golang/go is also a saturating signal for the v0.10+ rule-kind list: every gap surfaced here (import_gate, pair_hash, ordered_block, the registry_paths_resolve GitHub-issue sub- candidate) is already on the existing candidate list — the language- monorepo segment is approaching feature-completeness for v0.10.

Future story angles

The factual engineering writeup (tooling inventory, mapping table, gap catalogue, validation status footer) lives in the public alint repo at github.com/asamarts/alint/tree/main/examples/golang-go/README.md.