Pilot Traceability Matrix — W05 Daily Student Attendance¶
Matriks ini adalah gate fakta untuk materi dokumentasi pilot. Setiap baris adalah satu pernyataan atomik yang kelak dapat masuk ke workflow guide, quick guide, contextual help, field/action reference, troubleshooting, atau acceptance test. Baris berstatus belum final tidak boleh diubah menjadi janji produk.
Last verified: 2026-08-08
Mode: server development, static code audit only
Workspace root: /home/scola/odoo
Frontend HEAD: 0275f7061e6e892b1f860eeb825c6f6a21851888 (develop)
Backend HEAD: 44425cc81d8d281ec76e9336c30b3e109a7fc473
Runtime verification: belum dilakukan; tidak ada runtime write/test
Companion plan: pilot-attendance-plan.md
1. Aturan status¶
Hanya lima status berikut yang dipakai:
Confirmed from code: kontrak terlihat konsisten pada route, UI/service, dan backend current HEAD.Confirmed by existing documentation: bukti utamanya dokumen existing; tetap perlu pengecekan code/runtime bila dijadikan langkah wajib.Requires runtime verification: struktur code mendukung pernyataan, tetapi perilaku aktual, data, group efektif, mode, atau integrasinya belum diuji pada baseline tenant.Requires business confirmation: code tidak dapat menentukan policy/ownership/semantik final.Blocked by defect: pernyataan tidak aman atau tidak benar untuk diajarkan sampai defect diperbaiki dan diverifikasi.
Business confirmation menunjuk decision ID di pilot-attendance-plan.md. Tidak berarti tidak memerlukan keputusan bisnis tambahan, bukan berarti runtime sudah terbukti.
2. Teacher/homeroom entry dan session selection¶
| ID | Future documentation statement | Route | Component | Service | API endpoint | Backend controller/model | Business confirmation | Confidence status | Evidence |
|---|---|---|---|---|---|---|---|---|---|
| W05-T01 | Entry point kanonis guru untuk presensi per sesi adalah menu Presensi Mapel menuju /faculty/attendance. |
/faculty/attendance |
Faculty/Attendance.vue |
studentAttendance.service.js |
/api/v1/attendance/faculty/today-sessions |
AttendanceFacultyAPI.faculty_today_sessions; _faculty_today_sessions |
Tidak | Confirmed from code | src/config/apps/appFragments/teacherPortalApp.js:123-131; src/router/teacherRouteFragments/attendance.js:25-34; src/views/AttendanceManagement/Faculty/Attendance.vue:291-297; ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_faculty_api.py:8-10 |
| W05-T02 | Sekolah early-years/PAUD tidak memakai workflow per-sesi ini; route guru mengalihkan ke /attendance/daily. |
/faculty/attendance → /attendance/daily |
route guard; Faculty/Attendance.vue |
settings resolver | /api/v1/attendance/student/settings |
attendance mode service | ATT-D17 | Confirmed from code | src/router/teacherRouteFragments/attendance.js:6-13; src/views/AttendanceManagement/Faculty/Attendance.vue:269-289; src/services/attendance/studentAttendance.service.js:51-54 |
| W05-T03 | Daftar guru memuat sesi pada tanggal lokal hari ini, bukan date picker historis. | /faculty/attendance |
Faculty/Attendance.vue |
getFacultyTodaySessions |
/api/v1/attendance/faculty/today-sessions |
_faculty_today_sessions |
ATT-D17 | Confirmed from code | src/views/AttendanceManagement/Faculty/Attendance.vue:291-297; src/services/attendance/studentAttendance.service.js:396-399; ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:4056-4158 |
| W05-T04 | Guru hanya menerima sesi yang faculty-nya cocok dengan profil faculty user. | /faculty/attendance |
Faculty/Attendance.vue |
getFacultyTodaySessions |
/api/v1/attendance/faculty/today-sessions |
op.session; _faculty_today_sessions |
Tidak | Confirmed from code | ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:4056-4158; ownership diulang pada ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:4160-4194 dan ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:4196-4236 |
| W05-T05 | Wali kelas memakai jalur input yang sama ketika ia juga menjadi faculty sesi; status wali kelas sendiri tidak memberi akses ke sembarang rombel. | /faculty/attendance |
Faculty/Attendance.vue |
faculty endpoints | faculty endpoints | _check_roles; op.faculty/op.session ownership |
ATT-D01 | Requires business confirmation | Role homeroom diterima di ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:4057, tetapi filter faculty tetap berlaku di ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:4056-4158; homeroom mewarisi capability teacher di ../custom_addons_scola/gcgscola/scola_core/services/auth_capabilities.py:484-485 |
| W05-T06 | Search pada daftar sesi menyaring nama mata pelajaran, kelas/batch, atau label sesi yang dimuat. | /faculty/attendance |
Faculty/Attendance.vue |
tidak ada API tambahan | data today-sessions |
tidak ada mutation | Tidak | Confirmed from code | src/views/AttendanceManagement/Faculty/Attendance.vue:69-74,77-147,299-324 |
| W05-T07 | Label kartu sesi membedakan complete, partial, dan pending berdasarkan sheet/line yang diterima UI. | /faculty/attendance |
Faculty/Attendance.vue |
getFacultyTodaySessions |
/api/v1/attendance/faculty/today-sessions |
_faculty_today_sessions serializer |
ATT-D03 | Requires business confirmation | src/views/AttendanceManagement/Faculty/Attendance.vue:105-108; semantik state final belum diputuskan karena save langsung done di ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:4334 |
| W05-T08 | Route sheet kanonis adalah /faculty/attendance/sheet/:id; /faculty/attendance/attendance-sheet/:id hanya redirect legacy ke component yang sama. |
/faculty/attendance/sheet/:id |
Faculty/AttendanceSheet.vue |
getFacultySessionAttendanceSheet |
/api/v1/attendance/faculty/session-sheet |
AttendanceFacultyAPI.faculty_session_sheet; _faculty_session_sheet |
Tidak | Confirmed from code | src/router/teacherRouteFragments/attendance.js:37-47; src/services/attendance/studentAttendance.service.js:424-433; ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_faculty_api.py:12-18 |
| W05-T09 | Membuka sheet tetap divalidasi backend terhadap role, faculty ownership, session, dan attendance mode; mengetahui URL tidak memberi akses tambahan. | /faculty/attendance/sheet/:id |
Faculty/AttendanceSheet.vue |
getFacultySessionAttendanceSheet |
/api/v1/attendance/faculty/session-sheet |
_faculty_session_sheet |
Tidak | Confirmed from code | ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:4160-4194; route capability di src/router/teacherRouteFragments/attendance.js:37-42 |
3. Roster, field, status, dan proof¶
| ID | Future documentation statement | Route | Component | Service | API endpoint | Backend controller/model | Business confirmation | Confidence status | Evidence |
|---|---|---|---|---|---|---|---|---|---|
| W05-F01 | Roster awal sheet dibangun dari siswa pada session.batch_id. |
/faculty/attendance/sheet/:id |
Faculty/AttendanceSheet.vue |
getFacultySessionAttendanceSheet |
/api/v1/attendance/faculty/session-sheet |
_serialize_batch_student; op.batch/op.student |
Tidak | Confirmed from code | ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:2034-2091,2093-2168; UI hydrate src/views/AttendanceManagement/Faculty/AttendanceSheet.vue:713-731 |
| W05-F02 | Pada sheet baru, serializer saat ini memberi default Hadir untuk seluruh roster. | /faculty/attendance/sheet/:id |
Faculty/AttendanceSheet.vue |
session sheet fetch | /api/v1/attendance/faculty/session-sheet |
_serialize_batch_student |
ATT-D02 | Requires business confirmation | Default flags/status di ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:2034-2091; bulk toggle UI di src/views/AttendanceManagement/Faculty/AttendanceSheet.vue:526-546. Policy default Hadir belum disahkan. |
| W05-F03 | Status langsung yang tersedia di selector adalah Hadir, Izin, Alpa, dan Telat. | /faculty/attendance/sheet/:id |
Faculty/AttendanceSheet.vue; attendanceStatus.js |
save faculty sheet | /api/v1/attendance/faculty/session-sheet/save |
op.attendance.line booleans |
ATT-D06 | Confirmed from code | src/i18n/attendanceStatus.js:33-39; rendering selector src/views/AttendanceManagement/Faculty/AttendanceSheet.vue:104-177 |
| W05-F04 | Memilih Izin membuka modal dengan jenis Izin/Sakit/Dispensasi, keterangan, opsi tanpa bukti, dan file bukti. | /faculty/attendance/sheet/:id |
Faculty/AttendanceSheet.vue; attendanceStatus.js |
save faculty sheet | /api/v1/attendance/faculty/session-sheet/save |
op.attendance.line.remark/proof_file |
ATT-D06, ATT-D09 | Confirmed from code | Modal src/views/AttendanceManagement/Faculty/AttendanceSheet.vue:244-332; remark types src/i18n/attendanceStatus.js:46-54; status handler src/views/AttendanceManagement/Faculty/AttendanceSheet.vue:549-571 |
| W05-F05 | Izin siswa yang sudah approved dapat memprefill remark/evidence pada roster sheet. | /faculty/attendance/sheet/:id |
Faculty/AttendanceSheet.vue |
session sheet fetch | /api/v1/attendance/faculty/session-sheet |
permit lookup/bridge; _serialize_session_sheet |
ATT-D15 | Requires runtime verification | Approved leave merge terlihat di ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:1990-2032,2093-2168; runtime linkage permit-session belum dibuktikan end-to-end. |
| W05-F06 | Combined-session sheet menggabungkan roster beberapa session dalam satu group dan disimpan atomik. | /faculty/attendance/sheet/:id |
Faculty/AttendanceSheet.vue |
faculty session fetch/save | faculty session-sheet endpoints | _faculty_session_sheet_save; op.session combined group |
Tidak | Requires runtime verification | Combined branch dan validation ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:4238-4275; response ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:4276-4282; perlu seeded runtime group. |
| W05-F07 | Tombol Tandai Semua Hadir mengubah seluruh baris pada UI sebelum disimpan. | /faculty/attendance/sheet/:id |
Faculty/AttendanceSheet.vue |
tidak memanggil API saat toggle | — | — | ATT-D02 | Confirmed from code | src/views/AttendanceManagement/Faculty/AttendanceSheet.vue:526-546 |
| W05-F08 | Search pada sheet menyaring siswa; filter batch muncul untuk roster gabungan. | /faculty/attendance/sheet/:id |
Faculty/AttendanceSheet.vue |
tidak ada API tambahan | data session sheet | — | Tidak | Confirmed from code | src/views/AttendanceManagement/Faculty/AttendanceSheet.vue:87-102 |
| W05-F09 | File picker memberi hint browser image/PDF, tetapi batas itu bukan validasi server. | /faculty/attendance/sheet/:id |
Faculty/AttendanceSheet.vue |
save faculty sheet | /api/v1/attendance/faculty/session-sheet/save |
op.attendance.line.proof_file |
ATT-D09 | Blocked by defect | UI accept="image/*,.pdf" di src/views/AttendanceManagement/Faculty/AttendanceSheet.vue:314-319; FileReader tanpa size/type check src/views/AttendanceManagement/Faculty/AttendanceSheet.vue:592-603; backend menyimpan payload mentah ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:4323-4324. |
| W05-F10 | Dokumentasi dapat menyatakan batas ukuran/tipe, scanning, dan retention proof hanya setelah server menegakkannya. | /faculty/attendance/sheet/:id |
Faculty/AttendanceSheet.vue |
save faculty sheet | /api/v1/attendance/faculty/session-sheet/save |
op.attendance.line.proof_file/proof_filename |
ATT-D09 | Blocked by defect | Tidak ada field validation sebelum FileReader src/views/AttendanceManagement/Faculty/AttendanceSheet.vue:592-603; tidak ada validation pada controller loop ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:4307-4334. |
| W05-F11 | Sakit saat ini tidak boleh diajarkan sebagai status agregasi mandiri karena semua line excused dinormalisasi menjadi Izin. |
teacher, student, parent, admin | shared status renderers | daily/period/admin services | faculty save + portal reports | _line_status; op.attendance.line |
ATT-D06 | Blocked by defect | src/i18n/attendanceStatus.js:33-54; _line_status mengembalikan Izin untuk excused di ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:63-73; period aggregation memakai helper di ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:2855-2940. |
| W05-F12 | Sistem harus menentukan apakah tepat satu flag status wajib true untuk setiap siswa. | faculty/admin create pages | Faculty/AttendanceSheet.vue; Admin/AttendanceSheetNew.vue |
faculty/admin save | faculty save; admin sheet create | op.attendance.line boolean flags |
ATT-D02, ATT-D06 | Requires business confirmation | Faculty maps label ke flags src/views/AttendanceManagement/Faculty/AttendanceSheet.vue:680-704; admin handler dapat membuat semua flag false src/views/AttendanceManagement/Admin/AttendanceSheetNew.vue:332-345; backend tidak enforce XOR di ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:4307-4334 dan ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:3398-3422. |
4. Save, complete, correction, dan data integrity¶
| ID | Future documentation statement | Route | Component | Service | API endpoint | Backend controller/model | Business confirmation | Confidence status | Evidence |
|---|---|---|---|---|---|---|---|---|---|
| W05-M01 | Tombol Simpan guru mengirim session ID, optional sheet ID, dan array siswa ke satu endpoint save. | /faculty/attendance/sheet/:id |
Faculty/AttendanceSheet.vue |
saveFacultySessionAttendanceSheet |
/api/v1/attendance/faculty/session-sheet/save |
AttendanceFacultyAPI.faculty_session_sheet_save; _faculty_session_sheet_save |
Tidak | Confirmed from code | src/views/AttendanceManagement/Faculty/AttendanceSheet.vue:733-772; src/services/attendance/studentAttendance.service.js:435-445; ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_faculty_api.py:20-27 |
| W05-M02 | Penyimpanan saat ini langsung mengubah sheet menjadi done; tidak ada endpoint complete terpisah. |
/faculty/attendance/sheet/:id |
Faculty/AttendanceSheet.vue |
faculty save | /api/v1/attendance/faculty/session-sheet/save |
_faculty_session_sheet_save; op.attendance.sheet.state |
ATT-D03 | Requires business confirmation | ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:4334; hanya satu service mutation di src/services/attendance/studentAttendance.service.js:435-445; UI action src/views/AttendanceManagement/Faculty/AttendanceSheet.vue:190-240. |
| W05-M03 | Dokumentasi tidak boleh menyebut aksi submit, close, atau cancel terpisah untuk presensi per sesi current HEAD. | /faculty/attendance/sheet/:id |
Faculty/AttendanceSheet.vue |
faculty save only | faculty save only | _faculty_session_sheet_save |
ATT-D03 | Confirmed from code | Action UI src/views/AttendanceManagement/Faculty/AttendanceSheet.vue:190-240; satu save service src/services/attendance/studentAttendance.service.js:435-445; direct done di ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:4334. Ini mengoreksi inferensi docs/recon/workflow-candidates.md:22. |
| W05-M04 | Guru standar dapat membuat sheet baru beserta attendance line pada first save tanpa group legacy tambahan. | /faculty/attendance/sheet/:id |
Faculty/AttendanceSheet.vue |
faculty save | /api/v1/attendance/faculty/session-sheet/save |
_att_create_sheet; normal op.attendance.line.create |
Tidak | Blocked by defect | Sheet elevated di ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:4304-4307, line create normal di ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:4307-4332; teacher create=0 di ../custom_addons_scola/gcgscola/scola_attendance/security/ir.model.access.csv:4,8; attendance-user create=1 di ../custom_addons_scola/openeducat/openeducat_attendance/security/ir.model.access.csv:3-4; teacher only implies faculty at ../custom_addons_scola/gcgscola/scola_core/security/scola_security.xml:88-93. |
| W05-M05 | Endpoint guru harus menolak student ID yang bukan anggota roster session/batch. | /faculty/attendance/sheet/:id |
Faculty/AttendanceSheet.vue |
faculty save | /api/v1/attendance/faculty/session-sheet/save |
_faculty_session_sheet_save; op.student/op.batch |
Tidak | Blocked by defect | Regular loop menerima setiap submitted ID tanpa roster comparison di ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:4307-4334; combined branch memiliki exact-roster validation di ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:4238-4275, menunjukkan gap path regular. |
| W05-M06 | Complete harus menolak roster parsial/missing student agar absent submission tidak dianggap selesai. | faculty/admin fill | teacher/admin create components | faculty/admin save | faculty save; admin sheet create | _faculty_session_sheet_save; _admin_sheet_create |
ATT-D02, ATT-D03 | Blocked by defect | Faculty loop menerima students or [] di ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:4309-4334; admin hanya memerlukan array nonempty pada UI src/views/AttendanceManagement/Admin/AttendanceSheetNew.vue:369-381, backend loops supplied items ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:3398-3422. |
| W05-M07 | Complete harus menolak duplicate student IDs secara atomik. | faculty/admin fill | teacher/admin create components | faculty/admin save | faculty save; admin sheet create | _faculty_session_sheet_save; _admin_sheet_create |
Tidak | Blocked by defect | Regular faculty/admin map+loop tidak memvalidasi duplicate di ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:3398-3422,4307-4334; combined path sudah memiliki duplicate check di ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:4238-4275. |
| W05-M08 | Sheet yang sudah done saat ini dapat dibuka kembali dengan Edit dan disimpan ulang melalui endpoint yang sama. |
/faculty/attendance/sheet/:id |
Faculty/AttendanceSheet.vue |
faculty fetch/save | faculty session endpoints | _faculty_session_sheet_save; op.attendance.line.write |
ATT-D04, ATT-D05 | Confirmed from code | Edit mengubah state UI src/views/AttendanceManagement/Faculty/AttendanceSheet.vue:667-671; payload save src/views/AttendanceManagement/Faculty/AttendanceSheet.vue:733-772; line existing di-write dan sheet tetap done ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:4307-4334. |
| W05-M09 | Hak koreksi, cutoff, alasan wajib, approver, dan audit event belum boleh dijanjikan. | faculty/admin fill | teacher/admin create components | faculty/admin save | faculty save; admin sheet create | op.attendance.sheet/op.attendance.line |
ATT-D04, ATT-D05, ATT-D12 | Requires business confirmation | Payload UI/service tidak membawa correction reason/approval src/views/AttendanceManagement/Faculty/AttendanceSheet.vue:733-772; src/services/attendance/adminAttendance.service.js:119-132; backend direct create/write ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:3398-3422,4307-4334. |
| W05-M10 | Klaim bahwa save guru berhasil dan perubahan terlihat lintas role harus lulus runtime test dengan satu record yang sama. | teacher → admin/student/parent | semua component pilot | faculty save + admin/portal reads | all pilot endpoints | attendance controller/model | Tidak | Requires runtime verification | Existing E2E hanya teacher save/edit di tests/e2e/critical/teacher_attendance_flow.spec.ts:29-109; parent flow terpisah di tests/e2e/critical/parent_attendance_flow.spec.ts:8-41; belum ada one-record cross-role propagation test. |
5. Admin/operator monitoring dan correction¶
| ID | Future documentation statement | Route | Component | Service | API endpoint | Backend controller/model | Business confirmation | Confidence status | Evidence |
|---|---|---|---|---|---|---|---|---|---|
| W05-A01 | Hub monitoring kanonis operator adalah /attendance/sheets. |
/attendance/sheets |
Admin/AttendanceSheetList.vue |
listAdminAttendanceSheets |
/api/v1/attendance/admin/sheets |
AttendanceAdminAPI.admin_sheets; _admin_sheets |
ATT-D01 | Confirmed from code | src/router/attendanceRoutes.js:123-137; src/services/attendance/adminAttendance.service.js:64-68; ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_admin_api.py:65-67 |
| W05-A02 | /attendance/home adalah entry dashboard yang berbeda; jangan diduplikasi sebagai halaman sheet list. |
/attendance/home |
AttendanceHome.vue |
attendance settings/dashboard dependencies | mixed | mixed | Tidak | Confirmed from code | src/router/attendanceRoutes.js:42-50; sheet list terpisah di src/router/attendanceRoutes.js:123-137. |
| W05-A03 | Sheet list memiliki search, date filter, pagination, dan filter attendance_scope=per_lesson. |
/attendance/sheets |
Admin/AttendanceSheetList.vue |
listAdminAttendanceSheets |
/api/v1/attendance/admin/sheets |
_admin_sheets |
Tidak | Confirmed from code | UI controls src/views/AttendanceManagement/Admin/AttendanceSheetList.vue:92-122; table columns src/views/AttendanceManagement/Admin/AttendanceSheetList.vue:194-199; client scope filter src/views/AttendanceManagement/Admin/AttendanceSheetList.vue:290-299. |
| W05-A04 | Panel pending memuat sesi unit pada tanggal pilihan yang belum memiliki sheet done. |
/attendance/sheets |
Admin/AttendanceSheetList.vue |
listAdminPendingSessions |
/api/v1/attendance/admin/pending-sessions |
_admin_pending_sessions; op.session/op.attendance.sheet |
ATT-D03 | Confirmed from code | src/views/AttendanceManagement/Admin/AttendanceSheetList.vue:20-65,309-332; service src/services/attendance/adminAttendance.service.js:48-61; backend ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:3189-3280; route ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_admin_api.py:38-44. |
| W05-A05 | Form operator memilih register, session, tanggal, lalu mengubah status/remark per siswa. | /attendance/sheets/create |
Admin/AttendanceSheetNew.vue |
options/draft/create services | /api/v1/attendance/admin/sheet/options; /draft; /create |
_admin_sheet_options; _admin_sheet_draft; _admin_sheet_create |
ATT-D01, ATT-D04 | Confirmed from code | Route src/router/attendanceRoutes.js:151-159; fields src/views/AttendanceManagement/Admin/AttendanceSheetNew.vue:14-64,103-141; load src/views/AttendanceManagement/Admin/AttendanceSheetNew.vue:258-330; submit src/views/AttendanceManagement/Admin/AttendanceSheetNew.vue:369-396; controller routes ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_admin_api.py:34-63. |
| W05-A06 | Memilih session/tanggal yang sudah memiliki sheet memuat line existing, dan submit endpoint create memperbaruinya. | /attendance/sheets/create |
Admin/AttendanceSheetNew.vue |
draft/create | /api/v1/attendance/admin/sheet/draft; /api/v1/attendance/admin/sheet/create |
_admin_sheet_draft; _admin_sheet_create |
ATT-D04, ATT-D05 | Confirmed from code | Draft load src/views/AttendanceManagement/Admin/AttendanceSheetNew.vue:258-330; create service src/services/attendance/adminAttendance.service.js:119-132; existing sheet lookup/update di ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:3335-3423. |
| W05-A07 | Backend mutation allowlist menerima canonical admin, admin_staff, school_admin, head_admin, legacy aliases admin staff, staff, administrator, super admin, dan groups admin terkait; allowlist implementasi ini bukan keputusan supported-role. |
admin fill routes | admin components | admin services | admin mutation endpoints | _admin_access_error |
ATT-D01, ATT-D04 | Requires business confirmation | Role/group allowlist ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:146-166; setiap admin mutation memanggilnya termasuk create ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:3335-3337. Policy owner belum disahkan. |
| W05-A08 | Principal dan wakasek kesiswaan adalah reader sheet/detail, bukan operator koreksi. | principal/VP attendance routes | shared AttendanceSheetList.vue; AttendanceBySession.vue |
admin read services | /admin/sheets; /admin/sheet-lines |
_student_attendance_read_access_error |
ATT-D10 | Confirmed from code | Routes src/router/principalRoutes.js:196-223; src/router/vicePrincipalRoutes.js:214-231; read allow ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:168-199; mutation excludes them ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:146-166. |
| W05-A09 | UI principal/VP tidak boleh menampilkan Create/Pending/Fill bila backend mempertahankan read-only policy. | principal/VP shared list | AttendanceSheetList.vue |
admin services | admin pending/create | _admin_access_error |
ATT-D10 | Blocked by defect | Shared UI gates mutation hanya dengan students.attendance.edit at src/views/AttendanceManagement/Admin/AttendanceSheetList.vue:9-20,192; principal/VP share component at route refs above, sedangkan backend rejects at ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:146-166. |
| W05-A10 | Detail sheet admin bersifat read-only dan menyediakan ekspor PDF/Excel dari data yang sudah dimuat. | /attendance/session/:sheetId; principal/VP aliases |
Admin/AttendanceBySession.vue |
getAdminAttendanceSheetLines |
/api/v1/attendance/admin/sheet-lines |
_admin_sheet_lines; op.attendance.line |
ATT-D14 | Confirmed from code | Canonical route src/router/attendanceRoutes.js:31-40; aliases src/router/principalRoutes.js:216-223, src/router/vicePrincipalRoutes.js:225-231; export actions src/views/AttendanceManagement/Admin/AttendanceBySession.vue:46-88; fetch src/views/AttendanceManagement/Admin/AttendanceBySession.vue:133-158; service src/services/attendance/adminAttendance.service.js:83-88. |
| W05-A11 | Status legend/export admin harus memakai glossary kanonis yang sama dengan teacher dan portal. | admin detail aliases | AttendanceBySession.vue |
admin detail | /api/v1/attendance/admin/sheet-lines |
_line_status; serializer |
ATT-D06 | Blocked by defect | src/views/AttendanceManagement/Admin/AttendanceBySession.vue:124-129,217-224 memuat mapping/comment yang tidak konsisten; backend collapses excused at ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:63-73. |
| W05-A12 | Endpoint admin harus menolak student ID out-of-roster dan cross-company walaupun controller memakai elevated line model. | /attendance/sheets/create |
AttendanceSheetNew.vue |
create admin sheet | /api/v1/attendance/admin/sheet/create |
_admin_sheet_create; _att_sudo_line_model |
Tidak | Blocked by defect | Elevated line model dan trusted submitted ID loop ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:3398-3422; global company record rules ada di ../custom_addons_scola/gcgscola/scola_attendance/security/attendance_security.xml:10-29, tetapi elevation tidak menggantikan explicit student/session scope validation. |
6. Student dan parent visibility¶
| ID | Future documentation statement | Route | Component | Service | API endpoint | Backend controller/model | Business confirmation | Confidence status | Evidence |
|---|---|---|---|---|---|---|---|---|---|
| W05-P01 | Siswa membuka attendance pribadi melalui /student/attendance. |
/student/attendance |
Student/Attendance.vue |
student daily/period services | /api/v1/attendance/student/daily; /student/period-report |
AttendancePortalAPI.student_daily/student_period_report |
Tidak | Confirmed from code | src/router/studentRouteFragments/core.js:25-33; service src/services/attendance/studentAttendance.service.js:311-314,368-379; controller ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_portal_api.py:8-18. |
| W05-P02 | Halaman siswa memuat detail tanggal dan ringkasan periode mingguan. | /student/attendance |
Student/Attendance.vue |
getStudentDailyAttendance; getStudentAttendancePeriodReport |
student daily/period-report | _student_daily; _student_period_report |
ATT-D06 | Confirmed from code | Fetch src/views/AttendanceManagement/Student/Attendance.vue:98-174; period controls src/views/AttendanceManagement/Student/Attendance.vue:213-239; session detail src/views/AttendanceManagement/Student/Attendance.vue:299-356. |
| W05-P03 | Siswa hanya dapat membaca profil student yang terkait ke user aktif. | /student/attendance |
Student/Attendance.vue |
student services | student daily/period-report | _student_from_user; role check |
Tidak | Confirmed from code | Identity/role resolution ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:2942-2970; endpoints delegate via ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_portal_api.py:8-18. |
| W05-P04 | Orang tua membuka attendance melalui /parent/attendance, lalu memilih anak tertaut. |
/parent/attendance |
Parent/Attendance.vue |
parent children/daily/monthly/period services | /api/v1/attendance/parent/children; parent report endpoints |
AttendancePortalAPI; parent-child resolver |
Tidak | Confirmed from code | src/router/parentRouteFragments/core.js:35-43; children service src/services/attendance/studentAttendance.service.js:316-327; component fetch src/views/AttendanceManagement/Parent/Attendance.vue:198-300; backend resolver ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:2835-2853,2971-3058. |
| W05-P05 | Orang tua tidak boleh meminta student ID yang tidak ada dalam child list miliknya. | /parent/attendance |
Parent/Attendance.vue |
parent daily/monthly/period | parent endpoints | _resolve_child_for_parent |
Tidak | Confirmed from code | Child resolver ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:2835-2853; parent endpoint access/identity ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:2971-3058. |
| W05-P06 | Halaman orang tua menampilkan rekap bulanan/mingguan dan membuka detail hari/session dari tanggal yang dipilih. | /parent/attendance |
Parent/Attendance.vue; AttendanceDayDetailPanel.vue |
parent monthly/period/daily | parent endpoints | parent serializers | ATT-D06 | Confirmed from code | Fetch src/views/AttendanceManagement/Parent/Attendance.vue:238-300; controls src/views/AttendanceManagement/Parent/Attendance.vue:366-415; summary/day selection src/views/AttendanceManagement/Parent/Attendance.vue:498-522; per-lesson detail src/components/attendance/AttendanceDayDetailPanel.vue:305-358. |
| W05-P07 | Detail per sesi untuk student/parent berisi mata pelajaran, waktu, kelas/batch, remark, dan status. | student/parent attendance | Student/Attendance.vue; AttendanceDayDetailPanel.vue |
daily services | student/parent daily | _serialize_student_daily |
ATT-D09, ATT-D14 | Confirmed from code | Student session list src/views/AttendanceManagement/Student/Attendance.vue:299-356; parent panel src/components/attendance/AttendanceDayDetailPanel.vue:305-358; serializer ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:2754-2814. |
| W05-P08 | Perubahan per-sesi menjadi terlihat melalui fetch/refresh berikutnya; code tidak membuktikan push notification. | student/parent attendance | portal views | daily/period services | portal reads | attendance line serializers | ATT-D08 | Confirmed from code | Portal components fetch via service src/views/AttendanceManagement/Student/Attendance.vue:98-174, src/views/AttendanceManagement/Parent/Attendance.vue:238-300; faculty save path ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:4196-4335 tidak memanggil mail/bus/notification. |
| W05-P09 | Dokumentasi tidak boleh menjanjikan notifikasi otomatis setelah guru menyimpan presensi per sesi. | all pilot routes | all pilot components | no notification service in save | faculty save | _faculty_session_sheet_save |
ATT-D08 | Requires business confirmation | Tidak ada notification/mail/bus call di ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:4196-4335; PO harus memutuskan apakah no-notification adalah kontrak final atau feature gap. |
| W05-P10 | Raw proof file tidak boleh ikut payload student/parent kecuali viewer, purpose, retention, dan data-minimization policy disetujui. | student/parent attendance | portal views | daily services | student/parent daily | _serialize_student_daily; _serialize_student_daily_for_parent |
ATT-D09, ATT-D14 | Blocked by defect | Serializer memasukkan proof_file/proof_filename di ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:2795-2796; parent wrapper ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:2816-2833 hanya mematikan write flags arrival/departure dan tidak menghapus proof. Student UI bahkan merender raw proof di src/views/AttendanceManagement/Student/Attendance.vue:418-428. |
| W05-P11 | Query period harus menolak range tanggal invalid dan menghitung hanya scope yang disepakati. | student/parent attendance | portal views | period services | student/parent period-report | _attendance_period_report |
ATT-D06, ATT-D07 | Requires runtime verification | Request params src/services/attendance/studentAttendance.service.js:368-394; aggregator/validation ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:2855-2940; boundary tanggal/timezone perlu diuji pada tenant. |
7. Downstream, exception, privacy, dan recovery¶
| ID | Future documentation statement | Route | Component | Service | API endpoint | Backend controller/model | Business confirmation | Confidence status | Evidence |
|---|---|---|---|---|---|---|---|---|---|
| W05-X01 | Attendance line per-sesi menjadi sumber rekap attendance pada student report card. | related report-card page | report-card component di luar pilot | report-card service | report-card APIs | scola_report_card.models.student_report; op.attendance.line |
ATT-D07 | Confirmed from code | ../custom_addons_scola/gcgscola/scola_report_card/models/student_report.py:188-228 |
| W05-X02 | Attendance line juga dipakai dalam kalkulasi persentase attendance untuk student promotion. | related promotion page | promotion component di luar pilot | promotion service | promotion APIs | scola_report_card.models.student_promotion; op.attendance.line |
ATT-D07 | Confirmed from code | ../custom_addons_scola/gcgscola/scola_report_card/models/student_promotion.py:276-314 |
| W05-X03 | Dokumentasi tidak boleh menyebut satu line sama dengan satu hari sampai semantik agregasi per-sesi vs harian diputuskan. | reports/portal | report components | report services | report endpoints | report-card/promotion models | ATT-D07 | Requires business confirmation | Downstream menghitung attendance lines pada ../custom_addons_scola/gcgscola/scola_report_card/models/student_report.py:188-228 dan ../custom_addons_scola/gcgscola/scola_report_card/models/student_promotion.py:276-314; pilot mencatat per session, sehingga denominasi hari vs sesi bukan fakta yang dapat ditetapkan dari UI. |
| W05-X04 | Approved permit/leave adalah dependency yang dapat mengubah atau memprefill attendance line; ownership approval tetap di workflow permit. | teacher sheet; permit pages | teacher sheet + permit components | attendance + permit services | attendance/permit endpoints | scola_student_activity.models.student_permit; attendance serializer |
ATT-D15 | Requires runtime verification | Permit bridge/update di ../custom_addons_scola/gcgscola/scola_student_activity/models/student_permit.py:437-520; attendance approved-leave merge ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:1990-2032; E2E belum dibuktikan. |
| W05-X05 | Bila sesi tidak muncul, troubleshooting harus memeriksa tanggal lokal, faculty ownership, jadwal/session, enrollment batch, mode, dan company/unit. | /faculty/attendance |
Faculty/Attendance.vue |
today-sessions/settings | faculty today-sessions; settings | _faculty_today_sessions; mode service; op.session |
Tidak | Confirmed from code | Mode redirect src/views/AttendanceManagement/Faculty/Attendance.vue:269-289; load src/views/AttendanceManagement/Faculty/Attendance.vue:291-297; backend filters ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:4056-4158. |
| W05-X06 | Bila first save menghasilkan AccessError, dokumentasi support harus mengeskalasi defect/group mismatch dan tidak menyuruh memberi group legacy manual. | teacher sheet | Faculty/AttendanceSheet.vue |
faculty save | faculty save | sheet elevation + line ACL | Tidak | Blocked by defect | ACL/elevation evidence pada W05-M04; existing structural test hanya mengassert penggunaan _att_create_sheet di ../custom_addons_scola/gcgscola/scola_attendance/tests/test_attendance_structure_unit.py:376-387, bukan fresh-user line create. |
| W05-X07 | Workflow per-sesi tidak memiliki offline outbox; pengguna harus mempertahankan halaman dan retry sesuai hasil save yang terlihat. | teacher sheet | Faculty/AttendanceSheet.vue |
direct save | faculty save | JSON controller | ATT-D16 | Requires business confirmation | Save langsung src/views/AttendanceManagement/Faculty/AttendanceSheet.vue:733-772; tidak ditemukan queue/outbox pada component/service per-sesi. Recovery UX final perlu keputusan. |
| W05-X08 | Tenant/company isolation harus diuji dengan user dan student lintas company sebelum artikel menyebut data aman terisolasi. | all pilot routes | all pilot components | all pilot services | all pilot endpoints | record rules + explicit scope filters | Tidak | Requires runtime verification | Global company rules ../custom_addons_scola/gcgscola/scola_attendance/security/attendance_security.xml:10-29; explicit session company gate ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:201-214; admin elevated arbitrary-student gap W05-A12 mencegah klaim final. |
| W05-X09 | Export detail harus mengikuti policy data sensitif; jangan menyertakan proof atau identifier berlebih tanpa persetujuan. | admin detail aliases | AttendanceBySession.vue |
admin sheet-lines | /api/v1/attendance/admin/sheet-lines |
_admin_sheet_lines |
ATT-D09, ATT-D14 | Requires business confirmation | Export UI src/views/AttendanceManagement/Admin/AttendanceBySession.vue:46-88; columns src/views/AttendanceManagement/Admin/AttendanceBySession.vue:217-224; viewer/export policy tidak ditentukan oleh code. |
| W05-X10 | Semua correction yang berdampak ke portal, rapor, atau promotion harus memiliki owner dan audit/recovery policy. | teacher/admin correction | teacher/admin components | faculty/admin save | faculty save; admin create | attendance line + downstream models | ATT-D04, ATT-D05, ATT-D07, ATT-D12 | Requires business confirmation | Mutations ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:3398-3422,4307-4334; downstream ../custom_addons_scola/gcgscola/scola_report_card/models/student_report.py:188-228, ../custom_addons_scola/gcgscola/scola_report_card/models/student_promotion.py:276-314; tidak ada correction metadata pada payload. |
8. Existing documentation reuse dan delta¶
| ID | Future documentation statement | Route | Component | Service | API endpoint | Backend controller/model | Business confirmation | Confidence status | Evidence |
|---|---|---|---|---|---|---|---|---|---|
| W05-D01 | Existing teacher/homeroom/student/parent guides dapat dipakai sebagai source label dan orientasi role, bukan sebagai kontrak final. | pilot routes | pilot components | pilot services | pilot endpoints | pilot controllers | Tidak | Confirmed by existing documentation | docs/user-guide/quick-start/input-absensi-harian.md:7-45; docs/user-guide/per-role/teacher.md:21; docs/user-guide/per-role/homeroom.md:23; docs/user-guide/per-role/student.md:21; docs/user-guide/per-role/parent.md:19-29; seluruh klaim wajib tetap digate oleh baris code di matriks ini. |
| W05-D02 | Langkah existing yang menyuruh guru memilih tanggal/kelas tidak boleh digunakan untuk per-sesi current HEAD. | /faculty/attendance |
Faculty/Attendance.vue |
today-sessions | faculty today-sessions | _faculty_today_sessions |
ATT-D17 | Blocked by defect | Existing docs/user-guide/quick-start/input-absensi-harian.md:18-20,33 dan docs/user-guide/troubleshooting/absensi.md:23-24 memuat arahan lebih luas; current UI/backend today-only di src/views/AttendanceManagement/Faculty/Attendance.vue:291-297 dan ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:4056-4158. |
| W05-D03 | Existing wording Sakit sebagai pilihan status langsung tidak boleh disalin ke pilot current HEAD. | teacher sheet | Faculty/AttendanceSheet.vue; attendanceStatus.js |
faculty save | faculty save | _line_status |
ATT-D06 | Blocked by defect | Existing docs/user-guide/quick-start/input-absensi-harian.md:18-20 dan docs/domains/absensi/IMPLEMENTATION_GUIDE.md:124-155; current direct options src/i18n/attendanceStatus.js:33-39, Sakit hanya remark subtype src/i18n/attendanceStatus.js:46-54, backend returns Izin ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:63-73. |
| W05-D04 | Existing troubleshooting dapat dipakai sebagai symptom inventory setelah route/date/mode dan permission claims diperbarui. | pilot routes | pilot components | pilot services | pilot endpoints | pilot controllers | Tidak | Confirmed by existing documentation | docs/user-guide/troubleshooting/absensi.md:7-42; current corrections W05-T02/T03, W05-M04, W05-P09, dan W05-X07 wajib diterapkan sebelum reuse. |
| W05-D05 | Domain mode matrix/navigation audit dapat dipakai untuk menjelaskan boundary per-lesson vs gate, bukan untuk memasukkan gate flow ke pilot. | attendance entry routes | route/menu guards | settings | attendance settings | mode service | ATT-D17 | Confirmed by existing documentation | docs/domains/absensi/README.md:45-95; docs/domains/absensi/attendance-modes-matrix.md:31-33,73-75,97-113; docs/domains/absensi/attendance-navigation-audit.md:11-28; code boundary src/router/teacherRouteFragments/attendance.js:6-13 dan src/views/AttendanceManagement/Faculty/Attendance.vue:269-289. |
9. Documentation acceptance trace¶
| ID | Future documentation statement | Route | Component | Service | API endpoint | Backend controller/model | Business confirmation | Confidence status | Evidence |
|---|---|---|---|---|---|---|---|---|---|
| W05-Q01 | Fresh Scola Teacher first-save berhasil tanpa group attendance legacy. | teacher sheet | Faculty/AttendanceSheet.vue |
faculty save | faculty save | ACL + attendance sheet/line models | Tidak | Blocked by defect | W05-M04; test baru harus melengkapi ../custom_addons_scola/gcgscola/scola_attendance/tests/test_attendance_structure_unit.py:376-387. |
| W05-Q02 | Satu save guru yang sama terbaca konsisten oleh admin, student, dan parent. | all pilot routes | all pilot components | faculty save + all reads | all pilot endpoints | attendance line serializers | Tidak | Requires runtime verification | Existing tests terpisah tests/e2e/critical/teacher_attendance_flow.spec.ts:29-109 dan tests/e2e/critical/parent_attendance_flow.spec.ts:8-41; belum ada cross-role record trace. |
| W05-Q03 | Duplicate, missing, out-of-batch, dan cross-company student IDs ditolak atomik pada faculty dan admin mutation. | faculty/admin fill | teacher/admin components | faculty/admin save | faculty save; admin create | _faculty_session_sheet_save; _admin_sheet_create |
Tidak | Blocked by defect | W05-M05–M07 dan W05-A12; regular loops ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:3398-3422,4307-4334. |
| W05-Q04 | Principal/VP tidak melihat mutation CTA dan mutation API menolak mereka. | principal/VP routes | shared admin list | admin services | admin mutation endpoints | _admin_access_error |
ATT-D10 | Blocked by defect | W05-A08/A09; UI src/views/AttendanceManagement/Admin/AttendanceSheetList.vue:9-20,192; backend ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:146-199. |
| W05-Q05 | Status kanonis round-trip identik pada teacher, admin, student, parent, report card, dan promotion. | all pilot/related routes | all status renderers | all attendance/report services | attendance/report APIs | _line_status + downstream models |
ATT-D06, ATT-D07 | Blocked by defect | W05-F11/A11/X01-X03. |
| W05-Q06 | Correction mengikuti actor, cutoff, reason, approval, audit, dan recovery policy yang diputuskan. | teacher/admin fill | teacher/admin components | faculty/admin save | faculty save; admin create | attendance sheet/line | ATT-D04, ATT-D05, ATT-D12 | Requires business confirmation | W05-M08/M09/A06/A07/X10. |
| W05-Q07 | Parent hanya melihat child tertaut dan payload proof sesuai data-minimization policy. | /parent/attendance |
Parent/Attendance.vue |
parent services | parent endpoints | parent identity + serializers | ATT-D09, ATT-D14 | Blocked by defect | Child boundary confirmed W05-P05; raw proof leak risk W05-P10. |
| W05-Q08 | Boundary timezone menampilkan sesi pada hari sekolah yang benar di teacher dan portal. | teacher/student/parent routes | pilot views | today/daily/period services | faculty/portal endpoints | timezone helpers + session domains | ATT-D17 | Requires runtime verification | _local_today usage dalam faculty flow ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:4056-4335; runtime tenant timezone belum diuji. |
10. Coverage gate untuk penulisan¶
Status saat audit ini:
- Klaim navigasi, route kanonis, field UI, service endpoint, role read, dan sumber downstream sudah memiliki trace code.
- Klaim first-save, roster integrity, proof safety, principal/VP mutation parity, dan status glossary masih
Blocked by defect. - Klaim policy wali kelas, completion/correction, notification, evidence, export/privacy, aggregation, dan recovery masih
Requires business confirmation. - Klaim propagation lintas role, permit bridge, combined sessions, tenant isolation, timezone, dan clean-role provisioning masih
Requires runtime verification.
Artikel final tidak boleh dimulai dengan menghapus label limitation. Definition of Ready tercapai hanya jika seluruh pernyataan yang menjadi langkah wajib berstatus Confirmed from code atau Confirmed by existing documentation dan bukti dokumen existing telah direkonsiliasi dengan current code/runtime.