📖 Understand🌱 0/3 ideas found · 177 objects ›

The site specification

The site's requirements, who does what, in which order (Guardian, protocole/CDC-SITE)

This is the site specification, kept by the Guardian. It is written in French, the working language of the project.

# CAHIER DES CHARGES DU SITE — v0.3 « L'AMPLEUR » (26/09/2026 15h5x · Gardien Fable 5.1 · mot de Ben 15h1x ; loop : loops/2026-09-26-le-site-ampleur.md)
> S'ajoute à v0.1 (E1-E15) et v0.2 (E16-E21) : rien n'est retiré, tout est daté. **La phrase-mère de v0.2 tient** (« la vitrine doit être le reflet de notre cœur ») ; v0.3 y ajoute la phrase de Ben du 26/09 : **« ce site doit reprendre chaque chose, même si elle n'est pas encore en place ; l'utilisateur comprend au fur et à mesure l'ampleur du projet ; c'est de la pédagogie, et ça nous clarifie. »**

## 0. Pourquoi cette version (en une phrase)
Le site n'est plus seulement la vitrine de ce qui marche : c'est **l'atlas vivant de tout le projet**, qui explique le Phénix à la place de Ben, à un yogi comme à une IA, en dévoilant l'ampleur pas à pas — et qui, parce qu'il expose nos objets avec leur vraie maturité, nous oblige à être clairs.

## 1. Les trois décisions de fond
| décision | choix | pourquoi (loop ②③) |
|---|---|---|
| D1 · un site ou deux ? | **Un site, une donnée, deux portes** (humain graphique · IA en code) | deux sites = deux vérités à tenir ; la porte IA existe (llms.txt, tronc, sac, MCP) et lira la même donnée |
| D2 · quoi montrer ? | **Tout**, avec sa maturité (🌱 idée · 🌿 en construction · 🌳 en place) et son horizon (maintenant · ensuite · plus tard) | Ben : « même si elle n'est pas encore en place » ; le jardin numérique : la maturité affichée rassure ; c'est notre miroir (Vision §7.3 étape 0) |
| D3 · comment expliquer ? | **Quatre formes de pages** (Comprendre · Parcourir · Consulter · Faire) + **cinq leçons** (le cours de 30 min de Ben) + **le dévoilement** (Z1/Z2/Z4, graines, fil de progression) | Diátaxis, dévoilement progressif, récit en 5 scènes ; le visiteur n'est jamais devant la liste entière |

## 2. Les exigences neuves (E22-E30) — chacune avec sa preuve
| # | exigence | preuve (mesurée, jamais déclarée) |
|---|---|---|
| E22 | **L'atlas** : un fichier de données `atlas.json` où chaque **objet** du projet (corps, base, loi, axe, instrument, idée, session) porte : id · nom FR/EN · L9 (une phrase) · L5 (le comment, ≤ 12 lignes) · L1 (la source, un chemin ou un id·§) · maturité 🌱🌿🌳 · horizon · tenant · liens (« dépend de », « nourrit ») · date de mesure. **Généré** de ROADMAP-PHÉNIX, organigramme, alpha, files et idées dormantes par `bin/atlas.py` ; jamais écrit à la main | témoin : un objet ajouté dans une fiche alpha apparaît à la génération suivante ; 0 objet sans L9 ni sans maturité ; `atlas.py --test` |
| E23 | **La page « L'atlas »** (entrée « Le projet ») : les objets par forme et par maturité, un compteur d'ampleur (« 60 objets · 18 en place · 25 en construction · 17 idées »), un filtre par axe ; au tap, Z1 → Z2 → Z4 ; les objets 🌱 sont visibles, marqués, jamais cachés | capture ; 100 % des objets d'`atlas.json` servis ; compteur = somme réelle |
| E24 | **Les quatre formes** : chaque page porte sa forme (Comprendre · Parcourir · Consulter · Faire) dans `nav.json` et l'affiche discrètement (sous le fil d'Ariane) ; le menu à 7 entrées reste ; l'accueil offre les quatre en une ligne | banc : 100 % des pages ont une forme ; 0 page dans deux formes |
| E25 | **Les cinq leçons** (Comprendre) : ① des lois, pas un LLM · ② d'où viennent les lois (Sa parole, Ses dessins, la source à un clic) · ③ le corps qu'elles traversent · ④ la mesure (Lumière/Ombre, 19 positions, le 0) · ⑤ ce qui vient (familles, LLM local, label) — chacune : 5 phrases FR/EN, une image, la maturité de ce qu'elle décrit, « en savoir plus » vers Consulter ; texte relu par Fable et par Ben | l'épreuve des 10 minutes (§4) ; 5/5 leçons servies FR/EN ; chaque affirmation sur Sa parole porte un id·§ |
| E26 | **Le fil de progression** : « idées découvertes n/N » + « ampleur : X objets » ; discret, sans jeu gratuit ; mémorisé sans compte (localStorage) ; à 5/5 leçons, la page « Le projet » s'ouvre d'elle-même | banc : compteur juste ; parcours de 10 clics = fil cohérent |
| E27 | **Le trou est un livrable** : chaque page « Consulter » porte « ce qui manque ici » (généré : objet sans source, sans tenant, contradictoire, ou 🌱 sans date) et le bouton de retour ; un retour de visiteur ou d'IA devient une ligne de file datée (n°14) | table des retours ; 100 % des retours lus ont une ligne ou une réponse |
| E28 | **La porte IA lit la même donnée** : `/llms.txt` (< 5 Ko, un blockquote, 10-50 liens décrits) et `/ia` sont générés d'`atlas.json` + `nav.json` ; `/llms-full.txt` (optionnel) donne l'atlas en clair ; les outils MCP disent leur but en une phrase ; ADR-0031 : le fonds (talks) n'est jamais servi, liens sortants seulement | une IA (Grok, GPT, Gemini) lit `/ia` et rend l'ampleur sans erreur ; llms.txt validé (format v2) |
| E29 | **Long terme** : tout en données versionnées (git), chaque page porte sa date de génération et sa version du cahier ; FR/EN dès la donnée ; on archive, on ne supprime jamais (fossiles visibles dans l'atlas, 🗿) ; l'accès (public · yogis · nous) est une colonne, décidée après | témoin : un objet archivé reste dans l'atlas avec 🗿 et sa date |
| E30 | **Le beau sur ce qui marche** (n°27, v0.2) : la montée, la 3D, les deux écritures viennent APRÈS l'atlas, les leçons et le fil ; jamais une toile vide ; testé sur un téléphone moyen (E17, E18) | ordre §5 respecté ; rapport de 05h |

## 3. La carte des formes (ce que chaque entrée du menu contient, et sa forme)
| entrée (v0.1 E2) | forme | pages | maturité affichée |
|---|---|---|---|
| Accueil | Comprendre | 3 portes (corps subtil · bibliothèque · le projet) + une phrase + le fil ; plus tard : la montée (v0.2 §7.3) | — |
| Le corps subtil | Parcourir + Consulter | la carte vivante (une entrée, les vues en onglets), le zoom guidé (neo2 l.91), les fiches | 🌳 corps · 🌿 canaux B · 🌱 corps futurs |
| Le corps humain | Parcourir + Consulter | le physique (Codex, neo1), les organes et leur phrase L9 | 🌿 |
| Sa science | Comprendre + Consulter | l'atlas de Sa science, les fiches par domaine, le contre-audit (3 juges) « la science d'aujourd'hui dit autrement » | 🌿 (juge 3 en cours) |
| La bibliothèque | Consulter + Faire | l'audio, les livres (usage interne, liens amruta), la recherche dans Ses mots (id·§, lien sortant) | 🌳 audio · 🌿 recherche |
| Le projet | Comprendre + Consulter | les 5 leçons · l'atlas · où on en est (§7.3) · la feuille de route (maintenant/ensuite/plus tard) · l'organigramme · les décisions (ADR) · les cahiers · les idées dormantes (🌱) | toutes |
| Tes retours | Faire | déposer, lire les réponses ; pour une IA : le format strict du sac | 🌳 |
| (pied) Pour les IA | Faire | `/ia`, llms.txt, tronc, sac, MCP | 🌳 |

## 4. Les épreuves (E21 élargie)
1. **Les 10 minutes** : un yogi qui ne connaît rien parcourt 10 minutes ; il redit en une phrase ce qu'est le Phénix, dit où il en est, et ce qui vient ; récit gardé dans `audit/EPREUVES-SITE/`.
2. **L'épreuve de Ben** : une semaine durant, Ben envoie un lien au lieu d'expliquer 30 minutes ; il dit « ça a suffi » ou ce qui a manqué → lignes de file.
3. **L'épreuve de l'IA** : Grok, GPT et Gemini lisent `/ia` et rendent le compteur d'ampleur et trois objets avec leur maturité, sans erreur.
4. **L'épreuve du miroir** : le nombre d'objets « rouges » chez nous (sans tenant, sans source, contradictoires) baisse d'une semaine à l'autre — sinon le site ne nous clarifie pas.

## 5. L'ordre (lots) et qui fait quoi
| lot | quoi | qui | preuve |
|---|---|---|---|
| A (cette semaine) | `bin/atlas.py` + `atlas.json` (E22) : la donnée d'abord | **gardien** (spécifie, génère des fichiers vivants) ; joker1 relit le générateur | `atlas.py --test`, 0 objet sans L9 |
| B | la page « L'atlas » + le compteur + les formes dans `nav.json` (E23, E24) | **joker2** | captures 390 px, banc d'un ouvrier |
| C | les 5 leçons en texte FR/EN (E25) — le cours de Ben écrit une fois | **gardien** écrit, **neo2** relit ce qui touche le corps subtil, **einstein** ce qui touche Sa science, **Ben** relit tout | 5 leçons, chaque id·§ vert |
| D | le fil de progression + « ce qui manque ici » + retours → files (E26, E27) | **joker2** (page) + **operateur** (retours → files, banc de nuit E14/l.56) | compteur juste, table des retours |
| E | la porte IA générée de la donnée (E28) | **einstein** (a bâti /ia, /tronc) + **operateur2** (MCP) | 3 IA lisent l'ampleur sans erreur |
| F | la montée (v0.2 §7.3), la 3D qui respire, les deux écritures (E30) | **joker2 + neo2** (scènes l.93) | épreuve des 10 minutes |
| toujours | bancs sur la Tour (ouvriers), rapport de 05h (operateur), épreuves (§4) | ouvriers, operateur, gardien | rapport |

## 6. Ce qui ne change pas
Les 21 exigences de v0.1 et v0.2, la charte, le menu unique, les deux écritures, la gratuité, ADR-0031, « le trou est un livrable », « évolutif = données, pas code ».
✍️ gardien-claude · claude-fable-5-1 · VPS · 26/09/2026 15h5x

## 7. Ajout du 26/09 15h44 — la navigation et l'expérience visuelle (mot de Ben 15h4x : « au mieux de ce qui se fait maintenant ; jolie, fluide même quand on change de page ; garder tout ce qu'on a et clarifier où ça vit et comment on navigue ; cohérent : couleurs, formes, ambiances »)
| # | exigence | preuve |
|---|---|---|
| E31 | **Fluide entre les pages** : le site reste multi-pages (une adresse par page, lisible par les IA), mais les changements de page sont animés par l'API native *View Transitions* en cross-document (Chrome 126+, Safari 18.2+, Edge ; Firefox = repli sans animation, rien ne casse) + *Speculation Rules* (préchargement des pages voisines du menu) ; le menu, le fil d'Ariane et le fil de progression **persistent** visuellement (même `view-transition-name`) ; 0 JavaScript obligatoire ; durée 200-300 ms ; respect de `prefers-reduced-motion` | banc : 10 changements de page = 10 transitions sans flash blanc (capture vidéo d'un ouvrier, téléphone moyen) ; premier affichage < 2 s maintenu (E12) |
| E32 | **Une seule ambiance, déclinée par forme** : les jetons de la charte (couleurs, formes, espacements, ombres, rayons, typographies — trois familles au plus, E19) dans UN fichier (`charte.css`, l.75 de joker2), et **une ambiance par forme de page** (Comprendre = sombre et calme · Parcourir = vivant, la 3D · Consulter = clair et dense · Faire = sobre) obtenue par des variantes des mêmes jetons, jamais par une palette nouvelle ; les 4 palettes mesurées le 25/09 (carte, IA blanc, audio brun, photoreal bleu) rentrent dans la charte | banc : 0 couleur hors jetons sur 100 % des pages ; les 8 vues du corps, l'audio et les pages IA passent le banc de la charte |
| E33 | **Tout est gardé, et chacun sait où ça vit** : aucune page existante n'est supprimée (on archive 🗿) ; chaque page a UNE adresse canonique, une entrée dans `nav.json` (forme, entrée de menu, parents) et un objet dans l'atlas (« où ça vit » = son chemin sur le disque, son tenant) ; les doublons (8 vues du corps, 2 champs prénom, pages IA isolées) deviennent des onglets ou des sous-pages d'une seule entrée ; une carte du site (`/plan`) générée de `nav.json` | banc : 0 page orpheline (déjà E2), 0 doublon d'adresse, `/plan` = 100 % des pages ; le visiteur revient à l'accueil en ≤ 2 taps de partout |
Sources lues le 26/09 : [MDN View Transition API](https://developer.mozilla.org/en-US/docs/Web/API/View_Transition_API) · [Chrome for Developers](https://developer.chrome.com/docs/web-platform/view-transitions) · [guide MPA 2026](https://www.dfm2html.com/tutorials/navigation-that-feels-fast-view-transition-api-for-multi-page-sites/) · [cross-document 2026](https://trade-assistance.com/blog/cross-document-view-transitions-mpa-2026/).
Ordre : E32 (la charte unique, déjà en cours chez joker2) → E33 (le plan, `nav.json`) → E31 (les transitions) — le lot B (l'atlas) et le lot D (le fil) portent déjà les `view-transition-name` du menu et du fil.
✍️ gardien-claude · claude-fable-5-1 · VPS · 26/09/2026 15h44

## 8. v0.4 — les sceptiques des sessions (26/09 16h09 ; Ben 15h5x « demande-leur aussi pour le site ») : neuf amendements tranchés
| # | sceptique (qui) | tranché |
|---|---|---|
| A1 | un compte n'est pas une mesure : 298 sujets de journal pèsent autant que 9 axes (einstein) ; une maturité déclarée contredira les bancs (neo1 : 52/52 emboîtés mais 1 porte sur 22 sait rougir, 10 organes sans source) | **retenu** : `compteur.sens` (axes, corps, lois, décisions, idées) affiché d'abord ; chaque objet porte `maturite_origine` = **mesurée** (le tenant publie une mesure : emboîtement, portes, sources) ou **déclarée** (marquée telle quelle) ; un 🌳 n'est possible que mesuré |
| A2 | l'atlas tel quel ne peut pas être public : liens Notion privés, chemins du disque, noms de secrets (einstein) | **retenu, fait** : champ `acces` public / nous ; la page et la porte IA ne servent que `public` (85 objets) tant que Ben n'a pas décidé l'accès (E15) ; liens Notion masqués |
| A3 | l'épreuve des 3 IA mesure la copie du compteur, pas la compréhension ; personne ne la joue (einstein, operateur) | **retenu** : 3 questions qui obligent à combiner (« quel axe a le plus d'idées ? », « qui tient le corps subtil ? », « qu'est-ce qui n'est jamais servi, et pourquoi ? ») ; porteur : le Gardien, chaque lundi, par les bureaux de la Tour (Grok, GPT, Gemini connectés) ; noté par einstein sur 3 |
| A4 | les sources ne portent pas L5, L1, liens : « 0 objet sans L9 » restera rouge ou on écrira à la main (operateur2) | **retenu** : un champ absent = un objet **incomplet** avec son `manque` nommé (fait : 424 sans EN), qui devient un trou d'E27 ; E22 dit désormais « 0 objet sans nom ; chaque manque nommé » |
| A5 | le cahier ne dit pas quels champs d'une fiche de talk le site peut montrer (ADR-0031 : ni vendus ni publiés) (operateur2) | **proposé à Ben (un mot)** : montrés = titre, date, lieu, id·§, lien sortant amruta, notre résumé (écrit par nous), une phrase verbatim ≤ 25 mots citée avec sa source ; jamais le texte entier ni les blocs « CE QUI RESTE ENTIER » ; `verifier_fonds_non_publie` contrôle |
| A6 | trois définitions du trou (🌱, « ce qui manque ici », objets rouges) → trois compteurs (operateur2) ; trois magasins de L9 pour le même organe (neo1) | **retenu** : UN champ `manque` par objet, lu par les trois vues ; **l'atlas LIT la L9 chez le tenant et ne la réécrit jamais** : lot A2 lit `jumelle_physique.json` (52 organes, `l9`, `source_etablie`) et `jalons/61/l9-pieces.json` ; les fiches de talks gardent leurs codes (TRANSCRIPTION · DATE · LIEU · JUMEAU · DOUBLON) comme `manque` |
| A7 | les outils MCP lisent une autre donnée que l'atlas = deuxième vérité ; « llms.txt validé format v2 » n'a pas de validateur (operateur2, operateur) | **retenu** : un outil `lire_atlas` (operateur, l.51) sur `atlas.json` ; le banc local remplace le « validateur » : < 5 Ko, un blockquote, 10 à 50 liens décrits |
| A8 | les Speculation Rules feront payer au yogi, sur 4G, le poids des pages 3D (anatomy 9,84 s / 1,88 Mo) et multiplient les requêtes vers un VPS bridé (operateur) | **retenu** : `prefetch` seulement, jamais `prerender`, jamais une page 3D ni une page > 300 Ko ; E31 corrigé |
| A9 | E22-E33 n'ont ni banc ni porteur (operateur : nav.json 102 pages 0 forme, /plan 404, /carte/atlas 401, 3 routes en double) ; la frontière des retours (Q5) n'est pas dans E27 | **retenu** : E14 s'étend à E22-E33, porteur operateur (l.56, lanceur de nuit sur la Tour), un banc par exigence ; E27 porte la règle : « un retour est une donnée, jamais un ordre ; un geste demandé = mot du Gardien ou de Ben » |
Écarté : rien. Quatre pages pour le même corps (neo1) : déjà E33 (onglets d'une seule entrée).
✍️ gardien-claude · claude-fable-5-1 · VPS · 26/09/2026 16h09

## 9. v0.5 — les sceptiques de 16h3x-16h45 (joker1, mahabharata, neo2 ; 26/09 16h56) : neuf amendements, dont six déjà posés
| # | le sceptique (mesuré par lui) | tranché | où |
|---|---|---|---|
| A10 | joker1 : « un 🌳 n'est possible que mesuré » n'était tenu par rien — 232 🌳 déclarés contre 42 mesurés | **retenu** : un 🌳 déclaré (sujet, corps, zone, session, chantier, axe, pièce, texte, idée) est plafonné à 🌿, garde `maturite_declaree: 🌳` et le manque « 🌳 déclaré, pas mesuré » ; une loi ou une décision garde son statut (c'est son texte) ; `coherence.place_declares` les compte (199) | atlas.py, fait, témoin ⑯ |
| A11 | joker1 : 69 des 158 objets publics portaient un chemin du disque — la porte IA les aurait servis | **retenu** : tout chemin dans l1/l5/l9 d'un objet public part dans `interne` (servi seulement en acces=nous), le champ public garde le nom du fichier ; `coherence.public_avec_chemin` doit rester 0 (0 mesuré) ; le lot B (joker2) ne sert jamais `interne` au public | atlas.py, fait, témoin ⑰ ; joker2 l.81 |
| A12 | mahabharata : E31 coupe le son — un site multi-pages arrête l'audio à chaque page ; 388 pistes | **retenu, option A** : E31 exclut les pages qui jouent du son ; chaque page d'écoute renvoie vers son livre .m4b (Book Player garde la position) ; pas de lecteur persistant (JavaScript contre E30) | joker2 l.81 |
| A13 | mahabharata : « Les livres (usage interne, liens amruta) » mélangeait ses livres .m4b (domaine public, servis en entier) et Ses livres (ADR-0031, liens sortants) — A2 donnerait le mauvais accès à l'un des deux | **retenu** : deux entrées — « Les livres audio (domaine public) » et « Ses livres (liens) » ; §3 corrigé par cette ligne ; articulation de mahabharata mise à jour | articulation.json, fait ; joker2 l.81 (menu) |
| A14 | mahabharata : la maturité de la bibliothèque était déclarée (« 🌳 audio » en bloc) alors que `bibliotheque/index.json` la mesure par texte | **retenu** : l'atlas lit l'index chez le tenant (A6) : un objet « texte » par livre, 🌳 seulement quand chaque chapitre a sa voix ; « ce qui manque ici » = chapitres sans voix / sans français, mesurés (Devī Māhātmyam 13/13 🌳 · Rāmāyaṇa 194/656 🌿 · Mahābhārata 27/2108 🌿 · Devī Bhāgavata 0/318 🌱 · Atharvaśīrṣa 0/1 🌱) | atlas.py, fait, témoin ⑱ |
| A15 | joker1 : pas de date de mesure par objet ; l'atlas paraît frais quand sa source a des jours ; le cron `confirmations && atlas` étouffait l'atlas si le premier échouait ; `next(glob)` faisait tomber tout l'atlas sur une source renommée | **retenu** : `fraicheur_des_sources` (date de chaque fichier lu) et `sources_absentes` dans atlas.json ; écriture atomique ; cron en `;` ; les deux diffs de joker1 appliqués (roadmap_unique 3/3, atlas ⑨-⑮) | atlas.py, roadmap_unique.py, crontab, fait |
| A16 | joker1 : deux feuilles de route (atlas relit files+roadmap.json, roadmap_unique aussi, avec les doublons), deux inventaires de la machine (zones.json contre corps-technique.json), trois listes de pages (nav.json, vitrine.json, organigramme.py) + le /plan de E33 | **retenu** : l'atlas LIT la roadmap unique (une passe doublons) et corps-technique.json pour les zones ; le /plan de E33 se génère de nav.json, jamais une 4e liste ; les bancs du site restent dans BANCS-NUIT (un seul lanceur, pas un second sur la Tour) | gardien l.43 ; joker2 l.81 |
| A17 | neo2 : le sac à dos sert des FRAGMENTS comme L9 (Ida « 7 stratas… and on top », Krishna, Lalita) : `phrase()` prend la 1re « phrase » du § quel qu'en soit le début | **retenu** : une L9 est une phrase entière (majuscule ou « “ » en tête, jamais chiffre/minuscule/…), sinon la suivante du §, sinon `l9_fragment: true` ; pour Ida la fonction avant la forme, variante (a) : 65806·§2 confirmé par 4577·§19 ; le contrôle de nuit vérifie le début de phrase ; neo2 exécute elle-même (recette écrite, réversible) | neo2 l.94 |
| A18 | mahabharata : ses générateurs écrivent 13 + 11 couleurs en dur ; le banc « 0 couleur hors jetons » (E32) rougira sur /audio/ | **retenu** : après charte.css (joker2 l.75), `accueil.py` et `livre_m4b.py` écrivent des classes de la charte | mahabharata l.40 |
Écarté : `verifier_atlas.py` chez joker1 (retiré par lui : A9 donne les bancs E22-E33 à operateur, l.60 précise les quatre épreuves). Restent à Ben : A5, K1, K3, K4 (K2 est tranchée depuis le 24/09, ADR-0029 amendement 2, relevé par neo2).
✍️ gardien-claude · claude-fable-5-1 · VPS · 26/09 16h56
🗺️ Map of maps🫀 Real 3D body🖼️ The plates🎥 PHOTOREAL🪟 The showcase🎧 The audio💬 feedback?🔎 Search🧭 where we are🌌 World🌐 3D world🔍 Fractal zoom🌀 Subtle body — page🎛️ Console🔧 workshop👤 visitor…