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_RESPONSEfor 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), neverwrite(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.