ci: a style lint was the precondition for the only job that proves anything - #6
Merged
Merged
Conversation
…ything `build-test` carried `needs: [lint]`. When SwiftLint went red on 2026-08-31 that job did not fail - it was SKIPPED, and a skipped job reads exactly like a passing one from the run list. Measured on run 34034521667: SwiftLint failure, swift-format failure, Build and Test skipped. Nothing has compiled or been tested in CI here since. Blank lines cannot break a build, so the three jobs now run independently and each reports its own verdict. SwiftLint becomes advisory, for the same reason swift-format already is. The rules are ours - .swiftlint.yml came from upstream and was tightened here on 2026-04-05 - and they were green in April. What moved is the TOOL: the step installs whatever brew has, and 0.65.1 reports 26 violations across 21 files, which is every Swift file in the repository. Nine of the first ten are vertical whitespace rules on code inherited from Jaysce/Spaceman that these rules were never calibrated against. That calibration is real work and it is not this change. What this change refuses is letting it hold the build. The version is printed now. brew install is unpinned, so the tool that judges this tree changes without anybody changing the tree - which is how a green April became a red August with no commit in between. A version in the log is what lets the next reader tell "the code got worse" from "the ruler moved". Neither branch is protected, so renaming the job breaks no required check. A .gitattributes lands with it because the export guard refused the commit without one: CLAUDE.md is process-only and would have shipped in any archive of this tree.
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.
build-testcarriedneeds: [lint]. When SwiftLint went red on 2026-08-31 that job did not fail — it was skipped, and a skipped job reads exactly like a passing one from the run list. Measured on run 34034521667: SwiftLint failure, swift-format failure, Build and Test skipped. Nothing has compiled or been tested in CI here since.Blank lines cannot break a build, so the three jobs now run independently and each reports its own verdict.
SwiftLint becomes advisory, for the same reason
swift-formatalready is — and the file says so in its own comment: "Advisory until rules are calibrated against the existing codebase." The rules are ours;.swiftlint.ymlcame from upstream and was tightened here on 2026-04-05, and the runs were green that April. What moved is the TOOL rather than the tree: the step installs whateverbrewhas, and 0.65.1 reports 26 violations across 21 files — which is every Swift file in the repository. Nine of the first ten arevertical_whitespace_opening_braces/..._closing_braceson code inherited fromJaysce/Spacemanthat these rules were never calibrated against.That calibration is real work and it is not this change. What this change refuses is letting it hold the build.
The version is printed now.
brew installis unpinned, so the tool that judges this tree changes without anybody changing the tree — which is how a green April became a red August with no commit in between. A version in the log is what lets the next reader tell "the code got worse" from "the ruler moved".Neither branch is protected, so renaming the job breaks no required check — checked before renaming.
A
.gitattributeslands with it because the export guard refused the commit without one:CLAUDE.mdis process-only and would have shipped in any archive of this tree.