Lewati ke isi

T0-A.1 Preflight

Item Value
Mode Server development
Workspace /home/scola/odoo
Captured 2026-08-08 (local server clock)
Purpose Re-verify dirty T0-A trees before T0-A.1 edits

Exact tree state

Repo Branch HEAD SHA Working tree
scola-fe-v2 develop b48ca63859d3d822f22572dc76a08afbe4f2f653 dirty (T0-A uncommitted)
custom_addons_scola/gcgscola main 2ff6ac7cb41810bbc3b66821cdad004b52d1658a dirty (T0-A uncommitted)

Matches T0-A-result.md base SHAs. No intervening commits on either branch.

T0-A modified / untracked (expected)

Frontend (modified)

  • docs/release-readiness/04-authorization-readiness.md
  • docs/release-readiness/08-stabilization-backlog.md
  • src/access/accessContract.js
  • src/access/apiRouteAccessRegistry.js
  • src/stores/auth.store.js
  • tests/unit/access/feBackendApiRouteAccessParity.spec.js

Frontend (untracked)

  • docs/release-readiness/execution/T0-A-capability-inventory.md
  • docs/release-readiness/execution/T0-A-implementation-plan.md
  • docs/release-readiness/execution/T0-A-result.md
  • docs/recon/template_upload_siswa_SD REJIS Kelas 1.xlsxunrelated; exclude from T0-A/T0-A.1 checkpoint

Backend (modified)

  • scola_core/controllers/auth.py
  • scola_core/controllers/core_reference_api.py
  • scola_core/models/ir_http.py
  • scola_core/services/auth_capabilities.py
  • scola_core/tests/test_auth_capabilities_unit.py
  • scola_core/tests/test_auth_payload_contract_unit.py
  • scola_platform_support/api_route_access.py
  • scola_platform_support/tests/test_api_route_access_unit.py

Backend (untracked)

  • scola_core/services/mail_tracking_access.py
  • scola_core/tests/test_active_role_enforcement_unit.py
  • scola_core/tests/test_mail_tracking_access_unit.py

No unrelated code changes beyond the excel recon artifact.

Mandatory T0-A suite re-run (preflight)

Suite Result
test_active_role_enforcement_unit.py PASS (12)
test_auth_capabilities_unit.py PASS (73)
test_auth_payload_contract_unit.py PASS (6)
test_mail_tracking_access_unit.py PASS (10)
test_api_route_access_unit.py PASS (53)
scripts/modular/api_route_registry_gap_check.py PASS (0 unregistered /api/v1/* vs budget 5)

Comparison vs T0-A.1 findings to close

Finding Still true at preflight? Evidence
AUTH-004: unregistered protected can skip capability gate Yes ir.http._resolve_capability_gate: if resolve_api_route_access(path) is None, returns None → request proceeds
Gap check only audits /api/v1/* Yes api_route_registry_gap_check.py _should_audit + ignores /api/auth/
Inventory only lists registered prefixes Yes T0-A-capability-inventory.md scope note
Method/action rules not supported Yes Rules are 4-tuples; resolver ignores HTTP method
Core attachments/create gated by .view Yes Registry line + controller creates ir.attachment
Active role is user-global (res.users.scola_role) Yes action_switch_active_scola_role writes user field

Preflight conclusion

Safe to proceed with T0-A.1 on the same dirty trees. Checkpoint must include T0-A + T0-A.1 together (or sequential commits) and exclude the unrelated xlsx recon file.