Help us shape the future of Go! Take the 2026 Go Developer Survey

assay

module
v1.0.58 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 23, 2026 License: Apache-2.0

README

Assay

Assay is a methodology for running software delivery across a fleet of AI agents, with machine-checkable gates so you can tell what actually happened.

assay.guide · Video walkthroughs

Run engineering as a system

A governed operating model for agent-led engineering — an agent-operated delivery pipeline with a human-governance layer.

Read the Assay vision report for the direction from governed delivery to cells, continuing operations, quality, assurance and bounded machine judgment. The report distinguishes current foundations from unfinished integration and future work, and includes an evidence appendix and a designed PDF.

Overview

When agents do the work, generating code is the easy part; knowing whether it was done correctly is not. Assay makes each unit of work a self-contained, checkable artifact, and derives the project's status board from those artifacts rather than from a human's assertion.

It has four parts:

  • Briefs. A self-contained unit of scope and definition-of-done, with typed dependencies, a risk-derived review gate, and a Verify table that can actually be run. One brief is one reviewable piece of work. See docs/brief-template.md and docs/brief-rules.md.
  • Registers. Append-only FINDINGS, INTAKE, and RETRO logs. Entry IDs are slugs, not a counter, so they carry no contiguity guarantee — there is no sequence to have a gap in. What keeps nothing going missing quietly is what statusgen actually enforces: an entry that has ever existed on main but is absent from the working tree is a lint failure (a tombstone check against history), and duplicate IDs are rejected. Entries are tombstoned rather than deleted.
  • Streams and the board. Briefs live in streams and move through a defined lifecycle. The board, STATUS.md, is generated, never hand-edited.
  • Tools that enforce the above. statusgen lints the tree and generates the board. A separate reviewer identity, which the author cannot post as, keeps reviews attributable to someone other than the author. A trust gate names who the tooling will obey.

The board is derived from agent-authored artifacts, checked by the linter and re-verified independently. It is not measured from ground truth, and Assay does not claim it is. The aim is not a green dashboard but a set of gates that make a passing state hard to fake and easy to catch when the artifacts and the checks disagree.

Contents

Path What it is
docs/vision/ The public strategic vision, GitHub-rendered diagrams and matching PDF.
docs/ The methodology: the adoption runbook, the brief schema (rules, template), the lifecycle, the registers, the evidence bundle, and the telemetry posture (opt-in, off by default).
statusgen/ The generator and linter. Run cd statusgen && go run . --root ../examples/adopter-scaffold --lint.
plugins/assay/ The Assay plugin for Claude Code: methodology skills for adopting Assay, shaping specifications and authoring briefs (adopt, author-spec, author-brief).
examples/adopter-scaffold/ A populated streams and registers tree to copy from.
tools/freshness/ Freshness checks for tracked artifacts.
tools/desk/ The desk tooling, a Go submodule (github.com/medici-finance/assay/tools/desk). Importing one of its packages from another module? See how to pin it — a bare repo tag does not resolve.
Dockerfile Builds one combined Linux image with the desk-tools suite + statusgen on PATH, published to GHCR. See docs/docker.md.

Building and generated Cursor files

make build-all compiles every tracked Go module and emits every desk executable under tools/desk/dist/. On Windows, use pwsh -File scripts/build-windows.ps1 build-all; the target discovers the same tracked go.mod files. Neither target installs tools.

This repository consumes its canonical plugins/assay through generated .cursor skills, references, rules, and the bounded AGENTS.md bindings. After changing the canonical bundle, run from tools/desk:

go run ./cmd/deskinstall --harness cursor --bundle ../../plugins/assay --repo ../.. --forge github
go run ./cmd/deskinstall --harness cursor --bundle ../../plugins/assay --repo ../.. --forge github --check

Run the relevant tools/harnessgen generator first when changing its canonical inputs. CI checks the committed Cursor tree without regenerating it, and runs harnessgen tests on a fresh Windows checkout with explicit LF attributes. Release stamping refreshes the derived placement after canonical version stamps. Canonical component.yaml declarations are excluded from runtime skill copies; they retain one component owner in the source tree. See the Cursor install/upgrade contract.

Container image

The desk-tools suite and statusgen are published together as a combined Linux image at ghcr.io/medici-finance/assay/desk-tools (linux/amd64). Native macOS/Windows binaries are a separate artifact. See docs/docker.md for how to pull, run, and what's inside.

Adopting Assay

The install guide is docs/adopting-assay.md. It reads as a runbook for a coding agent to follow step by step, and covers three cases: a green-field repo, an existing suite of repos, and carving a unit out of a larger project.

Some steps are deliberately human-gated and never run autonomously: creating the reviewer GitHub App, choosing the trust-roster values, granting repo admin, and merging to main. Agents open draft PRs; a human reviews and merges.

License

Apache 2.0; see LICENSE and NOTICE. Before contributing, read CONTRIBUTING.md and CODE_OF_CONDUCT.md; report security issues per SECURITY.md.

Directories

Path Synopsis
comms module
containers
k8s command
YAML decoding adapter; reuse the repository's existing pinned codec.
YAML decoding adapter; reuse the repository's existing pinned codec.
deskcore module
forgeread module
gitquiet module
perfrec module
tools
forge-import-check command
check_env_imports is the source-only check shared by brief 37 row 18 and brief 38 row 13.
check_env_imports is the source-only check shared by brief 37 row 18 and brief 38 row 13.
desk module

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL