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
Commit ede5b60
Browse filesBrowse the repository at this point in the historyBrowse files
fix(ci): a gate earns credit by running, so if: must be ruled on
Round 9 put `if:` in the step digest, which makes an unapproved `if: false`
fail against the old baseline. Round 10 is that this is not enough: the
baseline is GENERATED, so `--update` records the new digest and the gate is
credited again. Where credit is decided cannot be a generated file.
`GATE_CONDITIONS` is hand-written and says, per exact condition, whether a
step guarded by it counts as running. Undeclared earns nothing, so `if: false`
unowns whatever it guarded no matter how many times the baseline is
regenerated. Six conditions cover the 19 conditional gate steps in the tree;
the other 51 are unconditional and need nothing.
Two of the six are declared as NOT crediting, which is the honest reading:
`failure()` guards the mutation lanes' envelope recorders, which run only
after the lane has already failed, and `env.IOS_UDID != ''` guards a suite
that runs only when a repository variable names an attached device. The first
costs nothing — every id it names is also invoked unconditionally. The second
leaves `replay-ios-device` with no owner this tree can prove, so it is named
in `UNPROVABLE_OWNERS` with its reason and reported separately from the wired
count instead of being folded into it.
A conditional `uses:` guards everything the action reaches, and a `uses:` step
runs no shell of its own, so no digest can carry it; the caller's condition is
attached to the gate sighting directly.
Verified by running the reported attack end to end against the real tree: set
the Apple runner build step to `if: false`, run `--update`, and the audit
still fails four ways — `owned`, `path-coverage`, `condition` and `inert`.
Four checked-in regressions, including the post-regeneration `covered()`
assertion round 10 asked for, and an ablation proving every crediting
condition is load-bearing.
70 gate tests. Manifest, lint, typecheck, format, layering, depgraph,
production-exports and fallow green locally; baseline unchanged at 90 entries.
0 commit comments