Commit bcfd0c8
committed
fix(ci): the host-pi canary reported a refactor as drift, in the wrong job (issue #102)
The canary's first run went red against pi 0.84.1, and it was wrong twice
over. Both faults were mine, introduced with the canary itself.
The drift was not real. 0.84.1 extracted `readPiManifest` into its own
module, `core/pi-manifest.js`, without changing what it means: it still
returns null when a package has no `pi` key, `collectPackageResources` still
falls through to the convention-dir loop, and RESOURCE_FIELDS is still the
same four names. So the behaviour `host-pi.mjs` depends on is intact at
latest. What broke was a needle pinned to the old function body, which is an
incidental line rather than the behaviour it stood for. The needle now
anchors the fallthrough itself (`let hasAnyDir = false;`), which is present
in both 0.80.7 and 0.84.1 and is the thing the mirror actually relies on.
Verified by running the canary against both installs: 13 of 13 needles match
each.
A canary that reports refactors as breakage is one people stop reading, so
this is recorded in OQ-018 rather than quietly corrected. The row already
anticipated the inverse failure (needles pass, behaviour moved); this is the
same family from the other side, and the row now says to check the needle
before believing the verdict.
The second fault was the signal's shape. The step lived on
`admin-extension-canary`, so a run named "the admin extension survives
latest pi" went red for a reason with nothing to do with the admin
extension, and the admin half had in fact passed. It is now its own job with
its own name and failure protocol, which also means neither canary can hide
the other's result.
And the exit code contradicted the message. The script said "ADVANCE
WARNING, not a build break" and then exited 1, which is a build break.
Drift is now a `::warning::` on a green job; a red run means the canary
could not execute at all. The two canaries differ in kind and the script
header now says how: a red admin canary means the PUBLISHED admin may
already be broken for anyone installing it against latest pi, because it
declares a `*` peer, while drift here means a FUTURE bump needs work and
nothing shipped is broken, because the worker pins pi and
host-pi.pinned.test.mjs gates that pin as a hard failure. Failing every
unrelated PR until someone does that future work buys nothing and costs the
credibility of the check.
Also added `.github/scripts/host-pi-canary.mjs` to both path filters, which
I had missed: a change to the canary did not trigger the workflow that runs
it.
No behaviour change to the worker. OQ-019 UNCHANGED, checked.
Signed-off-by: Rob Boerman <robboerman@live.nl>1 parent 51ee189 commit bcfd0c8
4 files changed
Lines changed: 80 additions & 18 deletions
File tree
- .github
- scripts
- workflows
- specs
- worker/src
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
16 | | - | |
17 | | - | |
18 | | - | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
19 | 30 | | |
20 | 31 | | |
21 | 32 | | |
| |||
30 | 41 | | |
31 | 42 | | |
32 | 43 | | |
33 | | - | |
| 44 | + | |
34 | 45 | | |
35 | 46 | | |
36 | 47 | | |
| |||
52 | 63 | | |
53 | 64 | | |
54 | 65 | | |
55 | | - | |
56 | | - | |
57 | | - | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
58 | 69 | | |
59 | 70 | | |
60 | | - | |
| 71 | + | |
| 72 | + | |
61 | 73 | | |
62 | | - | |
63 | | - | |
| 74 | + | |
| 75 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
| 30 | + | |
30 | 31 | | |
31 | 32 | | |
32 | 33 | | |
| |||
39 | 40 | | |
40 | 41 | | |
41 | 42 | | |
| 43 | + | |
42 | 44 | | |
43 | 45 | | |
44 | 46 | | |
| |||
460 | 462 | | |
461 | 463 | | |
462 | 464 | | |
463 | | - | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
464 | 494 | | |
465 | | - | |
466 | | - | |
467 | | - | |
468 | | - | |
469 | | - | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
631 | 631 | | |
632 | 632 | | |
633 | 633 | | |
| 634 | + | |
| 635 | + | |
| 636 | + | |
| 637 | + | |
| 638 | + | |
| 639 | + | |
| 640 | + | |
| 641 | + | |
634 | 642 | | |
635 | 643 | | |
636 | 644 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
55 | 55 | | |
56 | 56 | | |
57 | 57 | | |
58 | | - | |
59 | | - | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
60 | 64 | | |
61 | 65 | | |
62 | 66 | | |
| |||
0 commit comments