Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

CI: language-audit workflows select gates by changed language and install only what they run (Part of #6278)

Chiusa
#6,501 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub

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
Tipo di issue
Funzionalità
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
git, github-actions, python
Ambito
ci-cd, devtools

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

claim:melek priority: high

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: includes gitgalaxy/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.yml
  • tri-comparison-audit.yml, tri-comparison-history.yml
  • graph-comparison-history.yml
  • detection-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 --replay does), and runner-min per run before and after.
  • A Haskell-only language_standards change 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

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di squid-protocol/gitgalaxy

Tutte le issue di squid-protocol/gitgalaxy

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.