git.lucas.co / cce-compositor
Wayland compositor (wlroots)
git clone https://git.lucas.co/cce-compositor.git

commit0a5dfb44aa1e823464d54db8a38fb513296e53e4
parent2d3ffc8529
authorLucas Galante <[email protected]>
date2026-08-31 08:29
docs: the real reason cce-browser is cheap to sweep

98a390a put cce-browser back into the cce-ui dependent sweep, rightly, but
on a wrong account: that it rebuilds in seconds "since it moved to the
crates.io servo package", the old exclusion dating from a vendored engine.
cce-browser used the crates.io servo package from its first commit and
never vendored anything, and that build cost minutes and 177 MB regardless
— which is precisely why a featureless sweep on 2026-08-30 could rebuild
it as a Servo browser and silently replace the user's installed WebKit
one. The wrong rationale and the incident are the same mistake seen twice.

The true mechanism, now recorded: as of 2026-08-30 the crate's default
build is WPE WebKit against the system libWPEWebKit — seconds, ~14 MB, no
Servo compiled at all (cce-browser@dc78c61). The Servo backend survives
behind --no-default-features --features servo and remains the expensive
one. And the general lesson for this guide's audience, since it was
learned here: defaults are what sweeps build, so an opt-in variant of a
binary does not survive a multi-session workspace.

Co-Authored-By: Claude Opus 5 <[email protected]>

 WORKSPACE.md | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/WORKSPACE.md b/WORKSPACE.md
index 57d60a8..3ccc384 100644
--- a/WORKSPACE.md
+++ b/WORKSPACE.md
@@ -159,10 +159,17 @@ features and invalidates crates, as below), then `ccebuild install
 --no-build <crate>` for each. Verify by looking *inside* the installed binary for
 something the change introduced — `strings ~/.local/bin/<crate> | grep -q
 '<new log string>'` — rather than trusting that the build ran. (`cce-browser` belongs in the sweep
-too these days: since it moved to the crates.io `servo 0.4` package —
-user-confirmed 2026-08-29 — it rebuilds in seconds. The old rule to leave it
-out dated from when it vendored the Servo engine, which cost more than the
-rest of the workspace combined.)
+too, but for a different reason than previously recorded here: since
+2026-08-30 its **default build is WPE WebKit** against the system
+`libWPEWebKit` — seconds, ~14 MB, no Servo compiled at all. The old
+leave-it-out rule dated from Servo being the default engine — always the
+crates.io package, never vendored — which cost more than the rest of the
+workspace combined; that backend still exists behind `--no-default-features
+--features servo` and is still that expensive, so only build it deliberately.
+The default flip is itself a lesson for sweeps: while WPE was opt-in, a
+featureless sweep rebuild silently reverted the installed browser to the
+wrong engine. Defaults are what sweeps build; an opt-in variant of a binary
+does not survive one.)
 
 **A hit proves freshness; a miss proves nothing.** Not every string literal in
 the source survives into the binary, and the two cases are not distinguishable