Lewati ke isi

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 tipbukan 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.