DEC-013 — Bounded Profile Matrix (Jenjang / Timezone V1)¶
Mode: Server /home/scola/odoo
Approval: APPROVED_BY_REQUESTING_USER_CONVERSATION (2026-08-29)
Scope: Minimum product decisions to unblock §10.2 RT-PROFILE-* rows without full cartesian jenjang × timezone
Format: Same bounded-decision pattern as T4-DEC-W16-bounded-freezes.md
Retained V1 profile set (bounded)¶
| Profile ID | Deterministic fixture | IANA timezone | V1 status |
|---|---|---|---|
GT-PROFILE-NON-EARLY-WIB |
Existing GT-T1 (smp) + GT-T1-U2 (sd) topology |
Asia/Jakarta |
Seeded — baseline positive class |
GT-PROFILE-EARLY-WIB |
Product-selected early-years unit (tk, see rationale) |
Asia/Jakarta |
Seed PROF-1 — overlay gt.profile.early_wib |
GT-PROFILE-NON-EARLY-WITA |
Non-early unit (smp) |
Asia/Makassar |
Seed PROF-1 — overlay gt.profile.wita |
GT-PROFILE-NON-EARLY-WIT |
Non-early unit (smp) |
Asia/Jayapura |
Retained, fixture deferred — independent fixed-clock run required (STAB-022); PROF-3 |
Explicitly excluded from V1 claim: GT-PROFILE-MATRIX-DECISION (full cartesian jenjang × timezone) unless Product reopens partition.
RT-PROFILE-JENJANG-01 — Certified jenjang set and menu branches¶
Blockers resolved: DEC-013 (retained codes + equivalence partition)
| Aspect | V1 bounded decision |
|---|---|
| Early-years fixture | tk only for GT-PROFILE-EARLY-WIB (single early-years equivalence class) |
| Early-years rationale | paud ≡ tk for menu/route purposes (EARLY_YEARS_JENJANG_CODES in schoolJenjang.js); vitest anchor uses TK (teacherAttendanceReportScope.spec.js); reduces seed cost with explicit code-backed partition |
| Non-early equivalence | sd, smp, sma, smk, slb, pkbm → GT-PROFILE-NON-EARLY-WIB class per 06 §12.1 — same nonEarly branch in resolveRecognizedJenjangProfile |
| Negative matrix | Empty, missing, malformed, unknown, unsupported, expired/unassigned, cross-company → fail closed (STAB-044 contract); vitest 9/9 + harness negative probes |
| Harness proof | profile_matrix_certify.py — PROFILE-JENJANG-* on Golden :8090; W00 nav parameterization deferred PROF-3 |
RT-PROFILE-TIMEZONE-01 — Certified timezone set and local-day behavior¶
Blockers resolved: DEC-013 (retained IANA set); STAB-022 fixed-clock cases deferred PROF-3
| Aspect | V1 bounded decision |
|---|---|
| Retained zones | Asia/Jakarta (WIB), Asia/Makassar (WITA), Asia/Jayapura (WIT) |
| No cross-zone equivalence | Each zone requires independent run — WIB run cannot certify WITA/WIT |
| WIB baseline | Existing GT-T1/GT-T2 (Asia/Jakarta) |
| WITA baseline | GT-PROFILE-NON-EARLY-WITA overlay (PROF-1) |
| WIT fixture | Retained in manifest; seed + STAB-022 boundary run PROF-3 |
| Date-sensitive workflows | W01/W05/W06/W20 fixed-clock straddle local midnight — NOT RUN at PROF-2 baseline |
| Harness proof | profile_matrix_certify.py — auth school_timezone positive/negative probes; full workflow clock matrix deferred |
Equivalence partition summary¶
Early-years: paud ≡ tk → GT-PROFILE-EARLY-WIB (fixture code: tk)
Non-early: sd | smp | sma | smk | slb | pkbm → GT-PROFILE-NON-EARLY-WIB
Timezone: WIB ≠ WITA ≠ WIT (no inheritance)
Adding a profile after freeze invalidates W00 navigation plus every date-sensitive workflow certificate until re-run on the same build (06 §12.1).
Explicit NOT RUN (non-claim at PROF-2)¶
| Item | Status | Reason |
|---|---|---|
GT-PROFILE-NON-EARLY-WIT fixture + STAB-022 |
NOT RUN | PROF-3 seed + fixed-clock boundary |
| W00 nav crawl per jenjang | NOT RUN | PROF-3 parameterization |
| W01/W05/W06/W20 timezone boundaries | NOT RUN | PROF-3 STAB-022 |
| Full cartesian jenjang × timezone | Out of V1 | Equivalence partition signed above |
UAT PROMOTE_UAT |
Out of Profile track | W16+ gelombang |
| Production promotion | Not authorized | Immutable CERTIFIED manifest |
Certification denominator summary (PROF-2 baseline target)¶
| Workstream | Harness | Target (PROF-2) | Matrix rows |
|---|---|---|---|
| Profile jenjang | profile_matrix_certify.py |
Baseline positive + negative probes | §10.2 RT-PROFILE-JENJANG-01 |
| Profile timezone | profile_matrix_certify.py |
WIB/WITA auth probes; WIT NOT RUN | §10.2 RT-PROFILE-TIMEZONE-01 |
| STAB-044 regression | vitest teacherAttendanceReportScope.spec.js |
9/9 (unchanged) | No Core regression |
Sign-off record¶
| Date | Approver | Decision | Scope |
|---|---|---|---|
| 2026-08-29 | Requesting user (Post-SCORE Build/Lanjutkan) | APPROVED — retained GT-PROFILE-* set, tk for early-years, non-early equivalence partition, and timezone non-inheritance as written |
PROF-1 seed + PROF-2 harness unblocked; does not authorize production promotion, UAT wave, or W16 denominator rebind |
Product bounded options signed 2026-08-29 via conversational approval in Post-SCORE program execution (APPROVED_BY_REQUESTING_USER_CONVERSATION).