Curriculum Map, Dependency Graph & Phase Plan
Derived from
frontend-principal-engineering.md(source of truth) andbrowser-framework-internals.md(depth track). This file is navigation, not specification. If it conflicts with the spec files, the spec files win.
1. The map: 46 spec areas → 8 clusters
The spec lists 46 numbered areas plus failure case studies, capstones, heuristics and AI rules. Studied in spec order they look like 46 independent subjects. They are not. They collapse into 8 clusters with very different dependency behaviour.
| Cluster | Spec areas | What it actually is | Dependency behaviour |
|---|---|---|---|
| A. Platform substrate | 1, 2, 3, 4, 10 | JS runtime, browser architecture, HTML, CSS, networking | Root. Nearly everything depends on it. Almost nothing depends on the rest. |
| B. Framework mechanics | 5, 6, 40 | React internals, framework comparison, UI algorithms | Depends on A. Gates C and parts of D. |
| C. Architecture & data | 7, 8, 9, 19, 31 | App architecture, state, API integration, unhappy path, rendering architectures | Depends on A + B. Gates E, F, G. |
| D. Quality attributes | 11, 12, 13, 36, 37, 38, 39, 41 | Performance, a11y, security, i18n, mobile, workers, WASM, large-scale UI | Depends on A; deepens with C. Mostly parallelisable within the cluster. |
| E. Quality engineering | 14, 15, 16, 17, 18, 25 | Test strategy through org-wide quality policy | Needs a real system (C) to be worth testing. 25 needs all of 14–18. |
| F. AI-assisted engineering | 20, 21, 22, 23, 24 | Agent workflows, test gen, edge-case discovery, exploratory testing, review | Spine, not a phase. Runs continuously from Phase 1. Quality gated by your own expertise. |
| G. Platform & delivery | 26, 27, 28, 29, 30, 32, 33, 34, 35 | Design systems, platform eng, build tooling, monorepos, microfrontends, observability, reliability, CI/CD, release | Depends on C + D + E. This is where Staff→Principal happens. |
| H. Principal judgment | 42, 43, 44, 45, 46 + case studies + capstones + heuristics | ADRs, decision-making, debt, migrations, principal skills | Depends on having lived A–G. Cannot be front-loaded honestly. |
The three things that are not clusters
- Failure case studies (12 listed incidents) — these are assessments, not content. Each one is scheduled against the phase that gives you the tools to solve it. See §5.
- Capstones (6 levels) — one per phase boundary. They are the promotion gate.
- Heuristics (10 listed) — the spec says "for every heuristic include
counterexamples and limitations." That is a running exercise, tracked in
learning-log.md, not a module.
2. Dependency graph
The real edges. A → B means "A must be solid before B is honest."
graph TD
subgraph SUB["A · Platform substrate"]
JS["§1 JS runtime<br/>event loop · closures · GC · object shapes"]
BR["§2 Browser architecture<br/>processes · rendering pipeline · scheduling"]
HTML["§3 HTML platform<br/>semantics · forms · web components"]
CSS["§4 CSS architecture<br/>cascade · layout · containment"]
NET["§10 Networking<br/>HTTP/2·3 · caching · CDN"]
TS["§1b TypeScript<br/>structural typing · contracts"]
end
subgraph FW["B · Framework mechanics"]
REACT["§5 React deep dive<br/>fiber · render/commit · hooks"]
ALT["§6 Vue/Svelte/Solid/WC"]
ALGO["§40 UI algorithms<br/>diff · LRU · virtualization"]
end
subgraph ARCH["C · Architecture & data"]
APP["§7 App architecture"]
STATE["§8 State management"]
API["§9 API integration"]
EDGE["§19 Unhappy path"]
SSR["§31 SSR/SSG/ISR/islands"]
end
subgraph QA["D · Quality attributes"]
PERF["§11 Performance"]
A11Y["§12 Accessibility"]
SEC["§13 Security"]
I18N["§36 i18n"]
MOB["§37 Mobile web"]
WORK["§38 Workers"]
WASM["§39 WASM"]
BIGUI["§41 Large-scale UI"]
end
subgraph TEST["E · Quality engineering"]
TSTRAT["§14 Test strategy"]
UIT["§15 UI testing"]
E2E["§16 E2E"]
INT["§17 Integration"]
VIS["§18 Visual regression"]
QEP["§25 Org quality policy"]
end
subgraph PLAT["G · Platform & delivery"]
DS["§26 Design systems"]
FPE["§27 Platform engineering"]
BUILD["§28 Build tooling"]
MONO["§29 Monorepos"]
MFE["§30 Microfrontends"]
OBS["§32 Observability"]
REL["§33 Reliability"]
CICD["§34 CI/CD"]
RELE["§35 Release engineering"]
end
subgraph PRIN["H · Principal judgment"]
ADR["§42 ADRs"]
DEC["§43 Decision making"]
DEBT["§44 Technical debt"]
MIG["§45 Migrations"]
PSK["§46 Principal skills"]
end
JS --> BR
JS --> REACT
JS --> ALGO
JS --> WORK
BR --> REACT
BR --> PERF
BR --> A11Y
HTML --> A11Y
HTML --> CSS
HTML --> REACT
CSS --> PERF
CSS --> DS
NET --> API
NET --> PERF
NET --> SSR
NET --> SEC
TS --> API
TS --> APP
REACT --> APP
REACT --> STATE
REACT --> SSR
ALGO --> BIGUI
ALT --> APP
APP --> STATE
STATE --> API
API --> EDGE
STATE --> EDGE
SSR --> PERF
REACT --> SSR
PERF --> OBS
PERF --> BIGUI
WORK --> BIGUI
WORK --> WASM
A11Y --> DS
MOB --> PERF
EDGE --> TSTRAT
APP --> TSTRAT
TSTRAT --> UIT
TSTRAT --> E2E
TSTRAT --> INT
TSTRAT --> VIS
UIT --> QEP
E2E --> QEP
INT --> QEP
VIS --> QEP
CSS --> BUILD
BUILD --> MONO
MONO --> MFE
DS --> MFE
DS --> FPE
MONO --> FPE
QEP --> CICD
CICD --> RELE
OBS --> REL
RELE --> REL
FPE --> MFE
MFE --> ADR
REL --> ADR
FPE --> ADR
ADR --> DEC
DEC --> MIG
DEBT --> MIG
MIG --> PSK
DEC --> PSK
The five load-bearing chains
Everything else is decoration around these. If you only get five things right:
-
Scheduling chain — event loop → task/microtask semantics → long tasks → INP → concurrent rendering → Suspense/transitions → streaming SSR → hydration cost. Rendering the heuristic "performance problems are often scheduling problems" legible.
-
Async-correctness chain — promises/cancellation → request lifecycle → server-state cache → race conditions → optimistic update + rollback → offline/conflict. This is where "stale response overwrites newer data" lives.
-
Cache-coherence chain — HTTP cache semantics → ETag/
Cache-Control→ CDN → SSR/ISR revalidation → query-cache invalidation → stale-while-revalidate UX. One concept, four layers, four different invalidation vocabularies. -
Semantics chain — DOM → semantic HTML → accessibility tree → accessible name computation → focus management → a11y as a design-system contract → a11y CI gate. "Accessibility is architecture, not polish" is only true if you can walk this chain.
-
Org-topology chain — package boundaries → build graph → monorepo → independent deployability → microfrontends → governance → standardisation vs autonomy. "Frontend architecture frequently reflects organizational architecture."
Cross-track hooks into browser-framework-internals.md
Only cross when the frontend topic genuinely stalls without it:
| Frontend topic | Internals section | Cross when |
|---|---|---|
| §1 event loop / §11 INP | §16 Browser Scheduling | you need to know why a queue is prioritised, not just that it is |
| §2 rendering pipeline | §5 Complete Rendering Pipeline, §12–15 layout/paint/compositor | a layout/paint cost is inexplicable at the CSS level |
| §4 CSS containment | §10 CSS Engine Internals, §12 Layout Engine | you need invalidation scope, not spec prose |
| §5 React fiber | §27 Build a React-Like Runtime, §28 React Source Apprenticeship | reconciliation behaviour contradicts your model |
| §8 signals/stores | §29 Vue-like reactive runtime, §33 Redux-like store, §36 signals | comparing reactivity models architecturally |
| §8/§9 server state | §35 Build a Server-State Query Cache | designing a cache invalidation policy |
| §13 security | §19 Browser Security Architecture | reasoning about process/origin boundaries |
| §28 build tooling | §38 Minimal Bundler, §39 JSX compiler | evaluating bundler trade-offs |
| §41 large-scale UI | §37 Virtualized List Engine | virtualization correctness/perf |
| §16 E2E | §41 Browser Automation Layer | debugging automation flakiness at the protocol level |
3. Phases
Seven phases plus a continuous spine. Each phase ends in a capstone-shaped deliverable and a promotion gate. Depth target rises per phase; tutorial density falls per phase, per the spec's closing instruction.
Spine (continuous, from Phase 1 onward)
F · AI-assisted engineering (§20–24) + §46 writing practice Not a phase. Every module carries an AI-assisted exercise. The rule from the spec holds throughout: AI increases leverage, never replaces understanding. You may not use an agent to produce an artifact whose failure modes you cannot enumerate yourself.
Phase 1 — Platform Substrate
Spec areas: 1, 2, 3, 4, 10 · Level: Foundation → Senior Thesis: Before any abstraction, know what the abstraction is hiding.
| Module | Focus | Depth target |
|---|---|---|
| fe-01 | Execution model: event loop, task/microtask, rendering pipeline coupling | can predict ordering + explain scheduling priority |
| fe-02 | Memory model: closures, GC, retention, leak taxonomy, heap snapshots | can find a leak from a snapshot diff, unaided |
| fe-03 | Object shapes, hidden classes, ICs, JIT — and when it actually matters | can say when this is irrelevant, which is most of the time |
| fe-04 | HTML as a platform: semantics, forms, dialog/popover, web components | can delete a component and replace it with a primitive |
| fe-05 | CSS: cascade, layers, custom properties, containment, content-visibility | can reason about invalidation scope |
| fe-06 | Layout: flex, grid, subgrid, container queries, intrinsic sizing, stacking | can predict layout without running it |
| fe-07 | Networking: HTTP/1.1→3, connection reuse, cache headers, ETags, CDN, priorities | can read a waterfall and name the bottleneck class |
| fe-08 | TypeScript as a contract system: structural typing, variance, branded types, runtime validation boundary | can design a type-safe API client that fails loudly |
Capstone 1 (Foundation): production-quality accessible responsive application, built with deliberately minimal framework surface. Budget-constrained.
Phase 2 — Framework Mechanics
Spec areas: 5, 6, 40 · Level: Senior Thesis: A framework is a scheduling and diffing policy with ergonomics attached. Prereq: fe-01, fe-02, fe-04, fe-05.
| Module | Focus |
|---|---|
| fe-09 | Component model, reconciliation, Fiber, render vs commit phase |
| fe-10 | Hooks mechanics: state, effects, stale closures, refs, the useEffect overuse pathology |
| fe-11 | Memoization economics: when useMemo/memo/compiler pays, when it costs |
| fe-12 | Concurrent rendering, transitions, Suspense — as scheduling, not magic |
| fe-13 | Reactivity models compared: VDOM vs signals vs compiled (Vue/Svelte/Solid/WC) |
| fe-14 | UI algorithms: tree diff, LRU, tries, interval trees, virtualization, debounce/throttle |
Deliverable: a written architectural comparison of three reactivity models with a measured micro-benchmark and an explicit statement of what the benchmark does not prove.
Phase 3 — Architecture & Data
Spec areas: 7, 8, 9, 19, 31 · Level: Senior → Staff Thesis: A frontend is a distributed system with a rendering engine attached. Prereq: Phase 2 + fe-07.
| Module | Focus |
|---|---|
| fe-15 | State taxonomy: local / lifted / URL / server / global / derived / cached / persistent |
| fe-16 | Server state ≠ client state: query caches, invalidation, dedup, SWR |
| fe-17 | Race conditions, cancellation, idempotency, optimistic update + rollback |
| fe-18 | API integration as distributed systems: retries, timeouts, backpressure, partial failure |
| fe-19 | Application architecture: feature slices, dependency direction, ports/adapters, state machines — and when this is overengineering |
| fe-20 | Designing for the unhappy path (§19 in full — the 29-item edge-case matrix) |
| fe-21 | Rendering architectures: CSR/SSR/SSG/ISR/streaming/islands/RSC and their failure modes |
Capstone 2 (Intermediate): complex application with API integration, state management, full testing — built against an intentionally unreliable API.
Phase 4 — Quality Attributes
Spec areas: 11, 12, 13, 36, 37, 38, 39, 41 · Level: Staff Thesis: These are not features. They are properties of the architecture, and they are measurable. Prereq: Phase 3. fe-22 is the anchor; the rest parallelise heavily.
| Module | Focus |
|---|---|
| fe-22 | Performance engineering: CWV, LCP/INP/CLS/TTFB, budgets, quantitative claims |
| fe-23 | Loading architecture: code splitting, tree shaking, preload/prefetch, Early Hints |
| fe-24 | Accessibility as engineering: a11y tree, names, focus, ARIA, the limits of automation |
| fe-25 | Frontend security: XSS taxonomy, CSP, CORS, cookies, tokens, Trusted Types, supply chain |
| fe-26 | i18n/l10n: Unicode, RTL, pluralization, text expansion, timezones |
| fe-27 | Mobile web: CPU/memory/network reality, viewport, virtual keyboards, PWA, service workers |
| fe-28 | Workers & parallelism: message passing, transferables, SAB/Atomics — and offload economics |
| fe-29 | WASM: enough for architectural judgment, not enough to write a compiler |
| fe-30 | Large-scale UI: 100k rows, virtualization, editors, real-time feeds, Canvas/SVG |
Capstone 3 (Senior): high-performance application with SSR, caching, observability, defended with numbers against a stated budget.
Phase 5 — Quality Engineering
Spec areas: 14, 15, 16, 17, 18, 25 · Level: Staff Thesis: Quality is an architecture problem. Thousands of tests can still produce low confidence. Prereq: Phase 3 (need a system worth testing) + fe-20 (need to know what to test for).
| Module | Focus |
|---|---|
| fe-31 | Test strategy: for each type — what it catches, misses, costs, and how hard failures are to diagnose |
| fe-32 | UI testing: user-centric, async, forms, keyboard, a11y assertions; anti-patterns |
| fe-33 | E2E with Playwright: contexts, fixtures, interception, traces, flaky-test prevention |
| fe-34 | Integration & contract testing: schema validation, service virtualization, ephemeral envs |
| fe-35 | Visual regression: tolerance, false positives, browser differences |
| fe-36 | AI-assisted QA (§21–23): test matrices, edge-case discovery, exploratory agents |
| fe-37 | Principal quality engineering (§25): org policy, gates, budgets, browser matrix, release criteria |
Deliverable: an organization-wide testing policy document with explicit confidence claims and explicit un-covered risk.
Phase 6 — Platform & Delivery
Spec areas: 26, 27, 28, 29, 30, 32, 33, 34, 35 · Level: Staff → Principal Thesis: You stop building applications and start building the conditions under which others build them. Prereq: Phases 4 and 5.
| Module | Focus |
|---|---|
| fe-38 | Design systems: tokens, primitives, versioning, adoption, governance, contribution models |
| fe-39 | Build tooling: module graphs, tree shaking, source maps, incremental builds, HMR; bundler architectures compared |
| fe-40 | Monorepos: workspaces, boundaries, dependency graphs, remote caching, affected builds, ownership |
| fe-41 | Microfrontends — taught critically. Is this an organizational or a technical problem? |
| fe-42 | Frontend platform engineering: templates, standards, codegen, DX, feature flags, preview envs |
| fe-43 | Observability: RUM, Web Vitals, tracing, correlation IDs, session replay. Diagnose "it feels slow" with evidence |
| fe-44 | Reliability: SLIs/SLOs, error budgets, graceful degradation, kill switches, circuit breakers |
| fe-45 | CI/CD + release engineering: risk-based testing, pipeline economics, canaries, rollout, rollback, schema evolution |
Capstone 4 (Staff): shared design system + frontend platform used by multiple applications.
Phase 7 — Principal Judgment
Spec areas: 42, 43, 44, 45, 46 + failure case studies + heuristics · Level: Principal → Distinguished Thesis: The work is now decisions, influence, and time horizons — and being right about reversibility. Prereq: Phase 6.
| Module | Focus |
|---|---|
| fe-46 | ADRs: context, constraints, options, decision, consequences, reversibility, migration |
| fe-47 | Technical decision-making: one-way vs two-way doors, blast radius, optionality, build vs buy, standardisation vs autonomy |
| fe-48 | Technical debt: taxonomy, quantification, prioritisation, and how to sell paying it down |
| fe-49 | Migrations: strangler patterns, incremental cutover, the 8 migration projects in §45 |
| fe-50 | Principal skills: strategy, RFCs, influence without authority, incident analysis, radar, mentoring |
| fe-51 | Failure case-study gauntlet: all 12 incidents, cold, under the 7-question protocol |
Capstone 5 (Principal): frontend architecture for dozens of teams — RFC, diagrams, budgets, testing strategy, observability, security model, a11y policy, migration strategy, CI/CD, DX, operational model.
Capstone 6 (Distinguished/SME): multi-year frontend platform strategy — standardisation, technology radar, migration roadmap, platform APIs, governance, org topology, adoption, build-vs-buy, measurable outcomes.
4. Parallelisation
Safe to study concurrently
| Group | Why it's safe |
|---|---|
| fe-03 (JIT/shapes) ‖ fe-04 (HTML) ‖ fe-05 (CSS) ‖ fe-07 (networking) | Disjoint mechanisms; no shared prerequisite beyond fe-01/fe-02 |
| fe-08 (TypeScript) ‖ anything in Phase 1–2 | TS is a contract discipline, not a runtime dependency |
| fe-13 (framework comparison) ‖ Phase 3 | Comparison is analytical; doesn't gate architecture work |
| fe-24 (a11y) ‖ fe-25 (security) ‖ fe-26 (i18n) ‖ fe-27 (mobile) | Independent quality attributes with independent tooling |
| fe-28 (workers) ‖ fe-29 (WASM) | Related but not dependent; WASM only deepens with workers |
| fe-32 ‖ fe-33 ‖ fe-34 ‖ fe-35 (test types) | Independent given fe-31 |
| fe-38 (design systems) ‖ fe-39/fe-40 (build/monorepo) | Different axes of the same platform |
| Spine F (AI workflows) ‖ everything | By design |
| §46 writing practice (RFCs/ADRs) ‖ everything from Phase 3 | Start writing early; quality compounds |
Hard prerequisites — do not parallelise
| Blocked | Requires | Why the shortcut fails |
|---|---|---|
| fe-22 Performance | fe-01 (scheduling), fe-02 (memory), fe-05/fe-06 (layout), fe-07 (network) | Without these you optimise symptoms and report noise as wins |
| fe-12 Concurrent React / Suspense | fe-01 | "Concurrent" is meaningless without task/microtask/frame semantics |
| fe-16–fe-17 Server state & races | fe-01 (async ordering), fe-07 (HTTP caching) | You'll build a cache with no invalidation theory and races you can't name |
| fe-21 Rendering architectures | fe-09 (render/commit), fe-07 (caching), fe-12 (streaming) | Hydration cost and streaming behaviour are unexplainable otherwise |
| fe-24 Accessibility | fe-04 (semantic HTML) | ARIA-first a11y produces compliant-looking, unusable UI |
| fe-30 Large-scale UI | fe-14 (algorithms), fe-22 (perf method), fe-28 (workers) | Virtualization without measurement is cargo cult |
| fe-37 Org quality policy | fe-31–fe-35 | You cannot set a policy over test types you haven't paid the cost of |
| fe-41 Microfrontends | fe-38, fe-39, fe-40 | Microfrontends are a consequence of build + design-system + org constraints |
| fe-43 Observability | fe-22 | You'll instrument metrics you can't interpret |
| fe-49 Migrations | fe-46, fe-47 | Migration without a decision record is a rewrite with better branding |
| Capstone 5/6 | Phases 1–6 | These are integration exercises; there is nothing to integrate otherwise |
Explicitly deferred (common temptation to start early)
- Microfrontends (§30) — the most requested, least ready topic. Deferred to Phase 6 on purpose.
- Design systems (§26) — feels like a Phase 1 topic. It isn't; it needs a11y, CSS architecture, versioning and governance to be real.
- State machines / DDD / clean architecture (§7) — Phase 3, and taught with its overengineering critique attached.
5. Failure case-study schedule
The 12 incidents from the spec, assigned to the earliest phase that gives you the tools to solve them honestly. Each runs under the spec's 7-question protocol.
| Incident | Phase | Anchor module |
|---|---|---|
| Rendering loop freezes browser | 1 | fe-01 |
| Memory leak after hours | 1 | fe-02 |
| Stale response overwrites newer data | 3 | fe-17 |
| Global rerenders from context misuse | 2 | fe-11 |
| Hydration mismatch | 3 | fe-21 |
| CSS bundle explosion | 4 | fe-23 |
| Accessibility regression | 4 | fe-24 |
| Cache poisoning | 4 | fe-25 |
| Flaky E2E suite | 5 | fe-33 |
| Design-system upgrade breaks many apps | 6 | fe-38 |
| Dependency compromise | 6 | fe-42 |
| Poor observability hides an outage | 6 | fe-43 |
Phase 7 re-runs all twelve, cold, in fe-51.
6. Promotion gates
You do not advance a phase by finishing modules. You advance by clearing the gate.
| Gate | Criterion |
|---|---|
| 1 → 2 | Predict execution order and rendering timing of unfamiliar async code without running it. Find a memory leak from a heap snapshot diff. Read a network waterfall and name the bottleneck class. |
| 2 → 3 | Explain any re-render in a real app from evidence. Argue VDOM vs signals with measured data and stated limits of that data. |
| 3 → 4 | Ship a feature that survives the full unhappy-path matrix. Produce a state-ownership diagram a reviewer can attack. |
| 4 → 5 | Defend a performance claim quantitatively against a stated budget. Pass a keyboard-and-screen-reader review with no automated tooling. |
| 5 → 6 | Write a test policy that states, explicitly, what it does not give confidence in. |
| 6 → 7 | Own a platform decision with a documented blast radius and reversibility analysis. |
| 7 → done | Produce a multi-year strategy that another Principal engineer cannot trivially dismantle. |