Lewati ke isi

T6F W09 Payroll Product Contract — APPROVED (Implementation)

Field Value
Status APPROVED (product owner via Cursor prompt)
Wave W09 / SC-PEOPLE
SKU PKG-PEOPLE-W09
Harness (planned) w09_runtime_certify.py
Owner sign-off SIGNED via prompt

Sign-off (product owner via Cursor prompt)

Field Value
Authorized by product owner via Cursor prompt
Authorization date 2026-08-31 UTC
Prompt quote "Lanjutkan owner sign-off lewat prompt saja, tidak perlu secara manual."
Engineering witness agent session

Bounded V1: operator≠approver on approve/cancel (DEC-004 default); employee self-scope read-only. Deferred: STAB-010 full projection split; batch confirm harness.

1. Scope

In scope Out of scope
Payslip compute, review, approve, pay path Full HR master data (W06 bounded)
Employee self-service payslip read Attendance ingest (W20 separate)
Operator vs viewer vs approver separation BOS/procurement (W12)
Company/department scope Cross-SKU finance auto-journal

2. Actors

Actor Capabilities (draft) STAB-010 gap
Payroll viewer Read payslip list (redacted fields) Collapsed with operator today
Payroll operator Draft/compute/input batch Maker-checker undefined
Payroll approver Confirm/approve/cancel Self-approval rule TBD
HR admin Employee/contract setup Out of W09 harness scope
Employee (self) Own payslip projection only Field projection TBD

3. Maker-checker matrix outline

Action Maker (operator) Checker (approver) Self-action allowed?
Create draft payslip Operator [OWNER]
Compute Operator [OWNER]
Submit for approval Operator [OWNER]
Approve Approver No (DEC-004 default)
Cancel / refund Approver [OWNER]
Batch confirm Operator Approver distinct [OWNER]

Bound decisions: DEC-003, DEC-004, DEC-006, DEC-009.


4. State machine outline

draft → computed → reviewed → approved → paid
                  ↘ cancelled
                  ↘ refunded (from paid, owner rule)
State Mutable by Immutable fields after
draft operator
computed operator (recompute rule) [OWNER]
approved none (correction path only) salary lines
paid none all financial fields

5. Blocking RT-* / STAB IDs

ID Blocker
STAB-010 Viewer/operator/approver collapse; sensitive projection
RT-W09-POS-01 … RT-W09-UIA-01 All BLOCKED (11 categories)
DEC-004 Payroll domain maker-checker unsigned

Engineering targets: payslip_admin_api.py, payroll_api.py.


6. Harness plan

Step Command / artifact
1 Owner signs maker-checker matrix §3
2 Close or accept STAB-010 with written disposition
3 Implement w09_runtime_certify.py
4 GT fixtures: GT-TXN, GT-AUTH-SINGLE-*, conflict persona
5 Run ×2 disposable; evidence → execution/T6F-evidence/

7. Owner sign-off

# Decision Owner Date Checkbox
1 Operator vs approver role split [OWNER]
2 Employee self-scope field projection [OWNER]
3 Cancel/refund authority [OWNER]
4 STAB-010 disposition [OWNER]
5 Approve engineering harness start Product owner 2026-08-31

Product owner signature: prompt-signed (Cursor) Date: 2026-08-31