From d6a7cb62d0b3a7bf04d2e77dcddcd707e20fa6a8 Mon Sep 17 00:00:00 2001 From: krisf Date: Fri, 9 Oct 2026 17:08:54 -0400 Subject: [PATCH] audit: math-fix fifth-pass re-verification (all gates fresh, OFFLAN-OK 21:08Z) --- MATH-FIX-REPORT.md | 20 ++++++++++++++++++++ audit/bilingual-geo-check.json | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/MATH-FIX-REPORT.md b/MATH-FIX-REPORT.md index 2c550b9..68ff284 100644 --- a/MATH-FIX-REPORT.md +++ b/MATH-FIX-REPORT.md @@ -178,3 +178,23 @@ Queue gate: tree clean at start (`git status --porcelain` empty), HEAD `9dcf575` | Off-LAN (Midhurst `trouble@100.96.20.61`) | `OFFLAN-OK`, `"all_ok": true`, `checked_at 2026-10-09T21:05:47Z` | No code change required — plan executed end-to-end; commit `0839826` at `origin/main`. Final: **MATH_FIX_DONE**. + +--- + +## Re-verification (fifth DSH pass, 2026-10-09 21:0x UTC, post-completion) + +Queue gate: `git status --porcelain` empty at start, HEAD `42da244` == `origin/main` (post-fetch), no job in flight → proceed (not `DSH_QUEUE_BUSY`). Fix 1–4 re-audited in HEAD (GIS `a >= 65 ? gis(…) : 0` at the three `solve()` sites + merge `if (yr < 65) gisSum = 0;` and per-partner ≥65 gates; clawback `oasGross > 0 ? Math.min(clawback(…), oasGross) : 0` ×3 + split-solver parity; `row.mixed` + `!row.mixed` depletion guard; `fillDefaults` clamp; sliders `min: 40` quiz + `#wi-ret min="40"`; `t.mixedNote` EN/FR + `#yr-mixed-note`). All acceptance checks re-executed fresh in this pass: + +| Check | Fresh output (this pass) | +|---|---| +| `tests/engine.test.js` | `RESULT: 61 pass, 0 fail` | +| `tests/i18n.test.js` | `I18N-OK all i18n checks passed (50)` | +| `tests/ui.smoke.js` | `SMOKE-OK all ui smoke checks passed (146)` | +| `tests/ps-pension.test.js` / `ps-auto-service.test.js` | `70 pass, 0 fail` / `21 pass, 0 fail` | +| `passes3.js` rerun (live engine) | exit 0, `conservation: OK` ×3 → `audit/math-fix/passes3-pass5.log`. PASS 1: 55–64 OASnet $0 / GIS $0 (plan evidence: −$3,501 @55, $12,916 @56), first GIS row 65 ($12,567, OASnet $9,150); PASS 3 FIRE: first draw 40 (Withdraw $62,837, CPP/OAS/GIS $0), GIS $13,667 from 65, hand-math $493,710 ✓ | +| `scripts/deploy.sh` | `DEPLOY-OK` | +| Origin byte-check (cache-busted sha256, live vs repo) | `BYTE-MATCH` 4/4: engine/engine.js `2101f46b28e1…`, app.js `092a35d711f0…`, i18n.js `cfc5ab0b41b2…`, index.html `28ab4f620ee8…` | +| Live recapture (`mathfix_capture.py after`) | couple 52/52 ret 55 spend 93k CPP 60 (40 draw rows): **0** negative-OAS cells, **0** GIS>0 rows <65, **0** OAS≠0 rows <65, first GIS row 65 ($12K); rows 58–64 Total $0 / OAS $0 / GIS $0, Unfunded $47K–$93K — no growing-Total-withdraw rows (honest post-depletion); `wiRetMin: "40"`; `noteShown: false` — correct, symmetric couple has no mixed rows (Deviation 2; †/legend proven by smoke fixture + engine §16). FIRE 30/BC/ret 40: `fire_first_draw_age: "40"`, row 40 Withdraw $63K / OAS $0 / GIS $0, GIS first at 65. Mobile 390: slider `min=40 value=40`, `sliderRight 367 < vw 390`, value chip [25, 145], FIRE hint present. PNGs valid: couple/fire 1280×900, mobile 1170×2532 | +| Off-LAN (Midhurst `trouble@100.96.20.61`) | `OFFLAN-OK`, `"all_ok": true`, `checked_at 2026-10-09T21:08:40Z` | + +No code change required — plan executed end-to-end; commit `0839826` at `origin/main`. Final: **MATH_FIX_DONE**. diff --git a/audit/bilingual-geo-check.json b/audit/bilingual-geo-check.json index 1a719b3..71f7f09 100644 --- a/audit/bilingual-geo-check.json +++ b/audit/bilingual-geo-check.json @@ -5,7 +5,7 @@ "has_i18n_script": true, "i18n_js_fr_strings": true, "i18n_js_size": 39689, - "checked_at": "2026-10-09T21:05:47Z", + "checked_at": "2026-10-09T21:08:40Z", "vantage": "trouble@100.96.20.61 (Midhurst, off-LAN)", "all_ok": true } \ No newline at end of file