Skip to content

Organe: filet des Concerns user sans reponse sur les issues (angle mort B.0) #20183

Open

Description

@jsboige

Probleme

Le depot a un filet pour les remarques du user sur les PRs (B.0, scripts/check_unaddressed_nits.py, exit 1 au merge). Il n'a rien pour les remarques du user sur les issues : un commentaire « Concern: ... » du mainteneur peut rester sans reponse indefiniment — le merge-gate ne la voit pas (pas une PR), le tapis sert l'issue selon ses criteres propres (le grain, pas le fil), et la condensation du dashboard emporte le signalement.

Mesure fondatrice (coordinateur, 08/10 — RAPPORTEE, l'organe devra la reproduire) : 17 Concerns poste par le user, dont, a la date de mesure, sans reponse sur : #16741, #18205, #18446, #18112, #19578, et les deux de #19898 (08/10 10:11Z et 21:00Z).

Le user arbitre par pull (registre des questions) — mais un Concern enterre dans un fil d'issue n'atteint meme pas le registre.

Spec du detecteur

Entree : les issues (pas les PRs — B.0 les couvre) mises a jour depuis une date de depart parametrable (proposition : 2026-09-25). Enumeration par GraphQL search (search(type: ISSUE, updated:>...), plus efficace que le REST pour cette fenetre.

  1. Detection du Concern : commentaire de l'auteur jsboige dont le corps commence par Concern (pattern ^Concern). C'est la forme mesuree du user (ex : [Epic Origami] openai/math — distillation par plis : replier 372 familles sur nos lacs, cluster par cluster #19898, « Concern: Il me semble qu'il y a des resultats... »).
  2. FP classe 1 — l'ACK d'agent : un commentaire commençant par Concern pris / Concern note / Concern traite est un ACK de lane sous le compte partage, PAS un Concern user. Mesure : Auto-auditer notre flotte selon les 10 principes du Singapore Consensus #16757, Serre100 : remettre Whisper-WebUI en service et transcrire deux vidéos de J.-P. Serre (conférence du centenaire, correspondance Grothendieck) pour distillation #17889 — un matcheur naive ^Concern les compte comme Concerns neufs. Le sous-pattern ^Concern (pris|note|traite|acquitte) se classe ACK.
  3. Recherche de la reponse : commentaire ULTERIEUR (n'importe quel auteur) qui traite le Concern. Deux formes mesurees :
  4. Verdict par issue : liste des Concerns non traites, avec timestamp et extrait.

La tension a trancher (le coeur de la spec)

« Reponse ulterieure » ne peut pas vouloir dire « n'importe quel commentaire ulterieur » : un echange de lanes sans rapport apres le Concern marquerait a tort « traite ». Proposition a valider par la mesure, pas decretee :

  • une reponse qui CITE le Concern (le mot, le timestamp du Concern, ou une citation de son texte) ; OU
  • une PR/commit ulterieur citant l'issue dont le perimetre couvre le sujet du Concern ; OU
  • au plancher : n'importe quel commentaire ulterieur d'une autre lane, avec flag MANUAL_REVIEW.

Le plancher mecanisable rend la liste COMPLETE (aucun Concern oublie) quitte a sur-signaler ; l'arbitrage fin reste humain. Fail-closed : un Concern dont le traitement n'est pas prouve reste dans la liste.

Controles (passes a livrer, dates dans le rapport)

Controle Attendu
Positif, etat 08/10 : #19898, les deux Concerns du user (10:11Z, 21:00Z) NON-REPONDUS a cet instant
Positif, etat courant : meme issue, reponse du 2026-10-09T22:37Z REPONDUS
Negatif FP-ACK : #16757, #17889 les « Concern pris... » ne comptent PAS comme Concerns user
Negatif FP-reponse : #18601 la reponse sans le mot est reconnue (pas un faux « sans reponse »)

Acceptance

  1. Organe scripts/ci/check_issue_concerns.py : rend la liste des Concerns user sans reponse sur les issues ouvertes (JSON + texte), reproduit la mesure fondatrice et publie la sienne.
  2. Les controles ci-dessus passes.
  3. Cablage : la sortie alimente la ligne [DONE] du coordinateur (restitution cyclique) — pas de nouveau registre parallele.

Gouvernance

Sans parent : issue d'outillage nee d'un dispatch coordinateur (mission « filet Concerns », DM ai-01, cycle c.362).

Activity

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

    @myia-ai-01
    Collaborator

    [CLAIMED] lane myia-ai-01:CoursIA-2 -- organe de recensement des Concerns sur issues, puis extension aux classes de la campagne #20185 (claim pose par le coordinateur au dispatch)

    Cet organe devient la phase 0 de la campagne corrective #20185 : retrouver dans les fils d'issues les remarques restées sans réponse.

    Ce que la campagne attend de lui, en plus de la spec ci-dessus :

    La première livraison peut se limiter à la classe user-concern, tant que les contrôles passent. Les autres classes viennent ensuite, chacune dans une PR séparée.

  2. jsboige commented on Oct 9, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED-AMEND] lane myia-ai-01:CoursIA-2 -- paths: scripts/ci/check_issue_concerns.py, scripts/tests/test_check_issue_concerns.py

    Scoping du claim epic-wide pose au dispatch, sur la seule tranche livree.

    PR #20186 — classe user-concern (phase 0 de #20185).

    Mesure fondatrice reproduite (figee au 2026-10-09T00:00:00Z) : 7 Concerns non
    resolus dans exactement les six issues nommees par cette issue — #19898 (x2),
    #16741, #18205, #18446, #18112, #19578. Mesure propre publiee : 580 issues
    ouvertes lues, 20 Concerns recenses, 5 non resolus (#3973, #5105, #13410,
    #13483, #14366). Les quatre controles passent, 25 tests unitaires verts.

    Les cinq autres classes de #20185 (user-remark, reviewer-reserve,
    external-unanswered, ask-unanswered, closed-over-remark) restent a
    livrer, chacune par sa PR : ce claim ne couvre que la tranche ci-dessus.

  3. added 2 commits that reference this issue on Oct 10, 2026
  4. added a commit that references this issue on Oct 10, 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

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions