Commit Graph

  • 765ff131d8 docs(archreview): log SecuredWrites IBrowseService bUnit-harness failures against PLAN-07 (pre-existing, surfaced during PLAN-03 full-suite run) Joseph Doherty 2026-07-09 05:46:29 -04:00
  • c7a0c92244 docs(archreview): sync PLAN-03 tasks.json — Tasks 25-26 completed (Batch 9, plan complete 26/26) Joseph Doherty 2026-07-09 02:13:13 -04:00
  • 1db0c32115 docs(requirements): sync SiteRuntime + DCL specs with hardening changes (C3/C4/C5 + S1-S6, P2/P4/P6, UA1/UA4 behavior notes) Joseph Doherty 2026-07-09 02:13:13 -04:00
  • c9ac075e39 fix(site-runtime,dcl): low-severity cleanups — observed adapter dispose (S9), alarm-filter overwrite warning (S10), bounded-channel comment (C2), invariant-culture condition fallback (C6) Joseph Doherty 2026-07-09 02:09:06 -04:00
  • 30886c9426 docs(archreview): sync PLAN-03 tasks.json — Tasks 22-24 completed (Batch 8) Joseph Doherty 2026-07-09 01:27:21 -04:00
  • 29ee9176a7 feat(site-runtime): wire ConfigFetchRetryCount into the standby replicated-config fetch (UA2) Joseph Doherty 2026-07-09 01:26:58 -04:00
  • c457e8f464 feat(site-runtime): cert-trust reconcile-on-join — singleton pushes trusted certs to (re)joining site nodes (UA1) Joseph Doherty 2026-07-09 01:22:13 -04:00
  • 39976772d9 feat(site-runtime): CertStoreActor exports trusted certs (thumbprint+DER) for node reconciliation (UA1 groundwork) Joseph Doherty 2026-07-09 01:15:51 -04:00
  • 667d863e58 docs(archreview): mark PLAN-03 Tasks 19-21 (Batch 7) completed in tasks.json Joseph Doherty 2026-07-09 01:10:18 -04:00
  • 2efe1a4202 feat(site-runtime): persist native-alarm display metadata so rehydrated conditions render fully (UA4) Joseph Doherty 2026-07-09 01:09:13 -04:00
  • 326d945d85 perf(site-runtime): coalesce native-alarm mirror persistence into batched flushes (P4) Joseph Doherty 2026-07-09 01:05:20 -04:00
  • d2feb92bfd fix(site-runtime): site SQLite runs WAL with an explicit busy-timeout floor (S8) — concurrent writers stop serializing on the rollback journal Joseph Doherty 2026-07-09 01:00:12 -04:00
  • dd16cd52b2 docs(archreview): mark PLAN-03 Tasks 16-18 (Batch 6) completed in tasks.json Joseph Doherty 2026-07-09 00:55:43 -04:00
  • d124025cc7 perf(site-runtime): per-attribute child routing in InstanceActor — attribute changes reach only interested children (P2) Joseph Doherty 2026-07-09 00:55:26 -04:00
  • 1673268aee perf(dcl): tag->instances reverse index replaces per-update all-instances scan (P3) Joseph Doherty 2026-07-09 00:48:22 -04:00
  • f294b46263 fix(dcl): capture adapter into locals before background tasks — no off-thread reads of the mutable _adapter field (S7) Joseph Doherty 2026-07-09 00:44:09 -04:00
  • ef69fab6f6 docs(archreview): register PLAN-03 Task 15 readiness-handshake deviation as a follow-up (owner: Task 26 doc capture) Joseph Doherty 2026-07-09 00:36:20 -04:00
  • faa9d34cd1 docs(archreview): PLAN-03 tasks.json — mark T13-T15 complete (Batch 5) Joseph Doherty 2026-07-09 00:33:53 -04:00
  • 957db62df1 fix(site-runtime): deployment whose Instance Actor dies during init reports Failed, exactly-once reply (S6) Joseph Doherty 2026-07-09 00:33:40 -04:00
  • db5ad02cc9 test(site-runtime): harden scheduler OldestBusyAge gauge assertion — assert non-null, not strictly-positive (TickCount64 ~15ms granularity flakes under load) Joseph Doherty 2026-07-09 00:33:40 -04:00
  • 9343b4f30f fix(site-runtime): watch every Instance Actor; unexpected termination evicts the dead ref from routing (S6) Joseph Doherty 2026-07-09 00:20:12 -04:00
  • 2dabbbdde0 fix(site-runtime): retry the startup deployed-config load on SQLite failure (S5) — no more silent zero-instance node Joseph Doherty 2026-07-09 00:17:36 -04:00
  • b126fda22e chore(archreview): PLAN-03 tasks.json — mark T10-T12 complete Joseph Doherty 2026-07-09 00:05:24 -04:00
  • fa556b4f8d fix(site-runtime): NativeAlarmActor retries a lost subscribe response, not only a failed one (S4) Joseph Doherty 2026-07-09 00:05:09 -04:00
  • feb6f34e90 fix(site-runtime): InstanceActor retries failed/lost tag subscriptions per connection (S4/UA6) — closes the unknown-connection ordering race Joseph Doherty 2026-07-09 00:03:44 -04:00
  • bd89c1474e perf(site-runtime): AlarmActor trigger expressions evaluate on the script scheduler (P1) Joseph Doherty 2026-07-08 23:59:54 -04:00
  • 6baf5a1d45 chore(archreview): PLAN-03 tasks.json — mark T7-T9 complete Joseph Doherty 2026-07-08 23:50:35 -04:00
  • 5aee90d155 perf(site-runtime): ScriptActor trigger expressions evaluate on the script scheduler, coalesced, edge state actor-confined (P1) Joseph Doherty 2026-07-08 23:50:21 -04:00
  • 467edd74ac feat(site-runtime): stuck-script watchdog names the script holding a scheduler thread past timeout (S2) Joseph Doherty 2026-07-08 23:46:48 -04:00
  • dddafc025e feat(site-runtime): periodic scheduler-stats reporter feeding site health (S2/UA5) Joseph Doherty 2026-07-08 23:43:09 -04:00
  • d44b6a0e52 chore(archreview): PLAN-03 tasks.json — mark T4-T6 complete Joseph Doherty 2026-07-08 23:38:07 -04:00
  • 7d50555fd3 feat(health): additive script-scheduler stats on ISiteHealthCollector + SiteHealthReport (S2/UA5) Joseph Doherty 2026-07-08 23:37:50 -04:00
  • 474ec8a221 feat(site-runtime): script scheduler gauges — queue depth, busy threads, oldest-busy age (S2/UA5) Joseph Doherty 2026-07-08 23:35:09 -04:00
  • b83d1ed19c fix(site-runtime): site-side compile failure now rejects the deployment per spec (S3) — synchronous validation gate before actor creation Joseph Doherty 2026-07-08 23:33:48 -04:00
  • 2caab79c0a chore(archreview): PLAN-03 tasks.json — mark T1-T3 complete Joseph Doherty 2026-07-08 23:22:06 -04:00
  • e20c329cad feat(site-runtime): pure deploy-time compile validator for flattened configs (S3 groundwork) Joseph Doherty 2026-07-08 23:21:42 -04:00
  • a8a01f026b fix(dcl): cancel old event loop + dispose old MxGateway client on reconnect (S1) Joseph Doherty 2026-07-08 23:19:11 -04:00
  • 11eb5157e6 fix(dcl): dispose+detach previous OPC UA client on reconnect (S1) — stops session leak and stale ConnectionLost flapping Joseph Doherty 2026-07-08 23:16:27 -04:00
  • 5d5c747517 docs(archreview): mark PLAN-02 complete (24/24, merged) in master tracker Joseph Doherty 2026-07-08 23:11:52 -04:00
  • ce239f6f8d docs(archreview): PLAN-02 tasks.json — mark T21,T22,T23,T24 complete (final batch) Joseph Doherty 2026-07-08 21:59:13 -04:00
  • ae94b22d7d test(reconciliation): pin inclusive (>=) cursor reads at the site (audit + site-calls); EventId/upsert dedup absorbs boundary duplicates Joseph Doherty 2026-07-08 21:58:57 -04:00
  • 846279f6a8 chore(communication): low-severity cleanup — eviction counting, shared ingest timeout, split app heartbeat interval, doc notes Joseph Doherty 2026-07-08 21:54:42 -04:00
  • 11c72ecf0f feat(health): oldest-parked-message age on the site health report (parked-retention aging signal) Joseph Doherty 2026-07-08 21:49:29 -04:00
  • 0321ad0c20 feat(store-and-forward): peer-join full-buffer resync — standby anti-entropy for the S&F buffer Joseph Doherty 2026-07-08 21:43:11 -04:00
  • e8996f859b docs(archreview): PLAN-02 tasks.json — mark T18,T19,T20 complete (batch 6) Joseph Doherty 2026-07-08 21:22:38 -04:00
  • 3eef9d1077 feat(store-and-forward): GetAllMessagesAsync/ReplaceAllAsync storage primitives for standby buffer resync Joseph Doherty 2026-07-08 21:22:25 -04:00
  • c6ea332c94 perf(store-and-forward): post audit-observer notifications to an ordered single-reader channel, latency-isolating the sweep Joseph Doherty 2026-07-08 21:19:59 -04:00
  • 5fe1b9747b perf(store-and-forward): epoch-ms due-check with additive column, backfill, and (status, due) index Joseph Doherty 2026-07-08 21:14:26 -04:00
  • 992f343f11 docs(archreview): PLAN-02 tasks.json — mark T13,T15,T17 complete (batch 5) Joseph Doherty 2026-07-08 21:02:15 -04:00
  • 499a37ac78 perf(store-and-forward): enable WAL + per-connection busy_timeout on the S&F SQLite store Joseph Doherty 2026-07-08 21:01:53 -04:00
  • 7626d5ba34 test(communication): pin wire round-trip + type identity of cross-cluster message contracts Joseph Doherty 2026-07-08 21:00:02 -04:00
  • 4bdd5f0e4a fix(notifications): Notify.Send enqueues unbounded (maxRetries 0) and defers to sweep — no 30s script-thread block, no stranding Joseph Doherty 2026-07-08 20:56:09 -04:00
  • e2944d201c docs(archreview): PLAN-02 tasks.json — mark T11,T12,T14 complete (batch 4) Joseph Doherty 2026-07-08 20:48:57 -04:00
  • c3a8576863 fix(notifications): park corrupt buffered notification payloads instead of silently discarding as delivered (supersedes StoreAndForward-018) Joseph Doherty 2026-07-08 20:48:16 -04:00
  • 05a71a0260 feat(store-and-forward): deferToSweep enqueue mode with immediate sweep kick for latency-sensitive callers Joseph Doherty 2026-07-08 20:46:08 -04:00
  • 283ce0647c fix(store-and-forward): standby applies Add/Park/Requeue as upserts so a lost Add self-heals Joseph Doherty 2026-07-08 20:42:39 -04:00
  • 9fe3452790 docs(archreview): PLAN-02 tasks.json — mark T8,T9,T16 complete (batch 3) Joseph Doherty 2026-07-08 20:12:03 -04:00
  • 66cb0febad fix(communication): replicate heartbeat marks to the peer central node (closes post-failover offline blind window) Joseph Doherty 2026-07-08 20:11:54 -04:00
  • 59d9cba621 perf(store-and-forward): parallel per-target sweep lanes (cap 4), sequential within lane Joseph Doherty 2026-07-08 20:07:30 -04:00
  • 1459f9407f perf(store-and-forward): short-circuit a (category,target) lane after its first transient failure per sweep Joseph Doherty 2026-07-08 20:06:06 -04:00
  • 03dcd55958 docs(archreview): PLAN-02 tasks.json — mark T4,T6,T7 complete (batch 2) Joseph Doherty 2026-07-08 17:48:39 -04:00
  • 41ed57421d fix(host): wire S&F active-node delivery gate on site nodes (SelfIsPrimary); align S&F doc standby-passive wording Joseph Doherty 2026-07-08 17:48:31 -04:00
  • 1a53b8082a perf(store-and-forward): bound retry sweep with SweepBatchLimit (default 500) on the due-rows query Joseph Doherty 2026-07-08 17:45:11 -04:00
  • e75cd6f3d8 fix(communication): debug-stream teardown/failover unsubscribes via TryGet, never creates or disposes shared channels Joseph Doherty 2026-07-08 17:43:40 -04:00
  • 80013639ef docs(archreview): PLAN-02 tasks.json — mark T3,T5,T10 complete (batch 1) Joseph Doherty 2026-07-08 17:35:39 -04:00
  • 70e7dfd7b9 fix(store-and-forward): inline ordered replication dispatch; Warning + counter on replication failures Joseph Doherty 2026-07-08 17:35:29 -04:00
  • ca5e79e922 fix(communication): key gRPC client cache by (site, endpoint) so per-session failover cannot dispose shared channels Joseph Doherty 2026-07-08 17:33:03 -04:00
  • 76c10c5de6 fix(store-and-forward): gate the retry sweep behind an active-node delivery gate (standby must be passive) Joseph Doherty 2026-07-08 17:30:21 -04:00
  • ec47cb5612 docs(archreview): PLAN-01 complete (23/23) — sync tracker + tasks.json; log deploy-artifact deferral Joseph Doherty 2026-07-08 17:12:46 -04:00
  • dc7a613dae docs(cleanup): sync Traefik + Host docs to oldest-member active-node semantics + DB-gated /health/active; TLS roadmap note Joseph Doherty 2026-07-08 17:09:34 -04:00
  • 5117fa97b9 test(docker): failover drill script — SIGKILL the active central node, assert Traefik recovery Joseph Doherty 2026-07-08 17:05:31 -04:00
  • 1f1dbd916d docs(host): REQ-HOST-6 documents the hand-rolled HOCON bootstrap; drop unused Akka.Hosting packages Joseph Doherty 2026-07-08 16:59:19 -04:00
  • 48e97fee01 feat(host): exit process on unexpected ActorSystem termination — completes the down-if-alone recovery loop Joseph Doherty 2026-07-08 16:56:24 -04:00
  • dea69842d5 fix(host): rate-limit dead-letter warnings (10/min + suppression summary); metric counting unchanged Joseph Doherty 2026-07-08 16:52:25 -04:00
  • 3ce21734b8 fix(docker): 30s stop_grace_period so graceful redeploys aren't SIGKILLed mid-CoordinatedShutdown Joseph Doherty 2026-07-08 16:40:17 -04:00
  • ce66e194a8 feat(cluster): AllowSingleNodeCluster flag — single-seed installs drop the phantom seed Joseph Doherty 2026-07-08 16:39:12 -04:00
  • 0e3c1df1a7 fix(host): dev site seed no longer targets the metrics port; validator rejects seed-vs-MetricsPort Joseph Doherty 2026-07-08 16:37:43 -04:00
  • d962c77bb7 fix(health): evict deleted sites from the aggregator on the periodic site refresh Joseph Doherty 2026-07-08 16:27:38 -04:00
  • 87c7255912 feat(ui): health dashboard shows metrics-stale badge and offline-since timestamp Joseph Doherty 2026-07-08 16:23:43 -04:00
  • c73b7faa11 feat(health): metrics-stale signal + status-transition timestamps; spec now matches heartbeat-liveness code Joseph Doherty 2026-07-08 16:21:30 -04:00
  • 15d91d760f docs(archreview): sync PLAN-01 tracker + tasks.json — Wave 1 T2,T5–T12 done (12/23) Joseph Doherty 2026-07-08 16:14:46 -04:00
  • 6300d6d399 fix(health): acked SendAsync transport — report-loss counter restore is live, not dead code Joseph Doherty 2026-07-08 16:12:48 -04:00
  • 17af376a8e feat(comm): ack site health reports end-to-end (SiteHealthReportAck, additive contract) Joseph Doherty 2026-07-08 16:09:08 -04:00
  • f7b9d342e4 refactor(host): central singletons via CentralSingletonRegistrar — outbox/audit-ingest gain drain tasks Joseph Doherty 2026-07-08 16:05:52 -04:00
  • c255ec31c9 feat(host): CentralSingletonRegistrar — canonical singleton manager+proxy+drain helper Joseph Doherty 2026-07-08 15:59:01 -04:00
  • 7138d47630 test(cluster): restarted original node stays standby — oldest-member active semantics proven (graceful-leave variant per 2-node keep-oldest gap) Joseph Doherty 2026-07-08 15:57:45 -04:00
  • f164f62a8b fix(cluster): give cluster-leave phase a 15s timeout so 10s singleton drains can complete Joseph Doherty 2026-07-08 15:55:06 -04:00
  • ff89e3145c fix(host): /health/active = oldest member + DB reachable — partition-safe Traefik routing Joseph Doherty 2026-07-08 15:51:56 -04:00
  • da6d5ae12c fix(host): unify active-node on oldest-member semantics — purge/self-report/labels now track the singleton host Joseph Doherty 2026-07-08 15:48:07 -04:00
  • 6320be9954 feat(host): ClusterActivityEvaluator — oldest-member (singleton-host) active-node definition Joseph Doherty 2026-07-08 15:43:13 -04:00
  • 6b5c70dd19 docs(archreview): reconcile master tracker + tasks.json with P0 completion (10 tasks done) and SBR follow-up Joseph Doherty 2026-07-08 15:37:41 -04:00
  • 3f8e18c6f7 docs(archreview): mark all six P0 items delivered in the master tracker Joseph Doherty 2026-07-08 15:18:55 -04:00
  • 099728f05a fix(transport): wire template inheritance edges on bundle import (C3) — derived templates no longer land as roots Joseph Doherty 2026-07-08 15:17:47 -04:00
  • 6ff90702f0 docs(archreview): register active-node-crash SBR gap found during P0 (keep-oldest 2-node limitation) Joseph Doherty 2026-07-08 15:11:03 -04:00
  • b8d91dcc5b test(cluster): prove SBR downs a hard-crashed node and the oldest survivor keeps its singleton Joseph Doherty 2026-07-08 15:06:54 -04:00
  • e3a6603c74 test(cluster): add TwoNodeClusterFixture — real two-node in-process cluster rig from production HOCON Joseph Doherty 2026-07-08 14:58:34 -04:00
  • f91e75bfe4 fix(communication): guard per-site ClusterClient creation; add real-factory address-edit lifecycle test Joseph Doherty 2026-07-08 14:57:13 -04:00
  • 75cbac4478 fix(communication): generation-suffixed, sanitized ClusterClient actor names to prevent recreate name collision Joseph Doherty 2026-07-08 14:55:05 -04:00
  • 7231c2044b feat(host): fail-fast DisableLogin environment guard at composition root Joseph Doherty 2026-07-08 14:52:00 -04:00
  • 74c295e37a feat(security): DisableLoginGuard refuses DisableLogin outside Development without explicit ack Joseph Doherty 2026-07-08 14:52:00 -04:00