docs: #ENABLING-1099 analyse, norme et guide d'application des versions @edifice.io/* - #552
Draft
pascalsaussier-edifice wants to merge 1 commit into
Draft
Conversation
pascalsaussier-edifice
force-pushed
the
develop-enabling
branch
from
August 3, 2026 08:57
9333533 to
4b64efa
Compare
pascalsaussier-edifice
force-pushed
the
docs-ENABLING-1099-norme-versions-packages
branch
from
August 3, 2026 08:58
0eb9268 to
16b8eaf
Compare
pascalsaussier-edifice
marked this pull request as draft
August 5, 2026 08:32
pascalsaussier-edifice
force-pushed
the
docs-ENABLING-1099-norme-versions-packages
branch
from
August 6, 2026 13:02
16b8eaf to
9ca9950
Compare
pascalsaussier-edifice
force-pushed
the
develop-enabling
branch
from
August 25, 2026 15:19
2b0b45c to
590c081
Compare
…ns @edifice.io/* Analyse de l'incident rack/homeworks (préprod NC 6.16) étendue aux 14 fronts React de la flotte, norme applicable par les squads, et guide d'application repo par repo. Aucun code applicatif modifié. ENABLING-1099-NORME-VERSIONS-PACKAGES.md point d'entrée docs/enabling-1099/1-constats.md faits mesurés docs/enabling-1099/2-actions.md les 10 règles docs/enabling-1099/3-methode.md comment mesurer et vérifier docs/enabling-1099/4-actions-par-repo.md le code exact à appliquer ## Mécanisme EdificeClientProvider crée son contexte React au niveau module : deux copies physiques de @edifice.io/react produisent deux objets de contexte distincts. Ce n'est pas la version qui compte mais l'unicité, et la duplication est une condition nécessaire non suffisante — il faut qu'un Provider et un consommateur tombent de part et d'autre. D'où des états dégradés silencieux. ## État mesuré Résolution de la configuration de la branche de référence de chaque repo : 4 fronts dupliqués sur 14 — communities (3 copies), rack, collect et boilerplate (2 copies). Le socle n'a qu'une version partout, le dist-tag l'unifie ; toute la duplication vient des variantes de peers. La cause tient en une ligne : ode-explorer épingle @tanstack/react-query en 5.62.7 exact. Une app est dupliquée si et seulement si son pin react-query diffère de 5.62.7 et qu'elle compose un package Edifice tiers. La corrélation est totale — blog, collaborative-wall, mindmap et wiki composent ode-explorer sans être dupliqués, parce qu'ils épinglent 5.62.7 comme lui. @tanstack/react-query est lui-même un singleton à contexte React : il est doublement en cause, comme singleton dupliqué et comme peer dont la divergence duplique le socle. ## Deux défauts à corriger - @edifice.io/collect-frontend est publié avec un spec workspace:*, donc ININSTALLABLE hors workspace, sur latest et develop. Cause : npm publish au lieu de pnpm publish. C'est ce qui rendait obligatoire l'override collect-client-rest de la « solution finale » du ticket. - Les 3 seuls fronts publiés sur npm — ode-explorer, @edifice.io/wiki et @edifice.io/collect-frontend — déclarent le socle en dependencies au lieu de peerDependencies. Les 11 autres sont private: true et ne peuvent être embarqués par personne. Et une duplication gratuite : rack, collect et le boilerplate déclarent ode-explorer sans jamais l'importer, déclaration héritée du gabarit. La retirer fait passer collect et boilerplate de 2 à 1 copie. ## Norme Priorités : N11 (retirer les ode-explorer inutilisés), N6 (pnpm publish), N5 (check CI d'unicité), N9 (peerDependencies dans les packages publiés). Puis N4, N3, N10, N8, N2, N7. N9 se propage sans intervention des squads : les fronts spécifient les packages Edifice tiers par dist-tag et 13 des 14 build.sh suppriment le lockfile avant l'install CI. Republier ode-explorer suffit, les consommateurs récupèrent la correction au build suivant. Les deux contraintes actées sont respectées : les dist-tags restent le mécanisme de ciblage environnement + squad, manifestes publiés inclus, et la norme ne dépend pas d'un pnpm-lock.yaml versionné. ## Méthode Toute configuration est lue sur la branche d'intégration de référence de chaque repo, jamais sur un working tree. Les mesures de duplication résolvent cette configuration via pnpm install --lockfile-only, écartent les répertoires orphelins de .pnpm et suivent les realpath depuis chaque importeur réel. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
pascalsaussier-edifice
force-pushed
the
docs-ENABLING-1099-norme-versions-packages
branch
from
August 26, 2026 15:18
9ca9950 to
80cb2c0
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Analyse de l'incident rack/homeworks (préprod NC 6.16), norme applicable par les squads, et guide
d'application repo par repo. Documentation uniquement — aucun code applicatif modifié.
Ticket : ENABLING-1099
Le mécanisme
EdificeClientProvidercrée son contexte React au niveau module : deux copies physiques de@edifice.io/reactproduisent deux objets de contexte distincts, d'oùCannot be used outside of EdificeClientProvider. Ce n'est pas la version qui compte mais l'unicité — et la duplication est unecondition nécessaire non suffisante : il faut qu'un Provider et un consommateur tombent de part et
d'autre. D'où des états dégradés silencieux.
État mesuré
4 fronts dupliqués sur 14, en résolvant la configuration de la branche de référence de chaque repo :
@tanstack/react-querySur les branches de référence, le socle n'a qu'une version partout — le dist-tag l'unifie. Toute la
duplication vient des variantes de peers, et la cause tient en une ligne :
La corrélation est totale :
blog,collaborative-wall,mindmapetwikicomposentode-explorersans être dupliqués, parce qu'ils épinglent
5.62.7comme lui.homeworksépingle5.90.21mais sonoverride racine l'impose aussi à
ode-explorer— une seule copie.Deux défauts à corriger
@edifice.io/collect-frontendest publié avec un specworkspace:*, donc ininstallable horsworkspace, sur
latestetdevelop. Cause :npm publishau lieu depnpm publish. C'est ce quirendait obligatoire l'override
collect-client-restde la « solution finale » du ticket.ode-explorer,@edifice.io/wiki,@edifice.io/collect-frontend— déclarent le socle endependenciesau lieu depeerDependencies.Les 11 autres sont
private: trueet ne peuvent être embarqués par personne.Et une duplication gratuite :
rack,collectet le boilerplate déclarentode-explorersans jamaisl'importer (déclaration héritée du gabarit). La retirer fait passer
collectetboilerplatede 2 à1 copie.
Norme et propagation
Priorités : N11 (retirer les
ode-explorerinutilisés) → N6 (pnpm publish) → N5 (check CId'unicité) → N9 (
peerDependenciesdans les packages publiés). Puis N4, N3, N10, N8, N2, N7.N9 se propage sans intervention des squads : les fronts spécifient les packages Edifice tiers par
dist-tag, et 13 des 14
build.shsuppriment le lockfile avant l'install CI. Republierode-explorersuffit — les consommateurs récupèrent la correction au build suivant. Aucune squad n'a de configuration
à écrire.
Les deux contraintes actées sont respectées : les dist-tags restent le mécanisme de ciblage
environnement + squad (manifestes publiés inclus), et la norme ne dépend pas d'un
pnpm-lock.yamlversionné.
Contenu
ENABLING-1099-NORME-VERSIONS-PACKAGES.mddocs/enabling-1099/1-constats.mddocs/enabling-1099/2-actions.mddocs/enabling-1099/3-methode.mddocs/enabling-1099/4-actions-par-repo.mdMéthode
Toute configuration est lue sur la branche d'intégration de référence de chaque repo
(
git show origin/<ref>:<path>), jamais sur un working tree. Les mesures de duplication résolvent cetteconfiguration via
pnpm install --lockfile-only, écartent les répertoires orphelins de.pnpm(nonpurgé entre installs) et suivent les
realpathdepuis chaque importeur réel —pnpm whymasque lesvariantes de peers et ne peut pas servir à compter.
Which Package changed?
Aucun package modifié — documentation seule.
Has the documentation changed?
Type of change
Checklist:
Comment relire
Aucun code à exécuter. Les mesures sont reproductibles avec les commandes de
docs/enabling-1099/3-methode.md— notamment la résolution--lockfile-onlydepuis une branche deréférence, qui redonne les chiffres du tableau (les dist-tags bougent : les valeurs sont datées du
28/07/2026).
pnpm lint,pnpm formatetpnpm testpassent (663 tests) — sans surprise, la branche ne contient quedu Markdown.