# Accounting sample pack — month-end close + engagement index

Built against `experiments/cpa_reconcile_demo/apostol-reconcile-demo.zip`
(sha256 `8b42561427242567266e31f887a9180506406a678a70ecd268c32d0725f73d3a`). This
pack **curates more than it builds**: the bundle already ships general-ledger
accounting samples; this pack indexes what already applies, and adds exactly
one new artifact class the bundle didn't already cover — a month-end close
lead-sheet/rollforward pair with a planted tie-out exception, plus one new
teach family pair.

## Index — existing bundle samples that already serve accounting work

| Bundle path | What it is | Accounting use |
|---|---|---|
| `samples/bank.csv` / `samples/ledger.csv` | single-client bank vs GL, 143/192 rows, includes 3 deliberately malformed rows (corrupted amount, impossible date, junk amount) | month-end bank reconciliation; typed-refusal-on-bad-row demo |
| `samples/engagement/manifest.csv` + `clientA/`, `clientB/` | 2-client engagement manifest | multi-client batch reconciliation (`apostol-reconcile-batch`) — see `evidence/batch_index.txt` for a live run |
| `ai_node/auditor_skills/examples/rollforward.json` | fixed-asset/reserve continuity schedule, ties to TB | rollforward fieldwork (the shape this pack's new `fixed_asset_rollforward.json` extends with a planted break) |
| `ai_node/auditor_skills/examples/liabilities.json` | post-period disbursement search | search for unrecorded liabilities fieldwork |
| `ai_node/auditor_skills/examples/leadsheet.json` | 2-line lead-sheet tie-out (Cash, AP) | lead-sheet tie-out fieldwork (the shape this pack's new `month_end_leadsheet.json` extends to 5 lines with a planted break) |
| `ai_node/check_auditor.sh` | the auditor-skills pack's own conformance gate (poison battery, calibration-fires H5, determinism) | run once to confirm the tool surface itself is sound before trusting its output on this pack's inputs — see `RESULTS.md` |

## New artifact — month-end close (this pack)

A five-line lead-sheet tie-out (Cash, AR, AP, Accrued Liabilities, Fixed
Assets (Net)) built from a synthetic 12-account trial-balance extract, paired
with a fixed-asset continuity schedule (rollforward) for the same period.
Both carry exactly one planted exception (see `plants.json`):

- `samples/month_end_leadsheet.json` — 12 TB accounts grouped to 5 lead-sheet
  lines. 4 of 5 lines tie exactly; **AR does not** — the account population
  sums to $9,800.00 but the reported FS line still shows $8,600.00, a
  $1,200.00 unposted/late adjustment.
- `samples/fixed_asset_rollforward.json` — beginning $15,000.00 + additions
  $1,500.00 − disposals $600.00 = computed ending $15,900.00 (which is what
  the lead sheet's Fixed Assets (Net) line reports), but the TB extract's
  own stated ending balance is $16,100.00 — a $200.00 break between the
  continuity schedule and the TB.

## New teach family pair — accrual-flag by days-outstanding

- `teach/accrual_flag_adopt.json` — designed to ADOPT: flag an accrued/
  unbilled item at period-end when `days_outstanding` is at or under a
  threshold the examples bracket exactly (3/16/28 → flag, 29/43/58 →
  no_flag).
- `teach/accrual_flag_refuse.json` — same shape, deliberately underdetermined
  (5/20 → flag, 70 → no_flag, a wide unlabeled gap) — designed to REFUSE with
  a discriminating probe, not to reach the operator-algebra limit.

## Honest scope

- The leadsheet/rollforward JSON inputs are synthetic — a made-up 12-account
  TB extract, not a real client's trial balance.
- `ai_node/run_auditor.sh` is wire-only: it converts nothing and computes
  nothing itself; every number quoted in `RESULTS.md` is the vendored
  `auditor_skills` module's own output.
- The teach engine's train/hold-out split is a deterministic function of the
  exact JSON content (canonical-hash order on each `(input, expected)` pair),
  not of the field names or the narrative — see `RESULTS.md` for the
  iteration this pack needed to land the intended REFUSE-underdetermined
  outcome instead of `reach_limit`.

## Run it yourself

```bash
ai_node/run_auditor.sh leadsheet   <path-to>/samples/month_end_leadsheet.json
ai_node/run_auditor.sh rollforward <path-to>/samples/fixed_asset_rollforward.json
ai_node/teach_skill.sh <path-to>/teach/accrual_flag_adopt.json
ai_node/teach_skill.sh <path-to>/teach/accrual_flag_refuse.json
bin/apostol-reconcile-batch samples/engagement/manifest.csv --html   # existing bundle sample, indexed above
ai_node/check_auditor.sh                                             # existing bundle gate, indexed above
```
