audit 4: log paging at its edges, NaN refused, a red rate limit, recalculation asks, reload writes all
test / test (push) Canceled after 0s

Step 4 of stage 4 (L10, L11, L13, L18, L19 and a row of
review-2026-08-followups):

- The Outbound log counts first and clamps the page to the last; a number
  too large for an int (strconv's ErrRange with the largest int) is the
  last page on both logs. Tested at the edges: first, last, past the last
  however far, nonsense, an empty log asked for page 5.
- checkAutoMultiplier is "not within", so NaN and the infinities are out.
- rate-limited is red (components.go; the mockup first, 643892a).
- data-unsaved on both recalculate buttons: panel.js asks on submit
  (ev.submitter) when a field of the page differs from what it was drawn
  with; testdata/unsaved_test.js under TestPanelJS.
- HandleReload writes what a restore's first start writes - the filter
  lists and the DMARC maps too - and a failed step is an error flash on
  Health that names it, not plain text; the success flash says what was
  written.

Tested on the test server: go vet + go test of 25 packages, make e2e (all
pass, 695 s) on this tree.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
mix
2026-10-15 11:20:18 +03:00
co-authored by Claude Opus 5.5
parent 643892ab91
commit ca876c1631
23 changed files with 355 additions and 48 deletions
+14 -2
View File
@@ -1217,14 +1217,26 @@ command whose leftover is the owner's alone.
`handleAjaxResponse()` follows before it looks at the status. No jsdom
(no node tooling in the repo): `testdata/poll_test.js` runs panel.js in
node against a stand-in for the DOM and htmx with a moved clock, from
`TestPanelJSPolling` (skipped where node is absent - the test server's
`TestPanelJS` (skipped where node is absent - the test server's
Go has none; it fails on the old panel.js with ten findings).
- [ ] `parsePage` clamp; `NaN` refused; `rate-limited` tag red (add the status to
- [x] `parsePage` clamp; `NaN` refused; `rate-limited` tag red (add the status to
`components.go`, flip the test); the recalc button posts only what it
needs or warns; `HandleReload` either covers DMARC maps and filter lists or
the flash and the two comments say what it covers. The log's paging is
tested at its edges: first page, last, past the last, an empty log (a row
of review-2026-08-followups, placed here 2026-10-14). — **Sonnet**
*Done 2026-10-15:* the Outbound log counts first and clamps to the last
page; a number too large for an int is the last page too (strconv's
ErrRange with the largest int), on both logs. `checkAutoMultiplier` is
written "not within", so NaN and the infinities are out. The mockup drew
rate-limited grey: `design:` commit first (out-log, and the kit's status
row, which had also lost `reject`), then `components.go`. The recalc
button warns: `data-unsaved` on both recalc buttons, and panel.js asks
on submit (`ev.submitter`) when a field of the page differs from what it
was drawn with (`testdata/unsaved_test.js` under `TestPanelJS`).
`HandleReload` covers what the restore's Resync covers, the filter lists
and the DMARC maps included, and a failed step is an error flash on
Health naming it.
- [ ] `domain.Service.Delete`: say the domain is deleted when a later step fails,
and run `apps.Resync()` anyway. — **Opus**
- [ ] **A status filter and a day filter in the Outbound log** (owner, 2026-10-13, from the