RC1 W05-B Attendance Boundary Re-Audit (DEC-006/007)¶
Mode: server /home/scola/odoo
Date: 2026-08-29
Trigger: DEC-001 extension — bounded Core V1 manual attendance now includes daily gate + pickup registry; student RFID/face remain V2 (SC-ATTEND+).
Scope of this re-audit¶
This document amends the RC1.1-era treatment of /attendance/daily as INCOMPLETE_REMOVE / fail-closed. Historical RC1.1 evidence artifacts remain valid for the served pair audited at that time; this re-audit applies to the current application tip after DEC-006/007 approval.
Authoritative product matrix: T4-DEC-006-007-attendance-v1-matrix.md
Boundary after amendment¶
| Surface | productStatus | Package | RC1 disposition |
|---|---|---|---|
| W05-A per-lesson sheet | CORE_SUPPORTED | SC-CORE | Certified 16/16 (unchanged) |
/attendance/daily |
CORE_SUPPORTED | SC-CORE | W05-B — in V1 baseline |
/attendance/pickup-persons |
CORE_SUPPORTED | SC-CORE | W05-B — in V1 baseline |
/admin/rfid/*, face enroll |
OPTIONAL_GATED | SC-ATTEND+ | V2 optional; fail-closed Core-only |
| Employee HR attendance | OPTIONAL_GATED | SC-ATTEND+/SC-PEOPLE | Unchanged optional |
Engineering changes (current tip)¶
| Layer | Before | After |
|---|---|---|
| FE route meta | INCOMPLETE_REMOVE |
CORE_SUPPORTED |
| FE RC1 prefix guard | /attendance/daily blocked |
Removed from fail-closed prefixes |
BE FAIL_CLOSED_PRODUCT_SURFACE_RULES |
daily API denied | Entry removed; capability registry governs |
| Cancel notify | notify_parent ignored |
Wired when notify_parent=true (default false) |
Adversarial RC1 answers (revised)¶
| # | Question | Prior RC1.1 answer | Revised answer (current tip) |
|---|---|---|---|
| 15 | Visible Core menu leads to uncertified workflow? | Daily excluded | Daily/pickup are declared Core W05-B; RFID/face not Core-visible without SC-ATTEND+ |
| 16 | /attendance/daily outside W05? |
Yes; fail-closed | No — inside bounded manual attendance (W05-B); still requires company gate + capability |
| — | Daily API empty-success false green? | Harness rejected fail-closed denial | API returns normal roster/check-in when entitled; prior harness case obsolete for current tip |
| — | Student smart attendance masquerades as Core? | N/A | No — featureFlag: scola_smart_attendance + OPTIONAL_GATED sections |
Static verification (current tip)¶
| Check | Result | Evidence |
|---|---|---|
| T1-A inventory daily leaf | CORE_SUPPORTED |
execution/T1-A-surface-inventory.json → attendance.students.daily |
| T1-A nav graph | PASS | scripts/t1a/check-navigation-graph.mjs |
| RC1 policy unit test | daily not fail-closed | tests/unit/access/rc1CoreSurfacePolicy.spec.js |
| BE API gate with capability | allowed | test_rc1_daily_attendance_surface_available_with_capability |
| BE API gate without update cap | denied (not product_surface) | test_rc1_daily_attendance_surface_denied_without_capability |
| Attendance structure | cancel/notify wired | test_attendance_structure_unit.py |
| FE contract suite | PASS | npm run test:contract |
Runtime certification (scoladev 2026-08-29)¶
| Test ID | Status | Note |
|---|---|---|
| RT-W05-DAILY-POS-01 | PASS | P0-AT-DAILY-001 check-in UI + API |
| RT-W05-DAILY-STA-01 | PASS | w05_daily_sta_rec_certify.py — cancel/adjust + audit log |
| RT-W05-DAILY-REC-01 | PASS | notify_parent=True → notify_status=sent; idempotent deny |
| RT-W05-DAILY-UIA-01 | PASS | P0-AT-DAILY-002/003 + P0-AT-PICKUP-001 |
Evidence: execution/T4-W05-DAILY-evidence/RT-W05-DAILY-STA-REC-latest.json
E2E specs: tests/e2e/critical/daily_arrival_flow.spec.ts, pickup_registry_flow.spec.ts
RC1F-006¶
Demo immutable pair promoted 2026-08-29 after W05-A/W05-B current-tip rebind:
FE bc3ec030 + BE 6033c21 — evidence
RC1F-006-W05B-rebind-promotion-20260829T000200Z.json.
Production promotion remains unchanged and not authorized by this bundle.
Explicit non-claims¶
- Does not certify SC-ATTEND+ / W20 RFID ingestion
- Does not supersede RC1.1 served-identity records for demo/production still on older pair
- Does not mark RT-W05-DAILY-* PASS on demo/production until executed on exact candidate pair