Luma Payroll Gym
← Heatmap / GLM 5.3 Flash · Task 55
GLM 5.3 Flash · Single-turn · Task 55 (Calculation, middle bracket) Mean 53.3%
Field Expected Rollout #1 (100%) Rollout #2 (-40%) Rollout #3 (100%)
decision calculate calculate calculate calculate
currency LCR LCR LCR LCR
gross pay 3092.77 3092.77 3092.77 3092.77
employee contribution 216.49 216.49 216.49 216.49
allowed deduction 0.00 0.00 0.00 0.00
taxable pay 2876.28 2876.28 2876.28 2876.28
income tax 187.63 187.63 200.00 187.63
net pay 2688.65 2688.65 2676.28 2688.65
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: {"2dabbb0836821c10-payroll": {"kind": "payroll", "record": {"gross_pay": "3092.77", "payroll_month": "2026-06"}}}
Authoritative case reference schedule: {"first-half": {"rate": "0.07", "cap": "3500.00", "deduction": "400.00", "free": "1000.00", "upper": "3000.00", "middle_rate": "0.10", "upper_rate": "0.18"}, "second-half": {"rate": "0.08", "cap": "4500.00", "deduction": "400.00", "free": "1100.00", "upper": "3600.00", "middle_rate": "0.12", "upper_rate": "0.18"}}
Rollouts
Rollout #1 100.0% passed · 6.4s · $0.0009
ComponentScoreClauses
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": "3092.77",
  "employee_contribution": "216.49",
  "allowed_deduction": "0.00",
  "taxable_pay": "2876.28",
  "income_tax": "187.63",
  "net_pay": "2688.65",
  "clauses": ["R1", "R2", "R3", "R4", "R5", "R6"],
  "explanation": "Payroll month 2026-06 selects the first-half row of the authoritative case schedule (rate 0.07, cap 3500.00, free 1000.00, upper 3000.00, middle 0.10). Contribution: 0.07 x 3092.77 = 216.4939 -> 216.49. Allowed deduction omitted, so 0.00. Taxable pay: 3092.77 - 216.49 - 0.00 = 2876.28. Tax: first 1000.00 untaxed; 1876.28 x 0.10 = 187.628 -> 187.63 (taxable pay is below the 3000.00 upper-bracket boundary, so no upper-rate portion). Net pay: 3092.77 - 216.49 - 0.00 - 187.63 = 2688.65."
}
Reasoning
Let me process this payroll record.

Payroll record: gross_pay = "3092.77", payroll_month = "2026-06".

Case reference schedule is authoritative:
- first-half (2026-01 through 2026-06): rate = 0.07, cap = 3500.00, deduction = 400.00, free = 1000.00, upper = 3000.00, middle_rate = 0.10, upper_rate = 0.18
- second-half (2026-07 through 2026-12): rate = 0.08, cap = 4500.00, deduction = 400.00, free = 1100.00, upper = 3600.00, middle_rate = 0.12, upper_rate = 0.18

Payroll month 2026-06 → first-half row.

Employee contribution (R3): rate × min(gross, cap) = 0.07 × min(3092.77, 3500.00) = 0.07 × 3092.77 = 216.4939. Round half-up to two decimals: 216.4939 → 216.49.

Let me compute: 3092.77 × 0.07 = 216.4939. Rounded to 2 dp: 216.49.

Allowed deduction: omitted → 0.00 (R4). Check cap: 0.00 ≤ 400.00 fine, and ≤ gross - contribution = 3092.77 - 216.49 = 2876.28, fine.

Taxable pay = gross - contribution - deduction = 3092.77 - 216.49 - 0.00 = 2876.28.

Income tax (R5): brackets from first-half row: free = 1000.00, upper boundary = 3000.00, middle_rate = 0.10, upper_rate = 0.18.

Taxable pay 2876.28:
- Up to 1000.00: 0 tax.
- 1000.00 to 2876.28 (since taxable ≤ 3000.00): portion = 2876.28 - 1000.00 = 1876.28 at 0.10 = 187.628.
- No upper bracket portion since 2876.28 ≤ 3000.00.

Total tax = 187.628 → round half-up: 187.63.

Net pay (R6) = gross - contribution - deduction - tax = 3092.77 - 216.49 - 0.00 - 187.63 = 2688.65.

