Skip to content

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 pipeline

It 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.

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 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.

/sdlc-studio gate --only reconcile,duplicate-id
/sdlc-studio gate --skip constitution

Useful 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.