Lewati ke isi

T2-W01 Result — Academic Master → Timetable Certification

Item Nilai
Mode Server · /home/scola/odoo
Tanggal 2026-08-11
Exit label T2 COMPLETE — W01 ACADEMIC MASTER → TIMETABLE CERTIFIED

Identity

Item Value
FE tip (pre-docs) 8004894c… on develop (= origin at T2 start)
FE application tree (T1-C) 40ad2da8… unchanged by docs-only tip
BE application commit 38d36d8c8a436c16464a9abf11a4d13e32693ac3 on main
BE prior tip 8cc5cca…
BE application tree hash b27bef604d430a201dc123db0b912d30699c5f12880cfc48db2b8634719f3502
FE tip (docs) 0cf05b87… on develop (= origin; docs/evidence tip; app tree unchanged)
FE application tree 40ad2da8… (T1-C)
Golden scola_golden · UUID 2bf5fd27-9390-11f1-9617-28e8d4be73f5 · fixture base gt-core-b1.1 + overlay gt-w01-1.0
DEC-003 18704cbd… unchanged
Runtime evidence run T2-W01-20260810T233046Z · 28/28 PASS
E1.2 Phase 28 rebind T0-E1.2-REBIND-CURRENT-20260810T2336Z · 29/29 PASS

Domain ownership decisions

  1. Timetable SSOT = op.session; rombel SSOT = op.batch; slots = scola.lesson.hours.
  2. Term = APPLICABLE (op.academic.term).
  3. Room = optional for Core sessions.
  4. op.teaching.assignment = OPTIONAL/LMS — Core teaching relation = op.session.faculty_id + op.batch.faculty*.
  5. Overlapping academic years not prohibited by API (documented Product rule).

Key fixes (BE 38d36d8)

  • session_save: lesson_hours_id, company-scope relation checks, end>start, savepoint (no partial commit on conflict), advisory locks + pre-check for concurrency.
  • academic_year_save: end≥start; term bounds inside year.
  • study_group_save: reject foreign-company course_id; savepoint on constraint errors.
  • FoundationAuditorDashboardApiController._scoped_model: accept active_test (MRO safety for academic APIs).
  • Harness: scripts/golden/w01_runtime_certify.py.

Evidence artifacts

  1. T2-W01-preflight.md
  2. T2-W01-domain-map.md / .json
  3. T2-W01-certification-denominator.json
  4. T2-W01-role-capability-matrix.json
  5. T2-W01-validation-matrix.md
  6. T2-W01-runtime-matrix.md
  7. T2-W01-evidence/ (incl. T2-W01-runtime-cases.json)
  8. T2-W01-residuals.md
  9. T2-W01-result.md (this file)

Happy / negative summary

  • Happy: year+terms → grade/subject/rombel → lesson hours → session create/update/delete/read consistency.
  • Negatives: invalid dates, foreign course/faculty/batch/subject, role mutate denied, RPC bypass blocked, conflict atomic, concurrent single-winner, duplicate submit rejected.

Explicit non-certifications

  • W02 NOT CERTIFIED
  • W05 NOT CERTIFIED
  • Optional packages (LMS/CBT/Report Card/…) NOT CERTIFIED

Adversarial self-review

  1. Timetable without academic context? No — batch requires year; session requires batch/subject/faculty.
  2. Foreign-company relations? No — denied without leak.
  3. Teacher double-book where forbidden? No — conflict + locks.
  4. Class double-book? No.
  5. Partial records after failed conflict? No — savepoint.
  6. Concurrent invalid schedule? No — one winner.
  7. Double-submit duplicates? No.
  8. Teacher mutate beyond scope? No — mutate denied.
  9. Student/parent mutate? No.
  10. Direct RPC bypass? No.
  11. FE/BE same critical rules? Yes — BE authoritative.
  12. Saved timetable survives reload / matches DB? Yes.
  13. Canonical schedule views agree? Yes (admin list ≡ DB; portal linkage residuals = FIXTURE_DATA only).
  14. Optional package certified? No.
  15. W02/W05 certified? No.
  16. T0/T1 regression still green? Yes (Phase 28 gates; see evidence).

Final label

T2 COMPLETE — W01 ACADEMIC MASTER → TIMETABLE CERTIFIED