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
118 lines
2.7 KiB
TOML
118 lines
2.7 KiB
TOML
id = "depreciation-reversal-before-its-run-is-refused"
|
|
title = "A depreciation run can't be reversed on a day before its own"
|
|
rule = "A correction comes after what it corrects: a depreciation run, or a reversal of one, can't be reversed on a day before its own. A run of March reversed on Jan 31 would leave January and February with negative depreciation."
|
|
status = "CONVENTION"
|
|
sources = [
|
|
"Pacioli 1494, ch. 31",
|
|
"wanderbooks docs/spec/rules.md B-15 rule 6, B-9: a correction comes after what it corrects (CONVENTION)",
|
|
]
|
|
tags = ["depreciation", "reversal", "refusal", "p3-defect-22"]
|
|
|
|
[setup]
|
|
currency = "USD"
|
|
fiscal_year_start = "01-01"
|
|
basis = "accrual"
|
|
rounding = "half-away-from-zero"
|
|
|
|
[[setup.accounts]]
|
|
code = "1000"
|
|
name = "Bank"
|
|
type = "asset"
|
|
|
|
[[setup.accounts]]
|
|
code = "1500"
|
|
name = "Equipment"
|
|
type = "asset"
|
|
|
|
[[setup.accounts]]
|
|
code = "1510"
|
|
name = "Accumulated Depreciation"
|
|
type = "asset"
|
|
|
|
[[setup.accounts]]
|
|
code = "3000"
|
|
name = "Capital"
|
|
type = "equity"
|
|
|
|
[[setup.accounts]]
|
|
code = "6200"
|
|
name = "Depreciation Expense"
|
|
type = "expense"
|
|
|
|
[[setup.accounts]]
|
|
code = "7100"
|
|
name = "Gain or Loss on Disposal"
|
|
type = "revenue"
|
|
|
|
# Asset X: 12,000.00, no salvage, 12 months from 2026-01-01 (1,000.00 a
|
|
# month; December the final month).
|
|
[[setup.assets]]
|
|
id = "X"
|
|
description = "Asset X"
|
|
cost = "12000.00"
|
|
salvage = "0.00"
|
|
life_months = 12
|
|
in_service = "2026-01-01"
|
|
method = "straight_line"
|
|
cost_account = "1500"
|
|
accumulated_account = "1510"
|
|
expense_account = "6200"
|
|
|
|
[[events]]
|
|
date = "2026-01-01"
|
|
description = "Capital"
|
|
lines = [
|
|
{ account = "1000", side = "debit", amount = "12000.00" },
|
|
{ account = "3000", side = "credit", amount = "12000.00" },
|
|
]
|
|
|
|
[[events]]
|
|
date = "2026-01-01"
|
|
description = "Bought asset X"
|
|
lines = [
|
|
{ account = "1500", side = "debit", amount = "12000.00" },
|
|
{ account = "1000", side = "credit", amount = "12000.00" },
|
|
]
|
|
|
|
[[events]]
|
|
run_depreciation = { asset = "X", period = "2026-01" }
|
|
|
|
[[events]]
|
|
run_depreciation = { asset = "X", period = "2026-02" }
|
|
|
|
[[events]]
|
|
run_depreciation = { asset = "X", period = "2026-03" }
|
|
|
|
# March's run (dated Mar 31) reversed on Feb 10: refused, naming its date.
|
|
[[events]]
|
|
date = "2026-02-10"
|
|
description = "Reverse event 5"
|
|
reverses = 5
|
|
refused = "entry_irreversible"
|
|
|
|
# On its own day it is taken.
|
|
[[events]]
|
|
date = "2026-03-31"
|
|
description = "Reverse event 5"
|
|
reverses = 5
|
|
|
|
# Hand check (worked without the code): January and February carry
|
|
# 2,000.00 at February's end, never 1,000.00 (with March's 1,000.00 taken
|
|
# away on Feb 10); March's end carries 2,000.00 (its run and its reversal
|
|
# both dated Mar 31).
|
|
[[expect]]
|
|
query = "balances"
|
|
as_of = "2026-02-28"
|
|
|
|
[expect.values]
|
|
"1510" = "-2000.00"
|
|
"6200" = "2000.00"
|
|
|
|
[[expect]]
|
|
query = "balances"
|
|
as_of = "2026-03-31"
|
|
|
|
[expect.values]
|
|
"1510" = "-2000.00"
|
|
"6200" = "2000.00"
|