ci: split check.yml, drop dead caches, prebuild cargo-audit (#232) #309
No reviewers
Labels
No labels
autopilot:pending-human
source:analyste
source:defenseur
source:human
source:medic
status:approved
status:blocked
status:in-progress
status:needs-clarification
status:needs-fix
status:ready
status:review
status:triage
type:bug
type:feature
type:infra
type:refactor
type:schema
type:security
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: maximus/Simpl-Resultat#309
Loading…
Reference in a new issue
No description provided.
Delete branch "issue-232-split-ci-workflows"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Resolves #232
Split de
check.ymlencheck-rust.yml+check-frontend.yml, retrait des caches morts,cargo-auditen binaire pre-buildé, et nouveauaudit.ymlquotidien.Pourquoi
Le job rust coutait 21m44s sur chaque PR alors qu'environ 1 PR sur 40 touche
src-tauri/. Le runner est a capacite 1 : le job frontend fait la queue derriere, donc chaque PR payait ~24,5 min de feedback.Chrono du run 326 (2026-07-21, PR #304) — 12m15s des 21m44 sont du pur gaspillage :
cargo install cargo-audit(compile release)target/reserveCache failed: Request timeoutreserveCache failed: Request timeoutgetCacheEntry failed: Request timeout-> MISSLe cache ne marche a aucun des deux bouts : le restore timeout aussi desormais, ce que la baseline du 30 juin (#231) ne montrait pas — elle n'avait qu'un MISS propre.
Ce que fait la PR
check-rust.yml—paths: [src-tauri/**, self],concurrency: ci-rust-*,permissions: contents: read, etape d'install verbatim,CARGO_INCREMENTAL=0+CARGO_PROFILE_TEST_DEBUG=0, aucune etape de cache,cargo-auditviataiki-e/install-action.check-frontend.yml—paths-ignore(denylist),concurrency: ci-frontend-*, cache npm retire lui aussi (meme diagnostic : 23s gaspillees par run sur un job de 2m27).audit.yml— RustSec quotidien 06:00 UTC +workflow_dispatch, sans toolchain Rust (cargo-auditlit seulementCargo.lock), echec bloquant.docs/architecture.md+CLAUDE.md— la section CI/CD etait perimee sur deux points independants de cette PR : triggerpushretire en #171, et jobs decrits « en parallele » alors qu'ils sont sequentiels.Deux ecarts assumes vs le corps d'origine de l'issue, tous deux tranches a l'analyse : le cache npm part aussi, et le filtre frontend est une denylist (job a 2,5 min : le faire tourner pour rien est bon marche, ne PAS le faire tourner silencieusement ne l'est pas ; le job cher garde un allowlist strict).
Trou de couverture ferme au passage
Aucun des deux workflows ne filtre plus sur
branches:.branches: [main]ne matchait pas une PR stackee sur une autre branche de feature — ce que produit/autopilot: les PR #305, #306, #307 et #308 de la milestone feature-gating n'ont aucune tache CI, seules #303 et #304 (basemain) ont tourne. 4 PR sur 5 mergeaient sans check.cargo auditgardecontinue-on-error(les advisories peuvent tomber sur des crates sans rapport) mais perd le|| truequi masquait aussi les pannes d'outillage ; l'etape d'install, elle, est bloquante.Miroir GitHub intouche (#233 : il ne recoit aucune PR).
Verification
Simulation des filtres sur 7 scenarios (semantique de glob GitHub :
*ne traverse pas/,**oui) :vite.config.ts)release.ymlseul871 tests vitest verts. YAML des 4 workflows valide.
Deux criteres ne sont pas auto-verifiables par cette PR, a controler explicitement :
check-rust.yml, donc son self-path la declenche a dessein).audit.yml-> testable seulement apres merge : Gitea litscheduleetworkflow_dispatchdepuis la branche par defaut. A declencher a la main une fois merge. Sicargo-auditn'est pas trouve sur le PATH sans toolchain cargo, le correctif est d'ajouter rustup a ce workflow (1 etape).Cible attendue sur le run de cette PR : job rust ~9-10 min au lieu de 21m44.
/pr-review — APPROVE
Objectif atteint et verifie sur le run reel (head
263ebe1) : job rust 8m55s contre 21m44 en baseline (cible 9-10 min tenue), frontend 1m43s. 106 tests Rust + 871 vitest verts.Verifications
cargo-auditen binaire pre-buildé/root/.cargo/bin/cargo-audit(v0.22.2, checksum sha256 verifie), contre 4m41s de compilationPATHdu job ne masque pas le binairecontinue-on-errorreserveCache failed/getCacheEntry faileddans le logenable_status_check: falsesur la protection demainpaths-ignoresupporte (Forgejo 8.0.3 / gitea 1.22)libdbus-1-dev& co preservesCLAUDE.md+docs/architecture.mdexacts (4 workflows, arbre coherent, miroir dormant)Bonus non signale dans la description :
permissions: contents: readn'existait sur aucun job auparavant.Suggestions (non bloquantes)
1. Le glob
src-tauri/**reste non prouve. Ce run ne valide que l'entree chemin-exact.forgejo/workflows/check-rust.ymlde l'allowlist — le**n'a pas encore ete exerce. Le mode d'echec est silencieux et tombe sur la PR Rust (1 sur 40) : nicargo checknicargo test. A controler a l'oeil sur la premiere PR qui touchesrc-tauri/; les criteres d'acceptation de #232 ne couvrent que la direction inverse (frontend-only ne declenche pas rust).2.
audit.ymlsera rouge des son premier run, et tous les jours ensuite. Le log de cette PR le montre :error: 9 vulnerabilities found!(2x quick-xml 7.5 high, 4x rustls-webpki, 2x tar, 1x rsa) — les 9 de #310. Un job quotidien rouge en permanence ne signale plus l'avis nouveau : le 10e ressemblera aux 9 connus. Deux sorties : lander #310 avant, ou passer--ignore RUSTSEC-...sur les advisories tries pour que le job reparte au vert. RUSTSEC-2023-0071 (rsa, « No fixed upgrade is available! ») demandera un--ignorepermanent de toute facon.3. Asymetrie install bloquant / audit non bloquant. Une panne de
taiki-e/install-action(rate-limit GitHub, reseau) casse le job rust pour une etape dont le resultat est explicitement informatif. Le choix est assume dans #232, mais maintenant qu'audit.ymlest le vrai canal,continue-on-error: truesur l'install se defend.4.
.claude/**absent dupaths-ignorefrontend — un commit qui ne touche qu'unSKILL.mddeclenche 2m30 de build+tests. Coherent avec le raisonnement fail-safe, mais l'ajout est gratuit.5. References perimees a
check.ymldans.claude/skills/release/SKILL.md(l. 18 et 57). Le fond reste vrai (rien ne tourne surmain), seul le nom du fichier a disparu.docs/adr/0006etspec-issue-66-*.mden parlent aussi, mais ce sont des archives — a laisser.6.
CARGO_PROFILE_TEST_DEBUG: 0ne couvre que le profiltest; les dependances se compilent sousdevet gardent leurs infos de debug.CARGO_PROFILE_DEV_DEBUG: 0gratterait un peu de link time. Micro-optim, la cible est deja tenue.Sur les 2 points « non auto-verifiables » de la description
Le second est largement de-risque par le log : install-action lance lui-meme
cargo-audit audit --versionapres installation, soit exactement la forme d'invocation d'audit.yml. Reste l'inconnue de l'emplacement d'install quand rustup n'a jamais tourne ($HOME/.cargo/bininexistant) — le fallback documente (ajouter rustup) tient.