Source: https://guthlabs.ai/docs/instruments/50-30-20-budget-splitter/mechanism/

instrument mechanism / verified-clean

# 50/30/20 Budget Splitter mechanism

The inspectable method record for 50/30/20 Budget Splitter, kept separate from implementation and qualification.

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

## Model scope

The core 50/30/20 arithmetic is standard and correct, and the generic-guideline disclaimer is appropriate. Verdict is NEEDS_REVIEW because the adjustable split representation, validation rules, period handling, rounding policy, and pie-breakdown calculation are not fully specified.

- The fixed formulas are correct for the 50/30/20 guideline when income is a nonnegative net-income amount and percentages are represented as decimal fractions: 0.5, 0.3, and 0.2.

- The adjustable custom split is underspecified: the spec does not define whether entered values are whole percentages such as 50 or decimal fractions such as 0.5.

- Custom splits need validation requiring nonnegative components whose sum is exactly 100% (or 1.0), or an explicitly documented normalization rule.

- The pie breakdown formula is not stated. It should use the configured split percentages directly, or define how percentages are derived from amounts.

## Units and conventions

- Net income is an amount in the stated currency, not a percentage or a value in minor units such as cents.

- The income period must be specified; outputs use the same period as the input and no annual-to-monthly conversion is performed.

- Custom split inputs in these vectors are whole percentages and must sum to 100%.

- Dollar outputs are shown to the nearest cent; the rounding policy for cases that produce fractional cents is not specified.

- The guideline percentages are allocation suggestions, not individualized financial advice, consistent with the stated honest label.

## Inspectable vector

One of 4 source-bound review vectors:

````
{
  "inputs": {
    "net_income": 5000,
    "currency": "USD",
    "income_period": "monthly",
    "custom_split_percent": [
      50,
      30,
      20
    ]
  },
  "expected_outputs": {
    "needs": 2500,
    "wants": 1500,
    "savings": 1000,
    "pie_breakdown": {
      "needs_percent": 50,
      "wants_percent": 30,
      "savings_percent": 20
    }
  },
  "working": "needs = 0.50 × 5000.00 = 2500.00; wants = 0.30 × 5000.00 = 1500.00; savings = 0.20 × 5000.00 = 1000.00; check: 2500.00 + 1500.00 + 1000.00 = 5000.00."
}
````

## Failure boundary

**BREAK_CLAIMED** · SELF_FLAGGED

The formulas themselves have no division-by-zero or branch regime, but the specification leaves negative-income handling and percentage conventions unstated. A UI that accepts negative income can display nonsensical negative allocations, and chart normalization at zero income can encounter 0 divided by 0. Extreme finite inputs also expose floating-point precision and possible overflow beyond the tested magnitude.

## Other records

[01**Overview**](<https://guthlabs.ai/docs/instruments/50-30-20-budget-splitter/>)[03**Implementation**](<https://guthlabs.ai/docs/instruments/50-30-20-budget-splitter/implementation/>)[04**Qualification**](<https://guthlabs.ai/docs/instruments/50-30-20-budget-splitter/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-tranche4/tranche4-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
