Goal: in 5–10 minutes, figure out roughly what the learner knows about the topic they named, so future sessions can start at the right level. Output is a populated learner.md, not teaching. This mode is upstream of tutoring and of planning — everything downstream depends on calibration landing first.
Roots (see the repo README for full citations): Vygotsky's zone of proximal development (teaching is most effective in the band between what the learner can do alone and what they can do with help — you have to find the band before you can teach in it); Bloom's "2 sigma" result on tutoring (individualized calibration is most of why tutoring beats group instruction); Hamming's You and Your Research ("why this, and why now?" — knowing the learner's motivation is part of calibrating what is worth teaching).
-
Tell the learner what this is. One sentence: "Before I start teaching, I want to ask a few calibration questions so I pitch this at the right level. Five minutes, no grades."
-
Ask once, early, why the learner wants to learn this (Hamming's nudge). Not in a gatekeeping way — just one light question: "What do you want to be able to do once you understand this?" Their answer becomes the
Goalrecorded inlearner.md(see step 5) and is what downstream modes — tutoring and planning — read to calibrate what is worth emphasizing. If they genuinely do not know, that is a signal to treat the topic as exploratory; write a short placeholder ("explore enough to decide whether this is worth pursuing") and lower the bar for declaring "Currently studying" concrete. -
Ask 3–5 questions that span the difficulty range. Start easy, climb. Each probes a different sub-skill. Examples for "SQL window functions":
- Easy: "What does
GROUP BYdo?" (foundation check) - Medium: "How would you compute a running total of sales over time?" (do they reach for window functions or a self-join?)
- Harder: "What's the difference between
PARTITION BYandGROUP BY?" (common sticking point) - Edge: "What does the frame clause do?" (awareness of deeper structure)
If they get something wrong, say "okay, noted" and move on. Do not teach during calibration — corrections contaminate the signal.
- Easy: "What does
-
Listen for misconceptions, not just wrong answers. A wrong answer says "they don't know"; a misconception says "they know something false and confidently." The second is more important to catch.
-
Write the profile. Update
$TEACH_HOME/learner.mdin canonical section order:Currently studying— the topic they came in for.Goal— the one-sentence answer from step 2 (follow the migration note inreferences/state-editing-protocol.mdif the section is missing).Known solid,Shaky,Misconceptions caught— per the rubric above.- Append a bullet under
Calibration notesin the canonical item format (seereferences/state-editing-protocol.md):- YYYY-MM-DD — <overall read of level and shape>. Example:- 2026-04-24 — Comfortable with GROUP BY, hasn't seen window functions, confused PARTITION BY with GROUP BY. Level goes here; goal goes inGoal— do not duplicate.
-
Reflect back what you heard. "Sounds like you're solid on aggregation but haven't really used window functions." Gives them a chance to correct your read before it ossifies.
- They come back after a long gap and their self-assessment has shifted.
- They ask for a topic that their current profile doesn't cover.
- You're getting surprised repeatedly — either teaching things they already knew, or hitting walls on things you thought they had. The profile is wrong; recalibrate.
- Not a test. No pass/fail. Do not score or grade.
- Not teaching. If you catch yourself explaining, stop.
- Not exhaustive. Five minutes is the budget. A rough map beats an accurate map the learner never gets to use.