Normes de développement
Les normes (NDD) du projet : les résoudre, les importer, les synchroniser, les amender.
ndd_amendment_accept
effortless_ndd_amendment_accept — Stabilité : beta · projet
Accepte une proposition d'amendement NDD : écrit toujours le contenu accepté côté local (.ai/ndd/<famille>/<famille>-ndd.v1.md), jamais dans un fichier .heritee.md, car amender une règle héritée est une surcharge locale du même identifiant. Même identifiant que la cible : édite la section en place. Identifiant différent : ajoute une section neuve sans toucher l'ancienne. Valide le texte résultant avant d'écrire : une collision d'identifiant refuse sans rien écrire. Refuse aussi une proposition inconnue, déjà arbitrée, ou un target_id introuvable.
« Accepte la proposition d'amendement AMD-03. »
| Nom | Type | Requis | Description |
|---|---|---|---|
proposal_id | string | oui | Id de la proposition d'amendement à accepter, tel que rendu par effortless_ndd_amendment_propose. Obligatoire. |
ndd_amendment_propose
effortless_ndd_amendment_propose — Stabilité : beta · projet
Propose un amendement de règle NDD (édition d'un identifiant existant, ou règle neuve si target_id est absent) : assemble le texte candidat et le fait analyser par le même code que ndd_resolve. Écrit uniquement le registre .effortless/ndd_amendments.json (statut Proposé) ; aucun fichier sous .ai/ndd/ n'est touché. Refuse nommément une famille inconnue, un niveau hors norme ou un Pourquoi absent.
« Propose un amendement à la norme rust sur la règle RUST-012, qui garde son identifiant, au niveau INTERDIT, titré « Pas de unwrap() hors des tests ». Pourquoi : un unwrap() qui échoue fait paniquer le programme. Corps : n'utiliser `unwrap()` que dans les tests. »
effortless_ndd_amendment_proposefamily=rusttarget_id=RUST-012proposed_id=RUST-012level=INTERDITtitle=Pas de unwrap() hors des testswhy=Un unwrap() qui échoue fait paniquer le programme.body=N'utiliser `unwrap()` que dans les tests.
| Nom | Type | Requis | Description |
|---|---|---|---|
family | string | oui | Famille NDD visée ; elle doit exister sous .ai/ndd/. Obligatoire. |
target_id | string | non | Id de la règle existante que l'amendement modifie ; absent pour une règle neuve. |
proposed_id | string | oui | Id que portera la règle une fois acceptée. Obligatoire. |
level | string | oui | Niveau de la règle : OBLIGATOIRE, RECOMMANDÉ ou INTERDIT ; toute autre valeur est refusée. Obligatoire. |
title | string | oui | Titre de la règle. Obligatoire. |
why | string | oui | Justification de la règle (la section Pourquoi) ; une valeur vide est refusée. Obligatoire. |
body | string | oui | Texte du corps de la règle. Obligatoire. |
ndd_amendment_reject
effortless_ndd_amendment_reject — Stabilité : beta · projet
Rejette une proposition d'amendement NDD : pose le statut Rejeté, le motif (obligatoire, mot pour mot) et un horodatage dans .effortless/ndd_amendments.json. Aucun fichier sous .ai/ndd/ n'est ouvert en écriture. Refuse nommément un motif vide ou blanc, une proposition inconnue ou déjà arbitrée.
« Rejette la proposition d'amendement AMD-03, motif : elle contredit la règle de la norme héritée. »
effortless_ndd_amendment_rejectproposal_id=AMD-03reason=Elle contredit la règle de la norme héritée.
| Nom | Type | Requis | Description |
|---|---|---|---|
proposal_id | string | oui | Id de la proposition d'amendement à rejeter, tel que rendu par effortless_ndd_amendment_propose. Obligatoire. |
reason | string | oui | Motif du rejet, consigné mot pour mot ; une valeur vide est refusée. Obligatoire. |
ndd_import
effortless_ndd_import — Stabilité : beta · projet
Importe une norme de développement hébergée dans un dépôt partagé : lecture par git show <dépôt>/<réf>:<chemin> (déclaré dans languages[].ndd.source de la stack), sans fetch ni clone. Pose .ai/ndd/<famille>/<famille>-ndd.v1.heritee.md (contenu brut, sans validation) et son fichier de provenance {depot, reference, date}. Une référence git absente ou invalide dégrade proprement (available:false et raison nommée, aucun fichier posé). Refuse nommément un stack_id inconnu, une techno absente de la stack ou une source qui n'est pas git. Seul point d'écriture des normes héritées par import ; ndd_resolve reste en lecture seule.
« Importe la norme rust depuis le dépôt de normes partagé, pour la stack app. »
| Nom | Type | Requis | Description |
|---|---|---|---|
stack_id | string | oui | Id de la stack dont la déclaration languages[].ndd.source est importée. Obligatoire. |
techno | string | oui | Id du langage déclaré (languages[].id) dont la source git est importée ; c'est aussi le nom de la famille NDD posée. Obligatoire. |
ndd_resolve
effortless_ndd_resolve — Stabilité : beta · projet
Lecture seule. Résout les normes de développement (NDD) applicables : par familles déclarées (stack), dérivées d'un chemin (path), ou l'ensemble du corpus connu si les deux sont absents. Rend chaque règle qualifiée (id, niveau, titre, pourquoi, famille, origine, fichier, ligne), triée par famille puis identifiant ; le corps n'est servi que si include_body est vrai. Refuse par son nom une famille inconnue, un niveau hors norme, un Pourquoi absent, un identifiant en double ou l'absence totale de normes sous .ai/ndd/.
« Quelles normes de développement s'appliquent au fichier src/parser.rs ? »
| Nom | Type | Requis | Description |
|---|---|---|---|
stack | array<string> | non | Familles NDD déclarées à résoudre, nommées comme les dossiers de .ai/ndd/ ; une famille inconnue est refusée. Avec path aussi absent, tout le corpus connu est résolu. |
path | string | non | Chemin relatif au projet dont on dérive des familles supplémentaires, en plus de stack. |
include_body | boolean | non | Si true, rend le corps de chaque règle ; défaut false (les corps sont de la prose libre, coûteuse à transmettre). |
ndd_source
effortless_ndd_source — Stabilité : beta · sans projet · utilisable avant tout projet
Lit ou déclare la source globale des normes de développement (~/.effortless/ndd_source.json) : un dossier local ou une URL git, suivie par effortless_ndd_sync. Sans source : lit. source vide : retire. Un projet peut la surcharger par settings.ndd_source dans effortless.json.
« Déclare ma source globale de normes : le dépôt git https://github.com/ArboRithm/normes.git. »
| Nom | Type | Requis | Description |
|---|---|---|---|
source | string | non | Adresse du dépôt de normes : dossier local ou URL git. Absent : lit la source actuelle ; chaîne vide : retire la source. |
reference | string | non | Branche ou tag à suivre pour une source git (défaut : la branche par défaut). |
ndd_sync
effortless_ndd_sync — Stabilité : beta · projet
Met à jour les normes héritées du projet depuis son dépôt de normes (source du projet, sinon globale) : pour chaque langage du projet (stacks déclarées, familles présentes, et agnostic), écrit .ai/ndd/<famille>/<famille>-ndd.v1.heritee.md et sa provenance. Ne touche jamais la norme locale. Rend les familles mises à jour, inchangées, et celles que le dépôt ne porte pas. Une source git est clonée puis suivie par fetch dans ~/.effortless/ndd-cache/.
« Mets à jour les normes héritées du projet depuis le dépôt de normes. »
effortless_ndd_syncAucun paramètre.