mirror of
https://github.com/Comfy-Org/github-workflows.git
synced 2026-11-05 00:17:37 +00:00
[PR #317] [MERGED] docs(callers): document the 13 undocumented workflow_call inputs and drain KNOWN_UNDOCUMENTED #318
Labels
No labels
cursor-review-catalog-drift
groom
groom
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Comfy-Org/github-workflows#318
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
📋 Pull Request Information
Original PR: https://github.com/Comfy-Org/github-workflows/pull/317
Author: @mattmillerai
Created: 9/18/2026
Status: ✅ Merged
Merged: 9/19/2026
Merged by: @mattmillerai
Base:
main← Head:matt/be-15261-document-undocumented-workflow-call-inputs📝 Commits (2)
00f93a8docs(callers): document the 13 undocumented workflow_call inputs and drain KNOWN_UNDOCUMENTEDf3f8896docs(callers): correct eight input rows the review panel found overclaimed📊 Changes
5 files changed (+39 additions, -27 deletions)
View changed files
📝
.github/workflow-pins/tests/test_inputs_docs_drift.py(+24 -25)📝
docs/callers/agents-md-integrity.md(+1 -0)📝
docs/callers/groom.md(+6 -2)📝
docs/callers/pr-derisk.md(+2 -0)📝
docs/callers/pr-risk.md(+6 -0)📄 Description
ELI-5
Sixteen reusable workflows in this repo each accept a set of
with:inputs, and each has a caller guide underdocs/callers/whose Inputs table is supposed to list them. Thirteen inputs were missing from those tables — real, shipped knobs that a consumer could only discover by opening the workflow YAML and reading it. This PR writes the thirteen missing rows and empties the allowlist that was holding the debt open.What changed
One table row per undocumented input, in each page's existing column style, with the Default cell copied from the workflow's own
default:and the Notes cell condensed from that input'sdescription::docs/callers/agents-md-integrity.md—exclude_paths.docs/callers/pr-risk.md—enabled,pr_number,pr_numbers,sticky_comment,check_run,check_name. Three of these were already referenced by the guide's own prose: the permissions section explains whychecks: writeis required "whether or not you setcheck_run: true", and the enrollment section describes the backfill and manual re-grade that onlypr_number/pr_numbersmake possible. The prose named the behaviour; nothing named the input that reaches it.docs/callers/pr-derisk.md—fleet_logins,bot_logins, each linked to pr-risk's row for the same input, since the workflow forwards both to the grader unchanged.docs/callers/groom.md—sink,path,config,bail_sink.groom's table now names every input the workflow declares (20 inputs across 19 rows —
scope_label/scope_descshare one), so the "The ones that matter:" preamble is reworded to "All of them:". That is a claim the table has to keep earning, and the harness is what keeps it honest from here.KNOWN_UNDOCUMENTEDin.github/workflow-pins/tests/test_inputs_docs_drift.pydrains to{}. This is not a loosening:test_known_undocumented_is_not_stalefails on an entry whose input is now documented, so every one of the thirteen became a hard failure the moment its row landed, and removing them is what the file was built to make necessary. The dict, its explanatory comment and both directions of the check stay in place for the day a deliberately internal input appears; the comment now says so, and points at where the debt came from.No workflow input is added, removed or renamed. No
workflows_refrow is touched.check_defaultsstays off on every row — see Residual.Verification
python3 -m unittest discover -s .github/workflow-pins/tests -p 'test_*.py' -v— 458 tests, OK (32 skipped), withKNOWN_UNDOCUMENTEDempty.python3 .github/workflow-pins/check_workflow_pins.py— OK, 11 workflows declareworkflows_ref, none with a default, every ref checkout guarded. Run becausedocs/callers/**edits trigger its guide cross-check.sinkrow from groom's table failsInputsDocsDrift_groom.test_every_declared_input_is_documented_or_allowlisted, and restoring it returns the suite to green. The undocumented direction is genuinely live on these rows now, not passing by an empty-vs-empty comparison.workflow_input_defaults/documented_input_defaults: all 13 documented Default cells equal the declaration verbatim ('',false,issue,github,PR risk (advisory))..github/cursor-review/tests(600 OK),.github/refresh-reviewers/tests(56 OK),.github/public-repo-hygiene/tests(204 OK),.github/agents-md-integrity/tests(46 OK),scripts/linear-ticket/tests(116 OK).python3 .github/agents-md-integrity/check_agents_md.py --root .— passed with 2 pre-existing warnings (AGENTS.md at 155 lines over the aspirational 150; no CODEOWNERS). Neither is touched by this diff.sinkandbail_sinkrows state thatlinearis reserved and not implemented. Rather than assert that from the input's owndescription:, I went and read the enforcing code:groom.yml'sValidate sinkstep hard-fails anysinkother thangithubbefore the audit runs, and.github/groom/config.pydefinesBAIL_SINKS = ("issue", "none")with a dedicated_coerce_bail_sinkbranch that refuseslinearby name. Both denials are accurate descriptions of shipped behaviour; this diff adds no dead-end path and changes no code.docs/callers/**or.github/workflow-pins/**, checked against everybump-*-callers.ymlpaths:filter, so noSkip-caller-bump: truetrailer applies here — adding one would declare the PR bump-irrelevant for fleets that were never going to fire.Judgment calls
enabled/pr_number/pr_numbersabove the grading knobs (switch, then targeting), the two output knobs below them; groom'ssinkbesidemax_findings,pathbesidescope_label/scope_desc,configbesideworkflows_ref,bail_sinkbeside the otherbuilder: truerows.bail_sink's Notes cell is long because the quiet option is a footgun worth stating inline:nonerecords nothing in the ledger, so a deterministic bail re-bails every run and permanently holds one of themax_prsslots — at the common pilot settingmax_prs: 1, nothing else is ever built. The cell also states the one bailnonedoes not suppress (the pre-publish secret-scan withhold).config's Notes cell leads with what you should use instead. The workflow's own description opens "You almost certainly do NOT need to pass this"; the row says plainly thatvars.GROOM_CONFIGis the normal route and names the one case the input exists for (aworkflow_dispatchvalue that must outrank the repo variable, which a reusable cannot otherwise see).repo_map_path/repo_runbooks_path— the two forwarded logins lists have different meanings and different consequences, and the harness reads combined cells correctly either way.Residual
check_defaultsis off on all 16 rows of the drift harness by design — the two hand-rolled originals still own that pin, and turning it on is the fold-in change's job, not this one's. I verified all 13 new Default cells against their declarations by machine (above), but nothing in CI will catch it if a workflow'sdefault:later moves and one of these cells does not follow. The fold-in that flipscheck_defaultson would close this; it is deliberately out of scope here.dir_readme/readme_heading/readme_modecolumns are likewise still off, for the same reason and with the same owner. A directory README knob table can still drift from its workflow without failing anything.Provenance
python3 -m unittest discover -s .github/workflow-pins/tests -p 'test_*.py' -v: 458 passed, 0 failed, 32 skipped;python3 .github/workflow-pins/check_workflow_pins.py: OK, 0 violations across 11 workflows; negative control (row deleted): 1 expected failure, restored to green; cursor-review 600 / refresh-reviewers 56 / public-repo-hygiene 204 / agents-md-integrity 46 / linear-ticket 116 — all OK;check_agents_md.py --root .: passed, 2 pre-existing warnings.check_defaultswas deliberately left off, as the change specified.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
paths:positive #320