Lewati ke isi

Candidate supported product surface

Backlog klasifikasi sementara sebelum dokumentasi pengguna ditulis. Dokumen ini bukan katalog komersial final, bukan pernyataan production readiness, dan bukan pengganti keputusan Product Owner.

Last verified: 2026-08-08 Mode: server development Workspace root: /home/scola/odoo Frontend HEAD: 0275f7061e6e892b1f860eeb825c6f6a21851888 (develop) Backend HEAD: 44425cc81d8d281ec76e9336c30b3e109a7fc473 (main) Scope: candidate product surface untuk 36 frontend apps, 67 addon manifest + 4 directory tanpa manifest, 143 menu group, 20 workflow candidate, dan 36 app-entry pages; alias/shared component dideduplikasi Runtime limitation: database tenant, installed modules, entitlement payload, effective group/capability, dan served bundle tidak diverifikasi; status di bawah tetap kandidat sampai runtime baseline dan keputusan bisnis disahkan Application-code changes: tidak ada

1. Cara memakai klasifikasi ini

Kolom Candidate status selalu memakai tepat satu nilai berikut.

Status Decision rule
Core supported Surface dipetakan eksplisit ke SC-CORE atau shell pelanggan yang merupakan jalur utama SIS baseline. Status ini tidak berarti bebas blocker dokumentasi.
Optional module Surface dipetakan eksplisit ke SKU school-standard/professional/operator-managed yang terpisah dari SC-CORE.
Pilot or beta Paket hanya dinyatakan controlled rollout/public-sector atau surface perlu aktivasi/pilot khusus.
Legacy or duplicate Alias, compatibility shim, atau implementasi lama yang sudah memiliki owner kanonis lain.
Placeholder or incomplete Komponen adalah stub, source fragment tidak installable, atau workflow terbukti tidak dapat selesai.
Internal platform Control plane provider, observability/helper, bridge teknis, atau installer tanpa instruksi end-user langsung.
Requires product decision Bukti code/package/docs bertentangan, app mencampur tier tanpa boundary yang dapat diaudit, SKU tidak ada, atau ownership/support intent tidak terbukti.

Aturan penting:

  1. Keberadaan route, menu, application=True, feature flag, atau user guide bukan bukti tunggal bahwa surface didukung.
  2. Paket aktif mengikuti SSOT Juli: SC-CORE hanya siswa, jadwal, attendance manual, dan portal shell; SPMB, fees, dan report card adalah SKU terpisah. Dokumen Professional Juni masih menyebut komposisi lama dan tidak dipakai untuk menaikkan status. Bukti: docs/modular/product-tier-and-feature-flags.md:37-68, docs/modular/plan/package-catalog.yaml:126-186, dan docs/operations/professional-package-inventory.md:13-22.
  3. launch_wave_a berarti paket dapat menjadi optional supported surface, bukan otomatis core. operator_ready_full_profile berarti optional dengan provisioning terkontrol. controlled_public_sector dipetakan ke Pilot or beta. Bukti: docs/modular/plan/package-catalog.yaml:19-52.
  4. Compatibility/bridge/install modules tidak menghasilkan artikel pengguna sendiri. Artikel mengikuti domain owner dan hanya menyebut dependency jika dibutuhkan.
  5. Bila source dan dokumen modular bertentangan, status menjadi Requires product decision atau Placeholder or incomplete, bukan dipaksakan ke kategori yang lebih pasti.
  6. Existing user guide dipakai sebagai bukti coverage dan potensi drift, bukan bukti support. Portal saat ini mengiklankan role dan tutorial lintas core/add-on (docs/user-guide/README.md:17-75; docs/user-guide/school-admin/README.md:12-92), sementara recon hanya menemukan exact-route coverage yang terbatas (docs/recon/application-map.md:707-790).

Evidence set

  • Seluruh snapshot recon: docs/recon/README.md:1-73, application-map.md:1-790, route-inventory.md:1-1415, role-permission-matrix.md:1-1105, page-relationships.md:1-3531, workflow-candidates.md:1-414, dan open-questions.md:1-81.
  • Tier/package/module SSOT: docs/modular/product-tier-and-feature-flags.md:37-98, docs/modular/plan/package-catalog.yaml:19-364, dan docs/modular/module-classification-matrix.md:47-159.
  • Existing guides: seluruh 88 Markdown yang tercatat pada snapshot (docs/recon/README.md:26-53), dengan hub aktif pada docs/user-guide/README.md:1-85, docs/user-guide/school-admin/README.md:1-99, dan navigation publik mkdocs.yml:59-167.
  • Current code: app fragments di src/config/apps/appFragments/, role assignment di src/config/apps/roleApps.js, router di src/router/, serta manifest/controller/model pada custom_addons_scola/gcgscola/.

2. Delta kode sejak snapshot 2026-08-05

Tidak ada commit setelah snapshot yang menambah/menghapus component route. Karena itu baseline route tetap 1.003 effective paths = 884 component pages + 119 redirect/alias. Satu duplicate menu leaf dihapus, sehingga candidate leaf count turun dari 529 menjadi 528; jumlah app (36) dan section (143) tidak berubah. Ini adalah inferensi yang dapat diaudit dari diff commit, bukan runtime assertion.

Delta Current evidence Product-surface consequence Confidence
Role switcher sekarang hanya menawarkan assigned_roles; backend auth mengekspor daftar itu. src/components/RoleSwitcher.vue:134-159; src/stores/auth.store.js:291-367; ../custom_addons_scola/gcgscola/scola_core/controllers/auth.py:210; commits a625d2d7, 1b4e36bb, c3e4735 Memperbaiki discoverability/UX role switching, tetapi tidak menjawab apakah active role mereduksi effective backend authority; NAV/RBAC classification tidak dinaikkan. Confirmed from code
Duplicate leaf academic.class-daily-report di Academic hub dihapus; canonical WKS entries sekarang vp_curriculum.class-daily-report dan vp_curriculum.teaching_journal. src/config/apps/appFragments/academicApp.js:135; src/config/apps/appFragments/vicePrincipalApps.js:147-188; commit cade8665 Menu group tetap 143, leaf menjadi 528. Dokumentasi hanya boleh menunjuk entry WKS, bukan duplicate lama. Confirmed from code
Mobile search memakai seluruh access-filtered leaves. src/views/MobileMenuPage.vue:444-455; commit cade8665 Discoverability meningkat, tetapi tidak membuktikan route guard/entitlement benar. Confirmed from code
Assignment create memakai stable client_request_id, timeout lebih panjang, dan lookup hasil setelah timeout; backend menegakkan idempotency. src/services/lms/assignment.service.js:110-164; src/views/AssignmentManagement/Faculty/AddAssignmentPage.vue:366-377; ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_course_item_api.py:276-318; commits 430d9e7d, 0394557c, 68842f9 Readiness SC-LEARN membaik, tetapi tetap Optional module dan bukan bukti seluruh LMS workflow siap. Confirmed from code
Parent identity resolver menangani seluruh linked parent rows. ../custom_addons_scola/gcgscola/scola_core/utils/portal_identity.py:40-86; commit f86b628 Memperkuat parent portal core, tetapi runtime/multi-tenant visibility masih perlu verifikasi. Confirmed from code
Student import memiliki job queue, polling progress, idempotency, preflight company config, dan fallback synchronous path. src/views/AdminViews/StudentDatabase/UploadSiswa.vue:769-835; ../custom_addons_scola/gcgscola/scola_core/controllers/admin_import_api.py:210-286; ../custom_addons_scola/gcgscola/scola_core/models/student_import_job.py:19-117; commits 1663f2c, 0275f706, 44425cc W02 tetap Core supported; existing guide perlu direvisi kelak agar menjelaskan queued/progress/error semantics, tetapi tahap ini tidak menulis ulang guide. Confirmed from code
Report-card logging null-parent bug dan leave-type code diperbaiki. ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_read_api.py:1-40; ../custom_addons_scola/gcgscola/scola_hr/models/hr_leave_type.py:1-35; commits c1311c5, f326e64 Tidak mengubah tier atau menyelesaikan blocker workflow promotion/payroll. Confirmed from code

3. Frontend application module candidates (36/36)

Status app adalah status shell dominan. Menu group di §5 dapat memiliki status berbeda ketika sebuah shell core memuat add-on.

