CI: language-audit workflows select gates by changed language and install only what they run (Part of #6278)
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
Direzione di ricerca
Start by reading .claude/rules/ci-workflows.md, tests/tools/change_classifier.py, and the existing plan scripts ground_truth_plan.py and det_sweep_plan.py. Inspect the listed audit workflow files and tests/import_graph_corpus.json to map changed inputs to gates and required toolchains. Replay the plan against the last 50 merged PRs for each workflow and report run share and runner-min before and after; confirm a Haskell-only change avoids unrelated toolchains and required check names still report on every PR.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Part of #6278 (CI cost). Owner 2026-10-24: tune the new call-graph gates, and every workflow from now on is built for speed (.claude/rules/ci-workflows.md).
Measured (2026-10-23 00:00Z to 10-24 16:30Z)
- The runner pool is the bottleneck. A job-level sample at 16:23–16:30Z on 10-24 found 18–22 jobs running (pool 20, all
ubuntu-latest) and 41–68 jobs queued. Queued jobs had waited a median of 1.5–8 min, and up to 37 min. graph-accuracy-audit.yml: 118 PR runs, of which 62 did work (the rest were drafts or skipped). Median 8.7 min wall, p90 15.9 min, about 654 runner-min in total.- Many of those runs came from PRs for Haskell, Dart, PowerShell and Swift rule changes. None of those languages has a call-resolution gate, yet each run installed Node + TypeScript, JDK 21 + scip-java, the Rust 1.90 toolchain, Go 1.24 and libclang, and then ran all 10 gates.
- Cause:
paths:includesgitgalaxy/standards/language_standards/**plus core files. There is no plan job, every toolchain step runs unconditionally, and every gate runs.
Change
A plan job (stdlib only, like ground_truth_plan.py / det_sweep_plan.py, using tests/tools/change_classifier.py) maps the changed files to the gates that can move:
| changed | gates |
|---|---|
a language's standard (language_standards/<lang>*) |
that language's call-resolution gate (if it has one) + import-graph (if the language is in tests/import_graph_corpus.json) + span anchoring (covers every language) |
| a gate's own tool, baseline or reference adapter | that gate (+ every gate sharing the adapter: scip_callgraph.py → java, rust; clang_callgraph.py → c, cpp) |
shared core (detector.py, prism.py, call_resolver.py, network_risk_sensor.py), the workflow itself, crucible_pins |
all gates |
| anything else | none: the required check reports success |
- Toolchain steps run only when a selected gate needs them (
if: contains(needs.plan.outputs.gates, ...)): Node/TS for typescript and javascript; JDK + scip-java cache for java; rustup for rust; Go for go; libclang for c and cpp. Cache the rustup toolchain (keyed by version) if it's still the slowest install. - Keep one runner with parallel lanes (#5501). Lanes run only the selected gates.
- The plan is tested in both directions: never skip a gate whose inputs changed; a COBOL/PL/I-only change runs span anchoring only (or nothing, if span anchoring doesn't read that language).
Same class: one PR each, or one PR for the family if small
Each of these is a per-language audit with a broad paths: and no plan job. Apply the same plan shape:
call-graph-accuracy-audit.yml(Level 1)tree-sitter-accuracy-audit.yml,tree-sitter-accuracy-history.ymltri-comparison-audit.yml,tri-comparison-history.ymlgraph-comparison-history.ymldetection-accuracy-audit.yml
The other broad PR workflows without a plan (codeql, muninn, estate-crucible, golden-crucible, crucible-path-independence, fact-crosscheck, ports-compile, rosetta-audit, unicode-gauntlet) stay with #6278 slice 4.
Acceptance
- The PR body states, per workflow: the share of the last 50 merged PRs it would now run on versus before (replay the plan, as
sweep_plan.py --replaydoes), and runner-min per run before and after. - A Haskell-only
language_standardschange installs no JDK, Rust, Go or Node, and runs at most span anchoring and import-graph. - Required check names are unchanged and still report on every PR.
- Lingua principale
- Python
- Stelle
- 57
- Fork
- 11
- Merge medio
- 1h 19m
- PR unite (30g)
- 983
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di squid-protocol/gitgalaxy
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 43/100
squid-protocol/gitgalaxy#6730 ·
I maintainer di solito rispondono entro 1 giorno
-
Flaky CI job: db2 4/6Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 42/100
squid-protocol/gitgalaxy#6729 ·
I maintainer di solito rispondono entro 1 giorno
-
Flaky CI job: db2 1/4Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
squid-protocol/gitgalaxy#6728 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 57/100
squid-protocol/gitgalaxy#6694 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
squid-protocol/gitgalaxy#6693 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di squid-protocol/gitgalaxy
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
pydot/pydot#601 · 4 commenti ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
letsencrypt/cp-cps#361 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
-
CI: startup_failure because callers grant fewer permissions than ledger-app-workflows@v1 declaresForse già presa @maykonmichel l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
LedgerHQ/app-boilerplate-rust#227 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
linuxmint/mintupdate#1107 ·