Skip to content

merge_ready : résidu de #16483 (disposition exact-head, REVIEW_READY, isolation d'erreur par PR) #17672

Description

@myia-ai-01

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, 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 :

Fonction de #16483 Sur main Où
Grain: lu uniquement dans le body oui check_adjoint_prevalidation.py carrying_lane (et refus d'auto-attestation #16906)
rc de l'organe B.0 réel, prioritaire sur b0: clear oui merge_ready.py run_nits → skip("b0-organ-blocked")
DWELL mesuré sur le commit de la tête oui, en plus strict scripts/ci/merge_dwell.py last_authoritative_committed_at (#16149)
file oldest-first sans état partiel merge_ready.py list_open_prs (mais journal persistant)
relecture live juste avant le merge partiel 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

  1. 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.
  2. État REVIEW_READY : toutes les portes délégables sont vertes, seule manque la disposition ai-01 à la tête exacte. main sé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).
  3. 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.

Voir #16483 (fermée), #16800, #17456.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions