The gates, as data

This document is generated. It comes out of gates/ with node build/gates_doc.mjs, and the build fails when what is on disk does not match the data. Do not edit it: fix the source.

It is written in English on purpose (decision D-051). It is tool documentation, it is not part of the translated corpus of the method, and whatever is not translated is published in the canonical language of the profession. Translating for the comprehension of an end user is the job of the consumer tool, not of this document.

Catalog version: 2026.10.4 - schema 2

What this is, and why it lives here

The mechanical definition of the gates of the method -- which artifact has to exist at each step, what it has to say, and with which strategy it is verified -- used to live compiled inside the tool that enforces it. Which meant it changed when the tool shipped a version, not when the method decided. Since decision D-050 the method owns the definition and publishes it as data, exactly as it already publishes the prompts, and the tool consumes it.

The version: what a project freezes

A project starts and ends on the same version of the method, unless somebody applies the double lock. For that to be possible, what is published has to be identifiable and stable:

Covered by the fingerprint: schema_version, catalog_version, languages, evaluators, evaluator_semantics, compatibility, tramos, steps, stations, loop_entry, heuristics, adapters, project_config. Left out: generated_at, git_commit, git_commit_note, source, license, content_hash, what, counts. Nothing in between: Every key of the published payload is either covered or excluded, and the validator checks it. A requirement-bearing key left out of both would travel without protection: a frozen copy could be altered there and the recomputed hash would still match.

When the version moves: Any change to a key listed in hash_covers raises catalog_version, even when no requirement changed: the content hash moves with it, and two different contents published under one declared version would make a freeze unreadable. A regeneration that only rewrites generated_at or git_commit changes nothing covered, so it leaves the version alone.

The ledger: gates/catalog.json#changelog records, for each catalog_version, the content hash it produced. The build refuses to publish when the hash of the current content is not the one recorded for the current version: that is what forces the bump instead of trusting it. The ledger is append-only and a hash already recorded is never edited, for the same reason the base is not edited. It is not part of the published payload, so recording a new entry cannot change the hash it records.

The language of each text

Which language each human-readable text of this file is in. It is declared mechanically because the file is bilingual: reading data as a single language would make a consumer show Spanish to an English reader.

What an installation cannot measure

The evaluator vocabulary

An evaluator is the strategy a tool uses to decide whether a step is fulfilled. The vocabulary is closed and only grows: none is removed, none is renamed and none changes meaning, exactly like a stable error code.

evaluatorsince schemawhat it checks
artifacts1Every declared artifact exists, passes its min_bytes, satisfies each must_contain and, if it is a glob, the newest one is within its fresh_days. A should_contain that does not appear leaves a warning, not a red.
sizing1The artifacts, plus an admissible sizing record: volumetry, retention per data class and hardware envelope, all declared by the owner.
ci1The artifacts, plus a continuous integration definition that exists in the repository.
pendings_spec1The artifacts, plus every open pending item carrying its full specification (acceptance criteria and how it is verified). An empty plan is red, not green.
receipts1The artifacts, plus evidence receipts including at least one proven red and one green. No receipt, no step.
reports1The artifacts, plus every closed pending item having its honest report (verified / believed / blind spot). No closure yet is red, not green.
meters1A meter exists in the repository and the meter has a test of its own.
owner1Nothing mechanical: the owner verifies it and signs it. No step of the catalogue chooses it today; the state exists for a step that leaves no machine check at all, and that is why the name is published anyway.
heuristics2The Annex H rule catalogue is declared and active per group; every active rule has an instrument, a severity and a checker; every switched-off rule has its record with reason, author and review date (switched off without a record is red, not the absence of a rule); every undeclared threshold is reported as undeclared instead of invented; and the report emits the two figures with the ruleset fingerprint. A switched-off group is never read as fulfilled.
profile_matrix2The functionality-by-profile matrix exists and is consistent: every functionality has at least one profile, every profile has at least one functionality and its entry point, and navigation is derived from the matrix rather than hand-written. And for every profile, the end-to-end test compares what is reachable against its row: neither less nor more.
manual_cases_per_profile2Every manual test case was run once per affected profile, derived from the matrix. A case run with a single profile does not count as executed.
pendings_profiles2Every pending item that touches a screen declares its functional convergence group, the profiles that have it and one acceptance criterion per profile. Without that declaration the pending item does not pass the step.

The ladder: twenty-four steps

The titles, summaries and completeness questions of the base are reproduced in the Spanish of the method, which is the language they were frozen in: the base is not edited (D-051). Whatever the method declares from now on is in English, and it is marked as new.

I. Arranque

#stepformdemandevaluatorsinputsartifactschecks
0Este proyecto se puede encarar asi? (elegibilidad)conversationalwaysartifacts113
1El contrato de convivenciaone_shotalwaysartifacts213
2La definicion del proyecto, el arbol semantico y la lectura obligatoriaconversationalwaysartifacts235
3Dimensionar antes de disenar la arquitecturaconversationalwayssizing313
4El esqueleto con sus compuertasone_shotalwaysci223

II. Bucle de construccion

#stepformdemandevaluatorsinputsartifactschecks
5El plan son los pendientesroutinealwayspendings_spec, pendings_profiles (new)214
6Las decisiones se escriben junto al codigoconversationalwaysartifacts112
7Medir antes de construir, con un instrumento que tambien se verificaone_shotproportionalmeters003
8Tests como candados, probados en rojoroutinealwaysreceipts, profile_matrix (new)214
9Calidad del codigo verificada por maquina, con compuertaroutineminimumci, heuristics (new)146
10Los casos de prueba manual se escriben con la funcionalidad y los ejecutan personasroutinealwaysartifacts, manual_cases_per_profile (new)214
11Simetria entre productor y consumidor, y el registro de anti-patronesroutineminimumartifacts122
12Verificacion honesta y reporte proporcionalroutinealwaysreports, heuristics (new)114

III. Salida a produccion

#stepformdemandevaluatorsinputsartifactschecks
13La auditoria periodica como insumo del planone_shotminimumartifacts225
14Fail-closed, candados y cero dano silenciosoconversationminimumartifacts212
15Integracion continua, entornos, secretos y despliegue como parte del productoone_shotminimumci124
16Observabilidad y trazabilidad totales, con nivel configurableone_shotminimumartifacts212
17Optimizacion de la capa de persistencia, medida antes y despuesone_shotproportionalartifacts212
18Escaneo y solucion de vulnerabilidades, en la cadena y con calendarioone_shotminimumci222
19Pruebas de rendimiento en volumen y punto de rupturaone_shotproportionalartifacts222
20Documentacion viva y manuales que una persona puede seguir sin IAroutineminimumartifacts343

IV. Operacion

#stepformdemandevaluatorsinputsartifactschecks
21Monitoreo de recursos, funciones y consultas fuera de rango, con reporte ciclicoroutineminimumartifacts222
22Monitoreo de errores y reporte ciclico: ningun error sin pendienteroutinealwaysartifacts222
23El agente adentro del sistema, y la retrospectiva con numeroconversationminimumartifacts244

What each step demands, in detail

0 - Este proyecto se puede encarar asi? (elegibilidad) (u00-elegibilidad, prompt peldano-00)

Decidir, con criterios excluyentes y ponderados, si el proyecto se puede construir con el metodo.

Inputs the owner has ready before the first prompt:

Artifacts the agent leaves behind, and that the gate looks for on disk:

Completeness check, without reading code:

1 - El contrato de convivencia (u01-contrato-de-convivencia, prompt peldano-01)

Las reglas que el agente cumple en cada sesion, escritas antes del codigo.

Inputs the owner has ready before the first prompt:

Artifacts the agent leaves behind, and that the gate looks for on disk:

Completeness check, without reading code:

2 - La definicion del proyecto, el arbol semantico y la lectura obligatoria (u02-definicion-y-lectura, prompt peldano-02)

Que es el sistema, para quien, con que casos de uso, y que se lee en cada sesion.

Inputs the owner has ready before the first prompt:

Artifacts the agent leaves behind, and that the gate looks for on disk:

Completeness check, without reading code:

3 - Dimensionar antes de disenar la arquitectura (u03-dimensionar, prompt peldano-03)

Volumetria, retencion, concurrencia y envoltura de hardware antes de elegir la persistencia.

Inputs the owner has ready before the first prompt:

Artifacts the agent leaves behind, and that the gate looks for on disk:

Completeness check, without reading code:

4 - El esqueleto con sus compuertas (u04-esqueleto, prompt peldano-04)

Repositorio, integracion continua, entornos y las compuertas que nadie puede saltar.

Inputs the owner has ready before the first prompt:

Artifacts the agent leaves behind, and that the gate looks for on disk:

Completeness check, without reading code:

5 - El plan son los pendientes (u05-pendientes, prompt peldano-05)

Cada pendiente lleva su especificacion completa: criterios de aceptacion y como se verifica.

Inputs the owner has ready before the first prompt:

Artifacts the agent leaves behind, and that the gate looks for on disk:

Completeness check, without reading code:

6 - Las decisiones se escriben junto al codigo (u06-decisiones, prompt peldano-06)

Cada decision con dueno, fecha, la frase textual de origen y donde se aplica.

Inputs the owner has ready before the first prompt:

Artifacts the agent leaves behind, and that the gate looks for on disk:

Completeness check, without reading code:

7 - Medir antes de construir, con un instrumento que tambien se verifica (u07-medir, prompt peldano-07)

Un numero que alimenta una decision se mide con un programa que tiene su propio test.

Completeness check, without reading code:

8 - Tests como candados, probados en rojo (u08-tests-en-rojo, prompt peldano-08)

El rojo contra el codigo anterior como recibo, el verde, la regresion y la prueba de punta a punta.

Inputs the owner has ready before the first prompt:

Artifacts the agent leaves behind, and that the gate looks for on disk:

Completeness check, without reading code:

9 - Calidad del codigo verificada por maquina, con compuerta (u09-calidad-de-codigo, prompt peldano-09)

Linter, formateador, limites de tamano y complejidad, duplicacion, codigo muerto, cobertura con trinquete.

Inputs the owner has ready before the first prompt:

Artifacts the agent leaves behind, and that the gate looks for on disk:

Completeness check, without reading code:

10 - Los casos de prueba manual se escriben con la funcionalidad y los ejecutan personas (u10-casos-de-prueba-manual, prompt peldano-10)

Cada pendiente deja su caso de prueba manual; cada fallo humano vuelve como pendiente.

Inputs the owner has ready before the first prompt:

Artifacts the agent leaves behind, and that the gate looks for on disk:

Completeness check, without reading code:

11 - Simetria entre productor y consumidor, y el registro de anti-patrones (u11-simetria-y-antipatrones, prompt peldano-11)

Nadie cambia una estructura compartida sin tocar a todos sus consumidores; cada golpe queda escrito.

Inputs the owner has ready before the first prompt:

Artifacts the agent leaves behind, and that the gate looks for on disk:

Completeness check, without reading code:

12 - Verificacion honesta y reporte proporcional (u12-verificacion-honesta, prompt peldano-12)

Cada reporte separa lo verificado, lo creido y el punto ciego, y ocupa lo que la evidencia da.

Inputs the owner has ready before the first prompt:

Artifacts the agent leaves behind, and that the gate looks for on disk:

Completeness check, without reading code:

13 - La auditoria periodica como insumo del plan (u13-auditoria, prompt peldano-13)

Otra sesion, idealmente otro modelo, revisa todo y sus hallazgos entran al plan como pendientes.

Inputs the owner has ready before the first prompt:

Artifacts the agent leaves behind, and that the gate looks for on disk:

Completeness check, without reading code:

14 - Fail-closed, candados y cero dano silencioso (u14-fail-closed, prompt peldano-14)

Cada accion con consecuencia real tiene su candado; ante la duda, el sistema se detiene.

Inputs the owner has ready before the first prompt:

Artifacts the agent leaves behind, and that the gate looks for on disk:

Completeness check, without reading code:

15 - Integracion continua, entornos, secretos y despliegue como parte del producto (u15-ci-entornos-secretos-deploy, prompt peldano-15)

Despliegue repetible, configuracion afuera del codigo, secretos en su lugar y vuelta atras probada.

Inputs the owner has ready before the first prompt:

Artifacts the agent leaves behind, and that the gate looks for on disk:

Completeness check, without reading code:

16 - Observabilidad y trazabilidad totales, con nivel configurable (u16-observabilidad-y-trazabilidad, prompt peldano-16)

Cada accion deja un registro estructurado con su identificador; el nivel se configura sin tocar codigo.

Inputs the owner has ready before the first prompt:

Artifacts the agent leaves behind, and that the gate looks for on disk:

Completeness check, without reading code:

17 - Optimizacion de la capa de persistencia, medida antes y despues (u17-persistencia, prompt peldano-17)

