Skip to content
Apothem
Porte de conformité

Portail de conformité

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

Les quinze barres

BarreIDMandatClasse 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)RaisonnéeAjouter les marqueurs de divulgation
3M3Dix dimensions de qualitéMécanique + raisonnéeRéviser sur les dimensions en échec
4M4Auto-application (bloc de vérification présent)RaisonnéeConsigner le bloc de vérification
5M5Principe d'autorité (aucune identité / aucun endpoint / aucun secret fabriqué)MécaniqueAcheminer vers une demande de précision
6M6Incorporation de l'expertise (lacunes mises au jour)RaisonnéeMettre les lacunes au jour ; citer les affinements
7M7Annotation des options (marqueur « Recommended » + justification des facteurs déterminants)MécaniqueAnnoter les ensembles d'options
8M8Caractère définitif (aucune formulation évasive dans la prose prescriptive)MécaniqueTransformer les formulations évasives en conditionnels
9M9Levier visuel (les sujets structurels portent des diagrammes)Mécanique + raisonnéeCréer / actualiser le diagramme
10M10Liaison bidirectionnelle (pointeurs de retour 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 disposition canoniqueMécanique + raisonnéeRédiger la synthèse ; déplacer vers la disposition canonique
13M13Artisanat du code (lint / formatage / vérification de types ; nombre magique ; bare-except)MécaniqueAppliquer les règles d'artisanat du code propres à chaque langage
14M14Systémicité (déclare amont / aval / pairs / applicateurs)Mécanique + raisonnéeDéclarer ; indexer dans les registres
15M15Prêt pour la production (tests + documentation + CHANGELOG + commit conforme + CI au vert + stabilité semver)Mécanique + raisonnéeAjouter les surfaces manquantes

Le portail n'exécute que des validateurs vérifiables par machine. Le jugement raisonné que réclament les barres de classe Raisonnée, ainsi que la moitié raisonnée de chaque barre de classe Mécanique + raisonnée, est évalué en revue.

Échelle de sévérité

Le portail ne comporte ni échelle de sévérité Critique, Importante ou Consultative, ni seuil de deux constats. Sans --strict (ou APOTHEM_CONFORMITY_STRICT=1), le portail signale les constats et se termine avec le code 0. Avec --strict, un contrôle sur un seul fichier ou un hook se termine avec le code 2 dès qu'un matcher échoue, et une exécution sur le corpus (--all ou --all-perwrite) se termine avec le code 2 lorsqu'un validateur ou un matcher bloquant échoue ; les constats consultatifs sont uniquement signalés. Le hook Write/Edit installé ne passe pas --strict : il signale les constats et l'écriture se poursuit, sauf si APOTHEM_CONFORMITY_STRICT=1 est défini dans son environnement.

Validateurs

La fraction mécanique vit dans src/apothem/conformity/, orchestrée par src/apothem/conformity/gate.py. Chaque validateur s'exécute de l'une des trois façons suivantes :

  • par écriture : sur chaque écriture en attente (--hook), ou sur chaque fichier suivi avec --all-perwrite.
  • autonome : sur l'ensemble du dépôt avec --all, ou un par un avec --check <name>.
  • par ensemble de modifications : sur un diff indexé, exécuté directement avec python -m apothem.conformity.semver_stability_grep --staged, et non via le portail.

Le tableau ci-dessous est généré à partir des modules de validateurs.

The conformity package ships 54 validators: 22 per-write, 31 standalone and 1 change-set. The gate registers the per-write and standalone ones.

ValidatorRunsRule anchorWhat it checks
agent-capability-grepstandaloneagent-capability-discipline (per-harness capability matrix)Verify every harness declares its agentic-capability matrix.
agents-md-coverage-grepstandalonerules/agents-md-convention.mdFlag stale agent-companion files under the root-only AGENTS.md convention.
agnosticism-grepstandalonerules/agnostic-posture.md §3 (harness neutrality) + §1 (default-off)Flag harness bias and re-introduced enforcement presets in shipped surfaces.
always-on-budget-grepper-writeD1 token-budget-discipline §Always-on body budgetBody-budget conformity matcher for always-on rules. Pointed at a rules directory it also holds the loaded always-on set and the rule index to byte ceilings.
bare-except-grepper-writeM13.3 error handlingFlag bare except clauses without typed exceptions or re-raise.
binding-five-direction-grepstandaloneM10 bidirectional-binding §1 (five-direction Bindings section)Require the five-direction Bindings section on every rule, command, agent, and skill.
binding-reciprocity-corpus-grepstandaloneM10 bidirectional-binding §2 (↔ self-reciprocal)Cross-file binding-reciprocity corpus walk — the ↔-symmetric half-edge check.
binding-reciprocity-grepper-writeM10 bidirectional-binding §NotationFlag binding declarations using non-canonical arrow notation.
brand-mark-grepper-writerules/plain-language.md (brand-mark display/identifier casing)Flag brand-mark display/identifier form drift on brand-touched surfaces.
commented-out-code-grepper-writeM13.1 why-not-what commentsFlag substantial commented-out code blocks left in source.
completion-claim-grepper-writerules/session-closure.md (verifiable-close output honesty)Flag unsupported completion / guarantee claims in cohort prose.
conventional-commit-grepstandaloneCLAUDE.md Coding Conventions — Conventional CommitsFlag HEAD commit messages that drift from the Conventional-Commits grammar.
copilot-instructions-presence-grepper-write—GitHub Copilot surface presence check.
cross-platform-matrix-grepstandalonecross-platform OS x Python CI matrixVerify CI declares a cross-platform OS x Python matrix.
determinism-grepstandalonerules/determinism.mdProve every command and skill surface has a deterministic output shape.
diagram-staleness-grepper-writeM9 visual-leverage §FidelityFlag diagrams whose verification date is missing or stale.
dynamism-grepstandalonerules/dynamism.md (static-version embeds)Flag static-string version embeds in dynamism-required surfaces.
editorconfig-presence-grepstandalonesupply-chain SOTA-rigor §editorconfigVerify a canonical .editorconfig is present at the project root.
file-header-grepper-write—Authorship-header presence and canonical-form check.
freshness-token-grepstandalonerules/freshness-facade.mdFlag freshness-narrative phrases on shipped public surfaces.
frontmatter-grepper-writethe per-class frontmatter JSON Schemas (src/apothem/schemas/)Validate per-artifact-class YAML frontmatter against required-key sets.
frontmatter-value-grepstandaloneper-class JSON Schema enum/pattern value constraintsValidate frontmatter VALUES against the per-class JSON Schema enum/pattern constraints.
gate-evidence-grepstandalonecommands/plan-execute.md Gate evidence; rules/pre-emission-gate-bars.md section 2 (attestation schema)Advisory: flag plan-suite gate claims that lack a command, an exit status or output, and a HEAD SHA beside them, and fifteen-bar attestations that omit a field of the rule's schema.
gitattributes-presence-grepstandalonesupply-chain .gitattributes contractVerify the repo-root .gitattributes carries the canonical contract.
harden-runner-grepstandaloneharden-runner egress baselineVerify every workflow job opens with a conformant harden-runner step.
hedging-grepper-writeM8 definitiveness §HedgingFlag hedging vocabulary in prescriptive contexts.
license-author-consistency-grepper-write—LICENSE author-identity presence check.
link-checkper-writerules/code-craft-markdown.md §6 Link DisciplineValidate Markdown internal links against the on-disk reference graph.
magic-number-grepper-writeM13.10 magic numbersFlag magic numbers in source code.
multi-surface-coherence-grepper-write—Shared-claim coherence across AI-conventions surfaces.
naming-grepstandaloneCLAUDE.md Coding Conventions (kebab-case naming)Validate filesystem paths against the canonical naming convention.
no-global-plans-grepstandaloneCLAUDE.md Plans Discipline (no global plans)Walk the git index for tracked plans paths; fail when found.
no-toplevel-docs-grepstandalonesingle-source-of-truth (docs live in site/, not root docs/)Fail when a top-level docs/ directory exists at the repository root.
oidc-trusted-publishing-grepstandaloneOIDC trusted publishingVerify release workflows use OIDC trusted publishing.
option-annotation-grepper-writeM7 option-annotation (H6 per-option bind)Enforce the per-option Recommended label-to-body bind (H6).
orphan-output-grepper-writeM12 canonical-layout + M14 systemicityFlag artifacts emitted to non-canonical locations or without provenance.
permissions-minimum-scope-grepstandaloneminimum-scope workflow permissionsVerify every GitHub Actions workflow declares a minimum-scope permissions: block.
plain-language-grepstandalonerules/plain-language.md — user-facing proseFlag mechanistic / harness-internal vocabulary in user-facing prose.
plan-next-step-consistency-grepstandalonerules/recommend-next-step.mdAdvisory: flag plan-suite infra files whose Recommended-Next-Step footer drifts from the suite's recorded next pipeline stage.
plan-suite-structure-grepstandalonecontext-management-scratch 2 (suite-locality + closed vocab) + canonical-layout-reporting-tiers 2.1 (numeric-prefix discipline)Validate plan-suite structure: suite-locality, closed vocab, numeric prefix.
plans-discipline-language-grepstandaloneCLAUDE.md Plans Discipline (multi-surface language)Verify the canonical Plans Discipline language reaches every required surface.
production-ready-pr-grepper-writeM15 production-ready §Same-change-setFlag commits whose change-set lacks the production-ready four-class shape.
recommend-next-step-grepstandalonerules/recommend-next-step.mdVerify every command file carries a ## Recommended Next Step block.
redundancy-grepstandalonerules/operational-mandates.md §CM-7 coherent-product non-redundancyFlag substantively-duplicated paragraphs across the governed corpus.
reference-token-grepstandalonerules/own-voice-reimplementation.mdFlag leaked reference-platform branding tokens on authored surfaces.
registry-capability-consistency-grepstandalonerules/agent-capability-discipline.md — registry capability cells backed by evidenceFlag registry capability cells not backed by install / materializer / projection evidence.
secret-leak-grepper-writeM13.8 security + M15 production-readyBlock emission of artifacts containing hardcoded credentials.
semver-stability-grepchange-setM15 semver-stabilitySemver stability matcher (M15 mechanical fraction).
smoke-install-grepstandaloneproduction-ready section 8.1 paired install scriptsSmoke-test the paired install scripts at the repository root.
static-version-grepstandalonerules/dynamism.md §static-version-resolutionVerify version-bearing sites resolve dynamically, not as static literals.
token-efficiency-grepper-writeclean-room-generation §5 + token-efficiency-rewriteFlag filler phrases, throat-clearing openers, and content-free qualifiers.
unpinned-action-grepper-writeM15 production-ready §Supply-chainFlag GitHub Actions workflows that pin actions to mutable refs.
user-confirm-grepper-writeM5 authority-inquiry §10Block emission of artifacts containing unresolved authority placeholders.
workflow-concurrency-grepstandaloneworkflow concurrency + per-job timeoutsEnforce concurrency + per-job timeout discipline on GitHub workflows.

Exécuter le portail

Sur un environnement installé, le portail s'exécute automatiquement : le settings.json de Claude Code le branche en tant que hook PreToolUse qui invoque la copie matérialisée à ~/.claude/.apothem/support/conformity/gate.py avant chaque Write/Edit. Le portail ne vérifie alors que les écritures situées dans la portée de son hook, et une écriture hors de cette portée passe silencieusement ; Exécuter le portail de conformité liste cette portée. Depuis un checkout du code source, la forme module exécute le même code ; faites précéder chaque commande python ci-dessous de PYTHONPATH=src. Le portail est consultatif par défaut : il signale les constats et se termine avec le code 0. Ajoutez --strict pour qu'il se termine avec le code 2 sur un constat bloquant. Un nom de validateur inconnu se termine avec le code 3.

# Every standalone validator across the repository:
python -m apothem.conformity.gate --all .

# The same sweep, failing on a blocking finding (the CI form):
python -m apothem.conformity.gate --all --strict .

# Every per-write validator against every tracked file:
python -m apothem.conformity.gate --all-perwrite .

# One validator by name (names come from --list):
python -m apothem.conformity.gate --check naming-grep .

# List every registered validator as JSON:
python -m apothem.conformity.gate --list

# Single-file dispatch (mimics the PreToolUse hook):
echo '{"tool_input": {"file_path": "path/to/file", "content": "..."}}' \
    | python -m apothem.conformity.gate --hook

python -m apothem.conformity.gate --help affiche le résumé d'utilisation. Voir Exécuter le portail de conformité pour la procédure complète.

Référence

On this page