docs: the assumed list, checked against the standards; mutation score
check / check (push) Canceled after 0s
check / check (push) Canceled after 0s
Each formerly ASSUMED behavior is now CONFIRMED, CONVENTION, DESIGN, or CHANGE (pending), with its source (Reg. S-X, ASC 230 via Deloitte DART, IRS K-1 instructions, OpenStax). Two need engine work: members' equity should allocate cumulatively so each member's beginning equals the prior ending (#7), and the cash flow should show financing gross and classify investing by account role (#8). Two questions for the CPA are listed. The test doc comments that relied on them now cite the verdicts. Core mutation run: 1,011 caught + 13 timeouts of 1,024 viable, 0 missed. No benchmark budget, by decision. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GWVo7x3UHw5kwCUaWxiejX
This commit is contained in:
1 parent
0dcf865ff8
commit
08d1a9c230
6 files changed
+40
-35
No files matched your search
+30
-25
@@ -25,7 +25,7 @@ the store's journal safety; the other crates come next (gap list).
|
||||
| Miri | undefined behavior in our use of dependencies (4) | the core's unit, bridge, invariant tests | `just miri` | ~2 min | on demand |
|
||||
| Golden | `tests/golden/fixture_company.json` (5) | `invariants.rs` | `just check` | <1s | every change |
|
||||
| Benchmarks | a baseline (6) | `benches/books.rs` | `just bench` | ~1 min | none (no budget, by decision) |
|
||||
| Mutation | can the tests fail? | `ledger-core` | `just mutants` | ~12 min | weekly |
|
||||
| Mutation | can the tests fail? | `ledger-core` (2026-10-13: 1,011 caught + 13 timeouts of 1,024 viable, 0 missed) | `just mutants` | ~3 h | weekly |
|
||||
|
||||
CI: `.github/workflows/check.yml` runs `just check` on every push;
|
||||
`scheduled.yml` runs proofs, the oracle, fuzzing, and mutation weekly.
|
||||
@@ -56,32 +56,37 @@ laptop:
|
||||
| balance sheet | 47 µs | 1.04 ms |
|
||||
| one month's P&L | 25 µs | 248 µs |
|
||||
|
||||
## Assumed, not confirmed (reject any)
|
||||
## Formerly assumed: checked against the standards (2026-10-13)
|
||||
|
||||
Each was inferred, not decided by a human; the tests that rely on them
|
||||
say so in their doc comments.
|
||||
Stephen isn't an accountant and won't adjudicate these; each was checked
|
||||
against published sources instead (rank: FASB ASC via the Deloitte DART
|
||||
reproduction, SEC, IRS; then textbooks; software practice is evidence of
|
||||
convention only). Verdicts: CONFIRMED (a source supports it), CONVENTION
|
||||
(no standard governs; matches mainstream practice), DESIGN (not an
|
||||
accounting question), CHANGE (a source says otherwise; work pending).
|
||||
|
||||
- ASSUMED: a P&L for a period whose start is after its end is refused.
|
||||
- ASSUMED: a balance sheet omits accounts with a zero balance.
|
||||
- ASSUMED: the lifetime `profit_and_loss` counts closing entries
|
||||
(only period statements exclude them).
|
||||
- ASSUMED: closing a period with nothing to close still marks it closed.
|
||||
- ASSUMED: a sweep account (draws, distributions) is zeroed as of the
|
||||
period end, like income.
|
||||
- ASSUMED: reconciliation balances are debits minus credits (tested on
|
||||
cash; liability accounts unspecified).
|
||||
- ASSUMED: a members' equity statement allocates prior unclosed earnings
|
||||
and the period's income separately; one statement's ending for a member
|
||||
may differ by a cent from the next statement's beginning (only totals
|
||||
are guaranteed to chain).
|
||||
- ASSUMED: cash flow lists one working-capital or financing line per
|
||||
account that changed; with no registered assets, investing is zero.
|
||||
- ASSUMED: an asset's life ends on purchase date + life months, that day
|
||||
not held.
|
||||
- ASSUMED: a payroll entry has one line per account total, not per
|
||||
employee.
|
||||
- ASSUMED: a period with exactly the dates of an existing one nests in it
|
||||
(is allowed).
|
||||
| # | Behavior | Verdict | Source / note |
|
||||
|---|---|---|---|
|
||||
| 1 | A P&L whose start is after its end is refused | DESIGN | No standard governs a reversed range; refusing beats silently swapping a typo |
|
||||
| 2 | A balance sheet omits zero-balance accounts | CONFIRMED | Reg. S-X 210.4-03(a): "No caption should be shown ... as to which the items and conditions are not present." A comparative statement must still show a zero beside a non-zero prior column |
|
||||
| 3 | The lifetime `profit_and_loss` counts closing entries | CONFIRMED | Used as earnings not yet closed on the balance sheet; closed income is already in capital (OpenStax Principles of Financial Accounting 5.1). Its name misleads: rename to unclosed earnings (pending) |
|
||||
| 4 | Closing a period with nothing to close still locks it | CONVENTION | A close is a lock (B-12); a dormant month must still lock and count for close-in-order |
|
||||
| 5 | Draws and distributions are closed into capital at period end | CONFIRMED | OpenStax 5.1: dividends "are closed to the permanent account"; drawing accounts close to owner's capital. Monthly closes mean the year's K-1 Item L withdrawals sum across months |
|
||||
| 6 | Reconciliation balances | CONFIRMED | Signed by the account's normal side (a card reads as owed), as statements show it; `reconciling_a_card_reads_its_normal_side_...` |
|
||||
| 7 | A member's ending on one equity statement may differ by a cent from the next statement's beginning | CHANGE (pending) | A capital account is one running balance (Form 1065 K-1 instructions, Item L: beginning and ending capital "based on the partnership's books and records"). Allocate cumulatively so beginning equals the prior ending per member. CPA question below |
|
||||
| 8 | Cash flow nets one line per account; investing comes only from registered assets | CHANGE (pending) | ASC 230-10-45-7: gross receipts and payments "more relevant" than net; 45-8 limits netting to quick-turnover items. Financing: contributions apart from distributions, borrowings apart from repayments. ASC 230-10-20/45-13: loans made and investments bought are investing, so classify by account role |
|
||||
| 9 | An asset's life ends at purchase + life months, that day not held; day-count proration | CONVENTION | Exactly N months of service; day proration and the mid-month convention are both accepted book policies (ASC 360-10-35-4 not read: login) |
|
||||
| 10 | A payroll entry has one line per account total | CONFIRMED | The per-employee detail the IRS requires ("Amounts and dates of all wage ... payments", Employment Tax Recordkeeping) is kept in the run; a summary entry is standard |
|
||||
| 11 | A period with exactly the dates of an existing one is allowed | DESIGN | Nothing governs duplicate periods; harmless (the second close locks only). Refusing exact duplicates is an option |
|
||||
|
||||
Questions for Krista Baker (CPA):
|
||||
|
||||
1. Interim members' equity: is a per-member allocation of unclosed
|
||||
earnings acceptable on interim statements, or should the books close
|
||||
monthly so the capital accounts carry it?
|
||||
2. How should 2100 Due to Shareholders, and expenses the owners paid
|
||||
personally, appear on the cash flow statement: operating, financing,
|
||||
or as a non-cash disclosure (ASC 230-10-50-3, not yet read)?
|
||||
|
||||
## Gap list: what isn't covered, and what would bring it in
|
||||
|
||||
|
||||
Reference in new issue
Block a user