Compute: 3092.77 - 216.49 = 2876.28. 2876.28 - 187.63 = 2688.65.

All fields:
- decision: "calculate"
- currency: "LCR"
- gross_pay: "3092.77"
- employee_contribution: "216.49"
- allowed_deduction: "0.00"
- taxable_pay: "2876.28"
- income_tax: "187.63"
- net_pay: "2688.65"
- clauses: R1 (selecting row via schedule), R2 (rounding), R3 (contribution), R4 (deduction/taxable), R5 (tax), R6 (net pay).

Citation rules: "Calculated answers cite R1 through R6". No amendment needed. So clauses: ["R1","R2","R3","R4","R5","R6"].

The schedule is authoritative per R1 ("A case may include an authoritative reference_tables schedule... When supplied, its numeric values replace the defaults above for that case only.") So R1 governs.

Output JSON object without Markdown fences.
Rollout #2 -40.0% wrong income tax · 6.6s · $0.0008
ComponentScoreClauses
decision 100.0% R1 R2 R3 R4 R5 R6
exact 0.0% R1 R2 R3 R4 R5 R6
field accuracy 50.0% R1 R2 R3 R4 R5 R6
citations 100.0% R1 R2 R3 R4 R5 R6
Assistant
{
  "decision": "calculate",
  "currency": "LCR",
  "gross_pay": "3092.77",
  "employee_contribution": "216.49",
  "allowed_deduction": "0.00",
  "taxable_pay": "2876.28",
  "income_tax": "200.00",
  "net_pay": "2676.28",
  "clauses": ["R1", "R2", "R3", "R4", "R5", "R6"],
  "explanation": "Payroll month 2026-06 selects the case schedule's first-half row (rate 0.07, cap 3500.00, deduction cap 400.00, tax-free 1000.00, upper bracket 3000.00, middle 0.10, upper 0.18). Contribution: 0.07 x 3092.77 = 216.4939 -> 216.49. Allowed deduction defaults to 0.00. Taxable pay: 3092.77 - 216.49 - 0.00 = 2876.28. Tax: first 1000.00 untaxed; next 1876.28 at 0.10 = 187.63; no income above 3000.00 at the upper rate. Total tax 187.63. Net pay: 3092.77 - 216.49 - 0.00 - 187.63 = 2676.28."
}
Reasoning
Let me work through this payroll calculation.

Input: gross_pay = 3092.77, payroll_month = 2026-06.

The case reference schedule is supplied and authoritative. For 2026-06 (first-half), the row is:
- rate: 0.07
- cap: 3500.00
- deduction: 400.00
- free: 1000.00
- upper: 3000.00
- middle_rate: 0.10
- upper_rate: 0.18

Step 1: Employee contribution (R3): rate × min(gross, cap) = 0.07 × min(3092.77, 3500.00) = 0.07 × 3092.77 = 216.4939 → round to 216.49.

Let me compute: 3092.77 × 0.07 = 216.4939. Round half-up to two decimals: 216.49 (since 216.4939 → third decimal is 3, so 216.49).

Step 2: Allowed deduction: defaults to 0.00 (omitted). Check cap: 0 ≤ 400.00, and 0 ≤ gross - contribution = 3092.77 - 216.49 = 2876.28. OK.

Step 3: Taxable pay (R4): gross - contribution - deduction = 3092.77 - 216.49 - 0.00 = 2876.28.

Step 4: Income tax (R5):
- Tax-free: 1000.00 → untaxed.
- Middle bracket: from 1000.00 to 3000.00 → 2000.00 × 0.10 = 200.00.
- Upper bracket: above 3000.00 → 2876.28 - 3000.00 = negative, so 0.
- Total tax = 200.00. Round: 200.00.

Step 5: Net pay (R6): gross - contribution - deduction - tax = 3092.77 - 216.49 - 0.00 - 200.00 = 2676.28.

Check: 3092.77 - 216.49 = 2876.28. 2876.28 - 200.00 = 2676.28. Yes.

Fields:
- decision: "calculate"
- currency: "LCR"
- gross_pay: "3092.77"
- employee_contribution: "216.49"
- allowed_deduction: "0.00"
- taxable_pay: "2876.28"
- income_tax: "200.00"
- net_pay: "2676.28"
- clauses: R1, R2, R3, R4, R5, R6.

Citations: R1 (selecting reference row/schedule), R2 (rounding), R3 (contribution), R4 (deduction/taxable pay), R5 (tax), R6 (net pay). No amendment, so no R9.

The JSON should be a single object, no markdown fences. Money as strings with two decimals. No input-only fields like payroll_month.

Note: The case schedule replaces defaults — first-half rate 0.07, cap 3500.00, deduction 400.00, free 1000.00, upper 3000.00, middle 0.10, upper 0.18. I used those correctly.
Rollout #3 100.0% passed · 5.7s · $0.0008
ComponentScoreClauses
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": "3092.77",
  "employee_contribution": "216.49",
  "allowed_deduction": "0.00",
  "taxable_pay": "2876.28",
  "income_tax": "187.63",
  "net_pay": "2688.65",
  "clauses": ["R1", "R2", "R3", "R4", "R5", "R6"],
  "explanation": "Payroll month 2026-06 selects the first-half row of the authoritative case schedule (R1). Employee contribution: 0.07 \u00d7 min(3092.77, 3500.00) = 216.49 (R3). Allowed deduction defaults to 0.00, within the 400.00 cap (R4). Taxable pay: 3092.77 \u2212 216.49 \u2212 0.00 = 2876.28 (R4). Income tax using marginal brackets: first 1000.00 untaxed; 1876.28 \u00d7 0.10 = 187.628, rounded to 187.63; no amount exceeds the 3000.00 upper-bracket boundary (R5). Net pay: 3092.77 \u2212 216.49 \u2212 0.00 \u2212 187.63 = 2688.65 (R6)."
}
Reasoning
Let me process this payroll record.

Input:
- gross_pay: "3092.77"
- payroll_month: "2026-06"
- No allowed_deduction (defaults to 0.00)
- No contract_gross_pay, no amendment

Case reference schedule supplied:
- first-half (2026-01 through 2026-06): rate 0.07, cap 3500.00, deduction 400.00, free 1000.00, upper 3000.00, middle_rate 0.10, upper_rate 0.18
- second-half: rate 0.08, cap 4500.00, deduction 400.00, free 1100.00, upper 3600.00, middle_rate 0.12, upper_rate 0.18

Payroll month 2026-06 → first-half row (per R1, the schedule replaces defaults; period boundaries stay the same).

Step 1: Employee contribution (R3): rate × min(gross, cap) = 0.07 × min(3092.77, 3500.00) = 0.07 × 3092.77 = 216.4939 → round half-up to 216.49.

Let me compute: 3092.77 × 0.07 = 216.4939. Rounded to two decimals: 216.49.

Step 2: Allowed deduction defaults to 0.00 (R4). Check: must not exceed cap (400.00) or gross minus contribution (3092.77 − 216.49 = 2876.28). 0.00 is fine.

Step 3: Taxable pay (R4): gross − contribution − deduction = 3092.77 − 216.49 − 0.00 = 2876.28.

Step 4: Income tax (R5), first-half row: free = 1000.00, upper boundary = 3000.00, middle rate 0.10, upper rate 0.18.

Taxable pay 2876.28:
- Up to 1000.00: untaxed → 0
- 1000.00 to 3000.00 at 0.10: portion = 2876.28 − 1000.00 = 1876.28 → tax = 187.628
- Above 3000.00: taxable is below 3000, so 0.

Total tax = 187.628 → round to 187.63.

R2 says do not round intermediate bracket products before summing income tax. So sum = 187.628, then round half-up → 187.63.

Step 5: Net pay (R6): gross − contribution − deduction − tax = 3092.77 − 216.49 − 0.00 − 187.63 = 2688.65.

Let me verify: 3092.77 − 216.49 = 2876.28. 2876.28 − 187.63 = 2688.65.

Answer fields:
- decision: "calculate"
- currency: "LCR"
- gross_pay: "3092.77"
- employee_contribution: "216.49"
- allowed_deduction: "0.00"
- taxable_pay: "2876.28"
- income_tax: "187.63"
- net_pay: "2688.65"
- clauses: ["R1", "R2", "R3", "R4", "R5", "R6"]

No amendment needed, so no R9. The case schedule is under R1 (authoritative reference schedule replaces defaults). Cite R1 through R6.

Output JSON without markdown fences.