App Candidate status Basis dan boundary Evidence
admin-dashboard Core supported Shell operasi admin untuk core; widget add-on tetap mengikuti status menu/entitlement masing-masing. docs/recon/application-map.md:19-59; src/config/apps/appFragments/adminDashboardApp.js:16-75
teacher-portal Core supported Portal teacher/homeroom termasuk shell SC-CORE; LMS/CBT/rapor/library/personalia di dalamnya bukan core. docs/modular/plan/package-catalog.yaml:126-143; src/config/apps/appFragments/teacherPortalApp.js:47-578
student-portal Core supported Student portal adalah shell core; billing, report card, LMS, CBT, student-services, library dipisahkan pada menu group. docs/modular/product-tier-and-feature-flags.md:37-52; src/config/apps/appFragments/studentPortalApp.js:34-338
parent-portal Core supported Parent identity/portal shell ada di SC-CORE; finance/report/LMS/library adalah add-on. docs/modular/plan/package-catalog.yaml:126-143; src/config/apps/appFragments/parentPortalApp.js:31-363
principal-exec Requires product decision Leadership shell customer-facing ada, tetapi root memakai synthetic scola_principal, menu mencampur core, SC-FEES/FIN/FOUND/LIB/HR, dan recon menemukan drift. docs/recon/open-questions.md:12-42 (NAV-01..03); src/config/apps/appFragments/principalApp.js:28-469
counselor Optional module Dipetakan ke SC-STUDENT/student services; privacy/RBAC blocker tidak mengubah packaging. docs/modular/plan/package-catalog.yaml:251-265; src/config/apps/appFragments/counselorApp.js:32-304
extracurricular-coach Optional module Surface student services, bukan SC-CORE yang dibuktikan. docs/modular/plan/package-catalog.yaml:251-265; src/config/apps/appFragments/extracurricularCoachApp.js:4-40
librarian Optional module Role portal SC-LIB. docs/modular/plan/package-catalog.yaml:211-222; src/config/apps/appFragments/librarianApp.js:28-331
lab-technician Placeholder or incomplete Enam dari tujuh routed pages adalah literal placeholder; existing role guide mengajarkan workflow yang belum ada. docs/recon/open-questions.md:44-54; src/views/Laboran/Inventory/LabInventoryList.vue:1-12; docs/user-guide/per-role/lab-technician.md:1-24
security-officer Requires product decision Feature flag/role ada, tetapi tidak ada SKU/package owner kanonis dalam katalog. src/config/apps/appFragments/securityOfficerApp.js:4-40; docs/modular/plan/package-catalog.yaml:126-364
school-committee Requires product decision Surface agregat ada tanpa SKU/package owner dan route/news scope perlu disahkan. src/config/apps/appFragments/schoolCommitteeApp.js:4-40; docs/recon/open-questions.md:35-42
bos-admin Pilot or beta SC-BOS hanya controlled public-sector rollout. docs/modular/plan/package-catalog.yaml:51-53,343-364; src/config/apps/appFragments/bosAdminApp.js:4-61
dapodik-operator Pilot or beta SC-DAP hanya controlled public-sector rollout. docs/modular/plan/package-catalog.yaml:51-53,315-342; src/config/apps/appFragments/dapodikOperatorApp.js:4-55
dpo Requires product decision DPO feature flag/role ada tanpa SKU; audit/consent ownership dan privacy policy belum menjadi product contract. src/config/apps/appFragments/dpoApp.js:5-52; docs/recon/open-questions.md:62,68 (P03/P09)
foundation-auditor Optional module Read-only foundation oversight mengikuti SC-FOUND operator-managed, dengan UAT contract verification. docs/modular/plan/package-catalog.yaml:301-314; src/config/apps/appFragments/foundationAuditorApp.js:4-65
pickup-officer Requires product decision Satu operational route ada di attendance core, tetapi role/package/support boundary antar-jemput tidak ada di katalog. src/config/apps/appFragments/pickupOfficerApp.js:4-31; docs/recon/route-inventory.md:1012-1016
admin-staff Requires product decision Portal role mencampur core, SPMB, fees, CBT, dan HR; root flag scola_admin_staff tidak dipetakan ke SKU. src/config/apps/appFragments/adminStaffApp.js:25-243; docs/recon/open-questions.md:35-42 (NAV-03/FLAG-01)
foundation Optional module SC-FOUND/operator-managed foundation surface; submenus tetap dependency-gated. docs/modular/plan/package-catalog.yaml:301-314; src/config/apps/appFragments/foundationApp.js:30-250
foundation-hr-ops Optional module People/payroll/foundation HR operations adalah add-on/operator-managed, bukan core. docs/modular/plan/package-catalog.yaml:266-283; src/config/apps/appFragments/foundationHrOperationsApp.js:26-254
vp-curriculum Requires product decision Role shell mencampur core academic, LMS, report card, promotion; current menu discoverability fixed tetapi package boundary tidak ada. src/config/apps/appFragments/vicePrincipalApps.js:72-211; docs/recon/open-questions.md:35-42
vp-student-affairs Requires product decision Role shell mencampur core attendance/student data, SC-STUDENT, dan SPMB. src/config/apps/appFragments/vicePrincipalApps.js:225-398; docs/recon/open-questions.md:35-42
vp-infrastructure Requires product decision Role shell mencampur SC-OPS, SC-BOS, HR self-service tanpa root entitlement contract. src/config/apps/appFragments/vicePrincipalApps.js:409-508; docs/recon/open-questions.md:35-42
vp-public-relations Requires product decision Role shell mencampur core news/calendar dan SC-ADM tanpa package boundary. src/config/apps/appFragments/vicePrincipalApps.js:525-602; docs/recon/open-questions.md:35-42
vp-finance Requires product decision Role shell mencampur SC-FEES/SC-FIN dan HR self-service tanpa canonical product gate. src/config/apps/appFragments/vicePrincipalApps.js:616-686; docs/recon/open-questions.md:35-42
academic Core supported Shell master akademik/jadwal core; report card, LMS, CBT, Dapodik sections dipisahkan sebagai optional/pilot. docs/modular/product-tier-and-feature-flags.md:37-68; src/config/apps/appFragments/academicApp.js:35-377
student-affairs Core supported Data siswa adalah SIS baseline; pembinaan dipisahkan sebagai SC-STUDENT. docs/modular/plan/package-catalog.yaml:126-143,251-265; src/config/apps/appFragments/studentAffairsApp.js:23-146
hr Optional module SC-PEOPLE/SC-ATTEND+ family. docs/modular/plan/package-catalog.yaml:266-300; src/config/apps/appFragments/hrApp.js:19-186
finance Optional module Seluruh shell berada pada SC-FEES, SC-FIN, SC-BOS, atau payroll integration; bukan SC-CORE. docs/modular/plan/package-catalog.yaml:159-186,223-250,343-364; src/config/apps/appFragments/financeApp.js:37-452
inventory Optional module SC-OPS, dengan subgroup BOS sebagai pilot dependency. docs/modular/plan/package-catalog.yaml:237-250; src/config/apps/appFragments/inventoryApp.js:35-351
library Optional module SC-LIB. docs/modular/plan/package-catalog.yaml:211-222; src/config/apps/appFragments/libraryApp.js:28-253
admissions Optional module SC-ADM school-standard SKU terpisah. docs/modular/product-tier-and-feature-flags.md:54-66; src/config/apps/appFragments/admissionsApp.js:13-142
attendance Core supported Manual student attendance adalah SC-CORE; RFID/face sections adalah SC-ATTEND+. docs/modular/plan/package-catalog.yaml:126-143,284-300; src/config/apps/appFragments/attendanceApp.js:22-128
analytics Requires product decision App routes berupa redirect ke destinations yang dimodelkan menolak sebagian assigned roles; SKU analytics generik tidak ada. docs/recon/open-questions.md:35-39 (NAV-02); src/config/apps/appFragments/analyticsApp.js:13-59; src/router/analyticsAdminRoutes.js:1-18
communication Core supported Portal/news/calendar adalah SC-CORE; legacy announcement dan complaint dipisahkan di menu/page matrices. docs/modular/plan/package-catalog.yaml:126-143; src/config/apps/appFragments/communicationApp.js:7-125
settings Core supported Company/access configuration adalah tenant core, tetapi optional settings di section campuran tetap diberi status berbeda. src/config/apps/appFragments/settingsApp.js:20-112; docs/recon/open-questions.md:31-42
platform Internal platform Provider control plane, bukan produk sekolah. docs/modular/product-tier-and-feature-flags.md:95-98; src/config/apps/appFragments/platformApp.js:9-132

4. Backend addon/module candidates

Addon technical status menjawab apakah modul menghasilkan product surface sendiri. Installer/bridge yang sehat tetap Internal platform, bukan artikel end-user.

4.1 Addons with manifest (67/67)

