schema_version: 1.1.0
meta:
  application: administration
  path: administration
  generated_at: '2026-06-04T00:00:00.000Z'
  source_signature:
    nav_sha: '1111111111111111111111111111111111111111111111111111111111111111'
    rbac_sha: '2222222222222222222222222222222222222222222222222222222222222222'
    registry_sha: '3333333333333333333333333333333333333333333333333333333333333333'
roles:
  - super-admin
  - admin
  - manager
  - contributor
  - viewer
  - anonymous
role_catalog:
  super-admin:
    id: 00000000-0000-4000-8000-00000000000a
    code: super-admin
  admin:
    id: 00000000-0000-4000-8000-00000000000b
  manager:
    id: 00000000-0000-4000-8000-00000000000c
    code: team-manager
  contributor:
    id: 00000000-0000-4000-8000-00000000000d
  viewer:
    id: 00000000-0000-4000-8000-00000000000e
execution:
  modes:
    - bfs
    - goto
  caps:
    tabs: 8
    buttons: 10
    forms: 3
    depth: 3
    actions_per_role: 500
  readiness:
    strategy: fully_ready
    timeout_ms: 12000
    retry_on_not_ready: 2
  perf:
    capture:
      - ttfp_ms
      - fully_ready_ms
      - nav_ms
    warn_ms: 3000
    slow_ms: 8000
  screenshots:
    out_dir: .application-test/runs/${run}/screenshots/${role}/${route_id}
  per_role:
    anonymous:
      mode: goto
      expect: redirect_login
routes:
  - id: ADMINISTRATION_USERS
    component_key: administration.users
    route: /administration/users
    permission: administration.users.read
    navigation_strategy: menu_click
    expect:
      access_by_role: true
      title: Users
      no_console_error: true
    access:
      super-admin: allowed
      admin: allowed
      manager: allowed
      contributor: denied
      viewer: allowed
      anonymous: redirect_login
    subsets: []
  - id: ADMINISTRATION_USERS_DETAIL
    component_key: administration.users.detail
    route: /administration/users/:id
    permission: administration.users.read
    navigation_strategy: click_row_in_parent
    parent_route: /administration/users
    on_empty_list: INDETERMINATE
    expect:
      access_by_role: true
      title: Users
      no_console_error: true
    access:
      super-admin: allowed
      admin: allowed
      manager: allowed
      contributor: denied
      viewer: allowed
      anonymous: redirect_login
    subsets: []
  - id: ADMINISTRATION_USERS_CREATE
    component_key: administration.users.create
    route: /administration/users/create
    permission: administration.users.read
    navigation_strategy: goto
    expect:
      access_by_role: true
      title: Users
      no_console_error: true
    access:
      super-admin: allowed
      admin: allowed
      manager: allowed
      contributor: denied
      viewer: allowed
      anonymous: redirect_login
    subsets: []
  - id: ADMINISTRATION_ROLES
    component_key: administration.roles
    route: /administration/roles
    permission: administration.roles.read
    navigation_strategy: menu_click
    expect:
      access_by_role: true
      title: Roles
      no_console_error: true
    access:
      super-admin: allowed
      admin: allowed
      manager: denied
      contributor: denied
      viewer: denied
      anonymous: redirect_login
    subsets: []
endpoints:
  - id: get:administration/users
    method: GET
    route: /api/administration/users
    controller: UsersController
    permission: administration.users.read
    expected_by_role:
      super-admin: 200
      admin: 200
      manager: 200
      contributor: 403
      viewer: 200
      anonymous: 401
  - id: post:administration/users
    method: POST
    route: /api/administration/users
    controller: UsersController
    permission: administration.users.create
    expected_by_role:
      super-admin: 201
      admin: 201
      manager: 403
      contributor: 403
      viewer: 403
      anonymous: 401
  - id: get:administration/roles
    method: GET
    route: /api/administration/roles
    controller: RolesController
    permission: administration.roles.read
    expected_by_role:
      super-admin: 200
      admin: 200
      manager: 403
      contributor: 403
      viewer: 403
      anonymous: 401
drift_policy:
  extra_subset_in_dom:
    severity: WARN
    fail_run: false
  missing_subset_in_dom:
    severity: FAIL
    fail_run: false
  overexposed_subset:
    severity: BLOCKER
    fail_run: false
  signature_mismatch:
    severity: BLOCKER
    fail_run: true
