Skip to content

Typechecker ce que le cron exécute - #17

Merged
Asgarrrr merged 1 commit into
mainfrom
infra/cron-typecheck
Sep 13, 2026
Merged

Asgarrrr merged 1 commit into
mainfrom
infra/cron-typecheck

Conversation

@Asgarrrr

Copy link
Copy Markdown
Owner

Le trou

Le tsconfig racine exclut src/solver :

"exclude": ["node_modules", "dist", ".output", ".nitro", ".railway", "src/solver", "scripts"]

Donc le tsc --noEmit de bun run build ne lit jamais generate-daily.ts,
l'entrypoint du cron. Et le service cron construit avec bun install, sans
typecheck du tout. Le solveur partait en production sans qu'aucun compilateur ne
l'ait lu — y compris les 8 commits déployés hier.

src/solver/tsconfig.json existait déjà (commit « le projet TS du solveur
retypecheck ») mais aucun script ne l'invoquait.

Ce qui change

  • typecheck:solver dans package.json — une seule définition de la commande.
  • La CI l'exécute entre lint et test : l'échec bloque la PR.
  • Le build Railway du cron l'exécute aussi (bun install && bun run typecheck:solver) : l'échec bloque le déploiement.

Comment vérifier

$ bun run typecheck:solver
EXIT=0   (0 ligne de sortie)

Le reste reste vert : lint 0, test 340/340, verify 0, build 0.

Ce qui n'est PAS réglé

  • L'échec muet du cron. Un run qui casse à 05:00 sur du code qui compile
    reste invisible. L'IaC Railway n'a aucune primitive pour ça : webhook et
    notification ont 0 occurrence dans les types du SDK. Ça se règle au
    niveau workspace, dans le dashboard.
  • Le domaine public du cron. Non supprimable depuis l'IaC : les deux formes
    documentées par le type (serviceDomains: { "<host>": null } et
    serviceDomains: null) planifient en no-op sur railway 3.5.7. Un commentaire
    dans .railway/railway.ts dit où le faire.
  • Le palier 3 n'a toujours aucun repli.

Risque / rollback

Aucun changement de comportement à l'exécution : c'est une vérification ajoutée,
pas du code modifié. Rollback = revert du commit.

Le tsconfig racine exclut `src/solver`, donc le `tsc --noEmit` de
`bun run build` ne lit jamais generate-daily.ts — l'entrypoint du cron. Et le
service cron construit avec `bun install`, sans typecheck du tout. Le solveur
partait donc en production sans qu'aucun compilateur ne l'ait lu.

`src/solver/tsconfig.json` existait déjà mais aucun script ne l'invoquait.
`typecheck:solver` lui donne un appelant, en un seul endroit : la CI l'exécute
sur chaque PR, le build Railway du cron sur chaque déploiement.

Deux trous restent ouverts, consignés dans AGENTS.md : un run qui casse à 05:00
sur du code qui compile est toujours muet — l'IaC Railway n'a aucune primitive
de notification, `webhook` et `notification` n'apparaissent nulle part dans les
types du SDK — et le domaine public du service cron n'est pas supprimable
depuis le fichier.
@Asgarrrr
Asgarrrr merged commit c653da8 into main Sep 13, 2026
2 checks passed
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