W02.1 Post-enrollment archive — engineering result (bounded)
Label: W02.1-POST-ENROLLMENT-ARCHIVE
Mode: server · Workspace: /home/scola/odoo
Status: bounded engineering closed on current tip — bukan full W03 reversal, bukan W02 CERTIFIED, bukan demo/production claim.
Docs dibaca: AGENTS.md, AI_AGENT_MASTER_GUIDE.md, development-guide.md, workspace-governance.md, architecture-api.md, T6A.1-SPMB-ops-residuals.md, T6B-V1-residuals.md, T6B2-residuals.md, kontrak W03 / residual T6A.
Lapisan status (wajib dibedakan)
| Lapisan |
Arti untuk slice ini |
| Historical snapshot |
Residual T6A.1 (2026-08-20) masih menulis “Reversal enrolled → Scope W02” dan clamscan sebagai residual T4.1 — snapshot itu tidak diganti verdict auditor. |
| Current-tip engineering |
Endpoint admission-scoped + FE archiveEnrolledStudentRecord + unit/E2E smoke ada di tip FE/BE di bawah. |
| Served-dev |
File ini tidak mengikat served FE version.json / module installed-state / live DB. Verifikasi served = fase QC/deploy terpisah. |
| Deferred product |
Full reversal enrolled, waitlist, ranking otoritatif, T6D CBT, demo/prod promotion. |
Tip bind (source worktree saja)
| Surface |
Tip (short) |
Catatan |
FE scola-fe-v2 |
70a091d0 |
Merge PR #88 w02-spmb-handoff-active (worktree) |
BE gcgscola |
2a1cfc1 |
Merge PR #80 w02-spmb-handoff-followup (worktree) |
Kontrak bounded V1 (current tip)
| Syarat |
Status engineering |
Koreksi pasca-enrollment = arsip record siswa terkait admission, bukan mutasi w03_state |
Ya — admission_archive_student_record |
| Endpoint admission-scoped |
POST /api/SPMB/admissions/<id>/archive-student-record |
| Alasan wajib |
reason_required jika kosong |
| Idempotency |
Via store W03 idempotency + key di payload/header |
| Audit immutable |
Model scola.admission.post_enrollment.audit (before/after, actor, acting role, reason, key) |
w03_state=enrolled tetap terminal |
Ya — state tidak diubah; kuota W03 tidak disentuh path ini |
| FE SPMB memakai API khusus |
archiveEnrolledStudentRecord di spmbAdminAdmissions.service.js / AdmissionDetail.vue |
| Generic W02 student active |
setAdminStudentsActive tetap untuk Student Database; bukan kontrak aksi SPMB |
RT-W03-REC-01
| Klaim |
Status |
Full recovery / full reversal enrolled |
Tidak ditutup — tetap deferred / historical matrix boleh tetap BLOCKED |
| Partial bounded closure |
Ya (engineering) — archive linked op.student (active=false) dengan reason + idempotency + audit, tanpa mengubah histori W03 |
Jangan menyamakan W02.1 dengan “REC-01 CLOSED” payung.
Bukti source (bukan auditor rewrite)
- BE:
scola_admission/controllers/spmb_registers_api.py (admission_archive_student_record)
- BE unit:
tests/test_spmb_dashboard_api_unit.py (test_admission_archive_student_record_requires_reason_and_enrolled_state)
- FE:
src/services/spmb/spmbAdminAdmissions.service.js (archiveEnrolledStudentRecord)
- FE CTA:
src/access/admissionsOps.js (archive_student_record), AdmissionDetail.vue
- E2E smoke:
tests/e2e/smoke/spmb_smoke.spec.ts [SM-SPMB-004]
Non-claim
- Tidak mengklaim T6B bridge installed di live DB (lihat residual T6B-V1 / fase aktivasi terpisah).
- Tidak mengklaim demo/production / independent W02 re-cert.
- Verdict di
docs/release-readiness/audit/ tidak diubah oleh dokumen ini.