utils/.github/workflows
Krzysztof kuhy Rudnicki 98213cbc40
Some checks are pending
dependency freshness / dependencies on newest stable (push) Waiting to run
file length / file-length (push) Waiting to run
md-naming / markdown naming convention (push) Waiting to run
palette drift / palette (push) Waiting to run
shared gate tests / gate unit tests (push) Waiting to run
Check the toolchain versions CI actually installs, not just the ones declared
`.fvmrc` is a declaration nothing in this fleet reads. `subosito/flutter-action`
takes its own `flutter-version:`, and that pin is what the runner installs, so
the two drift in silence and the failure mode is the worst kind: green
locally, red in CI, with no diff to explain it.

kuhylog is the live case. Its runner is on Flutter **3.44.9**, which predates
the `@awaitNotRequired` annotation, so `unawaited(Navigator.push(...))` is
`unnecessary_unawaited` on 3.47.2 here and `discarded_futures` there -- the two
SDKs demand opposite code and CI went red on a commit that is clean locally.
The fleet is spread across 3.44.6, 3.44.8, 3.47.0 and 3.47.1 with no one
tracking it.

So a workflow's `flutter-version:` / `node-version:` is now a dependency like
any other, judged against the same latest stable. That needs no separate
"these must agree" rule: two values both required to equal latest already
agree. A channel name and a `${{ }}` expression are skipped -- one is not a
version, the other resolves at run time and guessing is worse than silence.

Found real drift on its first run: both TypeScript workflows here pinned
`node-version: 24`, a floating major that lets two runs of the same commit
install different Node. Now 24.20.0.

321 tests, 100% branch coverage on every production module.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CRykabMwPgDzFHcARoqpaK
2026-08-28 15:04:00 +02:00
..
crdt-sync-dart-tests.yml crdt_sync_dart: latest stable + exact pins, 100% coverage, CI for both crdt_sync packages 2026-08-28 12:32:24 +02:00
crdt-sync-flutter-tests.yml crdt_sync_dart: latest stable + exact pins, 100% coverage, CI for both crdt_sync packages 2026-08-28 12:32:24 +02:00
crdt-sync-precommit.yml Root scaffold: README, LICENSE, per-subdirectory CI for utils monorepo 2026-07-10 13:02:20 +02:00
crdt-sync-tests.yml Root scaffold: README, LICENSE, per-subdirectory CI for utils monorepo 2026-07-10 13:02:20 +02:00
dependency-freshness.yml Enforce dependency freshness in utils' own CI 2026-08-28 13:51:28 +02:00
design-system-tests.yml Wire design_system into CI, and drop EmptyState's speculative action slot 2026-08-14 23:08:59 +02:00
file-length.yml CI: fail the build on any file over 250 lines 2026-08-22 15:43:22 +02:00
gatelock-precommit.yml Let the gatelock workflows trigger on their own files 2026-08-03 18:36:47 +02:00
gatelock-tests.yml Let the gatelock workflows trigger on their own files 2026-08-03 18:36:47 +02:00
github-device-auth-tests.yml github_device_auth: extract the GitHub device flow from four apps 2026-08-15 15:57:19 +02:00
md-naming.yml Add the shared markdown-naming gate and migrate utils' own docs 2026-08-24 15:53:12 +02:00
palette-drift.yml unified-design-system: check one palette across all four token sources 2026-08-15 15:27:17 +02:00
shared-gates-tests.yml Add the shared dependency-freshness gate 2026-08-28 13:00:35 +02:00
sync-settings-ui-tests.yml Add sync_settings_ui: shared Firebase-only sync settings screen 2026-08-12 23:10:17 +02:00
ts-core-tests.yml Check the toolchain versions CI actually installs, not just the ones declared 2026-08-28 15:04:00 +02:00
web-ui-tests.yml Check the toolchain versions CI actually installs, not just the ones declared 2026-08-28 15:04:00 +02:00