← Heatmap / GLM 5.3 Flash · Task 18
GLM 5.3 Flash · Single-turn · Task 18 (Calculation, at the upper bracket line)
Mean 50.0%
| Field | Expected | Rollout #1 (100%) | Rollout #2 (100%) | Rollout #3 (-50%) |
|---|---|---|---|---|
| decision | calculate | calculate | calculate | (malformed) |
| currency | LCR | LCR | LCR | (malformed) |
| gross pay | 2978.74 | 2978.74 | 2978.74 | (malformed) |
| employee contribution | 178.72 | 178.72 | 178.72 | (malformed) |
| allowed deduction | 0.00 | 0.00 | 0.00 | (malformed) |
| taxable pay | 2800.02 | 2800.02 | 2800.02 | (malformed) |
| income tax | 224.00 | 224.00 | 224.00 | (malformed) |
| net pay | 2576.02 | 2576.02 | 2576.02 | (malformed) |
| clauses | R1 R2 R3 R4 R5 R6 | R1 R2 R3 R4 R5 R6 | R1 R2 R3 R4 R5 R6 | (malformed) |
Prompt
Process this monthly payroll record under the supplied rulebook. Return the R6 or R7 JSON answer.
Source documents: {"60299c2a6df8880c-payroll": {"kind": "payroll", "record": {"gross_pay": "2978.74", "payroll_month": "2026-07", "allowed_deduction": "0.00"}}}
Authoritative case reference schedule: {"first-half": {"rate": "0.07", "cap": "4000.00", "deduction": "400.00", "free": "900.00", "upper": "3300.00", "middle_rate": "0.08", "upper_rate": "0.22"}, "second-half": {"rate": "0.06", "cap": "4500.00", "deduction": "400.00", "free": "1200.00", "upper": "2800.00", "middle_rate": "0.14", "upper_rate": "0.20"}}
Rollouts
Rollout #1 100.0% passed · 5.1s · $0.0009
| 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": "2978.74",
"employee_contribution": "178.72",
"allowed_deduction": "0.00",
"taxable_pay": "2800.02",
"income_tax": "224.00",
"net_pay": "2576.02",
"clauses": ["R1", "R2", "R3", "R4", "R5", "R6"],
"explanation": "Payroll month 2026-07 selects the second-half row of the authoritative case schedule (R1). Contribution = 0.06 \u00d7 min(2978.74, 4500.00) = 178.72 (R3). Allowed deduction 0.00 is within the 400.00 cap and available pay (R4). Taxable pay = 2978.74 \u2212 178.72 \u2212 0.00 = 2800.02 (R4). Tax: first 1200.00 untaxed, 1600.00 \u00d7 0.14 = 224.00, plus 0.02 \u00d7 0.20 = 0.004; total 224.004 rounds to 224.00 (R5, R2). Net pay = 2978.74 \u2212 178.72 \u2212 0.00 \u2212 224.00 = 2576.02 (R6)."
}
Reasoning
Let me process this payroll record. Input: - gross_pay: "2978.74" - payroll_month: "2026-07" - allowed_deduction: "0.00" Reference schedule (authoritative case schedule): - second-half (2026-07 through 2026-12): rate 0.06, cap 4500.00, deduction 400.00, free 1200.00, upper 2800.00, middle_rate 0.14, upper_rate 0.20 Payroll month 2026-07 → second-half row. Step 1: Employee contribution (R3): - min(gross_pay, cap) = min(2978.74, 4500.00) = 2978.74 - contribution = 0.06 × 2978.74 = 178.7244 → round half up to 178.72 Wait: 2978.74 × 0.06 = 178.7244. Round to two decimals: 178.72 (since third decimal is 4, round down). Yes, 178.72. Step 2: Allowed deduction check (R4): - allowed_deduction = 0.00, which is ≤ 400.00 cap and ≤ gross_pay − contribution = 2978.74 − 178.72 = 2800.02. OK. Step 3: Taxable pay (R4): - taxable = gross − contribution − deduction = 2978.74 − 178.72 − 0.00 = 2800.02 Step 4: Income tax (R5), second-half row: - tax-free amount: 1200.00 - upper bracket begins: 2800.00 - middle rate: 0.14 - upper rate: 0.20 Taxable pay = 2800.02 - Portion up to 1200.00: untaxed - Portion 1200.00 to 2800.00: 1600.00 × 0.14 = 224.00 - Portion above 2800.00: 2800.02 − 2800.00 = 0.02 × 0.20 = 0.004 Total tax = 224.00 + 0.004 = 224.004 → round half up to 224.00 Wait, 224.004 rounds to 224.00 (third decimal is 4, rounds down). Yes. Step 5: Net pay (R6): - net = 2978.74 − 178.72 − 0.00 − 224.00 = 2576.02 Check: 2978.74 − 178.72 = 2800.02. 2800.02 − 224.00 = 2576.02. Yes. Fields: - decision: "calculate" - currency: "LCR" - gross_pay: "2978.74" - employee_contribution: "178.72" - allowed_deduction: "0.00" - taxable_pay: "2800.02" - income_tax: "224.00" - net_pay: "2576.02" - clauses: R1, R2, R3, R4, R5, R6 Note: the case schedule replaces defaults — the schedule's second-half values differ from defaults (free 1200 vs 1100, upper 2800 vs 3300, middle 0.14 vs 0.12, upper_rate 0.20 vs 0.22). I used the schedule values correctly per R1. Citations: R1 (row selection, schedule authority), R2 (rounding), R3 (contribution), R4 (deduction and taxable), R5 (tax), R6 (net pay/answer format). No amendment present, no conflict.
Rollout #2 100.0% passed · 7.3s · $0.0008
| 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": "2978.74",
"employee_contribution": "178.72",
"allowed_deduction": "0.00",
"taxable_pay": "2800.02",
"income_tax": "224.00",
"net_pay": "2576.02",
"clauses": ["R1", "R2", "R3", "R4", "R5", "R6"],
"explanation": "Payroll month 2026-07 selects the second-half row of the authoritative case schedule (R1): rate 0.06, cap 4500.00, deduction cap 400.00, tax-free 1200.00, upper bracket begins 2800.00, middle 0.14, upper 0.20. Contribution: 0.06 \u00d7 min(2978.74, 4500.00) = 178.7244 \u2192 178.72 (R3, R2). Allowed deduction 0.00 is within the cap and available pay (R4). Taxable pay: 2978.74 \u2212 178.72 \u2212 0.00 = 2800.02 (R4). Tax: first 1200.00 untaxed; 1600.00 \u00d7 0.14 = 224.00; 0.02 \u00d7 0.20 = 0.004; unrounded sum 224.004 \u2192 224.00 (R5, R2). Net pay: 2978.74 \u2212 178.72 \u2212 0.00 \u2212 224.00 = 2576.02 (R6)."
}
Reasoning
Let me work through this payroll calculation.
Input:
- gross_pay: 2978.74
- payroll_month: 2026-07
- allowed_deduction: 0.00
The authoritative case reference schedule is supplied, so per R1, its values replace defaults. Payroll month 2026-07 falls in second-half (2026-07 through 2026-12).
Second-half row:
- rate: 0.06
- cap: 4500.00
- deduction cap: 400.00
- tax-free: 1200.00
- upper bracket begins: 2800.00
- middle rate: 0.14
- upper rate: 0.20
Step 1: Employee contribution (R3)
= rate × min(gross_pay, cap)
= 0.06 × min(2978.74, 4500.00)
= 0.06 × 2978.74
= 178.7244
Round to two decimals (round-half-up): 178.72
Step 2: Allowed deduction (R4)
allowed_deduction = 0.00. Check: must not exceed cap (400.00) or gross pay minus rounded contribution (2978.74 − 178.72 = 2800.02). 0.00 is fine.
Step 3: Taxable pay
= gross_pay − employee_contribution − allowed_deduction
= 2978.74 − 178.72 − 0.00
= 2800.02
Step 4: Income tax (R5)
Tax-free amount: 1200.00
Upper bracket begins: 2800.00
Portion up to 1200.00: untaxed.
Portion 1200.00 to 2800.00: 2800.00 − 1200.00 = 1600.00 at 0.14 = 224.00
Portion above 2800.00: 2800.02 − 2800.00 = 0.02 at 0.20 = 0.004
Total tax = 224.00 + 0.004 = 224.004
Round to two decimals: 224.00
Note R2: "Do not round intermediate bracket products separately before summing income tax." So sum first: 224.004 → 224.00.
Step 5: Net pay (R6)
= gross_pay − employee_contribution − allowed_deduction − income_tax
= 2978.74 − 178.72 − 0.00 − 224.00
= 1576.02
Let me verify: 2978.74 − 178.72 = 2800.02. 2800.02 − 224.00 = 2576.02. Wait, let me recompute.
2978.74 − 178.72 = 2800.02
2800.02 − 0.00 = 2800.02
2800.02 − 224.00 = 2576.02
So net pay = 2576.02.
Let me double-check the contribution: 0.06 × 2978.74 = 178.7244. Round half up at two decimals: 178.72 (since third decimal is 4, rounds down). Correct.
Taxable pay: 2978.74 − 178.72 = 2800.02. Correct.
Tax: bracket 1: 0 to 1200 → 0. Bracket 2: 1200 to 2800 → 1600 × 0.14 = 224.00. Bracket 3: above 2800 → 0.02 × 0.20 = 0.004. Total = 224.004 → 224.00.
Net pay: 2978.74 − 178.72 − 0.00 − 224.00 = 2576.02.
Clauses: R1 (row selection, schedule override), R2 (rounding), R3 (contribution), R4 (deduction/taxable pay), R5 (tax), R6 (net pay/answer format).
No amendment needed, no conflict.
Output JSON:
{
"decision": "calculate",
"currency": "LCR",
"gross_pay": "2978.74",
"employee_contribution": "178.72",
"allowed_deduction": "0.00",
"taxable_pay": "2800.02",
"income_tax": "224.00",
"net_pay": "2576.02",
"clauses": ["R1", "R2", "R3", "R4", "R5", "R6"]
}
Optionally an explanation. I'll include a brief one.
Rollout #3 -50.0% malformed · 5.0s · $0.0009
| Component | Score | Clauses |
|---|---|---|
| decision | 0.0% | R1 R2 R3 R4 R5 R6 |
| exact | 0.0% | R1 R2 R3 R4 R5 R6 |
| field accuracy | 0.0% | R1 R2 R3 R4 R5 R6 |
| citations | 0.0% | R1 R2 R3 R4 R5 R6 |
Assistant
```json
{
"decision": "calculate",
"currency": "LCR",
"gross_pay": "2978.74",
"employee_contribution": "178.72",
"allowed_deduction": "0.00",
"taxable_pay": "2800.02",
"income_tax": "224.00",
"net_pay": "2576.02",
"clauses": ["R1", "R2", "R3", "R4", "R5", "R6"],
"explanation": "Payroll month 2026-07 selects the second-half row of the authoritative case schedule (rate 0.06, cap 4500.00, deduction 400.00, free 1200.00, upper 2800.00, middle 0.14, upper_rate 0.20). Employee contribution = 0.06 × 2978.74 = 178.7244 → 178.72 (R3, R2). Allowed deduction 0.00 is within the 400.00 cap and available pay (R4). Taxable pay = 2978.74 − 178.72 − 0.00 = 2800.02 (R4). Income tax: first 1200.00 untaxed; 1600.00 × 0.14 = 224.00; 0.02 × 0.20 = 0.004; unrounded sum 224.004 → 224.00 (R5, R2). Net pay = 2978.74 − 178.72 − 0.00 − 224.00 = 2576.02 (R6)."
}
```
Reasoning
We need to process payroll for 2026-07, gross pay 2978.74, allowed_deduction 0.00. The authoritative case reference schedule is supplied. For 2026-07, we use second-half row: rate 0.06, cap 4500.00, deduction 400.00, free 1200.00, upper 2800.00, middle_rate 0.14, upper_rate 0.20. Employee contribution: rate * min(gross, cap) = 0.06 * 2978.74 = 178.7244 → round to 178.72 (round half up: 178.7244 → 178.72). Allowed deduction: 0.00, must not exceed cap 400.00 or gross minus contribution = 2978.74 - 178.72 = 2800.02. 0.00 is fine. Taxable pay = 2978.74 - 178.72 - 0.00 = 2800.02. Income tax: tax-free amount 1200.00; upper bracket begins at 2800.00. Portion up to 1200: untaxed. Portion 1200.01? Actually portion above 1200 up to 2800: (2800 - 1200) = 1600 at 14% = 224.00. Portion above 2800: 2800.02 - 2800 = 0.02 at 20% = 0.004. Total = 224.00 + 0.004 = 224.004 → round half up to 224.00. Wait, R2 says "Do not round intermediate bracket products separately before summing income tax." So sum = 224.004, round to 224.00. Net pay = 2978.74 - 178.72 - 0.00 - 224.00 = 2576.02. Check: 2978.74 - 178.72 = 2800.02; 2800.02 - 224.00 = 2576.02. Fields: decision calculate, currency LCR, gross_pay "2978.74", employee_contribution "178.72", allowed_deduction "0.00", taxable_pay "2800.02", income_tax "224.00", net_pay "2576.02". Clauses: R1 (row selection, schedule), R2 (rounding), R3 (contribution), R4 (deduction, taxable pay), R5 (tax), R6 (net pay/answer). The schedule is authoritative, replacing defaults. Second-half row: rate 0.06, cap 4500, deduction 400, free 1200, upper 2800, middle 0.14, upper 0.20. Contribution: 0.06 * 2978.74 = 178.7244 → 178.72. Taxable: 2800.02. Tax: (2800.02 - 1200) = 1600.02 above free. Of that, up to upper boundary 2800: 1600 at 0.14 = 224.00. Above 2800: 0.02 at 0.20 = 0.004. Total 224.004 → 224.00. Net: 2978.74 - 178.72 - 0.00 - 224.00 = 2576.02. Output JSON without markdown fences. Include clauses: ["R1","R2","R3","R4","R5","R6"]. Maybe add explanation.