chore(plans): native alarms execution progress (15/28) + batch-4 notes
This commit is contained in:
@@ -8,10 +8,13 @@
|
||||
- Do all work here; `main` checkout stays untouched. Build: `dotnet build ZB.MOM.WW.ScadaBridge.slnx`.
|
||||
- The shared MS SQL container `scadabridge-mssql` is up (the ConfigDB MsSql migration-fixture tests use it).
|
||||
|
||||
## Progress: Tasks 1–12 done & committed; 13–28 pending
|
||||
Commits (oldest→newest): `696da92` T1, `edc2dac` T2, `ea14ace` T3, `9134419` T4, `63f1ec2` T5, `aedd17c` T6, `fc05ba1` T7, `e5392d2` T8, `ba27873` T9, `d3b3d15` T10, `1fbb814`+`0d30b7d` T11, `c741170` T12.
|
||||
## Progress: Tasks 1–15 done & committed; 16–28 pending
|
||||
Commits (oldest→newest): `696da92` T1, `edc2dac` T2, `ea14ace` T3, `9134419` T4, `63f1ec2` T5, `aedd17c` T6, `fc05ba1` T7, `e5392d2` T8, `ba27873` T9, `d3b3d15` T10, `1fbb814`+`0d30b7d` T11, `c741170` T12, `b44a844` T13, `24fd7be` T14, `fda7ac9` T15.
|
||||
|
||||
**Next batch (4): Tasks 13–17** (site runtime) — all unit-testable with Akka.TestKit. Then 18–19 (proto/gRPC), 20–22 (mgmt/CLI), 23–25 (UI), 26 (seed), 27 (docs), 28 (live integration).
|
||||
**Cadence is now batches of 3 (user choice on resume).** Batch 4 = T13–15 (site runtime store/options/actor) ✅. Full SiteRuntime.Tests green (311/311). Next: **Batch 5 = T16–18** (InstanceActor wiring → AlarmActor enrich → proto regen). Then 19 (gRPC), 20–22 (mgmt/CLI), 23–25 (UI), 26 (seed), 27 (docs), 28 (live integration).
|
||||
|
||||
## Decisions / deviations made during execution — Batch 4 (T13–15)
|
||||
- **T15:** `NativeAlarmActor` ctor has an optional trailing `AlarmKind nativeKind = AlarmKind.NativeOpcUa` (additive — keeps the 7-arg call working). T16 will pass `NativeMxAccess` when the connection protocol is MxGateway. Persistence is **fire-and-forget** (`ContinueWith` OnlyOnFaulted logs) — never blocks the actor. State keyed by `SourceReference`; `AlarmName` on the emitted `AlarmStateChanged` is set to the `SourceReference`. Snapshot path: `Snapshot` buffers, `SnapshotComplete` atomic-swaps (dropped → emit `Active=false`). Live path ignores older `TransitionTime`; retention drops a condition once `!Active && Acknowledged`. `NativeAlarmSourceUnavailable` = log + retain (no emit). Subscribe retry via `ScheduleTellOnceCancelable` at `NativeAlarmRetryIntervalMs`.
|
||||
|
||||
## Known-flaky baseline (NOT my regressions)
|
||||
- 5 `StaleTagMonitor*Tests` in `ZB.MOM.WW.ScadaBridge.Commons.Tests` are timing-flaky under load. User approved treating as known-flaky; do not "fix". Watch only for NEW failures.
|
||||
|
||||
@@ -13,9 +13,9 @@
|
||||
{"id": 10, "subject": "Task 10: DataConnectionActor alarm subscribe/route/unavailable", "status": "completed", "blockedBy": [3]},
|
||||
{"id": 11, "subject": "Task 11: OPC UA A&C adapter", "status": "completed", "blockedBy": [3]},
|
||||
{"id": 12, "subject": "Task 12: MxGateway StreamAlarms adapter", "status": "completed", "blockedBy": [3]},
|
||||
{"id": 13, "subject": "Task 13: SiteRuntimeOptions alarm cap + retry", "status": "pending"},
|
||||
{"id": 14, "subject": "Task 14: Site SQLite NativeAlarmState store", "status": "pending"},
|
||||
{"id": 15, "subject": "Task 15: NativeAlarmActor", "status": "pending", "blockedBy": [1, 2, 3, 4, 13, 14]},
|
||||
{"id": 13, "subject": "Task 13: SiteRuntimeOptions alarm cap + retry", "status": "completed"},
|
||||
{"id": 14, "subject": "Task 14: Site SQLite NativeAlarmState store", "status": "completed"},
|
||||
{"id": 15, "subject": "Task 15: NativeAlarmActor", "status": "completed", "blockedBy": [1, 2, 3, 4, 13, 14]},
|
||||
{"id": 16, "subject": "Task 16: InstanceActor wiring", "status": "pending", "blockedBy": [15]},
|
||||
{"id": 17, "subject": "Task 17: Enrich computed AlarmActor emit", "status": "pending", "blockedBy": [2]},
|
||||
{"id": 18, "subject": "Task 18: Extend sitestream.proto + regenerate", "status": "pending", "blockedBy": [2]},
|
||||
@@ -30,5 +30,5 @@
|
||||
{"id": 27, "subject": "Task 27: Documentation sync", "status": "pending", "blockedBy": [16, 19, 22, 23, 24, 25]},
|
||||
{"id": 28, "subject": "Task 28: Integration / live verification", "status": "pending", "blockedBy": [10, 11, 12, 16, 19]}
|
||||
],
|
||||
"lastUpdated": "2026-05-29 batch-3-complete"
|
||||
"lastUpdated": "2026-05-31 batch-4-complete"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user