Skip to content

Desktop Core: a file-size ratchet failure skips every Rust step, so "green" can mean "never ran" #96

Description

@100yenadmin

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:

  1. 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.
  2. Or reorder Desktop Core so the Rust steps run before the stylistic checks, with the ratchet still failing the job.
  3. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions