Lewati ke isi

T6A W03 Clean Slate Amendment

Field Value
Approver Requesting user via current conversation
Date 2026-09-03
Scope SC-ADM / W03 only — complaints, authoritative ranking, waitlist promote
Status APPROVED_BY_REQUESTING_USER_CONVERSATION
Ancestor T6A-W03-approved-product-contract.md (2026-08-16)
Production authority None — dev (odoo-devscola) only
RC1 impact None

This record amends the 2026-08-16 T6A product contract for surfaces that were marked non-goal / fail-closed while SPMB was not yet operational. It does not rewrite T6A history. It does not authorize production or GBN change. It does not weaken W03 SoD, enrollment officer exclusivity, or W10-only payment.


1. Surfaces promoted to live (SC-ADM)

Surface Capability (minimum) Notes
Applicant + staff complaints admissions.complaints.view / admissions.complaints.process Create → process → resolve/reject + attachments
Authoritative ranking recalc admissions.ranking.view / admissions.ranking.recalc Writes rank_in_pathway / waitlist_position; audit log
Waitlist promote admissions.waitlist.promote Approver/manager; W03 verified → accepted + quota — never legacy state

Constants COMPLAINTS_FAIL_CLOSED, RANKING_RECALC_FAIL_CLOSED, and WAITLIST_PROMOTE_FAIL_CLOSED are removed from w03_contract.py.


2. Surfaces deleted (not fail-closed)

Surface Disposition
Legacy /api/SPMB/payment/* Route removed
Pre-enroll invoice /api/SPMB/my/admission/invoice* and formulir invoice/proof/status leftovers Route removed
Applicant confirm-enrollment Route removed (enroll remains staff-only via W03)
FE productStatus: DECISION_REQUIRED on SPMB ranking/complaints menus Removed; routes visible when entitled
Portal complaint redirect Replaced by live SPMBComplaint.vue

APPLICANT_ENROLL_FAIL_CLOSED is removed with the applicant enroll route (clean slate — no stub).


3. Explicitly unchanged (still binding)

  • W03 state machine + SoD (verifier ≠ approver ≠ enroll)
  • Enrollment only by Enrollment Officer — no self-enroll UI
  • Payment only via W10 cash/transfer (manualPayment.service.js)
  • GENERIC_IDENTITY_RESPONSE for register/OTP
  • Legacy OpenEduCat admin test wizards stay hidden; CBT remains SC-CBT
  • No payment gateway; no production / GBN promotion

4. Engineering binding

  • Source of truth for constants/caps: scola_admission/services/w03_contract.py
  • Domain hub: docs/domains/spmb/README.md
  • Promote waitlist must call op.admission.action_w03_transition('accepted', …) (quota atomic), never write(state='admission').

Non-goals (still)

Fees/CBT/Foundation certification beyond existing bridges, messaging / public-complaint domain, W01/W02 redesign, Core navigation redesign, production promotion, GBN mutation.