feat(standards): name what failed, not just that something did - #176
Merged
twistedmelonman merged 1 commit intoSep 25, 2026
Merged
Conversation
A red standards check said "shellcheck found problems" and, at the end, "N linter(s) failed". Neither named the rule or the file, so finding the cause meant opening the raw job log. run-standards.sh now captures each linter's output as it streams and, on failure: - annotates the linter with the first 20 lines of its findings, so the check's annotation list shows the rule and file; - ends with "standards-check failed: <linter>, <linter>"; - when GITHUB_STEP_SUMMARY is set, writes each failed linter's output (first 200 lines) to the run summary. A clean run writes nothing there. Exit codes and the streamed log are unchanged. Callers pin the standards-check-v1 tag, which still points at the old script. They see none of this until the tag moves, and moving it is a separate decision. Advances smartwatermelon/dev-env#113
|
The PR replaces the simple No BLOCK criteria are present:
VERDICT: PASS |
twistedmelonman
deleted the
claude/feat-standards-name-failures-8a854048
branch
September 25, 2026 16:06
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.
What
A failed standards check now says which linter failed and what it found. Before this, the check printed "shellcheck found problems" and then "N linter(s) failed". Neither line named the rule or the file.
standards/run-standards.shkeeps a copy of each linter's output as it streams. When a linter fails, the script:::error title=<linter>::annotation. The check's annotation list then shows the rule and the file.::error::standards-check failed: shellcheck, markdownlint(it lists every linter that failed).GITHUB_STEP_SUMMARYis set, writes each failed linter's output to the run summary, up to 200 lines each. A clean run writes nothing there.Exit codes and the streamed log are unchanged.
Tests
New cases in
tests/test-run-standards.sh. The first three fail onmain(known-bad):final error line names the failed linterper-linter annotation carries the finding (SC2086)step summary names the failed linter and its findingclean run writes no failure section to the step summary(a guard, so a green run never lists "failures")bash tests/run-tests.sh: 21 passed, 0 failed.shellcheck -S infois clean.The tag stays where it is
Fleet callers pin
@standards-check-v1, and the workflow checks outstandards/atjob.workflow_sha. So until that tag moves, callers keep running the old script. This PR changesmainonly. Retaggingstandards-check-v1is a separate decision for a human. This PR does not move it.self-standards-check.ymlcalls the workflow locally, so this PR's own CI runs the new script.What's left
The symptom in dev-env#113 is gpush's line
CI failed (Standards Check: failure), which comes fromdotfiles/bash/gpush-wrapper.sh. This PR doesn't touch gpush. For gpush to show the findings, it would need to print the failing run's annotations or its URL. That is a separate dotfiles change. So this PR advances the issue but doesn't close it.Advances smartwatermelon/dev-env#113