Files
learnharness/src/agent/prompts
amosblomqvist 9b9f6372fa quiz answers carry a confidence slider — raw probability, snapped 0/30/50/70/90/100
Owner design round 2026-10-01: every multiple-choice quiz answer now
carries the learner's stated probability that his selected answer is
correct — calibration data for the prober and teacher, the flow itself
unchanged.

Definition (owner ruling, after weighing chance-normalization): RAW
probability. Sub-chance reports are diagnostic gold, not dead space —
'picked an option, believes it wrong' is a real state. The agents get
the sophistication: new shared/25-confidence.md composes for both
agents (chance level, sub-chance = distrusts the pick, correct+low =
fragile, wrong+high = committed misconception, IDK = genuine gap).

- question-core: AnswerRequest/QuestionAnswerData.confidence (quiz
  only, optional — old records valid), buildAnswer clamps and drops it
  on dontKnow, formatAnswerMessage states the line, CONFIDENCE_STOPS +
  DEFAULT_CONFIDENCE_INDEX exported.
- question-dock: snapped slider below 'I don't know', above 'Your
  thinking' — native range over the stop INDEX so ←/→ step the uneven
  grid cleanly, Tab chain rows → slider → thinking, Enter submits from
  the slider too. Rests at 50 and always sends (owner: 50 must mean a
  real coin flip, never 'untouched'). 'I don't know' GRAYS it out —
  layout holds, no value sent.

Deliberately untouched: explain free-recall card (quiz-only scope),
answered-card rendering of confidence, ask flow.
2026-10-02 00:24:05 +03:00
..

Prompt fragments

System prompts are composed at agent construction (src/agent/teacher-agent.ts), one composition per agent — the probe/teach split (docs/probe-teach-split.md):

  1. src/agent/system-prompt.md — the SHARED base: the agent intro, the voice, the philosophy (why the system exists), and the accuracy rule. The teaching method (Principle i / Principle ii, the click, the arc, the hedge) lives in teacher/05-method.md — teacher-only since the prober never teaches.
  2. Every numeric-prefix *.md fragment in the agent's directory (prober/ or teacher/), in sorted filename order, joined with --- separators. The agent's own job and method LEAD the composition (the 2026-09-27 reorder). The loader enforces the numeric prefix (\d*-*.md) — other files (like this README) never enter the model's prompt.
  3. The shared/ fragments, as a trailing appendix (tool/file/format mechanics).

Rules for adding a fragment:

  • Name it with a numeric order prefix, inside the right agent directory.
  • shared/ fragments compose into BOTH agents (after the base and their own fragments — a trailing appendix): cross-agent doctrine only, phase-neutral by construction: 20-question-tools.md (tool MECHANICS only; what to ask is each phase's own doctrine), 30-learner-files.md, 40-formatting.md. The voice lives in the base (moved out of shared/ 2026-09-27). The "never reference the other agent's tools" rule below still applies, so shared fragments may only cover tools both agents actually hold.
  • One fragment per workstream — your brief tells you which filename you own.
  • Document YOUR agent's tools/behaviors exactly; reference tool input field names verbatim (they must match the zod schemas).
  • Keep it tight: fragments are always in context. No restating the base prompt.
  • The two agents share one transcript but never one toolset — never reference the other agent's tools as if you had them.