Objective
Make PlotPickle's Skin V1 user experience visually deterministic across every meaningful reachable surface, including nested Community, Library, Settings and production flows.
The problem is no longer a handful of isolated CSS defects. The Human review found structural drift across the product: return controls change side, borders/trim appear inconsistently, title/header geometry varies, content widths drift, green/palette treatment differs, and some nested screens are not represented in the standard visual verification set.
The governing fix is:
One Surface Registry + one Surface Grammar + one upgraded UI Continuity Agent + CI blockers for structural drift.
Dashboard remains the canonical visual reference, but consistency must be enforced through deterministic geometry/token/structure contracts rather than screenshot similarity alone.
Findings driving this issue
config/ui-continuity-agent-registry.json is stale and still declares matte-black-teal-orange rather than the current Skin V1 Matrix vocabulary.
- UI Continuity and WebMCP maintain separate screen inventories.
- The existing UI Continuity Agent checks broad shell/navigation/theme properties but does not enforce page grammar such as return-control side, header geometry, title position, content measure, trim, border treatment, panel framing or structural spacing.
- Visual Director currently treats many visible consistency defects as advisories, including palette, spacing rhythm, hierarchy and width drift.
- The standard WebMCP catalogue captures a useful set of surfaces, but does not prove that every meaningful nested state reachable in the product is represented.
- Screenshot baselines remain useful regression evidence but cannot be the primary structural consistency mechanism because platform rasterization can vary while geometry and tokens can be deterministic.
Contract
One canonical Surface Registry
Create one canonical registry consumed by UI Continuity, WebMCP/Visual Director and related verification. Each surface entry must be able to declare:
- stable id and label;
- route/navigation path;
- parent surface;
- surface class;
- canonical root/ready selectors where applicable;
- return path;
- capture policy and current visual-governance state;
- expected area/destination where applicable;
- whether it is a public/startup exception.
No verifier should maintain an independent authoritative inventory.
Skin V1 Surface Grammar
Codify the reusable visual structure rather than leaving it implicit in screenshots. At minimum the grammar must cover:
- canonical application/content measure;
- page-header geometry;
- title position/hierarchy;
- return-control side, geometry and treatment;
- border/trim vocabulary;
- panel framing;
- Skin V1 palette/token provenance;
- 4px spacing rhythm;
- control-height rhythm;
- nested-surface parent/child presentation;
- empty-state presentation;
- allowed surface-class exceptions.
Surface classes may differ in content and internal workflow, but the same class must obey the same structural grammar.
UI Continuity Agent
Upgrade the existing agent; do not create another agent.
It should inspect rendered geometry and token provenance for the grammar above and compare a surface against its declared class. Mechanical violations should be deterministic findings.
The agent remains bounded: it must not invent UX, mutate story/canon or silently redesign ambiguous surfaces.
CI severity
Promote structural drift to blockers for Experience Skins verification, including at least:
- wrong return-control side/placement;
- missing or unexpected standard header frame;
- materially wrong content measure for the declared class;
- noncanonical structural border/trim;
- non-token structural colours where a Skin V1 token exists;
- off-grid structural padding/spacing;
- title/header hierarchy outside the declared class contract;
- unregistered meaningful reachable surfaces.
Minor rasterization and intentionally documented exceptions can remain advisory.
Implementation sequence
Phase 0 — Ground-zero contract and census
Phase 1 — One registry consumed by verification
Phase 2 — Structural grammar measurements
Phase 3 — CI blocker policy
Phase 4 — Complete Surface Census
Phase 5 — Normalize surface families
Normalize one family at a time against the grammar:
- Dashboard reference
- Library + every Library child
- Settings/Manage + every child
- Community + every Community child
- Story Map / Visual Story / Scene Timeline and production surfaces
- remaining specialist/contextual surfaces
A family does not advance until its structural blockers are zero.
Phase 6 — Bounded repair mode
Add deterministic repair support to the existing UI Continuity Agent for only mechanical, unambiguous drift, such as:
- replacing local colours with Skin V1 tokens;
- replacing local padding with spacing tokens;
- using the canonical return/header component;
- normalizing standard border variables;
- applying canonical class shell/measure.
Ambiguous UX/layout decisions remain Human-approved proposals.
Acceptance criteria
- There is one canonical Surface Registry; UI Continuity and WebMCP no longer own divergent screen lists.
- Skin V1 has an explicit structural Surface Grammar independent of screenshot pixels.
- Dashboard remains the canonical visual reference.
- Every meaningful reachable surface is represented in the census, including nested Community flow.
- A screen cannot pass Experience Skins verification with a return control on the wrong side, missing/extra standard frame, materially incorrect width, noncanonical structural trim, off-grid structural spacing, or undeclared local palette treatment unless an explicit class exception exists.
- UI Continuity reports geometry/token evidence and surface-class comparison, not only broad shell/navigation state.
- Screenshot baselines remain a secondary regression safety net.
- No second verifier, agent, design system, story authority or navigation model is introduced.
- Mechanical repair can eventually be automated only within deterministic bounded rules; ambiguous design remains Human-controlled.
- Surface-family normalization can proceed screen-by-screen without reintroducing drift elsewhere.
Non-goals
- no unrelated Dashboard redesign;
- no new story/canon authority;
- no new navigation system;
- no second visual-verification stack;
- no requirement that every surface have identical content layout;
- no automatic Human baseline approval;
- no giant one-shot rewrite before the governing contract exists.
Objective
Make PlotPickle's Skin V1 user experience visually deterministic across every meaningful reachable surface, including nested Community, Library, Settings and production flows.
The problem is no longer a handful of isolated CSS defects. The Human review found structural drift across the product: return controls change side, borders/trim appear inconsistently, title/header geometry varies, content widths drift, green/palette treatment differs, and some nested screens are not represented in the standard visual verification set.
The governing fix is:
Dashboard remains the canonical visual reference, but consistency must be enforced through deterministic geometry/token/structure contracts rather than screenshot similarity alone.
Findings driving this issue
config/ui-continuity-agent-registry.jsonis stale and still declaresmatte-black-teal-orangerather than the current Skin V1 Matrix vocabulary.Contract
One canonical Surface Registry
Create one canonical registry consumed by UI Continuity, WebMCP/Visual Director and related verification. Each surface entry must be able to declare:
No verifier should maintain an independent authoritative inventory.
Skin V1 Surface Grammar
Codify the reusable visual structure rather than leaving it implicit in screenshots. At minimum the grammar must cover:
Surface classes may differ in content and internal workflow, but the same class must obey the same structural grammar.
UI Continuity Agent
Upgrade the existing agent; do not create another agent.
It should inspect rendered geometry and token provenance for the grammar above and compare a surface against its declared class. Mechanical violations should be deterministic findings.
The agent remains bounded: it must not invent UX, mutate story/canon or silently redesign ambiguous surfaces.
CI severity
Promote structural drift to blockers for Experience Skins verification, including at least:
Minor rasterization and intentionally documented exceptions can remain advisory.
Implementation sequence
Phase 0 — Ground-zero contract and census
matte-black-teal-orangecontinuity vocabulary.Phase 1 — One registry consumed by verification
Phase 2 — Structural grammar measurements
Phase 3 — CI blocker policy
Phase 4 — Complete Surface Census
Phase 5 — Normalize surface families
Normalize one family at a time against the grammar:
A family does not advance until its structural blockers are zero.
Phase 6 — Bounded repair mode
Add deterministic repair support to the existing UI Continuity Agent for only mechanical, unambiguous drift, such as:
Ambiguous UX/layout decisions remain Human-approved proposals.
Acceptance criteria
Non-goals