Skip to content

docs: #ENABLING-1099 analyse, norme et guide d'application des versions @edifice.io/* - #552

Draft
pascalsaussier-edifice wants to merge 1 commit into
develop-enablingfrom
docs-ENABLING-1099-norme-versions-packages
Draft

docs: #ENABLING-1099 analyse, norme et guide d'application des versions @edifice.io/*#552
pascalsaussier-edifice wants to merge 1 commit into
develop-enablingfrom
docs-ENABLING-1099-norme-versions-packages

Conversation

@pascalsaussier-edifice

@pascalsaussier-edifice pascalsaussier-edifice commented Jul 31, 2026

Copy link
Copy Markdown
Collaborator

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

EdificeClientProvider crée son contexte React au niveau module : deux copies physiques de
@edifice.io/react produisent 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 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é

4 fronts dupliqués sur 14, en résolvant la configuration de la branche de référence de chaque repo :

Front Copies du socle Copies de @tanstack/react-query
communities 3 2
rack 2 2
collect 2 2
boilerplate 2 2
les 10 autres 1 1

Sur 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 :

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. homeworks épingle 5.90.21 mais son
override racine l'impose aussi à ode-explorer — une seule copie.

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 npmode-explorer, @edifice.io/wiki,
    @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 et propagation

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. 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.yaml
versionné.

Contenu

Fichier Contenu
ENABLING-1099-NORME-VERSIONS-PACKAGES.md Point d'entrée : problème, état mesuré, 10 actions, récap par front, ordre d'exécution
docs/enabling-1099/1-constats.md Vocabulaire, mécanisme, copies actives, packages publiés, banc d'essai
docs/enabling-1099/2-actions.md Les 10 règles : contenu exact, impact, inconvénients
docs/enabling-1099/3-methode.md Comment lire une config, compter les copies, inspecter un package publié
docs/enabling-1099/4-actions-par-repo.md Le code exact à copier, repo par repo, sections autonomes

Mé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 cette
configuration via pnpm install --lockfile-only, écartent les répertoires orphelins de .pnpm (non
purgé entre installs) et suivent les realpath depuis chaque importeur réel — pnpm why masque les
variantes de peers et ne peut pas servir à compter.

Which Package changed?

Aucun package modifié — documentation seule.

  • Components
  • Core
  • Icons
  • Hooks

Has the documentation changed?

  • Storybook

Type of change

  • Chore (PATCH)
  • Doc (PATCH)
  • Bug fix (PATCH)
  • New feature (MINOR)
  • Breaking change (MAJOR)

Checklist:

  • My code follows the style guidelines of this project
  • I have performed a self-review of my code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings

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-only depuis une branche de
référence, qui redonne les chiffres du tableau (les dist-tags bougent : les valeurs sont datées du
28/07/2026).

pnpm lint, pnpm format et pnpm test passent (663 tests) — sans surprise, la branche ne contient que
du Markdown.

@pascalsaussier-edifice
pascalsaussier-edifice force-pushed the docs-ENABLING-1099-norme-versions-packages branch from 0eb9268 to 16b8eaf Compare August 3, 2026 08:58
@pascalsaussier-edifice pascalsaussier-edifice self-assigned this Aug 3, 2026
@pascalsaussier-edifice
pascalsaussier-edifice marked this pull request as draft August 5, 2026 08:32
@pascalsaussier-edifice
pascalsaussier-edifice force-pushed the docs-ENABLING-1099-norme-versions-packages branch from 16b8eaf to 9ca9950 Compare August 6, 2026 13:02
…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
pascalsaussier-edifice force-pushed the docs-ENABLING-1099-norme-versions-packages branch from 9ca9950 to 80cb2c0 Compare August 26, 2026 15:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant