Joseph Doherty
|
ec2aa2bbac
|
feat(reconcile): site-reconcile messages + expected-set/stage-if-absent repo
- Commons: ReconcileSiteRequest / ReconcileSiteResponse / ReconcileGapItem
message contracts (site→central ClusterClient on startup; central reply with
gap fetch tokens + orphan list + base URL).
- Commons: ExpectedDeployment projection record (Commons/Types/Deployment/),
lightweight join of DeployedConfigSnapshot + Instance (no ConfigJson).
- IDeploymentManagerRepository: GetExpectedDeploymentsForSiteAsync (inner-join
query returning deployed set for a site, excluding snapshot-less instances) +
StagePendingIfAbsentAsync (insert-if-absent, self-contained save, returns bool;
does NOT supersede — an existing pending row signals in-flight delivery).
- DeploymentManagerRepository: implement both methods; StagePendingIfAbsent
commits internally (matches PurgeExpiredPendingDeployments convention).
- ReconcileRepositoryTests: 4 tests covering expected-set filter/IsEnabled/
cross-site isolation, empty-site, stage-absent (true + row retrievable),
stage-present (false + existing row unchanged); all pass.
|
2026-06-26 16:04:12 -04:00 |
|