← Heatmap / GLM 5.3 Flash · Task 7
GLM 5.3 Flash · Single-turn · Task 7 (Calculation, wage cap binds)
Mean 100.0%
| Field | Expected | Rollout #1 (100%) | Rollout #2 (100%) | Rollout #3 (100%) |
|---|---|---|---|---|
| decision | calculate | calculate | calculate | calculate |
| currency | LCR | LCR | LCR | LCR |
| gross pay | 8370.45 | 8370.45 | 8370.45 | 8370.45 |
| employee contribution | 200.00 | 200.00 | 200.00 | 200.00 |
| allowed deduction | 370.62 | 370.62 | 370.62 | 370.62 |
| taxable pay | 7799.83 | 7799.83 | 7799.83 | 7799.83 |
| income tax | 1267.96 | 1267.96 | 1267.96 | 1267.96 |
| net pay | 6531.87 | 6531.87 | 6531.87 | 6531.87 |
| clauses | R1 R2 R3 R4 R5 R6 | R1 R2 R3 R4 R5 R6 | R1 R2 R3 R4 R5 R6 | R1 R2 R3 R4 R5 R6 |
Prompt
Process this monthly payroll record under the supplied rulebook. Return the R6 or R7 JSON answer.
Source documents: {"9869ba945ef7380b-payroll": {"kind": "payroll", "record": {"gross_pay": "8370.45", "payroll_month": "2026-05", "allowed_deduction": "370.62"}}}
Authoritative case reference schedule: {"first-half": {"rate": "0.04", "cap": "5000.00", "deduction": "400.00", "free": "1000.00", "upper": "3600.00", "middle_rate": "0.10", "upper_rate": "0.24"}, "second-half": {"rate": "0.04", "cap": "4000.00", "deduction": "400.00", "free": "1000.00", "upper": "3600.00", "middle_rate": "0.12", "upper_rate": "0.22"}}
Rollouts
Rollout #1 100.0% passed · 7.1s · $0.0007
| Component | Score | Clauses |
|---|---|---|
| decision | 100.0% | R1 R2 R3 R4 R5 R6 |
| exact | 100.0% | R1 R2 R3 R4 R5 R6 |
| field accuracy | 100.0% | R1 R2 R3 R4 R5 R6 |
| citations | 100.0% | R1 R2 R3 R4 R5 R6 |
Assistant
{
"decision": "calculate",
"currency": "LCR",
"gross_pay": "8370.45",
"employee_contribution": "200.00",
"allowed_deduction": "370.62",
"taxable_pay": "7799.83",
"income_tax": "1267.96",
"net_pay": "6531.87",
"clauses": ["R1", "R2", "R3", "R4", "R5", "R6"],
"explanation": "Payroll month 2026-05 selects the first-half row of the authoritative case schedule. Contribution: 0.04 \u00d7 min(8370.45, 5000.00) = 200.00. Deduction 370.62 is within the 400.00 cap and within gross pay minus contribution. Taxable pay: 8370.45 \u2212 200.00 \u2212 370.62 = 7799.83. Tax: first 1000.00 untaxed; (3600.00 \u2212 1000.00) \u00d7 0.10 = 260.00; (7799.83 \u2212 3600.00) \u00d7 0.24 = 1007.9592; total 1267.9592 \u2192 1267.96. Net pay: 8370.45 \u2212 200.00 \u2212 370.62 \u2212 1267.96 = 6531.87."
}
Reasoning
Let me work through this payroll calculation. Input: - gross_pay: 8370.45 - payroll_month: 2026-05 - allowed_deduction: 370.62 Case reference schedule (authoritative, replaces defaults): - first-half (2026-01 through 2026-06): rate 0.04, cap 5000.00, deduction 400.00, free 1000.00, upper 3600.00, middle_rate 0.10, upper_rate 0.24 - second-half: rate 0.04, cap 4000.00, deduction 400.00, free 1000.00, upper 3600.00, middle_rate 0.12, upper_rate 0.22 Payroll month 2026-05 → first-half row. Step 1: Employee contribution (R3): rate 0.04 × min(8370.45, 5000.00) = 0.04 × 5000.00 = 200.00. Rounded: 200.00. Step 2: Allowed deduction (R4): 370.62. Check cap: 400.00 — OK. Check gross pay minus contribution: 8370.45 − 200.00 = 8170.45 — 370.62 ≤ 8170.45 — OK. Step 3: Taxable pay: 8370.45 − 200.00 − 370.62 = 7799.83. Step 4: Income tax (R5), marginal: - Tax-free: 1000.00 → 0 tax. - Middle bracket: from 1000.00 to 3600.00 → 2600.00 × 0.10 = 260.00. - Upper bracket: above 3600.00 → 7799.83 − 3600.00 = 4199.83 × 0.24 = 1007.9592. - Total tax = 260.00 + 1007.9592 = 1267.9592 → round half-up to 1267.96. Step 5: Net pay (R6): 8370.45 − 200.00 − 370.62 − 1267.96 = 6531.87. Let me verify: 8370.45 − 200.00 = 8170.45. 8170.45 − 370.62 = 7799.83. 7799.83 − 1267.96 = 6531.87. Check upper bracket calculation: 4199.83 × 0.24 = 1007.9592. Yes. 0.24 × 4199.83 = 1007.9592. Total 1267.9592 → 1267.96. Net pay: 6531.87. Fields: - decision: "calculate" - currency: "LCR" - gross_pay: "8370.45" - employee_contribution: "200.00" - allowed_deduction: "370.62" - taxable_pay: "7799.83" - income_tax: "1267.96" - net_pay: "6531.87" - clauses: R1 (row selection, schedule), R2 (rounding), R3 (contribution), R4 (deduction/taxable), R5 (tax), R6 (net pay/answer). The schedule is authoritative per R1, so cite R1. No amendment needed. Output JSON only, no markdown fences.
Rollout #2 100.0% passed · 13.9s · $0.0005
| Component | Score | Clauses |
|---|---|---|
| decision | 100.0% | R1 R2 R3 R4 R5 R6 |
| exact | 100.0% | R1 R2 R3 R4 R5 R6 |
| field accuracy | 100.0% | R1 R2 R3 R4 R5 R6 |
| citations | 100.0% | R1 R2 R3 R4 R5 R6 |
Assistant
{
"decision": "calculate",
"currency": "LCR",
"gross_pay": "8370.45",
"employee_contribution": "200.00",
"allowed_deduction": "370.62",
"taxable_pay": "7799.83",
"income_tax": "1267.96",
"net_pay": "6531.87",
"clauses": ["R1", "R2", "R3", "R4", "R5", "R6"],
"explanation": "Payroll month 2026-05 selects the first-half row of the authoritative case schedule (R1). Employee contribution = 0.04 \u00d7 min(8370.45, 5000.00) = 200.00 (R3). Allowed deduction 370.62 is within both the 400.00 cap and gross pay minus contribution (8170.45), so it stands (R4). Taxable pay = 8370.45 \u2212 200.00 \u2212 370.62 = 7799.83 (R4). Income tax: first 1000.00 untaxed, 2600.00 \u00d7 0.10 = 260.00, (7799.83 \u2212 3600.00) \u00d7 0.24 = 1007.9592; total 1267.9592 rounded to 1267.96 (R2, R5). Net pay = 8370.45 \u2212 200.00 \u2212 370.62 \u2212 1267.96 = 6531.87 (R6)."
}
Reasoning
Let me process this payroll record. Input: - gross_pay: 8370.45 - payroll_month: 2026-05 - allowed_deduction: 370.62 Payroll month 2026-05 is in first-half (2026-01 through 2026-06). There's an authoritative case reference schedule provided, so I use its first-half row: - rate: 0.04 - cap: 5000.00 - deduction cap: 400.00 - tax-free: 1000.00 - upper bracket begins: 3600.00 - middle rate: 0.10 - upper rate: 0.24 Step 1: Employee contribution (R3): contribution = rate × min(gross_pay, cap) = 0.04 × min(8370.45, 5000.00) = 0.04 × 5000.00 = 200.00 Rounded: 200.00 Step 2: Allowed deduction check (R4): allowed_deduction = 370.62 - Must not exceed deduction cap: 400.00. 370.62 ≤ 400.00 ✓ - Must not exceed gross pay minus rounded employee contribution: 8370.45 − 200.00 = 8170.45. 370.62 ≤ 8170.45 ✓ So allowed_deduction = 370.62. Step 3: Taxable pay (R4): taxable_pay = gross_pay − employee_contribution − allowed_deduction = 8370.45 − 200.00 − 370.62 = 7799.83 Step 4: Income tax (R5): - Tax-free amount: 1000.00 - Upper bracket begins: 3600.00 - Middle rate: 0.10 - Upper rate: 0.24 Portion up to 1000.00: untaxed. Portion from 1000.00 to 3600.00: (3600.00 − 1000.00) × 0.10 = 2600.00 × 0.10 = 260.00 Portion above 3600.00: (7799.83 − 3600.00) × 0.24 = 4199.83 × 0.24 = 1007.9592 Total tax = 260.00 + 1007.9592 = 1267.9592 Round half-up to two decimals: 1267.96 Step 5: Net pay (R6): net_pay = gross_pay − employee_contribution − allowed_deduction − income_tax = 8370.45 − 200.00 − 370.62 − 1267.96 = 8370.45 − 200.00 = 8170.45 8170.45 − 370.62 = 7799.83 7799.83 − 1267.96 = 6531.87 Let me double check: 7799.83 − 1267.96 = 6531.87. Yes. Fields: - decision: "calculate" - currency: "LCR" - gross_pay: "8370.45" - employee_contribution: "200.00" - allowed_deduction: "370.62" - taxable_pay: "7799.83" - income_tax: "1267.96" - net_pay: "6531.87" - clauses: R1 (selecting row / schedule), R2 (rounding), R3 (contribution), R4 (deduction and taxable pay), R5 (income tax), R6 (net pay). No amendment needed, no contract conflict (no contract_gross_pay present). Citations: R1, R2, R3, R4, R5, R6. Output as JSON without markdown fences.
Rollout #3 100.0% passed · 8.2s · $0.0006
| Component | Score | Clauses |
|---|---|---|
| decision | 100.0% | R1 R2 R3 R4 R5 R6 |
| exact | 100.0% | R1 R2 R3 R4 R5 R6 |
| field accuracy | 100.0% | R1 R2 R3 R4 R5 R6 |
| citations | 100.0% | R1 R2 R3 R4 R5 R6 |
Assistant
{
"decision": "calculate",
"currency": "LCR",
"gross_pay": "8370.45",
"employee_contribution": "200.00",
"allowed_deduction": "370.62",
"taxable_pay": "7799.83",
"income_tax": "1267.96",
"net_pay": "6531.87",
"clauses": ["R1", "R2", "R3", "R4", "R5", "R6"],
"explanation": "Payroll month 2026-05 selects the case schedule's first-half row (rate 0.04, cap 5000.00, deduction cap 400.00, free 1000.00, upper 3600.00, middle 0.10, upper rate 0.24). Contribution: 0.04 \u00d7 min(8370.45, 5000.00) = 200.00. Deduction 370.62 is within the 400.00 cap and within gross pay minus contribution. Taxable pay: 8370.45 \u2212 200.00 \u2212 370.62 = 7799.83. Tax: first 1000.00 untaxed; (3600.00 \u2212 1000.00) \u00d7 0.10 = 260.00; (7799.83 \u2212 3600.00) \u00d7 0.24 = 1007.9592; total 1267.9592 rounds to 1267.96. Net pay: 8370.45 \u2212 200.00 \u2212 370.62 \u2212 1267.96 = 6531.87."
}
Reasoning
Let me work through this payroll calculation. Input: - gross_pay: 8370.45 - payroll_month: 2026-05 - allowed_deduction: 370.62 Payroll month 2026-05 is in first-half (2026-01 through 2026-06), so use the case schedule's first-half row: - rate: 0.04 - cap: 5000.00 - deduction cap: 400.00 - free: 1000.00 - upper: 3600.00 - middle_rate: 0.10 - upper_rate: 0.24 Step 1: Employee contribution (R3) Contribution = rate × min(gross_pay, cap) = 0.04 × min(8370.45, 5000.00) = 0.04 × 5000.00 = 200.00 Step 2: Allowed deduction check (R4) allowed_deduction = 370.62 - Must not exceed deduction cap (400.00): 370.62 ≤ 400.00 ✓ - Must not exceed gross pay minus rounded contribution: 8370.45 − 200.00 = 8170.45. 370.62 ≤ 8170.45 ✓ Step 3: Taxable pay (R4) taxable_pay = gross_pay − contribution − allowed_deduction = 8370.45 − 200.00 − 370.62 = 7799.83 Step 4: Income tax (R5) - Tax-free amount: 1000.00 - Upper bracket begins: 3600.00 - Middle rate: 0.10 - Upper rate: 0.24 Portion 1: 0 to 1000.00 → 1000.00 untaxed, tax = 0 Portion 2: 1000.00 to 3600.00 → 2600.00 × 0.10 = 260.00 Portion 3: above 3600.00 → 7799.83 − 3600.00 = 4199.83 × 0.24 = 1007.9592 Total tax = 260.00 + 1007.9592 = 1267.9592 → round half-up to 1267.96 Step 5: Net pay (R6) net_pay = gross_pay − contribution − allowed_deduction − tax = 8370.45 − 200.00 − 370.62 − 1267.96 = 8370.45 − 200.00 = 8170.45 8170.45 − 370.62 = 7799.83 7799.83 − 1267.96 = 6531.87 Check: 7799.83 − 1267.96 = 6531.87. Yes. Fields: - decision: "calculate" - currency: "LCR" - gross_pay: "8370.45" - employee_contribution: "200.00" - allowed_deduction: "370.62" - taxable_pay: "7799.83" - income_tax: "1267.96" - net_pay: "6531.87" - clauses: R1, R2, R3, R4, R5, R6 The case schedule exists, so I use its values (R1 says schedule replaces defaults). No amendment needed, no conflict. Let me double-check the tax calculation: 7799.83 − 1000 = 6799.83 above free Of that, up to 3600: 3600 − 1000 = 2600 at 0.10 = 260.00 Above 3600: 7799.83 − 3600 = 4199.83 at 0.24 = 1007.9592 Total: 1267.9592 → 1267.96 (round half up, but 0.0092 rounds down... 1267.9592 → third decimal is 9, so 1267.96). Correct. Net pay: 6531.87. Output JSON without markdown fences.