Generative Specification is only as good as what a machine can verify. These are the deterministic gates that make the discipline enforceable: standard CI hooks, grouped by the property each defends. An LLM may write the code, but a non-LLM checker verifies it — these gates are those checkers. La Generative Specification vale lo que una máquina puede verificar. Estos son los gates deterministas que hacen exigible la disciplina: hooks de CI estándar, agrupados por la propiedad que defiende cada uno. La IA escribe el código, pero un verificador que NO es IA lo chequea — estos gates son ese verificador.
| PropertyPropiedad | Gate — what it checksGate — qué chequea | Standard toolHerramienta | RuleRegla | LevelNivel |
|---|---|---|---|---|
| Bounded | file lengthlargo de archivo | wc / loc | ≤ ~300 lines | blocking |
| Bounded | function length + paramslargo de función + params | eslint | max-lines-per-function, max-params | blocking |
| Bounded | cyclomatic complexitycomplejidad ciclomática | eslint complexity | function CC ≤ 10 | blocking |
| Bounded | code duplicationduplicación | jscpd | ~5-10% ceiling | advisory |
| Bounded | dead codecódigo muerto | ts-prune / knip | no unused exports | advisory |
| Composable | layer boundarieslímites de capas | dependency-cruiser | controller ↛ repo; domain pure | blocking |
| Composable | circular importsimports circulares | madge | no cycles | blocking |
| Verifiable | type strictnesstipos estrictos | tsc --strict | strict passes; no any | blocking |
| Verifiable | line/branch coveragecobertura | c8 / istanbul | ≥ target (e.g. 70%) | blocking |
| Verifiable | mutation scorescore de mutación | stryker | ≥ target | advisory |
| Executable | behavioural probes vs liveprobes contra app viva | hurl (o newman) | acceptance criteria pass on deploy | blocking |
| Executable | module boot smokesmoke de boot | CI boot script | every module boots | blocking |
| Defended | secrets scanescaneo de secretos | gitleaks | no secrets in diff | blocking |
| Defended | dependency auditauditoría de deps | npm audit / osv | no high/critical vulns | blocking |
| Defended | forbidden patternspatrones prohibidos | eslint custom | no eval, no DB-in-controller | blocking |
| Self-describing | screaming architecture + sentinel presentarquitectura que grita + sentinela | structure checkchequeo de estructura | names announce domain; CLAUDE.md routes | advisory |
| Auditable | conventional commitsconventional commits | commitlint | commits parse by type/scope | blocking |
| Auditable | TDD phase order + decision recordsorden TDD + decision records | commit-history hookhook de historia | test:[RED] before feat:; ADR/EDR | advisory |
| Reproducible | regression fixtures + determinismfixtures + determinismo | snapshots / seeded runssnapshots / seeds | flaky tests fail CI | advisory |
| Observable | structured-logging / trace presencelogging estructurado / trazas | presence checkchequeo de presencia | key paths emit structured logs | not yet gatedaún no |