Lewati ke isi

Plan: V1F-006 — FE/BE capability prefix parity

Status: DONE (2026-08-26) — CHECK_PREFIX_PARITY=1 PASS; FE b4d0c49e…; BE a4fcf6da…; demo immutable rebound fe-build-b4d0c49e8cf8-v1f006 (no production FE promote).

Goal

Menutup gate opsional CHECK_PREFIX_PARITY=1 (saat ini FAIL 4/4) untuk kunci in-scope SC-ADM / drift scola_cbt, tanpa memperluas scope V1.

Scope in

  • scola-fe-v2/src/config/entitlements.js (prefix/exact maps)
  • Alignment dengan platform_entitlements.py (read-only unless BE juga salah)
  • Contract test dengan CHECK_PREFIX_PARITY=1

Scope out

  • Redesign entitlement taxonomy penuh (T0-U03)
  • Production deploy dari patch ini tanpa lewat demo candidate baru

Steps

  1. Repro lokal: CHECK_PREFIX_PARITY=1 npm run test:contract — catat 4 kunci gagal.
  2. Klasifikasi tiap kunci: FE-only / BE-only / rename / out-of-V1.
  3. Untuk in-scope SC-ADM: sync map FE ke BE.
  4. Untuk academics.exam_* FE-only: hapus atau pindah out-of-V1 explicit allowlist bila product setuju.
  5. PR ke develop; QC FE penuh; jangan [skip ci] ke staging.
  6. Setelah merge: putuskan apakah perlu candidate immutable baru atau cukup catatan residual sampai freeze berikutnya.

Acceptance criteria

  • CHECK_PREFIX_PARITY=1 exit 0
  • Tidak ada capability baru yang membuka surface out-of-contract
  • Decision log untuk kunci yang di-drop

Risks

  • Salah sync membuka menu/API
  • Memaksa candidate SHA baru (f7a20f7d tidak lagi exact app tip)

Estimated effort

4–12 jam tergantung product decisions.

Dependencies

  • Product call untuk kunci borderline (approval prompt)