STATE — Progress Ledger

Read this file first. Every session starts cold and reads only this. It is updated at the end of every session with: what we did, the scores, what is next, and what is blocked.


Table of Contents


Right Now

Phase1 — Calibrate
Week0 (program not yet started)
Budget22 h/week × 26 weeks ≈ 570 h
Target levelSenior / Staff, IC — calibrated to Staff altitude
Diagnostic⏳ not yet taken
PLAN.md🔒 locked pending diagnostic scores
Last updated2026-07-31

Your Next Action

Take the 3-hour baseline diagnostic.

Book one uninterrupted block. Timer visible, recorder on, no AI, no search, no docs.

PartTimeFile
1. Coding, 4 gates45 mindiagnostics/d1-coding/problem.md
2. System design + artifact45 mindiagnostics/d2-system-design.md
3. Python internals, 20 Q30 mindiagnostics/d3-python-internals.md
4. Behavioral, written40 mindiagnostics/d4-behavioral.md

Then score against RUBRIC.md, record in scores/, and report the numbers. PLAN.md unlocks the moment I have them.


Blocked On You

Things I cannot do without input from you. Each blocks something real.

#What I needBlocksStatus
B1Diagnostic scoresThe entire personalized plan⏳ open
B2Correct the candidate context if anything is wrong — the program assumes: ~10 yrs, multilingual search/reco at a large information-services company, prior WBD/Cisco/IBM/AWS, MSCS in progress (AI), strong on retrieval/ranking/vector indexes/distributed reading/compiler internals, weaker on timed coding speed, Python runtime depth, GPU-serving design, staff-altitude behavioral narrativeTrack weighting and story-bank framing⏳ open
B3Raw material for 12–15 stories (7 bullets each — see Track F)The story bank. I will not invent these⏳ open
B4Target companies, in priority orderWhich company-brief.md variants to build out⏳ open
B5Charter + engineering-blog reading done, [VERIFY] slots filledcompany-brief.md is a scaffold until then — openai.com/charter 403s to automated fetching⏳ open
B6Which repo for Track G — pick one you have never worked inTrack G task generation⏳ open

Levels

Assigned from the diagnostic. Blank until it is taken.

TrackLevelShareBasis
A — Coding under time pressure25% baselineDiagnostic Part 1
B — Python internals12% baselineDiagnostic Part 3
C — Distributed systems design15% baselineDiagnostic Part 2
D — ML & inference infra20% baselineNot in the baseline — assume L0/L1, confirm wk 2
E — Take-home & deep dive12% fixedFirst measured at week 8
F — Behavioral10% baselineDiagnostic Part 4
G — Agentic coding6% baselineFirst measured at week 6

Session Log

Newest first. One entry per working session.

2026-07-31 — Session 7: Track G's diff bank

Did: wrote tracks/agentic/DIFFBANK.md30 agent-produced diffs to accept, reject or revise in 90 seconds each, extending the five in the warmup. Track G was the thinnest track and its core skill — deciding what the agent produced is safe to ship — had five examples. Eight categories, a six-pass review ordered by how cheaply each pass finds a fatal problem, and a ranked taxonomy of what agents actually get wrong.

Two structural additions that matter more than the diffs:

  • Section H — "Looks Wrong, Is Right". Reflexive rejection is a scored failure and the bank now tests for it directly. An engineer who rejects all thirty scores worse than one who accepts the three that are correct.
  • "The Things You Cannot See in a Diff." git diff --stat first, every time; and after the agent's tests pass, break the implementation and confirm the test fails. Thirty seconds, directly targets what agents are worst at, and almost nobody does it.

The measurement that changed a section: the folk rule "s += x in a loop is O(n²)" is false on CPython — measured 1.5× vs join and linear at n up to 500k, because unicode_concatenate resizes in place at refcount 1. Hold one extra reference and it becomes 300× at n=50k and quadratic. So the diff is ACCEPT-with-a-precondition, not REJECT — and the transferable point is that a performance rule resting on an interpreter optimization must be stated with its precondition.

Next: unchanged — the diagnostic.


2026-07-31 — Session 6: Track A's follow-up bank

