Files
wanderbooks/bookspec/spec/arap.md
T
swaitsandClaude Fable 5.1 1fbc1383cb feat(bookspec): the specification text and an example for the ledger's own laws (P13 step 4)
bookspec/spec holds the first edition: the model and the five laws
(00-model.md) and one file per area, each B-rule a section with its
status, a MUST/MAY statement, sources pinned either to a vendored source
with a verbatim quotation or to an exact external paragraph, its symbolic
form, its examples and its applicability. B-39, B-40, B-43 and B-45 are
reserved sections (allocated, not yet stated in rules.md); B-44 is stated
in rules.md and now carries its bookspec id and CONVENTION status.

Eight new examples show the laws that had none, each figure worked by
hand: an unbalanced entry is refused (Pacioli ch. 36, Pub. 583), a
negative or zero line is refused, a fraction of a cent is refused (ISO
4217), a child account takes its parent's type, the trial balance and the
accounting equation on one small book (cash 6550.25 = loan 2000 + capital
5000 + (sales 750.50 - rent 1200.25)), a reversal leaves the original
standing and a second reversal is refused, a close sweeps revenue and
expenses into Retained Earnings (3999) and the closed quarter takes no
late entry, and cents add exactly. The refusal vocabulary gains
unbalanced, negative_amount, zero_amount, too_few_lines,
finer_than_minor_unit, parent_type_mismatch, already_reversed and
period_closed; a refused entry may carry a non-positive amount.

The checker's spec.rs fails the build on a rule without its section, a
statement without MUST/SHOULD/MAY, a pin that is not verbatim in its
vendored source, examples that differ from the catalogue, or more than 60
pages.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HS8WZziDnyxunC23MUxrLp
2026-10-29 12:51:30 -06:00

5.0 KiB

Area: arap

Receivables and payables: documents, aging, terms, write-offs and settlements.

BS-arap-1: Aging buckets: Current, 1-30, 31-60, 61-90, 90+ days past due (B-18)

  • Status: CONVENTION (bucket edges); CHOICE (a document due today is Current; aging as of a day shows only documents issued by then, less payments made by then; a payment never predates its document)
  • Statement: An aging as of a day MUST place each open document in exactly one of the buckets Current (not yet past due, including due today), 1-30, 31-60, 61-90 and 90+ days past due, and the buckets MUST partition what the documents owe, exactly. A void document is in no bucket; a payment reversed by the day no longer counts.
  • Sources:
    • external: ASC 326-20-55-37 and 326-20-55-38, an illustrative aging of trade receivables
  • Symbolic form: d = as_of - due; bucket Current if d <= 0, 1-30 if 1 <= d <= 30, 31-60, 61-90, 90+ if d >= 91; sum_b owed(b) = sum of open balances.
  • Examples: none yet. The schema has no aging query; the example for it waits on one (a document-level query is owed by this edition's successor).
  • Applicability: accrual-basis entities with receivables or payables.

BS-arap-2: A document's figures are its ledger lines that stand; a control account is its documents (B-38)

  • Status: CHOICE (the owner, 2026-10-23); CONVENTION (a control account agrees with its subledger)
  • Statement: Every ledger line on a receivables or payables control account MUST carry the document it belongs to; a document's total, paid and owed MUST be derived from its tagged lines that stand (a reversed line no longer counts); a control account's balance MUST equal the sum of its documents'. A hand line on a control account MUST be refused.
  • Sources:
    • external: ASC 310-10 (receivables); ASC 405-20-40-1 (a liability is removed only when paid or released); ASC 606-10-45-4 (a receivable is a right to consideration that is unconditional)
  • Symbolic form: bal(1200) = sum_{doc} owed(doc) and owed(doc) = sum{signed tagged lines that stand}.
  • Examples: arap-hand-control-posting-refused
  • Applicability: engines with invoices and bills.

BS-arap-3: Terms: when a document is due (B-39)

  • Status: reserved
  • Statement: Reserved: allocated in the wanderbooks plan (8.0.3) for payment terms and due dates, not yet stated in docs/spec/rules.md.
  • Sources:
    • none yet
  • Symbolic form: none yet.
  • Examples: none yet
  • Applicability: none yet.

BS-arap-4: Numbers and the issued copy (B-40)

  • Status: reserved
  • Statement: Reserved: allocated in the wanderbooks plan (8.0.3) for document numbers and the issued copy, not yet stated in docs/spec/rules.md.
  • Sources:
    • none yet
  • Symbolic form: none yet.
  • Examples: none yet
  • Applicability: none yet.

BS-arap-5: A debt that will not be collected is written off, and a recovery is income (B-41)

  • Status: CHOICE (direct write-off, the owner, 2026-10-23); options: direct write-off, allowance method
  • Statement: On the direct method, an invoice that will not be collected MUST be written off by debiting bad debt expense and crediting receivables, the receivable line tagged with the invoice; a partial write-off is the amount charged off; a write-off MUST be refused on cash-basis books and for more than is owed; a later recovery is income.
  • Sources:
    • external: 26 U.S.C. section 166(a); Treas. Reg. sections 1.166-1(e), 1.166-2(a), 1.166-3(a); 26 U.S.C. section 111 (recovery); ASC 326-20 (the allowance method, not applied)
  • Symbolic form: Dr 6990 amount; Cr 1200 amount tagged with the invoice; 0 < amount <= owed.
  • Examples: bad-debt-direct-write-off
  • Applicability: accrual-basis taxpayers.

BS-arap-6: A settlement is exact, one party, and names its lines; the gross discount and the gross fee (B-42)

  • Status: CONVENTION; CHOICE (the gross method for an early-payment discount, the owner A-8; the processor's fee posted gross, A-4)
  • Statement: A settlement MUST apply to documents of one party and one kind, never the same document twice; sum of cash plus sum of discounts MUST equal what it applies to the documents, and the deposit MUST equal cash less fee, exactly; no application may exceed what its document owes on any day from the payment's date on; a discount MUST be at most the terms allow and be dated within the discount period, or carry a reason; a processor's fee posts gross (expense debited, deposit the net, receivables credited the gross).
  • Sources:
    • external: ASC 606-10-32-5 to 32-9 (the strict treatment of an expected discount, simplified here by the gross method)
  • Symbolic form: sum cash + sum discount = sum applied; deposit = sum cash - fee; owed_after >= 0 on every day.
  • Examples: none yet. The schema has no payment or settlement event (arap-settlement-exact and processor-fee-gross-presentation are the names the plan allocates; they wait on that event).
  • Applicability: engines with documents and settlements.