Lewati ke isi

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 NofeatureFlag: 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.jsonattendance.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=Truenotify_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