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

workflow_yaml_check accepts `jobs: []` though it claims to require a jobs mapping

Aperta
#1,285 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
55/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
c, github-actions, shell, yaml

Direzione di ricerca

The bug is in tools/workflow_yaml_check.sh line 227, which only checks for the existence of a 'jobs' key, not that it's a mapping. Start by reading the script, especially the validation logic around line 227. Write a test workflow file with 'jobs: []' and run the script to see it incorrectly pass. Then modify the script to ensure 'jobs' is a mapping (non-empty dictionary). Run the existing tests in tests/run_all_tests.sh to verify the fix doesn't break other checks.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

area:ci found-by:critic good first issue kind:gate-defect

PR #1284 at df74ef1bf1de6bc1e8620adbdef748a3060f392c was reviewed against git diff origin/main...HEAD.

Two coverage gaps block the supplied review bar:

  1. The sole roadmap caller now depends on the labels audit succeeding. .github/workflows/issue-triage.yml:241 has no step if, so GitHub applies success(). If any open issue lacks labels, the earlier labels audit exits 1 and the roadmap contract, selftest and live arms are skipped, including on a PR editing ROADMAP.md or either gate. The old suite ran these gates independently; after this PR it cannot provide that coverage. Run the roadmap step with a status condition such as ${{ !cancelled() }}, or put the two audits in independent jobs. Keep their failures advisory. The ordinary PR run did succeed: https://github.com/InauguralSystems/EigenScript/actions/runs/35922007325 . This finding concerns the first-step-failure path, not an observed failure of that run. GitHub's default status condition: https://docs.github.com/en/actions/reference/workflows-and-actions/expressions#status-check-functions .

  2. tests/run_all_tests.sh:7081-7084 checks only the selftest exit status. The deleted caller also pinned its counts. In a disposable copy, add return 0 immediately after selftest() { in tools/workflow_yaml_check.sh; execute the actual extracted [99zd] section, including the runner's bash accounting wrapper. It prints RESULTS: TOTAL=1 PASS=1 FAIL=0 although --selftest emits nothing. Likewise, add return 0 at the start of st_case() and the section passes over SELFTEST: 0 case(s) run, 0 passed, 0 failed, 0 skipped. Disabling only selftest loader runs produces 8 case(s) run, 6 passed, 0 failed, 2 skipped on a host where import yaml succeeds, and the section still passes. Restore the small caller-owned summary check: eight total, eight passed/zero skipped with PyYAML, six passed/two skipped without it. Control is green; whole-gate exit-0, exit-1, disabled live loader, and malformed workflow plants are all red.

Dangling claims to repair with the above:

  • issue-triage.yml:226-233 still says the dev image carries gh, Linux gcc exports its token, and contrasts this job with the former suite caller.
  • docs/CI.md:337-340 and tools/workflow_yaml_check.sh:53-54,77-81 claim selftest/contract pins that the new caller does not enforce.
  • tools/gh_probe.sh:32 refers to deleted CI.md text, “What the caller can and cannot prove”.
  • CHANGELOG.md:1441 says “see below” for the new change, which is above at line 1389.

Validation (one heavy command at a time; no full-suite rerun):

  • make: exit 0, EigenScript 0.43.0 built. Binary: 952K
  • make precheck: 19 passed, 0 failed, 0 skipped in 89s
  • section_plan.sh --skip-audit: 25 emitting lines (floor 20), 25 routed skips (floor 25), 25 reviewed reasons, unaccounted=0
  • child_exit_check.sh: 122 child sites (floor 122), no bypasses, 8 environment-selectable children
  • docs_claims_check.sh: NUMBERS 36 (history-deferred=0), PATHS 248, FLAGS 43, MAKE TARGETS 36, NAMES 463 (families 12), DOC ENROLMENT 12
  • ci_tier_check.sh: 22 jobs (16 required, 6 workers), 19 required names, 25 jobs on required paths
  • yaml.safe_load of all 9 workflow files: exit 0, no output
  • Both lowered floors are exact: child sites 126 -> 122 (-4); docs/CI.md paths 68 -> 65 (-3).
  • The live Protection ruleset lists exactly the 19 required checks in .github/required-checks.txt and excludes issue-triage.

Out of scope (pre-existing): workflow_yaml_check.sh:227 checks only whether jobs exists, not whether it is a mapping. A file containing name: lane, on: workflow_dispatch, jobs: [] is accepted with workflow-yaml: OK (examined=1 file(s), 1 name(s), loader=pyyaml), despite the tool header claiming a jobs mapping. This is not introduced by #1284.

Lingua principale
C
Stelle
3
Fork
7
Merge medio
3h 58m
PR unite (30g)
105

Preparare l'ambiente

Apri in Codespaces

Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.

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 InauguralSystems/EigenScript

Tutte le issue di InauguralSystems/EigenScript

Issue simili

Altre issue su C

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.