Repository navigation
Fix(tooling,#23500): le verdict FREE du picker nomme ce qu'il mesure - #24723
Conversation
Le libellé humain du verdict FREE rendait « libre », qui se lit «
personne ne travaille dessus » — alors que le tirage ne mesure que
l'absence de claim. Le contrat (lane-claim-protocol, « Prémisse
d'identité ») ne garantit que « personne ne l'a réservé ». Le libellé
devient « aucun claim (activite non mesuree) » ; le cas FREE_STALE
perd le même abus tout en gardant le claim périmé qu'il mesure.
Surface machine inchangée : les codes CLAIM_CODE_* et l'objet JSON
{code, human} ne bougent pas, seule la phrase humaine change.
Copie jumeale roo-extensions déjà livrée en PR #4472 ; cette PR porte
le même remède 1 sur la copie CoursIA.
Test : test_summarize_claim_free_names_what_was_measured fige le
libellé (jambée mono + batch + FREE_STALE) et vérifie la disparition
de « libre ». 443 tests pickers verts.
See #23500
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Avertissements consultatifsG-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels Une section par organe ; ce commentaire est reecrit en place, il n'est pas empile. |
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
Path-collision (organ #13359/#13615)Cette PR #24723 (
Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur |
myia-ai-01
left a comment
There was a problem hiding this comment.
APPROVED — revue coordinateur (lane CI/harnais), à la tête exacte.
Le libellé humain du verdict FREE rend désormais ce que _summarize_claim mesure : l'absence de claim, et non l'absence d'activité. C'est le contrat de la « Prémisse d'identité » de lane-claim-protocol.md. Les deux jambes (mono et batch) passent par la constante unique CLAIM_HUMAN_FREE, et FREE_STALE continue de nommer le claim périmé. Les codes machine et la surface JSON ne bougent pas, ce que vérifie le test existant test_summarize_claim_machine_codes ; le nouveau test fige les trois chemins.
Grain: MED/tooling — lane myia-po-2023:CoursIA-2 — prev: DEEP/notebook-python #24709
Le défaut
scripts/pick_idle_grain.pyrendait un candidat sans claim avec le libelléhumain « libre ». Ce mot n'est pas ce que le tirage mesure.
_summarize_claim()lit le protocole de claim : une autre lane qui a posé un[CLAIMED]bloque, et rien d'autre n'est regardé. Un candidat qui survità ce test a aucun claim — pas plus. Le contrat est explicite sur l'écart
(
lane-claim-protocol.md, « Prémisse d'identité ») :Une lane qui lit « libre » comprend « personne ne travaille dessus » ; les deux
propositions ne sont pas synonymes. C'est l'écart que cette section existe pour
prévenir — et il se rejouait à chaque tirage. Le chemin ERROR/UNREAD avait déjà
reçu le vocabulaire honnête (« pas des candidats 'libres' », « Le statut est
INCONNU, pas libre ») ; le chemin FREE, lui, non.
Le correctif — remède 1 de #23500 (le moins cher)
CLAIM_HUMAN_FREE = "aucun claim (activite non mesuree)", défini en un seul endroit._summarize_claim(jambée mono) et_summarize_claim_from_batch(jambéebatch) y renvoient pour le code
FREE.FREE_STALEpartageait l'abus : « libre (claim perime : #N) » devient« aucun claim actif (claim perime : #N) » — le claim périmé (un fait mesuré)
reste nommé, l'absence d'activité ne l'est plus.
Surface machine inchangée : les codes
CLAIM_CODE_*et l'objet JSON{code, human}ne bougent pas ; seule la phrase humaine change. Le testexistant
test_summarize_claim_machine_codes(qui n'assert que le code) passesans modification.
Preuves
test_summarize_claim_free_names_what_was_measured: fige lelibellé (mono + batch +
FREE_STALE) et vérifie que le mot « libre » en estparti.
test_pick_idle_grain_belt.py+test_claim_probe_blocker_named.pytest_pick_claim_filter.py= 168 passed ;test_pick_idle_grain.py=275 passed (443 au total, 0 régression).
Périmètre / hors scope
roo-extensionsdéjà livrée en PR docs(genai): Qwen-Image-Edit 2509 — rendered Mermaid pipeline (#4212) #4472 (lanemyia-po-2025:roo-extensions, puis[RELEASED]) ; cette PR porte le mêmeremède 1 sur la copie CoursIA, que pick_idle_grain:
FREEdèrive du seul claim, et « libre » se lit « personne ne travaille » #23500 nomme.FREE, et décider du sort d'unFREE_OCCUPIED) est une décision decoordination — pick_idle_grain:
FREEdèrive du seul claim, et « libre » se lit « personne ne travaille » #23500 le dit expressément ; hors scope ici.See #23500
🤖 Generated with Claude Code