{
  "schema_version": "scola.t1b.core-parity-denominator.v1",
  "workstream": "T1-B",
  "generated_at": "2026-08-10",
  "mode": "server",
  "workspace_root": "/home/scola/odoo",
  "phase0_preflight": "PASS",
  "notes": [
    "Denominator is bounded Core V1 only — not all APP_REGISTRY leaves.",
    "Optional/pilot/decision-required surfaces are residuals, not denominator rows.",
    "W01/W02/W05 workflow certification is explicitly out of scope."
  ],
  "surfaces": [
    {
      "surface_id": "core.admin.dashboard",
      "canonical_route": "/admin/dashboard",
      "app_id": "admin-dashboard",
      "menu_capability": "dashboard.operations.view",
      "router_capability": "dashboard.operations.view",
      "backend_capability": "dashboard.operations.view",
      "backend_api_examples": ["/api/v1/admin/dashboard/", "/api/dashboard/stats"],
      "DEC-003_resource": "dashboard.operations",
      "DEC-003_action": "view",
      "expected_scope": "company",
      "expected_active_roles": ["school_admin", "admin", "head_admin"],
      "alias_policy": "compat_redirect_only",
      "aliases": ["/adminhome", "/admin/home"],
      "status": "IN_SCOPE"
    },
    {
      "surface_id": "core.teacher.dashboard",
      "canonical_route": "/faculty/dashboard",
      "app_id": "teacher-portal",
      "menu_capability": "academics.dashboard.view",
      "router_capability": "academics.dashboard.view",
      "backend_capability": "academics.dashboard.view",
      "backend_api_examples": ["/api/v1/teacher/dashboard", "/api/v1/teacher/homeroom"],
      "DEC-003_resource": "academics.dashboard",
      "DEC-003_action": "view",
      "expected_scope": "assignment_class_batch",
      "expected_active_roles": ["teacher", "homeroom"],
      "alias_policy": "compat_redirect_only",
      "aliases": ["/faculty/home"],
      "status": "IN_SCOPE"
    },
    {
      "surface_id": "core.student.dashboard",
      "canonical_route": "/student/dashboard",
      "app_id": "student-portal",
      "menu_capability": "students.dashboard.view",
      "router_capability": "students.dashboard.view",
      "backend_capability": "students.dashboard.view",
      "backend_api_examples": ["/api/v1/student/dashboard", "/api/v1/student/portal/dashboard"],
      "DEC-003_resource": "students.dashboard",
      "DEC-003_action": "view",
      "expected_scope": "self",
      "expected_active_roles": ["student"],
      "alias_policy": "compat_redirect_only",
      "aliases": ["/student/home"],
      "status": "IN_SCOPE"
    },
    {
      "surface_id": "core.parent.dashboard",
      "canonical_route": "/parent/dashboard",
      "app_id": "parent-portal",
      "menu_capability": "parents.dashboard.view",
      "router_capability": "parents.dashboard.view",
      "backend_capability": "parents.dashboard.view",
      "backend_api_examples": ["/api/v1/parent/dashboard", "/api/v1/parent/portal/dashboard", "/api/v1/parent/child/"],
      "DEC-003_resource": "parents.dashboard",
      "DEC-003_action": "view",
      "expected_scope": "linked_child",
      "expected_active_roles": ["parent"],
      "alias_policy": "compat_redirect_only",
      "aliases": ["/parent/home"],
      "shell_capability_note": "App shell retains parents.portal.view (shell access); page uses parents.dashboard.view — not ambiguous synonyms for the same gate.",
      "status": "IN_SCOPE"
    },
    {
      "surface_id": "core.students.list",
      "canonical_route": "/students",
      "app_id": "student-affairs",
      "menu_capability": "students.list.view",
      "router_capability": "students.list.view",
      "backend_capability": "students.list.view",
      "backend_api_examples": ["/api/v1/core/students/search"],
      "DEC-003_resource": "students.list",
      "DEC-003_action": "view",
      "expected_scope": "company",
      "expected_active_roles": ["school_admin", "admin_staff", "head_admin"],
      "alias_policy": "none",
      "aliases": [],
      "status": "IN_SCOPE",
      "workflow_boundary": "W02_NOT_CERTIFIED"
    },
    {
      "surface_id": "core.academic_year",
      "canonical_route": "/academic-year",
      "app_id": "academic",
      "menu_capability": "academics.academic_year.view",
      "router_capability": "academics.academic_year.view",
      "backend_capability": "academics.academic_year.view",
      "backend_api_examples": [],
      "DEC-003_resource": "academics.academic_year",
      "DEC-003_action": "view",
      "expected_scope": "company",
      "expected_active_roles": ["school_admin", "head_admin"],
      "alias_policy": "none",
      "aliases": [],
      "status": "IN_SCOPE",
      "workflow_boundary": "W01_NOT_CERTIFIED"
    },
    {
      "surface_id": "core.schedule",
      "canonical_route": "/schedule",
      "app_id": "academic",
      "menu_capability": "academics.schedule.view",
      "router_capability": "academics.schedule.view",
      "backend_capability": "academics.schedule.view",
      "backend_api_examples": ["/api/lms/calendar"],
      "DEC-003_resource": "academics.schedule",
      "DEC-003_action": "view",
      "expected_scope": "company_or_assignment",
      "expected_active_roles": ["school_admin", "teacher", "homeroom"],
      "alias_policy": "none",
      "aliases": [],
      "status": "IN_SCOPE",
      "workflow_boundary": "W01_NOT_CERTIFIED"
    },
    {
      "surface_id": "core.attendance.home",
      "canonical_route": "/attendance/home",
      "app_id": "attendance",
      "menu_capability": "students.attendance.view",
      "router_capability": "students.attendance.view",
      "backend_capability": "students.attendance.view",
      "backend_api_examples": ["/api/v1/attendance/student/", "/api/v1/attendance/admin/", "/api/v1/attendance/analytics/"],
      "DEC-003_resource": "students.attendance",
      "DEC-003_action": "view",
      "expected_scope": "company_or_assignment",
      "expected_active_roles": ["school_admin", "admin_staff", "teacher", "homeroom", "principal", "head_admin"],
      "alias_policy": "compat_redirect_only",
      "aliases": ["/absensi"],
      "app_capability": "students.attendance.view",
      "status": "IN_SCOPE",
      "workflow_boundary": "W05_NOT_CERTIFIED"
    },
    {
      "surface_id": "core.attendance.daily",
      "canonical_route": "/attendance/daily",
      "app_id": "attendance",
      "menu_capability": "students.attendance.update",
      "router_capability": "students.attendance.update",
      "backend_capability": "students.attendance.update",
      "backend_api_examples": ["/api/v1/attendance/daily/", "/api/v1/attendance/faculty/"],
      "DEC-003_resource": "students.attendance",
      "DEC-003_action": "update",
      "expected_scope": "company_or_assignment",
      "expected_active_roles": ["school_admin", "admin_staff", "teacher", "homeroom", "head_admin"],
      "alias_policy": "none",
      "aliases": [],
      "status": "OUT_OF_SCOPE",
      "workflow_boundary": "W05_NOT_CERTIFIED",
      "rc1_note": "Daily attendance is not bounded Core W05; fail-closed before RC1."
    },
    {
      "surface_id": "core.news",
      "canonical_route": "/news",
      "app_id": "communication",
      "menu_capability": "communication.news.view",
      "router_capability": "communication.news.view",
      "backend_capability": "communication.news.view",
      "backend_api_examples": ["/api/v1/news/", "/api/portal/announcements"],
      "DEC-003_resource": "communication.news",
      "DEC-003_action": "view",
      "expected_scope": "company",
      "expected_active_roles": ["school_admin", "teacher", "student", "parent", "homeroom"],
      "alias_policy": "compat_redirect_only",
      "aliases": ["/parent/news", "/faculty/news"],
      "status": "IN_SCOPE"
    },
    {
      "surface_id": "core.calendar",
      "canonical_route": "/calendar",
      "app_id": "communication",
      "menu_capability": "communication.calendar.view",
      "router_capability": "communication.calendar.view",
      "backend_capability": "communication.calendar.view",
      "backend_api_examples": ["/api/v1/calendar/events"],
      "DEC-003_resource": "communication.calendar",
      "DEC-003_action": "view",
      "expected_scope": "company",
      "expected_active_roles": ["school_admin", "teacher", "student", "parent", "homeroom"],
      "alias_policy": "none",
      "aliases": [],
      "status": "IN_SCOPE"
    },
    {
      "surface_id": "core.settings.company",
      "canonical_route": "/settings/company",
      "app_id": "settings",
      "menu_capability": "settings.school.view",
      "router_capability": "settings.school.view",
      "backend_capability": "settings.school.view",
      "backend_api_examples": ["/api/v1/settings/company/"],
      "DEC-003_resource": "settings.school",
      "DEC-003_action": "view",
      "expected_scope": "company",
      "expected_active_roles": ["school_admin", "admin"],
      "alias_policy": "none",
      "aliases": [],
      "status": "IN_SCOPE"
    },
    {
      "surface_id": "core.admin.users",
      "canonical_route": "/admin/users",
      "app_id": "settings",
      "menu_capability": "users.manage",
      "router_capability": "users.manage",
      "backend_capability": "users.manage",
      "backend_api_examples": ["/api/v1/users", "/api/v1/admin/accounts/"],
      "DEC-003_resource": "users",
      "DEC-003_action": "manage",
      "expected_scope": "company",
      "expected_active_roles": ["school_admin", "admin"],
      "alias_policy": "none",
      "aliases": [],
      "status": "IN_SCOPE"
    }
  ]
}