Did: wrote tracks/coding/QUIZBANK.md150 questions asked after your code works, the Track A counterpart to Track B's quiz bank. Fourteen sections, one per WARMUP chapter plus complexity, testing and concurrency, each mapped to the harness problem it attaches to. Opens with the six shapes of follow-up, because misclassifying the shape is how a correct answer becomes an irrelevant one, and closes with the twenty that recur most.

Every measurable claim was measured on 3.13 rather than asserted, and three came out somewhere other than where I expected:

  • list.pop(0) vs deque.popleft at n=100k: 15,895 ns vs 40.7 ns — 390×.
  • flush() vs flush()+fsync(): 2.2 vs 24.5 µs — only 11×, because macOS fsync() does not flush the drive's write cache (that needs F_FULLFSYNC). The low ratio is itself the finding and is now taught as one.
  • dict[k] += 1 across 4 threads lost zero updates — the same eval-breaker behaviour Track B's experiments found. Recorded as "an implementation detail, not a guarantee", with the free-threading consequence.

Next: unchanged — the diagnostic.


2026-07-31 — Session 5: Track D gets its own eight worked designs

Did:

  • Wrote m01m08 — the ML-infrastructure design round, in the same shape as Track C's twelve: nine sections, six hostile critiques, six revisions. 48 defects found, 48 fixes. LLM API platform · KV cache tier · GPU cluster scheduler · pretraining data pipeline · eval harness · RAG serving · LoRA serving · training fault tolerance.
  • Wrote designs/README.md for the track, including the section that is worth more than any single design: which Track C primitives carry over, and which distributed-systems instincts actively fail on a bandwidth-bound substrate.
  • Every number in all eight was computed by script before being written down.

Two real errors that surfaced while doing that arithmetic — both in material already committed, both the kind that would have been quoted in a round:

  • Machine balance was 2× too high. The guide used NVIDIA's headline 1,979 TFLOP/s BF16, which is the with-2:4-sparsity number. LLM weights are dense, so the honest figure is 989.5 and the balance is 295 FLOP/byte, not 590. Fixed everywhere, and the asterisk is now taught as a trap — quoting a sparsity number for a dense workload is a fast way to lose credibility.
  • gpu_math.py was 4× pessimistic on anything multi-GPU. It divided aggregate bytes and FLOPs by single-GPU bandwidth, so a 70B on 4×H100 reported $4.92 per 1M output tokens. Corrected it is $1.23, which is in the range real providers charge. The ratio (and so the memory-bound verdict) was always right; every absolute number was not.

The lesson worth keeping: both errors survived a full pass of writing and review, and both died the moment a number had to be used in a downstream calculation. Deriving something from a number is a much stronger check than reading it.

Next: unchanged — the diagnostic.


2026-07-31 — Session 4: all twelve designs, plus the two reference documents

Did:

  • Wrote d02 through d12 — the eleven remaining design exercises, in the same shape as d01: nine template sections, then six hostile critiques, then six revisions. Across the twelve that is 72 defects found and 72 fixes written. Every one names a concrete flaw in the first draft, not a stylistic quibble.
  • Wrote designs/README.md — the index. Beyond the table it carries the two things that generalize: a cross-cutting pattern map (which of the ~13 primitives recurs in which designs), and a defect taxonomy over all 72 critiques.
  • Wrote CHEATSHEET.md — every track compressed into what fits in working memory before a round, including the verbatim scripts to say out loud at each of the six moments an interview goes wrong.
  • Wrote GLOSSARY.md — every term used anywhere in the program, one line each, each pointing at where it is actually taught.
  • Registered all of it in SUMMARY.md; corrected the Track C and root READMEs, which still described d02d12 as future work.

The finding worth keeping — from tabulating what the 72 critiques actually caught. The single most common defect class is arithmetic never done: ten of the twelve first drafts asserted something a two-line calculation disproves (d10's rebalance moving 2.4 TB off one node; d05's circuit-state read at 1M/s). Second is an uncosted hot path, eleven instances. Neither is a knowledge gap — both are the same missing habit.

Before defending a component, size it. That one rule would have prevented 21 of 72.

Next: unchanged — the diagnostic. Twelve worked answers are worth nothing until you have measured yourself against one cold.


2026-07-31 — Session 3: the harness fully automated, Track E written

