Skip to content

feat(learn): tighten atomic-stage mastery to 5/5, keep composites at 4/5 (#12) - #31

Merged
tsenoner merged 2 commits into
mainfrom
fix/12-mastery-thresholds
Jun 23, 2026
Merged

feat(learn): tighten atomic-stage mastery to 5/5, keep composites at 4/5 (#12)#31
tsenoner merged 2 commits into
mainfrom
fix/12-mastery-thresholds

Conversation

@tsenoner

Copy link
Copy Markdown
Owner

Closes #12. Roadmap item 5/7.

The atomic recall/single-procedure stages could be cleared in a quick burst — mod7/months at 3/4 and leap/century/year at the default 4/5 — letting a learner advance with a foundational sub-skill that isn't reliable. Since those atoms feed every later answer, require a no-slip 5-of-5 on them. The composite stages keep the lenient 4/5 (they chain all the atoms, so one slip already fails the whole item).

Thresholds (your decision: all five atoms at 5/5)

stage before after
mod7, months 3/4 5/5
leap, century, year 4/5 5/5
thisyear, full 4/5 4/5 (unchanged)

Changes

  • curriculum.ts — set k/m per stage. STAGE_RULES derives from these, so the lesson dot tracker (now 5 dots for the atoms) and the "N more good answers" copy adapt automatically — no UI code change.
  • learnMastery.ts — doc-comment rewritten to the new atomic-vs-composite split (no logic change).
  • testsSTAGE_RULES + isStageDone rewritten for 5/5 (done only on 5-correct-in-5; a slip in the window blocks; a slip slides out after 5 more); the mod7-based useLessonDrill flow tests bumped 3/4 → 5/5.

Notes

  • The original issue's table listed a timed speed stage 8 and a 5/6 tier for thisyear/year — both dropped: PR fix(learn): drop the timed Stage 8 speed gate — accuracy unlocks Practice #17 removed the speed stage, and you chose a clean 5/5-atoms / 4/5-composites split.
  • Research caveat (recorded, not acted on): K=M=5 is a local 100% bar, stricter than the ~90% the evidence cites; durable retention ultimately needs spaced cross-session probes (a fair follow-up).

typecheck ✓ · lint ✓ · 297 tests ✓ · build ✓.

🤖 Generated with Claude Code

…4/5 (#12)

The atomic recall/single-procedure stages can be cleared in a quick burst, so the
old 3/4 (mod7, months) and 4/5 (leap, century, year) let a learner advance with a
foundational sub-skill that isn't reliable — and those atoms feed every later
answer. Require a no-slip 5-of-5 on the atoms; the composite stages (thisyear,
full) keep the lenient 4/5 since they chain all the atoms and one slip already
fails the whole item.

- curriculum.ts: mod7/months 3/4 → 5/5; leap/century/year add 5/5; thisyear/full
  keep DEFAULT 4/5. STAGE_RULES derives from these, so the dot tracker and the
  "N more good answers" copy adapt automatically.
- learnMastery.ts: doc-comment updated to the new split (no logic change).
- tests: STAGE_RULES + isStageDone updated (5/5 no-slip, slip-slides-out), and the
  mod7-based useLessonDrill cases bumped from 3/4 to 5/5.

(The timed speed stage was removed in #17 — dropped from the original proposal.)
Gates: typecheck, lint, 297 tests, build — all green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@vercel

vercel Bot commented Jun 23, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
daycipher Ready Ready Preview, Comment Jun 23, 2026 5:51pm

Cleanup from /simplify + /code-review on the mastery-threshold PR:
- migration.ts: drop the now-wrong "live 4-of-5 predicate" wording; the
  atomic stages are 5-of-5 now, and the latch point is ratio-agnostic anyway.
- learnMastery.ts: STAGE_RULES comment said composites "chain all the atoms",
  but thisyear precedes century/year; describe them as multi-step instead.
- useLessonDrill.test.ts: trim the redundant remaining-gap parenthetical
  (K and M gaps are identical once K==M).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@tsenoner
tsenoner merged commit 6090eb7 into main Jun 23, 2026
3 checks passed
@tsenoner
tsenoner deleted the fix/12-mastery-thresholds branch June 24, 2026 07:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Learn: tighten per-stage mastery thresholds for atomic stages, keep full-calc at 4/5

1 participant