docs(recurring): record the invariants and what they cost
Two rules that only review catches, so they go in AGENTS.md §1: occurrences are computed and never stored, and a confirmation's date and its slot are different facts. Collapsing the second pair into one field would silently delete the phone-bill behaviour, which is why it is written down rather than left to the types. §2 gets the termination guard. n >= 1 is rejected at both write boundaries rather than clamped, and the walk throws rather than breaking, because a bill silently dropped from a budget is worse than a visible error. Demo data seeds a monthly rent and a 28-day subscription — the second is what puts two occurrences in one month, which is the case worth looking at. It also seeds a biweekly cost and a lastCharge-anchored one, so every recurrence kind and both anchorings show up in Settings and the month view. DECISIONS.md, PRODUCT.md, ARCHITECTURE.md and TODO.md are updated to match: schema is at 7, the month view carries a second Projected balance beside Remaining, and TODO.md records what a week of real use — not a test — will have to answer.
This commit is contained in:
1 parent
824e94a9bd
commit
0d2aa519b7
6 files changed
+149
-7
No files matched your search
+9
-1
@@ -67,10 +67,18 @@ Confirmed and in place:
|
||||
browser.
|
||||
- Offline-capable installable PWA. Currently deploys as one static artifact to
|
||||
both GitHub Pages (under a subpath) and a self-hosted Docker image.
|
||||
- Recurring costs — a bill that repeats monthly, every N days, or every N
|
||||
weeks on a weekday, split across posts like any purchase. Each due date is a
|
||||
projected occurrence the owner confirms into a real purchase; the month view
|
||||
shows what is still expected alongside a second, projected balance per post,
|
||||
so a known bill is visible before it is paid without touching the reconciled
|
||||
figure a bank statement is checked against.
|
||||
|
||||
Terminology: an envelope is called a **post**. A **finance plan** is a purchase
|
||||
spread across months. An **override** is a one-month exception to a post's
|
||||
allocation.
|
||||
allocation. A **recurring cost** is a bill expected to repeat; each due date it
|
||||
projects is an **occurrence**; **confirming** an occurrence turns it into a
|
||||
real purchase.
|
||||
|
||||
Undecided: nothing outstanding at the product level.
|
||||
|
||||
|
||||
Reference in new issue
Block a user