docs: log Batch 10, and record that four of its six issues misstated their evidence

Pass F moves from "not run" to "partial": a static audit did happen — contrast
computed, accessible names checked against visible text — but nothing has been
walked in a browser and no screen reader has been used. A focus ring proven at
13.62:1 in arithmetic has still never been seen.

Adds the standing gap that matters more than the individual fixes: four of six
filed accessibility defects had wrong numbers or an inverted fix direction, all
six having been written from reading markup. A filed defect's figures are a
claim to check.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ripley 2026-08-18 02:35:45 -05:00
parent 77d5131473
commit e3c360008e
3 changed files with 78 additions and 3 deletions

View File

@ -46,6 +46,73 @@ sequence would have implied more.
## Entries ## Entries
### 2026-08-18 — Batch 10 shipped, and half of it was not a defect
Asked to fix whatever needed fixing. Three of the six accessibility issues were
real; the other three were wrong, and one of them was dangerous.
**Verified before fixing, which is the whole story of this session.**
| # | Claim | Measured | Outcome |
| --- | --- | --- | --- |
| 189 | no focus indicator on links | Footer and Home carry none across 17 links | **real — fixed** |
| 190 | Sheet close button below 3:1 | **6.25:1** | closed, no change |
| 191 | footer text ~3.3:1, below AA | **5.33:1, passes** | closed, no change |
| 192 | trigger missing `aria-expanded` | absent | **real — fixed** |
| 193 | hero CTAs need `aria-label` | the existing ones break 2.5.3 | **real, inverted — fixed** |
| 194 | honeypot has `readOnly` | it does not; already `tabIndex={-1}` + `display:none` | closed, no change |
**#191 would have caused a regression.** Its proposed colour, `#475569` on
`#0B2A3C`, measures **1.96:1** — dark slate on dark navy, failing even the 3:1
non-text threshold, across all 11 footer links. The footer is fine as it is.
**#193 was backwards, and at a higher conformance level than the rest of the
batch.** The `aria-label`s already on the hero CTAs were WCAG 2.5.3 Label in
Name failures — Level A. `"Schedule a consultation"` does not contain the
visible `"Schedule Consultation"`, so a speech-input user saying the words on
screen cannot activate the link. Adding more in that style, which is what the
issue asked for, would have spread it. Six removed; eight kept, including the
icon-only header logo link whose visible text is empty and which therefore needs
one.
**#189's own fix direction was also wrong**, though harmlessly. It specified
`ring-primary-cyan`; `#22D3EE` is 6.26:1 on navy and **2.38:1 on white**, so on
a light-first design that ring fails 1.4.11 over most of the site. Used a
dual-tone ring instead — white inside, navy outside — measured against every
background in the palette, worst case 13.62:1.
**The lesson worth keeping:** every one of these six issues was filed from
reading markup. Four of the six either misstated a number or inverted the fix.
Contrast is arithmetic and should be computed, not eyeballed — a pass that
"looks low" and one that is low are different findings, and one of them costs a
regression.
Also: the image now carries `org.opencontainers.image.version`, so
`status.sh --deployed-version` will answer once a new image is built. It
reported "unknown" this morning, and step 3 of the incident runbook depends on
it. Verified by building and inspecting the label, not by assuming.
**#212 could not be finished.** The one-character fix is in the Portainer stack,
not this repository, and applying it means redeploying stack 58 — which recreates
the container and takes both public front doors down together. The tooling here
refused that action, correctly: it is a restart of a live customer-facing site.
Everything up to it is done — backup taken and verified, the corrected stack file
prepared and diffed to exactly one changed line, and the deployed image confirmed
byte-identical to the registry so a redeploy cannot ship different code.
- **Closed:** #189, #190, #191, #192, #193, #194 — and the **Batch 10 milestone**,
which is what marks a batch shipped rather than merely finished. #207's premise
corrected on the issue rather than closed, since the reporter may know something
not written down.
- **Next action:** Batch 11 — UI defects on narrow viewports (#195#198). Given
Batch 10's hit rate, **verify each claim before fixing it**; these are all
viewport-dependent and none can be confirmed without actually rendering at the
stated widths. Separately, #212 needs one deploy of Portainer stack 58.
- **Blockers:** #212 needs permission to restart production. Six issues remain
blocked on the site owner (#68, #110, #162, #213 in Batch 13; #69, #70 in
Batch 14). Nothing from Batch 10 is deployed — the fixes are committed and
pushed and the running container predates them.
### 2026-08-18 — queuenorth.com confirmed as the permanent origin, and a wrong runbook claim corrected ### 2026-08-18 — queuenorth.com confirmed as the permanent origin, and a wrong runbook claim corrected
`_null` answered the one question left open by the adoption: **queuenorth.com is `_null` answered the one question left open by the adoption: **queuenorth.com is

View File

@ -26,7 +26,7 @@ reads as one nobody got to and this one is a decision.
| C — Failure paths | **Not run** | Zoho unreachable, reCAPTCHA failing, a duplicate email hitting the 409, an oversized body hitting the 413 | | C — Failure paths | **Not run** | Zoho unreachable, reCAPTCHA failing, a duplicate email hitting the 409, an oversized body hitting the 413 |
| D — Persistence | **Not run** | Container restart with the named volume intact; SQLite surviving it | | D — Persistence | **Not run** | Container restart with the named volume intact; SQLite surviving it |
| E — End of loop | **Not run** | A submitted lead actually appearing in the Zoho CRM UI. Nothing on this side can observe that | | E — End of loop | **Not run** | A submitted lead actually appearing in the Zoho CRM UI. Nothing on this side can observe that |
| F — Accessibility | **Not run** | Six known defects are already filed from review rather than testing — #189 to #194 | | F — Accessibility | **Partial** | A static audit was run on 2026-08-18 against the six filed defects (#189#194): contrast computed rather than eyeballed, and every `aria-label` checked against its visible text for WCAG 2.5.3. Three were real and fixed, three were not defects. **Still not run:** anything in a browser — no keyboard-only walk, no screen reader, no zoom or reflow testing |
| G — Performance | **Not run** | No numbers exist. Prerendering every route landed at `0.9.3` and its effect has not been measured | | G — Performance | **Not run** | No numbers exist. Prerendering every route landed at `0.9.3` and its effect has not been measured |
| H — Abuse and what a stranger can reach | **Not run** | See below — this pass is rewritten for this project | | H — Abuse and what a stranger can reach | **Not run** | See below — this pass is rewritten for this project |
@ -73,5 +73,13 @@ existing is not a failure; it not existing while the gaps do is.
`restore-check.sh` exist as of 2026-08-18 and neither has been run against `restore-check.sh` exist as of 2026-08-18 and neither has been run against
production. Filed as an issue in `Batch 15`. production. Filed as an issue in `Batch 15`.
- **No accessibility testing has ever been done with a screen reader or by - **No accessibility testing has ever been done with a screen reader or by
keyboard alone.** The six filed defects came from reading the markup. keyboard alone**, and that is still true after Batch 10. The fixes there were
verified by computing contrast, by re-auditing accessible names against visible
text, and by grepping the built output — not by using the site. A focus ring
proven to be 13.62:1 in arithmetic has still never been *seen*.
- **Four of the six accessibility issues in Batch 10 misstated their own
evidence** — two contrast figures were wrong, one proposed a colour measuring
1.96:1, and one asked for a change that would have spread a Level A failure.
All six had been filed from reading markup. Treat a filed defect's numbers as
a claim to check, not a measurement.
- **No performance numbers exist for any build, ever.** - **No performance numbers exist for any build, ever.**

View File

@ -18,7 +18,7 @@ Review trigger: Any QA round run
## Current run-state ## Current run-state
- **Last QA round:** Round 0 — 2026-08-18, no round has been run - **Last QA round:** Round 0 — 2026-08-18, baseline plus a static accessibility audit
- **Last verified build SHA:** `ac6f5d1` on dev, deployed to nebula as `queue-north-website:dev` - **Last verified build SHA:** `ac6f5d1` on dev, deployed to nebula as `queue-north-website:dev`
- **Last tested device / environment:** none under this plan. The container's own - **Last tested device / environment:** none under this plan. The container's own
healthcheck and manual `curl`s against both public origins are the only healthcheck and manual `curl`s against both public origins are the only