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
merge_ready : résidu de #16483 (disposition exact-head, REVIEW_READY, isolation d'erreur par PR) #17672
La PR #16483 (« dériver et consommer la queue READY », ouverte le 17/09) est fermée comme en grande partie supersédée. Depuis son ouverture, main a avancé de 784 commits. scripts/check_adjoint_prevalidation.py y a été réécrit (10 commits), et scripts/coordination/merge_ready.py (#17456) occupe désormais la même niche. La comparaison, faite fonction par fonction à la tête origin/main du 2026-09-24 :
merge_ready.py relit mergeable_state + tête, pas l'empreinte complète
Ne pas reprendre le calcul DWELL de #16483 tel quel : il est moins strict que celui de merge_dwell.py, qui écarte les merges sans contenu propre, et le reprendre serait une régression.
Résidu réellement absent de main
Disposition de review structurée à la tête exacte : approval-not-on-head vs approved-exact-head. Le gate hache l'oid de review sans le classer.
Isolation par entrée d'une erreur inattendue dans merge_ready.py : aujourd'hui, un UnexpectedError sur une PR arrête le balayage entier (break après run-error). Ce peut être un fail-closed voulu, par exemple sur une panne d'authentification. À trancher : distinguer les erreurs qui touchent toute la passe (jeton, réseau) de celles qui ne concernent qu'une PR.
Forme attendue (régime de consolidation)
Les trois points se fusionnent dans merge_ready.py, sans nouveau mode --queue dans le gate. Un livrable par point, avec un test qui échoue avant le correctif et passe après.
Contexte
La PR #16483 (« dériver et consommer la queue READY », ouverte le 17/09) est fermée comme en grande partie supersédée. Depuis son ouverture,
maina avancé de 784 commits.scripts/check_adjoint_prevalidation.pyy a été réécrit (10 commits), etscripts/coordination/merge_ready.py(#17456) occupe désormais la même niche. La comparaison, faite fonction par fonction à la têteorigin/maindu 2026-09-24 :mainGrain:lu uniquement dans le bodycheck_adjoint_prevalidation.pycarrying_lane(et refus d'auto-attestation #16906)b0: clearmerge_ready.pyrun_nits→skip("b0-organ-blocked")scripts/ci/merge_dwell.pylast_authoritative_committed_at(#16149)merge_ready.pylist_open_prs(mais journal persistant)merge_ready.pyrelitmergeable_state+ tête, pas l'empreinte complèteNe pas reprendre le calcul DWELL de #16483 tel quel : il est moins strict que celui de
merge_dwell.py, qui écarte les merges sans contenu propre, et le reprendre serait une régression.Résidu réellement absent de
mainapproval-not-on-headvsapproved-exact-head. Le gate hache l'oid de review sans le classer.REVIEW_READY: toutes les portes délégables sont vertes, seule manque la disposition ai-01 à la tête exacte.mainsépare un autre axe, intégrité du dossier vs mergeabilité (Gate Phase 4 : check_adjoint_prevalidation rend exit 1 sur 16/16 des PRs les plus anciennes — le label est emis, le contrat ne l'est pas #16800).merge_ready.py: aujourd'hui, unUnexpectedErrorsur une PR arrête le balayage entier (breakaprèsrun-error). Ce peut être un fail-closed voulu, par exemple sur une panne d'authentification. À trancher : distinguer les erreurs qui touchent toute la passe (jeton, réseau) de celles qui ne concernent qu'une PR.Forme attendue (régime de consolidation)
Les trois points se fusionnent dans
merge_ready.py, sans nouveau mode--queuedans le gate. Un livrable par point, avec un test qui échoue avant le correctif et passe après.Voir #16483 (fermée), #16800, #17456.