Lewati ke isi

Plan: Post-SCORE Program — W16 / Profile / Async Import

Status: CLOSED (2026-08-29) — T4-POST-SCORE-closure-decision.md
Mode: Server /home/scola/odoo
Baseline: SC-CORE closed — FE app 1d7a9038 · BE runtime 6033c21 · E1.2 validator PASS
Program scope: Tiga jalur paralel setelah gelombang SC-CORE; UAT PROMOTE_UAT tetap di luar semua jalur

Docs read: T4-SCORE-closure-decision.md, 07-release-test-matrix.md §5.3 / §10.2, 06-golden-tenant-spec.md §12.1, 10-implementation-roadmap.md §8 T5-U02, T4-W00-W01-W02-core-track-charter.md, T4-DEC-W01-W02-bounded-freezes.md


1. Goal

Menutup residual scope yang explicitly deferred dari SC-CORE closure tanpa memperluas denominator gelombang lalu:

Jalur Matrix target Exit definition
W16 §5.3 — 11 row CORE-W16 11/11 PASS (or documented bounded NOT RUN with sign-off)
Profile §10.2 — RT-PROFILE-JENJANG-01, RT-PROFILE-TIMEZONE-01 PASS untuk signed GT-PROFILE-* IDs only
Async import §5.2 — RT-W02-IDM-01, RT-W02-REC-01 IDM+REC PASS; W02 harness extended

Explicit non-claim (semua jalur): PROMOTE_UAT, tenant UAT isolation fix, production promotion, demo refresh opsional saja.


2. Baseline & gap analysis

2.1 SC-CORE closure residual

Item SC-CORE status Post-SCORE jalur
W16 §5.3 (11 rows) 6 NOT RUN, 5 BLOCKED Track W16
RT-PROFILE-JENJANG-01 / RT-PROFILE-TIMEZONE-01 DEFER (DEC-013 unsigned) Track Profile
RT-W02-IDM-01 / RT-W02-REC-01 NOT RUN (DEC-008) Track Async import
PROMOTE_UAT DEFER → W16 wave Out of scope ketiga jalur

2.2 W16 — mengapa masih BLOCKED

Row Status Blocker
RT-W16-NEG-01 BLOCKED Capability/approval matrix — DEC-003/004
RT-W16-STA-01 BLOCKED Approval/reversal policy — DEC-007
RT-W16-REC-01 BLOCKED Notification/recovery contract — DEC-010
RT-W16-XRP-01 BLOCKED Notification behavior — DEC-010
RT-W16-XMD-01, RT-W16-UIA-01 BLOCKED Legacy migration + UI — DEC-011/STAB-033
POS/SCP/TEN/VAL/IDM NOT RUN Harness + engineering belum dijalankan

Contract: scola.news sole writable source; legacy announcement read-only/migrated (EV-W16, STAB-033, IA-010).

2.3 Profile — mengapa masih BLOCKED

Control Status Gap
RT-PROFILE-JENJANG-01 BLOCKED DEC-013 unsigned; STAB-044 bounded negatif sudah cukup Core V1
RT-PROFILE-TIMEZONE-01 BLOCKED Butuh signed profile set + fixture WIB/WITA/WIT

Baseline seed: hanya GT-PROFILE-NON-EARLY-WIB ter-seed; GT-PROFILE-EARLY-WIB, GT-PROFILE-NON-EARLY-WITA, GT-PROFILE-NON-EARLY-WIT = decision fixtures (06 §12.1).

2.4 Async import — mengapa NOT RUN

Row SC-CORE claim Gap
RT-W02-IDM-01 Manual sync 1-row only Async job idempotency contract unsigned (DEC-008 subset)
RT-W02-REC-01 ROW_ATOMIC mixed-row only Fault injection / resume / reversal unsigned

Code surface sudah ada: scola.student.import.job (idempotency_key + company unique), admin_import_api.py enqueue/poll.


3. Program architecture — tiga jalur paralel