Addon Candidate status Basis Evidence
scola_account Optional module SC-FIN. docs/modular/plan/package-catalog.yaml:223-236; ../custom_addons_scola/gcgscola/scola_account/__manifest__.py:1
scola_admission Optional module SC-ADM. docs/modular/plan/package-catalog.yaml:145-158; ../custom_addons_scola/gcgscola/scola_admission/__manifest__.py:1
scola_admission_assessment Optional module Overlay SC-ADM + SC-ASSESS. docs/modular/module-classification-matrix.md:98-104; ../custom_addons_scola/gcgscola/scola_admission_assessment/__manifest__.py:1
scola_admission_fees_bridge Internal platform Auto-install glue; no direct surface. docs/modular/product-tier-and-feature-flags.md:86-93; ../custom_addons_scola/gcgscola/scola_admission_fees_bridge/__manifest__.py:1
scola_admission_foundation Optional module Foundation centralized admission overlay. docs/modular/module-classification-matrix.md:98-104; ../custom_addons_scola/gcgscola/scola_admission_foundation/__manifest__.py:1
scola_assessment_bridge Requires product decision Current runtime still depends on it, while classification calls it legacy and the proposed canonical scola_assessment has no manifest. docs/modular/module-classification-matrix.md:105; ../custom_addons_scola/gcgscola/scola_lms/__manifest__.py:1; ../custom_addons_scola/gcgscola/scola_assessment_bridge/__manifest__.py:1
scola_attendance Core supported Core manual attendance. docs/modular/plan/package-catalog.yaml:126-143; ../custom_addons_scola/gcgscola/scola_attendance/__manifest__.py:1
scola_bos_rkas Pilot or beta SC-BOS controlled public-sector rollout. docs/modular/plan/package-catalog.yaml:343-364; ../custom_addons_scola/gcgscola/scola_bos_rkas/__manifest__.py:1
scola_bos_rkas_bridge Legacy or duplicate Manifest and classification identify upgrade shim. docs/modular/module-classification-matrix.md:107; ../custom_addons_scola/gcgscola/scola_bos_rkas_bridge/__manifest__.py:1
scola_bos_rkas_executive_bridge Internal platform Auto-install read-model glue for pilot package. docs/modular/module-classification-matrix.md:108; ../custom_addons_scola/gcgscola/scola_bos_rkas_executive_bridge/__manifest__.py:1
scola_bos_rkas_governance_bridge Requires product decision Classification says legacy but current BOS bundle still depends on it. docs/modular/module-classification-matrix.md:109,122-127; ../custom_addons_scola/gcgscola/scola_bundle_bos_rkas/__manifest__.py:1
scola_bos_rkas_procurement Pilot or beta Canonical procurement consumer within SC-BOS pilot. docs/modular/plan/package-catalog.yaml:343-364; ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/__manifest__.py:1
scola_bos_rkas_procurement_bridge Legacy or duplicate Explicit compatibility shim. docs/modular/module-classification-matrix.md:110,126; ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement_bridge/__manifest__.py:1
scola_bundle_admission Internal platform Package installer contract. docs/modular/plan/package-catalog.yaml:145-158; ../custom_addons_scola/gcgscola/scola_bundle_admission/__manifest__.py:1
scola_bundle_assessment Internal platform Package installer contract. docs/modular/plan/package-catalog.yaml:199-210; ../custom_addons_scola/gcgscola/scola_bundle_assessment/__manifest__.py:1
scola_bundle_bos_rkas Internal platform Pilot package installer contract. docs/modular/plan/package-catalog.yaml:343-364; ../custom_addons_scola/gcgscola/scola_bundle_bos_rkas/__manifest__.py:1
scola_bundle_core Internal platform Core installer contract; user docs follow member domains. docs/modular/module-classification-matrix.md:136; ../custom_addons_scola/gcgscola/scola_bundle_core/__manifest__.py:1
scola_bundle_dapodik Internal platform Pilot package installer contract. docs/modular/plan/package-catalog.yaml:315-342; ../custom_addons_scola/gcgscola/scola_bundle_dapodik/__manifest__.py:1
scola_bundle_dapodik_attendance Internal platform Pilot companion installer. docs/modular/plan/package-catalog.yaml:315-342; ../custom_addons_scola/gcgscola/scola_bundle_dapodik_attendance/__manifest__.py:1
scola_bundle_enterprise Internal platform Aggregate installer, not one user workflow. docs/modular/module-classification-matrix.md:136-158; ../custom_addons_scola/gcgscola/scola_bundle_enterprise/__manifest__.py:1
scola_bundle_fees Internal platform Package installer contract. docs/modular/plan/package-catalog.yaml:159-172; ../custom_addons_scola/gcgscola/scola_bundle_fees/__manifest__.py:1
scola_bundle_finance Internal platform Package installer contract. docs/modular/plan/package-catalog.yaml:223-236; ../custom_addons_scola/gcgscola/scola_bundle_finance/__manifest__.py:1
scola_bundle_hr_attendance Internal platform Technical installer; overlaps SC-ATTEND+ topology and needs no user article. docs/recon/application-map.md:626-697; ../custom_addons_scola/gcgscola/scola_bundle_hr_attendance/__manifest__.py:1
scola_bundle_learning Internal platform Package installer contract. docs/modular/plan/package-catalog.yaml:187-198; ../custom_addons_scola/gcgscola/scola_bundle_learning/__manifest__.py:1
scola_bundle_library Internal platform Package installer contract. docs/modular/plan/package-catalog.yaml:211-222; ../custom_addons_scola/gcgscola/scola_bundle_library/__manifest__.py:1
scola_bundle_operations Internal platform Package installer contract. docs/modular/plan/package-catalog.yaml:237-250; ../custom_addons_scola/gcgscola/scola_bundle_operations/__manifest__.py:1
scola_bundle_people Internal platform Package installer contract. docs/modular/plan/package-catalog.yaml:266-283; ../custom_addons_scola/gcgscola/scola_bundle_people/__manifest__.py:1
scola_bundle_profile_negeri Internal platform Deployment profile installer. docs/modular/plan/package-catalog.yaml:55-63; ../custom_addons_scola/gcgscola/scola_bundle_profile_negeri/__manifest__.py:1
scola_bundle_profile_swasta Internal platform Deployment profile installer. docs/modular/plan/package-catalog.yaml:64-72; ../custom_addons_scola/gcgscola/scola_bundle_profile_swasta/__manifest__.py:1
scola_bundle_profile_yayasan Internal platform Deployment profile installer. docs/modular/plan/package-catalog.yaml:73-83; ../custom_addons_scola/gcgscola/scola_bundle_profile_yayasan/__manifest__.py:1
scola_bundle_report_card Internal platform Package installer contract. docs/modular/plan/package-catalog.yaml:173-186; ../custom_addons_scola/gcgscola/scola_bundle_report_card/__manifest__.py:1
scola_bundle_smart_attendance Internal platform Package installer contract. docs/modular/plan/package-catalog.yaml:284-300; ../custom_addons_scola/gcgscola/scola_bundle_smart_attendance/__manifest__.py:1
scola_bundle_student_services Internal platform Package installer contract. docs/modular/plan/package-catalog.yaml:251-265; ../custom_addons_scola/gcgscola/scola_bundle_student_services/__manifest__.py:1
scola_cbt Optional module SC-ASSESS. docs/modular/plan/package-catalog.yaml:199-210; ../custom_addons_scola/gcgscola/scola_cbt/__manifest__.py:1
scola_core Core supported Auth/tenant/RBAC foundation for SC-CORE. docs/modular/module-classification-matrix.md:51-55; ../custom_addons_scola/gcgscola/scola_core/__manifest__.py:1
scola_counseling Optional module SC-STUDENT; security/privacy blockers tracked separately. docs/modular/plan/package-catalog.yaml:251-265; ../custom_addons_scola/gcgscola/scola_counseling/__manifest__.py:1
scola_dapodik_academic_bridge Internal platform Auto-install pilot bridge. docs/modular/module-classification-matrix.md:111; ../custom_addons_scola/gcgscola/scola_dapodik_academic_bridge/__manifest__.py:1
scola_dapodik_attendance_bridge Internal platform Auto-install pilot bridge. docs/modular/module-classification-matrix.md:112; ../custom_addons_scola/gcgscola/scola_dapodik_attendance_bridge/__manifest__.py:1
scola_dapodik_connector Pilot or beta SC-DAP controlled rollout. docs/modular/plan/package-catalog.yaml:315-342; ../custom_addons_scola/gcgscola/scola_dapodik_connector/__manifest__.py:1
scola_dapodik_report_card_bridge Internal platform Auto-install pilot bridge. docs/modular/module-classification-matrix.md:113; ../custom_addons_scola/gcgscola/scola_dapodik_report_card_bridge/__manifest__.py:1
scola_fees Optional module SC-FEES. docs/modular/plan/package-catalog.yaml:159-172; ../custom_addons_scola/gcgscola/scola_fees/__manifest__.py:1
scola_foundation_analytics Optional module SC-FOUND operator-managed. docs/modular/plan/package-catalog.yaml:301-314; ../custom_addons_scola/gcgscola/scola_foundation_analytics/__manifest__.py:1
scola_hr Optional module SC-PEOPLE. docs/modular/plan/package-catalog.yaml:266-283; ../custom_addons_scola/gcgscola/scola_hr/__manifest__.py:1
scola_hr_attendance Optional module SC-ATTEND+. docs/modular/plan/package-catalog.yaml:284-300; ../custom_addons_scola/gcgscola/scola_hr_attendance/__manifest__.py:1
scola_identity_admin Core supported Auto-installed customer-facing tenant identity shell on core. docs/modular/module-classification-matrix.md:60-68; ../custom_addons_scola/gcgscola/scola_identity_admin/__manifest__.py:1
scola_inventory Optional module SC-OPS. docs/modular/plan/package-catalog.yaml:237-250; ../custom_addons_scola/gcgscola/scola_inventory/__manifest__.py:1
scola_inventory_account_bridge Requires product decision Current manifest is active bridge, classification calls it legacy, while proposed canonical owner has no manifest. docs/modular/module-classification-matrix.md:114,128-130; ../custom_addons_scola/gcgscola/scola_inventory_account_bridge/__manifest__.py:1
scola_leadership_hub Requires product decision Customer-facing auto-installed shell exists but is not listed in SC-CORE package; leadership app/RBAC scope drifts. docs/modular/module-classification-matrix.md:60-68; docs/recon/open-questions.md:35-42; ../custom_addons_scola/gcgscola/scola_leadership_hub/__manifest__.py:1
scola_lesson_hours Core supported SC-CORE timetable primitive. docs/modular/plan/package-catalog.yaml:126-143; ../custom_addons_scola/gcgscola/scola_lesson_hours/__manifest__.py:1
scola_library Optional module SC-LIB. docs/modular/plan/package-catalog.yaml:211-222; ../custom_addons_scola/gcgscola/scola_library/__manifest__.py:1
scola_lms Optional module SC-LEARN. docs/modular/plan/package-catalog.yaml:187-198; ../custom_addons_scola/gcgscola/scola_lms/__manifest__.py:1
scola_news Core supported SC-CORE canonical news module; legacy announcement remains separate. docs/modular/plan/package-catalog.yaml:126-143; ../custom_addons_scola/gcgscola/scola_news/__manifest__.py:1
scola_observability Internal platform Internal-only audit/diagnostic shell. docs/modular/module-classification-matrix.md:53-55; ../custom_addons_scola/gcgscola/scola_observability/__manifest__.py:1
scola_odoo_base Internal platform Upstream prerequisite installer. docs/modular/module-classification-matrix.md:136-159; ../custom_addons_scola/gcgscola/scola_odoo_base/__manifest__.py:1
scola_parent Core supported Parent identity and access in SC-CORE. docs/modular/plan/package-catalog.yaml:126-143; ../custom_addons_scola/gcgscola/scola_parent/__manifest__.py:1
scola_parent_fees_bridge Internal platform Auto-install ACL glue. docs/modular/product-tier-and-feature-flags.md:86-93; ../custom_addons_scola/gcgscola/scola_parent_fees_bridge/__manifest__.py:1
scola_payroll Optional module SC-PEOPLE. docs/modular/plan/package-catalog.yaml:266-283; ../custom_addons_scola/gcgscola/scola_payroll/__manifest__.py:1
scola_platform Internal platform Provider control plane. docs/modular/product-tier-and-feature-flags.md:95-98; ../custom_addons_scola/gcgscola/scola_platform/__manifest__.py:1
scola_platform_support Internal platform Shared entitlement/helper kernel. docs/modular/module-classification-matrix.md:53-55; ../custom_addons_scola/gcgscola/scola_platform_support/__manifest__.py:1
scola_portal Core supported Shared customer portal shell in SC-CORE. docs/modular/plan/package-catalog.yaml:126-143; ../custom_addons_scola/gcgscola/scola_portal/__manifest__.py:1
scola_portal_fees_bridge Internal platform Auto-install route glue. docs/modular/product-tier-and-feature-flags.md:86-93; ../custom_addons_scola/gcgscola/scola_portal_fees_bridge/__manifest__.py:1
scola_public_complaint Requires product decision No SKU/package owner; internal API authorization is unresolved. docs/recon/open-questions.md:12-16 (SEC-01); ../custom_addons_scola/gcgscola/scola_public_complaint/__manifest__.py:1
scola_report_card Optional module SC-REPORT. Promotion defect does not change package status. docs/modular/plan/package-catalog.yaml:173-186; docs/recon/open-questions.md:14-18; ../custom_addons_scola/gcgscola/scola_report_card/__manifest__.py:1
scola_rules Optional module SC-STUDENT. docs/modular/plan/package-catalog.yaml:251-265; ../custom_addons_scola/gcgscola/scola_rules/__manifest__.py:1
scola_smart_attendance Optional module SC-ATTEND+ operator-managed. docs/modular/plan/package-catalog.yaml:284-300; ../custom_addons_scola/gcgscola/scola_smart_attendance/__manifest__.py:1
scola_student_activity Optional module SC-STUDENT. docs/modular/plan/package-catalog.yaml:251-265; ../custom_addons_scola/gcgscola/scola_student_activity/__manifest__.py:1
scola_timetable Core supported SC-CORE timetable owner. docs/modular/plan/package-catalog.yaml:126-143; ../custom_addons_scola/gcgscola/scola_timetable/__manifest__.py:1

