Skip to content

Decide which platforms the gate builds and tests on, and name what no run covers #113

Description

@iderex

The clients this core is written for run on Android, on iOS, on a desktop and on
a television. A gate that builds and tests on one operating system says the core
works on that one, and the first report from a platform nothing built for arrives
from a person who was not looking for it.

Which runners exist, what a second leg costs, and whether cross-compiling proves
anything at all depend on the language answer in entry 2 of #1. So the set is
decided here once that answer is in, rather than assumed by whoever writes the
first workflow.

There is a second reason this issue exists, and it is a defect in the plan rather
than in the code. #15 and #16 require the check-run names to be exactly build
and test, and #26 requires those literal strings on main. A matrix produces
one check run per leg, named build (windows-latest) and so on, so turning one
leg into three renames every required check and silently detaches the ruleset
from what it was requiring. That has to be decided before #26 writes the names
down, not afterwards.

What this produces

The set of platforms the build and test checks run on, each with the reason
it is there rather than a list that grew.

The platforms nothing covers, named in the same place, so that a client author
reads what was not tested instead of assuming the silence means it passed.

What a green run on one platform does and does not say about another, which is a
different statement for a pure library than for one with a per-target binding
layer.

The shape the check-run names take under the answer, and whether #26 requires the
matrix legs individually or requires one aggregating check whose own name does
not move. Either is defensible and they fail differently: individual names catch
a leg that vanishes, an aggregate survives adding a platform without a ruleset
edit.

The cost, measured rather than guessed. Every leg is wall-clock on every pull
request, and a gate slow enough to work around is a gate people work around.

Done when

The platform set and the reason for each entry are recorded, the excluded
platforms are named where a client author reads them, and the check names the
answer produces are listed by

gh api repos/Flowfin/core/commits/main/check-runs --jq '.check_runs[].name'

with the measured wall-clock cost of the added legs published next to the command
that produced it. #26 takes its required names from this issue. Blocked on entry
2 of #1, and on #11, #15 and #16.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions