ADR-0005: Run Tier 1 as a Socratic dialogue with banned buzzwords and bounded follow-ups
Accepted
Status: accepted · 2026-10-24
Context
The coach must make the learner explain mechanisms in their own words, not recite terms. A local model left to itself tends to explain, summarise or quote.
Decision
- A round opens with one challenge that asks for the central mechanism, then alternates the learner's answer with either one follow-up or a conclusion (
passorfail, gaps, feedback). - Banned buzzwords are checked locally, ignoring case and diacritics (including
ł) and matching whole words only. An answer with one sends the same question back for a rephrase without calling the model. AftermaxRephrases(default 2) the answer is accepted, and the buzzwords used are added to the gaps. - At most
maxFollowUps(default 3) follow-ups; after that the round concludes even if the model wants to probe. - A challenge that quotes the note is asked again with the rejected text, up to
maxChallengeAttempts(default 3); then the round refuses to start. A follow-up that keeps quoting is replaced with a fixed neutral probe. - The Socratic rules are given to the model as instructions: one question per turn, never explain or hint, demand the mechanism, define terms plainly, probe the edges, challenge hand-waving.
- The buzzword list, the rules, the limits and the question language are configurable in
coach.config.json(sparring), with defaults in the domain. - The recorded answer is the first answer plus each follow-up and its answer.
Consequences
- These rules live in the
SparringRounddomain object, so they hold whichever model runs Tier 1. - The first real run on
gemma3:latestgave vague gaps and empty feedback; prompt tuning is expected.