Changelog
Historique des versions d'Agentica — chaque entrée décrit les changements, décisions et améliorations apportées au système. Agentica version history — each entry describes the changes, decisions, and improvements made to the system.
Unreleased
Gouvernance — skills Claude Code et tests du découplageGovernance — Claude Code skills and decoupling tests
- 6 skills personnalisés (
quality-gate,ux-pattern-review,ai-component-metadata,ai-ds-composer,codebase-index,post-change-pipeline) déplacés de fichiers plats.claude/skills/<nom>.md, invisibles au loader de Claude Code, vers le format qu'il découvre réellement (<nom>/SKILL.md). Constaté dans cet ordre : le répertoire seul a suffi à faire apparaître les 6 dans la liste des skills invocables, avant l'ajout de tout frontmatter (description de repli affichée à ce stade) ; le frontmatter YAML ajouté ensuite n'a fait que remplacer cette description de repli par la description réelle. Convention actée dansADR-097(#122, PR #125)6 custom skills (quality-gate,ux-pattern-review,ai-component-metadata,ai-ds-composer,codebase-index,post-change-pipeline) moved from flat.claude/skills/<name>.mdfiles, invisible to Claude Code's skill loader, to the format it actually discovers (<name>/SKILL.md). Observed in this order: the directory alone was enough to make all 6 appear in the invocable-skill list, before any frontmatter was added (a fallback description shown at that stage); the YAML frontmatter added afterward only replaced that fallback with the real description. Convention recorded inADR-097(#122, PR #125) decisions/CHANGELOG-structure.mdcréé : journal des déplacements/renommages mécaniques, distinct du pourquoi immuable d'une ADR ;decisions/README.mdgagne une note précisant qu'un déplacement de fichier ne rend jamais seul une ADRSuperseded(ADR-097, PR #125)decisions/CHANGELOG-structure.mdcreated: a log of mechanical relocations/renames, distinct from an ADR's immutable why;decisions/README.mdgains a note that a file move alone never marks an ADRSuperseded(ADR-097, PR #125)- 3 des 9 tests de la campagne C3 (frontière core/personnalisation du Clone) ajoutés sous
tests/governance/: personnalisation appliquée à chacun des 5 paliers réels sans changement souscore/(clone-personalization-tiers.spec.js), réinstallation decore/qui écrase une modification directe sans perdre la personnalisation adjacente (clone-core-reinstall-preserves-personalization.spec.js), et — validation locale, sans lecture réseau, donc sans comparaison au paquet réellement publié sur le registre npm — la preuve que reconstruire@agentica-ds/tokens/@agentica-ds/componentsdepuis la source versionnée est déterministe (deux reconstructions consécutives identiques), strictement identique à cette source (copie verbatim decomponents/et des quatretokens/*.json), sans dérive R3/R4 (packages-published-build-determinism.spec.js). Les 6 autres tests de la campagne restent différés ou hors périmètre :C3-03/04/05/07faute de paquet npm distribué pour le core du Clone,C3-06faute d'unagentica.config.jsexistant à valider,C3-08hors périmètre (test humain à froid) (PR #124)3 of campaign C3's 9 tests (the Clone's core/personalization boundary) added undertests/governance/: personalization applied at each of the 5 real tiers with no change undercore/(clone-personalization-tiers.spec.js), reinstallingcore/overwrites a direct modification without losing the adjacent personalization (clone-core-reinstall-preserves-personalization.spec.js), and — local validation, no network read, so no comparison against the package actually published on the npm registry — proof that rebuilding@agentica-ds/tokens/@agentica-ds/componentsfrom tracked source is deterministic (two consecutive rebuilds identical), strictly identical to that source (verbatim copy ofcomponents/and the fourtokens/*.jsonfiles), with no R3/R4 drift (packages-published-build-determinism.spec.js). The campaign's 6 remaining tests stay deferred or out of scope:C3-03/04/05/07for lack of a distributed npm package for the Clone's core,C3-06for lack of an existingagentica.config.jsto validate,C3-08out of scope (a cold, human usability test) (PR #124) - Campagne C4 (Master Skill) exécutée de bout en bout, protocole du plan de tests respecté à la lettre : dossier isolé hors du repo, agent neuf sans accès à ce dépôt. Les 5 phases s'enchaînent dans l'ordre attendu avec une pause de confirmation humaine à chacune des 5 frontières (
C4-02,C4-03✅), et l'instance produite fait réellement mordre ses propres lints et validations de tokens dans les deux sens, rouge sur violation injectée puis vert après nettoyage (C4-04✅, portée réduite — aucuncore/construit à ce stade pour exercer la règle d'accessibilité). Un vrai défaut trouvé (C4-01❌ au sens strict) : les scripts d'audit produits en Phase 03 plantaient sur l'absence decore/au lieu de sortir proprement, révélé seulement après le commit fondateur, lors d'une vérificationnpm install+npm run auditdemandée après coup — pas une étape du script lui-même. Corrigé dansmaster-skill/execution/03-audit-setup.md: la phase doit désormais s'exécuter réellement avant d'être présentée à l'humain, gérer l'absence decore/par un exit propre, et produire un.gitignoreCampaign C4 (Master Skill) run end-to-end, the test plan's protocol followed to the letter: an isolated folder outside the repo, a fresh agent with no access to this repository. The 5 phases run in the expected order with an explicit human-confirmation pause at each of the 5 boundaries (C4-02,C4-03✅), and the produced instance makes its own lints and token validations genuinely bite in both directions — red on an injected violation, green after cleanup (C4-04✅, reduced scope — nocore/was built at this stage to exercise the accessibility rule). One real defect found (C4-01❌ in the strict sense): the audit scripts produced in Phase 03 crashed on the absence ofcore/instead of exiting cleanly, only surfaced after the founding commit, during annpm install+npm run auditcheck requested afterward — not a step of the script itself. Fixed inmaster-skill/execution/03-audit-setup.md: the phase must now actually run before being presented to the human, handle the absence ofcore/with a clean exit, and produce a.gitignore
Audit — règle 4 bloquante en CIAudit — Rule 4 now blocking in CI
scripts/audit-tokens.js: le motifprimitive-directpasse dewarningàerror—--ciéchoue désormais sur toute primitive consommée directement (règle 4 deGOVERNANCE.md, ADR-098, amende le comportement décrit dans ADR-012). L'exemption des replis littérauxvar(--x, #fff)ne couvre plus ce motif. Seule occurrence réelle :--site-violet, conservée sousaudit-ignorejustifié en attendant un token sémantique violetscripts/audit-tokens.js: theprimitive-directpattern moves fromwarningtoerror—--cinow fails on any primitive consumed directly (Rule 4 ofGOVERNANCE.md, ADR-098, amends the behavior described in ADR-012). The literal-fallback exemptionvar(--x, #fff)no longer covers this pattern. Only real occurrence:--site-violet, kept under a justifiedaudit-ignoreuntil a semantic violet token existsscripts/audit-tokens.js: le filtref.includes('dist')testait une sous-chaîne du chemin absolu — tout fichier dont le chemin contenait « dist » (un dossierdistribution/, ou un clone du repo sous~/distrib/) échappait silencieusement à tout l'audit, y comprisprimitive-directdésormais bloquant. Retiré : les dossiersdist/restent exclus par nom exact dansgetSourceFiles(). Seule sortie générée qui n'était exclue que par ce hasard,tests/functional/fixtures/doc-generator-dist/, est désormais listée explicitement dansGENERATED_PATHS. Et--cifixeprocess.exitCodeau lieu d'appelerprocess.exit(1), qui pouvait tronquer le détail des violations dans les logs CI (issue #118)scripts/audit-tokens.js: thef.includes('dist')filter tested a substring of the absolute path — any file whose path contained “dist” (adistribution/folder, or a clone of the repo under~/distrib/) silently escaped the whole audit, including the now-blockingprimitive-direct. Removed:dist/directories stay excluded by exact name ingetSourceFiles(). The only generated output that was excluded by that accident,tests/functional/fixtures/doc-generator-dist/, is now listed explicitly inGENERATED_PATHS. And--cisetsprocess.exitCodeinstead of callingprocess.exit(1), which could truncate the violation details in CI logs (issue #118)playwright.yml: l'étape « Upload updated snapshots » s'exécute désormais enalways()— un seul test rouge sans rapport ne jette plus les baselines correctement régénérées parupdate_snapshots=true, qui étaient jusqu'ici écartées sans erreur (étapeskipped). Un avertissement signale dans le résumé du run tout artefact issu d'un run partiellement rouge, à relire avant de committer (issue #141)playwright.yml: the “Upload updated snapshots” step now runs underalways()— a single unrelated failing test no longer discards baselines correctly regenerated byupdate_snapshots=true, which were until now silently dropped (stepskipped). A warning in the run summary flags any artifact coming from a partially red run, to review before committing (issue #141)- Builds reproductibles :
style-dictionary/build.cjsretire la ligneGenerated on <date>que ses formats intégrés (CSS, JS, iOS, Android) tamponnaient avec l'horloge — deux builds du même commit sont désormais identiques à l'octet près, pour le paquet@agentica-ds/tokenspublié comme pourdist/tokens/versionné. Le test C3-09 retire son contournement et compare les vrais octets publiés. Même correction pouraudit.html: sa date provient degit logsur les sources de l'audit plutôt que de l'heure du build, ce qui permet àsite-freshnessde le vérifier à nouveau — un verdict d'audit périmé resté commité passait jusqu'ici inaperçu (issues #123, #134)Reproducible builds:style-dictionary/build.cjsdrops theGenerated on <date>line its built-in formats (CSS, JS, iOS, Android) stamped from the clock — two builds of the same commit are now byte-identical, for the published@agentica-ds/tokenspackage as well as the trackeddist/tokens/. The C3-09 test drops its workaround and compares the real published bytes. Same fix foraudit.html: its date now comes fromgit logover the audit's sources instead of the build clock, sosite-freshnesschecks it again — a stale committed audit verdict used to go unnoticed (issues #123, #134) - Titres d'ADR : les spans de code Markdown (44 titres, ex.
agtc-input) s'affichent désormais en<code>dans le H1 de chaque page de décision et dans l'index des décisions, au lieu de backticks bruts. Le texte est échappé d'abord, puis enveloppé — le contenu d'un span peut contenir*,_ou<. Dans l'index, le code d'un titre n'est plus coupé en plein mot (issue #147, volet B de #145)ADR titles: Markdown code spans (44 titles, e.g.agtc-input) now render as<code>in each decision page's H1 and in the decisions index, instead of raw backticks. Text is escaped first, then wrapped — a span's content may hold*,_or<. In the index, code in a title no longer breaks mid-word (issue #147, part B of #145) - Storybook : les 7 stories d'
agtc-images'affichaient vides (14 captures Chromatic refusées). Deux causes :.storybook/preview.jsn'importait pasagtc-image.js, donc l'élément n'était jamais défini, et chaque story chargeait une image externe (picsum.photos) que le navigateur de capture de Chromatic ne récupère pas de façon fiable. Composant désormais enregistré, et images remplacées par des fixtures locales embarquées (components/fixtures/, JPEG + WebP) qui affichent leur propre format — la story WebP montre ainsi quelle source le navigateur a choisie (issue #151)Storybook: the 7agtc-imagestories rendered blank (14 Chromatic snapshots denied). Two causes:.storybook/preview.jsnever importedagtc-image.js, so the element was never defined, and every story loaded an external image (picsum.photos) that Chromatic's capture browser doesn't reliably fetch. The component is now registered, and the images are replaced by local bundled fixtures (components/fixtures/, JPEG + WebP) that print their own format — so the WebP story shows which source the browser picked (issue #151) - Storybook :
agtc-tabsetagtc-top-navn'étaient jamais définis non plus (absents de.storybook/preview.js, non importés par leurs stories) — leurs 8 stories affichaient le HTML brut et leurs baselines Chromatic n'avaient jamais vérifié le composant. Les deux sont désormais enregistrés ; les 104 stories ne contiennent plus aucun élémentagtc-*non défini. Ce premier rendu réel a révélé un défaut deagtc-top-nav, suivi à part (issues #162, #164)Storybook:agtc-tabsandagtc-top-navwere never defined either (missing from.storybook/preview.js, not imported by their stories) — their 8 stories showed raw HTML and their Chromatic baselines had never checked the component. Both are now registered; none of the 104 stories contains an undefinedagtc-*element anymore. This first real render surfaced anagtc-top-navdefect, tracked separately (issues #162, #164) agtc-top-nav: les hrefs de type dossier ('../tokens/'), la forme documentée par la guideline du composant, sont désormais marqués actifs (aria-current="page"+ indicateur) sur les pages de leur section — le dernier segment était lu comme un nom de fichier, aucun lien n'était donc jamais actif avec cette forme. Le site, qui passe des hrefssection/index.html, n'était pas touché. Test fonctionnel ajouté (tests/functional/components/top-nav.spec.js) ; les stories Storybook montrent enfin l'état actif (issue #164)agtc-top-nav: directory-style hrefs ('../tokens/'), the form the component guideline documents, are now marked active (aria-current="page"+ indicator) on their section's pages — the last segment was read as a file name, so no link was ever active with that form. The site, which passessection/index.htmlhrefs, was unaffected. Functional test added (tests/functional/components/top-nav.spec.js); the Storybook stories finally show the active state (issue #164)agtc-top-nav: l'ombre du panneau du menu mobile utilise désormais le tokensemantic.shadow.raised. Elle consommait--agtc-shadow-md, une variable définie uniquement par le CSS du site : dans toute application utilisant le paquet, le menu mobile n'avait aucune ombre. Nouveau contrôle 5 descripts/audit-tokens.js(bloquant en CI) : un composant ne peut consommer une variable--agtc-*absente de@agentica-ds/tokensque s'il lui donne une valeur de repli ; test de gouvernance ajouté. Variante sombre des ombres suivie dans #210 (issue #208)agtc-top-nav: the mobile menu panel shadow now uses thesemantic.shadow.raisedtoken. It consumed--agtc-shadow-md, a variable defined only by the site CSS, so in any app using the package the mobile menu had no shadow. New check 5 inscripts/audit-tokens.js(blocking in CI): a component may only consume a--agtc-*variable missing from@agentica-ds/tokensif it gives it a fallback; governance test added. Dark-mode shadow variants tracked in #210 (issue #208)- ADR-103 — élévation en mode sombre : chaque token
semantic.shadow.*non déprécié a désormais une variante sombre (même géométrie, opacité renforcée), et un nouveau tokenbackground.surface-raisedéclaircit les menus, popovers et panneaux mobiles en sombre, comme chez Atlassian, Apple, Carbon et Radix. L'échelle d'ombres propre au site (--agtc-shadow-sm/md/lg) est retirée au profit des tokens. Nouveau contrôle 6 descripts/audit-tokens.js(bloquant en CI) : une ombre sans variante sombre fait échouer l'audit.shadow.card-hoverest déprécié (issue #210)ADR-103 — dark-mode elevation: every non-deprecatedsemantic.shadow.*token now has a dark variant (same geometry, stronger opacity), and a newbackground.surface-raisedtoken lightens menus, popovers and mobile panels in dark mode, as Atlassian, Apple, Carbon and Radix do. The site-only shadow scale (--agtc-shadow-sm/md/lg) is removed in favour of the tokens. New check 6 inscripts/audit-tokens.js(blocking in CI): a shadow with no dark variant fails the audit.shadow.card-hoveris deprecated (issue #210) - Garde-fou
tests/governance/storybook-component-registration.spec.js: échoue si un composant qui a des stories n'est importé ni par.storybook/preview.jsni par sa propre story (en suivant les imports de façon transitive) — l'élément n'y serait jamais défini et Chromatic figerait un rendu vide. Ce trou était passé inaperçu deux fois (agtc-image, puisagtc-tabsetagtc-top-nav). Vérification statique, sans build Storybook, confrontée à un vrai build sur les 104 stories. Le gate PR Playwright se déclenche désormais aussi surcomponents/**et.storybook/preview.js, pour que ce contrôle tourne avant le mergeGuardtests/governance/storybook-component-registration.spec.js: fails if a component with stories is imported neither by.storybook/preview.jsnor by its own story (following imports transitively) — the element would never be defined there and Chromatic would baseline an empty render. That gap went unnoticed twice (agtc-image, thenagtc-tabsandagtc-top-nav). Static check, no Storybook build, cross-checked against a real build on all 104 stories. The Playwright PR gate now also triggers oncomponents/**and.storybook/preview.js, so this check runs before merge - Chromatic : quota de snapshots du plan gratuit de nouveau atteint.
chromatic.ymlne se déclenche plus que sur ce qui construit Storybook (components/,.storybook/,tokens/,style-dictionary/,package*.json) —site/build.js, qui porte ce changelog, relançait à lui seul un build complet d'environ 208 snapshots sur presque chaque PR. TurboSnap (onlyChanged) activé : seules les stories dont les dépendances ont changé sont capturées. Déclencheur passé depull_requestàpushhorsmain, condition de TurboSnap. ADR-006 et documents de gouvernance mis à jourChromatic: free-tier snapshot quota hit again.chromatic.ymlnow only triggers on what builds Storybook (components/,.storybook/,tokens/,style-dictionary/,package*.json) —site/build.js, which holds this changelog, alone triggered a full ~208-snapshot build on almost every PR. TurboSnap (onlyChanged) enabled: only stories whose dependencies changed get captured. Trigger moved frompull_requesttopushoutsidemain, a TurboSnap requirement. ADR-006 and governance docs updated doc-generator: chaque champ chemin/libellé du manifeste (governance,site,tokens.*,components,audit.engine) doit être une chaîne non vide — un mauvais type est rejeté en nommant le champ, le type attendu et le type reçu. Avant, un objet passait et s'affichait « [object Object] » dans le site généré (sortie 0), et un nombre faisait planternode:pathsans nommer le champ. Un fichiersitequi n'est pas du JSON valide nomme désormais le champ, le manifeste et le fichier. Aucune sortie écrite dans tous les cas de rejet ; le test de caractérisation #128 est remplacé par de vrais tests de rejet (issues #128, #129)doc-generator: every path/label manifest field (governance,site,tokens.*,components,audit.engine) must be a non-empty string — a wrong type is rejected, naming the field, the expected type and the type received. Before, an object went through and showed up as “[object Object]” in the generated site (exit 0), and a number crashednode:pathwithout naming the field. Asitefile that isn't valid JSON now names the field, the manifest and the file. No output is written in any rejection case; the #128 characterization test is replaced by real rejection tests (issues #128, #129)- ADR-100 — le badge de conformité du
doc-generatoraffiche un verdict d'audit enregistré, jamais le drapeaubadgeEnabled. Nouveau champ optionnelaudit.lastResult(passed,violationCount,ranAt,engine), validé à la lecture ; sans lui, le site affiche « not verified » au lieu de « enabled ». Un audit stub n'en enregistre jamais — celui du Clone l'est encore, les sites affichent donc honnêtement « not verified ».GOVERNANCE.mdgagne une phrase de principe, indépendante de tout outil (issue #130)ADR-100 — thedoc-generatorcompliance badge shows a recorded audit verdict, never thebadgeEnabledflag. New optional fieldaudit.lastResult(passed,violationCount,ranAt,engine), validated on read; without it the site shows “not verified” instead of “enabled”. A stub audit never records one — the Clone's still is, so sites honestly show “not verified”.GOVERNANCE.mdgains one tool-agnostic principle sentence (issue #130) - ADR-101 — le gate PR de
playwright.yml(« Governance & accessibility fixtures ») peut devenir un check obligatoire demain: le filtrepathsdu déclencheurpull_requestest retiré (un check obligatoire sauté par ce filtre reste « en attente » et bloque toute PR) et le périmètre passe dans le job, via une étapedorny/paths-filterqui conditionne chaque étape suivante. Une PR hors périmètre passe en quelques secondes ; le test de couverture du gate verrouille ce montage (issue #149)ADR-101 — theplaywright.ymlPR gate (“Governance & accessibility fixtures”) can become a required check onmain: thepull_requesttrigger'spathsfilter is removed (a required check skipped by it stays “pending” and blocks every PR) and the scope moves inside the job, via adorny/paths-filterstep that guards every later step. An out-of-scope PR passes in seconds; the gate coverage test locks this setup (issue #149) - Clone : le test à froid C3-08 (2026-09-29) a bloqué dès l'entrée — le package déballé n'avait aucun point d'entrée ni aucune indication sur l'installation. Nouveau
clone/README.md(Node seul requis, étapes, noms de fichiers suggérés, limites de la 0.1.0) ; le guide, la checklist et les exemples renvoient à la copie livrée deGOVERNANCE.md(core/references/non-negotiable-foundation.md) au lieu d'un fichier absent ; le prérequis de la checklist ne suppose plus le Master Skill. Garde-foutests/governance/clone-package-self-contained.spec.jssur le tarball réelClone: the C3-08 cold walkthrough (2026-09-29) was blocked at the very start — the unpacked package had no entry point and nothing on installation. Newclone/README.md(Node only, steps, suggested file names, 0.1.0 limitations); the guide, checklist and examples point to the shipped copy ofGOVERNANCE.md(core/references/non-negotiable-foundation.md) instead of a missing file; the checklist prerequisite no longer assumes the Master Skill. Guardtests/governance/clone-package-self-contained.spec.json the real tarball - ADR-104 — Chromatic est retiré du dépôt (ADR-066 l'avait déjà remplacé par Playwright, sans finir le travail). Chaque story Storybook a maintenant sa capture Playwright, en clair et en sombre (
tests/visual/storybook/, stories lues dans l'index du build, jamais codées en dur). Storybook est publié avec le site suragentica.design/storybook/au lieu de l'hébergement Chromatic, qui ne suivait plusmain. Supprimés :chromatic.yml, le script et l'addon Chromatic,.storybook/modes.js, le contrôlechromaticdes attestations de parité ; ADR-006 remplacéeADR-104 — Chromatic is removed from the repository (ADR-066 had already replaced it with Playwright, without finishing the job). Every Storybook story now has a Playwright snapshot, light and dark (tests/visual/storybook/, stories read from the build's index, never hard-coded). Storybook is published with the site atagentica.design/storybook/instead of Chromatic hosting, which no longer followedmain. Removed:chromatic.yml, the Chromatic script and addon,.storybook/modes.js, thechromatictool-parity control; ADR-006 superseded
Tokens — schéma d'annotationTokens — annotation schema
- ADR-102 — schéma d'annotation des tokens, vérifié contre le JSON Schema officiel DTCG 2025.10 :
$descriptiondevient l'unique description ($intent, refusé par le schéma, y est fondu) ;$extensions["com.agentica.usage"]décrit l'usage d'un token (role,use,doNotUseobligatoires ; nouveau champalternativelisible par un agent) ;$extensions["com.agentica.governance"]remplace$metadata. Sorties Style Dictionary identiques octet pour octet après migration en bac à sable ; la migration des fichiers existants suit (issue #203)ADR-102 — token annotation schema, checked against the official DTCG 2025.10 JSON Schema:$descriptionbecomes the single description ($intent, rejected by the schema, is folded into it);$extensions["com.agentica.usage"]describes how to use a token (role,use,doNotUserequired; new agent-readablealternativefield);$extensions["com.agentica.governance"]replaces$metadata. Style Dictionary output byte-for-byte identical after a sandbox migration; migrating existing files follows (issue #203)
2026-09-13
v0.4.0 Master Skill + CloneMaster Skill + Clone
Gouvernance — GOVERNANCE.md, source canoniqueGovernance — GOVERNANCE.md, canonical source
GOVERNANCE.mdcréé à la racine du dépôt (PR #108) : source unique, brand-agnostique, des 4 règles non-négociables (WCAG 2.2 AA minimum, dernier mot toujours humain, jamais de style codé en dur, jamais de token primitif consommé directement), plus les sections Audit governance et Update governance. Ni le Master Skill ni le Clone ne gardent de copie éditée indépendammentGOVERNANCE.mdcreated at the repo root (PR #108): a single, brand-agnostic source for the 4 non-negotiable rules (WCAG 2.2 AA minimum, the final word always belongs to a human, never a hard-coded style, never a primitive token consumed directly), plus Audit governance and Update governance sections. Neither the Master Skill nor the Clone keep an independently edited copyscripts/sync-governance.mjs+scripts/check-governance-sync.mjsajoutés : génèrentreferences/non-negotiable-foundation.mdà chaque destination (clone/core/references/,master-skill/references/), exécution manuelle uniquement (npm run sync:governance), avec un check CIgovernance-syncqui échoue sur toute divergence sans jamais la corriger lui-mêmescripts/sync-governance.mjs+scripts/check-governance-sync.mjsadded: generatereferences/non-negotiable-foundation.mdat each destination (clone/core/references/,master-skill/references/), manual execution only (npm run sync:governance), with agovernance-syncCI check that fails on any drift without ever fixing it itself
Clone — squelette npm, core/personnalisationClone — npm skeleton, core/personnalisation
clone/structuré comme package npm distribué (pas un scaffold one-shot) avec séparation strictecore/(jamais modifié) /personnalisation/(seule zone modifiable) — PR #109. Stubs d'audit posés danscore/audit/pour les 3 vérifications de build (accessibilité via un adaptateur axe-core remplaçable, style codé en dur, consommation de token primitif)clone/structured as a distributed npm package (not a one-shot scaffold) with a strictcore/(never modified) /personnalisation/(only modifiable zone) separation — PR #109. Audit stubs added undercore/audit/for the 3 build-time checks (accessibility via a replaceable axe-core adapter, hard-coded style, primitive-token consumption)- Guide de personnalisation complet ajouté (PR #112) :
GUIDE.md+CHECKLIST.md, et 5 sous-dossiers (branding/,theme/,governance/,agent-config/,docs-site/) chacun avec un exemple travailléFull personalization guide added (PR #112):GUIDE.md+CHECKLIST.md, and 5 subfolders (branding/,theme/,governance/,agent-config/,docs-site/) each with a worked example
Master Skill — format Agent Skills, logique d'exécutionMaster Skill — Agent Skills format, execution logic
master-skill/structuré au format Agent Skills (SKILL.md, pour publication sur skills.sh) — PR #110, sans aucune dépendance technique vers le Clonemaster-skill/structured in the Agent Skills format (SKILL.md, for publication on skills.sh) — PR #110, with no technical dependency on the Clone- Logique d'exécution rédigée (PR #111) : 5 phases (
00architecture composants,01gouvernance,02tokens,03audit,04instructions agent) plus un checklist consolidé des points d'arrêt humains. Web Components recommandé par défaut comme couche core (Brad Frost, The Design System Ecosystem) — toute dérogation exige un ADR documenté nommant le risque assuméExecution logic written (PR #111): 5 phases (00component architecture,01governance,02tokens,03audit,04agent instructions) plus a consolidated human-gates checklist. Web Components recommended by default as the core layer (Brad Frost, The Design System Ecosystem) — any deviation requires a documented ADR naming the assumed risk
Générateur de documentationDocumentation generator
doc-generator/ajouté (PR #113) : package indépendant, jamais bundlé, qui lit un contratdesign-system.manifest.jsonet génère un site statique — indifféremment que l'instance vienne du Clone ou du Master Skill, vérifié sur deux manifests simulés. Sortie jamais versionnéedoc-generator/added (PR #113): a standalone, never-bundled package that reads adesign-system.manifest.jsoncontract and generates a static site — identically whether the instance came from the Clone or the Master Skill, verified against two simulated manifests. Output is never versioned
Audit — couche primitive du CloneAudit — the Clone's primitive layer
scripts/audit-tokens.jsgagnePRIMITIVE_LAYER_PATHS(PR #112) : exempteclone/personnalisation/branding/— la couche primitive du Clone — de la détection de valeurs codées en dur, un vrai trou structurel distinct de l'exemption narrativeDOCS_AND_PLUGIN_PATHSdéjà en place ;theme/etcore/restent dans le périmètre. Corrige au passage un vrai bug de contenu que l'audit avait révélé : une valeur hex brute dans le mappingfeedback.errordetheme/example.md, remplacée par une vraie référence de primitifscripts/audit-tokens.jsgainsPRIMITIVE_LAYER_PATHS(PR #112): exemptsclone/personnalisation/branding/— the Clone's primitive layer — from hardcoded-value detection, a real structural gap distinct from the existing narrativeDOCS_AND_PLUGIN_PATHSexemption;theme/andcore/stay in scope. Also fixes a real content bug the audit surfaced: a raw hex value intheme/example.md'sfeedback.errormapping, replaced with a proper primitive reference
2026-09-12
v0.3.3 Packages npm v1.0.0npm packages v1.0.0
Site — interopérabilité IASite — AI interoperability
- 5ᵉ bloc éditorial « Interopérabilité IA » ajouté à
ia.html, pointant vers le comparatif par outil déjà publié suragents/index.html#autres-outils(PR #97, suite de la PR #96)5th editorial block "AI interoperability" added toia.html, linking to the per-tool comparison already shipped onagents/index.html#autres-outils(PR #97, following PR #96) How-to-devs.md: nouvelle sous-section « Utiliser un autre outil IA (Codex, Copilot, Gemini) » + lignegovernance/ai-skills-reference.mddans son tableau de fichiers ; note plus courte surHow-to-designers.md;How-to-without-agents.mdvolontairement laissé tel quel — guide de repli zéro-agent, un axe différent du support multi-outilsHow-to-devs.md: new "Using another AI tool (Codex, Copilot, Gemini)" subsection + agovernance/ai-skills-reference.mdrow in its Files table; shorter note onHow-to-designers.md;How-to-without-agents.mddeliberately left alone — the zero-agent fallback guide, a different axis from multi-tool support- Lien Changelog déplacé de la colonne « Documentation » vers « Explorer », dans le menu du header et le footerChangelog link moved from the "Documentation" to the "Explorer" column, in both the header menu and the footer
- Contenu « Interopérabilité IA » marqué Bêta"AI interoperability" content marked Beta
Tokens — largeur de conteneur de pageTokens — page container width
- Nouvelle catégorie
semantic.layout: 5 tokens de largeur max de conteneur (cta600px,intro700px,docs960px,default1180px,wide1280px, ADR-096) ; 25 valeursmax-widthbrutes/dupliquées desite/build.jsmigrées vers ces tokens,--agtc-content-maxdevenu un simple aliasNewsemantic.layoutcategory: 5 page-container max-width tokens (cta600px,intro700px,docs960px,default1180px,wide1280px, ADR-096); 25 raw/duplicatedmax-widthvalues insite/build.jsmigrated to these tokens,--agtc-content-maxnow a thin alias - Lacune révélée par un vrai test d'interopérabilité : GitHub Copilot, sur un clone du dépôt, a eu besoin d'une largeur de conteneur de page, a correctement refusé de réutiliser
semantic.size.control.max-widthhors de son contrat (ADR-094), et a escaladé selon la règle d'AGENTS.mdsur tout changement touchant un token sémantique — aucune réponse gouvernée n'existait pour la largeur de mise en page, comblé iciGap surfaced by a real AI-tool interoperability test: GitHub Copilot, on a clone of this repo, needed a page container width, correctly refused to reusesemantic.size.control.max-widthoutside its ADR-094 contract, and escalated perAGENTS.md's rule for any change touching a semantic token — no governed answer existed for page-layout width, now closed - Ménage : CSS morte
.rd-cta-innersupprimée, 2 valeurs isolées à 760px repliées sur le motif 700px déjà cohérentCleanup: dead.rd-cta-innerCSS removed, 2 outlier 760px values folded into the already-consistent 700px pattern
Gouvernance — pipeline de vérification du backlogGovernance — backlog verification pipeline
pipelines/backlog.mdajouté : pipeline obligatoire qui vérifie/valide/complète GitHub Projects par rapport au diff complet d'une PR, exécuté une fois à la fin de la PR (pas à chaque commit) — référencé depuispost-change-pipeline.md,quality-gate.mdet le gabarit de PR degit-workflow.md. Déclenché par un audit le jour même ayant trouvé 22 statuts de ticket obsolètes et 7 références « Dépendance » périmées en comparant le tableau augit logpipelines/backlog.mdadded: a mandatory pipeline that verifies/validates/completes GitHub Projects against a PR's full diff, run once at PR completion (not per-commit) — referenced frompost-change-pipeline.md,quality-gate.md, andgit-workflow.md's PR template. Prompted by a same-day audit finding 22 stale ticket statuses and 7 stale "Dépendance" references by comparing the board againstgit log
npm — relicenciement Apache 2.0, v1.0.0npm — Apache 2.0 relicense, v1.0.0
@agentica-ds/tokenset@agentica-ds/componentspassent de MIT à Apache License 2.0, exécutant le plan déjà annoncé dans leCHANGELOG.mdde chaque package aux côtés du changement de licence du dépôt (ADR-095, v0.3.1) :package.json,LICENSE, section License duREADME.mdetNOTICEmis à jour dans les deux packages, versions passées de 0.1.3 à 1.0.0. Les versions MIT déjà publiées (jusqu'à 0.1.3) restent inchangées@agentica-ds/tokensand@agentica-ds/componentsswitch from MIT to Apache License 2.0, executing the plan each package'sCHANGELOG.mdalready announced alongside the repo-wide license switch (ADR-095, v0.3.1):package.json,LICENSE, theREADME.mdLicense section andNOTICEupdated in both packages, versions bumped 0.1.3 → 1.0.0. Already-published MIT versions (up to 0.1.3) are unaffected
CI & testsCI & tests
- Test Playwright de langue corrigé : 9 pages ADR (adr-081 à adr-089) citant littéralement le statut français « Terminé » (ADR-069) n'avaient jamais été ajoutées aux exceptions connues, alors que le commentaire
lang-audit-ignorequ'elles portent déjà ne peut pas être vu par un scan du texte rendu — la CI était rouge sur chaque push versmaindepuis le 2026-09-11 (10 runs consécutifs en échec)Playwright language test fixed: 9 ADR pages (adr-081 through adr-089) literally quoting the French "Terminé" status (ADR-069) had never been added to the known exceptions, even though thelang-audit-ignorecomment they already carry can't be seen by a scan of rendered text — CI had been red on every push tomainsince 2026-09-11 (10 consecutive failing runs) - 41 snapshots de référence Playwright (chromium) régénérés (
workflow_dispatch, approbation humaine préalable) — devenus obsolètes depuis le symbole ™ du logo, l'icône Figma du header, le bouton copier des blocs de code et le reflow desemantic.layout.container; chaque diff inspecté individuellement, aucune régression41 chromium Playwright reference snapshots regenerated (workflow_dispatch, human-approved beforehand) — stale since the logo's ™ mark, the Figma header icon, the code-block copy button, and thesemantic.layout.containerreflow; every diff inspected individually, none a regression - Check CI
site-freshnesscorrigé : chaque<lastmod>desitemap.xml(145 URLs) était stampé avec l'horloge du build (new Date()) au lieu du contenu réel des pages — le check (qui reconstruitdist/et le diffe contre la version commitée) échouait donc un jour sur deux, indépendamment de tout vrai changement. Chaquelastmodest désormais le commit Git le plus récent parmi les sources réelles de la page ; stabilité vérifiée sur plusieurs builds avec horloge de processus falsifiée (même jour, +3 jours, −5 jours, +1 an) — sortie identique bit à bit dans tous les casCIsite-freshnesscheck fixed: every<lastmod>insitemap.xml(145 URLs) was stamped with the build's wall clock (new Date()) instead of the pages' real content — the check (which rebuildsdist/and diffs it against the committed copy) therefore failed every other day, regardless of any real change. Eachlastmodis now the most recent git commit across the page's actual sources; stability verified across several builds with a faked process clock (same day, +3 days, −5 days, +1 year) — bit-identical output in every case
Composants — correctionsComponents — fixes
- Storybook : fond et couleur de texte non peints en mode sombre dans la preview — désormais posés depuis les mêmes tokens sémantiques que le siteStorybook: preview background/text color left unpainted in dark mode — now set from the same semantic tokens the site itself uses
agtc-checkbox: les 2 glyphs SVG codés en dur (coche/tiret) remplacés paragtc-icon(Lucide), cohérent avec badge/banner/button/link/segmented/tabsagtc-checkbox: the 2 hardcoded inline SVG glyphs (check/dash) replaced withagtc-icon(Lucide), consistent with badge/banner/button/link/segmented/tabsagtc-feature-card: marge basse de l'icône codée en dur (.875rem) remplacée par le tokensemantic.space.component.padding.lgagtc-feature-card: hardcoded iconmargin-bottom(.875rem) replaced with thesemantic.space.component.padding.lgtoken- Émoji ✅ du tableau de props du composant
iconlui-même remplacé par le motif Lucidecircle-checkdéjà utilisé ailleurs sur cette page (governance/rules/no-emoji-icons.md)✅ emoji in theiconcomponent's own props table replaced with the Lucidecircle-checkpattern already used elsewhere on that page (governance/rules/no-emoji-icons.md)
2026-09-11
v0.3.2 Interopérabilité IAAI interoperability
Gouvernance — migration vers governance/Governance — migration to governance/
AGENTS.mddevient la seule source de vérité pour la gouvernance — lu nativement par Copilot, Cursor, Codex, Windsurf, Amp et Devin, pas seulement par Claude Code (issue #92, PR #93)AGENTS.mdbecomes the single source of truth for governance — read natively by Copilot, Cursor, Codex, Windsurf, Amp and Devin, not just Claude Code (issue #92, PR #93).claude/rules/et.claude/instructions/déplacés versgovernance/rules/etgovernance/instructions/(git mv, historique préservé) ;.claude/skills/reste en place — implémentation propre à Claude Code.claude/rules/and.claude/instructions/moved togovernance/rules/andgovernance/instructions/(git mv, history preserved);.claude/skills/stays in place — Claude Code-specific implementationCLAUDE.mdcréé — adaptateur mince qui importe@AGENTS.md, ne contient que ce qui est spécifique à Claude CodeCLAUDE.mdcreated — a thin adapter importing@AGENTS.md, containing only what's Claude Code-specificgovernance/ai-skills-reference.mdcréé : documente ce que chaque skill Claude Code automatise et pourquoi, pour que les équipes sur un autre outil sachent quoi reproduiregovernance/ai-skills-reference.mdcreated: documents what each Claude Code skill automates and why, so teams on a different tool know what to reproduce
Gouvernance — garde-fou de parité entre outilsGovernance — tool parity gate
scripts/check-tool-parity.js+.github/workflows/tool-parity.ymlajoutés (issue #94, PR #95) : pour chaque config d'outil IA détectée dans le dépôt, exige une attestationgovernance/tool-parity/<outil>.mdoù un humain déclare, pour chaque contrôle, « Replaced » ou « Accepted absence » — signé et datéscripts/check-tool-parity.js+.github/workflows/tool-parity.ymladded (issue #94, PR #95): for every AI-tool config detected in the repo, requires agovernance/tool-parity/<tool>.mdattestation where a human records, per control, "Replaced" or "Accepted absence" — signed and dated.codex/hooks.jsonsupprimé : doublon égaré identique octet pour octet à.claude/settings.json, et Codex CLI n'a de toute façon aucun système de hooks (confirmé dans sa documentation officielle) — n'aurait jamais pu fonctionner.codex/hooks.jsonremoved: a stray duplicate, byte-for-byte identical to.claude/settings.json, and Codex CLI has no hooks mechanism at all anyway (confirmed against its official docs) — could never have worked- 4 contrôles auparavant appliqués seulement « par instruction » à Claude Code deviennent de vrais gates CI indépendants de l'outil :
tokens-audit.yml,site-freshness.yml,commit-lint.ymlrejoignentlang-audit.yml(déjà actif)4 controls previously enforced only "by instruction" to Claude Code become real, tool-agnostic CI gates:tokens-audit.yml,site-freshness.yml,commit-lint.ymljoinlang-audit.yml(already active) tool-parityet les 3 nouveaux gates ajoutés aux checks requis de protection de branche surmainetdeveloptool-parityand the 3 new gates added to required branch-protection checks onmainanddevelop
Gouvernance — portage des skills vers d'autres outils IAGovernance — porting skills to other AI tools
- 7 skills cœur (
ai-component-metadata,ai-ds-composer,codebase-index,quality-gate,ux-pattern-review,document,post-change-pipeline) portées vers.agents/skills/<nom>/SKILL.md(PR #96), le format ouvert Agent Skills (agentskills.io, gouvernance Linux Foundation AAIF) — chargées automatiquement par Codex CLI et GitHub Copilot CLI, sans aucune installation7 core skills (ai-component-metadata,ai-ds-composer,codebase-index,quality-gate,ux-pattern-review,document,post-change-pipeline) ported to.agents/skills/<name>/SKILL.md(PR #96), the open Agent Skills format (agentskills.io, Linux Foundation AAIF governance) — auto-loaded by Codex CLI and GitHub Copilot CLI, no install step .gemini/settings.json+.gemini/hooks/*.jsajoutés : Gemini CLI a un vrai système de hooks (contrairement à Codex/Copilot), les rappels ADR et revue de patterns UX y sont reconstruits nativement — attestationgovernance/tool-parity/gemini.mdsignée.gemini/settings.json+.gemini/hooks/*.jsadded: Gemini CLI has a real hooks system (unlike Codex/Copilot), the ADR and UX-pattern-review reminders were rebuilt natively for it —governance/tool-parity/gemini.mdattestation signed
MénageCleanup
- Code mort retiré de
site/build.js:applyThemeImages()ne s'appliquait plus à aucun élément généré depuis que la page d'accueil est figée en mode sombre —governance/rules/illustrations-source.mdcorrigé en conséquenceDead code removed fromsite/build.js:applyThemeImages()no longer applied to any generated element since the home page was fixed to dark mode —governance/rules/illustrations-source.mdupdated to match - Dossier
Redesign/supprimé (vide, scratch personnel)Redesign/folder removed (empty, personal scratch)
2026-09-11
v0.3.1 Licence Apache 2.0Apache 2.0 license
LicenceLicense
- Passage du code du dépôt de MIT à Apache License 2.0 (issue #87, PR #88) :
LICENSEremplacé,NOTICEajouté (crédite Lit — BSD-3-Clause, Lucide — ISC, Style Dictionary — Apache-2.0,@radix-ui/colors— MIT, Atkinson Hyperlegible — SIL OFL 1.1),package.jsonlicense→Apache-2.0, mention de copyright ajoutée àREADME.mdRepository code license switched from MIT to Apache License 2.0 (issue #87, PR #88):LICENSEreplaced,NOTICEadded (credits Lit — BSD-3-Clause, Lucide — ISC, Style Dictionary — Apache-2.0,@radix-ui/colors— MIT, Atkinson Hyperlegible — SIL OFL 1.1),package.jsonlicense→Apache-2.0, copyright notice added toREADME.md CONTRIBUTING.mdajouté : contributions externes régies par le Developer Certificate of Origin (commitSigned-off-by), pas de Contributor License AgreementCONTRIBUTING.mdadded: external contributions governed by the Developer Certificate of Origin (Signed-off-bycommits), no Contributor License AgreementTRADEMARK.mdajouté : séparation code/marque — le nom et le logo Agentica restent une marque distincte, actuellement non enregistrée (™), non couverte par la licence Apache 2.0 du codeTRADEMARK.mdadded: code/brand separation — the Agentica name and logo remain a separate, currently unregistered (™) trademark, not covered by the code's Apache 2.0 license- ADR-095 créé : documente pourquoi CC BY 4.0 (licence prévue pour le futur fichier Figma Community, ADR-081) reste cohérente avec Apache 2.0 — les deux licences sont permissives et ne demandent qu'une attribution. ADR-081 marqué
Supersededplutôt que réécrit (un ADR est immuable une fois actif) ;.claude/rules/figma-library-governance.mdet la copy publique du site (page Resources, bandeau parité Figma/code) corrigées pour ne plus citer le MITADR-095 created: documents why CC BY 4.0 (the license set aside for the future Figma Community File, ADR-081) stays consistent with Apache 2.0 — both licenses are permissive and require only attribution. ADR-081 markedSupersededrather than rewritten (an ADR is immutable once active);.claude/rules/figma-library-governance.mdand the site's public copy (Resources page, Figma/code-parity banner) fixed to stop citing MIT - Relicenciement des sous-packages npm
@agentica-ds/tokenset@agentica-ds/componentsdifféré : les versions déjà publiées restent MIT, seule la prochaine version majeure de chacun passera à Apache-2.0 (entréeUnreleasedajoutée à chaqueCHANGELOG.md, suivi dans l'issue #89, laissée ouverte jusqu'à publication)Relicensing of the@agentica-ds/tokensand@agentica-ds/componentsnpm sub-packages deferred: already-published versions stay MIT, only the next major version of each switches to Apache-2.0 (Unreleasedentry added to eachCHANGELOG.md, tracked in issue #89, left open until publication)
MarqueBrand
- Symbole ™ (pas ® — aucun enregistrement formel déposé, ex. OPIC/CIPO) ajouté au mot-symbole « Agentica » sur les 4 variantes de couleur du logo (
color,color white,white,black, PR #90) : tracé vectoriel officiel exporté du fichier Figma dédié à la marque (pas un texte approximatif), positionné à droite du mot-symbole en exposant — convention standard de placement d'une marque non enregistrée™ symbol (not ® — no formal registration filed, e.g. CIPO) added next to the "Agentica" wordmark across the logo's 4 color variants (color,color white,white,black, PR #90): official vector artwork exported from the dedicated Brand Figma file (not hand-drawn text), positioned to the right of the wordmark in superscript — the standard placement convention for an unregistered trademark - Nouvelle variante
Logo Agentica - teal wordmark.svgajoutée (icône + texte teal uni, #12A594) — pas encore consommée par le site, ajoutée pour un usage futurNewLogo Agentica - teal wordmark.svgvariant added (solid-teal icon + wordmark, #12A594) — not yet consumed by the site, added for future use - Titre de
README.mdmis à jour en « Agentica™ »README.mdtitle updated to "Agentica™"
2026-09-10
v0.3.0 Communauté FigmaFigma Community
GouvernanceGovernance
- Protection de branche configurée sur
mainetdevelop: PR obligatoire, checklang-auditrequis, force-push et suppression bloqués — 0 approbation exigée tant que le dépôt a un seul mainteneur (auto-approbation impossible sur GitHub), avec bascule prévue vers 1/2 approbations dès l'arrivée d'un second contributeur (ADR-076)Branch protection configured onmainanddevelop: PR required,lang-auditcheck required, force-push and deletion blocked — 0 required approvals while the repository has a single maintainer (GitHub cannot self-approve a PR), with a planned move to 1/2 approvals once a second contributor joins (ADR-076) - Issue #9 (révision visuelle automatique, ouverte depuis le 2026-07-14) fermée : les snapshots des composants concernés avaient déjà été resynchronisés dans
70b44fa, CI Playwright verte depuisIssue #9 (automatic visual review, open since 2026-07-14) closed: the affected components' snapshots had already been re-synced in70b44fa, Playwright CI green since enforce_adminsactivé surmainetdevelopsuite à un incident : un push direct a silencieusement contourné la protection fraîchement configurée. Plus aucun bypass admin possible, même en urgence (ADR-077, amende ADR-076)enforce_adminsenabled onmainanddevelopafter an incident: a direct push silently bypassed the just-configured protection. No admin bypass remains possible, even in an emergency (ADR-077, amends ADR-076)lang-audit.yml: déclencheurpushétendu demainseul àmain+develop— un push fusionné surdevelopn'échappait à toute validation CI (corrigé via PR #35)lang-audit.yml:pushtrigger extended frommainonly tomain+develop— a merged push todeveloppreviously escaped all CI validation (fixed via PR #35)
Gouvernance FigmaFigma governance
- Sécurité d'écriture Tokens Studio → GitHub mise en place (ADR-078) : branche
agentica/proposalscréée (depuismain) comme seule destination d'écriture autorisée ; compte de service dédiéagentica-tokens-bot(Write, pas Admin) ; sync Tokens Studio pointée surmain, lecture vérifiée (82 requêtes, 0 erreur, aucune écriture tentée — conforme à la sync en lecture seule d'ADR-011)Tokens Studio → GitHub write-access safety in place (ADR-078):agentica/proposalsbranch created (offmain) as the sole allowed write destination; dedicatedagentica-tokens-botservice account (Write, not Admin); Tokens Studio sync pointed atmain, read verified (82 requests, 0 errors, no write attempted — consistent with ADR-011's read-only sync) - Audit §22 automatisé sur toute la librairie (ADR-079) : agent cloud planifié hebdomadaire (lundis 6h) qui vérifie les 9 catégories §22 sur l'ensemble du fichier Figma — plus seulement les pages récemment modifiées. Rapport silencieux si propre, issue GitHub (
figma-audit) si violation ou échec du run. Comble l'angle mort de l'incident du 2026-07-09 (10 Text Styles sur 11 sans variable bindée, détecté seulement par comparaison humaine manuelle)Automated §22 audit across the whole library (ADR-079): weekly scheduled cloud agent (Mondays 6am) checking all 9 §22 categories against the entire Figma file — not just recently modified pages. Silent report when clean, GitHub issue (figma-audit) on any violation or run failure. Closes the blind spot from the 2026-07-09 incident (10 of 11 Text Styles with no bound variable, caught only by manual human comparison) - Règle de tri de contenu pour la future Community File (ADR-080) : les pages d'identité de marque (
COVER,FOUNDATIONS > logos) restent privées par principe — règle par catégorie, pas une liste figée, pour s'appliquer automatiquement aux futures pages génériques. Volet audit pré-publication ajouté pour couvrir le cas d'un logo imbriqué dans un futur composant (ex. top-nav, bandeau)Content triage rule for the future Community File (ADR-080): brand-identity pages (COVER,FOUNDATIONS > logos) stay private by principle — a category rule, not a fixed list, so it automatically applies to future generic pages. Pre-publication audit clause added to cover a logo nested inside a future component (e.g. top-nav, banner) - Licence de la future Community File tranchée : CC BY 4.0, cohérente avec le MIT du code (ADR-081)Future Community File licence decided: CC BY 4.0, consistent with the code's MIT licence (ADR-081)
- Composants Brand/logo séparés dans un fichier Figma dédié, publié comme librairie et consommé par instances cross-file — la page logo n'a plus besoin d'être exclue manuellement du futur Community File (ADR-082)Brand/logo components separated into a dedicated Figma file, published as a library and consumed via cross-file instances — the logo page no longer needs manual exclusion from the future Community File (ADR-082)
- Script d'audit consolidé
scripts/figma/audit-figma-file.js(7 checks : bindings orphelins, propriétés non liées, lineHeight cassé, clipping en cascade, débordements, références obsolètes après renommage, liens internes cassés) — exécution devenue obligatoire avant la fin de toute session Figma mutative, pas seulement aux déclencheurs existants du §22 (ADR-090)Consolidated audit scriptscripts/figma/audit-figma-file.js(7 checks: orphaned bindings, unbound properties, broken lineHeight, cascading clipping, overflows, stale references after a rename, broken internal links) — now mandatory before ending any mutating Figma session, not just the existing §22 triggers (ADR-090) - Librairies Figma publiées sur Figma Community :
Agentica(design system) etAgentica | Lucide Icons(3 449 icônes, taguée v1.1.0) —Agentica | Brandreste privée par décision explicite, vérifiée sans aucun logo imbriqué dans un composant publiéFigma libraries published to Figma Community:Agentica(design system) andAgentica | Lucide Icons(3,449 icons, tagged v1.1.0) —Agentica | Brandstays private by explicit decision, verified with no logo nested inside any published component - Les 43 pages du fichier
Agentica | Lucide Icons(GETTING STARTED + 42 catégories) alignées sur le standard visuel du fichier principal : canvas gris,Main frameunique, en-tête sombre, footer REFERENCES avec de vrais liens hypertexte (lucide.dev, dépôt source, ADR-022,agtc-icon.js) au lieu des placeholders jamais finalisésAll 43 pages of theAgentica | Lucide Iconsfile (GETTING STARTED + 42 categories) aligned to the main file's visual standard: gray canvas, singleMain frame, dark header, REFERENCES footer with real hyperlinks (lucide.dev, source repo, ADR-022,agtc-icon.js) instead of never-finalized placeholders - ADR-022 vérifié à jour (la licence Lucide est ISC depuis le 2026-07-31, aucune correction nécessaire côté dépôt) ; texte du fichier Figma corrigé pour refléter cet état (il décrivait encore la correction comme restant à faire) ; nettoyage de contenu hérité — 2 instances
doc/property-rowavec une valeur invisible erronée et 2 pages (Sports, Sustainability) portant chacune un doublon exact de leur en-tête et grille, tous déplacés en_trashplutôt que supprimésADR-022 verified up to date (Lucide's license has been ISC since 2026-07-31, nothing to fix on the repo side); the Figma file's own text corrected to match (it still described the fix as pending); legacy content cleanup — 2doc/property-rowinstances with an erroneous invisible value and 2 pages (Sports, Sustainability) each carrying an exact duplicate of their header and grid, all moved to_trashrather than deleted
ComposantsComponents
- Contrat de largeur pour les contrôles interactifs (ADR-094) :
semantic.size.control.{min-width,max-width}(64px / 480px) —agtc-input.jsdésormais borné plutôt que de s'étirer sans limite ou de descendre sous une largeur utilisable. Valeurs choisies après recherche (Baymard, NN/g, WCAG 1.4.8, Carbon Design System)Width contract for interactive controls (ADR-094):semantic.size.control.{min-width,max-width}(64px / 480px) —agtc-input.jsnow bounded instead of stretching unbounded or shrinking below a usable width. Values chosen after research (Baymard, NN/g, WCAG 1.4.8, Carbon Design System) agtc-image— nouveau Web Component :width/heightobligatoires (anti-CLS),loading="lazy"par défaut avec optionpriority, support WebP via<picture>, skeleton de chargement optionnel, repli si l'image échoue (ADR-083)agtc-image— new Web Component: requiredwidth/height(anti-CLS),loading="lazy"by default with apriorityopt-in, WebP support via<picture>, optional loading skeleton, fallback on failed load (ADR-083)- Les 9 illustrations de la home page migrées vers
agtc-image; composantagtc-illustrationdistinct abandonné (aurait fait doublon une fois le wrapper allégé) — ratio anti-CLS corrigé au passage (768×512, vrai ratio 3:2 des PNG sources) (ADR-084)All 9 home page illustrations migrated toagtc-image; a separateagtc-illustrationcomponent was dropped (would have duplicated it once the wrapper was scoped down) — anti-CLS ratio corrected along the way (768×512, the source PNGs' true 3:2 ratio) (ADR-084) agtc-top-navconfirmé comme architecture "mix" (commeagtc-table/banner/code-block) : le site utilise du HTML.site-navécrit à la main plutôt que le composant réel, intentionnellement — un bloc de code mort pour un menu mobile qui ne s'exécutait jamais supprimé au passage (ADR-087)agtc-top-navconfirmed as "mix" architecture (likeagtc-table/banner/code-block): the site intentionally uses hand-written.site-navHTML rather than the real component — a dead mobile-menu code block that never ran removed along the way (ADR-087)
Gouvernance & outillageGovernance & tooling
- Registre
relationships(npm run relationships) : parcourt les$extensionsdes tokens et les en-têtesRelations:des guidelines/règles pour générer un index typé des liens entre décisions, tokens et composants — concepts empruntés à DSDS (Design System Documentation Schema) sans migration de format (ADR-086)relationshipsregistry (npm run relationships): walks token$extensionsand guideline/ruleRelations:headers to generate a typed index of links between decisions, tokens and components — concepts borrowed from DSDS (Design System Documentation Schema) without migrating to its format (ADR-086) - Validation programmatique des contrats (
npm run validate:contracts, désormais dansnpm test) : forme DTCG, intégrité des références ADR, chemins de contrat, synchronisation tokens/guidelines, présence de la section UX Patterns ReferenceProgrammatic contract validation (npm run validate:contracts, now part ofnpm test): DTCG shape, ADR reference integrity, contract paths, tokens/guidelines sync, UX Patterns Reference section presence - Nouvelle règle "discipline de statut" : toujours passer un ticket GitHub Projects à "En cours" au démarrage du travail, jamais directement à "Terminé"New "status discipline" rule: always move a GitHub Projects ticket to "In progress" when work starts, never jump straight to "Done"
- Décision de couleurs du logo (
logo-black/logo-gray) formalisée rétroactivement dans un ADR — la contrainte existait déjà dans le code mais n'était jamais couverte par une décision documentée (ADR-088)Logo colour decision (logo-black/logo-gray) formalized retroactively in an ADR — the constraint already existed in code but was never covered by a documented decision (ADR-088)
SiteSite
- Nouvelle page
resources.html(Mode Marketing) : promotion de la librairie Figma Agentica — fonctionnalités, étapes pour dupliquer le fichier, rappel de licence CC BY 4.0 (ADR-081) ; mise à jour avec l'URL réelle de la librairie Figma Community (remplace le placeholder) et une note de dépendance versAgentica | Lucide Icons, publiée séparémentNewresources.htmlpage (Marketing Mode): promotes the Agentica Figma library — features, steps to duplicate the file, CC BY 4.0 licence reminder (ADR-081); updated with the real Figma Community library URL (replacing the placeholder) and a dependency note pointing to the separately publishedAgentica | Lucide Icons - Icône Figma ajoutée dans la barre d'outils du header (à côté de GitHub et Storybook), pointant vers la librairie principale sur Figma CommunityFigma icon added to the header toolbar (next to GitHub and Storybook), linking to the main library on Figma Community
- Section « Concevoir dans Figma, construire en code » ajoutée à
get-started.html; liens vers la librairie Figma ajoutés àdocumentation.html, au menu principal et au footer partagé"Design in Figma, build in code" section added toget-started.html; links to the Figma library added todocumentation.html, the main nav menu and the shared footer sitemap.xml: 6 pages Marketing historiques (pourquoi/architecture/qualite/ia/documentation/continuite) qui n'y figuraient jamais, ajoutées avecresources.htmlsitemap.xml: 6 historical Marketing pages (pourquoi/architecture/qualite/ia/documentation/continuite) that were never listed there, added along withresources.html
Dette de tokens résorbéeToken debt resolved
audit-tokens.js: ~5 800 → 0 violation critique. Exclusions de chemin ajoutées (build généré, ADR historiques, scripts Figma, docs narratifs) + mécanismeaudit-ignore(miroir delang-audit-ignore) (ADR-085, ADR-089)audit-tokens.js: ~5,800 → 0 critical violations. Path exclusions added (generated build output, historical ADRs, Figma scripts, narrative docs) + anaudit-ignoreescape hatch (mirroringlang-audit-ignore) (ADR-085, ADR-089)- 7 tokens fantômes promus (
fontWeight.bold/display,radius.pill,radius.control-tight,color.border.strong,color.brand.tertiary) — corrige au passage un vrai bug (radius-pillvalait999pxau lieu de9999px)7 phantom tokens promoted (fontWeight.bold/display,radius.pill,radius.control-tight,color.border.strong,color.brand.tertiary) — fixes a real bug along the way (radius-pillwas999px, not9999px) - Le mode sombre du site consommait une copie dupliquée à la main au lieu de
tokens/semantic.dark.json(qui existait déjà, jamais raccordé) — corrigé, plus un second bloc[data-theme="dark"]entièrement mort suppriméThe site's dark mode consumed a hand-duplicated copy instead oftokens/semantic.dark.json(which already existed, never wired up) — fixed, plus a second, entirely dead[data-theme="dark"]block removed - Vraie palette Radix dark ajoutée (
tokens/primitives.dark.json, 9 échelles,@radix-ui/colorsv3.0.0) — référence pour de futurs tokens, pas encore raccordée à un buildReal Radix dark palette added (tokens/primitives.dark.json, 9 scales,@radix-ui/colorsv3.0.0) — a reference for future tokens, not yet wired into a build target
AccessibilitéAccessibility
- Contraste corrigé sur
pipelines/index.html: mauvais token de couleur (teal calibré pour fond clair) utilisé sur un fond sombre — remplacé par le token prévu pour ce casContrast fixed onpipelines/index.html: wrong colour token (a teal calibrated for light backgrounds) used against a dark background — replaced with the token meant for exactly this case - 3 findings
axe-coreréels corrigés surai-brief.html: 2 contrastes (code inline, étiquette de langage) + 1 accès clavier (zone défilable sanstabindex)3 realaxe-corefindings fixed onai-brief.html: 2 contrast issues (inline code, language label) + 1 keyboard-access issue (scrollable region with notabindex) scripts/axe-audit.jsrendu résilient : un timeout sur une seule page faisait crasher tout le run et perdre les résultats des autres pages — désormais isolé par page (commesmoke-test.js), une page en échec est enregistrée comme ignorée plutôt que de tout arrêterscripts/axe-audit.jsmade resilient: a single page's timeout used to crash the entire run and lose every other page's results — now isolated per page (likesmoke-test.js), a failing page is recorded as skipped instead of aborting the whole run
2026-07-20
v0.2.0 BêtaBeta
Tokens — Dark mode dual-modeTokens — Dark mode dual-mode
tokens/semantic.dark.json— 38 tokens delta (valeurs qui changent entre light et dark), DTCG-conforme, pattern "deux fichiers, un seul build CSS" (ADR-065)tokens/semantic.dark.json— 38 delta tokens (values that change between light and dark), DTCG-compliant, "two files, one CSS build" pattern (ADR-065)- Style Dictionary : second run →
dist/tokens/css/dark.csssous sélecteur[data-theme="dark"] { … color-scheme: dark; }Style Dictionary: second run →dist/tokens/css/dark.cssunder[data-theme="dark"] { … color-scheme: dark; }selector - Convention
text.on-dark— renommage deon-inverse→on-darksur tous les tokens (plus explicite pour les équipes produit)text.on-darkconvention — renamedon-inverse→on-darkacross all tokens (clearer for product teams)
ComposantsComponents
agtc-feature-card— nouveau Web Component (glassmorphism, variantes default/marketing, niveaux de titre 1–6, revue UX P1–P8 approuvée, ADR-063)agtc-feature-card— new Web Component (glassmorphism, default/marketing variants, heading levels 1–6, UX review P1–P8 approved, ADR-063)- Correction contraste
agtc-feature-card: 10 violations Chromatic (ratio 1.12) → 0. Cause :text.primarysur fond glassmorphism toujours sombre → remplacé partext.on-darkagtc-feature-cardcontrast fix: 10 Chromatic violations (ratio 1.12) → 0. Root cause:text.primaryon always-dark glassmorphism background → replaced withtext.on-dark
Storybook & ChromaticStorybook & Chromatic
@storybook/addon-themes— toggle dark/light dans la toolbar Storybook (withThemeByDataAttribute,data-themesur<html>)@storybook/addon-themes— dark/light toggle in Storybook toolbar (withThemeByDataAttribute,data-themeon<html>)- Chromatic Story Modes — 2 snapshots par story (light #fcfcfc / dark #0a0c11), baselines séparées. Résout les régressions visuelles dark/light non détectéesChromatic Story Modes — 2 snapshots per story (light #fcfcfc / dark #0a0c11), separate baselines. Resolves undetected dark/light visual regressions
PerformancePerformance
- Home page 1 453 KB → 65 KB (−95 %) : illustrations SVG chargées en lazy-load via
IntersectionObserver, jamais inlinées dans le HTMLHome page 1,453 KB → 65 KB (−95%): SVG illustrations lazy-loaded viaIntersectionObserver, never inlined in HTML - Google Fonts non-bloquant :
@importsupprimé desite.css→<link>dans<head>avecpreconnect— élimine 2 allers-retours réseauNon-blocking Google Fonts:@importremoved fromsite.css→<link>in<head>withpreconnect— eliminates 2 network round trips
Site & Redesign V2Site & Redesign V2
- Redesign site V2 complet : mode sombre par défaut (
data-theme="dark"), glassmorphism, aurora hero, footer 4 colonnes, sidebar gauche pages agents, logo 3 couleursFull site V2 redesign: dark mode by default (data-theme="dark"), glassmorphism, aurora hero, 4-column footer, left sidebar for agent pages, 3-colour logo - Mode clair V2 fonctionnel : token adaptatifs
background-page, bloc[data-theme="light"], 4 combinaisons dark/light × marketing/produit (ADR-064)Working V2 light mode: adaptivebackground-pagetokens,[data-theme="light"]block, 4 dark/light × marketing/product combinations (ADR-064) - Documentation dark mode sur la page Démarrer : snippets HTML/JS/CSS, règle
text.on-darkdocumentéeDark mode documentation on Get started page: HTML/JS/CSS snippets,text.on-darkrule documented
GouvernanceGovernance
- ADR-063 (
agtc-feature-card), ADR-064 (mode clair V2), ADR-065 (dark mode dual-mode) — 65 ADRs au totalADR-063 (agtc-feature-card), ADR-064 (V2 light mode), ADR-065 (dark mode dual-mode) — 65 ADRs total
Gouvernance & synchronisation FigmaGovernance & Figma sync
- Audit complet Figma ↔ code via MCP Figma : 1 470+ variables vérifiées (tokens non-couleur + 654 tokens couleur, Text Styles, Effect Styles) contre
tokens/*.jsonFull Figma ↔ code audit via Figma MCP: 1,470+ variables verified (non-color tokens + 654 color tokens, Text Styles, Effect Styles) againsttokens/*.json - 2 dérives de valeur corrigées côté Figma : échelle
fontSizeprimitive (rem×4 au lieu de px), espacement densitécompact/comfortable(valait 0 au lieu des formules floor/ceil ADR-025)2 value drifts fixed on the Figma side: primitivefontSizescale (rem×4 instead of px),compact/comfortabledensity spacing (was 0 instead of the ADR-025 floor/ceil formulas) - 822 variables Figma reclassées de
ALL_SCOPESvers des scopes explicites (GAP,CORNER_RADIUS,FONT_SIZE,TEXT_FILL,FRAME_FILL/SHAPE_FILL,STROKE_COLOR,EFFECT_COLOR) — conforme aux bonnes pratiques du design system builder Figma822 Figma variables reclassified fromALL_SCOPESto explicit scopes (GAP,CORNER_RADIUS,FONT_SIZE,TEXT_FILL,FRAME_FILL/SHAPE_FILL,STROKE_COLOR,EFFECT_COLOR) — aligned with Figma design-system-builder best practices
Tests — Stratégie PlaywrightTesting — Playwright strategy
- ADR-066 : Playwright remplace Chromatic pour les pages du site (limite mensuelle de snapshots gratuits atteinte le 2026-07-01) — deux périmètres distincts, Chromatic conservé pour les stories composantsADR-066: Playwright replaces Chromatic for site pages (free monthly snapshot quota reached 2026-07-01) — two distinct scopes, Chromatic kept for component stories
- Infrastructure complète : projets chromium/firefox/webkit, snapshots de référence committées dans
tests/visual/snapshots/, exécution dans l'image Docker officielle Playwright pour éliminer les faux positifs de rendu entre OSFull infrastructure: chromium/firefox/webkit projects, reference snapshots committed undertests/visual/snapshots/, run inside the official Playwright Docker image to eliminate cross-OS rendering false positives - Rafraîchissement des snapshots de référence exclusivement via
workflow_dispatchavec approbation humaine explicite — jamais automatisé (ADR-066, ADR-004)Reference snapshots refreshed exclusively viaworkflow_dispatchwith explicit human approval — never automated (ADR-066, ADR-004) - Items optionnels : audit accessibilité axe-core, ouverture automatique d'une issue GitHub sur régression visuelle détectée, rapport HTML publié sur GitHub PagesOptional add-ons: axe-core accessibility audit, automatic GitHub issue on detected visual regression, HTML report published to GitHub Pages
Dette de tokens résorbéeToken debt resolved
agtc-feature-card: 3 défauts corrigés — fond/bordure d'overlay codés en dur → nouveaux tokenssemantic.color.background.overlay-dark/semantic.color.border.overlay-dark, référence vers un token de couleur d'accent inexistant corrigéeagtc-feature-card: 3 defects fixed — hardcoded overlay background/border → newsemantic.color.background.overlay-dark/semantic.color.border.overlay-darktokens, reference to a non-existent accent color token fixedagtc-button: nouveaux tokens de typographielabel-bold/detail-bold, composant aligné dessus (audit Figma)agtc-button: newlabel-bold/detail-boldtypography tokens, component aligned to them (Figma audit)agtc-code-block: 3 valeurs de typographie codées en dur corrigées (line-height,font-weight,letter-spacing) — seul consommateur du tokensemantic.typography.mono.familydu dépôtagtc-code-block: 3 hardcoded typography values fixed (line-height,font-weight,letter-spacing) — the repo's only consumer of thesemantic.typography.mono.familytoken- Nouvelle catégorie de token
letterSpacing(ADR-067), puis étendue à une échelle complète de 11 valeurs — résorbe la dette des 9 variables--agtc-tracking-*du site, ~50 sites d'appel repointés vers les tokens (ADR-068)NewletterSpacingtoken category (ADR-067), later extended to a full 11-value scale — resolves the debt on the site's 9--agtc-tracking-*variables, ~50 call sites repointed to tokens (ADR-068)
Gouvernance FigmaFigma governance
- Charte de gouvernance de la librairie Figma : le code fait foi, jamais l'inverse ; cycle de vie d'une modification — page de staging, règle no-delete (jamais
.remove(), déplacer vers une frame_corbeille), rapport 10 points avant toute revue humaineFigma library governance charter: code is the source of truth, never the reverse; change lifecycle — staging page, no-delete rule (never.remove(), move to a_corbeilleframe instead), 10-point report before any human review - Audit étendu : vérification de la parité code↔Figma après toute instruction visuelle humaine directe, méthode de test de combinaisons variantes × états × contenu (technique EightShapes)Extended audit: code↔Figma parity check after any direct human visual instruction, variant × state × content combination test method (EightShapes technique)
- Les 15 Text Styles de la librairie (typographie standard + nouvelle typographie mono de documentation) sont désormais intégralement bindés à des Variables Figma — plus aucune valeur de typographie codée en durAll 15 library Text Styles (standard typography + new documentation mono typography) are now fully bound to Figma Variables — no more hardcoded typography values
Plan de continuité sans agents IAContinuity plan without AI agents
- Guide
How-to-without-agents.mdet 8 scriptsscripts/continuity/: marche à suivre humaine si l'accès aux agents IA devient indisponible, pour l'équipe système de design et les équipes produits consommatricesHow-to-without-agents.mdguide and 8scripts/continuity/scripts: human fallback procedure if AI agent access becomes unavailable, for both the design system team and consuming product teams - Nouvelle page
continuite.htmlpubliée sur le site (Mode Produit), synthétisant le plan par équipeNewcontinuite.htmlpage published on the site (Product Mode), summarizing the plan by team
SiteSite
- Refactor du pattern de layout : un seul conteneur unifie les deux patterns de mise en page avec sidebarLayout pattern refactor: a single container now unifies both sidebar layout patterns
- Section Durabilité de la page d'accueil reformulée (accroche marketing sur l'absence de dépendance/verrouillage aux agents IA)Home page Durability section reworded (marketing framing around freedom from AI agent lock-in/dependency)
- Lien vers la page Continuité ajouté au footer (partagé par toutes les pages) et à la page DocumentationLink to the Continuity page added to the footer (shared across all pages) and to the Documentation page
Gestion de projetProject management
- Migration du suivi de projet vers GitHub Projects (ADR-069, remplace ADR-016) : 100 items migrés (91 chantiers historiques + 1 en attente + 8 tickets de backlog), champs
Status/Domaine/Dépendance/ADR/Date, vues Board/Par domaine/HistoriqueProject tracking migrated to GitHub Projects (ADR-069, replaces ADR-016): 100 items migrated (91 historical items + 1 pending + 8 backlog tickets),Status/Domaine/Dépendance/ADR/Datefields, Board/By domain/History views log/kit-construction.mdet son hookPostToolUsede journalisation automatique retirés du dépôt — le suivi de tâches ne vit plus dans un fichier versionnélog/kit-construction.mdand its automaticPostToolUselogging hook removed from the repo — task tracking no longer lives in a versioned file- Champ
Priorité(P0 à P3) ajouté au projet ; backlog découpé en 4 chantiers (traduction anglaise, nettoyage du dépôt, gouvernance Figma, Community File Figma) totalisant 23 sous-tickets priorisés, chacun rattaché à son parent via le champDépendancePriorityfield (P0 to P3) added to the project; backlog split into 4 initiatives (English translation, repository cleanup, Figma governance, Figma Community File) totalling 23 prioritized sub-tickets, each linked to its parent via theDependencyfield
Nettoyage du dépôtRepository cleanup
AGENTS.mdcorrigé : la section citait encore GitHub Issues,CONTEXT.mdetdocs/adr/(boilerplate d'un template jamais adapté), en contradiction avecproject-overview.md(GitHub Projects exclusif, ADR-069) — 3 fichiersdocs/agents/*.mdobsolètes supprimésAGENTS.mdfixed: the section still referenced GitHub Issues,CONTEXT.mdanddocs/adr/(boilerplate from a template never adapted to this repo), contradictingproject-overview.md(GitHub Projects exclusive, ADR-069) — 3 obsoletedocs/agents/*.mdfiles removed- Références mortes vers
Redesign/AI anti-patters.mdetdeux-contextes.md(supprimés le 2026-06-20) corrigées danscontexts-utilisation.mdetguidelines/foundations/contextes.mdDead references toRedesign/AI anti-patters.mdanddeux-contextes.md(deleted 2026-06-20) fixed incontexts-utilisation.mdandguidelines/foundations/contextes.md - Workflow CI mort
deploy-redesign.ymlretiré (remplacé depuis longtemps pardeploy-site.yml) ; branchefeature/redesignsupprimée (vérifiée fusionnée)Deaddeploy-redesign.ymlCI workflow removed (long superseded bydeploy-site.yml);feature/redesignbranch deleted (verified merged) - Artefacts orphelins racine retirés : script de capture d'écran ad hoc, note de handoff obsolète, rapport de test encore suivi malgré
.gitignoreOrphaned root artifacts removed: ad hoc screenshot script, stale handoff note, test report still tracked despite.gitignore - Dossier
Redesign/(25 Mo, prototype d'exploration déjà clos) archivé hors dépôt (intégrité vérifiée par checksums) puis suppriméRedesign/folder (25 MB, already-closed exploration prototype) archived outside the repo (integrity verified via checksums), then removed - Dossier
illustrations/(3 diagrammes SVG v1 approuvés mais jamais intégrés au site, ADR-051) retiré — remplacé par le système d'illustrations PNGBrand/illustrations/illustrations/folder (3 approved v1 SVG diagrams, never integrated into the site, ADR-051) removed — replaced by theBrand/illustrations/PNG illustration system
InternationalisationInternationalization
- ADR-070 : l'anglais devient la langue par défaut du dépôt, en 6 chantiers priorisés, pour le partage avec la communauté internationaleADR-070: English becomes the repository's default language, split into 6 prioritized initiatives, to support sharing with the international community
- Documentation racine (
README,AGENTS.md,DESIGN.md, les 3 guidesHow-to-*.md) entièrement traduite — l'anglais remplace le français, aucune version FR conservée dans ces fichiersRoot documentation (README,AGENTS.md,DESIGN.md, all 3How-to-*.mdguides) fully translated — English replaces French, no FR version kept in these files - Langue par défaut du site basculée de fr à en (
<html lang>,data-lang, replis JS, sélecteur FR/EN) — le français reste pleinement disponible via le sélecteur, paritélang-fr/lang-envérifiée sur les 104 pagesSite default language switched from fr to en (<html lang>,data-lang, JS fallbacks, FR/EN switcher) — French remains fully available via the switcher,lang-fr/lang-enparity verified across all 104 pages
Publication npmnpm publication
@agentica-ds/tokenset@agentica-ds/componentspubliés sur le registre npm public (ADR-072, ADR-073) — monorepo npm workspaces, versioning indépendant via Changesets, ESM uniquement@agentica-ds/tokensand@agentica-ds/componentspublished to the public npm registry (ADR-072, ADR-073) — npm workspaces monorepo, independent versioning via Changesets, ESM only- Publication automatisée en CI (ADR-074) via
changesets/actionet npm Trusted Publishing (OIDC) — aucun secretNPM_TOKENstatique à stocker ni faire tournerAutomated CI publishing (ADR-074) viachangesets/actionand npm Trusted Publishing (OIDC) — no staticNPM_TOKENsecret to store or rotate starter-kit/ajouté au dépôt : projet Vite minimal et fonctionnel (tokens clair/sombre + 4 composants), vérifié par un vrainpm installet build contre le registre — copiable tel quel par une équipe produitstarter-kit/added to the repository: minimal, working Vite project (light/dark tokens + 4 components), verified with a realnpm installand build against the registry — ready for a product team to copy as-is- Dépôt GitHub renommé
agentic-design-system→agentica-design-system, pour cohérence avec la marque Agentica et le scope npm@agentica-ds; toutes les références internes mises à jourGitHub repository renamedagentic-design-system→agentica-design-system, for consistency with the Agentica brand and the@agentica-dsnpm scope; all internal references updated - Page
get-started.html: flux d'installation réécrit en npm-first, matrice d'intégration par framework (Angular/Vue/React/Vanilla)get-started.htmlpage: install flow rewritten npm-first, per-framework integration matrix (Angular/Vue/React/Vanilla)
Site — refonte de la page Get StartedSite — Get Started page redesign
- Hiérarchie visuelle textuelle : bloc « Démarrage rapide », étapes converties en cartes numérotées, mode sombre rétrogradé en sous-bloc optionnel (au lieu d'une fausse 4e étape « 2b »), sélecteur de framework converti en onglets
agtc-tabsinteractifsTextual visual hierarchy: "Quickstart" block, steps converted into numbered cards, dark mode demoted to an optional sub-block (instead of a fake 4th "2b" step), framework picker converted into interactiveagtc-tabs - Passage au vrai gabarit marketing (
fullWidth:true, sections.shell) — la page utilisait par erreur le gabarit Documentation malgré son attributdata-context="marketing", cause racine du rendu en « long article »Switched to the real marketing layout (fullWidth:true,.shellsections) — the page had mistakenly been using the Documentation layout despite itsdata-context="marketing"attribute, the root cause of the "long article" look - Bandes de fond alternées et logos technologiques réels ajoutés (bande de logos couleur « Plateformes de sortie », logo par panneau d'onglet framework) — un seul dégradé sur la page, conforme à la règle anti-pattern marketingAlternating background bands and real technology logos added (colored logo strip in "Output platforms", a logo on each framework tab panel) — a single gradient on the page, per the marketing anti-pattern rule
- Bug pré-existant corrigé sur l'ensemble du site : le regex d'auto-habillage des
<table>doublait silencieusement le<div class="table-wrap">sur toute table déjà enveloppée à la mainPre-existing site-wide bug fixed: the<table>auto-wrap regex silently double-wrapped the<div class="table-wrap">on every hand-wrapped table - Animation de fondu au scroll (
[data-reveal]) retirée de cette page à la demande explicite de l'utilisateur — inchangée sur les autres pages marketingScroll fade-in animation ([data-reveal]) removed from this page per explicit user request — unchanged on other marketing pages
Internationalisation — validation anglais du dépôtInternationalization — repository English validation
- 3 bugs structurels de bascule FR/EN corrigés dans
site/build.js(texte français figé jamais basculé en mode EN) : lien nav « IA », tableau d'intégration framework deget-started.html, tableaux « matrice de déclenchement » des pagespipelines/*.html— indétectables par un simple grep, révélés uniquement par un rendu réel de la page3 structural FR/EN toggle bugs fixed insite/build.js(French text stuck, never switched in EN mode): "AI" nav link,get-started.html's framework integration table, the "trigger matrix" tables onpipelines/*.htmlpages — undetectable by a plain grep, only caught by actually rendering the page - Contenu résiduel en français hors zones bilingues nettoyé : 8 scripts
scripts/continuity/*.sh,.githooks/pre-push, 4 workflows GitHub Actions,starter-kit/entier, 13 valeurs$description/$intentdanstokens/*.jsonResidual French content outside bilingual zones cleaned up: 8scripts/continuity/*.shscripts,.githooks/pre-push, 4 GitHub Actions workflows, all ofstarter-kit/, 13$description/$intentvalues intokens/*.json - 11 fichiers renommés de français vers anglais (
How-to-sans-agents.md→How-to-without-agents.md, etc.), ~25 références croisées mises à jour — décision documentée dansADR-075(amende ADR-070)11 files renamed from French to English (How-to-sans-agents.md→How-to-without-agents.md, etc.), ~25 cross-references updated — decision documented inADR-075(amends ADR-070) - Nouvel outillage de prévention :
scripts/audit-language.js(npm run lang-audit, scan repo-wide),tests/functional/language.spec.js(rendu réel des ~125 pages endata-lang=en, seul outil capable d'attraper les bugs structurels ci-dessus), gate CIlang-audit.ymlsur chaque push/PRNew prevention tooling:scripts/audit-language.js(npm run lang-audit, repo-wide scan),tests/functional/language.spec.js(real rendering of all ~125 pages withdata-lang=en, the only tool able to catch the structural bugs above),lang-audit.ymlCI gate on every push/PR
2026-06-19
v0.1.0
FondationsFoundations
- Architecture de tokens 3 niveaux : primitifs → sémantiques → composant (DTCG-conforme)3-layer token architecture: primitives → semantic → component (DTCG-compliant)
- Palette de couleurs Radix UI (échelles 12 niveaux), espacement grille 4px, typographie Atkinson HyperlegibleRadix UI color palette (12-step scales), 4px spacing grid, Atkinson Hyperlegible typography
- Bibliothèque d'icônes Lucide — 1 500+ icônes, 3 tailles, contrats d'accessibilité WCAG 1.1.1Lucide icon library — 1,500+ icons, 3 sizes, WCAG 1.1.1 accessibility contracts
ComposantsComponents
- 14 Web Components (Lit) : Button, Input, Badge, Card, Checkbox, Radio, Toggle, Table, Code Block, Banner, Link, Icon, Segmented, Top Nav14 Web Components (Lit): Button, Input, Badge, Card, Checkbox, Radio, Toggle, Table, Code Block, Banner, Link, Icon, Segmented, Top Nav
- Variantes Button : primary, secondary, ghost, critical — confirmation obligatoire pour les actions irréversiblesButton variants: primary, secondary, ghost, critical — required confirmation for irreversible actions
- Tokens de composant institutionnels dans
tokens/component.jsonInstitutional component tokens intokens/component.json
Gouvernance & AgentsGovernance & Agents
- 62 ADRs (Architecture Decision Records) — toutes les décisions tracées et justifiées62 ADRs (Architecture Decision Records) — all decisions traced and justified
- 4 types d'agents IA : Designer, Developer, QA, Documentation4 AI agent types: Designer, Developer, QA, Documentation
- Conformité WCAG 2.1 AA — audit intégré, 0 violation critiqueWCAG 2.1 AA compliance — built-in audit, 0 critical violations
- Pipeline qualité complet : tokens-audit, WCAG, UX patterns, ADR, docs, site rebuildFull quality pipeline: tokens-audit, WCAG, UX patterns, ADR, docs, site rebuild
Site & DocumentationSite & Documentation
- Générateur de site statique sur-mesure (Node.js), bilingue FR/ENCustom static site generator (Node.js), bilingual FR/EN
- Storybook publié sur Chromatic — canvas interactif, previews, specsStorybook published on Chromatic — interactive canvas, previews, specs
- Sync Figma ↔ JSON via Tokens StudioFigma ↔ JSON sync via Tokens Studio