From 7d6a23be53c2fed8ffbff9ba5640f8b235ca9b26 Mon Sep 17 00:00:00 2001 From: doxa-maps-88655c70 <88627970+doxa-maps-88655c70@users.noreply.github.com> Date: Thu, 24 Sep 2026 14:14:04 +0000 Subject: [PATCH 1/2] Record the probe failure that produced three wrong verdicts in one flight MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The search box was never tested this flight, so it was checked: it finds groups by people-group name, by language name and by ISO code, and shows its empty state for a query that matches nothing. "Pashtun" returns 8 of 13 matches, "deu" 8 of 27, "Uab Meto" 2, and a nonsense string gives "Nothing matches that name, language or code." No defect, so nothing in the product changed. Finding it healthy took two attempts, and the first attempt is the point. It queried invented selectors — .gm-sug, .gm-hit — got 0 results for every query including valid ones, and would have reported a working search as broken. The real class is .gm-qrow, and it is in the component. That is the third time in this flight one probe produced a confident wrong verdict from a guessed selector or a guessed denominator, and it has gone wrong in both directions: - a table probe read the page's own "234 rows" caption and PASSED an entirely empty body, because the document was missing its columns block; - a charts probe FAILED a correct chart by counting all 5,563 catalogue codes when the chart counts the 5,067 languages spoken by a pin; - this one. The existing selector row in the pitfalls table is about Shadow DOM not piercing, which is a different failure. This one is added beside it: read the selector and the denominator out of the source, assert on rendered content rather than on a number the page prints about itself, and grep the component for the real class names first. --- AGENT-BRIEF.md | 1 + 1 file changed, 1 insertion(+) diff --git a/AGENT-BRIEF.md b/AGENT-BRIEF.md index 718363c3a..09ee9f070 100644 --- a/AGENT-BRIEF.md +++ b/AGENT-BRIEF.md @@ -71,6 +71,7 @@ somebody else's page and report a confident wrong answer with no error. | bundles missing, files deleted, counts wrong | `bun run check:settled` — graded **by exit code**. It reads the build *lock*, which knows the *queue*; `pgrep` samples an instant and will tell you 0 builders while one is queued. | | a gate "failed" | Re-run it un-suppressed. A command killed by a short `timeout` is not a failure, and these gates print teaching prose *after* the verdict, so `| tail -1` inverts the signal. **Grade by exit code.** | | a selector finds nothing in a composite | Shadow DOM does not pierce. Use a recursive `shadowRoot` walker, not `document.querySelector`. | +| a probe's verdict, in EITHER direction | **Read the selector and the denominator out of the source; never invent them.** An invented selector fails a working feature, and a count the page prints about itself passes a broken one. Measured three times in one flight: `.gm-sug` returned 0 for every search query while search worked fine; a chart was "wrong" only because the probe counted all 5,563 catalogue codes when the chart counts the 5,067 spoken by a pin; and a table probe read its own "234 rows" caption and passed an entirely empty body. Assert on rendered content — rows *and* cells — and grep the component for the real class names first. | ## Facts that are easy to get wrong From 9dea551586d4595ea10b33d093109da220e0a59f Mon Sep 17 00:00:00 2001 From: doxa-maps-88655c70 <88627970+doxa-maps-88655c70@users.noreply.github.com> Date: Thu, 24 Sep 2026 14:20:10 +0000 Subject: [PATCH 2/2] On a phone, the pin hint was sitting on top of the sheet it invited you to open MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Seven chip types and two long notes have been added to the group sheet this flight and none of it had been looked at on a phone. At 390x844 the layout itself holds up — no horizontal overflow, chips wrap, the sheet scrolls its 1,338px of content in a 559px window. What does not hold up is the shared pin hint. "Tap a coloured dot — someone still needs prayer" is pinned near the bottom of the map, which on a phone is exactly where the bottom sheet is. Measured: it covered "Also speak German, Standard (25)" and the first group row under it. Once a sheet is open the invitation is also redundant — the reader has already tapped a dot. Hidden while a sheet is open, at phone widths only, and scoped to this bundle. NOT out-stacked: the hint is a library component with z-index 2147482000 and a deliberate "only the reader closes it" rule, which is the right behaviour for a bare map, and raising this sheet above that number would be a z-index arms race with shared code that every other map would inherit. The hint renders inside this component's own shadow root, so a media-query rule here costs nothing and changes nothing for anyone else. Desktop is untouched — there the sheet is a 330px corner card and the two never collide. Verified in both directions rather than one: with the sheet open the hint computes to hidden, and after pressing Close it is visible again. Screenshot read at 390px — the "Also speak" heading and its rows are now legible. --- plugin-designs/gospel-resources/resources-map.vue | 12 +++++++++++- public/doxa-maps/gospel-resources/charts/index.html | 2 +- .../gospel-resources/data-tables/index.html | 2 +- .../gospel-resources/gospel-dashboard/index.html | 2 +- .../doxa-maps/gospel-resources/gospel-resources.js | 10 +++++----- .../gospel-resources/resources-list/index.html | 2 +- .../gospel-resources/resources-map/index.html | 2 +- public/doxa-maps/index.html | 2 +- public/doxa-maps/manifest.json | 12 ++++++------ 9 files changed, 28 insertions(+), 18 deletions(-) diff --git a/plugin-designs/gospel-resources/resources-map.vue b/plugin-designs/gospel-resources/resources-map.vue index 6c308ff98..28db9d3ed 100644 --- a/plugin-designs/gospel-resources/resources-map.vue +++ b/plugin-designs/gospel-resources/resources-map.vue @@ -740,6 +740,16 @@ useShadowStyles( '.gm-pinkey-h{font-size:11px;font-weight:600;margin-bottom:4px}' + '.gm-caveat{margin-top:5px;font-size:10.5px;opacity:.72;line-height:1.4}' + // DETAIL: a bottom sheet on a phone, a corner card on desktop. + // ON A PHONE THE SHEET IS THE PAGE, and the shared pin hint sits on top of it. The hint + // is a library component with z-index 2147482000 and a deliberate "only the reader closes + // it" rule, which is right for a bare map — but once a group sheet is open the invitation + // to tap a dot is both redundant and obstructive: measured at 390px it covered "Also speak + // German, Standard (25)" and the first row under it. + // Hidden rather than out-stacked. Raising this sheet above 2147482000 would be a z-index + // arms race with shared code, and the hint lives inside this component's own shadow root, + // so scoping it here costs nothing and changes nothing for any other map. + // Desktop is untouched: there the sheet is a 330px corner card and the two never collide. + '@media(max-width:699px){.gm.has-sheet .pin-hint{display:none}}' + '.gm-sheet{position:absolute;left:0;right:0;bottom:0;z-index:6;max-height:62%;overflow-y:auto;' + 'background:#fff;color:#0f1419;border-radius:14px 14px 0 0;padding:14px 16px 22px;' + "font:13px/1.5 -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;box-shadow:0 -6px 26px rgba(0,0,0,.28)}" + @@ -854,7 +864,7 @@ useShadowStyles(