T4-W05 Bulk Write Contract¶
Combined multi-session group¶
Policy: ALL_OR_NOTHING
- Complete roster required across canonical sessions.
- Invalid/out-of-roster student fails before write.
- Child saves run under a DB savepoint; any child failure rolls back the group.
Single-session save¶
Policy: request-transaction atomic upsert (PARTIAL_UPSERT_ALLOWED for subset of roster)
- Only students in
session.batch_id.student_idsmay be written (invalid_student otherwise). - Payload may omit some roster members; omitted students are left unchanged.
- Mid-request failure aborts the HTTP request (no per-row savepoint).
- Upsert prevents duplicate lines for submitted students.
Explicit non-policies¶
- Not silent skip of invalid students with overall success.
- Not row-atomic commit of valid rows while keeping invalid rows when validation fails early.