Apostol Reconciliation — quick start
====================================

Nothing here uses the internet. Everything runs on your own machine.

ONE STATEMENT vs ONE LEDGER
  ./bin/apostol-reconcile samples/bank.csv samples/ledger.csv -o report.txt
  # add a printable workpaper you can open in a browser and print to PDF:
  ./bin/apostol-reconcile samples/bank.csv samples/ledger.csv -o report.txt --html workpaper.html

A WHOLE ENGAGEMENT AT ONCE (many clients / periods)
  ./bin/apostol-reconcile-batch samples/engagement/manifest.csv --html
  # writes one report per job + a single batch_index.txt with a batch witness
  # that seals the entire engagement. Change one cent anywhere and it changes.

WHAT TO CHECK ON EVERY REPORT
  - "identity check HOLDS"  (matched + unmatched equals accepted, to the cent)
  - the match-stream witness (a SHA-256): re-run the same files, same witness.

USE YOUR OWN FILES
  Replace the sample CSVs with your own exports in the same shape:
  a date column (YYYY-MM-DD), an amount column (1298.97, -89.99, or (15.00)),
  and a description column. See GUIDE.md for the full explanation.

DIGITAL PDF EXPORTS
  ./bin/apostol-pdf-extract bank_statement.pdf --out bank.csv
  # This is a narrow text-layer extractor for digital PDFs, not OCR.
  # Image-only or malformed PDFs are refused instead of guessed.

AI NODE AUDIT ASSISTS (vendored engine + native accounting binary — no internet, no pip)
  ai_node/run_duplicates.sh samples/ledger.csv    # fuzzy-propose -> exact-confirm duplicates
  ai_node/run_anomaly.sh    samples/ledger.csv    # Benford / round-number / just-under scans
  ai_node/run_sampling.sh   samples/ledger.csv    # MUS sampling + synthesis + audit envelope
  ai_node/ask_accounting.sh current_ratio current_assets=3000 current_liabilities=2000
  # self-test the vendored learning engine itself:
  ( cd ai_node && python3 -m node_core.selftest )
  # See GUIDE.md, "AI Node audit assists", for what each one does and does NOT claim.

AUDITOR SKILLS (fieldwork time-sinks: exact answers or typed refusals, never guesses)
  ai_node/run_auditor.sh rollforward ai_node/auditor_skills/examples/rollforward.json
    # continuity schedule: beginning + additions - disposals = ending (integer pence);
    # add "tb_ending_balance" to the JSON to tie the computed ending to the TB instead
  ai_node/run_auditor.sh liabilities ai_node/auditor_skills/examples/liabilities.json
    # search for unrecorded liabilities: flags post-period disbursements whose service
    # period predates period-end and whose amount exceeds YOUR stated threshold
  ai_node/run_auditor.sh leadsheet ai_node/auditor_skills/examples/leadsheet.json
    # lead-sheet tie-out: each group's sum vs the reported FS line; an unmapped
    # account is a typed refusal, never a silent drop
  ai_node/check_auditor.sh
    # the pack's own falsifiable conformance gate (poison battery, defect-injection
    # calibration, determinism); expect "WIN": true
  # Input shapes + what these tools refuse to judge: GUIDE.md, "Auditor skills".

TEACH IT A NEW SKILL (self-teaching skill creator — learns from YOUR worked examples)
  ai_node/teach_skill.sh ai_node/skill_birth/examples/teach_adoptable.json
    # examples bracket the rule exactly -> the engine authors its own success
    # standard FIRST, then ADOPTs the one rule that uniquely survives
  ai_node/teach_skill.sh ai_node/skill_birth/examples/teach_ambiguous.json
    # examples leave a gap -> a constructive REFUSAL that names the exact
    # input to label next (refusal is success behavior, not an error)
  # Honest scope: enumerable candidate rules over a bounded operator algebra at
  # small scale — not arbitrary real-world tasks. GUIDE.md, "Teach it a new skill".

INDUSTRY SAMPLES
  Four live-proven packs (medical, engineering, fintech, accounting) with
  ready-made data, exact commands, and expected outcomes per artifact:
  see samples/industries/INDEX.md

INTEGRITY
  SHA256SUMS.txt lists the SHA-256 of every file in this package. Verify with:
    sha256sum -c SHA256SUMS.txt
