Skip to content
Apothem
Porte de conformité

Index

Portail de conformité d'Apothem — la fraction mécanique du portail de pré-émission à quinze points (M1-M15) que tout artefact émis doit franchir.

Les quinze points

PointIDMandatClasse de vérificationÉchec → action
1M1Agnosticisme vis-à-vis du projet hôteRaisonnéeRéviser pour correspondre aux conventions de l'hôte
2M2Discipline éditoriale (registre de divulgation)MécaniqueAjouter les marqueurs de divulgation
3M3Dix dimensions de qualitéRaisonnéeRéviser sur les dimensions en échec
4M4Auto-application (bloc de registre signé présent)MécaniqueConsigner le bloc de registre signé
5M5Principe d'autorité (aucune identité / point de terminaison / secret fabriqués)MécaniqueAcheminer vers la demande
6M6Incorporation d'expertise (lacunes mises au jour)RaisonnéeMettre les lacunes au jour ; citer les raffinements
7M7Annotation des options (marqueur de recommandation + justification)MécaniqueAnnoter les ensembles d'options
8M8Caractère définitif (aucun atermoiement dans la prose prescriptive)MécaniquePromouvoir les atermoiements en conditionnels
9M9Levier visuel (les sujets structurels portent des diagrammes)RaisonnéeCréer / actualiser le diagramme
10M10Liaison bidirectionnelle (pointeurs réciproques fermés)MécaniqueFermer les demi-arêtes
11M11Sprints agiles (Objectif / Backlog / DoR / DoD / Revue / Rétrospective)RaisonnéeRestructurer en sprints
12M12Rapports de phase et agencement canoniqueMécaniqueCréer la synthèse ; déplacer vers l'agencement canonique
13M13Métier du code (linter / formateur / vérificateur de types ; nombre magique ; bare-except)MécaniqueRéviser selon les règles de métier du code par langage
14M14Systémicité (déclare ascendants / descendants / pairs / applicateurs)RaisonnéeDéclarer ; indexer dans les registres
15M15Prêt pour la production (tests + documentation + CHANGELOG + commit conforme + CI au vert + stabilité semver)MécaniqueAjouter les surfaces manquantes

Échelle de sévérité

SévéritéEffet sur le portail
CritiquePortail FAIL — émission bloquée inconditionnellement
ImportantePortail FAIL lorsque 2 points Importants ou plus échouent simultanément
IndicativePortail WARN — consignée dans le bloc signé ; ne bloque pas l'émission

La plupart des apparieurs de la fraction mécanique sont par défaut Importants. M5 (autorité — secrets, points de terminaison fabriqués) et M12 (sorties orphelines) sont Critiques.

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

Apparieurs de la fraction mécanique

La fraction mécanique vit dans src/apothem/conformity/*_grep.py, orchestrée par src/apothem/conformity/gate.py.

ApparieurPointFonction
hedging_grep.pyM8Détecte le vocabulaire atermoyant dans la prose prescriptive
option_annotation_grep.pyM7Vérifie le marqueur **Recommended** + la justification sur les ensembles d'options
user_confirm_grep.pyM5Bloque les espaces réservés <USER-CONFIRM:…> à l'émission
binding_reciprocity_grep.pyM10Détecte les demi-arêtes dans ## Bindings (§0.j five-direction)
orphan_output_grep.pyM12Signale les artefacts sans consommateur / sans entrée d'index / sans attribution de producteur
bare_except_grep.pyM13Détecte except: / except Exception: sans commentaire justificatif
magic_number_grep.pyM13Détecte les littéraux numériques dans la logique métier
commented_out_code_grep.pyM13Détecte les blocs de code commentés
file_header_grep.pyM13Vérifie la présence de l'en-tête de licence SPDX sur une seule ligne
frontmatter_grep.pyM14Vérifie les champs de frontmatter requis sur les quatre répertoires de directives canoniques listés ci-dessous
semver_stability_grep.pyM15Détecte les changements rupturistes de l'API publique sans incrément de version MAJOR
production_ready_pr_grep.pyM15Vérifie la discipline du même ensemble de modifications (tests + documentation + CHANGELOG)
secret_leak_grep.pyM15Détecte les secrets / identifiants codés en dur
unpinned_action_grep.pyM15Vérifie l'épinglage des GitHub Actions à un commit SHA
always_on_budget_grep.pyplafond de budgetPlafonne le corps des règles toujours actives à 500 tokens substantiels

Exécuter le portail

Sur un harness installé, le portail s'exécute automatiquement : le settings.json de Claude Code le câble en tant que hook PreToolUse qui invoque la copie matérialisée à ~/.claude/.apothem/support/conformity/gate.py avant chaque Write/Edit. Depuis un checkout source, la forme module exécute le même code :

# Distribution sur un seul fichier (imite le hook PreToolUse) :
echo '{"tool_input": {"file_path": "path/to/file", "content": "..."}}' \
    | python -m apothem.conformity.gate --hook

# Balayage composite à travers le dépôt :
python -m apothem.conformity.gate --sweep src/ site/content/docs/ rules/

Voir Exécuter le portail de conformité pour la procédure complète.

Référence

On this page