Commit Graph

1582 Commits

Author SHA1 Message Date
Joseph Doherty 72aec3b4d4 fix(dcl): robust static-tag seeding — bounded-retry+log initial seed (#1) and re-seed on reconnect (#3)
STATIC tags (no further OnDataChange after advise) depend entirely on the
seed read. Pre-fix HandleSubscribe seeded only on Success && Value != null,
silently dropping a seed that raced the just-created advise (VT_EMPTY) — so a
static tag stayed Uncertain forever while the source read Good. ReSubscribeAll
did no seeding at all, so a static tag could not self-heal across reconnect.

- New SeedTagsAsync helper: per-tag ReadAsync (not a bulk read — some gateways
  time out on large batches) with round-based bounded retry
  (SeedReadMaxAttempts/SeedReadRetryDelay), logging any tag that never yields a
  value (named — previously zero log trace).
- HandleSubscribe seed loop delegates to SeedTagsAsync.
- ReSubscribeAll re-seeds re-advised tags after reconnect via the
  generation-guarded TagValueReceived path (fan-out keys off
  _subscriptionsByInstance, preserved across reconnect).

Diagnosed live on wonder-app-vd03 2026-06-17 (see scadabridge-dcl-static-tag-false-bad).
Mechanism #2 (single transient-bad push) left as a follow-up.
2026-06-18 09:28:36 -04:00
Joseph Doherty 3782ebdadb fix(transport): skip unbound (empty ConnectionName) bindings on import instead of writing FK=0 (M8 INT review) 2026-06-18 07:56:00 -04:00
Joseph Doherty 4d888c63a3 docs(m8): Transport site/instance transport, name-mapping, Myers diff, stale enumeration (M8 INT) 2026-06-18 07:53:25 -04:00
Joseph Doherty f881521cc9 fix(transport-ui): reset connection choices on site change + clear state on back (M8 E2 review)
Fix 1: OnSiteChoiceChangedAsync now resets _connectionChoices for every
RequiredConnectionMapping under the changed source site after loading the new
target's connections. Choices are re-seeded to the same-named connection on
the new target if present, or CreateNewValue otherwise — preventing BuildNameMap
from emitting MapToExisting for a connection absent from the newly-chosen target.

Fix 2: BackToUpload now calls ResetSessionState() before resetting _step so
_session, _preview, _resolutions, _siteChoices, _connectionChoices,
_targetSites, and _targetConnections are all cleared when the operator backs
out to re-upload, making it safe to start a new import flow from a clean slate.

Tests 12 + 13 added to TransportImportPageTests.
2026-06-18 07:39:19 -04:00
Joseph Doherty d45a7a5760 fix(transport): real stale-instance enumeration in ImportResult (M8 D2, #16) + native-alarm rename-redirect test 2026-06-18 07:35:08 -04:00
Joseph Doherty c8211f6363 feat(transport-ui): import Map step + per-line diff view (M8 E2) 2026-06-18 07:21:23 -04:00
Joseph Doherty e67587ec93 fix(transport-ui): use DataConnection ctor in CountSecrets tests (M8 build fix) 2026-06-18 07:11:41 -04:00
Joseph Doherty 565d53d0fe feat(transport): import name-map plumbing via CLI + ManagementActor (M8 D3) 2026-06-18 07:08:33 -04:00
Joseph Doherty d974477e87 fix(transport): connection map Pass-2 (FK) + site-qualified connection resolution (M8 D1-FIX, C1+C2) 2026-06-18 07:08:31 -04:00
Joseph Doherty 6457f03fae feat(transport): apply site/instance import with name-map + FK rewire (M8 D1, T18) 2026-06-18 06:52:40 -04:00
Joseph Doherty 542a3e92eb fix(transport-ui): count site data-connection config in export secret banner (M8, C2-SECRET-1) 2026-06-18 06:37:38 -04:00
Joseph Doherty 50d77b07cf feat(transport): preview diff + required-mapping detection + blockers (M8 C2) 2026-06-18 06:28:47 -04:00
Joseph Doherty d0b38ad726 feat(transport-ui): export wizard site/instance selection (M8 E1) 2026-06-18 06:26:36 -04:00
Joseph Doherty bdbf5cdab0 feat(transport): export site/instance selection end-to-end via CLI + ManagementActor (M8 B4) 2026-06-18 06:14:39 -04:00
Joseph Doherty d7dae24355 feat(transport): per-line Myers code diff + site/connection/instance compare (M8 C1, T20) 2026-06-18 06:07:04 -04:00
Joseph Doherty 7e5b1b0275 feat(transport): resolve site/instance export selection + deps (M8 B1) 2026-06-18 05:55:56 -04:00
Joseph Doherty bb6e883758 feat(transport): serialize site/connection/instance entities<->DTOs (M8 B2) 2026-06-18 05:54:17 -04:00
Joseph Doherty aefdb9f4b6 feat(transport): manifest summary counts + schemaVersion 1.1 (M8 B3) 2026-06-18 05:52:12 -04:00
Joseph Doherty 0e507052a1 feat(transport): site/connection/instance bundle DTOs (M8 A2) 2026-06-18 05:42:24 -04:00
Joseph Doherty c1282e06a2 feat(transport): pure Myers LineDiffer helper (M8 A3, T20) 2026-06-18 05:41:10 -04:00
Joseph Doherty 4f1925870f feat(transport): name-map types + preview/selection/summary extensions (M8 A1) 2026-06-18 05:40:24 -04:00
Joseph Doherty 2f3c1a4e64 chore(m8): task persistence for Transport plan (15 tasks, dependency DAG) 2026-06-18 05:31:01 -04:00
Joseph Doherty 1ee75ac620 docs(m8): Transport T18/T20/#16 implementation plan (15 tasks, waves A-E + INT) 2026-06-18 05:29:39 -04:00
Joseph Doherty e4964f7b30 docs(m8): approved Transport T18/T20 + #16 design (site/instance transport, name-mapping, Myers diff) 2026-06-18 05:25:04 -04:00
Joseph Doherty 0c7774acdc fix(mgmt): re-assert MxGateway protocol at secured-write execute (D2 TOCTOU guard, T14b) 2026-06-18 04:24:53 -04:00
Joseph Doherty 40928535fd docs(m7): reflect OPC UA / MxGateway UX (T13-T17) across component docs + CLAUDE/stillpending/completion-design 2026-06-18 04:13:21 -04:00
Joseph Doherty 39afa2743e fix(comm): route Search/Verify/WriteTag commands through SiteCommunicationActor + DeploymentManager (M7 end-to-end) 2026-06-18 03:59:35 -04:00
Joseph Doherty 384204b71a feat(centralui): cert-management UI + Trust action + site relay (T17) 2026-06-18 03:53:32 -04:00
Joseph Doherty 2d139442ba fix(siteruntime): CertStoreActor — dispose listed certs + reject path-traversal thumbprints (T17) 2026-06-18 03:42:17 -04:00
Joseph Doherty a56805e681 test(centralui): register IEndpointVerificationService in OpcUaEndpointEditor/DataConnectionForm fixtures broken by B8 verify-button (T17) 2026-06-18 03:38:43 -04:00
Joseph Doherty 1a7e735149 feat(centralui): Secured Writes page — operator submit + verifier queue + history (T14b) 2026-06-18 03:34:08 -04:00
Joseph Doherty b08bfae329 feat(audit): SecuredWrite audit kinds + best-effort per-lifecycle central direct-write; guard approve Decode (T14b) 2026-06-18 03:17:56 -04:00
Joseph Doherty c8d9303031 feat(siteruntime): per-node CertStore actor + trust broadcast to both site nodes (T17) 2026-06-18 03:13:48 -04:00
Joseph Doherty 303385fd98 feat(centralui): Verify-endpoint button + result/cert panel (T17) 2026-06-18 03:12:11 -04:00
Joseph Doherty 45a5a92455 fix(centralui): NodeBrowserDialog — reset load/expand spinner on error + clear stale failure on blank search (T15) 2026-06-18 03:05:23 -04:00
Joseph Doherty 733c7bf66c feat(dcl): OPC UA verify-endpoint probe with untrusted-cert capture (T17) 2026-06-18 03:00:55 -04:00
Joseph Doherty 90abb4b8e2 feat(centralui): NodeBrowserDialog search + load-more + type column (T15/T16) 2026-06-18 03:00:16 -04:00
Joseph Doherty 1f7bb7ace3 feat(mgmt): secured-write approve relays to site MxGateway write with CAS race guard (T14b) 2026-06-18 02:59:43 -04:00
Joseph Doherty 74dd26eebd feat: OPC UA address-space search plumbing — actor + comm + BrowseService (T15) 2026-06-18 02:51:57 -04:00
Joseph Doherty c00c8241b3 feat(dcl): bounded recursive OPC UA address-space search adapter (T15) 2026-06-18 02:45:01 -04:00
Joseph Doherty 9ec2450ad5 feat: thread BrowseNext continuation token through actor + BrowseService (T15) 2026-06-18 02:43:25 -04:00
Joseph Doherty d5e7e897c0 feat(centralui): InstanceConfigure CSV bulk override import (T16) 2026-06-18 02:30:33 -04:00
Joseph Doherty 25c9240415 feat(mgmt): secured-write submit/reject/list handlers + Operator/Verifier gating (T14b) 2026-06-18 02:29:29 -04:00
Joseph Doherty 586d54359c feat(cli): instance import-overrides --file (T16) 2026-06-18 02:27:40 -04:00
Joseph Doherty 2cfe0de927 feat(dcl): BrowseNext continuation paging + StubOpcUaClient canned browse (T15) 2026-06-18 02:21:59 -04:00
Joseph Doherty 3c9122bc07 feat(centralui): operator Alarm Summary page + per-instance snapshot fan-out (T13) 2026-06-18 02:21:41 -04:00
Joseph Doherty 6a6f8949b9 fix(commons): OverrideCsvParser — preserve literal mid-field quotes, error on unterminated quoted field (T16 CSV) 2026-06-18 02:13:10 -04:00
Joseph Doherty c799f41d53 feat(db): PendingSecuredWrite entity + migration + repository (T14b) 2026-06-18 02:09:31 -04:00
Joseph Doherty a0ce8b6c44 feat(security): add Operator + Verifier roles + policies + LDAP mapping options (T14a) 2026-06-18 02:07:01 -04:00
Joseph Doherty 5fd77c7155 feat(dcl): surface OPC UA DataType/ValueRank/Writable on BrowseNode (T16 type-info) 2026-06-18 02:02:23 -04:00