Joseph Doherty
edd925e277
Merge branch 'worktree-agent-a0098b40576d74cfd' into arch-review-remediation
2026-08-14 21:15:32 -04:00
Joseph Doherty
48b3c40a7f
perf(deploy): flatten-session caching, bulk DeploySiteAsync, paged management queries
2026-08-14 21:14:22 -04:00
Joseph Doherty
5db2a810c0
perf(central): set-based ingest, aligned partition purge, KPI query shapes, EF hygiene
2026-08-14 21:07:12 -04:00
Joseph Doherty
ca4b0dd849
merge(r2): r2-plan04
2026-07-13 11:09:36 -04:00
Joseph Doherty
92936747b7
fix(security): additive permitted-sites filter on secured-write query/count (plan R2-07 T5)
2026-07-13 10:48:45 -04:00
Joseph Doherty
a1c7c4ef26
feat(kpi): GetLatestRollupHourAsync watermark seam for the backfill fast-path (plan R2-04 T2)
2026-07-13 09:44:57 -04:00
Joseph Doherty
09f67d1c65
feat(kpihistory): add hourly rollup fold + query + purge repository methods (plan #22 T3)
...
Add FoldHourlyRollupsAsync (in-memory grouped, per-metric gauge-last/rate-sum,
idempotent upsert on the series+hour key with null-ScopeKey equality, exclusive
upper hour bound so the in-progress hour is never folded), GetHourlySeriesAsync
(same KpiSeriesPoint contract as GetRawSeriesAsync), and PurgeRollupsOlderThanAsync
(one-hour-sliced batched DELETE mirroring PurgeOlderThanAsync). Adds 7 repo tests.
Claude-Session: https://claude.ai/code/session_01MtdgwpEeCUn6cUA5f1LMPj
2026-07-10 11:50:53 -04:00
Joseph Doherty
0fad6817c2
feat(config-db): secured-write TryMarkExpiredAsync CAS + CountAsync (arch-review S2/P3)
...
Claude-Session: https://claude.ai/code/session_01MtdgwpEeCUn6cUA5f1LMPj
2026-07-10 05:04:18 -04:00
Joseph Doherty
71189298a2
perf(kpi-history): time-sliced batched purge replaces the single daily mega-DELETE
2026-07-09 09:06:42 -04:00
Joseph Doherty
b59aa2d717
fix(audit-log): explicit long CommandTimeout on partition-switch and per-channel purge maintenance paths
2026-07-09 06:43:23 -04:00
Joseph Doherty
9cff87fe85
docs(comments): strip internal task/milestone/bundle bookkeeping from code comments
...
Remove project bookkeeping citations from shipped code comments across the
solution: hyphenated task IDs (WP-14, StoreAndForward-025), milestone/task/
issue refs (M3, Task 4, Audit Log #23 , #21 ), Bundle X task-bundle labels,
and C/D/K/S/T phase labels.
Comment text only — no code logic, string/log literals, or XML-doc structure
changed. Genuine descriptions are preserved (only the citation is stripped),
and technical lookalikes are retained (UTF-8, SHA-256, T00:00:00, M365,
UTC-5, pre-C4/pre-C5 schema versions). Flagged by the new CommentChecker
TaskReferenceInComment / TrackingReferenceInComment checks plus targeted
grep passes; full solution builds clean, append-only guard tests pass.
2026-07-07 11:03:26 -04:00
Joseph Doherty
fd22f5ce0a
fix(reconcile): expiry-aware pending staging — expired rows no longer block self-heal
2026-06-26 17:23:26 -04:00
Joseph Doherty
6538216b0c
fix(reconcile): heal all concurrently-missing nodes — return existing pending token instead of omitting
2026-06-26 17:15:27 -04:00
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
Joseph Doherty
290acfb1f0
feat(deploy): pending-deployment repository with supersession + purge
2026-06-26 12:25:30 -04:00
Joseph Doherty
c3501ecd72
feat(sms): complete SmsConfig bundle export/import wiring + GetSmsConfigurationByIdAsync (S10b)
2026-06-19 11:10:39 -04:00
Joseph Doherty
3827b98484
fix(sms): S2 review — add DeleteSmsConfigurationAsync + schema/repo tests + doc nit
2026-06-19 10:06:44 -04:00
Joseph Doherty
c5378f8723
feat(sms): NotificationType.Sms + recipient phone + SmsConfiguration + repo iface (S1)
2026-06-19 09:42:27 -04:00
Joseph Doherty
dbe51e5f25
fix(m9/T24a): scope move-guard native-alarm scan to source-site templates (Ordinal); purpose-built include; add guard-4 + repo tests
2026-06-18 11:38:31 -04:00
Joseph Doherty
fbe4ddaf58
feat(m9/T32a): SharedSchema entity + EF config + idempotent migration + repository
2026-06-18 11:26:48 -04:00
Joseph Doherty
48111b50fd
feat(m9/T24a): guarded move-data-connection-between-sites command + handler
2026-06-18 11:20:58 -04:00
Joseph Doherty
1f7bb7ace3
feat(mgmt): secured-write approve relays to site MxGateway write with CAS race guard (T14b)
2026-06-18 02:59:43 -04:00
Joseph Doherty
c799f41d53
feat(db): PendingSecuredWrite entity + migration + repository (T14b)
2026-06-18 02:09:31 -04:00
Joseph Doherty
460777bffa
feat(kpi): K1 — KpiSample + IKpiSampleSource + IKpiHistoryRepository contracts (Commons)
2026-06-17 19:40:17 -04:00
Joseph Doherty
50b674accc
feat(audit): M5.5 per-channel retention overrides via purge-role bounded delete (T3)
2026-06-16 22:05:08 -04:00
Joseph Doherty
55630b48b6
feat(audit): M5.6 SourceNode sentinel backfill (purge-role) + CLI + runbook note (T5)
2026-06-16 22:02:21 -04:00
Joseph Doherty
209f368cb5
feat(audit): M5.2 per-node stuck-count KPIs (T6) — repo per-node aggregation, actor message pair, CentralUI tiles
2026-06-16 21:34:14 -04:00
Joseph Doherty
eabf270d71
docs: complete XML doc coverage (returns, summaries, inheritdoc)
...
Resolve all 622 issues flagged by the enhanced CommentChecker: add missing
<returns> tags (incl. the standard phrasing on non-generic Task methods),
add missing <summary> tags, and replace misused/redundant <inheritdoc/> on
members that override or implement nothing with real documentation.
Documentation-only — no behavior change; solution builds clean.
2026-06-03 11:39:32 -04:00
Joseph Doherty
db707bb0de
feat(audit)!: ScadaBridge C3 — swap to canonical ZB.MOM.WW.Audit.AuditEvent across seams/emitters/DTO/redactor wiring; transitional 24-col storage shim (Task 2.5)
2026-06-02 12:37:50 -04:00
Joseph Doherty
afa55981d5
feat(auth)!: ScadaBridge retire SQL Server ApiKey entity + ApprovedApiKeyIds + legacy hashing; EF migration RetireInboundApiKeyStore; re-issue runbook + CHANGELOG (re-arch C5/E) — BREAKING: X-API-Key -> Bearer sbk_, keys re-issued
2026-06-02 05:39:59 -04:00
Joseph Doherty
aedd17ca7f
feat(configdb): native alarm source repository CRUD + eager-load includes
2026-05-29 15:56:35 -04:00
Joseph Doherty
7b0b9c7365
refactor: rename ScadaLink → ZB.MOM.WW.ScadaBridge (code + projects + namespaces)
...
Solution + 23 src projects + 26 test projects renamed; folders, csproj,
namespaces, and ScadaLinkDbContext/ScadaBridgeDbContext class updated.
ActorSystem "scadalink" → "scadabridge", Akka seed-node URLs migrated.
SQL roles/logins, LDAP domains, CLI command name, and CLI config dir
(~/.scadalink → ~/.scadabridge) also renamed.
Build green; 5 Host.Tests fail awaiting SQL login rename in next commit.
Pre-existing StaleTagMonitor timing flakes unchanged.
Rename script committed at tools/rename-to-scadabridge.sh.
2026-05-28 09:37:45 -04:00