Page actions
instrument mechanism / verified-with-binding-errata
Savings Goal Planner mechanism
The inspectable method record for Savings Goal Planner, kept separate from implementation and qualification.
Model scope
Under the explicit assumptions listed, the core end-of-month annuity-FV calculation is standard and the numerical test vectors are consistent. The instrument remains NEEDS_REVIEW because the deposit timing, rate convention, date-to-period conversion, timeline-chart calculation, and negative-contribution behavior are not specified.
- The PMT formula is only identified generically as solving an annuity future-value formula; the specification does not state whether deposits occur at the beginning or end of each month. The vectors below assume end-of-month deposits.
- The specification does not define how a target date is converted into the number of monthly periods, including partial months, date-of-month handling, leap years, or whether the current month counts.
- The projected timeline chart has no defined calculation, data structure, or formula, so that output cannot be independently verified.
- A negative computed contribution is possible when current savings are already sufficient; the specification does not say whether to display the negative amount, clamp it to zero, or label the goal as already reached.
Units and conventions
- Goal amount and current savings use the same currency and are nominal amounts.
- Rate is an annual nominal rate compounded monthly; monthly rate r = annual_rate / 12.
- The target date is converted to an integer number n of monthly deposit periods.
- Deposits occur at the end of each month, with no fees, taxes, inflation, withdrawals, or contribution limits.
- For annual rate a, current savings compound as current_savings × (1 + a/12)^n.
- For a nonzero monthly rate r, required deposit PMT = (goal_amount - current_savings × (1+r)^n) × r / ((1+r)^n - 1). At r = 0, PMT = (goal_amount - current_savings) / n.
Inspectable vector
One of 4 source-bound review vectors:
{
"inputs": {
"goal_amount": 12000,
"current_savings": 2000,
"annual_rate": 0.06,
"months_to_target": 12
},
"expected_outputs": {
"required_monthly_deposit": 800.6643
},
"working": "r = 0.06 / 12 = 0.005. Growth factor = (1.005)^12 = 1.0616778119. Future value of current savings = 2000 × 1.0616778119 = 2123.3556238. Remaining future value needed = 12000 - 2123.3556238 = 9876.6443762. Annuity factor = ((1.005)^12 - 1) / 0.005 = 0.0616778119 / 0.005 = 12.33556238. Required deposit = 9876.6443762 / 12.33556238 = 800.6643 per month."
}Failure boundary
BREAK_CLAIMED · SELF_FLAGGED
A zero-month target produces a zero denominator and an undefined deposit, so the instrument must reject it. The displayed annual rate convention is also underspecified: nominal-rate and effective-rate interpretations produce different valid outputs.
Other records
Sources and evidence
These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.
VERIFIED_LEDGER.jsonevidence-tranche4/tranche4-results.jsonBOUNDARY_HAZARD_CATALOG.json