PS pension: add case K (G1 55+ min(F1,F2) lowest-reduction rule, PSPC-verified) + report wording fixes

This commit is contained in:
krisf committed 2026-10-09 11:54:12 -04:00
1 parent 583b5ee2f8
commit becdf53f1a
2 files changed
+24 -7

No files matched your search

+8 -6
View File
@@ -58,8 +58,9 @@ Eligibility & early reduction (annual allowance), ages/service to 1/10 year,
reduction applies to the **whole** pension, permanent:
- **G1 (joined ≤ 2012-12-31):** unreduced at 60+ w/ ≥2 yrs, or 55–59 w/ ≥30.
S<25: F1 = 5%×(60−age). S≥25: F2 = max(5%×(55−age), 5%×(30−S)); at 60+ w/ S≥25,
min(F1,F2) applies; leaving <50 → F1 pinned at 50 → 50% cap (`note: f1Under50`).
S<25: F1 = 5%×(60−age). S≥25: F2 = max(5%×(55−age), 5%×(30−S)); at 55+ w/ S≥25,
min(F1,F2) applies (PSPC: "compare Formula 1 and 2 and apply the lowest reduction");
leaving <50 → F1 pinned at 50 → 50% cap (`note: f1Under50`).
- **G2 (joined ≥ 2013-01-01):** unreduced at 65+ w/ ≥2, or 60–64 w/ ≥30.
S<25: F1 = 5%×(65−age). S≥25: F2 = max(5%×(60−age), 5%×(30−S)); at 60+ w/ S≥25,
min(F1,F2). Leaving <55: modelled on the **PSPC-default path — deferred annuity,
@@ -67,7 +68,7 @@ reduction applies to the **whole** pension, permanent:
the 50%-at-55 annual-allowance alternative is surfaced as a note).
- <2 yrs service → return of contributions only (pension 0, note `lt2`).
IT salary picker (occupational group **IT**): 5 levels × 8 steps, real 2024-12-22
IT salary picker (occupational group **IT**): 5 levels × 8 steps (IT-05 has 9), real 2024-12-22
rates (IT-01 $69,361–89,382 … IT-05 $133,582–174,076), fully overridable — the
step selection pre-fills the salary field, which stays editable.
@@ -117,12 +118,13 @@ insight, disclaimer. FR uses official terms (RRFP/PSCC, **prestation de raccorde
| Suite | Result |
|---|---|
| `node tests/ps-pension.test.js` | **63 pass, 0 fail** |
| `node tests/ps-pension.test.js` | **70 pass, 0 fail** (63 + case K added post-deploy by Hermes: G1 55+ min(F1,F2)) |
| `node tests/engine.test.js` (regression) | **36 pass, 0 fail** |
| `node tests/i18n.test.js` | **I18N-OK (48)** |
| `node tests/ui.smoke.js` (EN+FR quiz→results, + PS module flows) | **SMOKE-OK (74)** |
Plan cases **A–J verified to the cent** (A/B/C/D/E/F/G/H/I/J per plan §tests), plus
Plan cases **A–K verified to the cent** (A–J per plan §tests; K added post-deploy by Hermes —
the G1 55+ "lowest of F1/F2" branch was untested), plus
engine integration: bridge present at 64 / absent at 65; deferred pension gated
(startAge 65 ⇒ no income/tax/clawback before 65); module-off legacy behaviour;
OAS clawback gating at 65+; pre-65 couple splitting lowers joint tax
@@ -176,7 +178,7 @@ OAS clawback gating at 65+; pre-65 couple splitting lowers joint tax
- [x] Results card with full breakdown + dated sources; insight; chart series
- [x] Pension flows through income/tax/PIA/GIS/splitting incl. pre-65 life-annuity splitting
- [x] Full EN + FR (parity 48/48, FR smoke green)
- [x] Tests: ps-pension 63/63 · engine 36/36 · i18n OK · smoke 74/74
- [x] Tests: ps-pension 70/70 · engine 36/36 · i18n OK · smoke 74/74
- [x] Audits EN+FR @320/360/390 + desktop + off-LAN (evidence in `audit/`)
- [x] Deployed (DEPLOY-OK) and reachable off-LAN (OFFLAN-OK)
- [x] This report + evidence committed & pushed