Match CI to the local SDK, format the tree once, and gate it #3
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "chore/match-ci-sdk-and-format"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Housekeeping, no behaviour change. Three commits, each reviewable on its own.
Why
dart format's default style changed between SDK releases, and this tree predates it. Anyone formatting a file they touch rewrites the whole file, so the choice has been "reformat everything as a rider on a feature PR" or "never format". PR #2 hit this on all five review rounds. This does it once, deliberately, and adds the check that stops it recurring.The commits
d31ff91— pin CI to 3.47.3. CI pinned 3.47.0; this machine runs 3.47.3.pubspec.yaml's floor andpubspec.lock's recorded constraint move with it. No package versions change — the lockfile diff is one line.031f46b—dart format lib/ test/. Mechanical, no hand edits. 32 of 39 files move.61d42e4— gate it. CI runsdart format --output=none --set-exit-if-changed lib/ test/next to the existing lockfile guard, and CLAUDE.md's definition of done lists it so the next contributor runs it before pushing.Exercised
dart format --set-exit-if-changed lib/ test/— clean (0 changed).flutter analyze— no issues.flutter test— 100/100 pass.dart formatadds and removes trailing commas, which are semantically inert). Analyze and the full suite passing is the substantive check.A correction worth recording
On PR #2 I reported that
flutter pub gethad rewrittenpubspec.lockacross ~30 packages, and cited it as evidence of SDK divergence. The drift in the working tree was real and I reverted it, but plainflutter pub getdoes not reproduce it on 3.47.3 — it only records the constraint change. So the cause of that particular rewrite is unconfirmed and was not what I claimed. The formatting divergence is real and reproducible; the lockfile half of that diagnosis was overstated.Not exercised
Nothing here touches runtime behaviour, so there is no manual speaker check. The one thing CI cannot prove is the pin itself: if the owner's other machines run a different Flutter, commit 3's gate will fail there until they match 3.47.3. That is the intended trade — loud failure over silent drift — but it is a real constraint on anyone else working in this repo.
🤖 Generated with Claude Code
CI pipeline docker and hermes agent docker are both also currently bumped
🔮 fufu~ Jibril reviewed your code!
A formatting PR! A thousand lines of whitespace and not one of them hiding a thought — usually that's where bugs go to sleep, so I checked every bed~ ♡ Three commits, each doing exactly one thing, and a PR body that corrects its own earlier diagnosis? Oh, honesty like that makes my wings flutter.
Verdict: ✅ Looks good to me~
I didn't take "mechanical" on faith — I took it apart:
d31ff91touches onlyci.yml+pubspec.yaml+pubspec.lock;031f46btouches only the 32.dartfiles;61d42e4touches onlyci.yml+CLAUDE.md. No riders anywhere.031f46bis byte-identical to its parent once whitespace and commas are stripped — 0 of 32 drift.dart format's trailing-comma churn and nothing else, precisely as claimed.sdks.flutter: >=3.47.0 → >=3.47.3, zero package versions moved.flutter pub get→ tree clean;dart format --output=none --set-exit-if-changed lib/ test/→ 0 changed;flutter analyze→ No issues found;flutter test→ 100/100 pass.dart formatwants to change 6 files and exits 1 — including files this PR didn't reformat. Andpub geton 3.47.0 against the new floor fails loudly with "Try using the Flutter SDK version: 3.47.3" instead of quietly rewriting the lockfile. The fail-loud design isn't a story; I watched it fire~flutter pub getleavespubspec.lockuntouched — confirming the retraction of the PR #2 "pub get rewrites ~30 packages" diagnosis. Recording that in public takes spine. I like spine. ♪3.47.0left in the tree is the historical CHANGELOG mention, correctly untouched as history.💡 Little ideas (non-blocking)~
pubspec.yamlnow requires Flutter ≥ 3.47.0, so running the tools no longer dirties the working tree…"), and CLAUDE.md's definition of done asks for an Unreleased entry per change. This PR raises the floor to 3.47.3, sweeps the format once, and adds a CI gate — all three worth one short Developer-facing bullet so the next archaeologist isn't left comparingci.ymlwith a stale changelog. Fix: a single entry like "CI pins Flutter 3.47.3, the tree isdart format-clean, and CI now fails on formatting drift."✅ What I liked~
dart format lib/ test/ # CI fails if this changes anything— the gate and the docs moved together. Consistency~ ♡Merge it, then format your victory parade. Fufu~
Automated review by Jibril · 2026-09-11
CI/CD: no visible status for head
61d42e4(no bot/coverage comments) · Local checks: full chain reproduced at pinned SDK 3.47.3 — pub get clean-tree ✓, format 0 changed ✓, analyze clean ✓, 100/100 tests ✓; gate cross-checked on 3.47.3 vs 3.47.0 (6 files would drift → exit 1)