You will use an AI assistant in strict read-only mode to build an accurate mental model of a ~3,000-line service you have never seen, and prove that model is accurate — not just plausible.
The deliverables are an architecture brief, a dependency map, and a "danger list" of things that would bite anyone changing the code. This is the highest-confidence AI win in the 2025 Stack Overflow survey ("explaining unfamiliar code"), and it is the exact ramp-up skill services engineers need every time a new client codebase lands on their desk.
~90 minutes hands-on · Core track, Foundation difficulty.
No hosted repo exists — you generate the scaffold yourself, then deliberately forget how it was made. Use any capable chat model (Copilot Free chat, Gemini, Claude free tier) in Session A to generate; do the lab in a fresh Session B so the lab session has no memory of the generation.
Paste this into Session A:
Generate a deliberately gnarly but runnable Python order-fulfilment service
(~3,000 lines across 10-14 files, standard library only, no framework).
It must contain, without any marking comments: (1) one module whose name
misleads about what it does; (2) one function with a hidden side effect
(mutates state or writes a file); (3) one dead module nothing imports;
(4) two modules with a hidden circular-ish dependency resolved by a
late import; (5) global mutable state shared across at least 3 modules;
(6) one config value read in two places with different defaults.
Include a `main.py` that runs one happy-path order end to end and prints
a receipt. Also write TRAPS.md documenting exactly where each of the six
hazards lives (file, line, one-line explanation). Output each file in a
separate fenced block with its path as the first comment line.
Save every file. Do not read TRAPS.md. Verification checklist for the scaffold (run before starting):
find . -name "*.py" | wc -l returns 10–14; wc -l **/*.py totals 2,000+.python main.py runs and prints a receipt (fix trivial syntax errors in Session A if not).grep -c "^" TRAPS.md returns a number ≥ 12 (six entries exist) — counted, not read.grep -ril trap --include="*.py" . is empty). If not, have Session A strip them.If the scaffold fails any check, regenerate in Session A. Never patch it by hand in Session B — that is pre-reading the codebase.
main.py runs twice? Which config key is double-read and which default wins at runtime?Every claim in your brief must carry a file:line citation you personally opened. Uncited comprehension is vibes.
Keep one file, legacy-brief.md, containing the brief, dependency map, danger list, quiz answers, and your TRAPS.md score. Self-grading rubric:
Pass = 7/10.
On a client codebase where code may not leave the machine: use the client-sanctioned assistant only (Copilot Business with no-training flag, or Bedrock/Azure OpenAI in the client tenancy); if none exists, run a local model (Ollama + a Qwen-Coder-class model) — local models are genuinely adequate for comprehension even where they lag at agentic edits. Never paste client code into a personal free-tier chat. The artifact format is identical; the danger list becomes your ramp-up gift to the next engineer on the account.
There is no fixed key for this lab — your key is the TRAPS.md the generator wrote, which is why you must not read it until Verification. If TRAPS.md turns out to be inaccurate (the generator documented a hazard that isn't really in the code), score that hazard in your favour if your brief describes the code's actual behaviour correctly — the source is the ground truth, and noticing that documentation lies about code is itself the senior-engineer skill this lab trains.