4.2 Module-like directories without manifest (4/4)

Directory Candidate status Basis Evidence
scola_assessment Placeholder or incomplete Disebut canonical owner di classification matrix tetapi tidak installable pada HEAD. docs/recon/application-map.md:698-706; docs/modular/module-classification-matrix.md:74; ../custom_addons_scola/gcgscola/scola_assessment/models/
scola_bos_rkas_account_bridge Placeholder or incomplete Source fragment tanpa manifest, sementara package notes menganggap accounting bridge tersedia. docs/recon/application-map.md:698-706; docs/modular/module-classification-matrix.md:106; ../custom_addons_scola/gcgscola/scola_bos_rkas_account_bridge/models/
scola_bundle_school_standard Legacy or duplicate Directory tidak installable dan tier SSOT memilih tiga SKU terpisah tanpa combined shim. docs/recon/application-map.md:698-706; docs/modular/product-tier-and-feature-flags.md:54-66; ../custom_addons_scola/gcgscola/scola_bundle_school_standard/
scola_inventory_account Placeholder or incomplete Disebut canonical owner tetapi tidak memiliki manifest; runtime masih memakai bridge lama. docs/recon/application-map.md:698-706; docs/modular/module-classification-matrix.md:84,114; ../custom_addons_scola/gcgscola/scola_inventory_account/models/

5. Menu-group candidates (143/143)

Setiap row mewakili tepat satu sections[] pada app fragments. Route yang ditulis adalah entry utama/contoh, bukan daftar semua leaf. Full leaf inventory tetap di docs/recon/application-map.md:60-593. Inference: bila satu group mencampur core dan add-on, atau read dan governance-sensitive mutation tanpa product boundary, statusnya Requires product decision.

