T2.1/W01 Independent Re-audit Runtime¶
R1 — teacher timetable read scope¶
Created disposable GT-T1 batch id=34, faculty 4, and session id=61; authenticated gt.teacher.assigned (faculty 3) and called POST /api/v1/academic/sessions/list without filters.
Result: successful response contained IDs [55, 59, 57]; disposable session 61 was absent. Temporary session and batch were deleted. Current source derives _session_actor_scope_domain() from the active role and ANDs it with company and caller filters. This independently closes the former same-tenant read leak for the tested teacher path.
R2 — academic-year/term atomicity¶
Submitted AUDIT21-INVALID-TERM with a term beginning before the academic year. API returned validation_error (“Rentang semester harus berada di dalam tahun ajaran.”). A privileged database check found no matching year row. Temporary audit data was removed.
Current source pre-validates nested terms before persistent writes and wraps year/term create/update in a savepoint. This independently closes the former partial-write defect for invalid create.
R3 — expanded engineering evidence review¶
The recorded T2.1-W01-20260811T010823Z matrix contains 64/64 PASS, including own/other/direct-ID/filter/count/homeroom scope, term-boundary and mixed-term atomicity, forbidden lesson-hour overlap, foreign profile, and teacher/student/parent/admin RPC create/write/unlink plus read/search variants. The matrix is structurally credible and includes DB before/after assertions.
R4 — identity validation¶
Rerunning e12_evidence_identity_validator.py against the recorded 01:15 manifest/results produced E12 VALIDATOR FAIL (8 issues). The failure is an evidence-chain defect, not a newly reproduced W01 behavior defect.