From db6b7f8375e02672c4496d01b2b9f8bf17bca32f Mon Sep 17 00:00:00 2001 From: siddharthd Date: Tue, 28 Jul 2026 13:54:46 +1000 Subject: [PATCH] docs(shared): the cutover date is the gate, the flag refines it --- docs/shared-expenses-design.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/docs/shared-expenses-design.md b/docs/shared-expenses-design.md index 9dd9ad9..d4af7eb 100644 --- a/docs/shared-expenses-design.md +++ b/docs/shared-expenses-design.md @@ -13,7 +13,15 @@ recorded under [What was rejected](#what-was-rejected). ## The one rule **Spend and owed are different questions asked of the same table, and the line -between them is `transaction_splits.settled`.** +between them is the cutover date, refined by `transaction_splits.settled`.** + +`ACTIVE_OBLIGATION` is `ts.settled = false AND t.transaction_date >= +'2026-01-09'`. Nothing before the cutover can be owed, because carryover +transaction 2348 already carries the entire pre-cutover balance as one figure — +so a split on an older transaction describes only *how an expense was shared*. +That is what makes splitting history safe, and it is why the flag is a +refinement rather than the guard: any delete-and-recreate write path resets a +boolean, and one did. | | Counts settled splits? | Why | |---|---|---|