Luma Payroll Gym
← Heatmap / MiMo V2.6 Pro · Task 19
MiMo V2.6 Pro · Tool use · Task 19 (Calculation, upper bracket) 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 4326.01 4326.01 4326.01 4326.01
employee contribution 302.82 302.82 302.82 302.82
allowed deduction 386.64 386.64 386.64 386.64
taxable pay 3636.55 3636.55 3636.55 3636.55
income tax 198.58 198.58 198.58 198.58
net pay 3437.97 3437.97 3437.97 3437.97
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.
Retrieve the case inputs with list_documents and read_document. Reference rows are available only through lookup_reference. Use calculate for exact decimal arithmetic.
Rollouts
Rollout #1 100.0% passed · 4 tool calls · 16.3s · $0.0013
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
list_documents()
Reasoning
Let's start by listing documents.
Tool
[
  {"id": "f8d9f5fe0eb33c57-payroll", "kind": "payroll"}
]
Assistant
read_document(document_id="f8d9f5fe0eb33c57-payroll")
Reasoning
Read the payroll document.
Tool
{
  "kind": "payroll",
  "record": {"gross_pay": "4326.01", "payroll_month": "2026-03", "allowed_deduction": "386.64"}
}
Assistant
lookup_reference(reference="first-half")
Reasoning
Payroll month 2026-03 is in the first half of 2026. Let me look up the reference.
Tool
{
  "reference": "first-half",
  "months": ["2026-01", "2026-06"],
  "rate": "0.07",
  "cap": "4500.00",
  "deduction": "400.00",
  "free": "1200.00",
  "upper": "3600.00",
  "middle_rate": "0.08",
  "upper_rate": "0.18"
}
Assistant
calculate(program="contribution = round(min(4326.01, 4500.00) * 0.07, 2)\nallowed = 386.64\ntaxable = 4326.01 - contribution - allowed\ntax_mid = max(min(taxable, 3600.00) - 1200.00, 0) * 0.08\ntax_upper = max(taxable - 3600.00, 0) * 0.18\nincome_tax = round(tax_mid + tax_upper, 2)\nnet = 4326.01 - contribution - allowed - income_tax")
Reasoning
Gross pay 4326.01, cap 4500, rate 0.07. Contribution = round(min(4326.01, 4500) * 0.07, 2) = round(302.8207, 2) = 302.82.

Allowed deduction 386.64 ≤ deduction cap 400.00, and ≤ gross - contribution = 4326.01 - 302.82 = 4023.19. OK.

Taxable pay = 4326.01 - 302.82 - 386.64 = 3636.55.

Tax: free 1200, upper 3600, middle_rate 0.08, upper_rate 0.18.
Portion up to 1200: untaxed.
Portion 1200 to 3600: 2400 * 0.08 = 192.
Portion above 3600: 3636.55 - 3600 = 36.55 * 0.18 = 6.579 → sum = 192 + 6.579 = 198.579 → round total = 198.58.

Net pay = 4326.01 - 302.82 - 386.64 - 198.58 = 3437.97.

Let me verify with calculate.
Tool
{
  "results": {"contribution": "302.82", "allowed": "386.64", "taxable": "3636.55", "tax_mid": "192.0000", "tax_upper": "6.5790", "income_tax": "198.58", "net": "3437.97"}
}
Assistant
{
  "decision": "calculate",
  "currency": "LCR",
  "gross_pay": "4326.01",
  "employee_contribution": "302.82",
  "allowed_deduction": "386.64",
  "taxable_pay": "3636.55",
  "income_tax": "198.58",
  "net_pay": "3437.97",
  "clauses": ["R1", "R2", "R3", "R4", "R5", "R6"]
}
Reasoning
All checks pass. Return the R6 JSON.
Rollout #2 100.0% passed · 5 tool calls · 19.4s · $0.0015
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
list_documents()
Reasoning
Let me list documents.
Tool
[
  {"id": "f8d9f5fe0eb33c57-payroll", "kind": "payroll"}
]
Assistant
read_document(document_id="f8d9f5fe0eb33c57-payroll")
Reasoning
Read the payroll document.
Tool
{
  "kind": "payroll",
  "record": {"gross_pay": "4326.01", "payroll_month": "2026-03", "allowed_deduction": "386.64"}
}
Assistant
lookup_reference(reference="first-half")lookup_reference(reference="second-half")
Reasoning
March 2026 — which reference row? Need lookup_reference. Likely first-half covers Jan–Jun, second-half Jul–Dec. Let me check both? The rules say "Read first-half or second-half payroll reference rates and effective months." Effective months matter. Let me lookup first-half.
Tool
{
  "reference": "first-half",
  "months": ["2026-01", "2026-06"],
  "rate": "0.07",
  "cap": "4500.00",
  "deduction": "400.00",
  "free": "1200.00",
  "upper": "3600.00",
  "middle_rate": "0.08",
  "upper_rate": "0.18"
}
Tool
{
  "reference": "second-half",
  "months": ["2026-07", "2026-12"],
  "rate": "0.05",
  "cap": "4500.00",
  "deduction": "400.00",
  "free": "1200.00",
  "upper": "3600.00",
  "middle_rate": "0.08",
  "upper_rate": "0.22"
}
Assistant
calculate(program="contribution = round(min(4326.01, 4500.00) * 0.07, 2)\ndeduction_check = max(386.64, 0.00)\ntaxable_pay = 4326.01 - contribution - 386.64\nmiddle_tax = min(max(taxable_pay - 1200.00, 0.00), 3600.00 - 1200.00) * 0.08\nupper_tax = max(taxable_pay - 3600.00, 0.00) * 0.18\nincome_tax = round(middle_tax + upper_tax, 2)\nnet_pay = 4326.01 - contribution - 386.64 - income_tax")
Reasoning
Payroll month 2026-03 → first-half row: rate 0.07, cap 4500.00, deduction cap 400.00, free 1200, upper 3600, middle0.08, upper 0.18.

gross = 4326.01, contribution = round(min(4326.01, 4500) * 0.07, 2) = round(302.8207, 2) = 302.82.

allowed_deduction = 386.64 ≤ 400 and ≤ gross - contribution = 4326.01 - 302.82 = 4023.19. OK.

taxable = 4326.01 - 302.82 - 386.64 = 3636.55.

Tax: free 1200 untaxed. Portion from 1200 to 3600 = 2400 * 0.08 = 192.00. Portion above 3600 = 3636.55 - 3600 = 36.55 * 0.18 = 6.579. Total = 198.579 → round 198.58. But rule: don't round intermediate products separately before summing. So compute exactly then round.

net = 4326.01 - 302.82 - 386.64 - 198.58 = 3437.97.

Let me verify with calculate.
Tool
{
  "results": {"contribution": "302.82", "deduction_check": "386.64", "taxable_pay": "3636.55", "middle_tax": "192.0000", "upper_tax": "6.5790", "income_tax": "198.58", "net_pay": "3437.97"}
}
Assistant
{
  "decision": "calculate",
  "currency": "LCR",
  "gross_pay": "4326.01",
  "employee_contribution": "302.82",
  "allowed_deduction": "386.64",
  "taxable_pay": "3636.55",
  "income_tax": "198.58",
  "net_pay": "3437.97",
  "clauses": ["R1", "R2", "R3", "R4", "R5", "R6"]
}
Reasoning
All checks pass. Return JSON.
Rollout #3 100.0% passed · 4 tool calls · 18.8s · $0.0013
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
list_documents()
Reasoning
Let me list documents first.
Tool
[
  {"id": "f8d9f5fe0eb33c57-payroll", "kind": "payroll"}
]
Assistant
read_document(document_id="f8d9f5fe0eb33c57-payroll")
Reasoning
Read the payroll document.
Tool
{
  "kind": "payroll",
  "record": {"gross_pay": "4326.01", "payroll_month": "2026-03", "allowed_deduction": "386.64"}
}
Assistant
lookup_reference(reference="first-half")
Reasoning
Payroll month 2026-03 → first-half reference. Let me lookup the first-half reference.
Tool
{
  "reference": "first-half",
  "months": ["2026-01", "2026-06"],
  "rate": "0.07",
  "cap": "4500.00",
  "deduction": "400.00",
  "free": "1200.00",
  "upper": "3600.00",
  "middle_rate": "0.08",
  "upper_rate": "0.18"
}
Assistant
calculate(program="contribution = round(min(4326.01, 4500.00) * 0.07, 2)\nallowed = 386.64\ntaxable = 4326.01 - contribution - allowed\ntax = (min(taxable, 3600.00) - 1200.00) * 0.08 + max(taxable - 3600.00, 0) * 0.18\nincome_tax = round(tax, 2)\nnet = 4326.01 - contribution - allowed - income_tax")
Reasoning
Gross pay 4326.01, month 2026-03 → first-half row applies. Rate 0.07, cap 4500, deduction cap 400, free 1200, upper 3600, middle_rate 0.08, upper_rate 0.18.

Employee contribution = round(min(4326.01, 4500) * 0.07, 2) = round(4326.01 * 0.07, 2) = 302.8207 → 302.82.

Allowed deduction 386.64 ≤ 400 cap, and ≤ gross - contribution = 4326.01 - 302.82 = 4023.19. OK.

Taxable pay = 4326.01 - 302.82 - 386.64 = 3636.55.

Income tax: free 1200 untaxed. Portion from 1200 to 3600 = 2400 * 0.08 = 192. Portion above 3600 = 3636.55 - 3600 = 36.55 * 0.18 = 6.579. Total = 192 + 6.579 = 198.579 → round half up → 198.58.

Note: "Do not round intermediate bracket products separately before summing income tax." So sum then round: 198.579 → 198.58.

Net pay = 4326.01 - 302.82 - 386.64 - 198.58 = 3437.97.

Let me verify with calculate.
Tool
{
  "results": {"contribution": "302.82", "allowed": "386.64", "taxable": "3636.55", "tax": "198.5790", "income_tax": "198.58", "net": "3437.97"}
}
Assistant
{
  "decision": "calculate",
  "currency": "LCR",
  "gross_pay": "4326.01",
  "employee_contribution": "302.82",
  "allowed_deduction": "386.64",
  "taxable_pay": "3636.55",
  "income_tax": "198.58",
  "net_pay": "3437.97",
  "clauses": ["R1", "R2", "R3", "R4", "R5", "R6"]
}
Reasoning
All values confirmed. Return JSON.