Skip to content

WebMCP Surface Capture Registry — every green Human-approved surface becomes a permanent visual reference #2030

Description

@BryanHarrisScripts

Why

Recent Human UAT found visual regressions on previously accepted PlotPickle surfaces even though architecture and live browser checks were green. The gap is that Human approval is not yet converted into a permanent visual reference set.

A surface should not be considered fully green if WebMCP/visual verification does not retain and re-check that approved presentation afterward.

Product rule

Every Human-approved green surface must be registered in the WebMCP / visual verification system and captured as durable reference evidence.

Green means:

  1. implementation exists and is wired;
  2. focused tests pass;
  3. live Human UAT approves the surface;
  4. WebMCP captures the approved surface/state;
  5. future visual verification compares against or explicitly validates that approved reference contract.

Yellow surfaces remain active/testable but must not become canonical visual references until Human approval.

Registry requirements

Create one canonical registry/inventory for approved surfaces. Each entry should include at minimum:

  • stable surface ID;
  • Human-facing name;
  • deterministic navigation path / activation sequence;
  • selector proving the intended surface is open;
  • expected approved state needed for capture;
  • reference image/evidence location;
  • approval issue/PR provenance;
  • keyboard/back-path expectations where relevant;
  • whether the surface is responsive/has more than one required viewport capture.

Do not encode transient profile names, private project content, local paths, credentials, timestamps or machine-specific values into the reference contract.

Capture behavior

  • WebMCP should navigate to every registered green surface from the authenticated PlotPickle boundary.
  • Capture named screenshots/evidence using stable filenames/IDs.
  • Verify the correct destination is visible before capture.
  • Fail clearly when a registered surface can no longer be reached, renders the wrong skin, loses required artwork, regresses typography/layout/state semantics, or returns through the wrong navigation path.
  • Avoid fragile full-pixel equality where dynamic content exists; prefer stable visual/semantic contracts plus targeted screenshots for Human comparison.
  • Keep current status truth live: connected/review/unwired colors must not be faked for screenshots.

Initial surface inventory

At minimum seed the registry from current accepted/reviewed Skin V1 surfaces:

  • Dashboard
  • Community
  • Writer's Craft / Journey
  • Story Library
  • User Profile
  • Settings directory
  • Local Story Mode
  • Cloud Story Mode
  • Agents
  • Advanced
  • Issue Log
  • Licensing
  • Node Info

As #2029 repairs are Human-approved, add their exact approved states to this registry rather than relying on historic screenshots.

Workflow integration

When a Human promotes a surface from yellow to green:

  1. update/add the surface registry entry;
  2. capture the approved reference through WebMCP;
  3. store/link the evidence in the repo artifact/reference convention;
  4. add/enable the recurring visual check;
  5. only then complete the green promotion issue.

A later visual redesign must deliberately replace the approved reference rather than silently drifting it.

Architecture / CI intent

This is not a new UI skin. It extends the existing Experience Skins / WebMCP visual readiness process so approved visual continuity becomes persistent product evidence.

Use the existing WebMCP surface readiness, visual director, visual audit and artifact pipeline where possible rather than adding a parallel screenshot system.

Acceptance

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions