# Blind content checks, 2026-10-19

Each document was checked by a fresh agent that had not written it. The checker
sampled up to eight load-bearing numeric claims from `category.json`, fetched
the cited source for each, and graded it SUPPORTED, PARTIAL, NOT FOUND,
CONTRADICTED, UNREACHABLE or UNCITED. It also tested every cold-start split for
(a) whether a first-time buyer can answer it in one line and (b) whether it
reads unchanged for an unrelated category. The author then fixed what the
checker found and re-ran validate and render. Corrections are logged at the end
of each `notes.md`.

| Category | Grades (of 8) | Substantive corrections applied |
|---|---|---|
| usb-c-cable | 4 supported, 4 partial | USB-A end ceiling restated as the standards figure (about 15 W, 18 W with Quick Charge) with the SuperVOOC exception; wire count corrected; the "non-EPR cable caps a 240 W charger at 100 W" claim removed as unsourced; bend-cycle bounds dropped; Belkin cable is Intertek-certified, not USB-IF; data rate and active/passive reclassified as derived. |
| dried-pasta | 5 supported, 3 partial, 1 uncited sub-claim | Protein put on one basis (as sold): the Gragnano 13% floor is dry basis, about 11.4 g as sold; 6 to 6.5 g cooking-loss figure dropped; invented glycaemic delta removed; drying bands widened so De Cecco's own figure fits; Modern Retail claims it did not make removed; wheat origin and die surface reclassified as researched; die-surface question no longer asks about price. |
| power-bank | 6 supported, 2 partial | Conversion efficiency range set to the measured 79 to 90 percent; an uncited 2.5 h refill point dropped and the refill rule given an error band; Anker figures re-cited from fetched pages; two more teardowns added for cell claims; 12 V added to the PD list; IATA's reason for flagging wireless banks corrected; five facets reclassified as researched. |
| headphones-earbuds | 7 supported, 1 partial | Harman 31-model test separated from the 400-headphone price studies; connection split reworded to be about listening; uncited range bounds removed; single-measurement latency figures labelled as such; multipoint, impedance, sensitivity reclassified as researched, driver type as derived. |
| honey | 6 supported, 1 partial, 1 unreachable | Eurofins "around 20%" figure corrected (it is about added sugar in origin-labelled honey, not doubtful origin); an unread forum thread dropped and the 17% moisture claim replaced with the sourced 18% stability line; conductivity boundary given its chestnut and Manuka exceptions; colour question made honey-specific; authenticity and origin reclassified as researched. |
| coffee | 6 supported, 2 partial | Cups-per-bag divisor now follows from its inputs (13.75 g filter, 18 g espresso); SCA 310-2021 read and cited for what it says; unsourced 5 to 10% specialty share removed; peak freshness window restated as 3 to 21 days across sources; grind ranges matched to sources; single-origin question now asks the facet directly; EU date-marking claim downgraded to a low-confidence judgement because EUR-Lex could not be fetched. |

No claim was graded CONTRADICTED. The common failure across all six was the
same: a number cited to a page that does not contain it, usually because the
author had it from a search summary. The second most common was a facet marked
"on the listing" that is in fact only on brand spec pages, because retail
listings (Amazon, Walmart, Best Buy and others) blocked fetches for every
author.


# Viewer checks, 2026-10-19 (after the redesign)

The viewer was rebuilt as a review instrument: first screen is the decision tree
(Pele timeline, with mindmap and flowchart on a switch) and the priority map;
everything else is a closed section with a count or lives in a drawer. Every
register was re-authored in the same pass: branches on the splits, questions of at
most 12 words, prose trimmed to the validator's caps. Four checks, run on every
viewer at 1380 by 900 with nothing opened. `checks/measure.js` is the script for
the first three (run it in the page); `checks/first-screen-<slug>.jpeg` is the
evidence for the fourth.

1. Tree and the whole map visible with no scrolling.
2. Page at most four screens tall.
3. Every verdict (question, facet, contested call) at most one click away.
4. A reviewer agent given only the first-screen image names the cold-start
   questions in order and the facets that need research. Negative control: the same
   agent given the old honey viewer's first screen (`first-screen-honey-OLD.jpeg`)
   answered "cannot tell" to both and said it would have to scroll and read first.

| Category | Screens | Map bottom (px) | Words on screen | Branches | Check 4 questions | Check 4 research facets |
|---|---|---|---|---|---|---|
| coffee | 3.6 | 781 | 1,267 | 9 on 4 splits | 4 of 4, in order | 8 of 8 |
| dried-pasta | 3.3 | 814 | 1,094 | 5 on 2 splits | 3 of 3, in order | 4 of 4 |
| headphones-earbuds | 3.4 | 814 | 1,172 | 8 on 3 splits | 3 of 3, in order | 6 of 6 |
| honey | 3.5 | 765 | 1,240 | 6 on 3 splits | 4 of 4, in order | 5 of 5 |
| power-bank | 3.0 | 856 | 912 | 5 on 3 splits | 3 of 3, in order | 8 of 8, plus one false positive (see below) |
| usb-c-cable | 2.8 | 758 | 896 | 9 on 4 splits | 4 of 4, in order | 2 of 2 |

Before the redesign the honey viewer was 18 screens tall with 5,600 words on
the page and 157 inline citation links.

The same agents then audited every branch against the register and `notes.md`,
grading each SUPPORTED, WEAK or UNSUPPORTED. None was UNSUPPORTED. Three WEAK
legs were removed and logged in the category's `notes.md`: honey "raw → ask floral
source", dried-pasta "smooth die → skip drying profile", coffee "whole bean → ask
roast profile". WEAK legs that chain two stated facts (a laptop buyer cannot use a
15 W magnetic pack; all magnetic packs sit under the 100 Wh airline line; legume
pasta has no wheat origin) were kept, with the chain written out in `notes.md`.

The power-bank false positive: the checker read the olive "on listing" dot on
"Magnetic wireless charging" as orange. The dots were 7 px and olive and orange
are both warm, so "needs research" is now drawn as a hollow orange ring rather
than a filled dot. The screenshots in `checks/` are from the build with the ring.


# Air purifiers and bedsheets, 2026-10-19

Same blind content check as the first six: a fresh agent graded up to eight
load-bearing numbers against the cited pages (read as raw text with curl,
pdftotext or OCR, never from a fetch summary), tested each split, and graded
every branch leg. Corrections are logged in each `notes.md`.

| Category | Grades (of 8) | Substantive corrections applied |
|---|---|---|
| air-purifier | 4 supported (2 of them single-source), 1 supported but over-generalised, 3 partial | Odour split re-keyed so its three answers are the facet's values, with "heavy" defined by a carbon mass (1.6 kg, one source, labelled); bedroom-or-living split dropped because no sourced rule maps it to a noise level; ionizer promoted to split 3; CADR backfill raised to medium (the ENERGY STAR feed holds 1 of 5 named bestsellers); ENERGY STAR no longer treated as proof of AHAM Verifide; CADR-per-watt comparison with the PM2.5 IEF thresholds removed; size-up judgement marked disputed (AHAM warns against oversizing); filter grade taken off "on listing"; Austin's 15 lb restated as carbon plus mineral media. |
| bedsheets | 4 supported, 4 partial, plus 1 contradicted outside the eight | Post-wash pocket-depth formula relabelled a best case (CR's fit tests beat it); single-ply thread count divides only when plies are known to be counted; mattress height promoted to split 3; "Tencel or bamboo" now one branch; jersey reachable from the weave question; 15–17 in pocket range restated from its source (contradicted: "14 inches or less"); Egyptian 90% attributed to one originator; "1,000 implies plies" softened to "about 900 up is suspect"; FTC fibre rule restated; linen thread count now a warning sign, not irrelevant. |

Viewer: `tests/viewer-browser.py` (the skill's own Playwright check at 1380,
768 and 390 px, light and dark, offline) passes on both, and on all six
earlier registers rebuilt into a temporary folder: 48 of 48. Three generator
fixes came out of this run, all in the skill's assets: the search field's
min-width overflowed phones at 200% text (all eight failed before the fix);
wide flowcharts opened scrolled to the left edge, hiding the root (bedsheets);
map chips broke words mid-letter ("Certification / s"). The six earlier
viewers were then rebuilt from their unchanged JSON with the fixed generator,
and the browser check passed on all eight delivered viewers (48 of 48).

`checks/` (measure.js and the first-screen screenshots referenced above) was
no longer in this folder on 2026-10-19 by the time these two runs started.
measure.js also targets class names the viewer has since renamed.


# Lamps, 2026-10-21

Same blind content check: a fresh agent graded eight load-bearing numbers against
the cited pages (pdftotext on downloaded PDFs, curl plus tag-stripping on HTML;
the NGLIA chart page re-rendered as an image because pdftotext scrambles pie
labels), tested each split question, and graded every branch leg. Corrections are
logged at the end of `lamps/notes.md`.

| Category | Grades (of 8) | Substantive corrections applied |
|---|---|---|
| lamps | 5 supported, 2 partial, 1 contradicted | NGLIA field-failure shares corrected (contradicted: the author had swapped the 7% LED-package and 1% driver-controls labels; driver total is 74%, LEDs 7%); ENERGY STAR L70 floor restated as 25,000 h indoor and 50,000 h where the LED cannot be replaced; Poldina Pro runtime given as 9 h spec / 12 h blurb; R9 at 80 CRI widened to 0 to 25 because the source contradicts itself; bedside band annotated with the 26 to 30 in variant; UL 153 marking claim trimmed to what the preview text says; reading lux aligned to 300 to 500 everywhere; energy-cost and efficacy metrics now declare the watts they need; flicker no longer made irrelevant on the mood and socket branches; USB-powered lamps given a branch; the cordless, light-source and dimming questions rephrased so they do not read as generic. |

Viewer: `tests/viewer-browser.py` (Playwright, pyenv 3.11, at 1380, 768 and
390 px, light and dark, offline) passed 6 of 6 on the temporary copy before and
after the corrections. First-screen screenshots at 1380 light and 390 dark were
read by the author: tree labels at full size, priority-map chips legible, no
page overflow.