App Menu group Primary surface Candidate status Basis / current-code evidence
admin-dashboard admin_dashboard.overview (Dashboard) /admin/dashboard Core supported Core admin shell; src/config/apps/appFragments/adminDashboardApp.js:34
admin-dashboard admin_dashboard.hr_personal (Personalia) /hr/payslip, /employee/timeoff, /employee/self-attendance Optional module SC-PEOPLE/SC-ATTEND+; src/config/apps/appFragments/adminDashboardApp.js:53
teacher-portal teacher.today (Beranda) /faculty/dashboard (/faculty/home redirect) Core supported Core teacher shell; src/config/apps/appFragments/teacherPortalApp.js:78; docs/recon/route-inventory.md:1349
teacher-portal teacher.school_calendar (Kalender) /calendar Core supported Portal calendar core; src/config/apps/appFragments/teacherPortalApp.js:97
teacher-portal teacher.teaching (Pengajaran) schedule, subject/daily attendance, journal, assignment Requires product decision Mencampur timetable/attendance core, LMS, student services, dan mutation W05 yang belum punya correction/completeness contract; src/config/apps/appFragments/teacherPortalApp.js:114-216
teacher-portal teacher.grades (Penilaian) /faculty/report-card* Optional module SC-REPORT; src/config/apps/appFragments/teacherPortalApp.js:228
teacher-portal teacher.homeroom (Wali Kelas) /faculty/homeroom* Requires product decision Mencampur core, SC-REPORT, SC-FEES, LMS, counseling, promotion defect; src/config/apps/appFragments/teacherPortalApp.js:272
teacher-portal teacher.digital_learning (Pembelajaran Digital) /faculty/lms*, CBT, library Optional module SC-LEARN/ASSESS/LIB; src/config/apps/appFragments/teacherPortalApp.js:382
teacher-portal teacher.kesiswaan (Kesiswaan) violations, achievements, permits, referrals Optional module SC-STUDENT; src/config/apps/appFragments/teacherPortalApp.js:465
teacher-portal teacher.hr_personal (Personalia) payslip, leave, self-attendance Optional module SC-PEOPLE/ATTEND+; src/config/apps/appFragments/teacherPortalApp.js:523
teacher-portal teacher.library (Perpustakaan) /library/home, reading log Optional module SC-LIB; src/config/apps/appFragments/teacherPortalApp.js:560
student-portal student.today (Beranda) dashboard, billing, permits Requires product decision Core dashboard dicampur SC-FEES/SC-STUDENT dalam satu group; src/config/apps/appFragments/studentPortalApp.js:62
student-portal student.school_calendar (Kalender) /calendar Core supported Portal calendar core; src/config/apps/appFragments/studentPortalApp.js:101
student-portal student.learning (Belajar) schedule, attendance, assignment, LMS, CBT Requires product decision Core timetable/attendance dicampur optional learning/assessment; src/config/apps/appFragments/studentPortalApp.js:119
student-portal student.grades (Nilai & Rapor) report card, LMS achievements Optional module SC-REPORT/LEARN; src/config/apps/appFragments/studentPortalApp.js:190
student-portal student.discipline (Kesiswaan) rules, violations, counseling Optional module SC-STUDENT; src/config/apps/appFragments/studentPortalApp.js:221
student-portal student.extras (Ekstrakurikuler & Insight) extracurricular, analytics Requires product decision Student-services plus analytics tanpa SKU kanonis; src/config/apps/appFragments/studentPortalApp.js:266
student-portal student.library (Perpustakaan) catalog, loans, wishlist, reading Optional module SC-LIB; src/config/apps/appFragments/studentPortalApp.js:295
parent-portal parent.dashboard (Beranda) /parent/dashboard Core supported Core parent shell; src/config/apps/appFragments/parentPortalApp.js:60
parent-portal parent.academics (Akademik) schedule, attendance, grades, LMS, analytics Requires product decision Core portal/read paths dicampur SC-REPORT/LEARN dan analytics; src/config/apps/appFragments/parentPortalApp.js:79
parent-portal parent.finance (Keuangan) /parent/payment-list Optional module SC-FEES; src/config/apps/appFragments/parentPortalApp.js:168
parent-portal parent.studentlife (Kesiswaan) rules, violations, permits, counseling Optional module SC-STUDENT; src/config/apps/appFragments/parentPortalApp.js:190
parent-portal parent.communications (Komunikasi) chat, legacy announcement, news, calendar Requires product decision Core communication mencampur legacy announcement; COMM-01/SEC-10; src/config/apps/appFragments/parentPortalApp.js:257
parent-portal parent.library (Perpustakaan) parent library routes Optional module SC-LIB; src/config/apps/appFragments/parentPortalApp.js:316
principal-exec principal.overview (Dashboard) /principal/dashboard Requires product decision Leadership shell/SKU boundary belum kanonis; src/config/apps/appFragments/principalApp.js:58
principal-exec principal.approvals_bucket (Persetujuan & Kebijakan) leave, finance, inventory approvals Requires product decision Cross-domain approval ownership belum disahkan; src/config/apps/appFragments/principalApp.js:76
principal-exec principal.academics (Akademik) overview, calendar, outcomes, reports Requires product decision Core + LMS/report-card mix; src/config/apps/appFragments/principalApp.js:118
principal-exec principal.people (People) students, attendance, counseling, HR attendance Requires product decision Sensitive/core/add-on mix; src/config/apps/appFragments/principalApp.js:189
principal-exec principal.finance_ops (Finance & Operasi) finance reports, tuition, budget Optional module SC-FEES/FIN/BOS dependency; src/config/apps/appFragments/principalApp.js:249
principal-exec principal.admissions (SPMB) dashboard, periods, ranking Optional module SC-ADM; src/config/apps/appFragments/principalApp.js:283
principal-exec principal.communication (Komunikasi) news, complaint Requires product decision News core + complaint owner/security unresolved; src/config/apps/appFragments/principalApp.js:317
principal-exec principal.analytics (Analitik Strategis) analytics, promotion policy Requires product decision SC-FOUND gating mixed with broken promotion path; src/config/apps/appFragments/principalApp.js:358
principal-exec principal.library (Perpustakaan) library reports/GLS Optional module SC-LIB; src/config/apps/appFragments/principalApp.js:404
principal-exec principal.hr_personal (Personalia) payslip, leave, self-attendance Optional module SC-PEOPLE/ATTEND+; src/config/apps/appFragments/principalApp.js:445
counselor counselor.overview (Dashboard) dashboard, reports Optional module SC-STUDENT; privacy blocker applies; src/config/apps/appFragments/counselorApp.js:58
counselor counselor.students (Siswa) student list/timeline/points/attendance Optional module SC-STUDENT; src/config/apps/appFragments/counselorApp.js:83
counselor counselor.sessions (Konseling) schedule, notes, visit, conference Optional module SC-STUDENT; src/config/apps/appFragments/counselorApp.js:132
counselor counselor.pembinaan (Pembinaan) rules, violations, recap, permits Optional module SC-STUDENT; src/config/apps/appFragments/counselorApp.js:183
counselor counselor.career (Karir & Alumni) career, tracer study Optional module SC-STUDENT candidate; src/config/apps/appFragments/counselorApp.js:250
counselor counselor.hr_personal (Personalia) payslip, leave, attendance history Optional module SC-PEOPLE/ATTEND+; src/config/apps/appFragments/counselorApp.js:274
extracurricular-coach extracurricular_coach.overview (Ekstrakurikuler) /faculty/extracurricular Optional module SC-STUDENT; duplicate leaf to same component deduped; src/config/apps/appFragments/extracurricularCoachApp.js:23
librarian librarian.collection (Koleksi) catalog/units/purchase/config Optional module SC-LIB; src/config/apps/appFragments/librarianApp.js:47
librarian librarian.circulation (Sirkulasi) movement/queue/fines/returns Optional module SC-LIB; RULE-04 caveat; src/config/apps/appFragments/librarianApp.js:113
librarian librarian.textbook (Buku Teks) packages/distribution Optional module SC-LIB; src/config/apps/appFragments/librarianApp.js:173
librarian librarian.gls (GLS) programs/dashboard Optional module SC-LIB; src/config/apps/appFragments/librarianApp.js:197
librarian librarian.reports (Laporan) reports/accreditation Optional module SC-LIB; src/config/apps/appFragments/librarianApp.js:222
librarian librarian.config (Pengaturan) cards/types/location/policy Optional module SC-LIB; view/manage drift applies; src/config/apps/appFragments/librarianApp.js:247
librarian librarian.attendance (Personalia) self-attendance/leave/payslip Optional module SC-PEOPLE/ATTEND+; src/config/apps/appFragments/librarianApp.js:303
lab-technician lab.overview (Dashboard) /lab-technician/dashboard Placeholder or incomplete Shell dominan mengarah ke enam stub; src/config/apps/appFragments/labTechnicianApp.js:37; docs/recon/open-questions.md:44-54
lab-technician lab.inventory (Inventaris Lab) inventory/schedule/loans Placeholder or incomplete Tiga literal placeholder; src/config/apps/appFragments/labTechnicianApp.js:54; src/views/Laboran/Inventory/LabInventoryList.vue:1-12
lab-technician lab.maintenance (Pemeliharaan) routine/damage Placeholder or incomplete Dua literal placeholder; src/config/apps/appFragments/labTechnicianApp.js:89
lab-technician lab.reports (Laporan) /lab-technician/reports Placeholder or incomplete Literal placeholder; src/config/apps/appFragments/labTechnicianApp.js:115
lab-technician lab.hr_personal (Personalia) self-attendance/leave/payslip Optional module Cross-app SC-PEOPLE/ATTEND+ pages are implemented; src/config/apps/appFragments/labTechnicianApp.js:132
security-officer security.overview (Dashboard) dashboard, visitors Requires product decision Tidak ada package/SKU owner; src/config/apps/appFragments/securityOfficerApp.js:22
school-committee committee.overview (Dashboard) aggregate dashboard, news Requires product decision Tidak ada package/SKU contract; src/config/apps/appFragments/schoolCommitteeApp.js:22
bos-admin bos.overview (Dashboard) budget/report/ledger Pilot or beta SC-BOS controlled rollout; src/config/apps/appFragments/bosAdminApp.js:23
dapodik-operator dapodik.overview (Dashboard) settings/sync/report-card Pilot or beta SC-DAP controlled rollout; src/config/apps/appFragments/dapodikOperatorApp.js:24
dpo dpo.overview (Audit & Consent) audit, sensitive audit, consent Requires product decision DPO product/SKU/privacy contract absent; src/config/apps/appFragments/dpoApp.js:23
foundation-auditor foundation_auditor.overview (Dashboard) schools, finance, accreditation Optional module SC-FOUND; src/config/apps/appFragments/foundationAuditorApp.js:24
pickup-officer pickup.tasks (Tugas) /pickup/attendance Requires product decision No product/package owner for transport execution; src/config/apps/appFragments/pickupOfficerApp.js:20
admin-staff admin_staff.overview (Dashboard) /admin-staff/dashboard Requires product decision Synthetic app flag/package boundary; src/config/apps/appFragments/adminStaffApp.js:43
admin-staff admin_staff.students (Siswa & Orang Tua) students/parents/attendance/pickup persons Requires product decision Core data plus W05 correction/pickup governance; src/config/apps/appFragments/adminStaffApp.js:60
admin-staff admin_staff.admissions (Admisi) admissions + CBT Optional module SC-ADM/ASSESS; src/config/apps/appFragments/adminStaffApp.js:103
admin-staff admin_staff.finance (Keuangan) billing/enrollment Optional module SC-FEES; src/config/apps/appFragments/adminStaffApp.js:173
admin-staff admin_staff.academics (Akademik) schedule Core supported Timetable core; src/config/apps/appFragments/adminStaffApp.js:198
admin-staff admin_staff.hr_personal (Personalia) self-attendance/leave/payslip Optional module SC-PEOPLE/ATTEND+; src/config/apps/appFragments/adminStaffApp.js:215
foundation foundation.overview (Dashboard) dashboard/schools/company Optional module SC-FOUND; src/config/apps/appFragments/foundationApp.js:49
foundation foundation.finance (Keuangan) P&L/balance/cash-flow/budget Optional module SC-FOUND + SC-FIN/BOS dependency; src/config/apps/appFragments/foundationApp.js:85
foundation foundation.hr (SDM) employees/transport/payroll cost Optional module Foundation HR/SC-PEOPLE; src/config/apps/appFragments/foundationApp.js:129
foundation foundation.academic (Akademik) students/accreditation/governance/promotion Optional module SC-FOUND; promotion blocker applies; src/config/apps/appFragments/foundationApp.js:163
foundation foundation.admission (Admission Terpusat) /foundation/admission Optional module SC-ADM + foundation overlay; src/config/apps/appFragments/foundationApp.js:205
foundation foundation.hr_personal (Personalia) payslip/leave/self-attendance Optional module SC-PEOPLE/ATTEND+; src/config/apps/appFragments/foundationApp.js:223
foundation-hr-ops foundation_hr.people (Data Pegawai) registry/teachers/employees Optional module SC-PEOPLE/foundation HR; src/config/apps/appFragments/foundationHrOperationsApp.js:42
foundation-hr-ops foundation_hr.structure (Struktur Organisasi) department/job/contract Optional module SC-PEOPLE; src/config/apps/appFragments/foundationHrOperationsApp.js:79
foundation-hr-ops foundation_hr.operations (Operasional) attendance/schedule/rules/transport Optional module SC-ATTEND+/foundation HR; src/config/apps/appFragments/foundationHrOperationsApp.js:112
foundation-hr-ops foundation_hr.leave (Cuti & Izin) timeoff/types/balance Optional module SC-PEOPLE; src/config/apps/appFragments/foundationHrOperationsApp.js:176
foundation-hr-ops foundation_hr.compensation (Remunerasi) payroll cost Optional module SC-PEOPLE/FOUND; src/config/apps/appFragments/foundationHrOperationsApp.js:209
foundation-hr-ops foundation_hr.personal (Personalia Saya) payslip/leave/self-attendance Optional module SC-PEOPLE/ATTEND+; src/config/apps/appFragments/foundationHrOperationsApp.js:227
vp-curriculum vp_curriculum.overview (Dashboard) /vice-principal/curriculum Requires product decision Role shell not package-mapped; src/config/apps/appFragments/vicePrincipalApps.js:89
vp-curriculum vp_curriculum.academics (Academic Governance) subject/schedule/attendance/RPP/journal Requires product decision Core + LMS and W05 write/read boundary; src/config/apps/appFragments/vicePrincipalApps.js:107-158
vp-curriculum vp_curriculum.review (Review & Keputusan) weekly/daily report, quality, promotion Requires product decision Approval ownership/RBAC and promotion defect unresolved; src/config/apps/appFragments/vicePrincipalApps.js:164-207
vp-curriculum vp_curriculum.hr_personal (Personalia) self-attendance/leave/payslip Optional module SC-PEOPLE/ATTEND+; src/config/apps/appFragments/vicePrincipalApps.js:41
vp-student-affairs vp_sa.overview (Dashboard) /vice-principal/student-affairs Requires product decision Role shell not package-mapped; src/config/apps/appFragments/vicePrincipalApps.js:242
vp-student-affairs vp_sa.core (Operasional Siswa) students/attendance/extracurricular Requires product decision Core + SC-STUDENT mix; src/config/apps/appFragments/vicePrincipalApps.js:260
vp-student-affairs vp_sa.guidance (Pembinaan) recap/violations/achievements/permits Optional module SC-STUDENT; security blocker applies; src/config/apps/appFragments/vicePrincipalApps.js:296
vp-student-affairs vp_sa.admissions (Admissions) dashboard/ranking Optional module SC-ADM; src/config/apps/appFragments/vicePrincipalApps.js:380
vp-student-affairs vp_sa.hr_personal (Personalia) self-attendance/leave/payslip Optional module SC-PEOPLE/ATTEND+; src/config/apps/appFragments/vicePrincipalApps.js:41
vp-infrastructure vp_inf.overview (Dashboard) /vice-principal/infrastructure Requires product decision Role shell not package-mapped; src/config/apps/appFragments/vicePrincipalApps.js:426
vp-infrastructure vp_inf.inventory (Sarpras) inventory/stock/requests/assets Optional module SC-OPS; src/config/apps/appFragments/vicePrincipalApps.js:444
vp-infrastructure vp_inf.approval_maintenance (Approval & Maintenance) approvals/maintenance Requires product decision SC-OPS + pilot SC-BOS approval ownership; src/config/apps/appFragments/vicePrincipalApps.js:495
vp-infrastructure vp_inf.hr_personal (Personalia) self-attendance/leave/payslip Optional module SC-PEOPLE/ATTEND+; src/config/apps/appFragments/vicePrincipalApps.js:41
vp-public-relations vp_pr.overview (Dashboard) /vice-principal/public-relations Requires product decision Role shell not package-mapped; src/config/apps/appFragments/vicePrincipalApps.js:542
vp-public-relations vp_pr.communication (Humas) news/events Core supported Canonical news/calendar core, subject to role runtime verification; src/config/apps/appFragments/vicePrincipalApps.js:560
vp-public-relations vp_pr.admissions (Admissions Outreach) PPDB/ranking Optional module SC-ADM; src/config/apps/appFragments/vicePrincipalApps.js:586
vp-public-relations vp_pr.hr_personal (Personalia) self-attendance/leave/payslip Optional module SC-PEOPLE/ATTEND+; src/config/apps/appFragments/vicePrincipalApps.js:41
vp-finance vp_fin.overview (Dashboard) /vice-principal/finance Requires product decision Role shell not package-mapped; src/config/apps/appFragments/vicePrincipalApps.js:633
vp-finance vp_fin.core (Finance Oversight) reports/tuition/SPP by class Optional module SC-FEES/FIN; src/config/apps/appFragments/vicePrincipalApps.js:651
vp-finance vp_fin.hr_personal (Personalia) self-attendance/leave/payslip Optional module SC-PEOPLE/ATTEND+; src/config/apps/appFragments/vicePrincipalApps.js:41
academic academic.master (Struktur Akademik) year/calendar/level/subject/classroom Core supported SC-CORE academic prerequisites; src/config/apps/appFragments/academicApp.js:51
academic academic.schedule (Jadwal & Kelas) rombel/schedule/slots/assignment/journal Requires product decision Core timetable plus LMS journal in one group; duplicate daily-report leaf removed at HEAD; src/config/apps/appFragments/academicApp.js:100-148
academic academic.assessment (Kurikulum & Penilaian) CP/TP/ATP/types/promotion/P5 Optional module SC-REPORT family; promotion incomplete; src/config/apps/appFragments/academicApp.js:153
academic academic.report_card (E-Rapor) report card + Dapodik sync Optional module SC-REPORT; Dapodik leaf remains pilot dependency; src/config/apps/appFragments/academicApp.js:210
academic academic.lms (LMS Hub) overview/enrollment/templates/storage/settings Optional module SC-LEARN; src/config/apps/appFragments/academicApp.js:253
academic academic.exam (Ujian) OpenEduCat exam config/results Requires product decision Tidak ada package boundary kanonis untuk legacy exam vs CBT/report-card exam surfaces; src/config/apps/appFragments/academicApp.js:315
academic academic.cbt (CBT) settings/audit Optional module SC-ASSESS; src/config/apps/appFragments/academicApp.js:357
student-affairs student-affairs.data (Data Siswa) /students, /parents Core supported SIS baseline; src/config/apps/appFragments/studentAffairsApp.js:47
student-affairs student-affairs.pembinaan (Pembinaan) rules/achievement/violation/counseling/etc. Optional module SC-STUDENT; src/config/apps/appFragments/studentAffairsApp.js:73
hr hr.employees (Data Pegawai) teachers/employee/department/job/contract Optional module SC-PEOPLE; src/config/apps/appFragments/hrApp.js:35
hr hr.attendance (Kehadiran Pegawai) attendance/summary/self/schedule/rules Optional module SC-ATTEND+; src/config/apps/appFragments/hrApp.js:85
hr hr.leave (Cuti & Izin) personal/admin leave/types/balance Optional module SC-PEOPLE; src/config/apps/appFragments/hrApp.js:150
finance finance.spp (SPP & Biaya) schedule/enrollment/templates/scholarship/payment Optional module SC-FEES; src/config/apps/appFragments/financeApp.js:61
finance finance.payables (Pengeluaran) vendors/bills/payable/refunds Optional module SC-FIN; src/config/apps/appFragments/financeApp.js:141
finance finance.receivables (Pemasukan) customers/invoices/receivable Optional module SC-FIN; src/config/apps/appFragments/financeApp.js:183
finance finance.cash (Kas & Bank) transfers/journals/reconciliation Optional module SC-FIN; src/config/apps/appFragments/financeApp.js:216
finance finance.budget_approval (Anggaran & Persetujuan) budget/payment approval Requires product decision SC-FIN/SC-BOS mix plus approval/idempotency/RBAC issues; src/config/apps/appFragments/financeApp.js:261
finance finance.reports (Laporan) accounting/tax reports Optional module SC-FIN; src/config/apps/appFragments/financeApp.js:319
finance finance.config_assets (Pengaturan Akuntansi & Aset) asset/valuation/COA/journal/tax Optional module SC-FIN + SC-OPS dependency; valuation owner conflict applies; src/config/apps/appFragments/financeApp.js:354
finance finance.hr_personal (Personalia) payslip/leave/self-attendance Optional module SC-PEOPLE/ATTEND+; src/config/apps/appFragments/financeApp.js:425
inventory inventory.master (Dashboard & Master Data) dashboard/product/warehouse/location/stock Optional module SC-OPS; src/config/apps/appFragments/inventoryApp.js:63
inventory inventory.budget (Anggaran BOS) budget/report/ledger/RKAS Pilot or beta SC-BOS controlled rollout; src/config/apps/appFragments/inventoryApp.js:123
inventory inventory.operations (Operasional) movement/issue/transfer/return Optional module SC-OPS; src/config/apps/appFragments/inventoryApp.js:163
inventory inventory.procurement (Pengadaan) request/order/receipt Requires product decision SC-OPS/SC-BOS seam and approval ownership unresolved; src/config/apps/appFragments/inventoryApp.js:204
inventory inventory.assets (Aset & Sarpras) assets/inspection/disposal/maintenance Optional module SC-OPS; src/config/apps/appFragments/inventoryApp.js:249
inventory inventory.hr_personal (Personalia) self-attendance/leave Optional module SC-PEOPLE/ATTEND+; src/config/apps/appFragments/inventoryApp.js:299
inventory inventory.reports (Laporan) reports/register/audit Optional module SC-OPS; src/config/apps/appFragments/inventoryApp.js:325
library library.management (Manajemen Perpustakaan) /library/hub and management pages Optional module SC-LIB; shared routes/components deduped; src/config/apps/appFragments/libraryApp.js:47
library library.portal (Layanan Mandiri) home/loans/wishlist/requests/reading Optional module SC-LIB; src/config/apps/appFragments/libraryApp.js:208
admissions admissions.pipeline (Pendaftaran) dashboard/period/test/CBT/results/complaints Optional module SC-ADM with optional SC-ASSESS; src/config/apps/appFragments/admissionsApp.js:30
admissions admissions.config (Konfigurasi) levels/pathways/doc types/SIC/test types Optional module SC-ADM; config view/manage issue tracked separately; src/config/apps/appFragments/admissionsApp.js:105
attendance attendance.students (Absensi Siswa) hub/pickup/settings Requires product decision Manual attendance domain core, tetapi write/correction/approval/completeness/privacy contract W05 belum siap diajarkan; src/config/apps/appFragments/attendanceApp.js:38
attendance attendance.rfid (RFID Siswa) card/device/event/monitoring Optional module SC-ATTEND+; src/config/apps/appFragments/attendanceApp.js:74
attendance attendance.face.students (Wajah Siswa) face management Optional module SC-ATTEND+; biometric privacy applies; src/config/apps/appFragments/attendanceApp.js:118
analytics analytics.executive (Eksekutif) three redirects Requires product decision Destination guards reject modeled roles; src/config/apps/appFragments/analyticsApp.js:35; docs/recon/open-questions.md:35-39
communication communication.messaging (Chat) /messaging Requires product decision SC-CORE shell, tetapi membership/cross-tenant/attachment contract unresolved; src/config/apps/appFragments/communicationApp.js:24; SEC-11
communication communication.news (Berita) /admin/news, /news Core supported Canonical scola_news in SC-CORE; legacy /announcement excluded; src/config/apps/appFragments/communicationApp.js:41
communication communication.calendar (Kalender) /calendar Core supported Portal calendar core; privacy/audience blocker applies; src/config/apps/appFragments/communicationApp.js:66
communication communication.notifications (Notifikasi) /settings/notification-channels Core supported Portal notification core; behavior still needs decision; src/config/apps/appFragments/communicationApp.js:82
communication communication.complaints (Aduan Masyarakat) dashboard/list/config Requires product decision No SKU and SEC-01 authorization gap; src/config/apps/appFragments/communicationApp.js:99
settings settings.school (Sekolah) company/capacity/attendance/LMS/Dapodik settings Requires product decision Core and three optional/pilot domains mixed; view/manage semantics unresolved; src/config/apps/appFragments/settingsApp.js:36
settings settings.access (Pengguna & Akses) /admin/users Core supported Tenant identity administration shell; src/config/apps/appFragments/settingsApp.js:101
platform platform.ops (Operasi Platform) dashboard/requests/provisioning Internal platform Provider control plane; src/config/apps/appFragments/platformApp.js:26
platform platform.tenants (Tenant & Sekolah) tenants/schools/admins Internal platform Provider control plane; src/config/apps/appFragments/platformApp.js:58
platform platform.observability (Kesehatan Sistem) role observability pages Internal platform Internal support/diagnostics; src/config/apps/appFragments/platformApp.js:102

