Source: https://guthlabs.ai/docs/instruments/tip-bill-split-calculator/mechanism/

instrument mechanism / verified-clean

# Tip & Bill Split Calculator mechanism

The inspectable method record for Tip & Bill Split Calculator, kept separate from implementation and qualification.

Status: **VERIFIED_CLEAN**Lifecycle: **verified-clean**

## Model scope

The core arithmetic is correct for an equal split with a positive integer number of people and a tip percentage converted from percentage points to a fraction. The instrument needs explicit input semantics, validation constraints, currency-rounding behavior, and a defined itemized-share mode before it can receive PASS.

- The formulas are standard for an equal split when tip% is represented as a fraction, but the spec does not define whether tip% input is entered as 20 or 0.20.

- The optional itemized shares input has no defined formula or behavior; the listed per-person formula only supports an equal split.

- Currency rounding rules are unspecified, especially when total/num_people produces fractional cents.

## Units and conventions

- bill amount, tip amount, and total use the same currency and monetary unit.

- tip% is assumed to be percentage points converted to a fraction before multiplication: 20% = 0.20.

- num_people is a dimensionless positive integer.

- Test-vector outputs show unrounded arithmetic values unless otherwise stated; a production currency display may require rounding to the smallest currency unit.

## Inspectable vector

One of 4 source-bound review vectors:

````
{
  "inputs": {
    "bill": 84.5,
    "tip_percent": 20,
    "num_people": 4,
    "tip_percent_interpretation": "20 percentage points = 0.20"
  },
  "expected_outputs": {
    "tip_amount": 16.9,
    "total": 101.4,
    "per_person": 25.35
  },
  "working": "tip = 84.50 × 0.20 = 16.90; total = 84.50 + 16.90 = 101.40; per_person = 101.40 ÷ 4 = 25.35."
}
````

## Failure boundary

**BREAK_CLAIMED** · SELF_FLAGGED

The calculator has an unhandled undefined-result trap when number_of_people is zero: per_person requires division by zero. It should reject that input. The tip-percent convention is also ambiguous unless the interface explicitly states whether 20 means 20% or a decimal rate of 20.

## Other records

[01**Overview**](<https://guthlabs.ai/docs/instruments/tip-bill-split-calculator/>)[03**Implementation**](<https://guthlabs.ai/docs/instruments/tip-bill-split-calculator/implementation/>)[04**Qualification**](<https://guthlabs.ai/docs/instruments/tip-bill-split-calculator/qualification/>)

## Sources and evidence

These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.

- `VERIFIED_LEDGER.json`

- `evidence-tranche5/tranche5-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
