Fix (/quiz, /twin, /chain, /mock)
Found by inspecting the course folder after driving the drills: twins/ held both 3.3_20260611_200351_sol.md (underscore) and 3.3_20260611-200703_sol.md (hyphen) for the same problem, because the <ts> placeholder was never given a concrete format — each run improvised one.
Each drill→/grade cycle stays self-consistent, so resolution still worked, but the course folder accumulates mixed-format filenames and the naming sits one stray format away from a resolution miss.
The exam-drill skill (loaded by every drill command) now pins <ts> = date +%Y%m%d_%H%M%S — generated once and reused for both the saved <id>_<ts>_sol.md and the printed answers/..._<ts>.pdf upload name.
Verified: /twin now writes 3.4_20260611_214437.md with a matching upload instruction.