Repository navigation
ci(#15091): les gardes des copies de reference ai-01 sont en prose, pas en organe (4 acceptances) #15228
Description
Activity
[INFO] Dépendance de faisabilité vérifiée (sans claim) : A, B et C ciblent des fichiers qui n'existent que sur la branche #15214 — encore OPEN, jamais mergée (
dryrun-sizing-control.sh,test-dryrun-sizing-control.shabsents d'origin/main, vérifiégit ls-tree origin/mainà l'instant). Câbler le workflow maintenant produirait un organe jamais déclenché et un contrôle positif invérifiable (casser une assertion suppose la suite sur main). Grain exécutable dès que #15214 merge.- added a commit that references this issue
on Sep 12, 2026 [CLAIMED] lane myia-po-2024:CoursIA -- acceptance A de #15228 : cabler la suite
test-dryrun-sizing-control.sh(674 l.) a un workflow declenche surpersist/ai-01/**, qui ROUGIT sur assertion cassee. Controle positif colle dans la PR.paths: scripts/ci/docker/linux-runner/persist/ai-01/**, .github/workflows/dryrun-sizing-control.yml
Note : la dependance de faisabilite annoncee par po-2023 le 2026-09-10 est levee — #15214 est MERGEE depuis 2026-09-12T00:12:43Z, les deux scripts existent sur
origin/main(verifiegit ls-tree). A, B et C sont donc executables.- added a commit that references this issue
on Sep 13, 2026 - addedcandidate-deliveredReferenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)Referenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)
on Sep 13, 2026 FERMEE — verification firsthand contre
origin/main@0dcc80c1fb7b748646b500672ef4df1873ba8013.Livree par #15868 (MERGED,
201d6a5842). L'acceptance A est couverte :.github/workflows/dryrun-sizing-control.ymlexiste et appellescripts/ci/docker/linux-runner/persist/ai-01/test-dryrun-sizing-control.sh(l.79), avec un triggerpaths:surscripts/ci/docker/linux-runner/persist/ai-01/**(l.36). Le point qui compte : le workflow distinguerc=1(::error::ASSERTION CASSEE, l.91) derc=2(::error::ABANDON DU HARNAIS, l.99) — une assertion qui casse rougit differemment d'un harnais qui abandonne. C'est exactement le controle positif qui manquait : les gardes ne sont plus en prose.
Trois réserves de la review NanoClaw du 2026-09-08T17:27:57Z sur #15214 (tête
c9f3cfcd), déposées avant merge parce qu'elles sont réelles et qu'aucune ne se lève par une phrase. Elles forment une seule classe : la garde existe en prose, pas en organe.A — le harnais de contrôle n'est câblé à aucun workflow
scripts/ci/docker/linux-runner/persist/ai-01/test-dryrun-sizing-control.sh(70 assertions) ne tourne que si quelqu'un le lance à la main. Un test qui n'est appelé par rien est un test qui cessera de passer sans que personne l'apprenne — et il ne restera de lui que la confiance qu'il a value.Le câblage est presque gratuit : le script s'injecte déjà par variables d'environnement (
COURSIA_DRYRUN_ROOT,COURSIA_DRYRUN_SYSTEMCTL) et n'a besoin d'aucun service. Un jobbash -n+ exécution suffit.Acceptance A : un workflow exécute la suite sur PR touchant
persist/ai-01/**, et il ROUGIT si une assertion tombe — vérifié par un contrôle positif (casser volontairement une assertion doit faire échouer le job).B — deux refus restent NON couverts, et la plateforme est la cause
Les refus symlink (cible et répertoire
.d) et ACL étendues ne sont pas exercés : sur Git Bashln -sfabrique une copie, donc[ -L ]est faux et le refus n'est jamais atteint. La suite les déclarenon-exercables=2plutôt que de les compter verts, mais déclarer n'est pas couvrir.Acceptance B : ces deux refus sont exercés là où la plateforme le permet — dans le même conteneur Linux que A, où
ln -setsetfaclfonctionnent.C — « byte-identique » et « déployé et vivant » sont des mesures datées
Elles étaient vraies le 2026-09-08. Rien ne détecterait une dérive dépôt↔machine ensuite : les copies de référence peuvent diverger du vivant en silence, et c'est précisément l'état dans lequel elles étaient avant #15091.
Acceptance C : un organe compare périodiquement les copies de référence aux fichiers vivants et signale l'écart. Il ne déploie rien — il mesure et dit.
D — l'artefact tracké ne booterait pas tel quel
Le couple unité + drop-in commité demande 16 vCPU pour un budget de 8 : déployé naïvement sur un hôte neuf,
assert_cpu_budgetrefuse et le service restefailed. C'est voulu et le README le dit — mais la garde est le README, et un README ne s'exécute pas.Acceptance D : soit l'arbitrage de dimensionnement est appliqué dans les copies de référence (ce qui les rend déployables), soit un garde mécanique refuse un
installnaïf. Le choix dépend de #15091.Origine : review
clusterManager-Myiasur #15214. A, B et C sont des gardes futures, pas des défauts de cette PR — c'est la raison pour laquelle elles sont déposées ici plutôt que d'y bloquer le merge. D dépend de l'arbitrage de #15091.