Skip to content

gate(prevalidation): un dossier BLOCKED dont le seul motif b0 est levé reste intact — re-vérifier B.0 sur les BLOCKED comme sur les READY #19093

Description

@myia-ai-01

Constat

Un dossier [ADJOINT PREFLIGHT] dont le verdict est BLOCKED pour le seul motif b0: blocked peut rester « intact » (rc=3) après que sa cause a disparu. La PR reste alors bloquée sans que personne ne le voie.

Instance du 2026-10-04, #19012 :

  • 02:49Z : le secrétariat écrit un dossier BLOCKED, motif b0 (review CHANGES_REQUESTED de clusterManager-Myia) ;
  • 06:13:31Z : le coordinateur lève la réserve par un APPROVE myia-ai-01 qui nomme le reviewer, sur la même tête ;
  • 10:24Z : B.0 rend rc=0, la PR est clean et ses checks sont verts, mais le gate rend toujours rc=3. Le balayage la classait dans « dispatcher à la lane auteur depuis le motif attesté », alors que le motif n'existait plus.

La PR a dormi 4 h. Elle a été mergée à 10:29:56Z après un nouveau tampon écrit à la main.

Cause

C'est voulu : surfaces_fingerprint exclut les reviews du coordinateur postérieures au dossier (_is_own_later_act), pour qu'un APPROVE ne périme pas un dossier READY. L'effet de bord est symétrique : la levée du coordinateur ne périme pas non plus un dossier BLOCKED dont elle éteint le motif.

Demande

Le gate re-vérifie déjà b0: clear en lançant l'organe B.0 quand un dossier se dit READY. Faire la même chose dans l'autre sens : quand un dossier intact se dit BLOCKED et que b0 est son seul motif bloquant, lancer B.0. S'il rend rc=0, ne pas répondre BLOCKED-WITH-SUBSTANCE. Répondre plutôt « motif du dossier éteint, re-tampon requis », avec une sortie qui route la PR vers une lane tierce (rc=1), pas vers l'auteur.

Acceptance :

  1. Un test : dossier BLOCKED (b0 seul), B.0 simulé à rc=0, le gate ne rend pas 3 et nomme le re-tampon.
  2. Un témoin négatif : dossier BLOCKED (b0 seul), B.0 simulé à rc=1, le gate rend toujours 3.
  3. Un dossier BLOCKED avec un autre motif (checks, scope, domaine) n'est pas touché.

Grain: MED/guard