Indices, fin de los bucles N+1, presupuestos de consultas por camino; todo con numero antes y despues.

Inputs the owner has ready before the first prompt:

Artifacts the agent leaves behind, and that the gate looks for on disk:

Completeness check, without reading code:

18 - Escaneo y solucion de vulnerabilidades, en la cadena y con calendario (u18-vulnerabilidades, prompt peldano-18)

Dependencias, secretos, codigo e infraestructura escaneados en cada push y con fecha de repaso.

Inputs the owner has ready before the first prompt:

Artifacts the agent leaves behind, and that the gate looks for on disk:

Completeness check, without reading code:

19 - Pruebas de rendimiento en volumen y punto de ruptura (u19-rendimiento-y-punto-de-ruptura, prompt peldano-19)

Cargar al volumen esperado y al por diez, y encontrar que se rompe primero.

Inputs the owner has ready before the first prompt:

Artifacts the agent leaves behind, and that the gate looks for on disk:

Completeness check, without reading code:

20 - Documentacion viva y manuales que una persona puede seguir sin IA (u20-documentacion-viva, prompt peldano-20)

Manual de usuario, de mantenimiento y de infraestructura y recuperacion; el registro de cambios al dia.

Inputs the owner has ready before the first prompt:

Artifacts the agent leaves behind, and that the gate looks for on disk:

Completeness check, without reading code:

21 - Monitoreo de recursos, funciones y consultas fuera de rango, con reporte ciclico (u21-monitoreo-de-recursos, prompt peldano-21)

Umbrales por recurso y por funcion, alertas, y un reporte que llega solo cada ciclo.

Inputs the owner has ready before the first prompt:

Artifacts the agent leaves behind, and that the gate looks for on disk:

Completeness check, without reading code:

22 - Monitoreo de errores y reporte ciclico: ningun error sin pendiente (u22-monitoreo-de-errores, prompt peldano-22)

Captura centralizada de errores, alerta cuando importa, y cada error nuevo con su pendiente.

Inputs the owner has ready before the first prompt:

Artifacts the agent leaves behind, and that the gate looks for on disk:

Completeness check, without reading code:

23 - El agente adentro del sistema, y la retrospectiva con numero (u23-agente-residente-y-retrospectiva, prompt peldano-23)

Un agente residente con alcance escrito, y una retrospectiva que termina en una propuesta al metodo.

Inputs the owner has ready before the first prompt:

Artifacts the agent leaves behind, and that the gate looks for on disk:

Completeness check, without reading code:

The legacy path: eight stations

A system built without the method is normalised first through these eight stations (they are not called steps) and only then enters the Construction Loop at step 5.

A legacy system enters the Construction Loop at step 5, so from there the five anchors of Annex H rule exactly as they do in a new project (D-023 + D-043). The two prior inputs are recovered by self-discovery with a source mark, like every input of an earlier stage on this path. (since schema 2, inherited anchors: 1, 2, 3, 4, 5).

#stationevaluatorsartifactschecks
N0Elegibilidad de un sistema existente: los prerrequisitos que un modelo puede verificar haciendoartifacts22
N1El contrato de convivencia para un legadoartifacts11
N2La lectura del sistema: el mapa recuperado y las discrepanciasartifacts43
N3La auditoria como inventario de la deudaartifacts12
N4El cinturon de seguridadci32
N5Candados y mapa productor-consumidor desde el codigoartifacts21
N6Dimensionar con numeros realessizing11
N7El backlog de normalizacion, emparejado con el pedido del clientependings_spec11

N0 - Elegibilidad de un sistema existente: los prerrequisitos que un modelo puede verificar haciendo (n0-elegibilidad-legado)

Siete prerrequisitos verificados haciendo; cada rojo es un proyecto previo.

N1 - El contrato de convivencia para un legado (n1-contrato-legado)

Las reglas del metodo mas la regla de no reescribir.

N2 - La lectura del sistema: el mapa recuperado y las discrepancias (n2-lectura-del-sistema)

Relevamiento, proyecto y arbol desde el codigo con marcas de fuente; la lista de discrepancias.

N3 - La auditoria como inventario de la deuda (n3-auditoria-inventario)

Toda la deuda, con su marca: bloquea, se paga al tocar, puede esperar.

N4 - El cinturon de seguridad (n4-cinturon-de-seguridad)

Tests de caracterizacion con su rojo por mutacion, la cadena y los entornos. Compuerta dura.

N5 - Candados y mapa productor-consumidor desde el codigo (n5-candados-y-mapa)

Las acciones con consecuencia y las estructuras compartidas, leidas del sistema.

N6 - Dimensionar con numeros reales (n6-dimensionar-real)

La volumetria medida en la base real, y la persistencia contrastada con su envoltura.

N7 - El backlog de normalizacion, emparejado con el pedido del cliente (n7-backlog-de-normalizacion)

La deuda que bloquea y el pedido del cliente, en un solo plan ordenado.

Annex H: forty-five rules

The statement of every rule lives only in Annex H: it is extracted from there on every build, never transcribed. The published statement comes from the English version; the Spanish one is the source of truth of the method, and the build demands that both carry the same rules with the same severities. What this data adds is the mechanical part: the group, the instrument, the initial severity, when it is looked at and the step where it hooks. There are 18 of code quality and 27 of usability.

The two switches (code_quality and usability) are turned on and off separately, they live in the project configuration and the gate reads them: never inside the prompt. Switching a rule off is valid only as a recorded decision with reason, authorized_by, review_date. Switched off without a record: red: switching a rule off without a written reason is a failure of the gate, not the absence of a rule. A switched-off group is never read as fulfilled.

Code quality (CQ-01..CQ-18)

Result per rule in docs/CODE_QUALITY.md.

idfamilystatementinstrumentwhenseveritystep
CQ-01formThere is a single formatter, it runs without intervention and it admits no discussion.automatic gateon every push and at block closeBLOCKS9
CQ-02formThere is a single linter per repository and its rules are the same for everybody; a rule is switched off with a written reason, never in a loose file.automatic gateon every push and at block closeBLOCKS9
CQ-03sizeNo file exceeds the declared limit (starts at 300 lines) and no function exceeds its own (starts at 40).automatic gateon every push and at block closeBLOCKS9
CQ-04complexityNo function exceeds the declared path limit.automatic gateon every push and at block closeBLOCKS9
CQ-05duplicationNo new duplication enters: the copied block is extracted or justified.automatic gateon every push and at block closeBLOCKS9
CQ-06dead_thingsThere is no dead code: unused functions, variables, imports, branches and dependencies.automatic gateon every push and at block closeBLOCKS9
CQ-07typesIf the language allows types, the project uses them seriously; the "any" type is a declared exception, not a habit.automatic gateon every push and at block closeWARNS9
CQ-08testsCoverage does not go down: today's number is tomorrow's floor.automatic gateon every push and at block closeBLOCKS9
CQ-09testsWith real users, the mutation score is measured per block and every mutant that survives in new code opens a pending item.automatic gateon every push and at block closeBLOCKS where there are real users9
CQ-10dependenciesEvery dependency is declared, is used and does not bring a third-party tree out of proportion to what it contributes.automatic gateon every push and at block closeWARNS9
CQ-11secretsThere are no credentials, keys or connection strings in the repository, nor in the new history.automatic gateon every push and at block closeBLOCKS9
CQ-12interfaceThe interface does not decide: no screen or component contains business rules (what is allowed, how much it costs, which state follows). It lives in the domain and the view queries it.manual caseat the close of the pending itemBLOCKS (human red)9
CQ-13interfaceEvery server call goes through a single typed client; no screen builds its own request by hand.automatic gateon every push and at block closeBLOCKS9
CQ-14interfaceThere is a single place where shared state lives; duplicating state between screens is a failure, not a shortcut.manual caseat the close of the pending itemBLOCKS (human red)9
CQ-15interfaceEvery visible text comes out of a translation catalogue; no user string stays written inside the component.automatic gateon every push and at block closeBLOCKS9
CQ-16interfaceEvery interactive element carries a stable identifier and a role, so that the automated test finds it by name and not by position.automatic gateon every push and at block closeBLOCKS9
CQ-17interfaceAll colours, spacings and typefaces come out of tokens; no loose magic value in the stylesheet.automatic gateon every push and at block closeBLOCKS9
CQ-18interfaceBasic accessibility is verified on its own: contrast, labels on fields, visible focus, keyboard navigation in the main flows, images with alternative text.automatic gateon every push and at block closeWARNS9

