Repository navigation
fix: stop treating a blank line as a job boundary in contract lint - #164
Merged
Merged
Conversation
scan_jobs() ended a job block at the first line indented less than two
spaces, and indent("") is 0, so a blank line ended the block. Blank lines are
ordinary inside `run: |` bodies, so every rule violation after the first one
in a job was invisible. wazoo-console's cleanup-preview job lost its R5
finding exactly that way, and its deploy-preview job lost R1 and R5.
Add a credential-free bash self-test that pins the boundary, run it from CI,
and record why it is not part of `deno task ci`.
Closes #163
This was referenced Oct 14, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
scan_jobs()ended a job block at the first line indented less than two spaces,and
indent("")is 0 — so a blank line ended the block. Blank lines are ordinaryinside
run: |bodies, so every rule violation after the first one in a job wasinvisible.
Two fixtures that differ only by a blank line, run against the lint on
main:one reports
1 violation(s), the other reports0. After the fix both report 1.Closes #163.
What this surfaces downstream
Run over every workflow directory in the workspace, the fixed lint finds exactly
one failing file:
wazoo-console.github/workflows/ci.ymldeploy-preview, R5 oncleanup-previewEverything else is clean,
wazoo-apiandworlds-apiincluded. The pinned lintreports 2 for that file; the missing one is the
cleanup-previewR5 finding,which sat after a blank line.
Re-checked the closed conform branch from #121 under the fixed lint: still 0
violations, so that work does clear all three.
Merge order (three consumers pin this action)
wazoo-api,wazoo-console, andworlds-apiall pinwazootech/workspace-cli/skills/contract-lint@9841b8de3539b5350ec85b527018afb256480b16,so nothing changes for them until the pin moves.
wazoo-apiandworlds-api— both 0 violations under the fixedlint, so both stay green.
wazoo-console— must not land before the conformance work inrefactor: dissolve shared.ts grab-bag into focused modules #113. Its bump would be the first console PR to run the corrected lint, and
the corrected lint fails the 3 findings above. That is refactor: dissolve shared.ts grab-bag into focused modules #113's subject; bumping
early would just turn
contract-lintred on every console PR.Verification
deno task ci— 199 passed, 0 failed, 1 ignored.bash skills/contract-lint/lint_test.sh— all 5 cases pass. Against theprevious commit, 2 of the 5 fail (the blank-line cases), which is the point.
What I could not observe
The consumer pin bumps are separate PRs, not this one. I ran the fixed lint
locally against every workflow directory in the workspace; I did not run it
inside a consumer's CI, because that only happens once their pin moves.
Notes
The self-test is a CI step rather than part of
deno task ci, becausedeno task ciis documented to work on a bare Windows checkout and this test isbash. The README says so, so it does not get "consolidated" later.