statusgen

The Go tool that reads a repo's stream documents and registers, and generates the single STATUS.md board. It is the machinery that turns convention into enforcement: gates a script runs, not rules a team is asked to remember.

What it does

statusgen parses each stream directory's README.md frontmatter and brief-row table, cross-applies findings to the streams they affect (flagging affected briefs as stale-knowledge), reads the two registers (FINDINGS.md and INTAKE.md), and emits a single aggregated view: one STATUS.md file with a priority-and-staleness-ranked Next-up batch, a cross-stream board, and a findings-intersection table.

It supports three modes:

CommandWhat it doesWhen to use it
go run ./statusgen Generate STATUS.md from sources. Writes the file. Locally, to read the board and see Next-up. Never commit on a branch.
go run ./statusgen --lint Run every source check and build the view internally, but never read or write STATUS.md. PR CI. Blocks PRs with malformed briefs, sequence gaps, or STATUS.md diffs.
go run ./statusgen --check Regenerate STATUS.md internally and compare byte-for-byte to the committed version. Drift check. Advisory — not a CI gate by default.

The single-writer model

Only one CI job — triggered on push to the default branch — ever commits STATUS.md. Every other context (PRs, local runs) only reads or lints. This eliminates the entire class of merge conflicts on a generated file and makes drift between sources and status immediately visible: if a PR's lint step passes but the merged main regen produces different output, something changed under the PR.

What it checks

In --lint mode, statusgen runs every source check:

Repo-agnostic

statusgen is a standalone Go module — stdlib plus yaml.v3, no other dependencies. It ships with the toolkit as a copyable directory. The module path (github.com/medici-finance/assay-toolkit/statusgen) means consumers can go get it as a package, or copy the directory into their own repo and place it wherever their layout prefers (./statusgen, tools/statusgen, etc.).

It was extracted from Medici's option-index-tracker repo on 2026-07-09, already written repo-agnostic. The source repo keeps its own vendored copy; whether this toolkit becomes the canonical home is an open decision (see the toolkit README).

← Back home