Modernization plan — 2026-2027 interview prep
Master plan for bringing all 1,008 notes to a current, consistent, interview-ready state. Supersedes COVERAGE_AUDIT.md (2026-05-29 snapshot, partly stale), new session.md, and the outer ../REPORT.md — all three get deleted in Phase 0.
Created 2026-08-08. Facts verified against STACK_BASELINE.md.
Resume here
All phases (0-11) are complete as of 2026-08-10.
Verified by tooling: 1,073 markdown files, 0 broken relative links, 0 stubs, 0 emoji, 0 **Answer:** blocks, 0 files off-style. Every content file ends in ## Interview angle or ## What a senior is expected to say; the only files without a closing section are the control documents, folder indexes, and techcheck/ navigation maps, which is correct.
What remains
Nothing blocking. The open items are deliberate depth choices, tracked in frontend/_TODO.md and the “Known gaps” sections of the folder READMEs:
- No dedicated React Router note (Vue Router now has one).
05_reactServer Actions / forms (useActionState,useFormStatus) have no worked example.- Go, Scala, Node.js depth, options pricing and DICOM remain uncovered, deliberately. The MINT ones are listed in techcheck/mint_tech_check/01_prep_map.md.
STACK_BASELINE.mdneeds re-verification roughly quarterly. Last full pass 2026-08-08; Vue, data-engineering, quant, healthcare and AI-tooling rows verified 2026-08-10.
How to pick up cold
- Read CLAUDE.md for the style rules, then STACK_BASELINE.md for current versions. Re-verify baseline rows older than ~3 months with a web search before asserting anything - it was last verified 2026-08-08.
- Check the Progress table at the bottom of this file, and LEDGER.md for per-folder state.
git log --oneline main..HEADshows everything this effort has done; each commit message explains its reasoning.- After any change:
python _tools/check_links.pymust pass, thenpython _tools/gen_ledger.py, then commit.
Conventions in flight
- Every new file ends with
## Interview angle. No emoji, no**Answer:**blocks. - Legacy files parked for a later phase get a
_pending_prefix rather than being deleted. - Forward references to unwritten folders are plain code spans, not links, so the checker stays green. All
ai_ml/forward references were converted to real links in the phase 3.6 cross-link pass.
Decisions locked in
| Decision | Choice |
|---|---|
| Primary focus | Backend Python + AI/ML — all ML themes, foundations → advanced (classical ML, deep learning, LLM, RAG, agentic AI, MCP, MLOps) |
| Secondary, still covered | Frontend, DevOps/platform |
| Fact sourcing | Web-verify everything; re-verify STACK_BASELINE.md rows older than ~3 months |
| Stubs & duplicates | Prune aggressively — delete rather than pad |
| Style | One style: the senior style in CLAUDE.md. No emoji headers, no **Answer:** blocks. |
Current state
Measured by _tools/gen_ledger.py. Left column is where this effort started; right is now.
| Metric | At start | Now |
|---|---|---|
| Content files | 1,005 | 1,068 |
| Lines | 215,294 | 207,192 |
Files off-style (emoji or **Answer:**) |
178 | 0 |
Files with a closing Interview angle section |
~380 | all 906 content files |
| Stub files | 45 | 0 |
| Broken relative links | 6 real | 0 |
| Largest single file | 9,850 | 1,561 |
ai_ml/ files |
44 | 124 |
ai_ml/ lines |
15,554 | 16,957 |
frontend/06_vue/ files |
15 | 25 |
| Vacancy technologies with zero coverage | 16 | 0 |
Fewer lines and more files is the intended direction: ~13k lines of vendored, duplicated and scaffolding content removed, ~9k lines of dense new material added.
The four problems
- Inconsistency — three coexisting writing styles (senior /
**Answer:**Q&A / emoji-header), 178 files off-standard (measured by_tools/gen_ledger.py). - Staleness — Python 3.11 baseline (3.14 is current), GPT-4 & Llama-2 as the model examples, Kafka 2.4 (4.x removed ZooKeeper), React 18/19 mixed with class-era React, Postgres 12, Django 4.2,
uvmentioned 3 times. - Missing themes — all of classical ML and MLOps, plus LLMOps, context engineering, eval harnesses, KV cache / speculative decoding / MoE / reasoning models, prompt-injection depth, K8s Gateway API, OpenTofu, FinOps, EU AI Act.
- Structural debt — 45 stubs, one 9,850-line file,
04_async_concurrencyhas 34 files with a thin Q-cluster duplicating the deep ones,ai_ml/03,04,05have 12 files under 60 lines, and all three meta-docs contradict each other.
Phase 0 — Foundation
One session. Do this before touching any content.
- Triage the 20 uncommitted changes — review each, commit the good ones, discard the rest. Clean tree before starting.
- Rewrite
CLAUDE.mdas the single 2026-2027 standard. Fix its lies: it says “repo name sayspy_js” and “5 top-level folders” (there are 8). Add: the currency rule (checkSTACK_BASELINE.md), the one-style rule, the date-your-claims rule. - Delete
COVERAGE_AUDIT.md,new session.md,../REPORT.md— this file replaces them. - Fix
frontend/_TODO.md— it links to../AUDIT.md, which does not exist. - Create
LEDGER.md— one row per file with columns: path · reviewed? · style OK? · current? · verdict (keep/rewrite/merge/delete). This is what makes “go step by step through all docs” survive across sessions. - Decide the nesting: left as-is (the git repo stays nested rather than being promoted to the parent). Promoting it would rewrite every path in the outer tooling for no content benefit. The outer folder now holds only
todo.txt. - Renamed
py_questions/->py-prep/on 2026-08-10.python-questionswas wrong on both words: not only Python, and no longer a question dump.
Exit criteria: clean git tree, one truthful CLAUDE.md, one plan, one ledger.
Phase 1 — Whole-repo sweeps
One session. Cheap, mechanical, high value.
- Version sweep — grep every version string against
STACK_BASELINE.mdand fix. Known hit list:Python 3.11×17,React 18×31 + React 15/16/17 remnants,Kafka 2.4/2.8,Postgres 12/13,Redis 4.0/5.0,Django 4.2,node10/14/16,Next.js 13. - Model-name sweep — replace GPT-4 (33 files), GPT-4o (14), Llama-2,
claude-sonnet-4-5with the current roster. Prefer capability-neutral phrasing (“a frontier model”) where the specific model doesn’t matter, so this ages better. - Link integrity — check every relative markdown link resolves; fix the broken ones.
- Rebuild root
README.md— the index is missingai_ml/08,system_design/06–07,backend/29, frontend 14–19,claude_certification/,techcheck/.
Deferred on purpose:
- React version drift -> phase 7. It needs a rewrite around React Compiler 1.0, not a find-replace; blind substitution would corrupt correct history like “React 16.3 introduced getDerivedStateFromProps”.
- Model names inside
ai_ml/-> phase 3, which rewrites those files wholesale. Only the 2 occurrences outsideai_ml/were fixed now. - Feature-availability markers (“StrEnum introduced in 3.11”, “
except*requires 3.11+”, “App Router (Next.js 13+)”) were left alone - they are correct history, not staleness.
Exit criteria: no version string in the repo contradicts STACK_BASELINE.md; every link resolves. Both verified - _tools/check_links.py reports 0 broken across 1,010 files.
Phase 2 — Prune
One session. Deletions only — no writing. Do it in one commit so it’s easy to revert.
- Delete the AWS long-tail stubs (
Business_Applications/*,Cloud_Financial_Management/*,Compute/{Lightsail,Outposts,Wavelength,VMware,App_Runner,Batch,Beanstalk,Image_Builder,Serverless_App_Repo},Containers/{App2Container,OpenShift},Developer_Tools/{CodeDeploy,CodePipeline}). Keep the AWS services a Python/AI role is actually asked about: Lambda, API Gateway, DynamoDB, S3, SQS, SNS, EventBridge, Step Functions, ECS/EKS/Fargate, RDS/Aurora, ElastiCache, VPC, IAM, Secrets Manager, KMS, CloudWatch, Bedrock. - Delete the
20_cloud_azure/21_cloud_gcp1-line placeholders — or replace each with a single real “what maps to what” comparison note. Do not keep an empty folder. - Merge
04_async_concurrency33 → 17 files (+ README). Folded the thin Q-cluster into the deep files, collapsed triple GIL and triple event-loop, and turned the shield/completion/error-handling trio into one real13_cancellation_timeouts_errors.md. Renumbered contiguously and rewrote every inbound link;.pydemos moved to_examples/. - Deferred to phase 3 on purpose. Phase 3 rewrites
ai_ml/wholesale, so merging these thin files now would be thrown away. Not a skip - a sequencing decision. - Folded
fastapi/13_di_container.mdinto03_dependencies_and_injection.mdas a “do you need a DI container?” section rather than deleting - the content was short but genuinely useful. Also removeddjango/00_django.md, which was a bookmark list masquerading as a numbered note; its links now live in a newdjango/README.md. - Deleted the empty
frontend/05_react/use_callback.md. Its topic is compiler-era memoization, which is a phase 7 rewrite. - Not a split - a removal.
frontend/05_react/README.mdturned out to be a vendored copy of the sudheerj/reactjs-interview-questions repo: 403 third-party markers, 5 UTM-tracked sponsor banners, 84 class-component-era references, 10 mentions of modern React. The 29 sibling files already cover React in the repo’s own style. Replaced with a real index naming the gaps it leaves (React Router, Server Actions, React Compiler). - Housekeeping: folded
frontend/*/links.txtbookmarks into their folder READMEs; deleted the orphaned17_concurrency_vs_parallelism.png, the two_int_format/_answer_examples.txtfiles (superseded by their.mdversions), and the stale outerrepotree.txt.backend/image.pngand the PDF were already gone.backend/links.txtis gitignored personal scratch - left alone.
Exit criteria / actual result: 1,005 -> 958 files (-47), 215,294 -> 201,972 lines (-13,322). Largest file 9,850 -> 1,561 lines. Stubs 45 -> 11.
The 11 remaining stubs are all real topics that need writing, not deletion candidates - alembic, mysql, sqlite, valkey, rq, ansible, formatters, linters, integration tests, flask, litestar. They are filled in their own domain phases (4-6), because writing them needs the domain context of that pass.
Phase 3 — AI/ML rebuild
4–6 sessions. This is the main focus and the largest gap.
ai_ml/ is 44 files and covers LLMs only. Verified zero coverage of: linear/logistic regression, cross-validation, confusion matrix, bias-variance, gradient descent, backpropagation, CNN, RNN/LSTM, batch norm, MLflow, MLOps, model registry, feature stores, scipy. Target is roughly 150 files.
Target structure
| Folder | Status | Content |
|---|---|---|
00_math_foundations/ |
new | linear algebra, probability, statistics, calculus for ML — the “explain gradient descent on a whiteboard” layer |
01_ml_foundations/ |
new | supervised/unsupervised/RL, train-val-test, bias-variance, overfitting, the ML lifecycle |
02_classical_ml/ |
new | linear/logistic regression, decision trees, random forest, XGBoost/LightGBM/CatBoost, SVM, kNN, naive Bayes, clustering, PCA |
03_feature_engineering/ |
new | encoding, scaling, selection, leakage, imbalanced data/SMOTE, feature stores |
04_model_evaluation/ |
new | cross-validation, precision/recall/F1, ROC-AUC vs PR-AUC, confusion matrix, calibration, metric choice by problem |
05_deep_learning/ |
new | perceptron → backprop, optimizers, CNN, RNN/LSTM, regularization, batch norm, transfer learning |
06_transformers_llm/ |
rewrite 01_llm_fundamentals |
attention, KV cache, MoE, reasoning models, test-time compute, tokenization, context windows |
07_training_finetuning/ |
expand | pretraining, SFT, RLHF/DPO, LoRA/QLoRA, distillation, quantization |
08_inference_serving/ |
new | vLLM, continuous batching, speculative decoding, KV-cache management, latency/cost/throughput trade-offs |
09_rag_embeddings/ |
refresh | hybrid search, rerankers, chunking strategies, GraphRAG, agentic RAG, pgvector, eval of retrieval |
10_agents_orchestration/ |
rewrite | LangChain/LangGraph 1.0 (middleware, durable execution), multi-agent, planning, ReAct, A2A |
11_mcp/ |
expand from 1 file | spec 2026-07-28: stateless core, tools/resources/prompts, transports, auth, building servers/clients |
12_context_engineering/ |
new | context windows, compaction, memory systems, sub-agents, retrieval-vs-context trade-off |
13_evaluation/ |
thin → build | offline/online eval, LLM-as-judge, RAGAS, regression suites, A/B testing, test-set design |
14_guardrails_safety/ |
new | prompt injection (OWASP LLM Top 10), jailbreaks, PII, output validation, EU AI Act |
15_mlops_llmops/ |
new | MLflow, model registry, drift detection, monitoring, CI/CD for models, OTel GenAI conventions |
16_ml_frameworks/ |
refresh | PyTorch, TensorFlow, scikit-learn, JAX; Optuna/AutoGluon |
17_ml_system_design/ |
new | design a recommender, fraud detection, search ranking, a RAG chatbot at scale, an agent platform |
Progress
- 3.1 done (2026-08-08). Restructured
ai_ml/into the target numbering and rewrote every inbound link. Wrote00_math_foundations/(4 files),01_ml_foundations/(6),02_classical_ml/(9), plus folder READMEs and anai_ml/README.mdindex. 2,329 lines of new content; all files carry an## Interview anglesection and none use the legacy styles. - 3.2 done (2026-08-08).
03_feature_engineering/(6 files),04_model_evaluation/(6),05_deep_learning/(7), plus folder READMEs. 2,373 lines. Converted the phase-3.1 forward references into real links now that their targets exist. - 3.3 done (2026-08-08). Rewrote
06_transformers_llm/: deleted 4 legacy Q&A files (3,831 lines of GPT-4-era content), wrote 8 new files covering architecture, GQA/MLA, tokenization, RoPE, KV cache, MoE, reasoning models and context windows. Built07_training_finetuning/(4 new + the rehomed fine-tune-vs-RAG file) and08_inference_serving/(2 new). The 731-line ethics file is parked as_pending_14_ethics_and_safety.mdfor rewrite in 3.5. - 3.4 done (2026-08-08). MCP expanded 1 -> 3 files for the 2026-07-28 stateless-core revision. Agents rewritten 15 -> 12 files: deleted 10 pre-1.0 files (2,740 lines) and wrote 7 covering the agent loop, LangGraph 1.0 middleware and durable execution, multi-agent patterns, MCP-vs-A2A, and failure modes. RAG gained hybrid search + reranking and agentic RAG + evaluation. Context engineering rebuilt from 4 thin files to 2 real ones.
- Forward references to folders arriving in 3.5-3.6 are written as plain code spans rather than links, so the link checker stays green. Each sub-phase relinks the ones it creates; 3.6 sweeps the rest.
Suggested session split: (1) 00–02 foundations + classical, (2) 03–05 features/eval/DL, (3) 06–08 transformers/training/serving, (4) 09–12 RAG/agents/MCP/context, (5) 13–15 eval/guardrails/MLOps, (6) 16–17 frameworks + ML system design.
Exit criteria: a classical-ML interview question (“explain bias-variance”, “which metric for an imbalanced fraud dataset”, “how would you detect drift in production”) is answerable from these notes.
Phase 4 — Backend Python core
2–3 sessions. Every file read and brought to standard.
-
02_python_core(34 + typing 7 + stdlib 8 + performance 6 + packaging 4 + tricky 48) — Python 3.14 baseline; rewrite the 7 emoji-style files; new notes on t-strings (PEP 750), deferred annotations (PEP 649), subinterpreters (PEP 734); makeuvthe primary answer in packaging. -
03_python_oop(10 files, 7 in emoji style) — restyle; content is deep and good, keep it. -
04_async_concurrency— after the Phase 2 merge, rewrite the GIL and threads-vs-processes story around free-threading being official in 3.14. This is the single most-changed Python interview topic since these notes were written; subinterpreters are now a fourth option. -
05_testing— fill theintegration/stub; pytest + hypothesis current. -
01_theory_foundations— SOLID/patterns are timeless; verify only.
Phase 5 — Backend platform & data
3–4 sessions. Ordered by your own interview debrief in techcheck/questions.md.
- Architecture (
13_architecture_design,14_microservices) — monolith vs microservices, clean architecture, EDA, outbox, saga + the distributed-rollback/compensating-transaction scenario your debrief names. - Databases (
08_databases) — Postgres 18, SQLAlchemy 2.0 async, sharding, indexes, isolation. Fill16_alembic,17_mysql,18_sqlite. - Queues (
10_message_queues) — Kafka 4.x/KRaft rewrite (biggest staleness in this area), RabbitMQ, Celery, Temporal. Fillrq/01. - Caching (
09_caching) — Redis 8, the license split, fill thevalkey/stub. - Protocols/web (
06_web_frameworks,07_rest_apis,12_protocols) — FastAPI 0.136/Pydantic v2, Django 6.1 (5.2 LTS), fill or dropflask/andlitestar/. Restyle the 9**Answer:**FastAPI files and 8 Streamlit files. - Auth/security (
11_authentication,25_security) — add passkeys/WebAuthn depth, supply chain/SBOM.
Phase 6 — DevOps / platform
2 sessions.
-
16_docker,17_kubernetes— K8s Gateway API (currently 0 mentions, GA and replacing Ingress), probes/HPA,python:3.14-slim. -
18_iac— Terraform + the BSL license split / OpenTofu story (0 mentions); fill02_ansible. -
27_cicd,26_code_quality— Ruff + uv in CI; fill01_formattersand02_linters; SBOM/SLSA. -
15_observability— OpenTelemetry current, OTel GenAI semantic conventions for LLM tracing. -
19_cloud_aws— after pruning, deepen the kept services; add Bedrock/AgentCore depth for the AI angle. - New: FinOps, platform engineering, progressive delivery (already drafted, uncommitted).
Phase 7 — Frontend
2 sessions.
- Rewrite the 74 emoji-header files — concentrated in
05_react(18),03_javascript_core(8),07_state_managers(9). - React Compiler 1.0 — this is a guidance change, not a version bump: auto-memoization makes most
useMemo/useCallbackadvice in these notes actively wrong. Rewrite the memoization notes around it. - React 19.2 baseline; Server Components / Actions; Next.js 15+.
- Finish the Phase 2 split of the 9,850-line React README.
Phase 8 — System design, DSA, behavioral
2 sessions.
-
system_design— restyle the 20**Answer:**files; add first-class load balancing, CDN, replication/sharding, consistency models; deepen the 8 worked designs with data models and capacity math. -
24_dsa— add the absent patterns: monotonic stack, intervals, matrix, BST, tries, 2D DP/knapsack/LCS/edit-distance, greedy, bit manipulation. -
behavioral— files 01–11 are 20–58 lines and AI-workflow-heavy; make them real STAR stories. Add the 2026 questions: how you use coding agents, how AI changed your architecture and review practice. -
claude_certification— 7 single-README folders; refresh against the current MCP spec and Claude model roster.
Phase 9 — Final verification
1 session.
- Every row in
LEDGER.mdmarked reviewed. - Re-verify
STACK_BASELINE.mdend to end (it will be months old by then). - Full link check; rebuild
README.md; confirm one consistent style repo-wide. - Optional: publish as an MkDocs Material site — the structure already supports it.
Working rules
- One phase per session. Bundling causes sprawl — this repo has that scar already.
- Read before you write. Every file in a phase’s scope gets opened, not just the ones that look wrong.
- Web-verify before asserting. Any version, release date, or “X is deprecated” claim gets checked. Update
STACK_BASELINE.mdwhen you learn something new, in the same commit. - Update
LEDGER.mdin the same commit as the content change. - Commit per logical group; don’t push unless asked.
- Delete freely. A 1-line stub is worse than no file — it implies coverage that isn’t there.
- Date what will rot. “As of 2026-08, …”.
Progress
| Phase | Scope | Status |
|---|---|---|
| 0 | Foundation | done 2026-08-08 |
| 1 | Whole-repo sweeps | done 2026-08-08 |
| 2 | Prune | done 2026-08-08 |
| 3.1 | AI/ML - math, ML foundations, classical ML | done 2026-08-08 |
| 3.2 | AI/ML - features, evaluation, deep learning | done 2026-08-08 |
| 3.3 | AI/ML - transformers, training, serving | done 2026-08-08 |
| 3.4 | AI/ML - RAG, agents, MCP, context engineering | done 2026-08-08 |
| 3.5 | AI/ML - evaluation, guardrails, MLOps | done 2026-08-09 |
| 3.6 | AI/ML - frameworks, system design, cross-link pass | done 2026-08-09 |
| 4 | Backend Python core | done 2026-08-09 |
| 5 | Backend platform & data | done 2026-08-09 |
| 6 | DevOps / platform | done 2026-08-09 |
| 7 | Frontend | done 2026-08-09 |
| 8 | System design, DSA, behavioral | done 2026-08-09 |
| 9 | Final verification | done 2026-08-09 |
| 10 | Style unification + depth pass | done 2026-08-10 |
| 11 | Vacancy gap closure (6 live Python roles) | done 2026-08-10 |
Phase 11 — vacancy gap closure (2026-08-10)
Audited the repo against the combined technology list of six live Python vacancies. 16 technologies had zero coverage; 4 more had one file. Everything below closes those gaps.
| New | Closes |
|---|---|
backend/30_quant_fintech/ (9 files) |
market data and its biases, backtesting, vectorbt/Backtrader/QuantConnect, portfolio optimization, ML for finance, FIX protocol, Python performance for quant, trading risk and production |
backend/31_healthcare_regulated/ (5 files) |
HL7 v2, FHIR R4/R5/R6, OMOP, CDISC, terminology mapping; PHI/HIPAA/BAA, de-identification; GxP, ALCOA+, 21 CFR Part 11, CSV and the risk-based CSA approach; clinical document intelligence |
backend/29_data_engineering/06_data_architecture/ (4 files) |
data mesh, data contracts, federated architecture; ELT/CDC/idempotent backfills, Airflow 3, dbt + Fusion; catalogue, governance, column-level lineage |
backend/05_testing/qa_engineering/ (3 files) |
QA methodology and ISTQB test-design techniques; automation framework architecture, API testing, load/stress/soak, cross-browser |
ai_ml/18_speech_and_realtime/ (3 files) |
STT/TTS, and realtime voice agents — latency budget, turn detection, barge-in, WebRTC |
backend/21_cloud_gcp/02_gke_in_practice.md |
GKE Autopilot vs Standard, Workload Identity, Gateway API, the three autoscalers, cross-cloud identity federation |
methodologies/08_ai_assisted_development.md |
AI-DLC (Inception/Construction/Operations, “bolts”), and the Kiro/Antigravity/Codex/Claude Code landscape |
Web-verified before writing and recorded in STACK_BASELINE.md: Backtrader is effectively unmaintained; FHIR R6 is still in ballot (R4 is what EHRs implement); the Fivetran/dbt Labs merger completed 2026-06-01 and dbt Core v2.0 open-sourced the Fusion engine; Airflow 3.3.0; Iceberg v3 GA; CSA supersedes the binder-heavy CSV interpretation.
Honest gaps left documented rather than faked: Go, Scala, Node.js depth, options pricing, DICOM.
Phase 10 — style unification and depth pass (2026-08-10)
Not in the original plan; added because the phase-9 verification showed the repo was correct but not yet uniform.
- Emoji removed repo-wide — 147 files, including orphaned variation selectors that broke TOC anchors.
**Answer:**Q&A blocks removed — all remaining files converted to prose.## Interview angleadded to 190 files acrossbackend,ai_ml,devops,aws,behavioral,24_dsa,frontendandsystem_design, in seven batches. Every content file now closes with one.system_design/rebuilt —02_resilience10 thin files -> 4 real notes;01_api_integrations13 -> 4;03_async_patterns4 -> 1;04_secrets_config2 -> 1;05_observabilityconsolidated; folder index written.- MINT techcheck —
techcheck/mint_tech_check/created from the interview debrief; 29 of 33 stack items mapped to notes, 3 gaps filled (dependency-injectorrewritten from a 33-line generic note, LlamaIndex, model-provider abstraction), Go and Scala documented as honest gaps. - React modernised —
react.mdrewritten for the Vite / Next.js era (it recommended the archivedcreate-react-app);react_2.mddeleted as a duplicate teaching manual memoization that React Compiler 1.0 makes wrong. frontend/06_vue/expanded 15 -> 25 files to match05_reactin depth: Vue Router, composables and VueUse, TypeScript, template syntax and directives, compiler internals and patch flags, versions and Vapor Mode, forms and validation, component libraries, data fetching, and a Vue-vs-React comparison.01_vue_overview.mdrewritten from a 700-line project-specific guide into a real entry point. Vue rows added toSTACK_BASELINE.md(3.5.41 stable, 3.6 still RC).