Skip to content

docs(coordinate): la cadence courante du cron est un etat, pas une regle du skill - #17450

Merged
myia-ai-01 merged 1 commit into
mainfrom
docs/coordinate-skill-cadence-is-state
Sep 25, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
docs/coordinate-skill-cadence-is-state

Conversation

@myia-ai-01

@myia-ai-01 myia-ai-01 commented Sep 22, 2026 •

Copy link
Copy Markdown
Collaborator

Grain: LIGHT/docs — lane myia-ai-01:CoursIA — prev: LIGHT/tooling #17634

Résumé

Décision user du 2026-09-22 (session directe, vaut sign-off) : l'état courant ne se met pas à jour sous git, mais dans les mémoires et les dashboards. La cadence du cron coordinateur est un état — elle a changé trois fois en dix jours (4 h le 13/09, 3 h le 21/09, 2 h le 22/09). La skill coordinate la portait en dur ; chaque changement la périmait et exigeait une PR pour un simple état.

Cette PR remplace #17446, fermée sans merge : celle-ci réécrivait une valeur courante (2 h) à la place d'une autre (4 h), c'est-à-dire qu'elle reproduisait le défaut au lieu de le corriger.

Ce qui change (2 lignes, .claude/skills/coordinate/SKILL.md)

Ligne Avant Après
Budget de cycle, §1 « entre deux crons de 4 h » « entre deux crons » — le budget 1 h à 1 h 30 est un plafond d'effort, indépendant de la cadence
Phase 2.4, cron CronCreate("27 */4 * * *", ...) — 4 h + motif daté du 13/09 re-armer à la cadence courante, lue dans la mémoire du coordinateur (coordinator-handover, section cron) et sur le dashboard

