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
A pull request opened against anything other than main runs almost no CI — no unit
tests, no lint, no agent suites — and its checks page looks healthy the whole time. Nothing is
marked failed or skipped-with-a-warning; the jobs simply never exist.
#2599 changed email-agent code and merged with zero email tests, zero unit tests and zero
lint. The stacked PRs kept the handful of workflows that don't filter on base (CodeQL and
friends), which is exactly what makes this dangerous — a green checks page that means nothing.
Cause:on.pull_request.branches filters on the PR's base branch, not the head. So branches: [ main ] means "only when merging into main". Every stacked PR falls outside it.
.github/workflows/test_email_agent.yml:30-31:
pull_request:
branches: [ main ]
35 workflows carry the same filter, including lint.yml, test_unit.yml, test_security.yml and dependency-review.yml — so the gap is the entire test matrix, not one
agent's suite.
This is the third way a PR can silently skip its checks in this repo, alongside #2755
(ready_for_ci cannot re-trigger skipped jobs, because labeled is not a PR trigger type).
The pattern is the problem: every one of them fails open and quiet. Stacking PRs is a
normal workflow here — seven merged PRs used a non-main base — so this is not an edge case.
🔍 Fix options, and the one to avoid
Don't just delete the branches: filter. These workflows also trigger on push to main,
and dropping the PR-side filter without thinking through the pairing gets you duplicate runs on
every branch push and a heavier runner bill.
Two directions worth weighing:
Widen the filter — e.g. branches-ignore: [], or an explicit allowlist that includes
the feature-branch naming conventions actually in use (tmi/*, issue-*, claudia/*).
Smallest diff, but it needs applying consistently across all 35 files or the gap just moves.
A pull request opened against anything other than
mainruns almost no CI — no unittests, no lint, no agent suites — and its checks page looks healthy the whole time. Nothing is
marked failed or skipped-with-a-warning; the jobs simply never exist.
This is not theoretical. Measured on merged PRs:
tmi/2580-attention-inttmi/issue-2621-grounded-prosetmi/issue-2643-2638-scan-costmain#2599 changed email-agent code and merged with zero email tests, zero unit tests and zero
lint. The stacked PRs kept the handful of workflows that don't filter on base (CodeQL and
friends), which is exactly what makes this dangerous — a green checks page that means nothing.
Cause:
on.pull_request.branchesfilters on the PR's base branch, not the head. Sobranches: [ main ]means "only when merging into main". Every stacked PR falls outside it..github/workflows/test_email_agent.yml:30-31:35 workflows carry the same filter, including
lint.yml,test_unit.yml,test_security.ymlanddependency-review.yml— so the gap is the entire test matrix, not oneagent's suite.
This is the third way a PR can silently skip its checks in this repo, alongside #2755
(
ready_for_cicannot re-trigger skipped jobs, becauselabeledis not a PR trigger type).The pattern is the problem: every one of them fails open and quiet. Stacking PRs is a
normal workflow here — seven merged PRs used a non-main base — so this is not an edge case.
🔍 Fix options, and the one to avoid
Don't just delete the
branches:filter. These workflows also trigger onpushtomain,and dropping the PR-side filter without thinking through the pairing gets you duplicate runs on
every branch push and a heavier runner bill.
Two directions worth weighing:
branches-ignore: [], or an explicit allowlist that includesthe feature-branch naming conventions actually in use (
tmi/*,issue-*,claudia/*).Smallest diff, but it needs applying consistently across all 35 files or the gap just moves.
dependencies did not run. This is the one that closes the whole class — it converts every
silent skip, including fix(ci): ready_for_ci label does not re-trigger skipped jobs — 'labeled' is not a PR trigger type #2755's and any future variant, into a visible red check.
Option 2 is the durable answer; option 1 is worth doing first if a quick stop-gap is wanted.
Verification: open a throwaway PR against a non-
mainbase that toucheshub/agents/email/python/**, and confirm the email suites appear in its checks.