The LAN task had no log sink; a listener's refusal cost a second instance with console capture (12c-2). Reuse: ILoggerProvider from DI (no new package), SettingScope for Set-SPDiagnosticConfig's LogLocation / LogCutInterval / DaysToKeepLogs, a Board part with one builder for the viewer, a CustomAction under Monitoring > Reporting. Per-category levels stay in the Logging configuration.
Outcome (claude-code, 2026-09-29): Shipped in 18047e5: UlsLoggerProvider writes SPICE.Web/LOGS/<machine>-<yyyyMMdd-HHmm>.log (ULS columns, SharePoint's levels, the request correlation, no BOM, swept after DaysToKeepLogs); Scope.DiagnosticLogging carries Set-SPDiagnosticConfig's three settings; /board/diagnostics is the ULS Viewer, linked from Monitoring > Reporting. Served on the LAN task. 4136 green.
SPICE.Foundation/Diagnostics/UlsLoggerProvider.cs
/board/diagnostics
/admin