diff --git a/PS-PENSION-REPORT.md b/PS-PENSION-REPORT.md index ea832b1..991ed53 100644 --- a/PS-PENSION-REPORT.md +++ b/PS-PENSION-REPORT.md @@ -178,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 70/70 · engine 36/36 · i18n OK · smoke 74/74 +- [x] Tests: ps-pension 70/70 · engine 36/36 · i18n OK · smoke 92/92 (74 at DSH handoff + 18 added by Hermes verification, see §11) - [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 @@ -190,3 +190,58 @@ OAS clawback gating at 65+; pre-65 couple splitting lowers joint tax - UI audit: `TMPDIR=$PWD/.tmp python3 audit/ps_audit.py` (expect `PS-AUDIT-OK`; screenshots land in `audit/ps-pension/`, gitignored) - Off-LAN: `python3 audit/ps_offlan.py` (expect `OFFLAN-OK`) + +## 11. Post-deploy independent verification (Hermes, 2026-10-09) — 4 real bugs found & fixed + +DSH's stage B was functionally complete (engine math, decision tree, IT table, bilingual +strings, module-off default all verified correct — see below), but independent verification +by Hermes (not trusting DSH's audit) caught **4 user-facing bugs**, all fixed, tested, deployed: + +**Verified correct (no change needed):** +- Engine math to the cent, 6 hand-checked cases incl. the subtlest branch — G1 age 55+ with + S≥25 applies PSPC's "compare Formula 1 and 2, apply the lowest reduction" (code correct in + `psEarlyReduction`; the §2 summary line was imprecise and is fixed). G2's comparison + threshold (60+) also correct per the live PSPC text. +- All 5 IT levels × all steps match the live TBS–PSAC agreement cell-for-cell + (IT-01 69,361…89,382 · IT-02 85,854…105,080 · IT-03 101,343…125,914 · IT-04 116,037…144,434 · + IT-05 133,582…174,076, 9 steps; Z row 2024-12-22). +- Module-off parity: default off, base flow = 15 steps, no PS card, legacy pension input intact. +- Stage-0 gate honest: no constants changed vs. the plan's fact base. + +**Bug 1 — stuck Next button on PS number steps (ed37f82).** `renderStep()` validated only at +render; typing into an initially-empty number input (PS join year / service / salary — the only +steps with no default) never re-enabled **Next**, so a real user enabling the module was STUCK +on "When did you join". Fix: `validate(s)` in the number-input `oninput` handlers. Regression +test added: full PS quiz click-through EN+FR (toggle→join→service→salary→occ→IT-03→step 3→ +results, asserts Next enables after typing). Smoke 74→88. + +**Bug 2 — PS card body blank (244f599).** The card's `