Files
wanderbooks/bookspec/examples/members-close.true-up-of-a-per-close-split.toml
T
swaitsandClaude Opus 5.5 0495726001
check / check (push) Canceled after 0s
P3 review: the surface, docs and proofs
Split kernel::entry_flows into entry_movements and flows_of so the
reversal-mirror proof fits CI; prove runs the fast harnesses, prove-slow
the 8 slow ones (own job in scheduled CI), prove-all both. Laws in
verification.md renumbered 1-31 with a table of all 55 harnesses.

MCP docs checked against the 115 tools (about 60 fixes) with a test that
every tool is documented; rules.md cross-references fixed; bookspec
statuses and loader tightened; viewer notes wrap and accounts sort by
code; STATUS.md says P3 is built, cutover pending.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T3gXMVt7XJPi6ens1or9Dj
2026-10-22 02:13:08 -06:00

161 lines
4.4 KiB
TOML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
id = "members-close.true-up-of-a-per-close-split"
title = "Closes rounded one at a time, trued up by the first cumulative close"
rule = "When earlier closes split each close's net on its own, the first cumulative close that posts an entry MUST give each member their split of everything closed to the members, less what the earlier closes gave them, so it trues up the rounding they left; until it posts, the statement of members' equity MUST show the capital those closes posted, not the pending true-up."
status = "CHOICE"
sources = [
"Treas. Reg. §1.704-1(b)(2)(iv)(b)",
"DECISION D-10 (owner, 2026-10-16): members closes counted from the first close, so a later close carries any earlier rounding as a true-up (wanderbooks rules.md B-13)",
]
tags = ["partnership", "close", "rounding", "statement", "book", "us"]
# Books migrated from an engine that rounded each close on its own: three
# months of one cent at 50/50, each tie to A. April's cent is closed by the
# cumulative rule, counting from the first close.
#
# By hand, from the rule:
# January to March, each close on its own: 0.005 each, the tie to A, so
# A 0.03, B 0.00 (exact: 0.015 each).
# As of Apr 30, April's cent not yet closed: the split of everything,
# 0.04, is 0.02 / 0.02; of the closed 0.03, 0.02 / 0.01 (the tie to
# A); the unclosed cent is B's (0.02 − 0.01): A 0.03, B 0.01. The
# rounding the earlier closes left (A 0.01 ahead) shows only once
# posted.
# April's close: the running 0.04 is 0.02 / 0.02, less what was given
# (0.03 / 0.00): A −0.01, B +0.02. The entry: Dr 4000 0.01, Dr 3000
# 0.01, Cr 3001 0.02. As of Apr 30: A 0.02, B 0.02, each exact; as of
# Mar 31, still A 0.03, B 0.00.
[setup]
currency = "USD"
fiscal_year_start = "01-01"
basis = "accrual"
rounding = "largest-remainder"
[[setup.accounts]]
code = "1000"
name = "Cash"
type = "asset"
[[setup.accounts]]
code = "3000"
name = "Capital, A"
type = "equity"
[[setup.accounts]]
code = "3001"
name = "Capital, B"
type = "equity"
[[setup.accounts]]
code = "4000"
name = "Sales"
type = "revenue"
[[setup.members]]
name = "A"
capital_account = "3000"
share = "0.5"
[[setup.members]]
name = "B"
capital_account = "3001"
share = "0.5"
[[events]] # event 1
date = "2026-01-10"
description = "January's sale"
lines = [
{ account = "1000", side = "debit", amount = "0.01" },
{ account = "4000", side = "credit", amount = "0.01" },
]
[[events]] # event 2
date = "2026-01-31"
description = "Close January, rounded on its own"
close = { start = "2026-01-01", to = "members", rounding = "per-close" }
[[events]] # event 3
date = "2026-02-10"
description = "February's sale"
lines = [
{ account = "1000", side = "debit", amount = "0.01" },
{ account = "4000", side = "credit", amount = "0.01" },
]
[[events]] # event 4
date = "2026-02-28"
description = "Close February, rounded on its own"
close = { start = "2026-02-01", to = "members", rounding = "per-close" }
[[events]] # event 5
date = "2026-03-10"
description = "March's sale"
lines = [
{ account = "1000", side = "debit", amount = "0.01" },
{ account = "4000", side = "credit", amount = "0.01" },
]
[[events]] # event 6
date = "2026-03-31"
description = "Close March, rounded on its own"
close = { start = "2026-03-01", to = "members", rounding = "per-close" }
[[events]] # event 7
date = "2026-04-10"
description = "April's sale"
lines = [
{ account = "1000", side = "debit", amount = "0.01" },
{ account = "4000", side = "credit", amount = "0.01" },
]
[[events]] # event 8
date = "2026-04-30"
description = "Close April, cumulatively"
close = { start = "2026-04-01", to = "members" }
[[expect]]
query = "balances"
as_of = "2026-03-31"
after = 6
[expect.values]
"3000" = "0.03"
"3001" = "0.00"
[[expect]]
query = "members_equity"
from = "2026-01-01"
to = "2026-04-30"
after = 7
[expect.values]
"A.ending" = "0.03"
"B.ending" = "0.01"
[[expect]]
query = "entry"
entry = 8
[expect.values]
"4000.debit" = "0.01"
"3000.debit" = "0.01"
"3001.credit" = "0.02"
[[expect]]
query = "members_equity"
from = "2026-01-01"
to = "2026-04-30"
[expect.values]
"A.ending" = "0.02"
"B.ending" = "0.02"
[[expect]]
query = "members_equity"
from = "2026-01-01"
to = "2026-03-31"
[expect.values]
"A.ending" = "0.03"
"B.ending" = "0.00"