Did:

  • Automated all 13 remaining harness problems. Every one of the 15 now ships a starter.py, a heavily-commented reference solution.py, and a gate-test module. 60 of 60 gates green, in ~6 seconds: python3 tracks/coding/harness/runtests.py.
  • Rewrote the problem catalog so every gate brief is API-precise — the briefs are the spec the candidate codes against, so vagueness there is a bug.
  • Dropped the --self-certify path from the harness; on completion it now prints the WARMUP chapter that teaches the pattern.
  • Wrote tracks/take-home/WARMUP.md — the last track without a study guide. Hour-by-hour 48-hour playbook, the webhook system specified with seven logged decisions and a worked benchmark write-up, and the deep-dive interrogation: 40 questions across seven classes with full model answers, including the hostile ones.

Bugs the gate tests caught in my own reference solutions — which is the point of writing the tests first:

  • path-resolver: physical mode resolved .. against the cwd string instead of walking the cwd's own symlinks, so /a/link/.. gave the logical answer in physical mode.
  • text-index: re-adding a document did not purge its buffer postings, and _postings unioned across segments before filtering — so a replaced document's OLD terms resurfaced in results.
  • async-crawler: an empty seed list hung forever, because the sentinel that ends the stream is only produced by a worker and no worker ever ran.
  • object-pool: __slots__ removes weakref support along with __dict__, so the pooled class needs '__weakref__' explicitly or the leak detection cannot work at all.

And one finding worth keeping: on CPython 3.11+ the instance dict is managed and created lazily, so a subclass that omits __slots__ measures identical to a slotted one — same sys.getsizeof, same tracemalloc — until something is actually stored in the dict. Then it is 5.8× larger (41.6 MB vs 7.2 MB over 100k instances). The reliable tell is hasattr(x, "__dict__"), not the size. The gate test now teaches exactly that.

Next: unchanged — the diagnostic.


2026-07-30 — Session 2: study material written

Why: the first pass produced inventories and pointers — what to practise and how you're scored — but not the material itself. Everything named was a link to somewhere else. That was the right criticism and this session fixes it.

Did — eight self-contained study guides, ~15,000 lines:

  • tracks/coding/WARMUP.md — ten patterns from first principles with complete implementations (MVCC/predecessor queries, delta logs, intrusive lists, four rate limiters, heap scheduling, streaming state machines, dependency graphs, WAL + crash recovery, Bloom filters, backpressure). 63 behavioural checks run green, including a WAL test that truncates the file at every byte offset.
  • tracks/python-internals/WARMUP.md — the runtime from the interpreter up, including an event loop built from scratch.
  • tracks/python-internals/QUIZBANK.md150 questions with mechanism-level answers, spot-checked against a live interpreter.
  • tracks/systems-design/WARMUP.md — every primitive from zero: Little's law, the utilization knee, the failure taxonomy, clocks/Lamport/vector/HLC, leases and fencing in full, quorums, Raft including both safety rules, consistency models, partitioning, delivery semantics and the outbox, load control, CRDTs.
  • tracks/systems-design/designs/d01-job-scheduler.md — the reported screen question worked end to end, then attacked by a hostile interviewer, then revised. The critique found six real defects in the first draft, which is the point.
  • tracks/ml-infra/WARMUP.md — inference from zero with the roofline derived, plus a complete "design ChatGPT" answer at both altitudes and the follow-ups answered. 24 arithmetic claims verified by script.
  • tracks/behavioral/WARMUP.md — all twelve categories with worked model answers at staff density.
  • tracks/agentic/WARMUP.md — a fully worked 60-minute agent-driving transcript with scoring commentary, and five diffs to accept or reject.

Errors caught by verification, worth remembering:

  • gc default thresholds are (2000, 10, 10) on CPython 3.13, not the long-documented (700, 10, 10). Both files now teach the shape plus gc.get_threshold() rather than a memorized constant — it is a live example of the confident-wrong failure mode.
  • The decode memory/compute ratio is 590×, not 600× — and it lands exactly on the machine balance, which is a useful self-check that the derivation is right.

Next: unchanged — the diagnostic. The study guides do not replace it; they are what you read after it tells you where you are weak.


2026-07-30 — Session 1: program built