6. Candidate workflow surface — 20/20 workflow reconnaissance

Status di bawah adalah status workflow end-to-end, bukan otomatis status setiap modul atau halaman pembacanya. Contoh penting: attendance siswa manual adalah bagian produk inti, tetapi W05 belum dapat dianggap workflow yang siap didukung karena kontrak first-save, penyelesaian, koreksi, dan bukti izin belum konsisten. Itu sebabnya W05 diberi Requires product decision, sedangkan hub attendance dan halaman baca tetap dapat berstatus Core supported.

ID Workflow Candidate status Basis keputusan dan current-code evidence
W01 Academic master to timetable Core supported Rantai ini adalah prasyarat SC-CORE dan dipakai lintas attendance/LMS/reporting. Inference: urutan setup masih perlu owner/lock-window bisnis; docs/recon/workflow-candidates.md:18; src/router/academicCoreRoutes.js:1; src/services/admin/academics/academicMaster.service.js:8.
W02 Student onboarding Core supported SIS/student baseline berada dalam paket inti. HEAD menambah preflight, async job/progress, error export, dan idempotency; existing guide harus direkonsiliasi sebelum dipakai. docs/recon/workflow-candidates.md:19; src/views/AdminViews/StudentDatabase/UploadSiswa.vue:1; ../custom_addons_scola/gcgscola/scola_core/controllers/admin_import_api.py:210-286; ../custom_addons_scola/gcgscola/scola_core/models/student_import_job.py:19-117.
W03 SPMB applicant to enrolled student Optional module Termasuk SC-ADM, bukan baseline SC-CORE. State resmi dan momen pembuatan student masih memerlukan konfirmasi bisnis, tetapi itu tidak mengubah package boundary. docs/recon/workflow-candidates.md:20; src/router/spmbRoutes.js:1; ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_lifecycle_api.py:1.
W04 CBT exam lifecycle Optional module Termasuk SC-ASSESS professional; retry/reopen/late-submit dan sinkronisasi nilai belum menjadi SOP terkonfirmasi. docs/recon/workflow-candidates.md:21; src/router/learningAssessmentRoutes.js:1; ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_lifecycle_api.py:1.
W05 Daily student attendance Requires product decision Domain manual attendance adalah core, tetapi workflow write belum documentation-ready: first-save line bergantung ACL/runtime group, roster/completeness tidak ditegakkan, state menjadi done saat save, governance koreksi belum jelas, Sakit terlipat ke Izin, proof-file dan principal/VP boundary belum konsisten. docs/recon/workflow-candidates.md:22; docs/recon/open-questions.md:27,64-70; src/views/AttendanceManagement/Admin/DailyArrivalDeparture.vue:1; src/views/AttendanceManagement/Faculty/Attendance.vue:1; ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:1; ../custom_addons_scola/gcgscola/scola_attendance/models/op_attendance_sheet.py:1.
W06 Employee self-attendance Optional module Bagian SC-ATTEND+, dengan dependency schedule/device/location/face dan exception policy yang belum disahkan. docs/recon/workflow-candidates.md:23; src/router/attendanceRoutes.js:1; ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_checkin_api.py:1.
W07 Gradebook to report card Optional module Bagian SC-REPORT/SC-LEARN, bukan baseline; source-of-truth nilai dan batas edit pasca approval tetap perlu keputusan. docs/recon/workflow-candidates.md:24; ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_weekly_approval_api.py:1; ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_workflow_api.py:1.
W08 Promotion and retention Placeholder or incomplete State machine tersedia, tetapi recon mengonfirmasi endpoint admin memanggil helper yang tidak ada sehingga workflow tidak dapat dituntaskan aman dari UI. Jangan menormalisasi defect ini sebagai SOP. docs/recon/workflow-candidates.md:25; docs/recon/open-questions.md:20,64-65; ../custom_addons_scola/gcgscola/scola_report_card/models/student_promotion.py:527; ../custom_addons_scola/gcgscola/scola_report_card/controllers/promotion_admin_api.py:1.
W09 HR to payroll and payslip Optional module Termasuk SC-PEOPLE; approval, recompute, sumber attendance, dan privasi nominal tetap perlu workshop. docs/recon/workflow-candidates.md:26; ../custom_addons_scola/gcgscola/scola_payroll/controllers/payroll_api.py:1; ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:1.
W10 Billing and payment Optional module Termasuk SC-FEES/SC-FIN; reversal/refund, jurnal otomatis, dan approval ownership belum terkonfirmasi sebagai SOP. docs/recon/workflow-candidates.md:27; src/router/financeRoutes.js:1; ../custom_addons_scola/gcgscola/scola_fees/controllers/fee_enrollment_api.py:1.
W11 Accounting transaction lifecycle Optional module Termasuk SC-FIN; separation of duties dan view/manage boundary harus diputuskan sebelum panduan mutation final. docs/recon/workflow-candidates.md:28; src/router/financeRoutes.js:1; ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_modules_api.py:1.
W12 BOS/RKAS procurement Pilot or beta SC-BOS adalah controlled-rollout package; approval idempotency, attachment handling, dan final approver belum siap dianggap kontrak dukungan umum. docs/recon/workflow-candidates.md:29; ../custom_addons_scola/gcgscola/scola_bos_rkas/controllers/budget_admin_api.py:1; ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:1.
W13 Stock opname Optional module Termasuk SC-OPS; freeze window dan siapa yang boleh post adjustment membutuhkan policy bisnis, bukan asumsi dokumentasi. docs/recon/workflow-candidates.md:30; src/views/AdminViews/Inventory/StockOpname.vue:1; ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1.
W14 Library circulation Optional module Termasuk SC-LIB; queue concurrency, lost/damaged, waiver, dan pembayaran denda masih perlu konfirmasi. docs/recon/workflow-candidates.md:31; src/router/libraryManagementRoutes.js:1; ../custom_addons_scola/gcgscola/scola_library/controllers/library_queue_return_api.py:1.
W15 Counseling and student affairs Optional module Termasuk SC-STUDENT/SC-COUNSEL; package status optional, tetapi artikel data sensitif harus menunggu least-privilege/visibility decision. docs/recon/workflow-candidates.md:32; ../custom_addons_scola/gcgscola/scola_student_activity/controllers/kesiswaan_domain_api.py:1; ../custom_addons_scola/gcgscola/scola_counseling/controllers/counseling_domain_api.py:1.
W16 News publication Core supported Hanya canonical scola.news/SC-CORE yang dimaksud. /announcement dan service legacy dikeluarkan sebagai duplicate; approval/audience rules ada di model. docs/recon/workflow-candidates.md:33; ../custom_addons_scola/gcgscola/scola_news/models/scola_news.py:102; ../custom_addons_scola/gcgscola/scola_news/models/scola_news.py:1343.
W17 Complaint intake and triage Requires product decision Tidak ada boundary SKU/support yang disahkan; internal authorization, retention, attachment policy, consent, dan anti-spam fail-open belum aman dijanjikan. docs/recon/workflow-candidates.md:34; src/router/publicComplaintRoutes.js:1; ../custom_addons_scola/gcgscola/scola_public_complaint/controllers/public_complaint_api.py:55-107.
W18 Messaging and notification Requires product decision Portal communication shell ada, tetapi membership, cross-school scope, attachment ownership, quiet hours, dan notification ownership belum menjadi contract yang konsisten. docs/recon/workflow-candidates.md:35; ../custom_addons_scola/gcgscola/scola_portal/controllers/general_messaging_message_api.py:12; ../custom_addons_scola/gcgscola/scola_portal/controllers/portal_notification_api.py:18.
W19 Dapodik sync Pilot or beta SC-DAP adalah controlled public-sector rollout; matching lintas company, dry-run/conflict/rollback, dan destructive-sync policy belum siap untuk support umum. docs/recon/workflow-candidates.md:36; src/router/settingsRoutes.js:1; ../custom_addons_scola/gcgscola/scola_dapodik_connector/controllers/dapodik_api.py:1.
W20 RFID attendance ingestion Optional module Bagian SC-ATTEND+; bukan bagian pilot W05 dan retry/capability CRUD device-card masih perlu keputusan. docs/recon/workflow-candidates.md:37; ../custom_addons_scola/gcgscola/scola_smart_attendance/controllers/rfid_events_api.py:1; ../custom_addons_scola/gcgscola/scola_smart_attendance/models/rfid_attendance_processor.py:1.

