Skip to main content
sourceSource: corpus/docs/reference/cheatsheet.mdModified: 2026-06-23

corpus Reference

Works today — plain markdown plus your agent; no corpus tooling required.

One page of lookup tables: labels, results, verification methods, artifact homes, the loop, and the check ids. Definitions live in the linked pages; the exact file formats live in the kit templates (templates/) and are never restated here.

The loop

Pull → (Inventory) → Spec → (Change Plan) → Task → Run → Review → Close
        brownfield          structural
StepWhat it produces
Pullan intake file — the upstream ticket, captured verbatim
Inventory (conditional)a map of existing code before structural/brownfield work
Specintent, non-goals, requirements with Verify with: lines
Change Plan (conditional)how the codebase changes while named behavior provably survives
Taska bounded task packet an agent can run
Runthe change, on its own branch, plus an agent run summary
Reviewa review packet — requirement coverage, evidence, exceptions
Closemerge or block, board update, findings saved

Not every task needs every step — the skip rules and per-shape flows are in the basic workflow.

IDs and labels

PrefixArtifactExample
SPEC-specSPEC-auth-refresh
TASK-task packetTASK-auth-refresh-1
REVIEW-review packetREVIEW-auth-refresh-1
FINDING-findingFINDING-rotated-tokens
INV-inventoryINV-billing
CHANGE-change planCHANGE-billing-split

Requirement labels inside a spec:

LabelMeaningWhere
AC-NNNacceptance criterion — a verifiable requirementany spec
C-NNNconstraint — restricts how requirements may be metSOL form
I-NNNinvariant — a property that must keep holdingSOL form
IF-NNNinterface — a declared boundarySOL form
Q-NNNopen question, optionally [blocking]SOL form

A file's identity is its frontmatter type:, never its filename — see artifact formats. SOL is the optional structured-requirements notation (format: sol) — see structured requirements.

Review results

One result per requirement row in the review packet (internally: verdicts).

ResultMeaning
PassVerified — pasted output, a CI link, or a named human's recorded observation (manual method) sits in the Evidence cell.
FailVerified, and the requirement is not met.
UnverifiedNo evidence. Every empty Evidence cell reads as Unverified, never Pass.
BlockedCannot be verified until something else is resolved.

Lifecycle results, used in advanced workflows to qualify an earlier result:

ResultMeaning
WaivedA Fail or Unverified explicitly accepted by a named human, with reason and expiry.
StaleA prior Pass whose evidence predates a change to the requirement or the code it exercised — see drift.
ContradictedTwo pieces of evidence disagree, or the code disagrees with the requirement.

The evidence rules and exception triggers are in reviewing output.

Verification methods

What kind of evidence backs a requirement's Verify with: line (internally: proof types).

MethodOne line
testAn executable test exercises the behavior (unit/integration/e2e are scopes of this one method).
staticType-check, lint, build, or static analysis over the code as written.
contractA boundary check against a declared interface — API schema, consumer contract.
propertyA property-based check over generated inputs; strong for invariants.
modelAn exhaustive or model-checked argument; the strongest, and the rarest.
perfA measured benchmark against a stated budget.
securityA scanner or a targeted security test against an attack class.
manualA named human checked it and recorded what they saw — always with a reason and the observation itself.
monitorA production probe or alert observes the behavior after merge.

Artifacts and where they live

ArtifactTierHome in the workspace
intakecore (recommended for tracker-originated work)intake/
speccorespecs/<feature>/spec.md
task packetcoretasks/
review packetcorereviews/
findingcorefindings/
status boardcorestatus.md
inventorycore when the work is brownfieldinventory/
change plancore when the work is structuralchange-plans/
adradvanceddecisions/, numbered
audit · bug · research · rfc · prd · threat-model · release-noteadvancedco-located in specs/<feature>/

The full layout, both naming depths, and the code-repo boundary are in where files live; every format is catalogued in artifact formats.

Checks — the quick list

Common mistakes to check for in a spec — plus the two change-plan checks. Level: checklist today; toolable — corpus-cli's corpus check implements this list. Full descriptions, the honesty legend, and the SOL catalogue are in checks.

IDNameSeverity
C001unique-ids — every requirement ID appears exactly oncehard error
C002duplicate-id — no other file claims the same id:hard error
C003verify-with — every requirement carries a Verify with: linehard error
C004one-strength-word — exactly one of must / must not / should / should not / maywarning
C005non-goals-present — a non-empty Non-goals section existswarning
C006open-questions-present — an Open questions section existswarning
C007no-tbd-at-ready — no TBD/TODO/unresolved question at status: readyhard error
C008sources-named — frontmatter sources: names at least one originwarning
C009broken-source-link — every named source resolveshard error
C010preserves-refs-resolve — change plan only: every preserved id resolveshard error
C011waves-present — change plan only: migration/rewrite/schema-change has waveswarning
C012coverage — review packet only: in-scope ids covered, no orphan rows (non-draft spec)warning
C013verify-evidence-binding — review packet only: a structured verify block's cmd matches the requirement's named command + result=pass (non-draft spec)warning
C014do-not-change-touched — review packet only: a changed file matches a task's ## Do not change entry (distinct from out-of-scope drift)warning
C015citation-resolves — spec only: an inline [[KEY]] citation resolves to a matching <a id="KEY"> anchor in the named sources.md (skips when no sources.md is resolvable)warning
C016pass-needs-evidence — review packet (gate path): a Pass coverage row with an empty Evidence cell blocks (the reconcile path surfaces it advisorily)hard error
C017orphaned-reference — workspace: a bundled .agents/skills/<name>/references/<file> named nowhere in its SKILL.md (orphan direction only)warning

Packet checks (checklist level): non-empty-paste — a completion claim binds to pasted output or a CI link; no-open-critical — nothing closes with an open blocking question; trigger-coverage — the Human attention section considered every exception class.

Appendix — reference values (producer note)

This appendix exists for producers of corpus tooling and documentation, not for adopters. The closed sets have exact sizes that tooling and fixtures reconcile against — the same eight rows, with their member lists, live in checks/README.md: block types (SOL form) 5 · strength words 5 · review results 7 (4 core + 3 lifecycle) · verification methods 9 · loop steps 6 (+ 2 conditional) · lifecycle steps (advanced) 9 · improve operations 10 · check layers 5 (S/P/M/V/O). These registry rows — the counts with their member lists — live in exactly two places: here and there. A change to any set updates both, and the fixtures, in one commit. (The numeral-bearing model names — the six-step loop, the nine-step lifecycle — are names, not registry copies.)

  • The basic workflow — the loop, per-shape flows, skip rules.
  • Checks — every check in full, with the honesty legend.
  • Glossary — every term on this page, defined.
  • Step bars — what good output looks like, per step of the loop.
  • Principles — the design rationale the rules on this page derive from.
  • The advanced lifecycle — the finer-grained step model under the loop.

Ready to run the loop on your own repo? Get started — copy the kit and write your first spec.