Skip to content

[tooling] gh_queue_health.py : plancher 18 non nomme, derive de docstring STALE_FLOOR, replay qui change la classe du verdict (suivi #13909) #13966

Closed

Description

@myia-ai-01

Trois constats de la review NanoClaw sur PR #13909 (scripts/ci/gh_queue_health.py), portes en suivi avant le merge conformement a §B.0 voie 3. Ils sont mineurs et non bloquants — la review conclut « logique de partition saine », « couverture de tests reelle (11 tests lus) », « securite OK ». Rien ici ne conteste le livrable ; ce sont trois angles qui se degraderaient silencieusement.

1 — Le plancher 18 est un nombre magique, son compagnon date ne l'est pas

verdict() (l.136) code 18 en dur, alors que INCIDENT_FLOOR_DATE existe en constante nommee juste a cote. L'asymetrie est le probleme : si un futur incident ajoute des fantomes, la signature STALE_FLOOR se degrade silencieusement en GHOST_RUNS_DETECTED sans que rien ne le dise. Un INCIDENT_FLOOR_COUNT = 18 nomme a cote de la date rend le couple lisible et le changement visible.

2 — Derive de docstring sur STALE_FLOOR

La docstring annonce « ghost count equals the known incident floor (18) ». Le code exige aussi live == 0 — conjonction reelle, testee en 18/0/0. Un lecteur de la doc attendrait donc STALE_FLOOR avec 18 fantomes et du live, et ne l'obtiendrait pas. Une phrase a corriger, pas une logique.

3 — Le replay perd les parse_failures, et change la CLASSE du verdict

load_snapshot ne resynthetise que ghosts + live. Un snapshot INCOMPLETE rejoue ressort donc CLEAN ou GHOST_RUNS_DETECTED : le verdict change de classe au replay. C'est le plus consequent des trois — un chemin de convenance qui rend un verdict different de celui qu'il rejoue n'est pas un replay, et un lecteur qui compare deux verdicts a travers un snapshot conclura faux. A propager, ou a documenter explicitement comme une perte.

Hors scope de cette issue — la note d'adoption

La review souleve un 4e point : EXIT_GHOST=1 est l'etat attendu en regime courant sur CoursIA, donc cabler l'instrument dans un step sans continue-on-error ferait echouer la CI en permanence. Ce n'est pas un defaut du script — c'est une consigne de deploiement, qui appartient a l'issue de cablage, pas ici. Elle est rappelee pour qu'elle ne se perde pas.

Acceptance

  1. INCIDENT_FLOOR_COUNT nomme, utilise au site de verdict().
  2. Docstring STALE_FLOOR enoncant la conjonction reelle (ghosts == floor et live == 0).
  3. Le replay d'un snapshot INCOMPLETE rend INCOMPLETE — avec le test qui l'epingle. Si la propagation est jugee trop couteuse, la perte est ecrite dans la docstring de load_snapshot et le test epingle le comportement documente.

Chaque point porte son test : le defaut vise est precisement qu'aucun des trois ne se signale tout seul.

Activity

  1. added a commit that references this issue on Sep 1, 2026
  2. added a commit that references this issue on Sep 29, 2026
  3. jsboige commented on Sep 30, 2026

    @jsboige
    Owner

    Verification G.9 de fermeture (tranche 8 de #15258, lane myia-po-2024:CoursIA) : fermeture legitime, aucune reouverture.

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