docs(release): report edition matrix changes to the site's comparison table #450

Merged
maximus merged 1 commit from issue-180-site-edition-matrix into main 2026-10-18 18:18:37 +00:00
Owner

Refs maximus/la-compagnie-maximus#180

Etape 0 du skill de release : quand [Unreleased] change la matrice des editions (ENTITLEMENTS, FEATURE_TIERS, verrou pose sur un module Free comme le fractionnement de #369), preparer la PR du site (la-compagnie-maximus/src/data/editions.ts, tableau comparatif et simplresultat_detail_desc) avant le tag et ne la deployer qu'apres la publication de la release. Entree datee au changelog du skill.

Documentation seule, aucun code.

🤖 Generated with Claude Code

Refs maximus/la-compagnie-maximus#180 Etape 0 du skill de release : quand `[Unreleased]` change la matrice des editions (`ENTITLEMENTS`, `FEATURE_TIERS`, verrou pose sur un module Free comme le fractionnement de #369), preparer la PR du site (`la-compagnie-maximus/src/data/editions.ts`, tableau comparatif et `simplresultat_detail_desc`) avant le tag et ne la deployer qu'apres la publication de la release. Entree datee au changelog du skill. Documentation seule, aucun code. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
maximus added 1 commit 2026-10-16 23:37:05 +00:00
The product page of la-compagnie-maximus copies the edition matrix into a
comparison table (la-compagnie-maximus#180). Step 0 of the release skill now
says to prepare the site PR before the tag and deploy it only after the
release is published.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Author
Owner

Niveau : haut — .claude/skills/release/SKILL.md (Release et mise à jour)
Max doit lire avant le merge.

Verdict : APPROVE

La PR ajoute à l'étape 0 du skill de release le report d'un changement de matrice des éditions vers le tableau comparatif du site, avec une entrée datée au changelog du skill. Les faits cités tiennent, la section du site visée existe et renvoie à cette étape, et la sonde sur les plages de release publiées montre que la troisième clause du déclencheur (« un module Free qui passe sous verrou ») est la seule qui attrape #369.

Ce qui a été vérifié

Faits cités (sur main 201a977 et sur main du site) :

  • ENTITLEMENTS : src/shared/entitlements.ts:25 ; FEATURE_TIERS : src-tauri/src/commands/entitlements.rs:22 ; la Répartition de #369 passe par SPLIT_FEATURE = "adjustments" (src/shared/splitGate.ts:29).
  • Site : src/data/editions.ts (editionMatrices) et src/components/EditionTable.tsx présents ; products.simplresultat_detail_desc dans src/messages/fr.json et en.json ; section « Matrice des éditions — Simpl-Résultat » aux lignes 33 à 41 du CLAUDE.md du site, qui finit par « Le skill de release de Simpl-Résultat (étape 0) renvoie à cette section » : le lien va dans les deux sens.
  • Critère d'acceptation de la-compagnie-maximus#180 (« procédure de report écrite dans le skill de release et dans le CLAUDE.md du site ») : rempli une fois cette PR mergée, l'étape 0 étant l'endroit que l'issue demande.

Sonde du déclencheur (git en lecture seule, sur les tags publiés) :

  • v0.17.1..main : ENTITLEMENTS et FEATURE_TIERS n'ont pas changé de valeur (entitlements.ts +3/−1, commentaire seul ; entitlements.rs intact), et [Unreleased] porte l'entrée de #369 dans les deux changelogs. Mutation de la règle : sans la clause « module Free qui passe sous verrou », le déclencheur reste muet sur la seule modification de matrice de la prochaine release. Cette clause porte la règle.
  • v0.16.0..v0.17.0 et v0.17.0..v0.17.1 : aucune des deux constantes ne bouge, aucun verrou n'est posé, le déclencheur reste muet, comme attendu.

Merge avec main : le seul changement de ce fichier depuis la base de la PR (c5efc38, étape 10) ne touche pas les deux hunks ; Forgejo répond mergeable: true.

CI : aucune sur la tête 0587f30, comme prévu : son check-frontend.yml ignore .claude/**, et check-rust.yml ne le liste pas. Aucun test ne lit SKILL.md (build-latest-json.test.mjs lit verify-release.sh, pas ce fichier) : pas de suite à rejouer.

Passe sécurité (sections 1, 3 et 4 de security-scan, sur les deux lignes ajoutées) : ni secret, ni jeton, ni URL à identifiants, ni coordonnée de tiers, ni motif dangereux, ni TODO de sécurité ; aucun .env suivi. Section 2 sans objet (ni manifeste ni lock). Règles de zone : rien ne touche la signature, latest.json, la config updater ni release.yml ; aucun fait de REVIEW.md rendu faux. Aucun constat.

Fermeture : Refs maximus/la-compagnie-maximus#180, et la timeline de l'issue porte un pull_ref de cette PR en ref_action: none : rien ne se ferme au merge. Après le merge, cocher la dernière case de la-compagnie-maximus#180 et la fermer à la main.

Suggestions (non bloquantes)

  1. Rappel après la publication. L'ordre « déployer après la publication » vit seulement à l'étape 0, alors que son moment arrive après l'étape 9, 22 à 30 min de CI plus tard. Une ligne à l'étape 9, après VERDICT : OK (« si l'étape 0 a préparé une PR du site : la merger, npx vercel --prod, le dire sur l'issue du site »), évite un tableau resté sur l'ancienne matrice. À la prochaine release, rien à déployer (#298 est en production depuis le 2026-10-16) : seulement le commentaire sur la-compagnie-maximus#180 prévu dans STATE.md.
  2. Merger, pas seulement déployer, après la release. Le site se déploie à la main par npx vercel --prod depuis la copie locale (section « Déploiement » de son CLAUDE.md) : une PR du site mergée avant le tag partirait avec le prochain déploiement, même sans rapport, par exemple celui de la « Checklist post-release Simpl-Liste ». Le commentaire 23966 de la-compagnie-maximus#180 disait « ne se merge et ne se deploie qu'apres la release ». Écrire « ne la merger et ne la déployer qu'après la publication », ici et à l'étape 3 de la section du site.
  3. Verrou levé. La section du site parle d'« un verrou posé ou levé » ; hors des deux constantes, la parenthèse de ce paragraphe ne nomme que le verrou posé. Un verrou retiré sans toucher ENTITLEMENTS (l'appel useEntitlement(SPLIT_FEATURE) de TransactionsPage.tsx:47 supprimé, la clé adjustments restant en place) ne déclencherait rien. Proposition : « ou un verrou posé ou levé sur une page ou une action, comme la Répartition de #369 », avec une raison qui couvre les deux sens (« avant, le tableau décrirait une matrice que les binaires installés n'appliquent pas encore »).
  4. Rendre la troisième clause vérifiable. Elle repose sur la lecture de [Unreleased]. Repère mécanique mesuré sur les tags : git log --oneline -G 'useEntitlement\(' <tag précédent>..HEAD -- src ':(exclude)*.test.ts' ':(exclude)*.test.tsx' liste cb7f847 et a8c3fd6 (#369) sur v0.17.1..main, les quatre commits du gating sur v0.14.0..v0.15.0, rien sur v0.15.0..v0.16.0 ni sur v0.17.0..v0.17.1, et un seul faux positif sur v0.16.0..v0.17.0 (f77ce94, #351, qui lit le droit budget). Un diff de fichier sur entitlements.ts ne convient pas : il réagit aux commentaires (+3/−1 depuis la v0.17.1, sans valeur changée).
  5. Détails. updated: reste à 2026-10-11 alors que l'entrée ajoutée est datée du 2026-10-16. La clé complète est products.simplresultat_detail_desc, dans src/messages/{fr,en}.json du site et pas dans editions.ts : la parenthèse se lit comme si les trois éléments y étaient.
  6. Suivi possible (l'issue écrit « peuvent ») : un pointeur vers la copie du site dans l'en-tête de entitlements.ts et de entitlements.rs, pour qu'un changement de matrice se voie au moment de l'édition et pas seulement au tag. editions.ts pointe déjà vers l'app ; le sens inverse manque. Toucher entitlements.rs met cette PR-là au niveau haut (REVIEW.md).

Actions faites

  • Exécuté : la sonde ci-dessus (git en lecture seule) et la passe sécurité. Ni suite ni mutation de code : le diff n'a pas de code, et rien d'exécutable ne lit ce fichier.
  • Copies de travail /tmp/pr450-* (fichiers du site lus par l'API, lignes ajoutées) supprimées en fin de revue.
  • Label : la-compagnie-maximus#180, l'issue du Refs, passe de status:review à status:approved. Simpl-Resultat#180 (« Vulnerabilite postcss », fermée), que désignerait le numéro de la branche, n'est pas touchée.
Niveau : haut — `.claude/skills/release/SKILL.md` (Release et mise à jour) Max doit lire avant le merge. ## Verdict : APPROVE La PR ajoute à l'étape 0 du skill de release le report d'un changement de matrice des éditions vers le tableau comparatif du site, avec une entrée datée au changelog du skill. Les faits cités tiennent, la section du site visée existe et renvoie à cette étape, et la sonde sur les plages de release publiées montre que la troisième clause du déclencheur (« un module Free qui passe sous verrou ») est la seule qui attrape #369. ## Ce qui a été vérifié **Faits cités** (sur `main` `201a977` et sur `main` du site) : - `ENTITLEMENTS` : `src/shared/entitlements.ts:25` ; `FEATURE_TIERS` : `src-tauri/src/commands/entitlements.rs:22` ; la Répartition de #369 passe par `SPLIT_FEATURE = "adjustments"` (`src/shared/splitGate.ts:29`). - Site : `src/data/editions.ts` (`editionMatrices`) et `src/components/EditionTable.tsx` présents ; `products.simplresultat_detail_desc` dans `src/messages/fr.json` et `en.json` ; section « Matrice des éditions — Simpl-Résultat » aux lignes 33 à 41 du `CLAUDE.md` du site, qui finit par « Le skill de release de Simpl-Résultat (étape 0) renvoie à cette section » : le lien va dans les deux sens. - Critère d'acceptation de la-compagnie-maximus#180 (« procédure de report écrite dans le skill de release et dans le `CLAUDE.md` du site ») : rempli une fois cette PR mergée, l'étape 0 étant l'endroit que l'issue demande. **Sonde du déclencheur** (git en lecture seule, sur les tags publiés) : - `v0.17.1..main` : `ENTITLEMENTS` et `FEATURE_TIERS` n'ont pas changé de valeur (`entitlements.ts` +3/−1, commentaire seul ; `entitlements.rs` intact), et `[Unreleased]` porte l'entrée de #369 dans les deux changelogs. Mutation de la règle : sans la clause « module Free qui passe sous verrou », le déclencheur reste muet sur la seule modification de matrice de la prochaine release. Cette clause porte la règle. - `v0.16.0..v0.17.0` et `v0.17.0..v0.17.1` : aucune des deux constantes ne bouge, aucun verrou n'est posé, le déclencheur reste muet, comme attendu. **Merge avec `main`** : le seul changement de ce fichier depuis la base de la PR (`c5efc38`, étape 10) ne touche pas les deux hunks ; Forgejo répond `mergeable: true`. **CI** : aucune sur la tête `0587f30`, comme prévu : son `check-frontend.yml` ignore `.claude/**`, et `check-rust.yml` ne le liste pas. Aucun test ne lit `SKILL.md` (`build-latest-json.test.mjs` lit `verify-release.sh`, pas ce fichier) : pas de suite à rejouer. **Passe sécurité** (sections 1, 3 et 4 de `security-scan`, sur les deux lignes ajoutées) : ni secret, ni jeton, ni URL à identifiants, ni coordonnée de tiers, ni motif dangereux, ni TODO de sécurité ; aucun `.env` suivi. Section 2 sans objet (ni manifeste ni lock). Règles de zone : rien ne touche la signature, `latest.json`, la config `updater` ni `release.yml` ; aucun fait de `REVIEW.md` rendu faux. Aucun constat. **Fermeture** : `Refs maximus/la-compagnie-maximus#180`, et la timeline de l'issue porte un `pull_ref` de cette PR en `ref_action: none` : rien ne se ferme au merge. Après le merge, cocher la dernière case de la-compagnie-maximus#180 et la fermer à la main. ## Suggestions (non bloquantes) 1. **Rappel après la publication.** L'ordre « déployer après la publication » vit seulement à l'étape 0, alors que son moment arrive après l'étape 9, 22 à 30 min de CI plus tard. Une ligne à l'étape 9, après `VERDICT : OK` (« si l'étape 0 a préparé une PR du site : la merger, `npx vercel --prod`, le dire sur l'issue du site »), évite un tableau resté sur l'ancienne matrice. À la prochaine release, rien à déployer (#298 est en production depuis le 2026-10-16) : seulement le commentaire sur la-compagnie-maximus#180 prévu dans `STATE.md`. 2. **Merger, pas seulement déployer, après la release.** Le site se déploie à la main par `npx vercel --prod` depuis la copie locale (section « Déploiement » de son `CLAUDE.md`) : une PR du site mergée avant le tag partirait avec le prochain déploiement, même sans rapport, par exemple celui de la « Checklist post-release Simpl-Liste ». Le commentaire 23966 de la-compagnie-maximus#180 disait « ne se merge et ne se deploie qu'apres la release ». Écrire « ne la merger et ne la déployer qu'après la publication », ici et à l'étape 3 de la section du site. 3. **Verrou levé.** La section du site parle d'« un verrou posé ou levé » ; hors des deux constantes, la parenthèse de ce paragraphe ne nomme que le verrou posé. Un verrou retiré sans toucher `ENTITLEMENTS` (l'appel `useEntitlement(SPLIT_FEATURE)` de `TransactionsPage.tsx:47` supprimé, la clé `adjustments` restant en place) ne déclencherait rien. Proposition : « ou un verrou posé ou levé sur une page ou une action, comme la Répartition de #369 », avec une raison qui couvre les deux sens (« avant, le tableau décrirait une matrice que les binaires installés n'appliquent pas encore »). 4. **Rendre la troisième clause vérifiable.** Elle repose sur la lecture de `[Unreleased]`. Repère mécanique mesuré sur les tags : `git log --oneline -G 'useEntitlement\(' <tag précédent>..HEAD -- src ':(exclude)*.test.ts' ':(exclude)*.test.tsx'` liste `cb7f847` et `a8c3fd6` (#369) sur `v0.17.1..main`, les quatre commits du gating sur `v0.14.0..v0.15.0`, rien sur `v0.15.0..v0.16.0` ni sur `v0.17.0..v0.17.1`, et un seul faux positif sur `v0.16.0..v0.17.0` (`f77ce94`, #351, qui lit le droit `budget`). Un diff de fichier sur `entitlements.ts` ne convient pas : il réagit aux commentaires (+3/−1 depuis la v0.17.1, sans valeur changée). 5. **Détails.** `updated:` reste à `2026-10-11` alors que l'entrée ajoutée est datée du 2026-10-16. La clé complète est `products.simplresultat_detail_desc`, dans `src/messages/{fr,en}.json` du site et pas dans `editions.ts` : la parenthèse se lit comme si les trois éléments y étaient. 6. **Suivi possible** (l'issue écrit « peuvent ») : un pointeur vers la copie du site dans l'en-tête de `entitlements.ts` et de `entitlements.rs`, pour qu'un changement de matrice se voie au moment de l'édition et pas seulement au tag. `editions.ts` pointe déjà vers l'app ; le sens inverse manque. Toucher `entitlements.rs` met cette PR-là au niveau haut (`REVIEW.md`). ## Actions faites - Exécuté : la sonde ci-dessus (git en lecture seule) et la passe sécurité. Ni suite ni mutation de code : le diff n'a pas de code, et rien d'exécutable ne lit ce fichier. - Copies de travail `/tmp/pr450-*` (fichiers du site lus par l'API, lignes ajoutées) supprimées en fin de revue. - Label : la-compagnie-maximus#180, l'issue du `Refs`, passe de `status:review` à `status:approved`. Simpl-Resultat#180 (« Vulnerabilite postcss », fermée), que désignerait le numéro de la branche, n'est pas touchée.
maximus force-pushed issue-180-site-edition-matrix from 0587f309c1 to 522232947c 2026-10-18 18:18:27 +00:00 Compare
maximus merged commit 522232947c into main 2026-10-18 18:18:37 +00:00
maximus deleted branch issue-180-site-edition-matrix 2026-10-18 18:18:37 +00:00
Author
Owner

Mergée le 2026-10-18 en avance rapide, sur décision de Max, après l'APPROVE de la revue 24899. La tête mergée, 5222329, n'a pas été relue telle quelle.

main avait reçu #419 (PR #464) entre-temps : sa dernière ligne du journal intégré au skill, datée du 2026-10-18, entrait en conflit avec la ligne de cette PR, datée du 2026-10-16. Le merge avec rebase côté serveur a répondu 405 trois fois (mergeable: false). J'ai rebasé dans un worktree séparé, hors du dépôt local, que la session de #421 utilisait. Le conflit est résolu en gardant les deux lignes dans l'ordre des dates. Les lignes ajoutées sont identiques à l'octet à celles de la tête relue 0587f30 (comparaison des + des deux diffs), et le diff contre main reste +2 dans .claude/skills/release/SKILL.md. Poussée avec --force-with-lease sur 0587f30. Aucune CI ne concerne ce fichier.

Les cinq suggestions de la revue vont dans une issue de suivi.

Mergée le 2026-10-18 en avance rapide, sur décision de Max, après l'APPROVE de la revue 24899. **La tête mergée, `5222329`, n'a pas été relue telle quelle.** `main` avait reçu #419 (PR #464) entre-temps : sa dernière ligne du journal intégré au skill, datée du 2026-10-18, entrait en conflit avec la ligne de cette PR, datée du 2026-10-16. Le merge avec rebase côté serveur a répondu 405 trois fois (`mergeable: false`). J'ai rebasé dans un worktree séparé, hors du dépôt local, que la session de #421 utilisait. Le conflit est résolu en gardant les deux lignes dans l'ordre des dates. Les lignes ajoutées sont identiques à l'octet à celles de la tête relue `0587f30` (comparaison des `+` des deux diffs), et le diff contre `main` reste `+2` dans `.claude/skills/release/SKILL.md`. Poussée avec `--force-with-lease` sur `0587f30`. Aucune CI ne concerne ce fichier. Les cinq suggestions de la revue vont dans une issue de suivi.
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: maximus/Simpl-Resultat#450
No description provided.