Skip to content

feat: add mastery-driven Tutor progression - #111

Merged
ttbombadil merged 20 commits into
mainfrom
feature/tutor-mastery-progression-stage-a
Sep 27, 2026
Merged

ttbombadil merged 20 commits into
mainfrom
feature/tutor-mastery-progression-stage-a

Conversation

@ttbombadil

@ttbombadil ttbombadil commented Sep 27, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Implements the mastery-driven Tutor progression contract from the approved SSOT at fdd641bbae30ceae8347f9835620c3d1274462d9.

  • Adds strict Tutor manifest v2 and Curriculum Topic v2 support while preserving v1 behavior.
  • Adds deterministic LEARN, DEEPEN, and EXPAND progression with explicit Topic mastery-domain classification.
  • Preserves multi-topic precedence, unresolved content-exhaustion blocking, fact-inapplicability mastery retention, and revision/session reset boundaries.
  • Adds phase-strategy precedence and validated expansion-target handoff.
  • Carries progression metadata through the existing Tutor API/dialog history without exposing answer evidence.
  • Keeps free Tutor fallback and existing revision/session authority intact.

Final review fixes

Final review fixes are included through 9315f55d9298873cbdda1e70d70fc32006069aac:

  • Tutor progression is request-transactional/copy-on-write; provider errors and invalid payloads do not persist progression mutations.
  • planInitial() determines the actual topic/phase before effective strategy resolution, preventing stale EXPAND strategy leakage after topic changes.
  • EXPAND questions use the selected objective in the final user-visible question while keeping target-topic activation matcher-driven.
  • EXPAND preserves the one-primary-question contract with exactly one final question mark.
  • Regression coverage verifies failed LEARN/DEEPEN/EXPAND turns, dialog transactions, strategy/topic alignment, objective realization, and one-question output.

Validation

  • Unit: 233 files, 2415 passed, 1 skipped.
  • Integration: 3 files, 13 passed, 1 skipped.
  • Playwright: 25 passed; no race-condition events.
  • Coverage: 83.44% statements, 72.84% branches, 84.44% functions, 85.64% lines.
  • Sonar Quality Gate: PASSED; new coverage 81.7%, new violations 0, bugs 0, vulnerabilities 0, security hotspots reviewed 100%, unresolved issues 0.
  • Build, TypeScript check, documentation check, and diff check passed.
  • Hosted CI run 36315744897: Clean-room reproducibility, Lint & Unit Tests, Arduino Toolchain Integration, Docker Sandbox Integration, and Playwright E2E all passed.

Docker/Capacity load testing was not rerun locally because Capacity and Docker behavior were not changed; the hosted Docker Sandbox Integration job passed.

Scope protections

Capacity implementation/defaults, Tutor Registry SSOT, the external UnoSim-Examples repository, and its pilot worktree were not modified.

Single-backend limitation remains: progression state is attached to the existing process-local opaque Course Content session with its current one-hour TTL; distributed session state is outside this Stage-A scope.

@ttbombadil
ttbombadil merged commit a2254bc into main Sep 27, 2026
5 checks passed
@ttbombadil
ttbombadil deleted the feature/tutor-mastery-progression-stage-a branch September 27, 2026 11:47
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.

1 participant