Step 6 — Principal Engineer Review
Answer in writing. These are judgment questions: several have defensible answers on more than one side, and "it depends" is only acceptable if you say on what.
Questions 4, 5 and 10 are no longer hypothetical — you generated the data for them in Step 4.
1. A team reports INP regressed from 180 ms to 450 ms after a release that "only changed CSS." Give three mechanisms by which a CSS-only change can regress INP. Which single piece of evidence distinguishes them fastest?
2. An engineer proposes a codebase-wide lint rule banning setTimeout(fn, 0). Make the
strongest case for the rule, then the strongest case against. What do you actually do, and
what does your answer depend on?
3. Your platform team wants to ship a shared chunkWork() utility to 40 teams. Specify its
API. What must it not let callers do? What happens when a caller passes a callback that
itself awaits a network request — and does your API make that mistake representable?
4. A senior engineer benchmarks your chunked data transform, finds it 28 % slower in total wall clock, and wants to revert. You measured exactly this in Step 4 (s3 vs s4, s0 vs s3). Walk through how you handle it — the technical argument and the fact that they are right about their number. Under what circumstances should you agree with them?
5. Two proposals for a 100k-row table: (a) virtualize on the main thread with time-sliced rendering; (b) move filtering and sorting to a Web Worker and keep rendering naive. Your s5/s6 result is directly relevant. What does each optimise? What workload makes each the wrong choice? What would you measure before choosing — and what would you do if you could not get that measurement in time?
6. Your organization wants a single frontend performance SLO. Argue for INP over Total Blocking Time as the primary SLI, then argue the reverse. Which do you adopt, and what second metric do you pair it with to cover the first one's blind spot?
7. React's scheduler yields with MessageChannel rather than microtasks or setTimeout.
Reconstruct that decision from first principles: what does each of the three options cost, and
what breaks if you swap it for the other two?
8. When is the correct engineering decision to have a long task — to deliberately refuse to yield? Give a concrete scenario and state the invariant that yielding would violate.
9. A third-party SDK you cannot modify, and that Legal requires, causes 60 % of your long tasks. Enumerate your options in order of blast radius. Which do you propose, and how do you get agreement?
10. Someone claims: "Concurrent React fixes our INP problem." Under exactly which conditions is that true, and under which is it false? What single question would you ask to find out which situation you are in?
11. Your test suite drives all UI interactions with fireEvent.click(). Given Step 1's
finding about microtask interleaving, describe a bug class this suite cannot catch. What would you
change, and what would that change cost in suite runtime and maintenance?
12. You have established that the dominant INP term differs across implementations of the same feature. Design the performance report your organization should require. What must it contain beyond a number, and what behaviour are you trying to make impossible?
Record
File your answers as RESULTS.md in the module directory, or as an ADR in
../fe-00-roadmap/docs/decisions/ where the question is genuinely a decision (3, 6, 9, 12 are the
natural candidates).
Anything you could not answer goes in ../fe-00-roadmap/docs/learning-log.md §2 as an open
question. A question that survives three modules is a signal — either it is genuinely hard, or the
model underneath it is still wrong.