2026-07-20 - 2026-10-20
Overview
13 Pull requests merged by 1 user
Merged
#730 Ensure driver test cleanup preserves primary failures
Merged
#724 Fix DB-less ServiceLevel freshness and authorization remarks
Merged
#720 Retain ServiceLevel requests across binding and publisher failures
Merged
#714 Count individual skipped TRX results
Merged
#715 Clarify S7 counter evidence and fixture limits
Merged
#711 Bound CI concurrency and stabilize test fixtures
Merged
#708 Clarify Galaxy native acknowledgement outcome documentation
Merged
#706 fix(historian): preserve alarm delivery identity across retries
Merged
#704 Accept supported definitive loss reasons in restart wire test
Merged
#703 Cover concurrent gateway tag cache lookups
Merged
#699 Fix historian missing-tag latency, paging limits and response contracts
Merged
#506 feat(mtconnect): read-only MTConnect Agent driver (P1) — 23 tasks + 5-leg live gate
Merged
#484 chore(auth): bump ZB.MOM.WW.Auth 0.1.1 -> 0.1.5 (family alignment)
221 Issues closed from 1 user
Closed
#726 Driver test fixtures leave owned probe loops without guaranteed teardown
Closed
#721 DB-less ServiceLevel does not age stale role snapshots without incoming messages
Closed
#722 Correct obsolete AllowAnonymous per-node authorization remarks
Closed
#719 ServiceLevel publication before SDK binding is dropped and unchanged state can remain deduplicated
Closed
#606 Engineering system: CI evidence, global.json, regen-readme check, SlowUnit split (archreview r3 item 12)
Closed
#712 CI TRX skip summary reports zero for skipped results
Closed
#713 S7 counter documentation overstates wire encoding and live gate readiness
Closed
#707 Current master CI has 18 unit failures across transport, Gateway and actor suites
Closed
#709 Gateway ceiling theory registers duplicate boundary cases
Closed
#710 Bootstrap retry cancellation test races a wall-clock deadline
Closed
#705 Alarm historian: emit stable nonzero delivery IDs without changing queue dedup
Closed
#702 Intermittent restart/reconnect wire test failure in full solution; isolated retry passes
Closed
#701 Add concurrent cold/expiry coverage for Gateway tag-presence cache
Closed
#653 Historian: re-measure 30 s HistoryRead of unprovisioned tags
Closed
#696 Gateway AtTime: prior-sample search starts at the requested time, not min(T, now); strict-ceiling stopped-tag end-only reads costly
Closed
#697 HistoryRead returns BadHistoryOperationUnsupported when the historian backend is unreachable (should be a retryable communication status)
Closed
#698 Historian value types differ across backends for integer/Boolean nodes (SQL backends Int64, Gateway node type; Gateway Raw Boolean as Double)
Closed
#695 Gateway raw: warm reads refuse a tie cluster that fits under the learned ceiling (look-back below a reverse segment or bound lookup)
Closed
#692 HistoryRead-Raw with NumValuesPerNode=1 returns an empty page between every value
Closed
#693 Gateway AtTime returns AVEVA interpolation unchanged (NULL handling, drift, no Interpolated bit)
Closed
#690 Gateway raw reads return a stored NULL as value 0 (SQL backends return null)
Closed
#691 Gateway historian: remaining Part 11/13 gaps after #685–#688 (ReturnBounds, reverse native aggregates, strict-ceiling uncapped reads, reverse events)
Closed
#689 Gateway reverse raw paging reads ~32k rows per page on busy tags (ReverseRawReader sizing)
Closed
#685 Gateway historian: native TimeAverage/Total rows — leading pre-window row passed through, Uncertain rows lose their value
Closed
#688 Gateway historian: default MaxTimeWeightedRawRows + 18 exceeds the gateway default ceiling
Closed
#686 Gateway historian: reverse and end-only capped raw HistoryReads fail (start > end sent to the gateway)
Closed
#687 Gateway historian: raw HistoryRead returns AVEVA synthetic boundary row as a stored sample
Closed
#681 Gateway historian: compute per-sample aggregates (Average, Count, Start/End, Delta, PercentGood...) from raw reads
Closed
#675 HistoryRead paging (#669) follow-ups: reverse capped read, events end-only, Gateway year-9999 bound
Closed
#677 Time-weighted aggregates (#671) follow-ups: reverse anchoring, Partial bit, integral unit, AggregateConfiguration, CLI list
Closed
#682 Advertise only the aggregates the configured historian backend serves (HistoryServerCapabilities/AggregateFunctions)
Closed
#683 Historian processed reads: bound the data-range lookup cost on QuestDB; trim the SqlServer Start/End query
Closed
#684 Historian aggregates: Average/Minimum/Maximum include Uncertain samples (Part 13 / SDK use Good only)
Closed
#679 Gateway historian: Count and Average mapped to AVEVA modes with different semantics (Counter delta, time-weighted average)
Closed
#680 Time-weighted aggregates: forward differences from the SDK AggregateCalculator (TimeAverage/Total status, Total at start of data, Partial on truncated)
Closed
#676 OpcUaClient session loss (#670) follow-ups: TCP-stall proxy test, ReconnectPeriod field, recovery latency, drop observability
Closed
#678 Small follow-ups from the #667-#673 batch (retention cancel path, #672 tests, FOCAS flake, cosmetics, rig cert)
Closed
#674 Part 11 modified-value history (#668) follow-ups: QuestDB TTL exposure, schema-v2 posture, cross-node ordering
Closed
#671 historian(sqlserver): time-weighted Part 13 aggregates
Closed
#672 historization: crash failover leaves a ~30 s capture gap (Primary unreachable but not downed)
Closed
#673 test flake: FocasStatusFlagsTests.An_authored_FIXED_Status_tag_reads_the_flag intermittently Bad
Closed
#669 history: node manager never issues event-HistoryRead continuation points
Closed
#670 OpcUaClient driver: upstream session loss never goes Bad and never recovers (live-gate find)
Closed
#667 historian(sqlserver): retention / purge for hist.Sample and hist.Event
Closed
#668 historian(sqlserver): Part 11 modified values (ReadModified + audit of HistoryUpdate)
Closed
#652 Historian: HistoryUpdate surface
Closed
#666 historian: QuestDB backend (design + plan)
Closed
#665 Delete the dead in-place ApplyDelta seam (config change = respawn only)
Closed
#664 Mid-connect ApplyDelta: Calculation and Galaxy ignore the adopted config; no DeltaApplied re-register
Closed
#663 DriverInstanceActor: in-place ApplyDelta while Connected leaves stale subscription handles
Closed
#662 OpcUaClient native-alarm feed not restored by reconcile / lost on a non-respawning deploy
Closed
#657 OpcUaClient respawn replays inactive+unacked conditions as Raise+Clear (duplicate rows, Active flicker)
Closed
#660 AbLegacy Test Connect probe passes the raw ProbeAddress (PLC-5 octal probe address read as decimal)
Closed
#661 Flaky: MTConnectSubscribeTests.A_rebaseline_that_delivers_nothing_still_advances_the_reconnect_backoff
Closed
#659 AbLegacy libplctag: S/O/I files and control status bits fail on a real MicroLogix 1400 (default probe S:0 fails)
Closed
#611 AbCip: ALMA alarm projection; writes to controller-discovered UDT members
Closed
#658 OpcUaClient first sight of an inactive+acked upstream condition is told as Unspecified, not a flagged Clear
Closed
#654 Known-cluster gate can stay unpublished (fail-open) for up to 60 s after central boot
Closed
#655 Server never dispatches HistoryRead to a driver's IHistoryProvider
Closed
#656 Galaxy reconnect snapshot: ActiveAcked entry for an unknown condition lands inactive; re-statements write duplicate Activated rows
Closed
#633 FOCAS: porting backlog from the stranded auto/driver-gaps branch (15 items, writes policy decision first, #607)
Closed
#612 TwinCAT: TC3 symbol-browse mode, member writes, hardware-gated validation
Closed
#645 TwinCAT: hardware-gated items #310/#314 from driver-gaps backlog
Closed
#647 FOCAS: native alarms never reach their Part 9 conditions
Closed
#619 docker-dev rig hygiene: stale LDAP credentials, opc-plc alarm mismatch, central-2 serve path
Closed
#644 Separate designs from driver-gaps backlog
Closed
#649 OpcUaClient: HistoryRead ignores per-node StatusCode (BadAggregateNotSupported looks like empty data)
Closed
#650 MTConnect: EVENT enumerations + DATA_SET/TABLE support
Closed
#651 focas-sim fixture image on 10.100.0.35 is stale
Closed
#648 OpcUaClient: TargetNamespaceKind=Equipment default (requires UnsMappingTable) is vestigial in v3
Closed
#600 Historian: provision newly-historized existing tags, HistoryUpdate, slow reads of unprovisioned tags
Closed
#601 Deploy honesty: degraded-apply ack amendment; malformed artifact bytes = "no answer" (archreview r3 item 7)
Closed
#613 MTConnect P1.5: CONDITION as Part 9 alarms, TIME_SERIES arrays, EVENT enumerations, DataType validation
Closed
#634 AbCip: porting backlog from the stranded auto/driver-gaps branch (11 items, #607)
Closed
#635 OpcUaClient: porting backlog from the stranded auto/driver-gaps branch (9 items, #607)
Closed
#632 S7: porting backlog from the stranded auto/driver-gaps branch (13 items, #607)
Closed
#636 AbLegacy: porting backlog from the stranded auto/driver-gaps branch (9 items, #607)
Closed
#622 OpcUaClient driver: replace scaffold-only unit suites with wire-level tests against the in-process server
Closed
#643 ZB.MOM.WW.Theme: .rise animation leaves an identity transform that traps position:fixed descendants
Closed
#646 AbLegacy: indirect addressing (N7:[N7:0]) runtime support
Closed
#641 Native alarm conditions stay inactive after a rebuild when the alarm-tag set is unchanged
Closed
#642 AdminUI: no typed editor for authoring native alarm config on raw tags
Closed
#640 Driver diagnostics surface on /hosts
Closed
#631 AdminUI cosmetics: stale one-time key banner after delete on /apikeys; modal backdrop wider than viewport on /raw
Closed
#637 TwinCAT: porting backlog from the stranded auto/driver-gaps branch (4 items, #607)
Closed
#638 Driver-gaps ledger: 4 UNCLEAR items need a human verdict (#226, #252, #298, #311)
Closed
#629 Condition child nodes carry the condition type's ns=0 NodeIds (direct Read hits the type node)
Closed
#630 FOCAS/AbLegacy InitializeAsync orphans previous DeviceState loops when called without teardown
Closed
#627 MTConnect: TIME_SERIES observations as variable-length double[] with representation field
Closed
#628 MTConnect: decide per-/raw-Device routing (client per device vs DraftValidator error)
Closed
#626 MTConnect: surface CONDITION data items as Part 9 alarms (IAlarmSource)
Closed
#639 test-x
Closed
#623 Docs: rewrite the v2-era pages that are only bannered (IncrementalSync, AddressSpace, driver-specs, Secrets runbook)
Closed
#624 Docs: correct stale claims and bookkeeping
Closed
#625 Re-triage the 11 Deferred code-review findings and the Sql TODO(M2)
Closed
#620 Redundancy: Primary selection still matches gossiped roles case-sensitively (Health.Akka OldestUpMember)
Closed
#621 Migrate off obsolete OPC UA SDK APIs (Utils.Log*, sync Session/Discovery calls)
Closed
#610 Server: array writes; decide ValueRank > 1
Closed
#617 ACL: ns=0 standard nodes are ungated, so the "see nothing" boot warning overstates
Closed
#618 Host: a fail-start exception leaves the dotnet process running
Closed
#607 92 driver-gap issues (#225–#316) were closed against PRs merged into auto/driver-gaps, which never reached master
Closed
#608 Drivers: take the live device host from DeviceConfig instead of string-matching (TODO(v3 WaveC))
Closed
#609 Telemetry: evict a driver's snapshot-cache entries when the instance is removed
Closed
#604 AdminUI N−1 sweep: stale-open guard on 5 modals, ValidationSummary, API-key delete confirm, ErrorBoundary (archreview r3 item 10)
Closed
#605 Galaxy gateway seam hardening (archreview r3 item 11)
Closed
#599 Surgical deploys: announce surgically-added raw nodes + r3 item-6 residuals
Closed
#602 Driver fleet round-3 batch (archreview r3 item 8) + deliberate health asymmetries
Closed
#603 Dormant Core.VirtualTags engine decision, ScriptSandbox reference caching, single drain-gate predicate (archreview r3 item 9)
Closed
#596 AdminUI /raw: decide auto-created "Device1", live-verify first-click fix, add a browsePageDelayMs field
Closed
#597 Alarms: residuals from the #587/#586 reviews
Closed
#598 Client.Shared: AddComment API, remove Galaxy-era fallback reads, LoggerLifecycle flake
Closed
#594 Fixture-dependent suites fail instead of skipping when their simulator/profile is absent
Closed
#595 OTOPCUA0001: 523 unsuppressed analyzer warnings across 13 test projects
Closed
#593 Ab.Transport: offline/simulator test gaps left by #565, #570, #579
Closed
#591 Flaky FocasDuplicateSiblingNameTests.Each_duplicate_axis_reads_its_own_position under load
Closed
#589 Flaky S7SpanReadParityTests.One_undecodable_span_member_leaves_the_pass_Degraded under full-suite load
Closed
#590 Flaky ClusterRoleInfoRoleLeaderCaseTests.RoleLeaderChanged_for_driver_then_Driver_keeps_distinct_entries under full-suite load
Closed
#587 Alarms: a client Acknowledge/Confirm/AddComment emits no condition event (AutoReportStateChanges false + delta-gate)
Closed
#588 ACL: model-change and audit events reach Server-object (i=2253) items ungated
Closed
#585 AB transport: pin libplctag width-mismatch health/warn-once and DefaultTransport registration with tests
Closed
#586 ACL: Server-object (i=2253) event subscriptions bypass the data-plane ACL
Closed
#583 AB transport tests: replace fixed-delay absence assertions with positive controls
Closed
#584 docs: replace the malformed T4:0/DN slash address form in docs/v2
Closed
#581 Ab.Transport: compile out or gate test-only statics (OpenAttemptBudget, gate counters, ForceRootingForTest)
Closed
#582 AbCip native: budget reply size in RequestScheduler.TakeBatch (verify mixed STRING/array packing)
Closed
#579 AbCip native: make lease release non-blocking (async teardown) and align with AbLegacy
Closed
#580 AB drivers: share MapStatus + libplctag orphan release across AbCip/AbLegacy; remove dead MapCipGeneralStatus/MapPcccStatus
Closed
#577 AdminUI /raw driver-create quirks, CLI read throws on Bad, AbCip probe default warning
Closed
#578 libplctag wrapper crashes the process: callback on a garbage-collected delegate (callback_func_ex)
Closed
#575 AbCip differential harness: equal-refusal templates and budget-isolation test
Closed
#576 AdminUI AbCip/AbLegacy driver forms drop unknown options and reset MaxConcurrentReads on save
Closed
#573 Flaky AbLegacyReadWriteTests (~1 in 15 runs, pre-existing)
Closed
#574 AbCip: ParseEnum transport error wording + probe test positive assertion
Closed
#570 Native AbCip runtime: STRING capacity, mistype churn, malformed-name device backoff
Closed
#572 Native AbCip browse: per-call template connections, instance-order assumption, unpaced listing
Closed
#569 LibplctagConfinementGuard misses refs after // in literals, block comments, csproj
Closed
#568 AbCip/AbLegacy: libplctag adapter status-mapping and WrapSync test gaps
Closed
#567 Ab.Transport: RequestScheduler fragment/lock follow-ups
Closed
#566 Ab.Transport: CipConnection/DeviceSessionPool test gaps and CIP-level close detection
Closed
#565 Ab.Transport: EncapsulationClient drain/timeout/test follow-ups
Closed
#563 ACL: an expired API key keeps its session's roles while Security:Acl:Enabled is false (arch-review 03/S19 residual R2)
Closed
#564 Ab.Transport: CIP codec hardening (bounds, path casts, immutable constants)
Closed
#562 ACL: event/alarm monitored items are revalidated by neither trigger (arch-review 03/S19 residual R1)
Closed
#571 Native AbLegacy: refused PLC-5 writes surface as BadCommunicationError
Closed
#561 Production host writes no log on wonder-app-vd03 — file sink opens a 0-byte file, zero events flow
Closed
#560 Browse-committed MTConnect tags coerce to String at runtime while their nodes are numerically typed (RawBrowseCommitMapper drops the browsed native type — #536 class)
Closed
#559 MQTT runtime TagConfig mappers reject leading-whitespace JSON that every other driver tolerates
Closed
#556 Inspect polish: leading-whitespace pre-filter under-reports; FOCAS/MQTT advisories can swallow the rejection backstop
Closed
#557 Reader asymmetries: OpcUaClient legacy PascalCase NodeId is readable but unsaveable; Mqtt Sparkplug parse accepts a payloadFormat the Plain parse rejects
Closed
#558 Browse-commit parity guards overlap and one is misnamed; browser DriverType literals unguarded
Closed
#554 Authoring models validate only enum keys — non-enum TagConfig keys (e.g. Modbus address) meet no gate until deploy
Closed
#555 RawBrowseCommitMapper's fallback comment cites a parity guard (RawBrowseCommitMapperParityTests) that does not exist
Closed
#552 Sql browse-commit emits a rowSelector-less WideRow config that authoring and runtime both reject — commit now fails loudly
Closed
#553 CSV typed-column merge silently rewrites a typo'd enum in the TagConfigJson cell before any gate can see it
Closed
#550 MTConnect driverDataType is a second, runtime-preferred spelling the AdminUI editor neither reads nor writes
Closed
#551 Residual TagConfig gate-coverage gaps found by the #549 survey
Closed
#549 MTConnect authoring accepts a dataType the runtime rejects (authoring weaker than runtime)
Closed
#548 FOCAS: duplicate sibling axis names make the Axes/ fixed-tree subtree untrustworthy (#540 residual)
Closed
#540 FOCAS: browse-committed tags are unreadable (BadNodeIdUnknown) — device-host prefix is written into TagConfig.Address
Closed
#547 docs/security.md summary still claims NodeAcl enforcement is "never wired" and reads carry no authorization — stale since #520 stages 5–6
Closed
#539 AbCip controller browse ignores the authored EtherNet/IP port (#534 defect, discovery half) — browses whatever answers on 44818
Closed
#545 Mesh command/ack planes are h2c-only — the per-cluster PSK crosses the network in cleartext on a write surface (accept, or add a UseTls option)
Closed
#546 AdminUI: DriverStatusPanel (Restart/Reconnect driver controls) is orphaned — referenced by no page
Closed
#542 FleetStatusBroadcaster is blind to site nodes post-Phase-6 mesh split (fleet-wide gossip assumption)
Closed
#543 Three pre-existing gRPC auth interceptors accept a whitespace-only configured key as SET (IsNullOrEmpty vs IsNullOrWhiteSpace)
Closed
#544 Flaky test: ConfigPublishCoordinatorTimeoutTests.DeadlineElapsed_for_current_deployment_marks_TimedOut races its own 150 ms wall-clock deadline
Closed
#541 Drivers report Healthy with 0 errors while silently ignoring tags they skipped at init
Closed
#538 Continuous historization: one failing tag re-writes every healthy tag on every drain pass, outbox grows unbounded
Closed
#537 Continuous historization: both pair nodes write duplicate live values (no Primary gate)
Closed
#491 test(historian): live end-to-end gate for continuous-historization value capture
Closed
#536 Browse-commit discards the discovered data type, so a browsed REAL commits as a DINT (AbCip, TwinCAT)
Closed
#468 Universal discovery browser: full controller-tree render is live-verify-blocked by the ab_server fixture (no @tags walk)
Closed
#535 AdminUI: /uns area + line names bypass the UNS segment rule, blocking fleet-wide deploys
Closed
#520 Node ACLs are authored and deployed but never enforced — wire IPermissionEvaluator or retire the surface
Closed
#534 AbLegacy PCCC read/write fails against every ab_server family (BadCommunicationError) — path never validated against a simulator
Closed
#533 ACL: three different string-identity rules in one authorization path
Closed
#532 Cluster:Roles has no OTOPCUA_ROLES fallback, despite docs claiming one — ClusterId resolves null
Closed
#530 AdminUI: both ACL warning banners describe enforcement that no longer exists
Closed
#531 AdminUI.Tests: PageAuthorizationGuardTests red on master — /apikeys was never classified
Closed
#528 ACL: ConfigDbApiKeyStore confers roles from Cluster-scoped grants in ANY cluster
Closed
#529 ACL: a NodeAcl row can scope at an entity in another cluster and pass the deploy gate
Closed
#489 feat(raw): hot-rebind a renamed raw tag's live value without a node recreate
Closed
#527 DriverInstanceActor.DisconnectObserved has no production sender — a driver whose device dies mid-run is never detected, never reconnects, and never reports comms loss
Closed
#481 feat(alarms): bridge driver comms-loss into scripted-alarm input quality (Layer 4 of #477)
Closed
#525 IDriver.GetMemoryFootprint / FlushOptionalCachesAsync have no consumer after #522
Closed
#526 refactor(sql): .Browser references .Driver — the same layering violation #512 removed from MQTT
Closed
#515 feat(mqtt): Sparkplug DataSet / Template / PropertySet metric support
Closed
#511 feat(mqtt): Sparkplug primary-host STATE publishing (ActAsPrimaryHost)
Closed
#508 feat(mqtt): write-through (IWritable) — Sparkplug NCMD/DCMD + plain publish (design P3)
Closed
#510 fix(adminui): _canRebirth is captured at browse-open, so a reaped session still draws Request-rebirth
Closed
#512 refactor(mqtt): .Browser references .Driver — extract the client-options builder so the layering exception can go
Closed
#514 fix(adminui): Request-rebirth cannot be armed on a Sparkplug plant that has not birthed since the browse window opened
Closed
#513 fix(adminui): the MQTT tag editor writes a meaningless payloadFormat into a Sparkplug tag blob
Closed
#509 fix(adminui): a Sparkplug metric whose name contains / cannot be browse-committed
Closed
#517 Driver health is published AFTER teardown, so GetHealth() can report Healthy with a disposed client
Closed
#519 No driver's Bad/Uncertain status sub-code reaches an OPC UA client (3-state OpcUaQuality collapse)
Closed
#524 DriverInstanceResilienceStatus: dead table — same defect as #521, keep or delete
Closed
#522 Driver stability tiers are inert: every driver runs Tier A — pass real tiers or delete the machinery
Closed
#521 IHostConnectivityProbe / DriverHostStatus: dead surface — build the publisher or delete it
Closed
#523 Remove the periodic 5-minute device re-browse (tag-set drift detection) from FOCAS/TwinCAT/MTConnect/AbCip
Closed
#507 feat(raw): re-migrate discovered-node injection onto the raw device subtree — IRediscoverable is inert in v3
Closed
#516 Driver config edits are silently discarded on Modbus/FOCAS/OpcUaClient (deployment still seals green)
Closed
#518 IRediscoverable + IHostConnectivityProbe events have no consumer in src/ (9 drivers raise into the void); CLAUDE.md Change Detection is wrong
Closed
#490 feat(scripteditor): tag-path completion for absolute RawPaths
Closed
#505 AdminUI cluster-node editor was dead: HTTP 500 on load (InputNumber<byte>) + Save a silent no-op (NodeId regex forbids ':')
Closed
#488 feat(drivers): periodic reconcile of desired vs actual driver subscriptions
Closed
#499 DraftValidator cannot see ClusterNode.DriverConfigOverridesJson — the third driver-config persistence surface
Closed
#493 Phase 5 telemetry: existing deployments must populate ClusterNode.GrpcPort (seed only backfills fresh installs)
Closed
#501 Two alarm-ack tests assert an absence with AwaitAssert, so they pass instantly and prove nothing
Closed
#503 Flaky under load: Galaxy EventPumpBoundedChannelTests.Drops_newest_when_channel_fills_and_records_metric
Closed
#492 2-node keep-oldest cannot survive an oldest-node crash (survivor downs ITSELF) — evaluate ScadaBridge's auto-down decision
Closed
#504 bug(adminui): /scripts is a hard 500 when any Script.SourceHash is shorter than 12 chars
Closed
#487 bug(alarms): an active scripted alarm under-reports as normal after a full-rebuild deploy
Closed
#496 Sql driver: implement the §8.1 catalog identifier-validation gate (FF-1)
Closed
#497 Wrong OPC UA status-code constants in three existing drivers (FF-2)
Closed
#498 Deploy-time guard: reject a Sql DriverConfig blob carrying a connectionString key (FF-3)
Closed
#500 Intermittent single-test failure in Runtime.Tests under full-sweep load (unidentified)
Closed
#502 50 sub-second presence budgets remain in Runtime.Tests (the class behind three of #500's five defects)
Closed
#494 /health/active returns 200 on every node — the tier cannot identify the active node
Closed
#486 Node records Applied (and advances _currentRevision) for a deployment whose artifact it could not read
Closed
#485 Transient ConfigDb error during artifact load empties the served address space (logs claim "rebuild becomes no-op")
233 Issues created by 1 user
Opened
#485 Transient ConfigDb error during artifact load empties the served address space (logs claim "rebuild becomes no-op")
Opened
#486 Node records Applied (and advances _currentRevision) for a deployment whose artifact it could not read
Opened
#487 bug(alarms): an active scripted alarm under-reports as normal after a full-rebuild deploy
Opened
#488 feat(drivers): periodic reconcile of desired vs actual driver subscriptions
Opened
#489 feat(raw): hot-rebind a renamed raw tag's live value without a node recreate
Opened
#490 feat(scripteditor): tag-path completion for absolute RawPaths
Opened
#491 test(historian): live end-to-end gate for continuous-historization value capture
Opened
#492 2-node keep-oldest cannot survive an oldest-node crash (survivor downs ITSELF) — evaluate ScadaBridge's auto-down decision
Opened
#493 Phase 5 telemetry: existing deployments must populate ClusterNode.GrpcPort (seed only backfills fresh installs)
Opened
#494 /health/active returns 200 on every node — the tier cannot identify the active node
Opened
#496 Sql driver: implement the §8.1 catalog identifier-validation gate (FF-1)
Opened
#497 Wrong OPC UA status-code constants in three existing drivers (FF-2)
Opened
#498 Deploy-time guard: reject a Sql DriverConfig blob carrying a connectionString key (FF-3)
Opened
#499 DraftValidator cannot see ClusterNode.DriverConfigOverridesJson — the third driver-config persistence surface
Opened
#500 Intermittent single-test failure in Runtime.Tests under full-sweep load (unidentified)
Opened
#501 Two alarm-ack tests assert an absence with AwaitAssert, so they pass instantly and prove nothing
Opened
#502 50 sub-second presence budgets remain in Runtime.Tests (the class behind three of #500's five defects)
Opened
#503 Flaky under load: Galaxy EventPumpBoundedChannelTests.Drops_newest_when_channel_fills_and_records_metric
Opened
#504 bug(adminui): /scripts is a hard 500 when any Script.SourceHash is shorter than 12 chars
Opened
#505 AdminUI cluster-node editor was dead: HTTP 500 on load (InputNumber<byte>) + Save a silent no-op (NodeId regex forbids ':')
Opened
#507 feat(raw): re-migrate discovered-node injection onto the raw device subtree — IRediscoverable is inert in v3
Opened
#508 feat(mqtt): write-through (IWritable) — Sparkplug NCMD/DCMD + plain publish (design P3)
Opened
#509 fix(adminui): a Sparkplug metric whose name contains / cannot be browse-committed
Opened
#510 fix(adminui): _canRebirth is captured at browse-open, so a reaped session still draws Request-rebirth
Opened
#511 feat(mqtt): Sparkplug primary-host STATE publishing (ActAsPrimaryHost)
Opened
#512 refactor(mqtt): .Browser references .Driver — extract the client-options builder so the layering exception can go
Opened
#513 fix(adminui): the MQTT tag editor writes a meaningless payloadFormat into a Sparkplug tag blob
Opened
#514 fix(adminui): Request-rebirth cannot be armed on a Sparkplug plant that has not birthed since the browse window opened
Opened
#515 feat(mqtt): Sparkplug DataSet / Template / PropertySet metric support
Opened
#516 Driver config edits are silently discarded on Modbus/FOCAS/OpcUaClient (deployment still seals green)
Opened
#517 Driver health is published AFTER teardown, so GetHealth() can report Healthy with a disposed client
Opened
#518 IRediscoverable + IHostConnectivityProbe events have no consumer in src/ (9 drivers raise into the void); CLAUDE.md Change Detection is wrong
Opened
#519 No driver's Bad/Uncertain status sub-code reaches an OPC UA client (3-state OpcUaQuality collapse)
Opened
#520 Node ACLs are authored and deployed but never enforced — wire IPermissionEvaluator or retire the surface
Opened
#521 IHostConnectivityProbe / DriverHostStatus: dead surface — build the publisher or delete it
Opened
#522 Driver stability tiers are inert: every driver runs Tier A — pass real tiers or delete the machinery
Opened
#523 Remove the periodic 5-minute device re-browse (tag-set drift detection) from FOCAS/TwinCAT/MTConnect/AbCip
Opened
#524 DriverInstanceResilienceStatus: dead table — same defect as #521, keep or delete
Opened
#525 IDriver.GetMemoryFootprint / FlushOptionalCachesAsync have no consumer after #522
Opened
#526 refactor(sql): .Browser references .Driver — the same layering violation #512 removed from MQTT
Opened
#527 DriverInstanceActor.DisconnectObserved has no production sender — a driver whose device dies mid-run is never detected, never reconnects, and never reports comms loss
Opened
#528 ACL: ConfigDbApiKeyStore confers roles from Cluster-scoped grants in ANY cluster
Opened
#529 ACL: a NodeAcl row can scope at an entity in another cluster and pass the deploy gate
Opened
#530 AdminUI: both ACL warning banners describe enforcement that no longer exists
Opened
#531 AdminUI.Tests: PageAuthorizationGuardTests red on master — /apikeys was never classified
Opened
#532 Cluster:Roles has no OTOPCUA_ROLES fallback, despite docs claiming one — ClusterId resolves null
Opened
#533 ACL: three different string-identity rules in one authorization path
Opened
#534 AbLegacy PCCC read/write fails against every ab_server family (BadCommunicationError) — path never validated against a simulator
Opened
#535 AdminUI: /uns area + line names bypass the UNS segment rule, blocking fleet-wide deploys
Opened
#536 Browse-commit discards the discovered data type, so a browsed REAL commits as a DINT (AbCip, TwinCAT)
Opened
#537 Continuous historization: both pair nodes write duplicate live values (no Primary gate)
Opened
#538 Continuous historization: one failing tag re-writes every healthy tag on every drain pass, outbox grows unbounded
Opened
#539 AbCip controller browse ignores the authored EtherNet/IP port (#534 defect, discovery half) — browses whatever answers on 44818
Opened
#540 FOCAS: browse-committed tags are unreadable (BadNodeIdUnknown) — device-host prefix is written into TagConfig.Address
Opened
#541 Drivers report Healthy with 0 errors while silently ignoring tags they skipped at init
Opened
#542 FleetStatusBroadcaster is blind to site nodes post-Phase-6 mesh split (fleet-wide gossip assumption)
Opened
#543 Three pre-existing gRPC auth interceptors accept a whitespace-only configured key as SET (IsNullOrEmpty vs IsNullOrWhiteSpace)
Opened
#544 Flaky test: ConfigPublishCoordinatorTimeoutTests.DeadlineElapsed_for_current_deployment_marks_TimedOut races its own 150 ms wall-clock deadline
Opened
#545 Mesh command/ack planes are h2c-only — the per-cluster PSK crosses the network in cleartext on a write surface (accept, or add a UseTls option)
Opened
#546 AdminUI: DriverStatusPanel (Restart/Reconnect driver controls) is orphaned — referenced by no page
Opened
#547 docs/security.md summary still claims NodeAcl enforcement is "never wired" and reads carry no authorization — stale since #520 stages 5–6
Opened
#548 FOCAS: duplicate sibling axis names make the Axes/ fixed-tree subtree untrustworthy (#540 residual)
Opened
#549 MTConnect authoring accepts a dataType the runtime rejects (authoring weaker than runtime)
Opened
#550 MTConnect driverDataType is a second, runtime-preferred spelling the AdminUI editor neither reads nor writes
Opened
#551 Residual TagConfig gate-coverage gaps found by the #549 survey
Opened
#552 Sql browse-commit emits a rowSelector-less WideRow config that authoring and runtime both reject — commit now fails loudly
Opened
#553 CSV typed-column merge silently rewrites a typo'd enum in the TagConfigJson cell before any gate can see it
Opened
#554 Authoring models validate only enum keys — non-enum TagConfig keys (e.g. Modbus address) meet no gate until deploy
Opened
#555 RawBrowseCommitMapper's fallback comment cites a parity guard (RawBrowseCommitMapperParityTests) that does not exist
Opened
#556 Inspect polish: leading-whitespace pre-filter under-reports; FOCAS/MQTT advisories can swallow the rejection backstop
Opened
#557 Reader asymmetries: OpcUaClient legacy PascalCase NodeId is readable but unsaveable; Mqtt Sparkplug parse accepts a payloadFormat the Plain parse rejects
Opened
#558 Browse-commit parity guards overlap and one is misnamed; browser DriverType literals unguarded
Opened
#559 MQTT runtime TagConfig mappers reject leading-whitespace JSON that every other driver tolerates
Opened
#560 Browse-committed MTConnect tags coerce to String at runtime while their nodes are numerically typed (RawBrowseCommitMapper drops the browsed native type — #536 class)
Opened
#561 Production host writes no log on wonder-app-vd03 — file sink opens a 0-byte file, zero events flow
Opened
#562 ACL: event/alarm monitored items are revalidated by neither trigger (arch-review 03/S19 residual R1)
Opened
#563 ACL: an expired API key keeps its session's roles while Security:Acl:Enabled is false (arch-review 03/S19 residual R2)
Opened
#564 Ab.Transport: CIP codec hardening (bounds, path casts, immutable constants)
Opened
#565 Ab.Transport: EncapsulationClient drain/timeout/test follow-ups
Opened
#566 Ab.Transport: CipConnection/DeviceSessionPool test gaps and CIP-level close detection
Opened
#567 Ab.Transport: RequestScheduler fragment/lock follow-ups
Opened
#568 AbCip/AbLegacy: libplctag adapter status-mapping and WrapSync test gaps
Opened
#569 LibplctagConfinementGuard misses refs after // in literals, block comments, csproj
Opened
#570 Native AbCip runtime: STRING capacity, mistype churn, malformed-name device backoff
Opened
#571 Native AbLegacy: refused PLC-5 writes surface as BadCommunicationError
Opened
#572 Native AbCip browse: per-call template connections, instance-order assumption, unpaced listing
Opened
#573 Flaky AbLegacyReadWriteTests (~1 in 15 runs, pre-existing)
Opened
#574 AbCip: ParseEnum transport error wording + probe test positive assertion
Opened
#575 AbCip differential harness: equal-refusal templates and budget-isolation test
Opened
#576 AdminUI AbCip/AbLegacy driver forms drop unknown options and reset MaxConcurrentReads on save
Opened
#577 AdminUI /raw driver-create quirks, CLI read throws on Bad, AbCip probe default warning
Opened
#578 libplctag wrapper crashes the process: callback on a garbage-collected delegate (callback_func_ex)
Opened
#579 AbCip native: make lease release non-blocking (async teardown) and align with AbLegacy
Opened
#580 AB drivers: share MapStatus + libplctag orphan release across AbCip/AbLegacy; remove dead MapCipGeneralStatus/MapPcccStatus
Opened
#581 Ab.Transport: compile out or gate test-only statics (OpenAttemptBudget, gate counters, ForceRootingForTest)
Opened
#582 AbCip native: budget reply size in RequestScheduler.TakeBatch (verify mixed STRING/array packing)
Opened
#583 AB transport tests: replace fixed-delay absence assertions with positive controls
Opened
#584 docs: replace the malformed T4:0/DN slash address form in docs/v2
Opened
#585 AB transport: pin libplctag width-mismatch health/warn-once and DefaultTransport registration with tests
Opened
#586 ACL: Server-object (i=2253) event subscriptions bypass the data-plane ACL
Opened
#587 Alarms: a client Acknowledge/Confirm/AddComment emits no condition event (AutoReportStateChanges false + delta-gate)
Opened
#588 ACL: model-change and audit events reach Server-object (i=2253) items ungated
Opened
#589 Flaky S7SpanReadParityTests.One_undecodable_span_member_leaves_the_pass_Degraded under full-suite load
Opened
#590 Flaky ClusterRoleInfoRoleLeaderCaseTests.RoleLeaderChanged_for_driver_then_Driver_keeps_distinct_entries under full-suite load
Opened
#591 Flaky FocasDuplicateSiblingNameTests.Each_duplicate_axis_reads_its_own_position under load
Opened
#592 Native AB transport: bench-controller proof of writes + PCCC, then decide libplctag deletion
Opened
#593 Ab.Transport: offline/simulator test gaps left by #565, #570, #579
Opened
#594 Fixture-dependent suites fail instead of skipping when their simulator/profile is absent
Opened
#595 OTOPCUA0001: 523 unsuppressed analyzer warnings across 13 test projects
Opened
#596 AdminUI /raw: decide auto-created "Device1", live-verify first-click fix, add a browsePageDelayMs field
Opened
#597 Alarms: residuals from the #587/#586 reviews
Opened
#598 Client.Shared: AddComment API, remove Galaxy-era fallback reads, LoggerLifecycle flake
Opened
#599 Surgical deploys: announce surgically-added raw nodes + r3 item-6 residuals
Opened
#600 Historian: provision newly-historized existing tags, HistoryUpdate, slow reads of unprovisioned tags
Opened
#601 Deploy honesty: degraded-apply ack amendment; malformed artifact bytes = "no answer" (archreview r3 item 7)
Opened
#602 Driver fleet round-3 batch (archreview r3 item 8) + deliberate health asymmetries
Opened
#603 Dormant Core.VirtualTags engine decision, ScriptSandbox reference caching, single drain-gate predicate (archreview r3 item 9)
Opened
#604 AdminUI N−1 sweep: stale-open guard on 5 modals, ValidationSummary, API-key delete confirm, ErrorBoundary (archreview r3 item 10)
Opened
#605 Galaxy gateway seam hardening (archreview r3 item 11)
Opened
#606 Engineering system: CI evidence, global.json, regen-readme check, SlowUnit split (archreview r3 item 12)
Opened
#607 92 driver-gap issues (#225–#316) were closed against PRs merged into auto/driver-gaps, which never reached master
Opened
#608 Drivers: take the live device host from DeviceConfig instead of string-matching (TODO(v3 WaveC))
Opened
#609 Telemetry: evict a driver's snapshot-cache entries when the instance is removed
Opened
#610 Server: array writes; decide ValueRank > 1
Opened
#611 AbCip: ALMA alarm projection; writes to controller-discovered UDT members
Opened
#612 TwinCAT: TC3 symbol-browse mode, member writes, hardware-gated validation
Opened
#613 MTConnect P1.5: CONDITION as Part 9 alarms, TIME_SERIES arrays, EVENT enumerations, DataType validation
Opened
#614 Galaxy: AVEVA/licence-gated proofs; fire-and-forget native ack
Opened
#615 v2 GA exit criteria still open: OPC UA CTT, redundancy cutover with a production client, Fleet Admin sign-off, Galaxy end-to-end
Opened
#616 S7: Timer/Counter numbering and BCD decode need a real S7-300/400 CPU
Opened
#617 ACL: ns=0 standard nodes are ungated, so the "see nothing" boot warning overstates
Opened
#618 Host: a fail-start exception leaves the dotnet process running
Opened
#619 docker-dev rig hygiene: stale LDAP credentials, opc-plc alarm mismatch, central-2 serve path
Opened
#620 Redundancy: Primary selection still matches gossiped roles case-sensitively (Health.Akka OldestUpMember)
Opened
#621 Migrate off obsolete OPC UA SDK APIs (Utils.Log*, sync Session/Discovery calls)
Opened
#622 OpcUaClient driver: replace scaffold-only unit suites with wire-level tests against the in-process server
Opened
#623 Docs: rewrite the v2-era pages that are only bannered (IncrementalSync, AddressSpace, driver-specs, Secrets runbook)
Opened
#624 Docs: correct stale claims and bookkeeping
Opened
#625 Re-triage the 11 Deferred code-review findings and the Sql TODO(M2)
Opened
#626 MTConnect: surface CONDITION data items as Part 9 alarms (IAlarmSource)
Opened
#627 MTConnect: TIME_SERIES observations as variable-length double[] with representation field
Opened
#628 MTConnect: decide per-/raw-Device routing (client per device vs DraftValidator error)
Opened
#629 Condition child nodes carry the condition type's ns=0 NodeIds (direct Read hits the type node)
Opened
#630 FOCAS/AbLegacy InitializeAsync orphans previous DeviceState loops when called without teardown
Opened
#631 AdminUI cosmetics: stale one-time key banner after delete on /apikeys; modal backdrop wider than viewport on /raw
Opened
#632 S7: porting backlog from the stranded auto/driver-gaps branch (13 items, #607)
Opened
#633 FOCAS: porting backlog from the stranded auto/driver-gaps branch (15 items, writes policy decision first, #607)
Opened
#634 AbCip: porting backlog from the stranded auto/driver-gaps branch (11 items, #607)
Opened
#635 OpcUaClient: porting backlog from the stranded auto/driver-gaps branch (9 items, #607)
Opened
#636 AbLegacy: porting backlog from the stranded auto/driver-gaps branch (9 items, #607)
Opened
#637 TwinCAT: porting backlog from the stranded auto/driver-gaps branch (4 items, #607)
Opened
#638 Driver-gaps ledger: 4 UNCLEAR items need a human verdict (#226, #252, #298, #311)
Opened
#639 test-x
Opened
#640 Driver diagnostics surface on /hosts
Opened
#641 Native alarm conditions stay inactive after a rebuild when the alarm-tag set is unchanged
Opened
#642 AdminUI: no typed editor for authoring native alarm config on raw tags
Opened
#643 ZB.MOM.WW.Theme: .rise animation leaves an identity transform that traps position:fixed descendants
Opened
#644 Separate designs from driver-gaps backlog
Opened
#645 TwinCAT: hardware-gated items #310/#314 from driver-gaps backlog
Opened
#646 AbLegacy: indirect addressing (N7:[N7:0]) runtime support
Opened
#647 FOCAS: native alarms never reach their Part 9 conditions
Opened
#648 OpcUaClient: TargetNamespaceKind=Equipment default (requires UnsMappingTable) is vestigial in v3
Opened
#649 OpcUaClient: HistoryRead ignores per-node StatusCode (BadAggregateNotSupported looks like empty data)
Opened
#650 MTConnect: EVENT enumerations + DATA_SET/TABLE support
Opened
#651 focas-sim fixture image on 10.100.0.35 is stale
Opened
#652 Historian: HistoryUpdate surface
Opened
#653 Historian: re-measure 30 s HistoryRead of unprovisioned tags
Opened
#654 Known-cluster gate can stay unpublished (fail-open) for up to 60 s after central boot
Opened
#655 Server never dispatches HistoryRead to a driver's IHistoryProvider
Opened
#656 Galaxy reconnect snapshot: ActiveAcked entry for an unknown condition lands inactive; re-statements write duplicate Activated rows
Opened
#657 OpcUaClient respawn replays inactive+unacked conditions as Raise+Clear (duplicate rows, Active flicker)
Opened
#658 OpcUaClient first sight of an inactive+acked upstream condition is told as Unspecified, not a flagged Clear
Opened
#659 AbLegacy libplctag: S/O/I files and control status bits fail on a real MicroLogix 1400 (default probe S:0 fails)
Opened
#660 AbLegacy Test Connect probe passes the raw ProbeAddress (PLC-5 octal probe address read as decimal)
Opened
#661 Flaky: MTConnectSubscribeTests.A_rebaseline_that_delivers_nothing_still_advances_the_reconnect_backoff
Opened
#662 OpcUaClient native-alarm feed not restored by reconcile / lost on a non-respawning deploy
Opened
#663 DriverInstanceActor: in-place ApplyDelta while Connected leaves stale subscription handles
Opened
#664 Mid-connect ApplyDelta: Calculation and Galaxy ignore the adopted config; no DeltaApplied re-register
Opened
#665 Delete the dead in-place ApplyDelta seam (config change = respawn only)
Opened
#666 historian: QuestDB backend (design + plan)
Opened
#667 historian(sqlserver): retention / purge for hist.Sample and hist.Event
Opened
#668 historian(sqlserver): Part 11 modified values (ReadModified + audit of HistoryUpdate)
Opened
#669 history: node manager never issues event-HistoryRead continuation points
Opened
#670 OpcUaClient driver: upstream session loss never goes Bad and never recovers (live-gate find)
Opened
#671 historian(sqlserver): time-weighted Part 13 aggregates
Opened
#672 historization: crash failover leaves a ~30 s capture gap (Primary unreachable but not downed)
Opened
#673 test flake: FocasStatusFlagsTests.An_authored_FIXED_Status_tag_reads_the_flag intermittently Bad
Opened
#674 Part 11 modified-value history (#668) follow-ups: QuestDB TTL exposure, schema-v2 posture, cross-node ordering
Opened
#675 HistoryRead paging (#669) follow-ups: reverse capped read, events end-only, Gateway year-9999 bound
Opened
#676 OpcUaClient session loss (#670) follow-ups: TCP-stall proxy test, ReconnectPeriod field, recovery latency, drop observability
Opened
#677 Time-weighted aggregates (#671) follow-ups: reverse anchoring, Partial bit, integral unit, AggregateConfiguration, CLI list
Opened
#678 Small follow-ups from the #667-#673 batch (retention cancel path, #672 tests, FOCAS flake, cosmetics, rig cert)
Opened
#679 Gateway historian: Count and Average mapped to AVEVA modes with different semantics (Counter delta, time-weighted average)
Opened
#680 Time-weighted aggregates: forward differences from the SDK AggregateCalculator (TimeAverage/Total status, Total at start of data, Partial on truncated)
Opened
#681 Gateway historian: compute per-sample aggregates (Average, Count, Start/End, Delta, PercentGood...) from raw reads
Opened
#682 Advertise only the aggregates the configured historian backend serves (HistoryServerCapabilities/AggregateFunctions)
Opened
#683 Historian processed reads: bound the data-range lookup cost on QuestDB; trim the SqlServer Start/End query
Opened
#684 Historian aggregates: Average/Minimum/Maximum include Uncertain samples (Part 13 / SDK use Good only)
Opened
#685 Gateway historian: native TimeAverage/Total rows — leading pre-window row passed through, Uncertain rows lose their value
Opened
#686 Gateway historian: reverse and end-only capped raw HistoryReads fail (start > end sent to the gateway)
Opened
#687 Gateway historian: raw HistoryRead returns AVEVA synthetic boundary row as a stored sample
Opened
#688 Gateway historian: default MaxTimeWeightedRawRows + 18 exceeds the gateway default ceiling
Opened
#689 Gateway reverse raw paging reads ~32k rows per page on busy tags (ReverseRawReader sizing)
Opened
#690 Gateway raw reads return a stored NULL as value 0 (SQL backends return null)
Opened
#691 Gateway historian: remaining Part 11/13 gaps after #685–#688 (ReturnBounds, reverse native aggregates, strict-ceiling uncapped reads, reverse events)
Opened
#692 HistoryRead-Raw with NumValuesPerNode=1 returns an empty page between every value
Opened
#693 Gateway AtTime returns AVEVA interpolation unchanged (NULL handling, drift, no Interpolated bit)
Opened
#694 Gateway historian: strict lowered ceiling refuses ordinary pages; deep event reads slow (follow-ups from #689–#691 gate)
Opened
#695 Gateway raw: warm reads refuse a tie cluster that fits under the learned ceiling (look-back below a reverse segment or bound lookup)
Opened
#696 Gateway AtTime: prior-sample search starts at the requested time, not min(T, now); strict-ceiling stopped-tag end-only reads costly
Opened
#697 HistoryRead returns BadHistoryOperationUnsupported when the historian backend is unreachable (should be a retryable communication status)
Opened
#698 Historian value types differ across backends for integer/Boolean nodes (SQL backends Int64, Gateway node type; Gateway Raw Boolean as Double)
Opened
#700 Complete live OPC UA historian verification after gateway control recovery
Opened
#701 Add concurrent cold/expiry coverage for Gateway tag-presence cache
Opened
#702 Intermittent restart/reconnect wire test failure in full solution; isolated retry passes
Opened
#705 Alarm historian: emit stable nonzero delivery IDs without changing queue dedup
Opened
#707 Current master CI has 18 unit failures across transport, Gateway and actor suites
Opened
#709 Gateway ceiling theory registers duplicate boundary cases
Opened
#710 Bootstrap retry cancellation test races a wall-clock deadline
Opened
#712 CI TRX skip summary reports zero for skipped results
Opened
#713 S7 counter documentation overstates wire encoding and live gate readiness
Opened
#716 Redundancy interop runbook uses deleted types and wrong standard NodeId
Opened
#717 Resolve standard non-transparent redundancy metadata deferred by current server
Opened
#718 Legacy CI run 959 failed after retained log silence; root cause and runner cleanup evidence missing
Opened
#719 ServiceLevel publication before SDK binding is dropped and unchanged state can remain deduplicated
Opened
#721 DB-less ServiceLevel does not age stale role snapshots without incoming messages
Opened
#722 Correct obsolete AllowAnonymous per-node authorization remarks
Opened
#723 CI runbook retains obsolete job and worker model and test floor
Opened
#725 Offline CI retains 417 distinct test-project build warnings
Opened
#726 Driver test fixtures leave owned probe loops without guaranteed teardown
Opened
#727 tests: guarantee cleanup in Modbus cache-reset fixture failure paths
Opened
#728 ConditionRefresh wire test receives an extra Unspecified event in hosted CI
Opened
#729 Modbus background delegates read mutable CTS fields after lifecycle replacement