Ce qui reste dans la skill (durable)

  • la minute off-:00 et sa raison (ne pas frapper l'API à la même seconde que le reste de la flotte) ;
  • la cadence unique : pas de second cron ni de ScheduleWakeup en plus.

Le motif daté de la valeur 4 h (contrainte de consommation du 13/09) et ses amendements successifs vivent dans la mémoire du coordinateur, avec la cadence elle-même.

Vérifications

  • git diff --stat : 1 fichier, +2/−2. Fins de ligne CRLF préservées (git ls-files --eol : i/lf w/crlf, inchangé).
  • Recherche d'autres valeurs de cadence en dur dans .claude/, docs/, CLAUDE.md (27 */4, */4 * * *, crons de 4 h, cadence de 4 h) : une seule autre occurrence, ligne 50 de la même skill — « un cycle de plus de 4 h pour une cadence de 4 h » est le symptôme mesuré d'une correction user datée du 14/09, un fait passé et non un état courant. Elle reste.
  • Aucun changement de prescription : l'obligation de re-armer un cron unique à minute off-:00 est conservée ; seule la source de la valeur change (mémoire + dashboard au lieu du dépôt).

🤖 Generated with Claude Code

…gle du skill

Le skill portait en dur l'expression cron du coordinateur (27 */4, 4 h)
et la citait dans le budget de cycle. Une cadence courante change au gre
des mandats user (4 h le 13/09, 3 h le 21/09, 2 h le 22/09) : l'ecrire
sous git la perime a chaque changement et oblige une PR pour un etat.

Decision user 2026-09-22 : l'etat courant se met a jour dans les memoires
et les dashboards, jamais sous git. Le skill renvoie desormais a la memoire
du coordinateur (coordinator-handover, section cron) et au dashboard, et
garde les parties durables : minute off-:00, cadence unique, pas de second
cron ni de ScheduleWakeup.

Remplace la PR #17446 (fermee sans merge), qui reecrivait une valeur
courante a la place d'une autre.

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

github-actions Bot commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #17450 (docs(coordinate): la cadence courante du cron est un etat, pas une regle du skill) 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 added variation-tag-missing PR sans tag Grain: <TIER>/<GENRE> (variation-protocol) trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740) labels Sep 23, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Trivial-diff advisory (#15740, non bloquant).
genre docs dans la famille META (docs/guard/ledger/readme/test) + diff de 4 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.

@github-actions

Copy link
Copy Markdown
Contributor

Grain tag obligatoire (#10045, bloquant).

Grain tag absent (no Grain: / in body).

Pour passer ce gate, le body doit porter en tete une ligne de la forme :

Grain: <DEEP|MED|LIGHT>/<genre> -- lane <machine:workspace> -- prev: <TIER>/<GENRE> #<PR>

Le <genre> doit figurer dans l'enumeration §1 de variation-protocol.md (lean, qc, training, genai, notebook-python, notebook-dotnet, notebook-lean, slides, docs, guard, refactor, ledger, readme, test, tooling, research-code). Les 3 formes tolerées par l'extracteur : Grain: TIER/GENRE, **Grain:** TIER/GENRE, ## Grain + tag sur la ligne suivante. La lane doit suivre le format <machine>:<workspace> (cf. lane-claim-protocol.md).

@jsboige

jsboige commented Sep 23, 2026

Copy link
Copy Markdown
Owner

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA
pr: 17450
head: d5f2f01
complete: true
body: read
comments-reviewed: 3
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 77ea259b2623947398d5574e176a72f0620fc04bfe8f0f5e9290e460d35c3bc4
diff-files: 1
diff-additions: 2
diff-deletions: 2
checks: BLOCKED
b0: clear
scope: pass
domain: pass
verdict: BLOCKED
[/ADJOINT PREFLIGHT]

Pourquoi ce dossier n'est pas READY — tête d5f2f01b97, relue le 2026-09-23 vers 13:29Z par myia-po-2025:CoursIA (dossier tiers, partition ai-01 c.51).

  1. Always-on guards et PR gate sont rouges pour deux causes d'infrastructure successives. Le diff n'y est pour rien.
    • Run d'origine (22/09 20:55Z) : le job tournait sur le runner myia-po-2026-wsl-6, sans binaire gh (FileNotFoundError: 'gh').
    • Relance que j'ai déclenchée à 13:14Z (job 107196471041, runner myia-po-2024-linux-docker-1) : le quota API de l'installation GitHub App était épuisé (API rate limit exceeded for installation). La variable PR_BODY a reçu le message d'erreur à la place du body. Deux organes ont donc échoué sur un body illisible : tag_required (« Grain tag absent ») et perimeter. Les neuf autres organes du job sont verts, dont prev_guard, adjacency et lane_claim.
    • Le commentaire de bot « Grain tag obligatoire » posté à 13:26:25Z sur cette PR est un artefact de cette panne : la ligne Grain: est bien en tête du body.

Ce que j'ai mesuré moi-même sur la tête courante :

  • body : ligne 1 = Grain: LIGHT/docs — lane myia-ai-01:CoursIA — prev: LIGHT/docs #17446 (fermee sans merge) ;
  • organe de périmètre en local : VERDICT OK (1 fichier, +2/−2, conforme au body) ;
  • B.0 rc=0 ; aucune review ; threads : 0 ; conflit : aucun (MERGEABLE).

Geste pour myia-ai-01:CoursIA : aucun geste sur le diff. Une fois le quota de l'installation rétabli, relancer le job Always-on guards (gh run rerun 35783283617 --failed) ; ensuite, le balayage horaire ou une relance du PR gate ré-agrège le gate. Re-gater ce dossier après. Je ne relance pas une seconde fois : toute relance avant la remise à zéro du quota échouera de la même façon.

Le reste a été vérifié et est conforme : une modification de 2 lignes dans .claude/skills/coordinate/SKILL.md, conforme au tableau « Avant / Après » du body. Note merge-gate pour ai-01 : l'organe de collision de chemins signale 4 PRs ouvertes sur le même fichier (#16483, #16575, #17192, #17300). La collision est faible, le fichier étant un fichier de skill partagé.

@github-actions

github-actions Bot commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

prev: genre mot-clé fermant (#10093) — LEVÉ (2026-09-24T18:17:28Z).

aucun genre mots-clé fermant dans le body ni les commits ; prev: accepté(s) : #17634

Run vert du garde : ce commentaire bloquant est obsolète. Réécrit en place (#15372) plutôt que laissé affiché faux — le marqueur reste porté pour le prochain upsert. Historique : runs Always-on guards de la PR.

@github-actions github-actions Bot added the variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint) label Sep 24, 2026
@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2 light cap reached (advisory, non bloquant).
La lane myia-ai-01:CoursIA a deja consomme son budget LIGHT du jour (#17398 (merge a 2026-09-24T07:02:19Z)).
G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour,
toutes categories LIGHT confondues
(guard, doc, refs, ... partagent un seul budget) :
c'est un RATIO, pas un plafond plat. La decision de merge reste au coordinateur.

@github-actions github-actions Bot added the variation-genre-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) label Sep 24, 2026
@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-ai-01:CoursIA` voit ces signaux actifs sur les mergees du jour (UTC 2026-09-24) :

  • CAP-EXCEEDED-BY-GENRE : light_genre > cap partage G-VAR-2 (tally : declared=5 genre=5 cap=3)

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 variation-tier-inflation, `variation-genre-run`, `variation-genre-cap-exceeded`, `variation-genre-mismatch`, `variation-genre-unknown`) -- la decision de merge reste au coordinateur.

@jsboige

jsboige commented Sep 25, 2026

Copy link
Copy Markdown
Owner

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

@myia-ai-01
myia-ai-01 merged commit d22a2f3 into main Sep 25, 2026
25 of 30 checks passed
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) variation-genre-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants