Lint the commits being pushed and scope overlay failures per sensor

The pre-push gate linted only the dirty tree, so the commits about to be pushed went
unchecked; and every failed overlay projection was sticky, which cost a finger result its
overlay over one bad frame while box results were retried nowhere. gate.ps1 now takes
-LintBase (default origin/main, exit 2 on an unknown ref), the projector declares whether
its own failures are permanent, and serve_stored_view decides before it sets the view.
Verified with gate.ps1 (PASS: 569 studio + 485 shared tests, 632 ui_check checks) and the
two round-2 red samples kept in scratch.
This commit is contained in:
ykcheungab
2026-10-18 21:17:03 +08:00
parent 0998009ec3
commit c37efd7a44
9 changed files with 648 additions and 260 deletions
+5
View File
@@ -125,6 +125,11 @@ shared suite, and `ui_check.py`; writes each one's output to
`tools/skip_budget.txt`, and zero findings anywhere. It exits 0 only when all of
that holds.
The lint step compares against a commit range, not only the dirty tree: `-LintBase <ref>`
defaults to `origin/main`, so a pre-push run checks every commit about to be pushed.
A ref that does not resolve is a configuration error (exit 2); the gate never quietly
falls back to linting uncommitted files only.
The **gate platform is Windows**: the suites render real Qt widgets offscreen, and two
checks are platform-sensitive ([`docs/test-repair-plan.zh.md`](docs/test-repair-plan.zh.md)
§3 #11 and #13), so a green Linux run is not the same statement.