This website requires JavaScript.
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
b8ac7e35e6
test(cluster): self-form fallback — lone-seed forms, disabled waits, site-node guard
Joseph Doherty
2026-07-22 06:08:28 -04:00
9ded86342e
feat(cluster): InitJoin self-form fallback armed via Akka.Hosting startup task
Joseph Doherty
2026-07-22 06:06:31 -04:00
979dc102dd
feat(cluster): SelfFormAfter option (bootstrap self-form fallback window)
Joseph Doherty
2026-07-22 06:05:34 -04:00
8e195263f6
docs(claude): record the two redundancy corrections in the project instructions
Joseph Doherty
2026-07-21 19:05:32 -04:00
0de1352e55
fix(deps): pin System.Security.Cryptography.Xml 10.0.10 — fresh restores were red
Joseph Doherty
2026-07-21 18:59:48 -04:00
84c6524edc
docs(mesh): record phases 0a/0b as done and plan phase 1
Joseph Doherty
2026-07-21 18:46:10 -04:00
b2d19a1730
fix(tests): repair the DriverTypeNames guard, and stop MSBuild hoarding worker nodes
Joseph Doherty
2026-07-21 18:42:34 -04:00
50b55ee4b9
fix(redundancy): elect the Primary by cluster age, not by address
Joseph Doherty
2026-07-21 18:39:07 -04:00
2964361a6f
fix(cluster): auto-down downing strategy — a two-node pair could not survive an oldest-node crash
Joseph Doherty
2026-07-21 18:32:42 -04:00
c6fb8bb0ad
docs(design): correct 6.2 — the keep-oldest gap is closed upstream and live here
Joseph Doherty
2026-07-21 14:16:18 -04:00
8838e92d0a
fix(tests): StopNodeBAsync also has to stop the node, not just dispose it
Joseph Doherty
2026-07-21 10:52:57 -04:00
835fc08c3f
fix(tests): stop the integration host from ballooning to 30 GB
Joseph Doherty
2026-07-21 10:35:35 -04:00
06b5d81bfb
Merge feat/localdb-phase2: alarm store-and-forward on LocalDb + live-gate fixes
Joseph Doherty
2026-07-21 10:17:45 -04:00
4caaa11e9e
docs(design): fix two staleness artefacts the settled decisions introduced
Joseph Doherty
2026-07-21 10:09:10 -04:00
fe12ed9d34
docs(design): settle the three open questions on the per-cluster mesh
Joseph Doherty
2026-07-21 10:07:00 -04:00
f862804a35
docs(design): per-cluster Akka mesh — separate 2-node mesh per application Cluster
Joseph Doherty
2026-07-21 06:46:17 -04:00
ad385eb70f
docs(redundancy): record the per-Akka-cluster role-election limitation
Joseph Doherty
2026-07-21 06:18:57 -04:00
f9f1b8fcee
fix(localdb): phase-2 live gate — 4 production defects found and fixed
Joseph Doherty
2026-07-21 06:13:01 -04:00
2e4ccf7fe9
chore(localdb): phase-2 DoD sweep
Joseph Doherty
2026-07-21 05:03:57 -04:00
4480a7d755
docs(localdb): record deviations D-6 and D-7 in the phase-2 recon
Joseph Doherty
2026-07-21 04:47:35 -04:00
f76d1f91e5
docs+chore(localdb): phase-2 rig config + docs
Joseph Doherty
2026-07-21 04:43:37 -04:00
271fcc4e15
test(localdb): alarm S&F convergence scenarios
Joseph Doherty
2026-07-21 04:39:32 -04:00
af545efdf5
feat(localdb): one-time alarm-historian.db migrator
Joseph Doherty
2026-07-21 04:31:10 -04:00
71379816e7
feat(localdb): alarm S&F on LocalDb with primary-gated drain (cutover)
Joseph Doherty
2026-07-21 04:13:00 -04:00
8a9cb40a72
feat(localdb): alarm_sf_events replicated table
Joseph Doherty
2026-07-21 03:58:50 -04:00
124de57e6f
docs(localdb): phase-2 recon findings
Joseph Doherty
2026-07-21 03:56:06 -04:00
2e46d0544e
Merge docs/phase2-stop-condition: Phase 2 Task 0 STOP condition resolved (does not fire)
Joseph Doherty
2026-07-21 03:46:56 -04:00
f2049a31d0
docs(localdb-phase2): pre-answer Task 0's STOP condition — it does not fire
Joseph Doherty
2026-07-21 03:46:56 -04:00
d218282cd6
Merge docs/track-deferred-items: track deferred work as issues; fix stale limitation
Joseph Doherty
2026-07-21 03:37:26 -04:00
5ebf9876a5
docs: file Gitea issues for every deferred item; correct a stale limitation
Joseph Doherty
2026-07-21 03:37:25 -04:00
7808faa7f6
Merge fix/486: fail the apply when the deployment artifact could not be read
Joseph Doherty
2026-07-21 03:27:58 -04:00