From 0b19400395e56b924d0f4046d5ae5c9b5a89756d Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Thu, 6 Aug 2026 19:37:54 -0400 Subject: [PATCH] =?UTF-8?q?docs(plans):=20all=20five=20program-filed=20iss?= =?UTF-8?q?ues=20(#542=E2=80=93#546)=20fixed,=20live-gated,=20merged=20@?= =?UTF-8?q?=209420f8ef=20and=20CLOSED;=20#547=20filed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Claude-Session: https://claude.ai/code/session_014WNM4vjoVksyyBraTXSZE1 --- .../2026-08-06-clusterclient-to-grpc-tracking.md | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/docs/plans/2026-08-06-clusterclient-to-grpc-tracking.md b/docs/plans/2026-08-06-clusterclient-to-grpc-tracking.md index 2d4c9561..bcbeb30f 100644 --- a/docs/plans/2026-08-06-clusterclient-to-grpc-tracking.md +++ b/docs/plans/2026-08-06-clusterclient-to-grpc-tracking.md @@ -158,11 +158,17 @@ Checks a gate could not drive, named + carried to the next gate (proportionate-g | Issue | What | Status | |---|---|---| -| [lmxopcua#542](https://gitea.dohertylan.com/dohertj2/lmxopcua/issues/542) | `FleetStatusBroadcaster` derives "fleet" from central's own gossip ring — silently central-pair-blind since mesh Phase 6; pre-existing, transport-independent, out of this program's scope | FILED 2026-08-06 | -| [lmxopcua#544](https://gitea.dohertylan.com/dohertj2/lmxopcua/issues/544) | `ConfigPublishCoordinatorTimeoutTests.DeadlineElapsed_for_current_deployment_marks_TimedOut` is racy on its own terms (150 ms wall-clock deadline; row inserted after spawn) — flaked 2/~11 full runs once 1A.2 grew the suite; green at base. Fix the test (inject clock / raise deadline) | FILED 2026-08-06 (1A.3) | -| [lmxopcua#545](https://gitea.dohertylan.com/dohertj2/lmxopcua/issues/545) | Mesh command/ack planes are h2c-only — the per-cluster PSK crosses the network in cleartext on a write surface (precedent: every sibling gRPC plane; trusted-site-link assumption). Decide: accepted risk, or a `UseTls`/scheme option | FILED 2026-08-06 (1A.3) | -| [lmxopcua#546](https://gitea.dohertylan.com/dohertj2/lmxopcua/issues/546) | AdminUI `DriverStatusPanel` (the only Restart/Reconnect control) is referenced by no page — the commands have no reachable UI; pre-existing, found by the 1A gate | FILED 2026-08-06 | -| [lmxopcua#543](https://gitea.dohertylan.com/dohertj2/lmxopcua/issues/543) | The three pre-existing auth interceptors (`TelemetryStream`/`ConfigServe`/`LocalDbSync`) treat a whitespace-only key as SET (`IsNullOrEmpty`), so a whitespace `Telemetry:ApiKey` etc. opens the endpoint to a whitespace bearer; the two new mesh interceptors use `IsNullOrWhiteSpace`. Backport is a behaviour change to shipped endpoints — own issue, out of this program's scope | FILED 2026-08-06 | +| [lmxopcua#542](https://gitea.dohertylan.com/dohertj2/lmxopcua/issues/542) | `FleetStatusBroadcaster` derives "fleet" from central's own gossip ring — silently central-pair-blind since mesh Phase 6; pre-existing, transport-independent, out of this program's scope | **CLOSED 2026-08-06** — resolved by DELETION (merge `d01b717e`): scoping found the whole chain dead end-to-end (hub had zero clients; heartbeat had no production sender), so it was deleted per the #522/#507 precedent rather than rewired; `/fleet` + Phase 5 telemetry are the real cross-mesh-correct sources | +| [lmxopcua#544](https://gitea.dohertylan.com/dohertj2/lmxopcua/issues/544) | `ConfigPublishCoordinatorTimeoutTests.DeadlineElapsed_for_current_deployment_marks_TimedOut` is racy on its own terms (150 ms wall-clock deadline; row inserted after spawn) — flaked 2/~11 full runs once 1A.2 grew the suite; green at base. Fix the test (inject clock / raise deadline) | **CLOSED 2026-08-06** — fixed test-only (merge `1df84703`, commit `722a222d`): row seeded before spawn + 5-min un-hittable deadline; 5× consecutive green | +| [lmxopcua#545](https://gitea.dohertylan.com/dohertj2/lmxopcua/issues/545) | Mesh command/ack planes are h2c-only — the per-cluster PSK crosses the network in cleartext on a write surface (precedent: every sibling gRPC plane; trusted-site-link assumption). Decide: accepted risk, or a `UseTls`/scheme option | **CLOSED 2026-08-06** — option 1, accepted + recorded once for all five planes (merge `1df84703`, commit `17a822b7`): new `docs/security.md` §"Internal gRPC planes (h2c)"; UseTls remains recorded future work, all-five-together | +| [lmxopcua#546](https://gitea.dohertylan.com/dohertj2/lmxopcua/issues/546) | AdminUI `DriverStatusPanel` (the only Restart/Reconnect control) is referenced by no page — the commands have no reachable UI; pre-existing, found by the 1A gate | **CLOSED 2026-08-06** — wired into `/hosts` as a collapsed per-driver Controls expander (merge `9420f8ef`); source-scan pin against re-orphaning; live-verified (browser Reconnect → both SITE-A nodes reconnected `SITEA-modbus`) | +| [lmxopcua#543](https://gitea.dohertylan.com/dohertj2/lmxopcua/issues/543) | The three pre-existing auth interceptors (`TelemetryStream`/`ConfigServe`/`LocalDbSync`) treat a whitespace-only key as SET (`IsNullOrEmpty`), so a whitespace `Telemetry:ApiKey` etc. opens the endpoint to a whitespace bearer; the two new mesh interceptors use `IsNullOrWhiteSpace`. Backport is a behaviour change to shipped endpoints — own issue, out of this program's scope | **CLOSED 2026-08-06** — backported (merge `1df84703`, commit `f10f4c37`), red-first verified, plus the two missing one-public-ctor pins; live-gated on docker-dev: whitespace-configured key denies a whitespace bearer AND a real key (fail-closed), real-key positive path restored after revert | + +All five issues above were fixed, review-chained, merged to `master` @ `9420f8ef` and pushed, +live-gated on docker-dev, and closed on 2026-08-06 (full suite on the merge SHA: exit 0, 50/50 +suites, 9,333 passed / 0 failed). Side-find filed as +[lmxopcua#547](https://gitea.dohertylan.com/dohertj2/lmxopcua/issues/547) (stale pre-#520 authz +claims in `docs/security.md`'s summary). ## Known constraints carried from the research (do not rediscover)