Commit Graph

  • 02177fec7c docs(mesh): Phase 6 plan — mesh partition + co-location topology Joseph Doherty 2026-07-24 01:07:54 -04:00
  • 35552a9608 Merge feat/mesh-phase5: per-cluster mesh Phase 5 — gRPC live-telemetry stream Joseph Doherty 2026-07-23 17:20:53 -04:00
  • f134935f99 docs(mesh-phase5): live gate PASSED — record + program status DONE Joseph Doherty 2026-07-23 17:11:52 -04:00
  • 97b2911327 chore(mesh-phase5): task ledger — tasks 0-11 complete, live gate pending Joseph Doherty 2026-07-23 16:56:13 -04:00
  • d15c613ef3 feat(mesh-phase5): dark-switch central telemetry ingest (Dps bridges | Grpc dialer) Joseph Doherty 2026-07-23 16:48:34 -04:00
  • 84fa2e1e43 fix(mesh-phase5): dial supervisor — re-dial on endpoint change, pin no-restart invariant, throttle skip warnings Joseph Doherty 2026-07-23 16:43:09 -04:00
  • ffb75b7854 chore(mesh-phase5): rig telemetry ports + shared key + ClusterNode.GrpcPort seed Joseph Doherty 2026-07-23 16:39:29 -04:00
  • e99ea40e2f docs(mesh-phase5): telemetry stream — Telemetry.md, config keys, supersede §6.3, program status Joseph Doherty 2026-07-23 16:33:29 -04:00
  • 1104785c89 feat(mesh-phase5): central telemetry dial supervisor (discover + reconnect + feed sinks) Joseph Doherty 2026-07-23 16:28:57 -04:00
  • af9c9d78da test(mesh-phase5): 3-port listener reachability + comment fix for the telemetry endpoint Joseph Doherty 2026-07-23 16:18:15 -04:00
  • a279a43ed4 fix(mesh-phase5): harden telemetry client onError contract (validate/isolate/defend) Joseph Doherty 2026-07-23 16:12:02 -04:00
  • f131c1cca5 feat(mesh-phase5): host the telemetry gRPC server on driver nodes (dedicated h2c port) Joseph Doherty 2026-07-23 16:05:40 -04:00
  • 2e70ef88aa fix(mesh-phase5): telemetry service — graceful client-disconnect + null-safe required-string mapping Joseph Doherty 2026-07-23 16:02:26 -04:00
  • 50f1620d79 feat(mesh-phase5): fail-closed bearer interceptor for the telemetry stream Joseph Doherty 2026-07-23 15:58:45 -04:00
  • c78034f0b9 feat(mesh-phase5): central telemetry dialer client + proto->domain converters Joseph Doherty 2026-07-23 15:55:06 -04:00
  • e742fee452 feat(mesh-phase5): node-side TelemetryStreamService (hub -> server-streaming) Joseph Doherty 2026-07-23 15:48:06 -04:00
  • 909d75357b test(mesh-phase5): cover the ScriptedAlarmHostActor + VirtualTagActor telemetry taps Joseph Doherty 2026-07-23 15:38:12 -04:00
  • 7bdb6d00ec fix(mesh-phase5): telemetry hub — plain Dictionary under gate, concurrency stress test, priming/eviction notes Joseph Doherty 2026-07-23 15:30:24 -04:00
  • 8e5090edf3 feat(mesh-phase5): tap the 4 telemetry publish seams into the local hub (DPS intact) Joseph Doherty 2026-07-23 15:27:29 -04:00
  • 9882b1d250 feat(mesh-phase5): node-local telemetry hub (snapshot-replay + drop-oldest fan-out) Joseph Doherty 2026-07-23 15:08:56 -04:00
  • 53ae0100a2 feat(mesh-phase5): Telemetry/TelemetryDial options + fail-closed validators Joseph Doherty 2026-07-23 15:03:40 -04:00
  • a845a6d2fd feat(mesh-phase5): telemetry.proto contract + oneof + contract-lock test Joseph Doherty 2026-07-23 14:58:53 -04:00
  • 094c29d13d docs(mesh-phase5): plan — gRPC live-telemetry stream (4-channel scope, dark switch, authed) Joseph Doherty 2026-07-23 14:56:20 -04:00
  • 3a590a0cb7 refactor(mesh-phase4): retire EfAlarmConditionStateStore + drop dead ScriptedAlarmState table (Task 9) Joseph Doherty 2026-07-23 14:33:11 -04:00
  • 26fad75c8a Merge branch 'feat/mesh-phase4' — per-cluster mesh Phase 4 (cut the driver-side ConfigDb connection) Joseph Doherty 2026-07-23 14:18:28 -04:00
  • 1281aebfa7 docs(mesh-phase4): live gate PASSED — driver nodes run ConfigDb-free Joseph Doherty 2026-07-23 14:03:28 -04:00
  • 0170614961 docs(mesh-phase4): Task 10 done; Task 11 live gate in progress Joseph Doherty 2026-07-23 13:22:35 -04:00
  • 0be20ab4fb chore(mesh-phase4): rig site nodes run with no ConfigDb string (FetchAndCache mandatory) Joseph Doherty 2026-07-23 13:22:18 -04:00
  • 95fa7bd5a0 docs(mesh-phase4): Task 8 done (55a6e1f2 recorded) Joseph Doherty 2026-07-23 13:19:27 -04:00
  • 55a6e1f2b2 docs(mesh-phase4): ServiceLevel semantics on DB-less nodes + driver ConfigDb cut Joseph Doherty 2026-07-23 13:18:57 -04:00
  • 6f21213f70 test(mesh-phase4): pin driver-only ConfigDb-free DI graph + fused-node mapper ordering Joseph Doherty 2026-07-23 13:10:42 -04:00
  • 4253d20248 docs(mesh-phase4): Task 3 done (73ae8ec5) — address-space wipe fixed Joseph Doherty 2026-07-23 12:58:37 -04:00
  • 73ae8ec5c5 fix(mesh-phase4): OpcUaPublish diff-applies from in-hand bytes with no ConfigDb (no wipe) Joseph Doherty 2026-07-23 12:53:28 -04:00
  • e791832d7c docs(mesh-phase4): Tasks 4+6 done (d9071607); Task 3 confirmed hard prereq Joseph Doherty 2026-07-23 12:48:13 -04:00
  • d907160747 feat(mesh-phase4): DriverHostActor runs ConfigDb-free (LocalDb alarm store, guarded acks) Joseph Doherty 2026-07-23 12:39:41 -04:00
  • 4f4cdd05ec feat(mesh-phase4): LocalDb alarm-condition-state store (replicated, pair-local) Joseph Doherty 2026-07-23 12:19:44 -04:00
  • 34b613d942 docs(mesh-phase4): Task 2 done; fold review findings into Task 4 brief Joseph Doherty 2026-07-23 12:07:42 -04:00
  • 9565827275 feat(mesh-phase4): retire DB-reachability from ServiceLevel on DB-less nodes Joseph Doherty 2026-07-23 11:55:43 -04:00
  • 5c40908a55 docs(mesh-phase4): add Task 1b (driver-only LDAP mapper) discovered during Task 1 Joseph Doherty 2026-07-23 11:48:45 -04:00
  • 833e45db9c fix(mesh-phase4): driver-only nodes map LDAP groups from appsettings (no ConfigDb grants) Joseph Doherty 2026-07-23 11:44:44 -04:00
  • a41582ea6a feat(mesh-phase4): register ConfigDb only on admin-role nodes Joseph Doherty 2026-07-23 11:38:40 -04:00
  • d630a7e267 feat(mesh-phase4): driver-only node must be FetchAndCache (validator) Joseph Doherty 2026-07-23 11:29:45 -04:00
  • bc611969a9 docs(mesh-phase4): plan — cut the driver-side ConfigDb connection Joseph Doherty 2026-07-23 11:22:48 -04:00
  • d01b0695c2 Merge branch 'feat/mesh-phase3' — per-cluster mesh Phase 3 (config fetch-and-cache) Joseph Doherty 2026-07-22 22:35:14 -04:00
  • 248e70b425 docs(mesh): Phase 3 live-gate record — PASSED (caught+fixed the Sealed-gate deadlock) Joseph Doherty 2026-07-22 20:48:58 -04:00
  • d9de4e3019 fix(mesh): serve the artifact regardless of deployment status (Phase 3 live-gate deadlock) Joseph Doherty 2026-07-22 20:21:47 -04:00
  • 44df30236e fix(docker-dev): pin the build stage to linux/amd64 so Grpc.Tools protoc runs Joseph Doherty 2026-07-22 20:11:28 -04:00
  • cf6110d02c docs(mesh): ConfigSource/ConfigServe config, rig flip switch, Phase 3 as shipped Joseph Doherty 2026-07-22 20:06:23 -04:00
  • b3210686e2 chore(mesh): mark Phase 3 tasks 7-8 complete Joseph Doherty 2026-07-22 19:58:10 -04:00
  • ffbcaa93f2 test(mesh): real two-Host gRPC artifact-fetch boundary test with wrong-key control Joseph Doherty 2026-07-22 19:57:48 -04:00
  • fc568ae0fa test(mesh): #485 empty/corrupt/mismatch coverage on the FetchAndCache paths Joseph Doherty 2026-07-22 19:54:42 -04:00
  • 23cd6e0118 chore(mesh): mark Phase 3 tasks 5-6 complete Joseph Doherty 2026-07-22 19:45:12 -04:00
  • 6d00473866 feat(mesh): FetchAndCache bootstrap from the LocalDb pointer; no driver-side config SQL read Joseph Doherty 2026-07-22 19:44:48 -04:00
  • 648f173b18 feat(mesh): FetchAndCache apply path — fetch->cache->apply-from-bytes, null=apply-failure Joseph Doherty 2026-07-22 19:39:26 -04:00
  • 1a7e3f7ea3 chore(mesh): mark Phase 3 tasks 3-4 complete Joseph Doherty 2026-07-22 19:29:09 -04:00
  • 7a8fb5f129 feat(mesh): node gRPC artifact fetcher — SHA-verified reassembly, endpoint failover, null-on-any-failure Joseph Doherty 2026-07-22 19:28:48 -04:00
  • 4d88f67c0d feat(mesh): config-serve auth interceptor + dedicated h2c listener (fail-closed bearer) Joseph Doherty 2026-07-22 19:22:55 -04:00
  • b28c071bec chore(mesh): mark Phase 3 tasks 0-2 complete Joseph Doherty 2026-07-22 19:08:30 -04:00
  • 7d7de482b7 feat(mesh): central DeploymentArtifactService — stream the sealed artifact, NotFound-hide the rest Joseph Doherty 2026-07-22 19:08:20 -04:00
  • 62e8f54f71 feat(mesh): deployment_artifact.v1 proto + first in-repo Grpc.Tools codegen Joseph Doherty 2026-07-22 19:04:58 -04:00
  • 9d1e60c00c feat(mesh): ConfigSource/ConfigServe options + validator (Phase 3 dark switch) Joseph Doherty 2026-07-22 19:03:39 -04:00
  • b3cb0f4a54 docs(mesh): Phase 3 plan — config fetch-and-cache from central (gRPC + shared key) Joseph Doherty 2026-07-22 19:00:36 -04:00
  • 6eaa81cae7 Merge branch 'feat/mesh-phase2' — per-cluster mesh Phase 2 (ClusterClient transport) Joseph Doherty 2026-07-22 18:42:57 -04:00
  • 32055c2238 docs(mesh): Phase 2 live-gate record + correct the buffer-size rationale Joseph Doherty 2026-07-22 18:40:42 -04:00
  • 986b640eea chore(mesh): mark Phase 2 task 9 complete Joseph Doherty 2026-07-22 17:46:55 -04:00
  • e4cb9a08e0 docs(mesh): MeshTransport config, Phase 2 as shipped, design-doc correction Joseph Doherty 2026-07-22 17:46:46 -04:00
  • 4eca87f04d chore(mesh): mark Phase 2 task 8 complete; record the orphaned-client follow-up Joseph Doherty 2026-07-22 17:32:49 -04:00
  • 5468b79d19 test(mesh): real two-ActorSystem ClusterClient boundary test with falsifiability control Joseph Doherty 2026-07-22 17:32:19 -04:00
  • d246a7e44d docs(mesh): live-gate step 8 — single-oldest-central rotation discriminator for the per-node comm-actor property (replaces the dropped Task 6 assertion) Joseph Doherty 2026-07-22 17:18:49 -04:00
  • 68b804c88c chore(mesh): mark Phase 2 tasks 6-7 complete Joseph Doherty 2026-07-22 16:50:28 -04:00
  • 2a2e54f083 feat(mesh): route deploy, driver-control and alarm commands through the mesh router Joseph Doherty 2026-07-22 16:50:27 -04:00
  • 16d598560a feat(mesh): register comm actors with the receptionist; pin the wire-contract paths Joseph Doherty 2026-07-22 16:42:07 -04:00
  • 95e4f97529 chore(mesh): mark Phase 2 tasks 3-5 complete Joseph Doherty 2026-07-22 12:19:37 -04:00
  • 5cb0e72166 feat(mesh): node subscribers accept EventStream commands; _coordinatorOverride -> _ackRouter Joseph Doherty 2026-07-22 12:19:29 -04:00
  • 915beec11a feat(mesh): NodeCommunicationActor — inbound commands to the node-local EventStream Joseph Doherty 2026-07-22 12:12:12 -04:00
  • d5b5cb6ede feat(mesh): CentralCommunicationActor — dark-switched fan-out, DB-sourced contacts Joseph Doherty 2026-07-22 12:10:05 -04:00
  • e762ae00f2 chore(mesh): mark Phase 2 tasks 0-2 complete Joseph Doherty 2026-07-22 10:45:25 -04:00
  • 0d6669d5ff feat(mesh): MeshCommand envelope + generation-suffixed ClusterClient factory Joseph Doherty 2026-07-22 10:45:13 -04:00
  • 7b71a6a35d feat(mesh): receptionist extension, zero ClusterClient buffering, frame-size logging Joseph Doherty 2026-07-22 10:42:54 -04:00
  • 5439f14804 feat(mesh): MeshTransportOptions — dark switch between DPS and ClusterClient Joseph Doherty 2026-07-22 10:39:37 -04:00
  • 1ec831883c docs(mesh): Phase 2 plan — comm actors + ClusterClient transport Joseph Doherty 2026-07-22 10:37:37 -04:00
  • 7654f24dab test(harness): serialize Host.IntegrationTests; drop the reconciler's unused singleton proxy Joseph Doherty 2026-07-22 09:51:10 -04:00
  • 0b7c53f64f test(harness): widen the deploy-seal timeout to match a real two-node deploy Joseph Doherty 2026-07-22 09:28:32 -04:00
  • 14746f2995 test(harness): seed ClusterNode rows in in-memory mode; retarget the failover deploy test Joseph Doherty 2026-07-22 09:19:53 -04:00
  • e27b7f43f5 chore(mesh): mark Phase 1 tasks complete Joseph Doherty 2026-07-22 09:07:48 -04:00
  • ee69caa270 feat(config): add ClusterNode.MaintenanceMode — the hatch the live gate proved missing Joseph Doherty 2026-07-22 09:07:29 -04:00
  • 57e1d01766 docs(mesh): rig seed + Phase 1 documentation Joseph Doherty 2026-07-22 08:38:45 -04:00
  • 90c1302f71 feat(fleet): reconcile ClusterNode dial targets against live membership Joseph Doherty 2026-07-22 08:36:44 -04:00
  • d88e245503 feat(deploy): coordinator sources its expected-ack set from ClusterNode rows Joseph Doherty 2026-07-22 08:30:46 -04:00
  • da74ebd696 feat(config): migration AddClusterNodeTransportPorts Joseph Doherty 2026-07-22 08:26:39 -04:00
  • 2bbb02713c feat(config): add ClusterNode.AkkaPort/GrpcPort — central's dial targets Joseph Doherty 2026-07-22 08:22:46 -04:00
  • e7311f11a6 docs(mesh): program tracking — Phase 1 plan already exists from the design session; surface its deploy-seal decision gate Joseph Doherty 2026-07-22 08:12:57 -04:00
  • 9af935f237 docs(cluster): self-first seed ordering replaces the self-form fallback Joseph Doherty 2026-07-22 07:46:02 -04:00
  • 3f24d4d6bf feat(cluster)!: self-first seed ordering replaces the InitJoin self-form watchdog Joseph Doherty 2026-07-22 07:42:06 -04:00
  • a78425ea8f docs(plans): record the Task 8 live finding — self-form races the join handshake Joseph Doherty 2026-07-22 07:19:34 -04:00
  • ea45ace1c3 fix(cluster): don't self-form while a seed peer is reachable — the fallback islanded a restarting node Joseph Doherty 2026-07-22 07:03:07 -04:00
  • d8a85c3d89 feat(adminui): manual failover control on the cluster redundancy page Joseph Doherty 2026-07-22 06:44:44 -04:00
  • 69b697bc3e feat(redundancy): manual failover service — graceful Leave of the driver Primary Joseph Doherty 2026-07-22 06:40:58 -04:00
  • 983310edbb docs(redundancy): record the self-form fallback live gate as PASSED on docker-dev Joseph Doherty 2026-07-22 06:35:06 -04:00
  • b853185cfd docs(redundancy): SelfFormAfter closes the seed-node bootstrap gap Joseph Doherty 2026-07-22 06:10:11 -04:00