Resolved in spikersoft-backend PR #376 (merged to master). Consolidated the 27 duplicated token-user-id auth checks into a TryGetUserId helper; behavior identical, all 49 controller tests pass.…
Resolved in spikersoft-backend PR #377 (merged to master). Removed dead SpaceZone CreateTestSpacecraft + GetDockedChainExcluding methods (~146 lines); no behavior change. Closing.
Resolved in spikersoft-backend PR #375 (merged to master). Removed the dead SpaceZone ApplyDamageToShip/ApplyDamageToSpacecraft duplicates (live path is SpaceCombatSystem); ~160 lines, no behavior…
Resolved in spikersoft-backend PR #373 (merged to master, reviewed by spikerj). Replaced the bypassable regex blog-body sanitization with the allowlist/DOM-based HtmlSanitizer (Ganss.Xss 9.0.892),…
Resolved in spikersoft-backend PR #372 (merged to master). Captured the ParseVersion result and null-guarded it before MeetsMinimum at both sites, so an unparseable Python version banner no longer…
Resolved in spikersoft-backend PR #366 (merged to master). Guarded null handler response in PublishReplyAsync across 3 RPC consumers (Decompile/Notifications/Embeddings) so a null mediator.Send…
Resolved in spikersoft-backend PR #366 (merged to master). Initialized BasicProperties.Headers so calendar-reminder business headers no longer NRE when tracing is inactive (CS8602). Build clean.…