audit: math-fix pass 46 re-verification (all gates fresh, OFFLAN-OK 23:50Z, deploy + 34/34 sweep, passes3 byte-identical to passes 14-45, all five row JSONs byte-identical, legs42 diff-identical, 3x MIXEDLIVE-OK, FIRE draw-at-40 live, all frames in documented lineage w/ y234-899 band-limited diffs)
This commit is contained in:
1 parent
708dd3b2cf
commit
950a708813
2 files changed
+22
-1
No files matched your search
@@ -1226,3 +1226,24 @@ Harness note: as in passes 39–44, the sandboxed shell routes `TMPDIR` to a rea
|
||||
**No code change required** — engine/renderer/i18n/tests byte-stable vs pass 44, deployed build verified identical 34/34. All plan acceptance criteria (1–6) re-verified against the deployed build. Final: **MATH_FIX_DONE**.
|
||||
|
||||
Addendum (post-push, same pass): audit commit `37059a3a67fe259b24d6da4cc80141931a18574f` pushed `36ef257..37059a3` → `origin/main` (report + fresh off-LAN stamp `2026-10-09T23:47:04Z`; code untouched — the plan's mandated fix commit `08398267040a832bdec0910626423f0dbfeb0a7f` remains the code change under test, confirmed ancestor of `HEAD`). Post-push `git fetch` + full byte sweep re-run vs the new `origin/main`: `git diff 36ef257..37059a3 -- site` = **0 lines** (zero site delta, so the sweep carries over by construction), origin blob == local == webroot md5, tracked **21/21 (3-way)** + gitignored `site/vision/*.jpeg` **13/13 (2-way)** = **34/34 match, 0 mismatch** → `SWEEP-OK`; `HEAD` == `origin/main` == `37059a3`.
|
||||
|
||||
---
|
||||
|
||||
## Addendum — Pass 46 (re-verification of `0839826` on `54b8c4b`, all gates fresh)
|
||||
|
||||
Start gate: `git status --porcelain` empty at HEAD `54b8c4b` → proceeded (not DSH_QUEUE_BUSY). All plan fixes re-confirmed in source at HEAD: GIS 65+ floor at every `gis()` call site + `if (yr < 65) gisSum = 0` in the couple merge, Service Canada comment present (engine.js 249/260/265/382); clawback gated `oasGross > 0` + capped at OAS paid (248/259, comment 82); `row.mixed` (390) + depletion guard excludes mixed windows (395); `fillDefaults` clamp `retireAge >= age+1` (188); quiz slider `min: 40` (app.js 211) + `#wi-ret min="40"` (index.html 86); renderer `†` suffix + `#yr-mixed-note` legend (app.js 812/818) with EN/FR `t.mixedNote` (i18n 251/512); plan tests 1–4 present (engine.test.js 125/126/137/193/203).
|
||||
|
||||
| Gate | Result (this pass) |
|
||||
|---|---|
|
||||
| Unit suites | engine **61/61**, i18n **50/50** (`I18N-OK`), ps-pension **70/70**, ps-auto-service **21/21**, UI smoke **146/146** (`SMOKE-OK`) — all fresh, 0 fail |
|
||||
| Hermes 3 passes (`passes3.js`, live engine) | `audit/math-fix/passes3-pass46.txt` md5 `01075d0e…` — **`diff`-identical to the pass-14→45 log (33 consecutive)**; PASS 1 (screenshot repro): age 55 OASnet **$0** (was −$3,501), GIS **$0 at 56** (was $12,916), first GIS 65, **conservation OK** on all 3 passes |
|
||||
| Deploy | `scripts/deploy.sh` → **DEPLOY-OK** (retireapp live) |
|
||||
| Byte sweep (post-deploy) | tracked 3-way **21/21** + vision 2-way **13/13** = **34/34 match, 0 mismatch** → `SWEEP-OK` |
|
||||
| Off-LAN (Midhurst `trouble@100.96.20.61`) | `OFFLAN-OK`, `"all_ok": true`, `"http_code": "200"`, `checked_at 2026-10-09T23:50:03Z` → `audit/bilingual-geo-check.json` |
|
||||
| Live rows (canonical) | `rowsweep41.py`: couple rows=40 firstDraw=55 firstGIS=65 negOAS=[] GIS<65=[] OAS<65=[] growWW=[]; FIRE rows=57 firstDraw=**40** firstGIS=65 all invariant arrays empty → `ROWSWEEP-OK`. Screenshot-scenario rows 58–64: OASnet **$0** every row (no negatives), GIS **$0** (<65), **no growing-Total-with-Withdraw rows**; depletion 56 + unfunded 58+ (93k spend > capacity — conservation-verified), matching passes3 |
|
||||
| MIXEDLIVE probes (live site) | 52/50 → dagger rows `[]`, legend hidden, firstDraw 53 (clamp); 50/54 → dagger `[54]`, EN legend shown verbatim; 52/56 (clamp-driven) → dagger `[56]`, legend shown; `gisRowsUnder65`/`negOASrows`/`growRowsMissingDagger` **[] everywhere** → 3× `MIXEDLIVE-OK`; engine-side `legs42.js` → `LEGS-OK`, log `diff`-identical to pass 45 |
|
||||
| FIRE acceptance | live table first draw **age 40**; `#wi-ret` min **40** max 72; 390px: slider value “40 years”, slider right edge 367 < vw 390 (**no clip**), FIRE hint EN present (“Early retirement (FIRE) supported — plan must self-fund the CPP/OAS gap years.”) |
|
||||
|
||||
Determinism: all five row JSONs byte-identical to pass 45 and the canonical lineage — `after46-couple-rows.json` `129e2a45…` (== `after-couple-rows.json`, passes 14–45), `after46-fire-rows.json` `4af12e59…` (passes 15–45), `after46-mixed-rows.json` `96665bbf…`, `after46-mixed-reachable-rows.json` `98c29f24…`, `after46-mixed5256-rows.json` `53d0dec5…` (passes 15/26/33–45). Frames: `after46-mixed-table.png` `222c81a1…` and `after46-mixed-reachable-table.png` `87594d5a…` **byte-identical to pass 45**; `after46-fire-step-390.png` `761e8055…` **byte-identical to pass 45** (== passes 26–44 canonical pair); canonical couple `cbac51ed…` = documented pass-44 frame (PIL bbox vs pass-45 `eec99021…` confined to **y=234–899**, the G1 animation band; row JSON byte-identical); fire `b4ed3a16…` = documented historical frame (16 prior occurrences; PIL bbox vs pass-45 `685fd711…` band-limited y=234–899); mixed5256 `6d792f12…` = documented pass-44 frame (PIL bbox vs pass-45 `36b82193…` confined to y=234–899, DOM row JSON byte-identical). Harness: Playwright ran with `TMPDIR=.tmp/pw46` (sandbox TMPDIR read-only, as passes 39–45); probe scripts `cp`-copied byte-identically (md5-proven) into `.tmp/mathfix46/` and run with argv `after46`.
|
||||
|
||||
**No code change required** — engine/renderer/i18n/tests byte-stable vs pass 45, deployed build verified identical 34/34. All plan acceptance criteria (1–6) re-verified against the deployed build. Final: **MATH_FIX_DONE**.
|
||||
@@ -5,7 +5,7 @@
|
||||
"has_i18n_script": true,
|
||||
"i18n_js_fr_strings": true,
|
||||
"i18n_js_size": 39689,
|
||||
"checked_at": "2026-10-09T23:47:04Z",
|
||||
"checked_at": "2026-10-09T23:50:03Z",
|
||||
"vantage": "trouble@100.96.20.61 (Midhurst, off-LAN)",
|
||||
"all_ok": true
|
||||
}
|
||||
Reference in new issue
Block a user