Context
0067 adopts spec-kit with a clarify gate, and left the spec folder and the threshold for trivial changes as TODOs. 0016 rules 4 and 5 put specs at.agents/specs/<NNN>-<slug>/ with exactly three documents, from the sdlc plugin. spec-kit has no project-wide setting for the
specs folder; per-feature overrides work but must be passed every run. Numbered folders collide across parallel worktrees.
Decision
-
D1 — Specs live in
.agents/specs/sta-<n>-<slug>/, keyed by the Linear issue, through a Stackra preset wrap that setsSPECIFY_FEATURE_DIRECTORYon every run and forbids auto-numbering. A tripwire check fails when a spec-kit upgrade breaks the wrap. A spec folder holds the documents spec-kit writes, not the three of 0016. -
D4 — Four lanes, chosen at intake by a fixed table (first match wins) and re-checked by CI:
A change may move to a heavier lane at any time, and to a lighter one only with a recorded reason.
-
D16 / R2 — Change risk, R0 to R3, a scale for code changes, distinct from the action risk L0–L4 of
0099:
The lead derives it from the Impact answers or the paths touched; it can be raised, never lowered.
- D8 — Full-lane granularity: a design pull request (spec, plan, tasks, analyze), then one pull request per user-story phase, each anchored by a Linear sub-issue.
-
D17 — Specs are public on GitHub and are not published on Mintlify. Pro specs live in
figentra/stackra-pro; details of an unfixed vulnerability go in a private security advisory. - D18 — EARS wording for requirements is template guidance, not a gate.
Consequences
- Parallel sessions never collide on spec numbers, and every spec is traceable to its Linear issue.
- The preset wrap is a maintained piece of glue; the tripwire turns a silent upgrade break into a red check.
- Trivial changes have a recorded way to skip the full flow, which settles 0067’s open threshold.
Enforcement
Planned:tools/scripts/spec-gate.mjs (folder name ^\.agents/specs/sta-\d+-[a-z0-9-]+$, the lane check against commit
types, the tripwire) inside pnpm validate; pnpm pr:merge reads the change-risk class (0119).