7. Primary page-family candidates — 36/36 application entries

Satu baris mewakili page family kanonis pada entry utama tiap application app, bukan semua 884 page records. Redirect, alias, dan shared component tidak dihitung sebagai page baru. Status route individual tetap mengikuti guard/capability dan readiness pada evidence; menu visibility bukan bukti authorization.

Application app Canonical route / primary page Component family Candidate status Dedupe/readiness evidence
admin /admin/dashboard src/views/AdminViews/AdminDashboard.vue Core supported Canonical admin portal entry; src/router/index.js:1; docs/recon/route-inventory.md:636.
teacher /faculty/dashboard src/views/FacultyViews/TeacherDashboard.vue Core supported /faculty/home adalah redirect, bukan page kedua; src/router/index.js:1; docs/recon/route-inventory.md:72; docs/recon/route-inventory.md:1349.
student /student/dashboard src/views/StudentViews/StudentDashboard.vue Core supported Canonical student portal entry; src/router/index.js:1; docs/recon/route-inventory.md:1126.
parent /parent/dashboard src/views/ParentViews/ParentDashboard.vue Core supported Canonical parent portal entry; linked-parent auth delta is in current backend; src/router/index.js:1; docs/recon/route-inventory.md:990; ../custom_addons_scola/gcgscola/scola_core/controllers/auth.py:1.
principal /principal/dashboard src/views/Principal/PrincipalDashboard.vue Requires product decision Page shell exists, tetapi attendance/analytics role-contract drift membuat supported principal surface belum dapat disahkan sebagai satu package; src/router/index.js:1; docs/recon/route-inventory.md:1055.
counselor /counseling/dashboard src/views/CounselingManagement/CounselorDashboard.vue Optional module SC-COUNSEL/SC-STUDENT; sensitive-record visibility caveat applies; src/router/counselingRoutes.js:1; docs/recon/route-inventory.md:729.
extracurricular /faculty/extracurricular src/views/CounselingManagement/Extracurricular/ExtracurricularList.vue Optional module SC-STUDENT app entry; src/router/counselingRoutes.js:1; docs/recon/route-inventory.md:1192.
librarian /librarian/library src/views/LibraryManagement/Media/MediaCatalogPage.vue Optional module Librarian role shell on SC-LIB; library management aliases/components are deduped below; src/router/libraryManagementRoutes.js:1; docs/recon/route-inventory.md:936.
lab /lab-technician/dashboard src/views/Laboran/LaboranDashboard.vue Placeholder or incomplete Dashboard dan enam subordinate views adalah static placeholders tanpa API; src/router/labTechnicianRoutes.js:4-15; docs/recon/route-inventory.md:914; docs/recon/open-questions.md:44-54.
security /security-officer/dashboard src/views/Compliance/SecurityOfficerDashboard.vue Requires product decision Role-facing operations exist but no canonical supported SKU/scope; least-privilege and sensitive visitor/incident ownership need decision. src/router/compliancePortalRoutes.js:78-90; docs/recon/route-inventory.md:1086.
committee /school-committee/dashboard src/views/Compliance/SchoolCommitteeDashboard.vue Requires product decision Read-only governance boundary is not package-mapped or runtime-proven; src/router/compliancePortalRoutes.js:105-117; docs/recon/route-inventory.md:1080.
bos /bos/dashboard src/views/Compliance/BosAdminDashboard.vue Pilot or beta SC-BOS controlled rollout; src/router/compliancePortalRoutes.js:121-134; docs/recon/route-inventory.md:709.
dapodik /dapodik/dashboard src/views/Compliance/DapodikOperatorDashboard.vue Pilot or beta SC-DAP controlled rollout; destructive/matching policy unresolved; src/router/compliancePortalRoutes.js:4-17; docs/recon/route-inventory.md:758.
dpo /dpo/audit-log src/views/Dpo/DpoPiiAuditLog.vue Requires product decision DPO access model and purpose/retention of audit data need Security/DPO decision; src/router/compliancePortalRoutes.js:38-74; docs/recon/route-inventory.md:776.
foundation-auditor /foundation-auditor/dashboard src/views/Compliance/FoundationAuditorDashboard.vue Optional module SC-FOUND auditor overlay; runtime tenant scope still needs verification. src/router/compliancePortalRoutes.js:21-34; docs/recon/route-inventory.md:851.
pickup /pickup/attendance src/views/AttendanceManagement/PickupOfficer/MobileTransportTasks.vue Requires product decision Separate pickup/transport process, explicitly excluded from W05; package and privacy boundary not canonical. src/router/attendanceRoutes.js:1; docs/recon/route-inventory.md:1016.
admin-staff /admin-staff/dashboard src/views/AdminViews/StaffTUDashboard.vue Requires product decision Mixed core/optional leaf aggregation and role-capability contract require product selection. src/router/index.js:1; docs/recon/route-inventory.md:662.
foundation /foundation/dashboard src/views/Yayasan/YayasanDashboard.vue Optional module SC-FOUND; src/router/foundationRoutes.js:4; docs/recon/route-inventory.md:828.
foundation-hr-ops /foundation/hr/employees src/views/Yayasan/FoundationEmployeeRegistry.vue Optional module SC-FOUND/SC-PEOPLE operations; src/router/foundationRoutes.js:74; docs/recon/route-inventory.md:837.
vp-curriculum /vice-principal/curriculum src/views/AdminViews/WakasekDashboard.vue Requires product decision Shared shell with infrastructure/PR; role behavior and mixed core/LMS/attendance scope not package-mapped. src/router/vicePrincipalRoutes.js:1; docs/recon/route-inventory.md:1228.
vp-student-affairs /vice-principal/student-affairs src/views/Principal/PrincipalStudents.vue Requires product decision Mixed student master, W05 attendance, and optional student-affairs data; src/router/vicePrincipalRoutes.js:1; docs/recon/route-inventory.md:1278.
vp-infrastructure /vice-principal/infrastructure src/views/AdminViews/WakasekDashboard.vue Requires product decision Same component family as VP curriculum/PR; must not become three duplicate help articles unless role output differs. src/router/vicePrincipalRoutes.js:1; docs/recon/route-inventory.md:1257.
vp-public-relations /vice-principal/public-relations src/views/AdminViews/WakasekDashboard.vue Requires product decision Same component family; combines core news/calendar and optional admissions. src/router/vicePrincipalRoutes.js:1; docs/recon/route-inventory.md:1270.
vp-finance /vice-principal/finance src/views/AdminViews/AcademicConfig/Fees/FeeDashboard.vue Requires product decision Fee dashboard reuse with a role wrapper; SC-FEES/FIN entitlement boundary not proven. src/router/vicePrincipalRoutes.js:1; docs/recon/route-inventory.md:1248.
academic /academic-year src/views/AdminViews/AcademicConfig/AcademicYear/AcademicYearList.vue Core supported Canonical academic-master entry; SC-CORE. src/router/academicCoreRoutes.js:1; docs/recon/route-inventory.md:602.
student-affairs /students src/views/AdminViews/StudentDatabase/StudentList.vue Core supported Student master list is core; optional pembinaan pages remain separately optional. src/router/studentRoutes.js:1; docs/recon/route-inventory.md:1112.
hr /teachers src/views/AdminViews/TeacherDatabase/TeacherList.vue Optional module SC-PEOPLE; teacher DB route is not SC-CORE package proof. src/router/teacherAdminRoutes.js:3-13; docs/recon/route-inventory.md:877.
finance /payment/schedule src/views/AdminViews/AcademicConfig/Fees/Schedule/FeeScheduleList.vue Optional module SC-FEES finance entry; src/router/financeRoutes.js:1; docs/recon/route-inventory.md:816.
inventory /inventory/dashboard src/views/AdminViews/Inventory/InventoryOfficerDashboard.vue Optional module SC-OPS; src/router/inventoryRoutes.js:1; docs/recon/route-inventory.md:891.
library /library/hub src/views/LibraryManagement/Hubs/LibraryManagementHub.vue Optional module Canonical shared management hub; role-specific library aliases are not separate products. src/router/libraryManagementRoutes.js:1; docs/recon/route-inventory.md:963.
admissions /admin/spmb/dashboard src/views/AdmissionManagement/AdmissionDashboard.vue Optional module SC-ADM; src/router/spmbRoutes.js:1; docs/recon/route-inventory.md:687.
attendance /attendance/home src/views/AttendanceManagement/Admin/AttendanceHome.vue Core supported Read/navigation hub for manual attendance domain is core; this does not bless W05 write/correction pages. src/router/attendanceRoutes.js:1; docs/recon/route-inventory.md:752.
analytics /principal/analytics src/views/AnalyticsManagement/Admin/PrincipalDashboard.vue Requires product decision /admin/analytics/principal is redirect only; recon found destination guard rejects modeled source roles. src/router/principalRoutes.js:354-373; src/router/analyticsAdminRoutes.js:3-6; docs/recon/route-inventory.md:1047; docs/recon/route-inventory.md:1308; docs/recon/open-questions.md:35-39.
communication /calendar src/views/AdminViews/Calendar/CalendarView.vue Core supported Canonical core calendar entry; messaging/complaints are not folded into this support decision. src/router/communicationAdminRoutes.js:33-53; docs/recon/route-inventory.md:1210.
settings /settings/company src/views/SettingsManagement/CompanySettings.vue Core supported Canonical school/company settings entry; optional LMS/attendance/Dapodik settings remain separately gated. src/router/settingsRoutes.js:1; docs/recon/route-inventory.md:845.
platform /platform/dashboard src/views/Platform/PlatformDashboard.vue Internal platform Provider control plane, not school-user documentation. src/router/platformRoutes.js:1; docs/recon/route-inventory.md:1022.