flowchart TB
  subgraph phaseA [FaseA_SC_CORE_Closed]
    SCORE[SC_CORE_PASS_bounded]
    E12[E1.2_29_29_validator_PASS]
  end
  subgraph tracks [PostSCORE_Parallel]
    W16[Track_W16_News]
    Profile[Track_PROFILE_DEC013]
    Async[Track_W02_Async_DEC008]
  end
  phaseA --> tracks
  W16 -.->|explicit_out| UAT[UAT_Promotion_W16_plus]
  Profile --> GoldenFixtures[GT_PROFILE_fixtures]
  Async --> ImportJob[student_import_job_harness]
  W16 --> W16Harness[w16_runtime_certify.py]
  Profile --> ProfileHarness[profile_matrix_certify]
  Async --> W02Harness[w02_async_import_certify]

SHA rule: Satu track = satu rebind bundle; 3 bundle evidence terpisah — jangan gabungkan ketiga jalur jadi satu SHA claim.


4. Rekomendasi urutan / paralelisme

Jalur Mulai setelah Paralel dengan Gate Product dulu?
W16 SC-CORE closed (+ optional Fase A push green) Profile + Async (code-independent per roadmap §8) Ya — DEC-003/004/007/010/011
Profile Workshop DEC-013 W16 + Async Wajib — signed profile matrix
Async import DEC-008 import subset signed W16 + Profile Wajib — import job contract

Rekomendasi operasional:

  1. Phase 0 decision ketiga jalur paralel (workshop 1–2 hari): W16-1 + PROF-0 + ASYNC-0.
  2. Engineering W16 + Profile seed paralel setelah freeze masing-masing.
  3. Async start harness setelah kontrak DEC-008 import ditandatangani (bergantung BE job semantics).

5. Jalur 1 — W16 Canonical News

Track ID: POST-SCORE-W16
Objective: T5-U02 — scola.news sole writable source; legacy announcement read-only/migrated (STAB-033).

Phase Deliverable Doc
W16-0 Charter T4-W16-core-track-charter.md
W16-1 Bounded product freezes T4-DEC-W16-bounded-freezes.md
W16-2 Code — FE canonical routes/menu (IA-010); BE lifecycle, legacy guard, audience/outbox idempotency Engineering
W16-3 Harness — scripts/golden/w16_runtime_certify.py (mirror w01_runtime_certify.py) BE
W16-4 Rebind Golden :8090; update §5.3 + V1-W16-rebind-*.json; QC + E1.2 regression smoke Evidence bundle

Denominator: 11 row §5.3 — saat ini 6 NOT RUN, 5 BLOCKED.

Exit gate: 11/11 §5.3 PASS bound to exact FE/BE SHA · bundle V1-W16-rebind-<stamp>.json.


6. Jalur 2 — Profile Jenjang / Timezone (DEC-013)

Track ID: POST-SCORE-PROFILE-DEC013
Objective: Positive certification §10.2 — RT-PROFILE-JENJANG-01, RT-PROFILE-TIMEZONE-01.

Phase Deliverable Doc
PROF-0 Workshop charter + signed DEC-013 matrix T4-PROFILE-DEC013-track-charter.md
PROF-1 Seed Golden overlays: GT-PROFILE-EARLY-WIB, GT-PROFILE-NON-EARLY-WITA, GT-PROFILE-NON-EARLY-WIT Golden seed
PROF-2 Parameterize W00 nav crawl; W01/W05 fixed-clock boundary (STAB-022); extend vitest jenjang FE/BE tests
PROF-3 profile_matrix_certify.py or extend E1.2 property set Harness
PROF-4 Update §10.2 rows BLOCKED → PASS bounded; manifest lists exact GT-PROFILE-* IDs Evidence bundle

Rekomendasi: Jangan gabung ke denominator W16 — cross-cutting, Product-led. Bisa unblock W06/W20 nanti tapi bukan gate W16.

