Spike GOV.UK Frontend integration - #262
Merged
Merged
Conversation
Deploying researchops with
|
| Latest commit: |
dea86e3
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://77f5c7ef.researchops.pages.dev |
| Branch Preview URL: | https://chore-govuk-frontend-integra.researchops.pages.dev |
…ust-v2 Make GitHub eval execution trustworthy
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Continues the GOV.UK Frontend integration spike.
This branch now uses GOV.UK Frontend for representative and registered service pages, restores shared
x-includepage chrome, keeps the ResearchOps home styling source-led from Sass, fixes preview asset paths, migrates the Project Dashboard route to the GOV.UK Frontend/Nunjucks model, hardens the Cloudflare Pages/api/*proxy, repairs Project Dashboard stage/status rendering, and restores the workingmainMural integration behaviour with GOV.UK Frontend dashboard state hooks.Key implemented changes
src/styles/govuk.scss.$govuk-assets-pathis set so compiled GOV.UK CSS points at/assets/govuk/assets/.src/styles/researchops-home.scss.x-include.src/govuk/templates/pages/project-dashboard.njkand generated output atpublic/pages/project-dashboard/index.html./api/*proxy now applies a bounded upstream timeout when forwarding preview route calls to the Worker.not recordeddefaults./api/projects?limit=200list route before falling back to/api/projects/:id.mainverify, resolve, setup, await-link and open-board flow.#mural-account-state,#mural-board-state,#mural-summary-tag, and the separate#mural-openaction.Project Dashboard model preserved
The migrated route preserves:
The ResearchOps journal remains the system record. Mural is presented as linked visual support for teams that choose to use it.
D1-first dashboard data loading
The Project Dashboard controller now loads the project from
/api/projects?limit=200first. That route is the D1-first path and uses Airtable as the secondary source. The controller then matches the requested project against known identifiers and only falls back to/api/projects/:idif the D1-first list does not contain the project.The dashboard script cache token is now
project-dashboard-d1-first-20260526, and the Mural component cache token is nowproject-dashboard-mural-optional-20260526.Restored Mural integration behaviour
The Mural component has been realigned with the working version on
mainand adapted to the GOV.UK Frontend dashboard markup.It restores:
pages.devfallback tohttps://rops-api.digikev-kevin-rapley.workers.devwhen no explicit API origin is supplied/api/healthwarm-upverifyandresolvechecks once project metadata is presentwindow.MuralIntegration.resolve()andwindow.MuralIntegration.getMuralIdForProject()It adds GOV.UK Frontend support for:
Open Mural boardGOV.UK button/linkMural OAuth diagnosis
The observed Mural page error was
The redirect URL is invalid. That happens inside Mural before ResearchOps receives a callback. It means theredirect_uriadvertised by the Worker is not in the Mural app's allowed redirect URL list.The checked-in preview callback URI is:
https://rops-api-passwordless-preview.digikev-kevin-rapley.workers.dev/api/mural/callbackTo complete the Mural OAuth fix for the passwordless preview Worker, one of these must happen outside the page controller:
Restoring the working
mainfallback means the Pages preview can also use the production Worker path when no explicit API origin is supplied, matching the known working behaviour.Guardrails and tests
Tests guard that:
x-includeheader and footer chrome remain in usemainflow, includingpages.devfallback,/api/health,verify,resolve,setup,await, and board openingOpen Mural boardactionMural not checkedTrace artefacts
docs/agent-audit/reasoning/2026/05/23/govuk-frontend-integration-main-merge.mddocs/agent-audit/reasoning/2026/05/23/govuk-frontend-integration-main-merge.jsondocs/agent-audit/reasoning/2026/05/23/govuk-x-include-page-chrome.mddocs/agent-audit/reasoning/2026/05/23/govuk-x-include-page-chrome.jsondocs/agent-audit/reasoning/2026/05/23/home-grid-styling-regression.mddocs/agent-audit/reasoning/2026/05/23/home-grid-styling-regression.jsondocs/agent-audit/reasoning/2026/05/23/govuk-frontend-integration-test-remediation.mddocs/agent-audit/reasoning/2026/05/23/govuk-frontend-integration-test-remediation.jsondocs/agent-audit/reasoning/2026/05/24/govuk-frontend-sass-output-and-service-chrome.mddocs/agent-audit/reasoning/2026/05/24/govuk-frontend-sass-output-and-service-chrome.jsondocs/agent-audit/reasoning/2026/05/25/project-dashboard-govuk-frontend.mddocs/agent-audit/reasoning/2026/05/25/project-dashboard-govuk-frontend.jsondocs/agent-audit/reasoning/2026/05/26/project-dashboard-pages-api-proxy-timeout.mddocs/agent-audit/reasoning/2026/05/26/project-dashboard-pages-api-proxy-timeout.jsondocs/agent-audit/reasoning/2026/05/26/project-dashboard-mural-routing-and-status-labels.mddocs/agent-audit/reasoning/2026/05/26/project-dashboard-mural-routing-and-status-labels.jsondocs/agent-audit/reasoning/2026/05/26/project-dashboard-d1-first-and-mural-oauth.mdValidation status
Latest checked head:
dea86e3f9aeff7b21a921c0a907e9faffa5bdfa4.Passing workflows on that head:
CIValidate ResearchOpsRelease GateAccessibility audit (pa11y-ci)qa-bddFormat pull requestQA — Broken links (Lychee)Build and deploy agent documentation PagesUpdate GitHub bundle registry manifestKnown limitation
The Mural app redirect allow-list remains outside this repository change. If the passwordless preview Worker callback URI is not registered in Mural, Mural will continue to reject that specific OAuth callback before ResearchOps receives control.
The build path regenerates
public/pages/project-dashboard/index.htmlfrom the Nunjucks template. If a deployment serves stale generated HTML without running the build, the dashboard should be redeployed after the build output is refreshed.