Skip to content

ci: main runs to a verdict, and staticcheck reads the filter every other tier reads (GDK-2003, GDK-2044) - #109

Merged
midagedev merged 1 commit into
mainfrom
gdk2003-ci
Sep 29, 2026
Merged

midagedev merged 1 commit into
mainfrom
gdk2003-ci

Conversation

@midagedev

Copy link
Copy Markdown
Owner

Three things on the billable half of CI, plus one the review found.

main runs to a verdict (GDK-2003). cancel-in-progress applied to every ref, so a push that overtook another left a main commit with no verdict at all. Only PR heads cancel now.

Staticcheck reads the filter (GDK-2003). It was the last inline input filter in the workflow, and its regex carried ^desktop/ — one line of desktop/README.md woke the 335 s GOOS matrix. It uses tools/ci-filter.sh now, under its own subject rather than go: tools/staticcheck.sh analyses the desktop module too, and the go table carves desktop/ out, so reusing it would have skipped a desktop/main.go push and hidden a Go change from a gate. ci-filter-test.sh pins that inverse hardest.

The pinned binary is cached (GDK-2003). Keyed on (version, OS, arch, Go toolchain), no restore-keys: a prefix hit could restore a binary built by another toolchain, and a miss is today's behaviour.

The mobile subject had rotted the other way (GDK-2044). It named lib/i18n/ and lib/terminal/ while the phone imports 24 modules out of web/src/lib — view-config, issue-group, keyboard, adf, person-match and the rest. A push touching only web/src/lib/view-config.ts skipped the Mobile job over a file the phone reads: CI green over a broken phone, the one direction a filter must never fail in. The row is the directory now, and ci-filter-test.sh derives the phone's import set from its own source and fails on anything the table misses — an enumeration is what rotted the first time.

FAIL-first, on the pre-change tables: desktop/README.md ran staticcheck; ten real web/ imports were uncovered by the mobile subject.

Gates: ci-filter-test.sh, staticcheck.sh --self-test, audit-test.sh, doc-checks.sh, YAML parse — all green. This is a PR because the change is the workflow itself; the verdict has to land on the branch.

🤖 Generated with Claude Code

…her tier reads (GDK-2003, GDK-2044)

Three things, all on the billable half.

cancel-in-progress applied to every ref, so a push that overtook another
left a main commit with no verdict at all — "a push is not the end, CI
green is the end" broken at the source. Only PR heads cancel now; main and
workflow_dispatch run to a conclusion.

The staticcheck job was the last inline input filter in this file, and its
regex carried ^desktop/, so one line of desktop/README.md woke the 335 s
GOOS matrix. It reads tools/ci-filter.sh now — but under its own subject,
not `go`: tools/staticcheck.sh analyses the desktop module too, and the go
table carves desktop/ out, so reusing it would have skipped a
desktop/main.go push and hidden a Go change from a gate. That inverse is
the row the test pins hardest. The pinned binary is a pure function of
(version, OS, arch, Go toolchain) and is cached whole, with no
restore-keys: a prefix hit could restore a binary built by another
toolchain, and the safe failure here is a miss, which is today's behaviour.

The mobile subject's web rows had rotted the other way (GDK-2044). They
named lib/i18n/ and lib/terminal/ while the phone imports 24 modules out
of web/src/lib — view-config, issue-group, keyboard, adf, person-match and
the rest — so a push touching only web/src/lib/view-config.ts skipped the
Mobile job over a file the phone reads. That is the one direction a filter
must never fail in: CI green over a broken phone. The row is the directory
now, and ci-filter-test.sh derives the phone's import set from its own
source and fails on anything the table misses, so narrowing it later is
red rather than silent. An enumeration is what rotted the first time.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@midagedev
midagedev merged commit d42c54c into main Sep 29, 2026
13 checks passed
@midagedev

Copy link
Copy Markdown
Owner Author

Landed on main as d42c54c (fast-forward). Closing the PR — from here this repo's work goes straight to main.

AI-authored comment.

This branch was successfully deployed

1 active deployment
github-pages — d42c54ca Deployed Sep 29, 2026 by midagedev via Deploy to GitHub Pages #1373
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant