Repository navigation
[roadmap] Stage 9: Endgame: the browser and every dependency #4858
Description
A goal of the ROADMAP tab (app.t27.ai/queen, key m): the whole stack rewritten in .t27, generated to its target (trios CLAUDE.md, law L0). Part of #1219.
Stage 9: Endgame: the browser and every dependency
Stage 2 rewrites only the part of BrowserOS that is deployed as api.t27.ai. This goal covers everything the stack runs that is still in another language once stages 1-8 are done:
- the browser itself;
- every third-party library.
It is the top row of the comb and opens after stage 8.
- Repositories: gHashTag/BrowserOS (the whole repository,
dev), upstream Chromium with the repositories its DEPS pins, and the third-party packages locked by each deployed service. - Languages to rewrite: C++, C, Java, Objective-C, TypeScript, JavaScript, Go, Rust (the dependencies).
- Measured size today: 1,341.7 MB for Chromium
src+ V8 + Skia (below). That is seven times the 192.2 MB the stack count holds for everything else. - Target: t27c gen-rust, gen-c.
What is measured (2026-09-27)
All sizes below are counted by the rules in trinity apps/website/scripts/roadmap-stack.mjs: vendored trees, build/, third_party/ and lockfiles are skipped. Config, Docker and Make files are left out of the totals.
BrowserOS dev at 0934096 (2026-09-20): 5.48 MB of source.
| Area | Size | Main languages |
|---|---|---|
packages/browseros-agent |
4.24 MB | TypeScript, Go |
packages/browseros/chromium_patches |
1.02 MB | C++ 0.69, C headers 0.25, Objective-C 0.05 |
packages/browseros/tools |
0.13 MB | Go |
- Most of the agent is already stage 2.
- 1,067 of the 1,354 files in
packages/browseros-agenthave the same path intrios/agent-serveronfix/queen-worker-provider-and-prompt-size. - 1,007 of them are byte-identical.
- 1,067 of the 1,354 files in
- What BrowserOS itself owns of the browser is the 343 files under
chromium_patches/.
The browser: Chromium 146.0.7680.31. packages/browseros/CHROMIUM_VERSION pins this version, and BrowserOS's BASE_COMMIT 4d3225104176d is that tag's commit. The engine was read from the GitHub mirrors (github.com/chromium/chromium, v8/v8 and google/skia) at the commits Chromium pins:
| Part | Commit | By the rules | Main languages (by the rules) | Every tracked file with a language |
|---|---|---|---|---|
Chromium src |
4d32251 (tag 146.0.7680.31) |
1,144.7 MB | C++ 676.6, C 173.4, Java 101.6, Objective-C 55.3, TypeScript 52.5, HTML 28.7, Python 21.5, JavaScript 19.0 | 1,878.6 MB |
| V8 | 0a35ee1 (14.6.202.6) |
145.6 MB | C++ 78.5, JavaScript 39.3, C 25.4 | 147.1 MB |
| Skia | 9022820 |
51.4 MB | C++ 38.1, C 9.6 | 53.0 MB |
| Total | 1,341.7 MB | 2,078.7 MB |
- Where Chromium's bytes are, by the rules:
chrome/406 MB;components/187 MB;content/98 MB;ui/63 MB;ash/62 MB;ios/56 MB;net/36 MB;media/34 MB.
- Tests are a large share. First-party test paths are 481.2 MB of Chromium's 1,878.6 MB, and 74.9 MB of V8's 147.1 MB.
- Blink is not in the 1,341.7 MB. It is Chromium's own engine, but it lives under
third_party/blink, which the rules skip.- 132.4 MB outside its tests (C++ 97.3, C 28.3);
- 282.0 MB of web tests.
- Chromium
srcpins 260 other repositories as DEPS (gitlinks in its tree). Only V8 and Skia are measured.- Roughly 60 of them are Google-internal or branding data, going by their paths (
internal,clank,signing_keys,google_chrome). They are not fetched by a public checkout.
- Roughly 60 of them are Google-internal or branding data, going by their paths (
- Not counted anywhere: assets with no language. The largest are PNG 552 MB,
.xtbtranslations 379 MB and.tflitemodels 159 MB.
Third-party packages, counted from the lockfiles of what runs today. These are package counts. Their bytes are not measured.
| What runs | Lockfile | Third-party packages |
|---|---|---|
| api.t27.ai | BrowserOS trios/agent-server/bun.lock + 3 go.sum @ c25e1b0 |
2,099 npm names (2,508 name@version), 35 Go modules |
| the board | trinity apps/website/bun.lock @ 45e3c9f |
222 npm names |
| t27c | t27 Cargo.lock + bootstrap/Cargo.lock @ 5793118 |
386 + 239 crates |
| trios | trios Cargo.lock @ 8b229e9 |
591 crates |
| union | 2,187 npm names, 650 crate names, 35 Go modules |
What has to be decided before it is worked
- The dependency count is not fixed. It is what stages 2-7 leave behind.
- Porting api.t27.ai to .t27 → gen-rust removes its 2,099 npm packages and adds whatever crates the generated Rust needs.
- So this goal's list is re-measured after each stage, not rewritten from today's list.
- The seed. L0 names
t27cas a hand-written Rust exception, so its 239 bootstrap crates are the seed's dependencies. Do they fall under the seed exception, or are they endgame work? - The browser engine. t27c has gen-rust, gen-c and gen-verilog. It has no C++ target and no interface target (see [roadmap] Stage 8: Interfaces: the open question #4550). The measured engine is 1,341.7 MB, most of it C++, so there are two ways forward:
- a target for C++ interop, so the engine can be rewritten component by component;
- a documented exception for upstream Chromium, which keeps only the 343 patched files as ours.
- What is still unmeasured:
- the other 258 DEPS repositories;
- the bytes of the npm, crate and Go dependency set.
How this goal is worked
This issue is a GOAL, not a bee task. It has no Boundary on purpose, so the Queen does not dispatch it.
- The work is filed as one issue per file or module. Each has its own Boundary, Given/When/Then scenario and measurable requirements, in the shape of the existing
Port tools/<file>.py ... to specs/port/...issues. - The roadmap feeder (
tools/queen/feed_roadmap.py, feat(queen): feed the swarm from the roadmap, with a brief that says what the game is #4855) indexes this stage as refused. It files nothing until stage 8 is done and the questions above are answered. - The ROADMAP tab reads the 1,341.7 MB from
goals.jsonmeasured. That is the endgame boss's HP. - This goal closes when either condition holds:
- the lockfiles of the deployed services list only packages generated from .t27, and the browser's languages are gone from the count;
- what remains is an explicit, documented exception.
Activity
feat(queen): index stage 9, the endgame, as goal #4858
feat(website): stage 9 on the ROADMAP tab links its goal, t27#4858
docs(queen): the endgame is measured: Chromium 146, V8 and Skia
feat(queen): feed the swarm from the roadmap, with a brief that says …