Gate findings: deploy TimedOut has null failureReason; quarantine logged as 'unknown' and shown as BadInternalError; rig PSK 'REVOKED' warning vs working dispatch #784
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Source: docs/reviews/2026-10-21/gates.md (master
7891b3cb), observations section — found running the #761 docker-dev gates on1b9c36f3.GET /api/deployments/{id}returnsstatus: TimedOutwithfailureReason: null. Only the central log names the node that didn't answer (No ack from: site-b-1:4053). The no-expected-rows branch does set a reason. SetfailureReasonto the list of nodes that never acked.[Script] unknown emitted Error: Script "…" quarantined. The guard's logger carries no ScriptName/ScriptId, soScriptLogCompanionSinklabels itunknownand rate-limits it under one shared key.scripts-*.loghas the correct line.BadInternalError. Consider a quarantine-specific status, e.g.BadOutOfServiceor a dedicated substatus, and document it.Mesh PSK secret ot-mesh-psk-{main,site-a,site-b} … absent … key is REVOKED — commands to that cluster and acks from it are refused, yet every dispatch and ack succeeded. Either enforcement is off on the rig while the warning claims otherwise, or the warning is stale. Find out which, and make the log tell the truth. This one may matter for production: if a revoked key really doesn't refuse commands, that is a security bug.Fixed on master (3 commits, rebased onto #783):
MeshPskProvider.TryGetPskchecks the config mapMeshTransport:ClusterPsksfirst on every call, andCentralCommandAuthInterceptor/MeshGrpcCommandDialerboth go through it with a constant-timeMatches. docker-dev setsMeshTransport__ClusterPsks__{MAIN,SITE-A,SITE-B}on the centrals and seeds nothing in the store. I compared value hashes in the running containers: each central's override equals every member node'sMeshTransport__GrpcPsk, so the keys were present and enforced. The warning came fromRefreshAsyncreading the store for override-keyed clusters too. It now skips them (Debug line: override in use), and 'REVOKED' is logged only for a cluster with no key anywhere. New test: the overridden cluster isn't read or warned about and a wrong token is rejected; an un-overridden cluster is still warned about and refused. Removing the skip fails it.ConfigPublishCoordinator.HandleDeadlinenow saves 'Timed out waiting for acks (n/m landed). No ack from: …' (at most 20 named, then '(and K more)', ≤2048 chars), returned byGET /api/deployments/{id}. Two tests, both mutation-checked.ScriptRunGuard.QuarantineattachesScriptName, so the main-log mirror names the script and rate-limits per script (tested through the real sink). KeptBadInternalErroron OPC UA: it's the documented script-fault code across virtual tags, Calculation and scripted alarms;BadOutOfServicemeans a point someone deliberately disabled; and a new code would be a ScadaBridge-visible contract change that the once-per-Good→Bad dedup would rarely deliver anyway. Rationale in docs/VirtualTags.md 'Quarantine: what a client sees'.Evidence: Release 0 warnings; agent run Core.Abstractions 549, Core.ScriptedAlarms 106, Core.Scripting 221, Calculation 79, ControlPlane 324, Runtime 982, Host 247, OpcUaServer 1026, IntegrationTests 132. After rebasing onto #783: ControlPlane 324, Configuration 219, IntegrationTests 132, Runtime 988 (one unnamed failure on the first pass did not reproduce on rerun; tracked under #769).