Setlist

Teams and diagrams

Since 2.6.0 the discipline above holds across a team, and since 2.7.0 a diagram is a set of claims the close checks. Each item links its boundary. The team round in session zero and the retrofit asks who builds and how many at once, how the trunk is protected, who approves a spec and who may flip it ACTIVE, and how long a claim may stand untouched, and writes the answers into a Team section of product.md. The Driver line in a spec's header names who holds it: the checkpoint writes it at the ACTIVE flip from your declared identity or git's user.email, inside the hashed range, so anyone who reads the trunk sees who is building what. Since 2.15.0 the driver key carries the same handle in the status record, which the board reads first. With attestation off, the checkpoint's hash refresh after the Owns: lines it appends prints what moved, the hash before and after, and any other edit it refuses. The forge check runs as the status check setlist forge check on every pull request. It asks the merge the button would make what the git hooks ask, and names every pull-request edit to the enforcement paths. Require it on the trunk beside one approving review and code-owner review, which the check itself requires under forge custody. Boundary. forge custody makes a spec's approval the ACTIVE flip landing on the protected trunk through the required review, with no signing key. Boundary. The CODEOWNERS bridge makes .githooks/, .claude/, specs/attest/ and .github/ reviewed changes, and judges every spec's Owns: lines against the stamped file. Boundary. Parallel specs run on two branches with disjoint Owns: sets and close in turn. Since 2.11.0 the audit refuses the second of two overlapping closes by name until its branch carries the first close's change. The overlap report comes earlier: at each Owns: line it appends, the checkpoint names every other ACTIVE spec on the trunk and every spec on a remote branch that declares the same file, with its driver, and refuses nothing. Since 2.15.0 the claims are refused at push: pre-push refuses a spec branch pushed before its ACTIVE flip is on the trunk, and a spec number the remote already holds under another slug. Boundary. The merge-edit report (2.11.0, git 2.38 and later) names every file a two-parent merge changed outside its conflicts, for a reviewer; it never refuses. Boundary. Three gate tiers, gates.commit, gates.close and gates.push in .claude/sdd.json, name what runs at each layer. Boundary. The lite spec tier keeps the parts the gates read and refuses a lite spec past five files as SLH-LITE-OVERSIZED. Boundary. The bypass deny, the session layer's one refusal, stops a command that disarms the git hooks for its own run. Since 2.10.0 it reads heredocs and backslash continuations as a person writes them. Boundary. The scope hook's advice about a write on the trunk reaches the agent. Its path matching resolves a relative path, a symlinked leaf (up to sixteen links, saying when it stops) and a role spelled in another case. Boundary. The Stop hook refuses once to end a turn with a spec change unstaged, and the Stop hook's reasons lead with the fix. Boundary. Secret files are named in the stamped deny list (.env, .env.local, .env.production and their kin), for the Read tool and since 2.14.0 for cat, where a pattern used to hide .env.example, the example environment file a session keeps current.

For diagrams there are three diagram altitudes (context, containers, components). Each file under docs/diagrams/ opens with a four-line header, and a close's diagram field must name the files the closing commit touched. Boundary. Node evidence: a drawn path missing at the close is refused for the closing spec's own nodes, and inline edge labels are read as labels. Boundary. A generated view as a lockfile, opt-in through diagram_command, must equal that command's output at every close. Boundary. Render validation at the forge parses every Mermaid block under a pinned version and refuses one that does not parse. Boundary. The diagrams skill and the Design sketch let a spec draw the intended change, which /setlist:checkpoint folds into the living diagrams at the close.