ci: account for the telegram warning in the build summariser - #2353
Merged
Conversation
#2351 added a ::warning:: for a Telegram upload that failed all three attempts, and landed with the summariser's drift gate red. build-summary.py --self-test requires every annotation build.yml's matrix job emits to map either to a grammar or to an explicit ignore, so that a reworded ::error:: cannot quietly empty the nightly report. It now fails on master, and on every branch cut from it. The anchor goes in IGNORED_ANCHORS rather than GRAMMARS. The image the notification announces reached the publish job a step earlier, so a failure to send says nothing about the board that emitted it and belongs in no cause bucket -- the same reason the size-report and kconfig-graph hiccups already listed there are not summarised.
widgetii
requested review from
cronyx,
flyrouter and
viktorxda
as code owners
September 1, 2026 22:09
Code Review by Qodo🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)
Great, no issues found!Qodo reviewed your code and found no material issues that require reviewTip of the day💡 Did you know, you can describe a rule in plain language on the Rules page and Qodo drafts it for you |
PR Summary by QodoAccount for Telegram warnings in build summary drift checks
AI Description
Diagram
High-Level Assessment
Files changed (1)
|
widgetii
added a commit
that referenced
this pull request
Sep 2, 2026
#2351 merged with `build summariser agrees with build.yml` red. Branch protection required only CI Gate, qodo-gate and GCC Gate, so every context lint.yml and shell-tests.yml report was advisory. Master was left failing its own drift gate, and every branch cut from it carried the same red check until #2353 repaired it. The check was not broken; it was simply not something anyone had to satisfy. Each workflow grows one umbrella job -- Lint Gate and Shell Tests Gate -- the shape build.yml's CI Gate and gcc-compat.yml's GCC Gate already use. Branch protection then names a single stable context per workflow, and a job added later is covered without a settings change, which is the argument build.yml makes for not listing the ~99 per-board contexts individually. Both refuse `skipped` as well as failure. Upstream the per-job guard is a tautology, so a skipped job means the guard changed or the job left `needs`; either way the context would go green having checked nothing, which is the failure it exists to prevent. Requiring the two new contexts is a branch-protection change that no file in the tree can make, and follows this commit.
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.
Problem
masteris red on a merge gate. #2351 added a::warning::annotation for a Telegram uploadthat failed all three attempts, and landed while
lint.yml's build summariser agrees withbuild.yml check was failing:
That check is not in branch protection's required contexts, so nothing stopped the merge. It
now fails on
masterand on every branch cut from it.Why the gate fired
--self-test's drift check requires every::error::/::warning::in build.yml'sbuildrootjob to map either to a grammar or to an explicit ignore. It exists so that rewording an
annotation fails a merge gate instead of silently reducing the nightly Build summary to
reporting nothing. It was working as designed — the annotation is new and genuinely unclassified.
The change
The anchor goes in
IGNORED_ANCHORS, notGRAMMARS. The image the notification announcesreached the
publishjob a step earlier, so a failure to send says nothing about the board thatemitted it and belongs in no cause bucket — the same reason the size-report and kconfig-graph
hiccups already listed there are not summarised.
parse_annotationsdrops it, so the report isunchanged; only the floor check's accounting moves, 7 classified to 8.
Verification
Scope
CI reporting only.
ci-matrix.py --stdinselects 0 boards for this path — it changes noimage bytes and reaches no camera, so there is no hardware evidence to give.