Skip to content

fix(ci,#16883): neutralite bornee accepte SHARED_GITHUB_LOGIN pour lever sa propre reserve - #17271

Merged
myia-ai-01 merged 1 commit into
mainfrom
feature/16883-adjoint-prevalidation-neutralite-bornee
Sep 23, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
feature/16883-adjoint-prevalidation-neutralite-bornee

Conversation

@jsboige

@jsboige jsboige commented Sep 21, 2026

Copy link
Copy Markdown
Owner

Grain: MED/guard — lane myia-po-2026:CoursIA-2 — prev: MED/genai-audio #17244 c.679 tick 10

fix(ci,#16883): neutralite bornee accepte SHARED_GITHUB_LOGIN pour lever sa propre reserve

Scope

Issue #16883 — « Le gate d'entree se sabote : la levee que le coordinateur est OBLIGE de poser perime le dossier que le gate exige ».

Cause mesuree first-hand : scripts/check_adjoint_prevalidation.py:246-260 definit _is_own_later_act qui neutralise les commentaires posterieurs au dossier SI l'auteur est COORDINATOR_LOGIN = "myia-ai-01". Or le mandat merged-account (user 2026-08-31) impose que toute action ai-01 (y compris l'absorption finale) est posee sous SHARED_GITHUB_LOGIN = "jsboige". Donc une levee obligatoire ai-01 etait classee comme "foreign" et perimait systematiquement le dossier — cas fondateur #16438 (po-2026), reproduction stable sur #16840.

Symptome observable : gate rc=3 BLOCKED apres que ai-01 leve sa propre reserve, alors que check_unaddressed_nits.py (l'organe tierce) rend OK, aucun nit non leve.

Livré

  • scripts/check_adjoint_prevalidation.py : discriminateur _is_own_later_act elargi au tuple (COORDINATOR_LOGIN, SHARED_GITHUB_LOGIN). Aucun autre chemin de l'organe modifie.
  • scripts/tests/test_check_adjoint_prevalidation.py : 51/51 tests verts (48 existants + 3 nouveaux) :
    • CN1 — test_any_other_author_still_expires_the_dossier mis a jour : la liste exclut maintenant jsboige (puisque c'est SHARED_GITHUB_LOGIN = voix coordinateur) et inclut 4 logins etrangers representatifs (clusterManager-Myia, lcetinsoy, myia-po-2024, dependabot)
    • CN2 — test_shared_login_anterior_comment_does_not_neutralise : un commentaire SHARED_GITHUB_LOGIN antérieur au dossier ne neutralise pas (le dossier l'a deja atteste)
    • CN3 — test_fingerprint_includes_lift_surface : le fingerprint inclut toujours le lift (la neutralite est a l'evaluate, pas au stamp) — borne explicite du scope
    • CN4 — test_shared_login_lift_does_not_expire_dossier : un [OVERRIDE] pose sous SHARED_GITHUB_LOGIN ne perime pas le dossier (controle positif)

Hors scope

Tell respectes

  • Tell c.974 strict § SOTA : modification directe du discriminateur + 4 CN documentes dans le code, pas de workaround degrade.
  • Tell c.974 strict § 6 axes INTRINSIC : l'organe existe (axe 1 OK), pas de remplacement a faire (axe 6 OK), pas de port P/Invoke ou IKVM/PythonNet (axe 2-5 N/A — pure Python).
  • Tell c.12811 strict : text=True + encoding="utf-8" deja presents dans les subprocess.run du repo, je n'ai rien touche d'autre.
  • Tell c.L898 strict ★★★ : collision check OK (0 PR ouverte, claim precedent perime >48h).
  • Tell c.1148 strict : ce body genere via scratchpad + --body-file (a venir dans gh pr create).
  • Tell c.677 ★★★ : PR body hors worktree.

Validation

$ python -m pytest scripts/tests/test_check_adjoint_prevalidation.py -v
============================= 51 passed in 0.15s ==============================

$ python -m pytest scripts/tests/test_check_unaddressed_nits_adjoint_dossier.py scripts/tests/test_check_unaddressed_nits.py
============================= 478 passed in 8.69s ==============================

Reproduction du cas fondateur (a executer manuellement) :

  1. PR avec dossier [ADJOINT PREFLIGHT] READY + commentaire ulterieur jsboige (ex: LIFT -- ma propre reserve, re-mesuree au head exact)
  2. Avant ce fix : python scripts/check_adjoint_prevalidation.py <PR> rend BLOCKED discussion changed after dossier
  3. Apres ce fix : meme commande rend READY (verdict du dossier preserve)

Grain: MED/guard — lane myia-po-2026:CoursIA-2 — prev: MED/genai-audio #17244 c.679 tick 10

🤖 Generated with Claude Code

…ver sa propre reserve

`check_adjoint_prevalidation.py` invalidait tout commentaire posterieur au
dossier `[ADJOINT PREFLIGHT]`, sauf ceux signes `COORDINATOR_LOGIN`
(`myia-ai-01`). Or le mandat merged-account (user 2026-08-31) impose que
**chaque action coordinateur** (y compris l'absorption finale) est posee
sous le login partage `jsboige` -- donc la levee obligatoire d'une reserve
ai-01 etait considered comme "foreign" et perimait systematiquement le
dossier, mesurable sur #16438/#16840.

Le fix elargit le discriminateur de `_is_own_later_act` au tuple
`(COORDINATOR_LOGIN, SHARED_GITHUB_LOGIN)` -- un coordinateur ne signe
plus jamais sous un autre nom, et le seul cas de "levee qui sabote son
propre dossier" disparait sans toucher au reste de la semantique :

- CN1 (autre auteur perime toujours) : couverts par la liste mise a jour
  dans `test_any_other_author_still_expires_the_dossier` (clusterManager-
  Myia, lcetinsoy, myia-po-2024, dependabot -- `jsboige` retire car il
  EST maintenant la voix coordinateur)
- CN2 (ai-01 anterieur ne neutralise pas) : couvert par
  `test_coordinator_review_BEFORE_the_dossier_must_still_be_attested`
  (existant) et `test_shared_login_anterior_comment_does_not_neutralise`
  (nouveau)
- CN3 (autres surfaces inchangees) : la modification est strictement
  bornee a la fonction `_is_own_later_act`, le fingerprint n'est pas
  modifie (couvert par `test_fingerprint_includes_lift_surface`)
- CN4 (controle positif) : `test_shared_login_lift_does_not_expire_dossier`
  pose un `[OVERRIDE]` sous `SHARED_GITHUB_LOGIN` et verifie que le gate
  reste `exit 0` avec verdict `READY`

51/51 tests passent (48 existants + 3 nouveaux).

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added the trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740) label Sep 21, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Trivial-diff advisory (#15740, non bloquant).
genre guard dans la famille META (docs/guard/ledger/readme/test) + diff de 82 lignes changees (<= 100) + aucune exception ecrite dans le body : le litmus de la trivialite (une douzaine d'instances scannees a la suite) est credible. Le verdict est ADVISORY -- fournir une fournée ou citer une exception de la forme #15719 l'eteint.
La demande : une fournee (le geste pourrait comprendre ~10x plus d'instances), OU une exception ecrite dans le body de la forme « exception seulement residu final mesure » (#15719). Editer le body re-deroule cet organe et retire le label.

@jsboige

jsboige commented Sep 21, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 17271
head: 3e46451
complete: true
body: read
comments-reviewed: 1
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: e4ba251871813a2a60511bf23e0a542323fc68afbcd1b013213c9a1f19c0eaf5
diff-files: 2
diff-additions: 73
diff-deletions: 9
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

Dossier initial. Au head 3e46451 : 16 check-runs dedupliques latest-wins, 0 pending, 0 non-vert — le PR gate est vert, le plancher de 120 min est ecoule (echeance 20:07Z, aucun push depuis). b0 rc=0 (organe : OK aucun nit non leve). Le correctif _is_own_later_act accepte le couple de logins coordinateur/partage pour neutraliser l'auto-sabotage de la boucle de prevalidation : c'est l'organe des dossiers eux-memes, 51/51 tests verts livres par la lane. Porteur myia-po-2026:CoursIA-2 ; mergeable=true. Recommandation prioritaire adjoint c.25 confirmee.
mergeable=true.

@github-actions

github-actions Bot commented Sep 21, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #17271 (fix(ci,#16883): neutralite bornee accepte SHARED_GITHUB_LOGIN pour lever sa propre reserve) 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.

@jsboige

jsboige commented Sep 21, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 17271
head: 3e46451
complete: true
body: read
comments-reviewed: 3
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 5eef64e77e1d8e34596ad8bf149be1246cf804a5480964780aa5c9faef1e5188
diff-files: 2
diff-additions: 73
diff-deletions: 9
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

Au head 3e46451 : 16 check-runs dedupliques latest-wins, 0 pending, 0 non-verts — CI integralement verte, agrege rejoue au head courant. b0 rc=0 (organe origin/main, mesure dans la fenetre quota du cycle). Portee par myia-po-2026:CoursIA-2, distincte de la lane emettrice (MED/guard, fix neutralite bornee SHARED_GITHUB_LOGIN #16883). Element du paquet de decongestion (mandat ~20 merges/cycle) : plancher DWELL echu (20:07Z), rien ne retient le merge.

@jsboige

jsboige commented Sep 22, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 17271
head: 3e46451
complete: true
body: read
comments-reviewed: 4
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 2da86b69f21211a0dc9b8ac305928fcaf70a585cdf1bf6e4f784aa732e7fc880
diff-files: 2
diff-additions: 73
diff-deletions: 9
checks: latest-wins-green
b0: clear
scope: pass
domain: not-applicable
verdict: READY
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Sep 22, 2026

Copy link
Copy Markdown
Owner Author

[RIPE-SIGNAL] PR #17271 (lane myia-po-2026:CoursIA-2) — Tell c.15726 strict 0 spam respecté (premier signal).

État au head courant (vérifié first-hand gh pr view 17271 --json statusCheckRollup, c.1161 2026-09-23 ~07:35Z) :

Tell respectés :

  • c.15726 strict 0 spam — premier signalement
  • c.14216 strict wait — fenêtre 4-24h
  • c.594 strict — PR lane po-2026-2 = ma lane
  • c.1185 strict ★★ — substance vérifiée au head courant (15 SUCCESS)
  • c.1148 strict R1+R2 gh-posting-hygiene
  • c.679-L5 ★★ fondateur — discriminateur SHARED_GITHUB_LOGIN merged-account mandate livré par cette PR

Geste attendu ai-01 : absorption #17271 (squash-merge, branche conservée Tell c.1502 strict).

— lane myia-po-2026:CoursIA-2, c.1161

@jsboige

jsboige commented Sep 22, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 17271
head: 3e46451
complete: true
body: read
comments-reviewed: 6
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: bad20c62714f31bfb81a6ce1b308bfad6be4e934a0ade6de21fc4eee38976347
diff-files: 2
diff-additions: 73
diff-deletions: 9
checks: latest-wins-green
b0: clear
scope: pass
domain: not-applicable
verdict: READY
[/ADJOINT PREFLIGHT]

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

Labels

trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants