ci(preflight): vérifier les comptes ACTIFS Supabase et Vercel, pas seulement les fichiers de lien - #276
Merged
Merged
Conversation
…t the link files The preflight read two files on disk and called it a verified account. A link file can name the right project while the CLI is authenticated somewhere else — the file says GO and the command goes elsewhere. That blind spot cost twenty minutes on 2026-07-27: @Thierry queried the wrong Supabase project from the dashboard and read another application's schema, and we spent that time wondering whether production had drifted from its migrations. Two new checks, both network, both skipped in --local so the pre-commit hook stays offline. Supabase: ask the CLI what it sees with the credentials it will actually use, and require ankora-prod to be there AND marked linked. Vercel: vercel whoami. A missing CLI is now a third state, not a failure. Without the Supabase CLI you cannot migrate and without the Vercel CLI you cannot deploy, so the risk disappears with the tool; making that a red mark would fail the preflight forever for anyone without them, and a guardrail people learn to bypass guards nothing. gh stays red when absent, deliberately — git push works fine without it, so there the risk survives the tool. Two Windows details, both found by testing rather than reasoning. Node >= 20 refuses to spawn .cmd without a shell (EINVAL), and npm's global vercel is a .cmd while gh and supabase are real executables. And detecting a missing binary by matching its error text failed silently on a French Windows, where the message is translated — presence is now decided by the exit code of where/which, which no locale changes. Falsified in all three directions: green normally, red on a bad Supabase token, red on a bad Vercel token, and skipped with both CLIs off PATH. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
Contributor
There was a problem hiding this comment.
Sorry @thierryvm, you have reached your weekly rate limit of 500000 diff characters.
Please try again later or upgrade to continue using Sourcery
thierryvm
added a commit
that referenced
this pull request
Jul 27, 2026
… matin La section « Dettes ouvertes » le listait encore comme ouvert alors que #276 l'a fermé. Un ROADMAP qui garde une dette réglée est aussi trompeur qu'un qui en oublie une : il fait perdre du temps à qui la reprend. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
thierryvm
added a commit
that referenced
this pull request
Jul 27, 2026
#280) ## Pourquoi maintenant Règle durable du projet : **le ROADMAP se remet à jour avant d'ouvrir la branche suivante, pas après.** La branche suivante est PR-A de l'étape 3b. Deux écarts à solder d'abord. ## Écart 1 — l'étape 3 était annoncée « suivante » Elle est en cours depuis deux jours, et son détail vaut d'être lisible. L'exécution des spécifications a montré que le préalable n'était pas la file de suppression, mais **ce sur quoi elle repose** : le journal d'audit n'enregistrait rien depuis avril, et trois affirmations publiques étaient inexactes. Six lots livrés (#273 → #279), deux restants (PR-A inerte, PR-B armement), et un écart art. 17 mesuré qui part en session dédiée (#278). Le **verrou de PR-B** est désormais écrit dans le ROADMAP : trois lectures production, dont une NO-GO — toute la conception repose sur un chemin PostgREST `service_role` jamais re-vérifié en production depuis #273. ## Écart 2 — une dette réglée encore listée comme ouverte « Angle mort du préflight comptes » figurait dans les dettes ouvertes alors que #276 l'a comblé ce matin. Un ROADMAP qui garde une dette réglée est aussi trompeur qu'un qui en oublie une : il fait perdre du temps à qui la reprend. ## Portée Un seul fichier, markdown. Aucun code. 🤖 Generated with [Claude Code](https://claude.com/claude-code) ## Summary by Sourcery Mettre à jour le ROADMAP pour refléter l’état actuel et la répartition détaillée de l’étape 3, ainsi que la résolution récente de la dette. Documentation : - Ajouter une sous-section détaillée documentant l’avancement de l’étape 3, les lots livrés, les PR restantes et les contraintes associées en matière d’audit/journalisation. - Marquer la dette « Angle mort du préflight comptes » comme résolue, avec une explication mise à jour du nouveau comportement de vérification pour les comptes Supabase et Vercel. <details> <summary>Original summary in English</summary> ## Summary by Sourcery Update the ROADMAP to reflect the current status and detailed breakdown of step 3 and recent debt resolution. Documentation: - Add a detailed sub-section documenting step 3 progress, delivered lots, remaining PRs, and associated audit/logging constraints. - Mark the 'Angle mort du préflight comptes' debt as resolved with an updated explanation of the new verification behavior for Supabase and Vercel accounts. </details> --------- Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
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.
Le trou
Le préflight lisait deux fichiers sur le disque et appelait ça un compte vérifié. Or un fichier de lien peut désigner le bon projet pendant que la CLI est authentifiée ailleurs : le fichier dit GO, la commande part autre part.
Ça a coûté vingt minutes le 27 juillet — @Thierry a interrogé le mauvais projet Supabase depuis le dashboard, lu le schéma d'une autre application, et on a cru à une dérive de schéma en production.
Deux vérifications de plus
ankora-prodmarquélinked.vercel whoami.Les deux sont réseau, les deux sont sautées en mode
--local— le hook pre-commit reste hors ligne.Une CLI absente n'est plus un échec
Sans la CLI Supabase on ne peut pas migrer, sans la CLI Vercel on ne peut pas déployer : le risque disparaît avec l'outil. En faire un ❌ ferait échouer le préflight en permanence chez qui ne les a pas — et un garde-fou qu'on prend l'habitude de contourner ne garde plus rien.
ghreste un ❌ quand elle manque, délibérément :git pushfonctionne très bien sans elle, donc là le risque survit à l'outil. L'asymétrie est commentée dans le code.Deux détails Windows, trouvés en testant et non en raisonnant
Node ≥ 20 refuse de lancer un
.cmdsans shell (EINVAL), et levercelglobal de npm en est un — alors queghetsupabasesont de vrais exécutables.Et surtout : détecter une commande absente en lisant son message d'erreur échouait en silence sur un Windows français, où le texte est traduit. La présence se décide maintenant sur le code de sortie de
where/which, qu'aucune langue ne change.Falsifié dans les trois directions
État réel des comptes aujourd'hui
Audit complet mené avant d'écrire une ligne : GitHub actif
thierryvm(l'autre compte est présent au trousseau mais inactif), identité de pushthierryvm, Supabase ne voyant queankora-prod, Vercel surthierryvmavec une seule équipe. L'infrastructure OVB n'est joignable depuis ce dépôt sur aucune des trois plateformes.