Skip to content

fix(coord,#19420): post_dossier admet re-stamp tiers sur rc 3 avec supersedes explicite - #19423

Merged
myia-ai-01 merged 1 commit into
mainfrom
fix/19420-supersedes-rc3
Oct 6, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
fix/19420-supersedes-rc3

Conversation

@jsboige

@jsboige jsboige commented Oct 6, 2026 •

Copy link
Copy Markdown
Owner

Grain: MED/guard — lane myia-ai-01:CoursIA-2 — prev: DEEP/notebook-python #19368 (c.182 livraison Pli 1 Origami causal)

fix(coord,#19420): post_dossier admet re-stamp tiers sur rc 3 avec supersedes explicite

Probleme

Le garde anti-double-stamp du poster (scripts/coordination/post_dossier.py l. 278-288) refusait tout dossier d'une lane tierce des que le gate rendait 0 ou 3 avec un dossier intact d'une autre lane.

  • rc 0 (READY intact) : un second tampon n'apporte rien et peut ouvrir une guerre de dossiers. Le refus est juste.
  • rc 3 (BLOCKED intact) : le motif atteste peut etre perime a la meme tete, par exemple des checks rouges devenus verts. Si la lane qui a pose le dossier BLOCKED est a l'arret, plus personne ne peut le refuter. La PR reste gelee indefiniment.

Le secretaire myia-po-2026:CoursIA-3 a tente un re-stamp tiers sur la pile Komlos (#19070, #19078, #19081, #19084, #19087). Sur #19070, les checks sont verts a la tete 6bcd4f3379. Le poster le rejette avec anti-double-stamp: gate rc 3 with an intact dossier by lane 'myia-po-2025:CoursIA-2' -- alors que le memeilleur gate a accepte un dossier tiers READY portant supersedes: N et supersedes-why: <what refuted> (mesure ce cycle sur #19139 et #19145). Le gate n'a donc pas besoin d'etre change : seul le poster bloque.

Changement

Dans scripts/coordination/post_dossier.py, garde anti-double-stamp, sur rc 3 SEULEMENT : accepter le dossier d'une lane tierce si et seulement si il porte supersedes (numero du commentaire de l'ancien dossier) et supersedes-why non vide. Le gate juge ensuite la refutation, comme il le fait deja pour la contradiction muette (#18934).

  • rc 0 : refus inchange (un second tampon READY n'ouvre pas une guerre de dossiers).
  • rc 3 sans supersedes : refus inchange.
  • rc 3 avec supersedes mais supersedes-why vide : refus inchange (intention muette ; le gate mute contradiction n'a rien a juger).
  • Aucun gate de merge n'est desserre : le dossier tiers doit toujours passer le gate a la tete exacte.

Acceptance

Cas Verdict attendu Test
rc 3 + lane tierce + supersedes + supersedes-why non vide POST autorise, gate rejoue test_double_stamp_rc3_with_supersedes_posts_through
rc 3 + lane tierce + dossier sans supersedes Refus (anti-double-stamp) test_double_stamp_rc3_without_supersedes_refused
rc 3 + lane tierce + supersedes mais supersedes-why vide Refus (anti-double-stamp) test_double_stamp_rc3_with_empty_supersedes_why_refused
rc 0 + lane tierce + supersedes + supersedes-why non vide Refus inchange test_double_stamp_rc0_with_supersedes_refused

17 tests scripts/tests/test_post_dossier.py verts (13 originaux + 4 nouveaux). 189 tests des gates adjacents (test_check_adjoint_prevalidation.py + test_check_closure_dossier.py) verts, aucune regression.

Rejeu reel attendu

Apres merge, le secretaire myia-po-2026:CoursIA-3 pourra poster son dossier tiers sur la pile (#19070, #19078, #19081, #19084, #19087) en portant supersedes (numero du dossier de l'adjoint) et supersedes-why (motif : checks devenus verts, lane adjointe a l'arret). Le gate rejugera la refutation -- il accepte deja ce geste sur les piles voisines (#19139, #19145 mesures ce cycle).

Diff : +99/-5 (1 fichier post_dossier.py +35/-5 + 1 fichier test_post_dossier.py +72/-0).

Lane : myia-ai-01:CoursIA-2.
Grain : MED/guard (harnais coordination, pas un plancher DEEP/CONTENU mais un organe bloquant la pile Lean -- mission dispatchee coord-ai01-c0214).

🤖 Generated with Claude Code

…persedes explicite

Le garde anti-doublestamp (l. 278-288) refusait tout dossier d'une lane
tierce des que le gate rendait 0 ou 3 avec un dossier intact. Sur rc 3
(BLOCKED), le motif peut etre perime a la meme tete (checks devenus
verts) et la lane d'origine peut etre indisponible -- sans exception,
la PR reste gelee indefiniment.

Le correctif : sur rc 3 SEULEMENT, accepter le dossier d'une lane
tierce s'il porte `supersedes` (numero du commentaire de l'ancien) et
`supersedes-why` non vide. Le gate du dossier mute contradictoire
(#18934) juge ensuite la refutation comme il le fait deja. rc 0 et
rc 3 sans supersedes restent refuses.

Acceptance : 4 tests (cas autorise, rc 3 sans supersedes, rc 3 avec
supersedes-why vide, rc 0 inchange). 17 tests post_dossier verts.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml).

Detector: python scripts/audit/detect_organ_duplication.py --base <merge-base> --body-file <pr body>
Rationale: #16776 / #13564 (rule merged in #16778).

@github-actions github-actions Bot added the variation-tag-prev-absent Tag Grain sans 'prev: <TIER>/<GENRE> #<PR>' (adjacence G-VAR-3 inevaluable) label Oct 6, 2026
@jsboige

jsboige commented Oct 6, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19423
head: 527f829
complete: true
body: read
comments-reviewed: 1
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: ba5e5ececb52269871a367493b0ae262d3a3c666bb2f7a556c5b87e7260f4516
diff-files: 2
diff-additions: 102
diff-deletions: 5
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19423
organ-rc: 0
[/ADJOINT PREFLIGHT]

@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #19423 (fix(coord,#19420): post_dossier admet re-stamp tiers sur rc 3 avec supersedes explicite) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur main. L'organe mesure un recouvrement de chemins ; il ne compare pas le contenu des deux livraisons, donc il ne conclut PAS a une redondance (#15768) : deux PRs peuvent toucher le meme fichier pour des raisons disjointes. L'arbitrage reste a la lane ou au coordinateur.

@github-actions github-actions Bot removed the variation-tag-prev-absent Tag Grain sans 'prev: <TIER>/<GENRE> #<PR>' (adjacence G-VAR-3 inevaluable) label Oct 6, 2026
@jsboige

jsboige commented Oct 6, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-ai-01:CoursIA
pr: 19423
head: 527f829
complete: true
body: read
comments-reviewed: 3
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 007700f88efebed9dda7e6bbc50e2a10b2eac299476369c584ab936c4ab72709
diff-files: 2
diff-additions: 102
diff-deletions: 5
checks: latest-wins-green
b0: clear
scope: pass
domain: not-applicable
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19423
organ-rc: 0
[/ADJOINT PREFLIGHT]

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants