You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Render the PolicyEngine site shell on /uk/chat #239
/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.
Activity