Skip to content

CONTRIBUTING.md CI table lists 2 workflows; repo has more #1789

Closed

Description

@kvnloo

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.

Activity

  1. ryanbr commented on Sep 1, 2026

    @ryanbr
    Owner

    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.

  2. ryanbr commented on Sep 1, 2026

    @ryanbr
    Owner

    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.

  3. kvnloo commented on Sep 1, 2026

    @kvnloo
    Author

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions