docs: record loan decisions — separate ledger, 50/50 fixed, $4,000 receivable
ci / lint-test (push) Successful in 35s

The loan is a separate ledger, not a settlement context: a contribution must
never be able to settle a dinner.

The share is fixed at 50%, not derived from actual payments. During Sonu's leave
the obligation did not change, only the payment did - a percentage-of-actual
model would silently redefine her share as 30% and make the shortfall vanish. So
the model needs an expected schedule alongside actual contributions, with the
difference as a tracked receivable. Currently $4,000.00 over Jul 2025 - Jun 2026.

On interest: recorded the mechanics (it is debited to the loan and repaid as part
of the balance - the reconciliation is exact) alongside the counter-argument that
$16,523.64 left and bought nothing, which is what an expense is. Recommends
keeping it as spend with a fixed/discretionary grouping to address the real
concern, but flags it as a judgement call rather than settling it.
This commit is contained in:
2026-07-26 16:03:53 +10:00
parent 4b7a7e5d9c
commit ba87ff86e7
+71 -18
View File
@@ -125,16 +125,20 @@ attribution layer over a real transaction rather than a parallel record of it:
- A payment with no matching transaction (cash, or an account not imported) - A payment with no matching transaction (cash, or an account not imported)
stays as a manual row — the model must tolerate that stays as a manual row — the model must tolerate that
### 3. The shared loan ### 3. The shared loan — a separate ledger
The loan needs a co-ownership share separate from expense splitting, because it Not a settlement context. The loan is a jointly funded asset with its own
is not a periodic shared expense — it is a jointly funded asset. obligation, and mixing it with expense settlement would let a contribution
accidentally settle a dinner.
- `emi` credits are recognised as **contributions**, not generic transfers - `emi` credits are recognised as **contributions**, not generic transfers
- Contribution share drives how `loan_interest` is attributed to spend - A **contribution schedule** states what is owed per period (50% of the
- Equity (principal) accrues per participant repayment), independent of what was actually paid
- The running difference is a **receivable** — currently $4,000.00
**This is the piece I am least sure about** — see open questions. The schedule matters: during Sonu's leave the obligation did not change, only the
payment did. A percentage-of-actual model would silently redefine her share as
30% and make the shortfall disappear.
--- ---
@@ -153,20 +157,69 @@ is not a periodic shared expense — it is a jointly funded asset.
--- ---
## Decisions taken (2026-07-26)
### The loan is separate from shared expenses
Different obligations, different rhythms, different nature: one funds an asset,
the other funds consumption. They do not share a settlement context and a
contribution is never a settlement.
### The share is 50/50, fixed — with the shortfall tracked
Not derived from actual payments, which fluctuate. Sonu's obligation is half the
repayment; the difference between obligation and actual is a **receivable**, and
it is the interesting number.
Over 2025-07-01 → 2026-06-30:
| | |
|---|---:|
| Repayments | $63,500.00 |
| Sonu's 50% obligation | $31,750.00 |
| Actually contributed (26 payments) | $27,750.00 |
| **Shortfall** | **$4,000.00** |
She never missed a fortnight; the rate changed:
| Rate | Payments | Period |
|---|---:|---|
| $1,250 | 15 | Aug 2025 Feb 2026 (the correct 50%) |
| $1,000 | 3 | Jul 2025 (pre-adjustment) |
| $750 | 8 | Mar Jun 2026 (leave) |
So the model needs a **contribution schedule** (expected per period) alongside
actual contributions, with the running difference as a tracked balance. A flat
percentage cannot express "obligation unchanged, payment temporarily reduced,
difference owed".
### Interest: recommended as expense, pending final call
The mechanics are as described — interest is debited to the loan and repayments
pay down the combined balance. Reconciles exactly:
134: 31,000.00 8,553.27 = 22,446.73 = balance reduction
133: 32,500.00 7,970.37 2,849.00 = 21,680.63 = balance reduction
But mechanics are not the same as economics. Over 12 months $63,500 of cash left
and debt fell by $44,127.36. The $16,523.64 difference bought nothing and is not
recoverable — that is an expense by definition. Excluding it leaves the balance
sheet unable to reconcile cash out against equity gained, and understates annual
cost by ~10%.
The legitimate concern is that interest is **non-discretionary**. The answer to
that is a fixed-commitments grouping alongside rent, insurance and utilities —
a presentation change, not an exclusion.
**Recommendation: keep `loan_interest` as spend, add a fixed/discretionary
split.** Flagged rather than settled: it is a judgement about what "spend" means
in your own reporting.
## Open questions ## Open questions
1. **Should loan interest be split?** If Sonu funds 31% of repayments, is 31% of 1. **Does equity need tracking per person?** If Sonu accrues a share of the
the $16,523.64 interest her expense — or is the loan simply yours with her principal, that is a balance-sheet item the app has no concept of. Probably
contributing, and the interest all yours? This is a decision about the belongs in the net-worth view rather than here.
arrangement, not a technical one.
2. **Does equity need tracking per person?** If Sonu accrues a share of the
principal, that is a balance-sheet item the app has no concept of. It may
belong in the future net-worth view rather than here.
3. **Is the contribution share fixed or derived?** Derived from actual `emi`
payments it fluctuates every fortnight. Fixed, it needs stating and
maintaining. Derived is more honest; fixed is more stable for analytics.
4. **Attribution of forwarded payments.** `mummy` in the description reliably 4. **Attribution of forwarded payments.** `mummy` in the description reliably
marks Molina's money in all six known cases, but it is a description match on marks Molina's money in all six known cases, but it is a description match on