Page-level exceptions that change documentation scope

Canonical page family Candidate status Why it is not inherited blindly from its parent app
/attendance/daily and /faculty/attendance Requires product decision W05 mutation surfaces have the first-save ACL/runtime-group, roster/completeness, done-on-save, correction governance, status-loss, proof-file, and role-drift findings described above; src/views/AttendanceManagement/Admin/DailyArrivalDeparture.vue:1; src/views/AttendanceManagement/Faculty/Attendance.vue:1; ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:1.
/student/attendance and /parent/attendance Core supported Read surfaces are part of manual attendance core, subject to runtime verification of child/tenant scoping; src/router/studentRouteFragments/core.js:26; src/router/parentRouteFragments/core.js:36; docs/recon/route-inventory.md:987,1122.
/students/import Requires product decision W02/domain remains core, tetapi route hanya meminta students.list.view sementara backend mutation memakai admin/user-management authority yang lebih kuat; async job path juga belum runtime-verified. Jangan ajarkan halaman import sebagai generally available sampai FE/API authority diselaraskan. src/router/studentDataAdminRoutes.js:14-20; src/views/AdminViews/StudentDatabase/UploadSiswa.vue:769-835; ../custom_addons_scola/gcgscola/scola_core/controllers/admin_import_api.py:27-40; ../custom_addons_scola/gcgscola/scola_core/controllers/admin_import_api.py:210-286.
/announcement plus announcementService.js Legacy or duplicate Parallel legacy publication surface; canonical documentation target is scola.news; docs/recon/open-questions.md:39-40; src/router/sharedExperienceRoutes.js:59; src/services/news/announcementService.js:1.
Six Laboran child routes plus /lab-technician/dashboard Placeholder or incomplete Static/mock UI with no API dependency; do not publish operational instructions. docs/recon/open-questions.md:44-54; src/router/labTechnicianRoutes.js:4-15; src/views/Laboran/LaboranDashboard.vue:1.
/register Placeholder or incomplete Public shell/stub is not evidence of a supported registration lifecycle; docs/recon/route-inventory.md:544; src/views/Register.vue:1.
Promotion/retention pages Placeholder or incomplete UI/model state exists, but the audited admin endpoint has a missing-helper execution defect; docs/recon/workflow-candidates.md:25; ../custom_addons_scola/gcgscola/scola_report_card/controllers/promotion_admin_api.py:1.
/admin/complaint* and public complaint intake Requires product decision Authorization ownership, retention, attachments/consent, anti-spam mode, and support packaging are unresolved; src/router/publicComplaintRoutes.js:1; ../custom_addons_scola/gcgscola/scola_public_complaint/controllers/public_complaint_api.py:55-107.
VP dashboard aliases sharing WakasekDashboard.vue Requires product decision One component family is reused by three route roles; produce shared help plus role deltas only after runtime capability decisions, not duplicate articles. src/router/vicePrincipalRoutes.js:1; src/views/AdminViews/WakasekDashboard.vue:1.

8. Auditable coverage and decisions still required

Inventory layer Recon baseline Candidate coverage in this file Audit treatment
Frontend application apps 36 36 Exactly one app-level candidate per APP_IDS entry.
Frontend menu groups 143 143 One row per section; leaves are summarized inside their owning group, not silently promoted to separate supported products.
Frontend leaves 529 at recon; 528 at HEAD 528 represented through 143 group rows HEAD removed one duplicate academic.class-daily-report leaf; alias/shared-component dedupe is explicit.
Router records 1,003 = 884 pages + 119 redirects/aliases 36 primary app page families + explicit high-risk exceptions This is a product-surface catalog, not a replacement for the 1,003-record route inventory. Every route remains auditable in docs/recon/route-inventory.md:55-1415.
Workflow candidates 20 20 One exclusive candidate status per W01–W20.
Backend manifest modules 67 67 Every current manifest classified once; bridge/compatibility conflicts are not force-resolved.
Backend source directories without manifest 4 4 Kept separate from installable modules.

Before this catalog can become a final supported-product statement, Product must decide the role shells that aggregate mixed packages (principal, admin staff, vice principals), the canonical assessment/inventory/BOS bridge names, W05 mutation/correction governance, complaint/messaging/privacy ownership, analytics destination roles, and legacy deprecation dates. Security/DPO must separately approve sensitive student, counseling, messaging, proof-file, biometric, and cross-tenant boundaries. Operations must provide a tenant/runtime installation baseline; static presence, a menu leaf, an existing guide, or a route guard alone is not evidence that a surface is enabled or safe in production.

Net conclusion: the evidence supports a deliberately narrow V1 surface: SC-CORE portals, academic master/timetable, student master/onboarding at domain level (excluding the import UI until its authority drift is resolved), canonical news/calendar/notification shell, and read-oriented manual student attendance. Optional package documentation can proceed package-by-package with explicit entitlement labels. Pilot/beta, placeholder, internal, legacy, and Requires product decision surfaces must not be presented as generally supported until their listed decisions or defects are closed.