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
161 lines
4.4 KiB
TOML
161 lines
4.4 KiB
TOML
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"
|