T6E SC-LEARN Approved Product Contract¶
| Field | Value |
|---|---|
| Approver | Requesting user via current conversation (full package SC-LEARN → enable GBN plan) |
| Date | 2026-08-30 |
| Scope | SC-LEARN / W21 / PKG-LEARN-W21 only |
| Status | APPROVED_BY_REQUESTING_USER_CONVERSATION |
| Core V1 impact | None |
| Production authority | Exact demo candidate → UAT → GBN code promote, then separate SCOLA_CERTIFIED_ADDON_SKUS delta for SC-LEARN |
This record is the immutable SC-LEARN product contract for engineering. It does not certify Core V1, W07, SC-REPORT, or SC-ASSESS.
Bound platform decisions: DEC-001, DEC-003, DEC-005, DEC-007, DEC-012, STAB-024, STAB-028.
1. Package boundary¶
- SKU: SC-LEARN /
PKG-LEARN-W21 - Workflow: W21 — LMS course / content / assignment / submission lifecycle
- Installer:
scola_bundle_learning→scola_lms - Prerequisites: W00 PASS; W01/W02 teaching assignment and enrolled roster for learning context
- Overlay
GT-OVL-SC-LEARN: SC-REPORT commercial entitlement / UI / API surface off while certifying standalone LEARN (module may remain installed only via optional bridge auto-install when both present) - Gradebook → e-rapor propagation: out of scope (
BRIDGE-LEARN-REPORT-W07only after both SKUs certified)
2. Course lifecycle (authoritative)¶
Course (batch×subject teaching surface) states for certification:
draft → published → archived
Allowed transitions (fail closed otherwise):
| From | To | Actor |
|---|---|---|
draft |
published |
teacher with academics.lms.manage on assigned course |
published |
archived, draft |
same (unpublish only if zero graded submissions or explicit archive) |
archived |
draft |
manager reopen with audit |
Forbidden: publish without teaching assignment scope; cross-company course create/save.
3. Content / course items¶
- Item types in scope: material, assignment, discussion (read moderation)
- Create/update/delete only by assigned teacher (
academics.lms.manage) - Student may view published items for enrolled courses only (
academics.assignments.view/academics.lms.self.view) - Parent read only linked-child assignment visibility when entitled and related
4. Assignment submission¶
- Student submits only while item is open and enrollment valid
- Late: deny after
due_atunless teacher-set grace; no silent accept - One authoritative submission per student per item unless teacher allows resubmit (
max_attempts)
5. LMS grading (in-SKU)¶
- Teacher grades submissions with
academics.lms.manageoracademics.lms_gradebook.viewas contracted per surface - Publish LMS gradebook scores visible to student/parent per policy
- Does not write finalized report-card lines unless bridge entitled (fail-closed)
6. Idempotency and recovery (DEC-005)¶
- Duplicate submit same payload → success with existing submission id
- Autosave draft answers/files preserved across reconnect
- Resume uses same draft/submission record; no unauthorized reopen of graded work
7. Roles and capabilities (DEC-003)¶
| Action | Capability |
|---|---|
| LMS course/item CRUD, gradebook manage | academics.lms.manage |
| LMS gradebook view | academics.lms_gradebook.view |
| Teaching journal | academics.teaching_journal.view |
| Student assignment view/submit | academics.assignments.view / self LMS view |
| Schedule/session LMS calendar | academics.schedule.view |
| Parent child assignment read | parents.children.view / parents.portal.view |
Feature flag: all surfaces require scola_lms effective (entitled ∩ certified ∩ installed).
8. STAB-024 topology (mandatory for independent cert)¶
scola_lmsmust install without harddependsonscola_report_card- Peer glue (TP/CP M2M, curriculum group hooks that require report_card models) lives in
scola_lms_report_card(auto_install: True, dependsscola_lms+scola_report_card) scola_assessment_bridgeremains internal platform dependency (not a peer commercial SKU)- Fresh LEARN-only install must not pull
scola_student_activityvia report_card hard dep - Disposition: split + bridge —
APPROVED_PEER_SKU_ALLOWLISTstays empty for LEARN→REPORT
9. Cross-module (XMD)¶
- Base Learning works with SC-CORE + SC-LEARN only
- SC-REPORT absent/unentitled: LMS APIs that need report models return feature_disabled / omit fields; no crash
- SC-ASSESS not required; CBT menus remain gated by
scola_cbt
10. Evidence¶
- Runtime matrix: 11 rows
RT-W21-*PASS on exact FE/BE candidate - Identity bind:
backend_git_commit_sha+application_tree_hash(+ fixture version) in evidence JSON - Two reproducibility runs (QG-17) before GBN production promotion
- Overlay: disposable
scola_t6e_learn_audit_*only
11. GBN enable path¶
- Code/module promote exact candidate to GBN (does not by itself open LMS UI if allowlist omits SC-LEARN)
- Separate authorization: set
SCOLA_CERTIFIED_ADDON_SKUS=SC-ADM,SC-FEES,SC-LEARN, restart, verifyscola_lms=true - Smoke: teacher digital-learning + LMS; negative unentitled/uncertified remains blocked
Non-goals¶
W07 standalone, BRIDGE-LEARN-REPORT-W07, SC-ASSESS allowlist, SC-REPORT allowlist, Core V1 TF freeze, changing company SKU lists beyond certified allowlist intersection, Spansa skip.