Exit gate: §10.2 RT-PROFILE-* PASS for signed profile IDs only · no “all schools” claim.


7. Jalur 3 — W02 Async Import IDM/REC (DEC-008 subset)

Track ID: POST-SCORE-W02-ASYNC
Objective: Tutup RT-W02-IDM-01, RT-W02-REC-01 (§5.2).

Phase Deliverable Doc
ASYNC-0 Import-job bounded freeze (subset DEC-008) T4-DEC-W02-async-import-freeze.md
ASYNC-1 BE hardening — job state machine, cron recovery, fault injection hooks; sudo/route budget BE
ASYNC-2 Extend w02_runtime_certify.py or w02_async_import_certify.py — IDM duplicate key, REC partial failure/resume Harness
ASYNC-3 FE UploadSiswa.vue progress/retry/error download (STAB-023) FE
ASYNC-4 W02 §5.2 IDM/REC NOT RUN → PASS; update bundle; W05 regression 16/16 guard Evidence bundle

Scope boundary: Import job saja — bukan seluruh master-data DEC-008 (MD-01–MD-03).

Exit gate: §5.2 IDM+REC PASS · W02 harness extended · W05 regression 16/16 guard.


8. Exit gates program (keseluruhan)

Jalur PASS definition UAT
W16 11/11 §5.3 PASS (or documented bounded NOT RUN with sign-off) Out
Profile §10.2 RT-PROFILE-* PASS for signed profile IDs only Out
Async §5.2 IDM+REC PASS; W02 harness extended Out

UAT promotion tetap gelombang terpisah W16+ (engineering isolation + PROMOTE_UAT workflow) — bukan bagian exit gate ketiga jalur di atas.


9. Phase order (mandatory per track)

Program Phase 0 — Decision freezes (parallel workshops)
  W16-0/1  +  PROF-0  +  ASYNC-0

Program Phase 1 — Engineering (parallel where independent)
  W16-2/3  +  PROF-1/2  +  (Async waits ASYNC-0 sign-off)

Program Phase 2 — Harness + rebind (per track)
  W16-4  |  PROF-3/4  |  ASYNC-1/2/3/4

Program Phase 3 — Optional demo candidate refresh (NO UAT)

10. Risks & mitigations

Risk Mitigation
Scope creep menggabungkan 3 jalur jadi satu SHA Satu track = satu rebind bundle; 3 bundle evidence terpisah
W16 BLOCKED tanpa DEC freeze Phase W16-1 wajib sebelum coding harness
Profile klaim over-broad Manifest lists exact GT-PROFILE-*; no “all schools” claim
Async import tanpa DEC-008 subset ASYNC-0 sign-off before harness
UAT promoted prematurely Explicit exclusion in semua charter; gelombang W16+ terpisah

11. Estimated effort

Jalur Effort Critical path
W16 2–3 minggu DEC freeze + STAB-033 migration
Profile 2–4 minggu Product workshop + fixture seed
Async import 1.5–2.5 minggu DEC-008 import contract + harness

Jalur bisa overlap setelah Phase 0 decisions.


12. Charter index

Track Charter Bounded freezes
W16 T4-W16-core-track-charter.md T4-DEC-W16-bounded-freezes.md
Profile T4-PROFILE-DEC013-track-charter.md DEC-013 matrix (PROF-0 workshop output)
Async import — (subset of W02) T4-DEC-W02-async-import-freeze.md

13. References

Artifact Path
SC-CORE closure T4-SCORE-closure-decision.md
SC-CORE charter (predecessor) T4-W00-W01-W02-core-track-charter.md
Runtime matrix SSOT 07-release-test-matrix.md §5.3, §10.2
Golden profile candidates 06-golden-tenant-spec.md §12.1
W16 roadmap unit 10-implementation-roadmap.md §8 T5-U02
STAB-033 legacy/canonical 08-stabilization-backlog.md
W02 import job model custom_addons_scola/gcgscola/scola_core/models/student_import_job.py