Skip to content

ci(preflight): vérifier les comptes ACTIFS Supabase et Vercel, pas seulement les fichiers de lien - #276

Merged
thierryvm merged 1 commit into
mainfrom
ci/preflight-comptes-actifs
Jul 27, 2026
Merged

ci(preflight): vérifier les comptes ACTIFS Supabase et Vercel, pas seulement les fichiers de lien#276
thierryvm merged 1 commit into
mainfrom
ci/preflight-comptes-actifs

Conversation

@thierryvm

Copy link
Copy Markdown
Owner

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

  • Supabase : on demande à la CLI ce qu'elle voit avec les identifiants qu'elle utilisera vraiment, et on exige d'y trouver ankora-prod marqué linked.
  • Vercel : 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.

gh reste un ❌ quand elle manque, délibérément : git push fonctionne 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 .cmd sans shell (EINVAL), et le vercel global de npm en est un — alors que gh et supabase sont 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

Situation Attendu Obtenu
Normal ✅ ✅ ✅ ✅
Mauvais token Supabase
Mauvais token Vercel
Les deux CLI hors du PATH ➖ ➖ ➖ ➖

É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 push thierryvm, Supabase ne voyant que ankora-prod, Vercel sur thierryvm avec une seule équipe. L'infrastructure OVB n'est joignable depuis ce dépôt sur aucune des trois plateformes.

…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>
@vercel

vercel Bot commented Jul 27, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
ankora Ready Ready Preview, Comment Jul 27, 2026 11:13am

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @thierryvm, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

@github-actions github-actions Bot added area:ci CI / GitHub Actions / workflows status:review-needed Ready for review labels Jul 27, 2026
@thierryvm
thierryvm merged commit ccaec74 into main Jul 27, 2026
10 checks passed
@thierryvm
thierryvm deleted the ci/preflight-comptes-actifs branch July 27, 2026 11:23
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:ci CI / GitHub Actions / workflows status:review-needed Ready for review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant