Skip to content

feat: ground persona reactions in the whole scrolled page and whether it works - #29

Merged
gabelul merged 1 commit into
mainfrom
feat/persona-interaction-evidence
Jul 16, 2026
Merged

feat: ground persona reactions in the whole scrolled page and whether it works#29
gabelul merged 1 commit into
mainfrom
feat/persona-interaction-evidence

Conversation

@gabelul

@gabelul gabelul commented Jul 16, 2026

Copy link
Copy Markdown
Owner

The scroll-fold + interaction-evidence enrichment. Both additions use evidence the collector already captures — no extra browser work, still fully deterministic. It makes every persona read more grounded, across all page types.

What changed

The persona evaluator used to open the three above-fold viewport shots and ground its reaction in static measurements. Now it also:

  • Reads scroll.foldScreenshots — the below-fold view, so it reacts to the whole scrolled page instead of the hero alone. "I'd bounce before the CTA" now depends on how far down the CTA actually is, not a guess from the first screen.
  • Grounds reactions in behavioral evidence — not just how the still looks:
    • interactivePromises.results — did the mobile menu open, did the anchor jump, did the accordion expand (passed). "The menu didn't open" is a hard bounce for a rushed-mobile-user.
    • focusPass — keyboard reachability + visible focus rings (withoutIndicator, nonSemanticClickables).
    • viewports.mobile.touchTargets — thumb-sized taps.
    • hoverStates — feedback on hover.

Each persona pulls the evidence its designPriorities care about; a null pass means it didn't run and must not be invented.

Why this over live per-persona browsing

Discussed and rejected the alternative (each persona driving the browser live): it breaks determinism, the read-only boundary, and the one-collector principle. This gets ~the same behavioral truth from evidence collected once — reproducible, no extra agents.

Testing

Full suite green (1123, 0 fail). vision-personas.test.js guards the wiring (reads fold screenshots, consults interactivePromises/focusPass/touchTargets, frames it as whether the page works, never fabricates a missing pass).

… it works

Personas opened the three above-fold viewport shots and grounded reactions
in static measurements. Two additions, both from evidence the collector
already captures — no extra browser work, still deterministic:

- The persona now reads scroll.foldScreenshots, so it reacts to the whole
  scrolled page instead of the hero alone. "I'd bounce before the CTA"
  now depends on how far down the CTA actually is.
- It grounds reactions in behavioral evidence, not just how the still looks:
  interactivePromises.results (did the mobile menu open, did the anchor
  jump), focusPass (keyboard reachability + focus rings), mobile
  touchTargets, hoverStates. Each persona pulls what its designPriorities
  care about; a null pass means it didn't run and must not be invented.

So "would this work for me" is answered by whether the flow works, not
only by how the hero looks.
@gabelul
gabelul merged commit 08087a0 into main Jul 16, 2026
3 checks passed
@gabelul
gabelul deleted the feat/persona-interaction-evidence branch July 16, 2026 21:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant