T4.1 W05 Hardening Residuals¶
| ID | Sev | Status | Notes |
|---|---|---|---|
| T4W05-R-001 formal draft/complete/correct-with-reason | S2 | PARTIAL | Path A closed: reopen requires reason + audit. Formal DEC-006 state machine remains NOT_IMPLEMENTED. |
| T4W05-R-002 daily gate dual-mode | S3 | OUT OF W05 | GBN PAUD still depends on /attendance/daily. Do not fail-close that surface for those tenants. |
| T4W05-R-003 combined multi-session E2E depth | S3 | PARTIAL | Unchanged from T4-W05. |
| T4W05-R-004 proof upload content validation | S2 | CLOSED (bounded) | Size + magic-byte/type. No malware scanner; DPO full scan remains out of scope. |
| T4W05-R-005 smart/RFID/HR | S3 | NOT CERTIFIED | Explicit non-goals. |
| T41-R-404 nodb HTTP 404 | S1 | DEV-FIXED / PROD-OPS | SSE no longer holds the request cursor. Daily check-in/out may retry one transient POST (overwrite). Sheet first-save does not re-POST: it reconciles via GET is_submitted / line_id. Correction does not treat GET submitted as success (sheet was already done); GET must match line flags/remark, otherwise one re-POST with correction_reason is allowed. Production db_maxconn is a per-tenant ops change — see docs/operations/runbooks/odoo-db-connection-budget.md. Do not restart GBN without authorization. |
Gate B decisions (still required for full STAB-019)¶
- Who may complete vs correct; whether wakasek kesiswaan may mutate
- School-day cutoff (local midnight, end of session, or T+N hours)
- Reason codes vs free text; minimum length policy beyond path A
- Approval for late correction; self-approval ban
- Meaning of
draft/done/corrected; cancel vs in-place correct - When students/parents see the new value; in-app notify on failure
- Immutable audit field set if chatter + correction log is not enough
Non-goals¶
RFID, smart attendance, HR attendance, ATTEND+, promote RC1.1 to GBN, fail-close daily on PAUD, restart odoo-prod without explicit authorization.