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
Commit abc45ba
Browse filesBrowse the repository at this point in the historyBrowse files
fix(runners,#15105): integrite + maintenance bornee du cache _work persistant (#15273)
actions/checkout pose gc.auto=0 dans le depot du slot : correct pour un
workspace jetable, faux depuis #14285 qui l'a rendu persistant. Deux defauts
mesures firsthand sur ai-01 (2026-09-07) : croissance des packs sans borne
(slot 1 : 264 packs dont 263 promisor) et zero precondition d'integrite
(slot 7 : 1471 refs de zero octet, gate en loterie 1-sur-8 sans que aucun
organe ne le nomme).
- work_cache_health.sh (nouveau) : passe integrite (refs cassees lues sur le
CANAL stderr de for-each-ref -- rc=0 mesure, seul le warning nomme), reparation
par retrait des fichiers vides de .git/refs et .git/logs UNIQUEMENT (le
marqueur .promisor vide est legitime sous objects/ : hors perimetre par
construction), purge du clone si le depot reste muet ; passe maintenance
(repack -ad au-dela de COURSIA_RUNNER_CACHE_PACK_THRESHOLD, defaut 16,
mesure avant/apres au journal). Tout git passe par -c safe.directory='*'.
- entrypoint.sh : hook job-started avant l'enregistrement du runner -- aucun
job en vol ne paie, bornes d'I/O du conteneur heritees, zero plomberie hote.
- supervise.sh : knob transmis au conteneur ; garde de fraicheur #14801
etendue aux DEUX scripts embarques (entrypoint + work_cache_health).
- tests : test_work_cache_health.sh sur fixtures git reelles (clone partiel
blob:none fidele a la flotte), chaque garde avec son controle negatif ;
test 20 guards : ecart work_cache_health.sh refuse au demarrage.
Mesures (WSL git 2.43 = version de l'image flotte) :
- accumulation reproduite : 1 pack par fetch (1 -> 11 en 10 fetches)
- repack -ad sur clone au filtre reellement honore : 5 packs promisor -> 1,
reseau nul, .promisor preserve, lazy-fetch + fetch incremental OK apres
- refs de zero octet : for-each-ref rc=0 + warning stderr ; reparation par
perimetre refs/logs ; fichiers vides d'objects/ intacts
- dubious ownership : rc=128 et 0 refs sans stderr ; safe.directory=* lit
Harness : 40 PASS/0 FAIL guards + 22 PASS/0 FAIL cache, en WSL ET Git Bash.
Co-authored-by: Claude-Code <noreply@anthropic.com>
0 commit comments