Usability (UX-01..UX-27)

Result per rule in docs/USABILITY.md.

idfamilystatementinstrumentwhenseveritystep
UX-01B1Every menu group is named with a user job (in their vocabulary, with the project glossary), never with a technical module nor with a data entity.manual case + matrix queryat the close of each blockWARNS10 *
UX-02B1Every functionality has exactly one canonical home. If it serves two groups, one home is chosen and the other links to it; the entry is not duplicated.matrix queryon every push and at block closeBLOCKS9
UX-03B1There are no orphans: every declared functionality is reachable from the entry screen in no more than three steps.automatic gateon every push and at block closeBLOCKS9
UX-04B1The size of a group is reasonable: fewer than three functionalities indicates a group that was not a group; more than seven indicates a drawer.matrix queryon every push and at block closeWARNS9 *
UX-05B1Every group has an entry screen that says what is done there and which is the main action. No group opens straight into an empty table.manual caseat the close of each blockWARNS10 *
UX-06B1The flows the person does often live together: if "record a payment" and "see the customer's account" are used in the same session, they share a group.manual caseat the close of each blockRECORDS10 *
UX-07B1The first-click test: the owner, facing a concrete task ("where do you charge a payment?"), names one place. If they name two, there is duplication; if they name none, there is an orphan. It runs at the close of every block.manual caseat the close of each blockWARNS10 *
UX-08B2Every functionality declares in the matrix which profiles have it. A functionality without a profile does not exist: either it is given a profile or it is deleted.matrix queryon every push and at block closeBLOCKS9
UX-09B2Every declared profile has at least one functionality and its own entry point. An empty profile is a profile nobody used while designing.matrix queryon every push and at block closeBLOCKS9
UX-10B2Navigation is generated from the matrix. A hand-written menu is a failure, not a shortcut.automatic gateon every push and at block closeBLOCKS9
UX-11B2Hiding is not protecting: every route verifies the permission on the server side in addition to hiding the entry. Typing the address by hand is not enough to get in.end-to-end test per profileon every push and at block closeBLOCKS8
UX-12B2Neither less nor more: for each profile, the set of reachable functionalities is exactly the one in its row of the matrix.end-to-end test per profileon every push and at block closeBLOCKS8
UX-13B2The refusal is explained: if a person enters a functionality that is not theirs, they see a message that says why and who to ask for access. Never a blank screen, never a grey button without a reason.manual caseat the close of each blockWARNS10 *
UX-14B2The same button means the same for everybody: if two profiles share a label, they share an effect. If the effect changes per profile, the label changes or the functionality is split in two.manual caseat the close of each blockWARNS10 *
UX-15B2Data is also filtered by profile: whoever sees the list sees the rows that correspond to them, not the whole list with the rows hidden in the browser.end-to-end test per profile + manual caseon every push and at block closeBLOCKS8
UX-16B2The matrix and the user manual are updated in the same pending item as the functionality. A new functionality without a row in the matrix does not close.matrix queryat the close of the pending itemBLOCKS9
UX-17B3Every list has four resolved states: with data, empty, loading and with error. The empty one distinguishes "there is nothing yet" from "your search found nothing".manual caseat the close of each blockWARNS10 *
UX-18B3While something takes time, it is visible that it is working and it can be cancelled if it is long. A button that answers nothing is complaint number one.manual caseat the close of each blockWARNS10 *
UX-19B3The error says what happened, what can be done and does not erase what was entered. Neither a technical code alone, nor an "an error occurred".manual caseat the close of each blockWARNS10 *
UX-20B4A screen has one evident main action; the rest are secondary and look like it.manual caseat the close of each blockWARNS10 *
UX-21B4Every destructive action asks for confirmation naming the affected object, and when it can be done it is undone instead of confirmed.manual caseat the close of each blockWARNS10 *
UX-22B4A form that fails keeps what was entered and marks the field with the problem, in the place of the field.manual caseat the close of the pending itemBLOCKS (human red)10 *
UX-23B4No action leaves the screen without an exit: after saving, deleting or cancelling, the person knows where they are and how to continue.manual caseat the close of each blockWARNS10 *
UX-24B5The interface speaks the language of the project glossary: the same object is called the same on the screen, in the manual and in the email. A synonym is a defect.manual caseat the close of each blockWARNS10 *
UX-25B5Everything can be done without a mouse and with a screen reader in the main flows; the focus is always visible and it does not get trapped.automatic gate + manual caseon every push and at block closeWARNS9, 10 *
UX-26B5States are not communicated by colour alone; every informative image has alternative text; texts are read at normal size without zoom.automatic gateon every push and at block closeWARNS9 *
UX-27B5Every pending item that touches a screen delivers the real screenshot of the test environment, and the owner looks at it before closing. The screenshot is not optional and it is not a mock-up.manual caseat the close of the pending itemBLOCKS (human red)10 *

The rules marked with * in the step column are not anchored by the annex explicitly: the hook is derived from their instrument (the manual case runs at step 10, the automatic gate runs at step 9) and is declared as derived, not as a decision of the method.

The four that block with a human red -- CQ-12, CQ-14, UX-22, UX-27 -- are tested by no tool at all: they are verified at the close of the pending item, with the manual case in front, and never on a commit.

The five anchors and the two prior inputs

anchorstepwhat it addsevaluator
15every pending item that touches a screen declares its convergence group, its profiles and acceptance criteria per profilependings_profiles
28the matrix as a test that is seen failing firstprofile_matrix
39the full CQ catalogue with its adapter and declared thresholds, and the matrix as a gateheuristics
410one manual case per affected profile, derived from the matrixmanual_cases_per_profile
512the report says what was measured, what was left warning and which rule is switched off, with reason, author and review dateheuristics

The three artifacts

The adapters and the thresholds

Layer 2 of Annex H: per frontend family, with what each rule is measured and with which default threshold. Whatever the annex declares is here; whatever the annex leaves to the project is published as UNDECLARED, never with an invented value. The tool names in the example of the annex (section 7) are illustrative and are therefore NOT copied here: a tool named in this data would read as a default, and it is not one.

frontend familycolumn in the annexrules that do not apply
react-vitespa-
nextspa-
angularspa-
server-templatesserver-templates-
mobile-nativemobile-native-
clicliCQ-17, CQ-18
thresholdrulevaluedeclared?who declares it
lines_per_fileCQ-03300yes, annexthe core of the annex
lines_per_functionCQ-0340yes, annexthe core of the annex
paths_per_functionCQ-04-nothe owner
minimum_coverageCQ-08-nothe ratchet, over what is measured
mutation_targetCQ-09-nothe owner, once the project has real users

it is reported as an undeclared threshold. No approximating, no silent inheriting and no inventing: the same rule as the sizing of the architecture step.

The project configuration

The shape of the per-project configuration that the gate reads (layer 3 of Annex H). It lives in the project, never inside a prompt (D-046), and these are the field names a consumer tool has to write and read. Declared here so no tool has to guess them.

fieldwhat it holds
frontendId of the adapter family (see gates/adapters.json families).
real_usersBoolean. Rules with applies_if real_users only run where it is true, and that is scope, not an exception.
switchesOne entry per rule group: true, or an object { on: false, reason, authorized_by, review_date }.
switched_offList of individual rules switched off, each with the full record.
thresholdsDeclared values, by threshold id. Whatever is not here is reported as undeclared, never invented.
toolsTool names and versions actually used, for the ruleset fingerprint.

The switch-off record is rule, reason, authorized_by, review_date. Without it: red, and the ruleset is invalid: the scoreboard emits no figures at all (D-046, D-047).

The scoreboard

Two figures, never one (D-047). Switching a rule off raises compliance and lowers coverage, so with a single figure the shortest path to a better number is to stop measuring.

figureformulahow it moves
compliancerules_passing / rules_activegoes up when something is fixed
gate_coveragerules_active / rules_declaredgoes down when a rule is switched off

Ruleset fingerprint on every record: catalog_version, rules_active, rules_switched_off, adapter, tool_versions. Ratchet over compliance: it goes down only with a recorded decision. Out of the percentage, because a person judges it: UX-06, UX-07, UX-27, every manual case. The scoreboard does not close blocks, and an invalid ruleset emits no figures at all.

Order in the step 12 report: binary verdict → the two figures → what is switched off and until when → movement against the previous block with its cause.

The decisions that govern this

D-050 (the method owns the definition of the gates), D-051 (the data layer and this document are published in English), and the Annex H ones: D-043, D-044, D-045, D-046, D-047, D-048, D-049. They are in the decision register, written in Spanish, which is the language of the method.