Skip to content

Render the PolicyEngine site shell on /uk/chat #239

Closed

Description

@vahid-ahmadi

/uk/chat is served on policyengine.org through a multizone rewrite, and since PolicyEngine/policyengine-app-v2#1148 every zone child must render the PolicyEngine site shell itself. The rewrite does not inject the parent shell into the child response.

This app currently renders no site header, so the app-zone-shell-audit fails:

FAIL /uk/chat
    PolicyEngine brand missing from top shell
    tested https://policyengine-uk-chat.vercel.app/uk/chat

That failure currently blocks PolicyEngine/policyengine-app-v2#1073 (the UK Chat beta launch), and once /uk/chat ships it will also break the nightly production audit.

What the audit requires

From .github/scripts/audit-app-zone-shell.mjs in policyengine-app-v2, it collects visible elements whose top edge is within 140px of the viewport top, joins their text, aria-label and alt, then asserts:

  • the combined text matches /\bPolicyEngine\b/i — the brand
  • the combined text contains all four nav labels, case-sensitive: Research, Model, API, Donate

So a header bar at the top of the page carrying the wordmark plus those four links satisfies it.

Precedent

The last nine bare children shipped their own shells in August 2026 — scotland-income-tax-reform#11, student-loan-visualisation#4, obbba-household-by-household#245, uc-rebalancing#4, cancelling-fuel-duty-rise#6, young-worker-nics#5, nics-exemption-inactive-employees#11, electricity-vat-cut#1, bus-fare-cap#9 — which is what let #1148 empty SHELL_BRAND_EXEMPT_SOURCES. The list is asserted to only ever shrink, so an exemption for /uk/chat is not an option.

Wrinkle specific to this app

The chat is a full-height layout (minHeight: 100dvh with a sticky 100dvh sidebar), so adding a header needs the chat body to become 100dvh - headerHeight rather than simply pushing content below the fold.

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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions