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
{{ message }}
Repository navigation
CONTRIBUTING.md CI table lists 2 workflows; repo has more #1789
The root CONTRIBUTING.md "What CI checks" section says two workflows run on every PR. Source Hygiene, Tools Python CI, and i18n Coverage also run on every PR (and on push to main). App build is path-filtered and currently disabled_manually (#1770). Fork workflows exist too.
I'd like to refresh that table so a first-time (agent) contributor does not skip the cheap Linux gates. Docs-only PR if useful.
Checked this against the workflow files and against real PR runs — you're right, and the problem is bigger than the root table. A docs-only PR would be welcome.
The root CONTRIBUTING.md claim, verified
It says "Two GitHub Actions workflows run on every PR and push to main" and lists Swift Packages CI and Android CI. Both halves are wrong, and in a way that's worth stating precisely: the two it names are the only two that are path-filtered, and it omits the three that genuinely have no path filter.
workflow
pull_request trigger
runs on every PR?
Source Hygiene
no paths:
yes
Tools Python CI
no paths:
yes
i18n Coverage
no paths:
yes
Swift Packages CI
paths: Packages/**, Tools/Sleep*, …
no
Android CI
paths: android/**, …
no
App build
paths: Strand/**, …
no, and disabled_manually
The bigger problem: docs/CONTRIBUTING.md is wrong in a more damaging direction
Its "What CI gates" section says:
Disabled by design — you build the app yourself:app-build.yml … and android.yml (Android app build) are off.
android.yml is active — gh workflow list reports it so, and its build-and-test job ran on every Android PR merged today (#1786, #1788, #1790). Only app-build.yml is disabled.
That's worse than an undercount: it tells a contributor that the check most likely to catch their mistake doesn't run, so they skip testing locally and get a red PR they were told to expect green. The same section also lists swift-packages under "on every PR", when it's path-filtered.
The thing that actually traps a first-time contributor
The job names don't resemble the workflow names, so the table can't be used to interpret a PR's checks:
check you see
workflow it belongs to
check
i18n Coverage
doc-comments
Source Hygiene
linux-capture
Tools Python CI
build-and-test
Android CI
test (…) / tools (…)
Swift Packages CI
check being i18n Coverage is genuinely unguessable. I misread these myself repeatedly before mapping them — an Android-only PR shows exactly four checks and looks like almost nothing ran, when in fact all three always-on workflows did. Worth a column in whatever table you write.
One small thing
The (#1770) citation for app-build being disabled is loose — #1770 is "Standard-HR persistence trace: Android twin, one parity claim, and a test no CI runs". It records a consequence of app-build being off rather than that fact itself, so it reads as the wrong reference even though it's related.
Scope suggestion
Both files need it, and they disagree with each other as well as with reality — so it's worth deciding whether the root file keeps a summary at all or points at docs/CONTRIBUTING.md. Two tables that drift are how this happened. Happy to review the PR.
Done in #1793 — thanks @kvnloo, and the second error only surfaced because you questioned the first.
What landed:
Root CONTRIBUTING.md now lists all five workflows that can run on a PR, with a "check you see → workflow" column. That mapping is the part your issue didn't ask for and is probably the most useful bit: check is i18n Coverage, doc-comments is Source Hygiene, linux-capture is Tools Python CI. Nothing on the PR page connects those, which is why an Android-only PR reads as though almost nothing ran.
docs/CONTRIBUTING.md had the worse error: it said android.yml was off. It's active — only app-build.yml is disabled_manually. That one costs a contributor real time, since it invites skipping local Android testing. Also corrected swift-packages being listed as "on every PR" when it's path-filtered.
The two files now own different things and cross-link, rather than keeping two tables that drift — which is how this happened.
One deliberate choice worth flagging, since it's your issue: the rewrite originally opened with "Five workflows…" and "four checks". Both were true, and both were the same shape as the sentence they replaced — a count in prose that goes stale while the table beneath it still looks right. That's how "Two workflows run on every PR" survived long enough to be reported. The lead now names the categories and defers to the table.
Every trigger, path filter, workflow state and job name was read from .github/workflows/ and gh workflow list, with job names re-derived by parsing each jobs: block rather than by indentation.
Leaving this open for you to close, in case the table still reads wrong from a first-time contributor's side — you're better placed to judge that than I am.
Thanks @ryanbr — closing. #1793 fully covers the original table error, and the docs/CONTRIBUTING.md claim that android.yml was off.
The job-name column is the part that would have saved a first-time (agent) contributor on an Android-only PR: check / doc-comments / linux-capture now map to the three always-on gates instead of looking like almost nothing ran.
Leaving the fork workflows out of that table is the right cut — they aren't the cheap PR gates this issue was about.
Activity
ryanbr commentedon Sep 1, 2026
Checked this against the workflow files and against real PR runs — you're right, and the problem is bigger than the root table. A docs-only PR would be welcome.
The root
CONTRIBUTING.mdclaim, verifiedIt says "Two GitHub Actions workflows run on every PR and push to
main" and lists Swift Packages CI and Android CI. Both halves are wrong, and in a way that's worth stating precisely: the two it names are the only two that are path-filtered, and it omits the three that genuinely have no path filter.pull_requesttriggerpaths:paths:paths:paths: Packages/**,Tools/Sleep*, …paths: android/**, …paths: Strand/**, …disabled_manuallyThe bigger problem:
docs/CONTRIBUTING.mdis wrong in a more damaging directionIts "What CI gates" section says:
android.ymlis active —gh workflow listreports it so, and itsbuild-and-testjob ran on every Android PR merged today (#1786, #1788, #1790). Onlyapp-build.ymlis disabled.That's worse than an undercount: it tells a contributor that the check most likely to catch their mistake doesn't run, so they skip testing locally and get a red PR they were told to expect green. The same section also lists
swift-packagesunder "on every PR", when it's path-filtered.The thing that actually traps a first-time contributor
The job names don't resemble the workflow names, so the table can't be used to interpret a PR's checks:
checkdoc-commentslinux-capturebuild-and-testtest (…)/tools (…)checkbeing i18n Coverage is genuinely unguessable. I misread these myself repeatedly before mapping them — an Android-only PR shows exactly four checks and looks like almost nothing ran, when in fact all three always-on workflows did. Worth a column in whatever table you write.One small thing
The
(#1770)citation for app-build being disabled is loose — #1770 is "Standard-HR persistence trace: Android twin, one parity claim, and a test no CI runs". It records a consequence of app-build being off rather than that fact itself, so it reads as the wrong reference even though it's related.Scope suggestion
Both files need it, and they disagree with each other as well as with reality — so it's worth deciding whether the root file keeps a summary at all or points at
docs/CONTRIBUTING.md. Two tables that drift are how this happened. Happy to review the PR.docs: describe the CI that actually runs (#1793)
ryanbr commentedon Sep 1, 2026
Done in #1793 — thanks @kvnloo, and the second error only surfaced because you questioned the first.
What landed:
CONTRIBUTING.mdnow lists all five workflows that can run on a PR, with a "check you see → workflow" column. That mapping is the part your issue didn't ask for and is probably the most useful bit:checkis i18n Coverage,doc-commentsis Source Hygiene,linux-captureis Tools Python CI. Nothing on the PR page connects those, which is why an Android-only PR reads as though almost nothing ran.docs/CONTRIBUTING.mdhad the worse error: it saidandroid.ymlwas off. It's active — onlyapp-build.ymlisdisabled_manually. That one costs a contributor real time, since it invites skipping local Android testing. Also correctedswift-packagesbeing listed as "on every PR" when it's path-filtered.One deliberate choice worth flagging, since it's your issue: the rewrite originally opened with "Five workflows…" and "four checks". Both were true, and both were the same shape as the sentence they replaced — a count in prose that goes stale while the table beneath it still looks right. That's how "Two workflows run on every PR" survived long enough to be reported. The lead now names the categories and defers to the table.
Every trigger, path filter, workflow state and job name was read from
.github/workflows/andgh workflow list, with job names re-derived by parsing eachjobs:block rather than by indentation.Leaving this open for you to close, in case the table still reads wrong from a first-time contributor's side — you're better placed to judge that than I am.
kvnloo commentedon Sep 1, 2026
Thanks @ryanbr — closing. #1793 fully covers the original table error, and the
docs/CONTRIBUTING.mdclaim thatandroid.ymlwas off.The job-name column is the part that would have saved a first-time (agent) contributor on an Android-only PR:
check/doc-comments/linux-capturenow map to the three always-on gates instead of looking like almost nothing ran.Leaving the fork workflows out of that table is the right cut — they aren't the cheap PR gates this issue was about.
docs: correct remaining Apple app CI coverage guidance
docs: correct remaining Apple app CI coverage guidance