DFE-Digital / DFE-Digital/check-performance-data
[Tech debt] Decide the admin/dev tooling split, and two smaller boundary leaks
@davidgouge is already working on this.
Since Sep 8, 2026.
- Dominant language
- C#
- Stars
- 0
- Forks
- 1
- Avg merge
- 19h 21m
- Merged PRs (30d)
- 54
Description
Overview
Of the ten largest controllers, seven are admin or development tooling: search analytics, rules admin, page-tree admin, content staging, test data, queue admin and observability. TestDataController (617 lines) and DevPipelineController ship in the same assembly as the pages schools use, gated only by configuration and environment checks.
This is not urgent and the current arrangement is defensible — but it should be a decision rather than a drift, because admin and citizen-facing code are currently held to visibly different quality bars in the same deployable.
Two related smells of the same size are bundled here rather than given their own tickets.
Evidence
- 62 controllers, 10,972 lines total; admin/dev controllers account for roughly 4,300 of them.
SearchAnalyticsController806,AdminRulesController722,PageTreeAdminController655,TestDataController617,ContentStagingController589,ObservabilityController488,QueueAdminController391.
Related, smaller items:
- Application carries an EF Core package reference used by exactly one file —
Application/Search/SiteSearchService.csis the onlyusing Microsoft.EntityFrameworkCorein the project. That single reference is all that stands between the team and the next EF query written in the wrong layer. CancellationTokenpropagation is good but not yet a rule — roughly 570 of 640 async signatures acrosssrc/take one.- Test project naming mismatch — the directory
tests/DfE.CheckPerformanceData.UnitTests/containsDfE.CheckPerformanceData.Application.UnitTests.csproj.
Proposed fix
Decide explicitly: either keep the mixed assembly and hold admin code to the same review bar as public pages, or plan a separate admin host. Either is fine; drifting is not.
Independently of that decision:
- Move the one EF query behind a repository interface and drop
Microsoft.EntityFrameworkCorefromApplication.csproj. - Rename the unit test project file to match its directory.
Acceptance criteria
- A direction on the admin split is agreed and recorded (ADR or a note in
docs/architecture/). -
Application.csprojno longer referencesMicrosoft.EntityFrameworkCore. - Unit test project file name matches its directory.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.