# TheWIPTally
> AASB 15 construction WIP schedule: review aid, not a determination.

## Package overview
- **Repository**: https://github.com/ryanduguid/australian-accounting/tree/main/packages/the-wip-tally
- **Distribution**: `the-wip-tally`
- **Import Package**: `wiptally`
- **CLI Command**: `wip-tally`
- **Domain**: Deterministic work-in-progress schedule for Australian construction, civil, mining-services and power-station packages.
- **Primary standards**: AASB 15 (arithmetic for progress, constrained variable consideration, contract asset/liability). AASB 137 is flagged, not measured.

## Core modules and APIs
- `wiptally.schedule.measure`: one contract to one position.
- `wiptally.csv_io.read_contracts`: strict CSV schema, Decimal amounts.
- `wiptally.cli`: `schedule` and `review-pack` commands.
- `wiptally.report`: atomic CSV, console summary, SHA-256 review pack.

## Architectural boundaries
1. **One row is one unit of account.** Combine contracts under AASB 15 para 17 before the CSV. Never offset one contract against another.
2. **B19 exclusions change progress, not whether the cost exists.** Wasted cost stays in EAC/margin. Uninstalled materials earn zero margin.
3. **Judgement stays human.** Over-time versus point in time, enforceability of claims, retention classification and onerous-contract provisions are flags, not postings.
4. **Review aid policy.** Not accounting, tax or legal advice. Tax does not follow this schedule.

## Companion
- The [`wip-over-under-billing` skill](https://github.com/ryanduguid/australian-accounting-skills/blob/main/.claude/skills/wip-over-under-billing/SKILL.md) in Australian Accounting Skills owns the WIP *workflow*. This engine owns the arithmetic that workflow consumes.