Did:

  • Phase 0 research. Corroborated the source report against independent sources; wrote research/findings.md with confirmed / reported / inference labels and an explicit source-quality assessment.
  • Wrote research/source-report.md — all 41 rows, each with a corroboration mark and a destination, plus a coverage audit.
  • Wrote research/company-brief.md — charter structure, talking points, three questions to ask, adaptation table for eight other labs.
  • Built the full baseline diagnostic: 4-gate coding problem with a working test runner and reference solution (all gates verified passing), system-design exercise with hidden follow-ups, 20-question internals quiz (every answer verified against a live interpreter), 3 behavioral prompts, answer key, rubric with level mapping, score template.
  • Built the progressive harness — gating, timing, chart, 15-problem catalog. Two problems fully automated (versioned-kv, token-stream-differ), both verified 4/4.
  • Wrote all seven track documents with concept inventories, drill sets, failure modes and rubrics.
  • Built and verified 5 Track B experiment scripts, the Track C envelope calculators, Track D's gpu_math.py, and the review.py spaced-repetition queue.
  • Registered the track in the mdBook build and the hub.

Findings worth carrying forward:

  • The agentic round is not a one-lab beta — Meta, Google and CodeSignal all ship the format. Track G is not optional.
  • Reported sources disagree on the coding pass bar (2/4 vs stricter). Assume the stricter one; the error is asymmetric.
  • AI-lab levelling is compressed: "L5 Senior" reportedly carries Staff scope. Every rubric in this program scores at both levels and names which one you hit.
  • AI tool policy is opposite at different labs. One peer lab reportedly bans AI in live rounds entirely. Ask per company, per round.
  • The textbook GIL race demo does not reproduce on modern CPython (the eval breaker is checked at backward jumps, after the STORE). Put a call between the load and the store and it loses 3–61% of updates. Measured in exp03_gil.py and folded into the answer key.

Next: the diagnostic. Then PLAN.md.

Blocked: B1–B6 above.


Build Backlog

Work on the program itself, in priority order.

#ItemWhyStatus
1Automate the 13 remaining harness problemsDone — 60/60 gates green
2Track B quiz bank to 150 questionsDone
3Study guide for every trackDone — A through G
4Designs d02d12Done — all twelve, 72 critiques + 72 revisions, plus the index with the pattern map and defect taxonomy
5Generate diagnostic re-test variants 01–06Needed at week 4🟡
6Track G tasks G1–G6 against the chosen repoBlocked on B6🟡
7Second take-home briefNeeded by week 16; chosen late so it stays cold🟢

Mock Scores

Weekly, from week 3. Verdicts on the hire-bar scale.

#DateTypeVerdictDeltaTranscript

Milestone Tracker

WeekMilestoneStatus
1Baseline diagnostic
1Charter + blog reading verified
2First full gated harness run
2Design d01 — job scheduler
3Weekly mocks begin
4Diagnostic re-test 1
6First Track G timed run
8Take-home 1 — webhook delivery, 48h
9Deep-dive interrogation 1
9Diagnostic re-test 2
13Diagnostic re-test 3
14All 12 designs written
16Take-home 2 — 48h
17Deep-dive interrogation 2 · re-test 4 · full-loop sims begin
20Portfolio artifact complete
21Diagnostic re-test 5
22Numbers sheet memorized
25Diagnostic re-test 6
26Final full-loop simulation

Pre-Interview Checklist

Run this once a loop is scheduled. Not before — it is a pre-flight, not a study guide.

Per company

Item
Ask the recruiter the AI-tool policy, per round. Policies are opposite at different labs and change quarterly
Ask the loop shape: number of rounds, whether there is a take-home, whether the agentic round applies
Read their charter / core-views / safety documents in a browser. Primary text, not a summary
Read their two most recent engineering or research posts. Date them
Write one specific question about a design choice in each
Build the company-specific company-brief.md variant
Confirm the interview tooling (CoderPad? Excalidraw? their own environment?) and practise in it

Per loop

Item
Every source-report row maps to something you have done, not read
Two consecutive full-loop simulations at hire (staff) or better
review/ queue clear; no leeches outstanding
Story bank complete — all 12 categories, each with its probe list
All six forward-looking answers rehearsed within the last 7 days
Numbers sheet recalled cold
Both projects defensible line by line
90-second and 3-minute career narratives to a timer
Sleep. The final week rehearses; it does not learn