Training Metadata Conventions¶
Metadata and tooling conventions for the learner asset system.
Session Runner¶
The session runner (tools/run_training_session.py) builds and runs mixed-mode
study sessions from flashcards, quiz questions, and scenarios.
Quick start¶
# List available drills and content
python3 tools/run_training_session.py list
# Run a named drill manifest
python3 tools/run_training_session.py run mixed-daily
# Build an ad-hoc session
python3 tools/run_training_session.py build --mode mixed --count 15
python3 tools/run_training_session.py build --mode flashcard --topic dns --count 10
python3 tools/run_training_session.py build --mode quiz --level L2 --count 5
# View session history
python3 tools/run_training_session.py history
# Or via Make
make run-training-session SESSION_ARGS="list"
Selection strategies¶
weak_first: prioritize topics in_state/weak_areas.tsvrandom: uniform randombalanced: equal representation across domains (round-robin)spaced: weak areas first, then random fill
Deterministic mode¶
Use --seed <int> for reproducible sessions.
Case Study Runner¶
The case study runner (tools/run_case_study.py) provides interactive review of
60 incident case studies across 4 domains.
python3 tools/run_case_study.py list
python3 tools/run_case_study.py run datacenter_ops/raid-degraded-rebuild-latency
python3 tools/run_case_study.py random --domain kubernetes_ops
python3 tools/run_case_study.py index --json
Case studies follow a structured reveal: symptoms → questions → solution → grading.
Progress and Analytics¶
# Full progress report
python3 tools/report_training_progress.py
# Specific views
python3 tools/report_training_progress.py --weakness
python3 tools/report_training_progress.py --recent
python3 tools/report_training_progress.py --recommend
python3 tools/report_training_progress.py --json
# Or via Make
make report-training-progress
State Directory¶
All learner state lives in training/interactive/_state/ (gitignored, learner-local).
| File | Schema | Purpose |
|---|---|---|
session_history.jsonl |
JSON lines (one object per session) | Full session history |
weak_areas.tsv |
topic, asset_type, miss_count, last_seen | Aggregated weak-area tracker |
scenario_log.tsv |
timestamp, scenario_id, topic, difficulty, self_grade | Scenario attempt history |
case_study_log.tsv |
timestamp, case_study_id, domain, self_grade | Case study attempt history |
quiz_log.txt |
freeform (legacy) | Quiz session log |
Session history records include: timestamp, session name, seed, items completed, average grade, per-item results with topic/grade, source type counts, topic counts.
Weak areas are updated after each session: grade <= 2 increments miss_count, grade >= 4 decrements it.
Confidence and Difficulty Weighting¶
Flashcard decks carry difficulty (easy/medium/hard).
Quiz questions carry level (L0–L3). Scenarios carry difficulty.
Topic Weighting¶
Topic weights live in training/interactive/registry/topics.yaml.
Each topic has a domain field used for balanced drill selection and coverage reporting.
Drill manifest convention¶
A drill manifest selects a mixed-mode session. Format (YAML):
name: Daily Mixed Drill
description: 15-minute mixed drill across weak areas
duration_minutes: 15
sources:
- type: flashcard
count: 10
strategy: weak_first
- type: quiz
count: 5
strategy: balanced
- type: scenario
count: 1
strategy: random
filters:
levels: [L1, L2]
exclude_topics: []
Asset Discovery¶
- Flashcard decks:
training/interactive/knowledge/data/cards/*.tsv - Quiz bank:
training/interactive/assessments/quiz_bank.yaml - Scenarios:
training/interactive/scenarios/*.yaml - Drill manifests:
training/interactive/drills/*.yaml - Case studies:
training/library/case-studies/<domain>/<case>/ - Anki exports:
training/interactive/anki/*.tsv
Tags Convention¶
Tags in flashcard decks are comma-separated lowercase strings. Tags in Anki exports are space-separated (Anki convention).