decisionThe Codices

0010 — Enrolment and progress are recorded against the canonical catalog

A recorded institutional decision, with reasoning and result.

Authority rank
5
Version
v1.0
Adopted
unrecorded
Held by
Stewardship Office
System
SYS-10

Source · docs/codices/DECISIONS/0010-scholar-enrolment-and-progress.md · registered by rule

Decision

A Scholar's standing in the Academy is derived from two records only — enrollments (keyed user_id + path_slug, where the slug is school/program) and lesson_progress (keyed user_id + the canonical lesson path) — and every read of that standing is resolved against the canonical lrn_* catalog established in DECISIONS/0009. No progress is inferred, and no second source of truth is kept in the client.

Why

Article Zero requires one place for each thing. Progress written against editorial TypeScript slugs would drift the moment a course is revised in the database, so the lesson path is resolved through the catalog before a record is written or read.

How it works

  • src/lib/academy-progress.server.ts — enrol, withdraw, record a lesson, read standing and per-course progress, all through the caller's own authenticated client so row-level policies remain the single gate.
  • src/lib/academy-progress.functions.ts — protected server functions behind requireSupabaseAuth.
  • Completion is a Scholar's own claim of mastery ("I can act on what this taught"), not a play-time threshold: attention is never the measure.

What remains

Assessment attempts, credential award rules, and adaptive recommendation signals still write elsewhere; WF-01 stays partial until they resolve through the same standing.

Result (review: 2026-12-01)

To be written at the review date, whether or not it flatters the decision.