You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Found resyncing ptr727/PlexCleaner against hub f3b4cc9 (audit run 2026-08-30T21:49:58Z). Nothing in this issue is a defect in PlexCleaner.
Summary
spec/audit.py's _code_view() drops the body of every block scalar, including a folded one. check_interface()'s requireTokensInJob then scans a job block that no longer contains the condition, so a token written on the continuation line of an if: >- is invisible to it.
That shape is not incidental. It is what the fleet's own style rules mandate:
So a repo that follows the style rule and satisfies the contract is reported as violating the contract, while a repo that violates the style rule by inlining the expression passes.
Reproduction
Two job blocks differing only in the if: shape, both satisfying publish-release.yml's requireTokensInJob for publish:
The same finding text appears against seven more repos (LanguageTags, ESPHome-NonRoot, VSCode-Server-DotNetCore, KiCadLibrary, MediaTools, Vantage-Config, Blog), but I checked each and those are true findings: the token is genuinely absent because they have not adopted the release chain. Only the two above are false positives. That ratio is the concerning part, since the false positives land on the repos that did the work.
Why the current behavior exists
The docstring is explicit, and the reasoning is sound for what it was written against:
A block-scalar string value (name: | followed by indented text) can hide or fake a token the same way, so its body is dropped too, keeping only the key: line itself (#949).
A run: or name: body is a string value, and dropping it is right. An if: body is a condition, which is exactly the structure requireTokensInJob exists to assert. _BLOCK_SCALAR_KEY does not distinguish them.
Possible directions
Not a recommendation, since the trade-off is yours:
Found resyncing
ptr727/PlexCleaneragainst hubf3b4cc9(audit run 2026-08-30T21:49:58Z). Nothing in this issue is a defect in PlexCleaner.Summary
spec/audit.py's_code_view()drops the body of every block scalar, including a folded one.check_interface()'srequireTokensInJobthen scans a job block that no longer contains the condition, so a token written on the continuation line of anif: >-is invisible to it.That shape is not incidental. It is what the fleet's own style rules mandate:
GOVERNANCE.md:229— "multi-lineif:uses folded scalarif: >-so YAML preserves whitespace correctly"WORKFLOW.md:36— "Conditionals. Multi-lineif:uses the folded scalarif: >-"So a repo that follows the style rule and satisfies the contract is reported as violating the contract, while a repo that violates the style rule by inlining the expression passes.
Reproduction
Two job blocks differing only in the
if:shape, both satisfyingpublish-release.yml'srequireTokensInJobforpublish:What
_code_view()leaves for the folded case:Who this hits today
Two repos, and they are precisely the two that have adopted the hub release chain and written the condition as documented:
mainmissing required 'needs.validate.result == 'success''developThe same finding text appears against seven more repos (LanguageTags, ESPHome-NonRoot, VSCode-Server-DotNetCore, KiCadLibrary, MediaTools, Vantage-Config, Blog), but I checked each and those are true findings: the token is genuinely absent because they have not adopted the release chain. Only the two above are false positives. That ratio is the concerning part, since the false positives land on the repos that did the work.
Why the current behavior exists
The docstring is explicit, and the reasoning is sound for what it was written against:
A
run:orname:body is a string value, and dropping it is right. Anif:body is a condition, which is exactly the structurerequireTokensInJobexists to assert._BLOCK_SCALAR_KEYdoes not distinguish them.Possible directions
Not a recommendation, since the trade-off is yours:
if:(and any other structural key) from the block-scalar drop, keeping the body forrun:,name:, and other string values. Narrow, and preserves check_interface()'s token matching reads YAML block-scalar content as structure #949's intent.if: >-plus its body reads as the single logical line YAML says it is._code_view()alone and haverequireTokensInJobscan a YAML-parsed value for the named key instead of a text view.Option 1 or 2 would clear the false positives without weakening the #949 guard, since neither restores a
name:/run:body to the scan.Not filed here
PlexCleaner's own convergence issue is separate. No audit report or registry change is being written back to this repo.