You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
CI: network calls and retry loops outside #681 still have no per-attempt bound #735
Issue #681 bounded each attempt of the pgvector apt retry loop (PR #712). The independent review of #712 found the same defect class elsewhere: network calls and retry loops with no per-attempt bound, so a stalled mirror holds a CI job until the job timeout instead of failing the attempt and retrying.
Sites read at origin/main 02c3cf0 (review evidence, not yet re-verified one by one):
Already bounded, for reference: .github/workflows/upstream-identity.yml:54-55, pg_isready at .github/actions/test-suite/action.yml:146.
Expected: every attempt has a bound, a final failure fails the step (no fallback, no continue-on-error), the final message names the cause of the last attempt (the defect fixed in #712 round 2), and a test runs each loop with stubs, without a clock.
Caveat from the review: an apt-get blocked in uninterruptible sleep stays unbounded with or without timeout -k; nothing here was run on a real Ubuntu runner.
boucles de 5 tentatives (HF, FlashRank, tree-sitter) : python -c … sans timeout, le message final ne dit pas pourquoi la dernière tentative a échoué
.github/workflows/release.yml:508
curl -fsSL de mcp-publisher sans --max-time
.github/workflows/pipeline-post-merge.yml:95
urlopen(request) sans timeout=
scripts/refresh_rustup_hash.sh:9
curl -sSf sans --max-time (script de maintenance manuel, pas exécuté en CI)
scripts/setup.sh:115-116
apt-get sans borne (installeur utilisateur, pas exécuté en CI)
Tout ce qui touche la CI est sous .github/, et le token de cette routine n'a pas la permission workflows. Je n'y touche donc pas. Voici le diff proposé, dans l'esprit de #712 : une borne par tentative, un échec final qui fait échouer le step, et un message qui donne la cause de la dernière tentative.
Les valeurs 300 s, 120 s et 30 s sont des propositions, pas des mesures : il faut les caler sur la durée observée des steps dans les runs Pipeline récents. Pour le test « sans horloge » demandé, le plus propre est d'extraire la boucle dans un scripts/ci_retry.sh appelé par l'action, testable avec un stub de timeout et de sleep. Cela demande quand même de modifier l'action.
Décision humaine requise : appliquer ce diff (ou donner à la routine la permission workflows), et dire si les deux scripts hors CI (refresh_rustup_hash.sh, setup.sh) doivent rester dans le périmètre de cette issue. Je pose autopilot:hold. Pas vérifié : rien n'a tourné sur un runner Ubuntu.
Activity
cdeust commentedon Oct 28, 2026
CI autopilot : endroits revérifiés sur
origin/main8e1c131, et diff proposéL'inventaire de l'issue date de 02c3cf0 ;
.github/workflows/ci.ymln'existe plus. Sites encore sans borne par tentative :.github/actions/test-suite/action.yml:84curl -fsSLde la clé PGDG sans--max-timeni retry (le même step que #681 borne pourtantapt-getàtimeout ${APT_TIMEOUT}s).github/actions/test-suite/action.yml:205,:222,:262python -c …sanstimeout, le message final ne dit pas pourquoi la dernière tentative a échoué.github/workflows/release.yml:508curl -fsSLde mcp-publisher sans--max-time.github/workflows/pipeline-post-merge.yml:95urlopen(request)sanstimeout=scripts/refresh_rustup_hash.sh:9curl -sSfsans--max-time(script de maintenance manuel, pas exécuté en CI)scripts/setup.sh:115-116apt-getsans borne (installeur utilisateur, pas exécuté en CI)Tout ce qui touche la CI est sous
.github/, et le token de cette routine n'a pas la permissionworkflows. Je n'y touche donc pas. Voici le diff proposé, dans l'esprit de #712 : une borne par tentative, un échec final qui fait échouer le step, et un message qui donne la cause de la dernière tentative.Les valeurs 300 s, 120 s et 30 s sont des propositions, pas des mesures : il faut les caler sur la durée observée des steps dans les runs Pipeline récents. Pour le test « sans horloge » demandé, le plus propre est d'extraire la boucle dans un
scripts/ci_retry.shappelé par l'action, testable avec un stub detimeoutet desleep. Cela demande quand même de modifier l'action.Décision humaine requise : appliquer ce diff (ou donner à la routine la permission
workflows), et dire si les deux scripts hors CI (refresh_rustup_hash.sh,setup.sh) doivent rester dans le périmètre de cette issue. Je poseautopilot:hold. Pas vérifié : rien n'a tourné sur un runner Ubuntu.Generated by Claude Code