Skip to content
Apothem
Compuerta de conformidad

Índice

Compuerta de conformidad de Apothem — la fracción mecánica de la compuerta de preemisión de quince puntos (M1-M15) que todo artefacto emitido debe superar.

Los quince puntos

PuntoIDMandatoClase de verificaciónFallo → acción
1M1Agnosticismo respecto al proyecto anfitriónRazonadaRevisar para ajustarse a las convenciones del anfitrión
2M2Disciplina editorial (registro de divulgación)MecánicaAñadir marcadores de divulgación
3M3Diez dimensiones de calidadRazonadaRevisar en las dimensiones que fallan
4M4Autoaplicación (bloque de registro firmado presente)MecánicaRegistrar el bloque de registro firmado
5M5Principio de autoridad (sin identidad / endpoint / secreto fabricados)MecánicaEncauzar a consulta
6M6Incorporación de pericia (brechas sacadas a la luz)RazonadaSacar a la luz las brechas; citar refinamientos
7M7Anotación de opciones (marcador de recomendación + justificación)MecánicaAnotar los conjuntos de opciones
8M8Definitividad (sin vacilaciones en prosa prescriptiva)MecánicaPromover las vacilaciones a condicionales
9M9Aprovechamiento visual (los temas estructurales llevan diagramas)RazonadaCrear / actualizar el diagrama
10M10Vinculación bidireccional (punteros recíprocos cerrados)MecánicaCerrar las medias aristas
11M11Sprints ágiles (Objetivo / Backlog / DoR / DoD / Revisión / Retrospectiva)RazonadaReestructurar como sprints
12M12Informes de fase y disposición canónicaMecánicaCrear el resumen; reubicar en la disposición canónica
13M13Oficio de código (linter / formateador / verificador de tipos; número mágico; bare-except)MecánicaRevisar según las reglas de oficio de código por lenguaje
14M14Sistemicidad (declara ascendientes / descendientes / pares / aplicadores)RazonadaDeclarar; indexar en los registros
15M15Lista para producción (pruebas + documentación + CHANGELOG + commit conforme + CI en verde + estabilidad semver)MecánicaAñadir las superficies que faltan

Escalera de severidad

SeveridadEfecto sobre la compuerta
CríticaCompuerta FAIL — emisión bloqueada incondicionalmente
ImportanteCompuerta FAIL cuando fallan 2+ puntos Importantes simultáneamente
ConsultivaCompuerta WARN — registrada en el bloque firmado; no bloquea la emisión

La mayoría de los emparejadores de la fracción mecánica tienen por defecto Importante. M5 (autoridad — secretos, endpoints fabricados) y M12 (salidas huérfanas) son Críticos.

%% provenance: hand-authored %%
%% verified: 2026-07-06 %%
%% cross-reference: the Severity ladder table above; src/apothem/conformity/gate.py (severity aggregation) %%
flowchart TD
    accTitle: Conformity-gate severity-to-verdict decision flow
    accDescr: A finding's severity determines the gate verdict. A Critical finding — M5 authority or M12 orphan output — fails the gate and blocks emission unconditionally. Important findings block only when two or more fail simultaneously; a single Important finding does not block. Advisory findings are logged in the signed record and never block emission.
    F["Finding raised<br/>by a matcher"] --> S{"Severity?"}
    S -->|Critical| C["Critical<br/>M5 authority · M12 orphan output"]
    S -->|Important| I["Important<br/>most mechanical matchers"]
    S -->|Advisory| A["Advisory"]
    C --> FAIL["Gate FAIL<br/>emission blocked"]
    I --> Q{"2+ Important<br/>bars failing?"}
    Q -->|yes| FAIL
    Q -->|no| WARN["Gate WARN<br/>logged in signed record<br/>emission proceeds"]
    A --> WARN

Emparejadores de la fracción mecánica

La fracción mecánica vive en src/apothem/conformity/*_grep.py, orquestada por src/apothem/conformity/gate.py.

EmparejadorPuntoFunción
hedging_grep.pyM8Detecta vocabulario vacilante en la prosa prescriptiva
option_annotation_grep.pyM7Verifica el marcador **Recommended** + la justificación en los conjuntos de opciones
user_confirm_grep.pyM5Bloquea los marcadores de posición <USER-CONFIRM:…> de la emisión
binding_reciprocity_grep.pyM10Detecta medias aristas en ## Bindings (§0.j five-direction)
orphan_output_grep.pyM12Señala artefactos sin consumidor / sin entrada de índice / sin atribución de productor
bare_except_grep.pyM13Detecta except: / except Exception: sin comentario justificativo
magic_number_grep.pyM13Detecta literales numéricos en la lógica de negocio
commented_out_code_grep.pyM13Detecta bloques de código comentados
file_header_grep.pyM13Verifica la presencia del encabezado de licencia SPDX de una sola línea
frontmatter_grep.pyM14Verifica los campos de frontmatter requeridos en los cuatro directorios de directivas canónicos listados abajo
semver_stability_grep.pyM15Detecta cambios disruptivos en la API pública sin un incremento de versión MAJOR
production_ready_pr_grep.pyM15Verifica la disciplina del mismo conjunto de cambios (pruebas + documentación + CHANGELOG)
secret_leak_grep.pyM15Detecta secretos / credenciales codificados de forma fija
unpinned_action_grep.pyM15Verifica que las GitHub Actions estén fijadas a un commit SHA
always_on_budget_grep.pytope de presupuestoLimita el cuerpo de las reglas siempre activas a 500 tokens sustantivos

Ejecutar la compuerta

En un harness instalado, la compuerta se ejecuta automáticamente: el settings.json de Claude Code la conecta como un hook PreToolUse que invoca la copia materializada en ~/.claude/.apothem/support/conformity/gate.py antes de cada Write/Edit. Desde un checkout de fuente, la forma de módulo ejecuta el mismo código:

# Despacho de un solo archivo (imita el hook PreToolUse):
echo '{"tool_input": {"file_path": "path/to/file", "content": "..."}}' \
    | python -m apothem.conformity.gate --hook

# Barrido compuesto a través del repositorio:
python -m apothem.conformity.gate --sweep src/ site/content/docs/ rules/

Véase Ejecutar la compuerta de conformidad para el procedimiento completo.

Referencia

On this page