The quality gate
Everything else on this site is discipline that an agent could, in principle, skip. The gate is the part that does not depend on anybody remembering.
/sdlc-studio gate # are we clear to commit?/sdlc-studio gate --release # are we clear to tag?/sdlc-studio gate --require-retro RETRO0021 # can we close this sprint?/sdlc-studio gate --require-close # is a close still owed before I push?/sdlc-studio gate --format json # for a pipelineIt is ecosystem-neutral: no network, no CI assumption, no cloud. It runs in any pipeline, or as a pre-commit hook, or by hand. It prints a consolidated report and exits non-zero only when a blocking check fails; a non-blocking failure is reported as a warning and does not stop you.
What it checks
Section titled “What it checks”The deterministic lanes: conformance (does each unit meet the rules for the status it claims), reconcile (does the index match a census of the files), validate, artefact integrity, duplicate ids, documentation coverage, and the project’s own principles if you have declared any.
--release adds an executing acceptance-criteria pass on top - because before a tag, “the criteria are written down” is not the same claim as “the criteria run and pass”.
The commit is judged on what it changed
Section titled “The commit is judged on what it changed”The conformance and validate lanes run diff-scoped in the ordinary gate. They judge the artefacts this working tree actually touched, so a commit that changes nothing about a workspace’s pre-existing backlog debt is not held hostage by it.
That narrowing is a deliberate design decision with a hard-won reason behind it: a guard whose cost is paid on every commit gets switched off, and disarming the hook disarms every lane, not the noisy two. A gate people route around protects nothing.
Three rules keep the narrowing honest:
- It states its own scope. Every scoped run prints the units it judged, the untouched ones it reported as advisory by id, and the stages it therefore did not judge. A verdict is only readable next to what it did not examine.
- Nothing is dropped from the report. An untouched error is still printed, marked
ADVISORY. Only the count that decides the exit code narrows. - A repository-wide failure still blocks. The census, the index, documentation coverage and the id-named-file sweep all still run over everything. Narrowing the per-unit ledger is not a way to hide a repository-wide fault.
And when the probe cannot answer - no git, no commit to diff against, a root that is not the repository top - it falls back to judging the whole workspace. A check that cannot determine scope does not quietly assume the smallest one.
Selecting lanes
Section titled “Selecting lanes”/sdlc-studio gate --only reconcile,duplicate-id/sdlc-studio gate --skip constitutionUseful in a pipeline stage that only cares about one thing. Not a way to make a red gate green.
A blocking check earns its place on a number
Section titled “A blocking check earns its place on a number”Not every lane blocks, and that is on purpose.
When a new check ships, it ships advisory while its yield is measured. If it turns out to find real defects, it is promoted to blocking. If it turns out to be noise, it is removed rather than left on to be ignored.
This matters more than it sounds. A gate that is already close to its time budget cannot afford a new blocking check that earns its place on an assertion. The discipline applies to the discipline.
Where to next
Section titled “Where to next”- Executable acceptance criteria - what
--releaseactually runs. - Reconcile & drift - the lane that recomputes truth from the files.
- Review and close - where
--require-retroand--require-closefit. - Configuration - turning gates on for your project.