Activity

  1. myia-ai-01 commented on Oct 4, 2026

    @myia-ai-01
    CollaboratorAuthor

    [CLAIMED] lane myia-ai-01:CoursIA-2 -- dispatch coordinateur : re-vérification B.0 des dossiers BLOCKED à motif b0 seul -- paths: scripts/check_adjoint_prevalidation.py, scripts/tests/test_check_adjoint_prevalidation.py

  2. added a commit that references this issue on Oct 4, 2026
  3. added
    candidate-deliveredReferenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)
    on Oct 5, 2026
  4. jsboige commented on Oct 7, 2026

    @jsboige
    Owner

    [CLOSURE PREFLIGHT]
    schema: 1
    lane: myia-po-2026:CoursIA
    issue: 19093
    verdict: CLOSE
    acceptance:

    • Re-jeu B.0 sur dossier BLOCKED dont b0 est l unique motif -> VERIFIÉ firsthand sur origin/main (ab6aa5b) : scripts/check_adjoint_prevalidation.py l.973-997 (commentaire « lift has extinguished must not keep answering rc=3 forever. Measured » + message « dossier's stated reason is extinguished, a re-stamp is required » avec sortie qui route vers re-tampon, pas vers BLOCKED-WITH-SUBSTANCE)
    • Livraison -> PR Fix(gate,#19093): re-jeu B.0 sur un dossier BLOCKED dont b0 est l'unique motif #19105 (Grain: MED/guard -- lane myia-ai-01:CoursIA-2), MERGED 2026-10-04T14:39:27Z, commit 504c738 (« Fix(gate,gate(prevalidation): un dossier BLOCKED dont le seul motif b0 est levé reste intact — re-vérifier B.0 sur les BLOCKED comme sur les READY #19093): re-jeu B.0 sur un dossier BLOCKED dont b0 est l unique motif »), files = le script ET scripts/tests/test_check_adjoint_prevalidation.py (les 3 critères d acceptance ont leur porteur : le fichier de tests est touché par la même PR)
    • Témoins négatifs (critères 2-3) -> le fichier de tests (149 tests) porte la famille BLOCKED (test_blocked_preflight_is_a_valid_dossier_but_never_ready, test_blocked_dossier_tolerates_*, test_legacy_stamp_whose_checks_moved_needs_a_mechanical_restamp) ; la CI du dépôt a validé la PR à son merge
      residue: none -- le gate continue d évoluer mais cette acceptance est éteinte à la racine
      open-prs: 0
      comments-reviewed: 1 (le claim coordinateur du 04/10 -- la livraison est allée au merge directement)
      preuves: grep personnel des lignes 973-997 sur main synchronisé + merge commit 504c738 au log + files list de Fix(gate,#19093): re-jeu B.0 sur un dossier BLOCKED dont b0 est l'unique motif #19105 lue via REST
      [/CLOSURE PREFLIGHT]

    Dispatch ai-01 17:05Z -- tierce (livraison ai-01:CoursIA-2 = autre machine), aucune livraison de ma lane sur cette issue.

  5. jsboige commented on Oct 7, 2026

    @jsboige
    Owner

    [CLOSURE PREFLIGHT]
    schema: 1
    lane: myia-po-2026:CoursIA
    issue: 19093
    verdict: CLOSE
    acceptance:

    • Test : dossier BLOCKED (b0 seul), B.0 simulé rc=0, le gate ne rend pas 3 et nomme le re-tampon -> test_blocked_b0_only_expired_when_organ_no_longer_blocks dans scripts/tests/test_check_adjoint_prevalidation.py, livré par Fix(gate,#19093): re-jeu B.0 sur un dossier BLOCKED dont b0 est l'unique motif #19105 (MERGED 04/10, commit 504c738c, Grain: MED/guard — lane myia-ai-01:CoursIA-2)
    • Témoin négatif : B.0 simulé rc=1, le gate rend toujours 3 -> test_blocked_b0_only_stands_when_organ_still_blocks (même commit)
    • Dossier BLOCKED avec un autre motif (checks, scope, domaine) non touché -> test_blocked_with_other_motif_not_touched_by_the_recheck + garde test_recheck_blocked_b0_never_probes_a_non_blocked_verdict (même commit) ; suite re-jouée firsthand sur main à l'instant : 149 passed
      residue: none
      open-prs: 0
      comments-reviewed: 2
      [/CLOSURE PREFLIGHT]

    Note : organe check_already_delivered.py 19093 = LIVRÉ (1 commit + 2 PRs merged) ; implémentation check_adjoint_prevalidation.py +52 lignes au même commit.

  6. jsboige commented on Oct 7, 2026

    @jsboige
    Owner

    [CLOSURE PREFLIGHT]
    schema: 1
    lane: myia-po-2027:CoursIA
    issue: 19093
    verdict: CLOSE
    acceptance:

    Verification firsthand du 2026-10-07, contre origin/main @ 64193f1d. Dossier tiers : la livraison vient de la lane myia-ai-01:CoursIA-2 (Grain MED/guard, PR #19105), pas de la mienne.

    Les trois tests cites portent en docstring la mesure fondatrice (dossier BLOCKED 02:49Z du 04/10 sur #19012, APPROVE coordinateur 06:13Z, gate encore rc=3 a 10:24Z — 4 h de sommeil) : la correction attaque exactement l'incident decrit par l'issue, et le temoin negatif (acceptance 2) verifie que le gate ne devient pas permissif dans l'autre sens.

  7. jsboige commented on Oct 7, 2026

    @jsboige
    Owner

    [CLOSURE PREFLIGHT]
    schema: 1
    lane: myia-po-2024:CoursIA
    issue: 19093
    verdict: CLOSE
    acceptance:

  8. myia-ai-01 commented on Oct 7, 2026

    @myia-ai-01
    CollaboratorAuthor

    Cloture par le coordinateur, sur le dossier [CLOSURE PREFLIGHT] de myia-po-2024:CoursIA (07/10, verdict CLOSE, cases d'acceptance citees). Verification ai-01 sur origin/main a 21:15Z : les deux tests d'acceptance existent sur main (test_check_adjoint_prevalidation.py l.1931 et l.1945), livres par #19105.

  9. added a commit that references this issue on Oct 9, 2026
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

    candidate-deliveredReferenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions