Comfy-Org / Comfy-Org/github-workflows

[groom] Declared-vs-documented input drift is machine-checked for 1 of the 16 reusable workflows

Aperta
#259 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
groom
Lingua principale
Shell
Stelle
6
Fork
1
Merge medio
14h 4m
PR unite (30g)
98

Descrizione

**Groom auto-builder** — Comfy-Org/github-workflows: this CONFIRMED finding could not be auto-built (patch modifies a CI-privileged or dataset-of-record path (per .github/groom/patch_policy.py — workflow/action defs, lockfiles, build/test config that executes in pre-review CI, graded eval cases under a suites/**/cases/ tree, or a symlink into such a tree) — a human must author these changes), so it is filed for a human. · [run](https://github.com/Comfy-Org/github-workflows/actions/runs/33739264302)

## Verified

16 workflow files declare a top-level `workflow_call:` block (agents-md-integrity, assign-prs-to-author, assign-reviewers, coderabbit-config-validate, cursor-review-auto-label, cursor-review, detect-unreviewed-merge, groom, linear-ticket, pr-area-label, pr-derisk, pr-risk, pr-size, public-repo-hygiene, refresh-reviewers, stale). Exactly one - cursor-review - has a drift test: `.github/cursor-review/tests/test_workflow_inputs_docs.py` asserts set equality between `on.workflow_call.inputs`, the knob table in `.github/cursor-review/README.md` and the Inputs table in `docs/callers/cursor-review.md`. Nothing else compares a workflow's inputs to its docs (`grep -rl docs/callers` over `.github` returns only that test plus two unrelated comment mentions).

`AGENTS.md:132-136` records the stake and the precedent: GitHub rejects an unknown input at startup, so a phantom input in the docs is a broken caller for whoever copies it - with cursor-review's `blocking:` input as the worked example, deleted in #31, documented in three places for weeks, restored by BE-4691. Each input surface is written down three or four times (the workflow block, the header caller example, `docs/callers/.md`, and the README catalog row - `README.md:24`, the pr-risk row, is a single table cell over 5,000 characters).

## Scope note the finder missed

`docs/callers/` holds 15 pages, not 16: `refresh-reviewers.yml` declares `workflow_call` but has no caller page. And the third leg of the cursor-review test (a directory README knob table) exists only for cursor-review. So the generalisation is over (workflow file, docs/callers page) PAIRS with an optional third leg, and it needs an explicit decision for refresh-reviewers - add a page, or record it as intentionally uncatalogued.

## Fix

Parameterise `test_workflow_inputs_docs.py` over a table of (workflow, docs page, optional directory-README section) triples and move it somewhere shared (e.g. `.github/workflow-pins/tests/` or a new docs-drift directory), so adding a reusable workflow adds a row rather than a bespoke test. Keep the existing self-checks - each scanner asserts a non-empty result and the presence of `workflows_ref` - since they are what makes generalising safe. Test-only; expect the first run to surface real drift across the 15 currently unguarded workflows, and budget for fixing it.

## Steelman

Strict set equality across 16 workflows may produce false failures on legitimate presentational choices (a deliberately undocumented internal input, a table split across sections), which trains people to weaken the check. Counter: the assertion is over input NAMES only, it is already proven non-annoying on the most input-heavy workflow in the repo, and the failure it prevents is a zero-log startup_failure in someone else's repo.

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Start with .github/cursor-review/tests/test_workflow_inputs_docs.py and run its existing test to understand the three-way input comparison. Inspect the 16 reusable workflow declarations and the 15 docs/callers pages, then decide how refresh-reviewers should be represented. Done means a shared parameterized check covers every workflow, preserves the existing self-checks, and the initial drift it reveals is resolved.

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

Valutazione

Stack tecnologico
github-actions
Ambito
ci-cd, documentation, testing
Tipo di issue
Funzionalità
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Attiva
Chiarezza
Specificata chiaramente
Idoneità per principianti
55/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.