Files
scadalink-design/docs/plans/phase-1-checklist.md

5.1 KiB

Phase 1 Execution Checklist

Phase: Central Platform Foundations Started: 2026-03-16 Completed: 2026-03-16


Work Package Status

WP Description Status Date Notes
WP-1 Configuration Database — DbContext, Fluent API, Migration [x] Complete 2026-03-16 26 DbSets, 10 config classes, initial migration
WP-2 Repository Implementations (ISecurityRepository, ICentralUiRepository) [x] Complete 2026-03-16 Full CRUD + audit log queries with pagination
WP-3 IAuditService with Transactional Guarantee [x] Complete 2026-03-16 JSON serialization, same-transaction commit
WP-4 Optimistic Concurrency on Deployment Status [x] Complete 2026-03-16 RowVersion on DeploymentRecord, last-write-wins on templates
WP-5 Seed Data [x] Complete 2026-03-16 SCADA-Admins → Admin mapping
WP-6 LDAP Bind Service [x] Complete 2026-03-16 Direct bind, TLS enforcement, AllowInsecureLdap for dev
WP-7 JWT Issuance, Sliding Refresh, Idle Timeout [x] Complete 2026-03-16 HMAC-SHA256, 15-min refresh, 30-min idle
WP-8 Role Claim Extraction from LDAP Groups [x] Complete 2026-03-16 Multi-role, site-scoped deployment accumulation
WP-9 Authorization Policies with Site-Scoped Deployment [x] Complete 2026-03-16 Admin/Design/Deployment + SiteScopeAuthorizationHandler
WP-10 Shared Data Protection Keys [x] Complete 2026-03-16 EF Core key storage, cross-instance validation tested
WP-11 Host — Startup Validation (REQ-HOST-4) [x] Complete 2026-03-16 19 validation rules, fail fast with clear errors
WP-12 Host — Readiness Gating /health/ready (REQ-HOST-4a) [x] Complete 2026-03-16 DB + Akka health checks, 503 until ready
WP-13 Host — Akka.NET Bootstrap (REQ-HOST-6) [x] Complete 2026-03-16 AkkaHostedService with HOCON config, cluster, remoting, SBR
WP-14 Host — Serilog Logging (REQ-HOST-8) [x] Complete 2026-03-16 SiteId/NodeHostname/NodeRole enrichment, console + file sinks
WP-15 Host — Dead Letter Monitoring (REQ-HOST-8a) [x] Complete 2026-03-16 DeadLetterMonitorActor with count tracking
WP-16 Host — CoordinatedShutdown (REQ-HOST-9) [x] Complete 2026-03-16 CLR shutdown hook, no Environment.Exit
WP-17 Host — Windows Service (REQ-HOST-5) [x] Complete 2026-03-16 UseWindowsService() in both startup paths
WP-18 Central UI — Blazor Server Shell [x] Complete 2026-03-16 Bootstrap 5, role-aware NavMenu, LDAP mapping CRUD
WP-19 Central UI — Login/Logout Flow [x] Complete 2026-03-16 LDAP auth → JWT → HTTP-only cookie
WP-20 Central UI — Role-Aware Navigation [x] Complete 2026-03-16 AuthorizeView per role, route guards, redirect components
WP-21 Central UI — Failover Behavior [x] Complete 2026-03-16 SignalR reconnection overlay, JWT survives, streams lost noted
WP-22 Integration Tests [x] Complete 2026-03-16 Startup validation, auth flow, audit transactions, readiness

Verification Gate

# Gate Criterion Pass Notes
1 Configuration Database creates full schema [x] 25 tables via initial migration
2 Repositories pass CRUD integration tests [x] SecurityRepository + CentralUiRepository
3 Audit Service transactional guarantee [x] Commit + rollback tests pass
4 Optimistic concurrency works [x] DbUpdateConcurrencyException on stale deployment
5 LDAP authentication works [x] Unit tests pass; GLAuth integration skipped (no server)
6 JWT lifecycle correct [x] Claims, refresh, idle timeout all tested
7 Role extraction correct [x] Multi-role, site-scoped, unrecognized groups
8 Authorization policies enforce permissions [x] Admin/Design/Deployment + site scope
9 Shared Data Protection keys work [x] Cross-instance protect/unprotect test
10 Startup validation catches bad config [x] 19 validation rule tests
11 Readiness gating works [x] /health/ready endpoint returns status
12 Akka.NET boots with cluster config [x] AkkaHostedService creates ActorSystem
13 Serilog enrichment works [x] SiteId/NodeHostname/NodeRole in output
14 Dead letters logged and counted [x] TestKit verification
15 CoordinatedShutdown triggers cleanly [x] HOCON config + no Environment.Exit
16 Windows Service configured [x] UseWindowsService() present
17 Blazor Server shell works [x] Login, dashboard, LDAP mappings, Bootstrap 5
18 Role-aware navigation works [x] AuthorizeView, route guards
19 Failover behavior handled [x] Reconnection overlay, JWT survives
20 End-to-end testable outcome [x] Integration tests cover auth flow + audit + startup

Summary

  • Total WPs: 22/22 complete
  • Tests: 186 passed, 1 skipped (LDAP integration needs GLAuth), 0 failed
  • Build: 0 errors, 0 warnings
  • Verification gate: 20/20 pass
  • Questions logged: 0 (all pre-resolved)
  • Codex review: Skipped (best-effort per procedure)