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.
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
buildand
test, and #26 requires those literal strings onmain. A matrix producesone check run per leg, named
build (windows-latest)and so on, so turning oneleg 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
buildandtestchecks run on, each with the reasonit 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
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.