mirror of
https://github.com/Comfy-Org/github-workflows.git
synced 2026-11-05 00:17:37 +00:00
[PR #299] [MERGED] test(refresh-reviewers): extend input/docs drift check to caller blocks, README knobs, and the Default column #298
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#298
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/299
Author: @mattmillerai
Created: 9/16/2026
Status: ✅ Merged
Merged: 9/17/2026
Merged by: @mattmillerai
Base:
main← Head:matt/be-14782-refresh-reviewers-drift-extend📝 Commits (8)
7e5f4d3docs(refresh-reviewers): add its own caller guide so the workflows_ref cross-check covers itfc9f7acdocs(refresh-reviewers): tighten guide accuracy from cursor-review panel1bbe0e7test(refresh-reviewers): pin workflow_call inputs against the docs/callers Inputs table2321bdctest(refresh-reviewers): run the drift test on the files it parses; harden its scannersf6d5156test(refresh-reviewers): extend drift check to caller with: blocks, README knobs, and the Default columnf4f7038test(refresh-reviewers): scope drift scanners and harden Default parsing5daa18fMerge remote-tracking branch 'origin/main' into matt/be-14782-refresh-reviewers-drift-extendceefaa1fix(refresh-reviewers): stop comment-stripping from leaving stray quotes on a quoted default📊 Changes
1 file changed (+394 additions, -6 deletions)
View changed files
📝
.github/refresh-reviewers/tests/test_inputs_docs.py(+394 -6)📄 Description
What this does
Extends
.github/refresh-reviewers/tests/test_inputs_docs.py(added by #298) with three new drift assertions, covering the surfaces a consumer actually copies — the same #31 / BE-4691 drift class the file already polices (a phantom input in the docs is a zero-jobstartup_failurefor whoever copies it), pushed one level in from the Inputs table to the copy-paste examples.with:blocks ⊆ declared inputs (test_example_with_blocks_are_declared_inputs). Both copy-paste callers this repo ships — the## Callerfenced YAML indocs/callers/refresh-reviewers.md, and the#-prefixed example in therefresh-reviewers.ymlheader comment — pass inputs viawith:. A new relative-indentation scanner collects the mapping keys directly underwith:(skippinguses:/secrets:, which sit at thewith:indent and end the block, and placeholder scalar values, which never start a line; for the header comment the leading#is stripped first so indentation is preserved) and asserts each set is a subset of the declared inputs. Subset, not equality — an example legitimately shows only a couple of inputs.test_readme_knob_table_has_no_phantom_knob)..github/refresh-reviewers/README.md's "Knob defaults (and why)" table is intentionally partial and uses combined-cell rows (| `top_k` / `floor` |) the existingTABLE_KEYregex correctly does not capture. Reusingdocumented_inputs(README, "## Knob defaults (and why)"), this asserts only the phantom direction (documented - declared == set()) — never set-equality, which would be permanently red because the table omits many inputs by design.test_guide_default_column_matches_workflow). Both existing assertions are name-only, so the guide Inputs table'sDefaultcolumn could silently drift from the workflow's realdefault:. A new scanner pairs each input key with its 8-spacedefault:line inrefresh-reviewers.ymland compares against the normalized Default cell of the guide's## Inputstable (strip backticks/markdown;''↔default: ''; and theworkflows_refspecial case —required: truewith no default, shown as— (**required**)), asserting per-input equality with a message naming the input and both values.Each new scanner keeps the existing
setUpguarding style — sanity-checked non-empty / still findingworkflows_ref— so a parser gone quiet fails loudly instead of passing vacuously. Stdlib only, no PyYAML.No CI wiring needed:
test-refresh-reviewers.yml'spaths:filter already includes.github/refresh-reviewers/**, and it runspython3 -m unittest discover, so the new methods run automatically.Verification
python3 -m unittest discover -s .github/refresh-reviewers/tests -p 'test_*.py' -v→ 53 tests OK (the 3 new ones included).with:key, a phantom README knob, a drifted guide Default cell, and aworkflows_refshown with a fake default instead of the required marker — all four go RED, confirming the checks are real, not vacuous.with:blocks resolve to{map_exclude, workflows_ref}(⊆ declared), the README knob scanner to{window_months, half_life_days, floor_min_touches, pr_branch}(combined-cell rows correctly excluded), and all 12 inputs' Default cells match the workflow.Provenance
python3 -m unittest discover -s .github/refresh-reviewers/tests -p 'test_*.py'green (53 tests); each new guard falsified against injected drift;py_compileclean; diff is a single test file, +260 lines, additive only.main(per the standing always-stack directive — the file this edits exists only on that branch). See Residual.Residual
main. This change cannot merge until #298 (adds the test file) and transitively #296 (addsdocs/callers/refresh-reviewers.md) merge. Both were open at authoring time. If #298 is revised in review in a way that reshapestest_inputs_docs.py, this stack may need a rebase; the net diff is purely additive (three new methods + supporting module functions), so conflicts should be mechanical.github-workflows#298 discussion_r4026892130) and the originating spike's findings comment are not reachable from the build sandbox; the three extensions were implemented directly from the recommended plan carried in the task. No behavioral surface ofrefresh-reviewersitself is touched — this is test-only coverage of existing docs/workflow content.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.