Flagging, not building — recording a CI-shape weakness found the hard way during #78 close-out.
What happened
PR #91's first push failed Desktop Core at the Desktop lint and format step (just desktop-check), because desktop/scripts/check-file-sizes.mjs rejected a file that grew past the 1000-line ratchet.
just desktop-check runs biome check && pnpm check:file-sizes && pnpm check:px-text && pnpm check:pubkey-truncation. Because it is a single early step and the job is sequential, its failure skipped:
Desktop unit tests
Desktop build
Desktop Tauri clippy
Desktop Tauri check
Desktop Tauri tests
Desktop Tauri compiled-flag verification
So a line-count violation suppressed every Rust correctness signal on a change that was entirely Rust. The job reported one red X, which is correct — but the failure mode is that a stylistic gate silently determines whether the correctness gates run at all.
Why it matters beyond that one PR
The reviewer's phrasing is the right summary: green wasn't proving what it claimed. In the other direction, a PR that passes the ratchet gets its Rust steps run; a PR that trips it gets none — and the reviewer/author sees a single failing job either way and naturally fixes the named thing without noticing the coverage hole underneath.
That is also how the #92 and #93 gaps stayed invisible: it is easy to believe a job name implies coverage it does not have.
Not proposing to build anything
Per the August posture this is a FLAG. Recording the options so the decision is available later, not asking for work now:
- Run the file-size ratchet as its own small job (or a
continue-on-error step with a separate gate), so a line-count violation cannot mask Rust results.
- Or reorder
Desktop Core so the Rust steps run before the stylistic checks, with the ratchet still failing the job.
- Or split
just desktop-check in CI: biome/px-text/pubkey-truncation in the lint job, the ratchet as an independent required check.
Option 1 is the smallest and keeps the ratchet's intent (it should absolutely still block merge — it caught a real thin-adapter regression in #91; the adapter's largest file is now 981 lines because the ratchet did its job).
Context: #92, #93, PR #91.
Flagging, not building — recording a CI-shape weakness found the hard way during #78 close-out.
What happened
PR #91's first push failed
Desktop Coreat theDesktop lint and formatstep (just desktop-check), becausedesktop/scripts/check-file-sizes.mjsrejected a file that grew past the 1000-line ratchet.just desktop-checkrunsbiome check && pnpm check:file-sizes && pnpm check:px-text && pnpm check:pubkey-truncation. Because it is a single early step and the job is sequential, its failure skipped:So a line-count violation suppressed every Rust correctness signal on a change that was entirely Rust. The job reported one red X, which is correct — but the failure mode is that a stylistic gate silently determines whether the correctness gates run at all.
Why it matters beyond that one PR
The reviewer's phrasing is the right summary: green wasn't proving what it claimed. In the other direction, a PR that passes the ratchet gets its Rust steps run; a PR that trips it gets none — and the reviewer/author sees a single failing job either way and naturally fixes the named thing without noticing the coverage hole underneath.
That is also how the #92 and #93 gaps stayed invisible: it is easy to believe a job name implies coverage it does not have.
Not proposing to build anything
Per the August posture this is a FLAG. Recording the options so the decision is available later, not asking for work now:
continue-on-errorstep with a separate gate), so a line-count violation cannot mask Rust results.Desktop Coreso the Rust steps run before the stylistic checks, with the ratchet still failing the job.just desktop-checkin CI:biome/px-text/pubkey-truncationin the lint job, the ratchet as an independent required check.Option 1 is the smallest and keeps the ratchet's intent (it should absolutely still block merge — it caught a real thin-adapter regression in #91; the adapter's largest file is now 981 lines because the ratchet did its job).
Context: #92, #93, PR #91.