Skip to content

Build1 publisher3 min readPublished

One Go test fails the build when the agent manifest stops matching the repo

GoVueKit puts a table of its subsystems in AGENTS.md and holds it with a Go test that fails when a package goes unmapped or a listed path disappears. That covers existence and names, not the descriptions.

The Engineer · Build desk

What happened

  • Asked for premium plans with a 14-day trial in a boilerplate whose internal/billing package it cannot see, a coding agent returns a second Stripe client, a second webhook route and a duplicate plans table.
  • GoVueKit's answer is AGENTS.md at the repository root, read natively by Codex and Cursor, and imported by CLAUDE.md so Claude Code reads the same file.
  • A Go test at cmd/server/agents_test.go fails when an internal/ package is missing from AGENTS.md, when the file points at a path that has gone, or when a named seam such as billing.Provider is renamed.

Compiled by The EngineerSomething wrong?How this is made

Why it matters

  • capability A checked-in map gives the tenth session and a colleague's first session the same starting knowledge, which the prompt that worked once never did.
  • constraint The guarantee stops at paths and symbol names, so a table whose description of a package is wrong still ships green and an agent will act on it.
  • cost Every new package under internal/ now owes a row in the table, and the team pays that in CI failures until someone writes it.
  • decision Choosing a starter kit for agent work turns into a CI question: does anything in the build break when the documentation stops being true?

Three conditions turn `cmd/server/agents_test.go` red: an `internal/` package that AGENTS.md does not mention, a path in AGENTS.md that no longer exists, and a renamed seam, since the seams are compile-time references and `billing.Provider` cannot silently become something else [8]. The first two are a directory listing compared against a document, and the third is enforced by the compiler.

The post states the payoff as "if make test is green, what the map says is true" [9]. Those three checks support something narrower: every package under `internal/` appears in the table, every path in the table resolves, and the named seams still compile [3]. A row claiming that billing handles proration when it does not will pass [3].

That narrowness matters less than it sounds, because the failure being targeted is an existence failure. The agent in the opening example wrote a second Stripe client because it did not know the first one was there [1]. "The agent did not invent an API; it invented work," the post said [2]. Existence is exactly what a listing check can prove, and pointing a cheap invariant at the one failure it can catch is good engineering.

For the invariant to transfer, one subsystem has to equal one directory in a namespace you can enumerate. Go's `internal/` convention gives that for free; the test is close to `ls` diffed against a Markdown table. Note also that the test file itself lives under `cmd/server/`, outside `internal/`, so at least one package in the repo is exempt from the enumeration [2]. In a codebase where a subsystem spans several directories, or where the boundary an agent needs is a class, the listing check goes green while the map still omits the thing that gets rebuilt.

A rule in the map holds only where a test checks it. Portable SQL is enforced by running 186 Go tests on both PostgreSQL and SQLite, which is 372 executions per full run [10][1]. The French and English catalogues are held in step by one of 48 frontend tests, which asserts that both define exactly the same keys [11]. The `organization_id` rule is checked from outside by 14 Playwright journeys against the real production binary, including a cross-tenant request that must return 404 [12].

The cost is per package, forever: add code under `internal/`, add the row, or CI fails [8]. The post is candid that this works partly because the kit is small, at 19 Go packages with the schema in one migration file and an architecture that walks in ten minutes [16]. "A map over a sprawling framework would be a book, and agents do not read books," it said [17]. It suggests judging any other starter by how much of it fits in a context window and whether anything fails the build when its documentation lies [18].

All of this comes from one post, written by the maker of the kit and published first on govuekit.dev [19]. It concedes two limits before anyone else raises them: the seams tell an agent where to write, not how well, and "Review stays your job" [15]. An agent will also implement a workflow your users never asked for, tests green all the way [14].

What to watch

  • Whether Codex and Cursor keep reading AGENTS.md natively, or diverge and force per-tool manifest copies.
  • Whether the mapping test is extended past internal/ to cover the rest of the 19 Go packages.
  • Whether anyone publishes the same test-enforced manifest on a repo large enough that the map no longer fits a context window.
Loading claim ledger
Loading source directory links
Loading share composer
Loading topic controls
Loading related stories