Patterns for provable financial accuracy and invariant testing
Scanned 2/12/2026
Install to Claude Code
npx -y skills add majiayu000/claude-skill-registry --skill financial-integrity --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Financial Integrity?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/majiayu000-financial-integrity)More formats (shields.io, HTML) on the badges page.
---
name: Financial Integrity
description: Patterns for provable financial accuracy and invariant testing
---
# Financial Integrity
In the "Action Era", LivestockAI agents may autonomously propose sales or analyze profit. **Trust is our currency.** Calculations must be mathematically provable.
## Core Principle: The "Penny Perfect" Rule
All financial storage and calculation must treat money as an integer (minor units) or high-precision decimal.
**NEVER use standard generic `number` floating point math for money.**
## 1. Storage Standards
**Database:**
`DECIMAL(19, 4)` for unit prices (allows for precise small-unit costs like feed per gram).
`DECIMAL(19, 2)` for final transaction amounts (invoices, payments).
**TypeScript:**
Always use `decimal.js` via the project's currency utilities.
```typescript
// ❌ Dangerous
const total = 0.1 + 0.2 // 0.30000000000000004
// ✅ Safe
import { add } from '~/features/settings/currency'
const total = add(0.1, 0.2) // Decimal(0.3)
```
## 2. Invariant Testing (Property Tests)
Use `fast-check` to prove financial laws hold true for **all** inputs.
### Profit Law
`Profit = Revenue - (COGS + Expenses)`
```typescript
test('Profit Invariant', () => {
fc.assert(
fc.property(fc.integer(), fc.integer(), (revenue, cost) => {
const profit = calculateProfit(revenue, cost)
// Profit + Cost must always exactly equal Revenue
return profit.add(cost).equals(revenue)
}),
)
})
```
### Allocation Law
When splitting a cost across N batches, the sum of parts must equal the total.
_Watch out for rounding leftovers._
**Pattern: The "Penny Allocate" Algorithm**
If splitting $100 among 3 batches:
Batch 1: $33.33
Batch 2: $33.33
Batch 3: $33.34 (Takes the remainder)
## 3. Immutability
Financial records (`invoices`, `sales`, `expenses`) should be "Append-Only" to the user.
If a mistake is made:
1. Create a **Reversal Transaction** (negative amount) to void the error.
2. Create a new **Correct Transaction**.
_This preserves the audit trail._
## 4. Multi-Currency Safety
Always store `exchangeRate` and `currencyCode` at the **time of transaction**.
Never calculate historical value using _current_ exchange rates.
## Related Skills
- `financial-calculations` - The specific library calls implementation
- `property-testing` - The value verification method
No comments yet. Be the first to comment!