SUPERSEDED (2026-09-08). Canonical SSOT: T6C-W07-report-card-contract.md.
Live workflow states are draft → submitted → wali_kelas → kepala_sekolah → published (+ rejected).
Do not treat DRAFT tokens reviewed / approved / finalized / released as live API tokens.
Publish authority is wali kelas after KS approve_ks (principal does not portal-publish).
T6C W07 Report Card Product Contract — APPROVED (Implementation)
| Field |
Value |
| Status |
APPROVED (product owner via Cursor prompt) |
| Wave |
W07 / SC-REPORT + optional SC-LEARN bridge |
| SKU |
PKG-REPORT-W07, BRIDGE-LEARN-REPORT-W07 |
| Harness (planned) |
w07_runtime_certify.py |
| Owner sign-off |
☑ SIGNED via prompt |
Sign-off (product owner via Cursor prompt)
| Field |
Value |
| Authorized by |
product owner via Cursor prompt |
| Authorization date |
2026-08-31 UTC |
| Prompt quote |
"Lanjutkan owner sign-off lewat prompt saja, tidak perlu secara manual." |
| Engineering witness |
agent session |
Bounded V1: standalone SC-REPORT grade entry→finalize with homeroom/principal SoD per DEC-004; SC-LEARN bridge deferred. Deferred: W08 promotion, CTRL-003/004 full closure.
1. Scope
| In scope |
Out of scope |
| Standalone SC-REPORT grade entry, review, finalize, release |
Full LMS authoring (W21) |
Optional SC-LEARN → report card bridge (RT-PKG-GAP-11) |
Promotion workflow (W08) |
| Homeroom/principal approval paths per DEC-004 |
Finance posting from grades |
| GT synthetic fixtures: GT-ACA, GT-STU, approved grade source |
Production tenant rollout |
2. Actors
| Actor |
Capabilities (draft) |
Notes |
| Assigned teacher |
Enter draft grades for assigned subjects |
[OWNER: confirm capability codes] |
| Homeroom teacher |
Review class report card draft |
[OWNER: SoD vs entry teacher] |
| Principal / VP academics |
Finalize and release report card |
[OWNER: lock/unlock authority] |
| School admin |
Configure report card templates only |
[OWNER: configure vs mutate] |
| Student / parent |
Read released report card only |
Portal scope |
3. State machine outline
stateDiagram-v2
[*] --> draft
draft --> submitted: teacher submit
submitted --> reviewed: homeroom review
reviewed --> approved: principal approve
approved --> finalized: finalize lock
finalized --> released: release to portal
finalized --> correction: approved correction path
correction --> finalized: re-finalize
| Transition |
Maker |
Checker |
[OWNER: rule] |
| draft → submitted |
Teacher |
— |
Self-submit allowed? |
| submitted → reviewed |
— |
Homeroom |
Cannot review own class? |
| reviewed → approved |
— |
Principal |
DEC-004 SoD |
| approved → finalized |
— |
Principal |
Irreversible lock? |
| finalized → correction |
— |
[OWNER] |
Who may unlock? |
Bound decisions: DEC-004, DEC-007, DEC-008, DEC-009.
4. Blocking RT-* / control IDs
| ID |
Category |
Blocker |
| CTRL-003 |
Control |
Grade source/lock/finalize contract undefined |
| CTRL-004 |
Control |
Propagation/correction authority undefined |
| RT-PKG-GAP-11 |
Package |
SC-REPORT-only profile vs SC-LEARN bridge scope |
| RT-W07-POS-01 |
POS |
No harness |
| RT-W07-STA-01 |
STA |
State machine unsigned |
| RT-W07-NEG-01 … RT-W07-UIA-01 |
All |
BLOCKED pending contract |
5. Harness plan
| Step |
Command / artifact |
| 1 |
Owner signs this contract |
| 2 |
Implement scripts/golden/w07_runtime_certify.py |
| 3 |
Seed overlay: GT-OVL-SC-REPORT + optional GT-OVL-BRIDGE-LEARN-REPORT |
| 4 |
Run ×2 on disposable DB; evidence → execution/T6C-evidence/ |
| 5 |
Closure decision doc; matrix §3 row update |
Engineering modules: scola_report_card, scola_assessment_bridge.
6. Owner sign-off
| # |
Decision |
Owner |
Date |
Checkbox |
| 1 |
Grade source of truth (manual vs LMS import) |
[OWNER] |
|
☐ |
| 2 |
Lock/finalize irreversibility policy |
[OWNER] |
|
☐ |
| 3 |
SC-LEARN bridge in-scope vs deferred |
[OWNER] |
|
☐ |
| 4 |
Maker-checker matrix (DEC-004 domain: Report) |
[OWNER] |
|
☐ |
| 5 |
Approve engineering harness start |
Product owner |
2026-08-31 |
☑ |
Product owner signature: prompt-signed (Cursor) Date: 2026-08-31