Three things measured as unused. Each is independent; they are grouped because they are all removals.
1. src/BlazorWebApp - the whole project
Nothing references it. No CI or deploy workflow touches it. The only mentions outside its own directory are two lines in CLAUDE.md and one in docker-build.sh, both just noting that it forces the wasm-tools workload on full-solution builds.
It is the "alternate Blazor host" from before the Vue app existed. It is also actively costly: together with BrowserWasm it is why dotnet build fails on a machine without wasm-tools.
Its only touchpoint into the planner is Pages/Index.razor calling ParseBlueprint.Execute.
2. Application Insights in WebApp
Microsoft.ApplicationInsights.AspNetCore 2.22.0, wired up at Program.cs:50 with a custom AddClientInfoInitializer.cs and an appsettings.json block. That is Azure telemetry for an app whose Azure target was retired. It reports nowhere.
Removing it also shrinks Renovate's surface.
3. The trailing CI Publish step
ci.yml:259 runs dotnet publish src/WebApp --runtime linux-x64 /p:PublishReadyToRun=true. It is the last step in its job and nothing consumes the output - no artifact upload, no deploy. A leftover from the Azure era. ReadyToRun publishing is not fast, so this is CI time spent for a build check dotnet build already provides.
Deliberately NOT in scope
src/WebApp itself stays. It is not deployed, but it generates swagger.json, which feeds the Vue app's TypeScript types, and CI fails if the committed swagger.json drifts. It is load-bearing infrastructure for a type pipeline despite serving no traffic.
Also considered and declined: adding --no-client to swagger-gen. The generated FactorioToolsApi.ts is 757 lines of which the HttpClient and Api classes (roughly lines 506-757) are never instantiated - only the types are imported. Leaving as is for now.
Three things measured as unused. Each is independent; they are grouped because they are all removals.
1.
src/BlazorWebApp- the whole projectNothing references it. No CI or deploy workflow touches it. The only mentions outside its own directory are two lines in
CLAUDE.mdand one indocker-build.sh, both just noting that it forces thewasm-toolsworkload on full-solution builds.It is the "alternate Blazor host" from before the Vue app existed. It is also actively costly: together with
BrowserWasmit is whydotnet buildfails on a machine withoutwasm-tools.Its only touchpoint into the planner is
Pages/Index.razorcallingParseBlueprint.Execute.2. Application Insights in WebApp
Microsoft.ApplicationInsights.AspNetCore2.22.0, wired up atProgram.cs:50with a customAddClientInfoInitializer.csand anappsettings.jsonblock. That is Azure telemetry for an app whose Azure target was retired. It reports nowhere.Removing it also shrinks Renovate's surface.
3. The trailing CI
Publishstepci.yml:259runsdotnet publish src/WebApp --runtime linux-x64 /p:PublishReadyToRun=true. It is the last step in its job and nothing consumes the output - no artifact upload, no deploy. A leftover from the Azure era.ReadyToRunpublishing is not fast, so this is CI time spent for a build checkdotnet buildalready provides.Deliberately NOT in scope
src/WebAppitself stays. It is not deployed, but it generatesswagger.json, which feeds the Vue app's TypeScript types, and CI fails if the committedswagger.jsondrifts. It is load-bearing infrastructure for a type pipeline despite serving no traffic.Also considered and declined: adding
--no-clienttoswagger-gen. The generatedFactorioToolsApi.tsis 757 lines of which theHttpClientandApiclasses (roughly lines 506-757) are never instantiated - only the types are imported. Leaving as is for now.