Phases & Modules

Two strands, 29 modules. The browser strand (bi-*) removes the abstraction boundary between your code and the pixels; the framework strand (fw-*) rebuilds the runtimes that sit on top. They run in parallel, not in sequence — the framework strand is what fills the Chromium build's dead time — and they join at the cross-layer vertical traces.

The sibling project ../frontend-principal-journey/ covers application- and organisation-level frontend engineering. Two of its modules are hard prerequisites here, noted below.

Browser Internals · bi-00bi-16

Remove the abstraction boundary between your code and the pixels.

Two setups, not one. Phases 0–2 require no local Chromium build — source navigation, spec mapping, archaeology and tracing all work on a stock browser plus a checkout. Treating the build as a gate is the standard way this track stalls.

Phase 0 — Instrumentation · no build required

ModuleTitleBuild?Headline
bi-01Navigating Chromium Independentlyno8 timed drills; the deliverable is the query log, not the answers
bi-03HTML Parsingno76 tokenizer states, 21 insertion modes; 7 of 21 are tables

Gate 0 → 1: locate any Blink behaviour in ≤3 queries · state which process owns a subsystem from its path alone · read a Perfetto trace and name five pipeline events.

Phase 1 — Foundations · no build required

ModuleTitleHeadline
bi-02Architecture & the Process ModelSiteInfo / SiteInstance / BrowsingInstance / ProcessLock; why the principal is a site
bi-04DOM Internals & Object Lifetimeunified heap; Node/CSSValue/LayoutObject get typed heap spaces
bi-05Web IDL, V8 & the Binding Layer~0.5 MB of generated filenames; four costs of crossing

Phase 2 — Style · no build required

ModuleTitleHeadline
bi-06Chromium C++ for Frontend Engineersjust-in-time reference, not a course
bi-07The CSS Engine822 properties, 311 declare invalidate: — 34 layout-only, 95 layout+paint, 4 compositing

Phase 3 — Layout & Paint · build helpful

ModuleTitleHeadline
bi-08Layoutfour coordinate spaces; constraint-in / fragment-out makes results cacheable
bi-09Paint, Display Items & Property Treesa PaintChunk is display items sharing one property-tree state

Phase 4 — Compositor, Scheduling & Tooling · build required from bi-12

ModuleTitleHeadline
bi-10Compositor & GPUcomposited effects modify the active tree — no main thread needed
bi-11Blink Scheduling2 s gesture deferral · 5 min mobile freeze · timers only are throttleable
bi-12Debugging & Tracingtrace event names are greppable identifiers — the rung 3 ↔ rung 1 bridge

Phase 5 — Tests, Contribution & Synthesis · build required

ModuleTitleHeadline
bi-13Test Architecture & WPTTestExpectations is 9,418 lines; a bare [ Skip ] is forbidden
bi-14Contributing to Chromiumrungs 0–5; correct-per-spec is necessary and not sufficient
bi-15Cross-Layer Vertical Traces8 traces; the deliverable is the layer-skipping table
bi-16Capstone — Component to Pixelexplain setCount(count+1) through eight layers, twice

Framework Internals · fw-01fw-12

Build it, break it, then read the production source — never the other way round.

The strand runs in parallel with Track 2, not after it. It is what fills the Chromium build's dead time, and two of its modules have hard prerequisites in Track 2.

ModuleTitlePrerequisiteHeadline
fw-01mini-redux + reading Redux entirefirst, not last: the only library small enough to read end to end
fw-02mini-react I — elements → effectsbi-04one change in 200 items must cost ≤5 DOM ops
fw-03Reactivity: mini-vue + signalsfw-02build both back-to-back; the contrast is the content
fw-04mini-react II — deriving Fiberbi-11derive the work loop; the spec catches tearing
fw-05Vue-like Renderer & the Matrixfw-03the §47 matrix, including a Blink row
fw-06Template & JSX Compilersbi-03a wrong patch flag is a silent correctness bug
fw-07A Minimal Bundlerfw-06cache-invalidation, for the fourth time in the curriculum
fw-08A Client-Side Routerfw-02only the most recent navigation may commit
fw-09A Server-State Query Cachefw-08build every race deliberately
fw-10A Virtualized List Enginebi-08bi-10price what virtualization breaks, not just what it saves
fw-11Production Source Apprenticeshipall of the aboveclassify: essential / hardening / accretion
fw-12Testing Library, Automation & DevToolsfw-02a synthetic click ignores hit testing — the overlay experiment

Gate: for any UI operation, state which layers run and which are skipped — and defend it from mechanism rather than recall.


The eight patterns

Both tracks converge on the same eight structural findings. Each appears in both a C++ rendering engine and a JavaScript runtime, which is the evidence that they are properties of the problem rather than idioms of either. They are the exportable output of the whole curriculum, and they are enumerated in bi-16.