Joseph Doherty
28cab6e881
docs(sms): design for SMS (Twilio) notification adapter + T10 plumbing (T9 Teams→SMS pivot)
2026-06-19 09:34:45 -04:00
Joseph Doherty
7c1d61647e
feat(dcl): bound per-tag seed ReadAsync with SeedReadTimeout ( #232 , DCL-027)
2026-06-19 01:35:40 -04:00
Joseph Doherty
023c4f7cde
docs(m10): mark M10 UI/UX platform delivered + sync README/CLAUDE + log follow-ups
2026-06-18 20:20:39 -04:00
Joseph Doherty
c0aaba17ea
docs(m10): T34 theme dark-mode feasibility spike findings
2026-06-18 19:18:49 -04:00
Joseph Doherty
d8ba99d19d
docs(m10): UI/UX platform implementation plan — 17 tasks, 5 waves (T33-T36, T41)
2026-06-18 19:15:54 -04:00
Joseph Doherty
1a23b902b2
docs(m10): UI/UX platform design — modal host, tokens+dark mode, pager/filter extractions, a11y pass, alarm-override Playwright
2026-06-18 19:01:54 -04:00
Joseph Doherty
ba335519f4
docs(m9): mark M9 delivered + sync TemplateEngine/TreeView/DataConnection/schema-library/CLI docs
...
- 2026-06-15-stillpending-completion-design.md: M9 section marked DELIVERED with per-feature
summary and deferrals (folder drag-drop, unified outbox page).
- stillpending.md: T22–T26/T28/T30–T32 + CLI cached-call marked [DELIVERED M9]; permanent
deferrals (folder drag-drop, unified outbox page) retained as [PERM].
- Component-TemplateEngine.md: TemplateFolder SortOrder + ReorderTemplateFolderCommand;
Expression-trigger analysisKind (Advisory/Strict) on Alarm + Script; Script parameter
JSON Schema / lib: ref note; Inheritance Resolve authoring section (GetResolvedTemplateMembersCommand /
TemplateInheritanceResolver / staleness banner); updated Responsibilities.
- Component-TreeView.md: T22 search box wired note; T23 folder sibling reorder + root context
menu note; drag-drop permanently deferred clarified in V7 worked example.
- Component-CentralUI.md: template tree search + inherited-members panel (T26 staleness banner)
added to Template Authoring; drag-drop permanently deferred note; Schema Library page (T32)
added as new subsection; ParameterValueForm + Monaco hover (T30/T31) noted; connection
live-status (T25) + move-connection (T24) added to Site & Data Connection Management.
- Component-ConfigurationDatabase.md: SharedSchema entity + ISharedSchemaRepository row added.
- Component-CLI.md: --trigger-kind option added to template alarm add/update and script add/update.
- src/ZB.MOM.WW.ScadaBridge.CLI/README.md: --trigger-kind option added to template alarm
add/update and template script add/update command tables (already had cached-call group).
2026-06-18 13:39:33 -04:00
Joseph Doherty
efcdd18794
feat(m9): CLI cached-call retry/discard command group
...
Adds `cached-call retry` and `cached-call discard` subcommands that relay
to the existing Deployer-gated RetryParkedMessageCommand /
DiscardParkedMessageCommand via the central SiteCallAuditActor → site relay.
ManagementCommandRegistry already covered both types via reflection auto-discovery.
CommandTreeTests updated to include cached-call (group count 16 → 17).
2026-06-18 10:13:56 -04:00
Joseph Doherty
939aea159b
docs(m9): implementation plan + task persistence (17 tasks, 5 waves)
...
Bite-sized per-task plan for T22-T26, T28, T30-T32 + CLI cached-call retry/discard.
ManagementActor.cs/ValidationService.cs/shared-razor serialization points enumerated;
blockedBy deps + Parallelizable-with sets; integration trace + EF model-drift + shared
fixture re-run checklist per integration-catches-cross-cutting-gaps.
2026-06-18 10:08:57 -04:00
Joseph Doherty
4b152958df
docs(m9): approved design — Templates & authoring (T22-T26, T28, T30-T32 + CLI cached-call retry/discard)
...
Locked decisions: T26 authoring-only (resolve + staleness banner, no stored-row
mutation); T32 full ($ref resolver + template-level schema library, no new package);
unified-outbox page deferred (CLI retry/discard ships instead); T23 menu-based
reorder + root context menu (no drag-drop); guarded move-connection; reuse existing
health transport for live status; T28 opt-in strict escalation layer.
2026-06-18 10:01:38 -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
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
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
a87bf8a459
docs(m7): implementation plan + task graph — 22 tasks across waves A-E (T13-T17)
2026-06-18 01:57:18 -04:00
Joseph Doherty
254e0e729f
docs(m7): approved design — OPC UA / MxGateway UX (T13-T17)
...
Full-M7 scope: operator Alarm Summary (per-instance live snapshots),
MxGateway secured writes (Operator+Verifier roles + PendingSecuredWrite +
central relay), OPC UA BrowseNext paging + bounded recursive search,
type-info surfacing + attribute-override CSV import, Verify-endpoint button +
site-local cert trust (broadcast to both nodes). Builds on the merged
opcua-tag-browser + mxgw-supervisory-write foundations already in main.
2026-06-18 01:44:40 -04:00
Joseph Doherty
241a792e7b
docs(kpi): K17 — #26 KpiHistory component doc + README/CLAUDE + cross-component interactions + completion-design update
2026-06-17 20:52:12 -04:00
Joseph Doherty
4c6ae9da0e
docs(m6): KPI History tasks.json (K1-K17 with blockedBy graph)
2026-06-17 19:32:58 -04:00
Joseph Doherty
1809664bcb
docs(m6): KPI History & Trends implementation plan (K1-K17, bite-sized tasks + execution waves)
2026-06-17 19:32:58 -04:00
Joseph Doherty
6084e56c9f
docs(m6): KPI History & Trends design — reusable tall/EAV KPI-history backbone + trend charts for all sources; T9/T10 (Teams) deferred to next major version
2026-06-17 19:32:58 -04:00
Joseph Doherty
59f135a4cf
docs(DV-6): document Debug View tabbed-tree layout, native placeholders, and new AlarmStateChanged fields
...
- Component-CentralUI.md: replace flat-table Debug View section with tabbed
tree layout (Attributes + Alarms tabs, TreeView<TItem> reuse, hierarchy from
canonical names, branch roll-up, all-configured-alarms rule, native source
binding nodes with quiet-binding placeholder rows, per-leaf rendering detail)
- Component-SiteRuntime.md (Instance Actor Wiring): add idle-binding placeholder
emission via BuildAlarmStatesSnapshot(), _nativeAlarmKinds map, and
NativeSourceCanonicalName stamping on live native events
- Component-SiteRuntime.md (Enriched AlarmStateChanged): document two new
additive fields — NativeSourceCanonicalName (string?) and
IsConfiguredPlaceholder (bool) — plus their gRPC proto fields 22/23 and
StreamRelayActor/SiteStreamGrpcClient pack/unpack
- Component-Commons.md (Attribute Stream DTOs): extend AlarmStateChanged bullet
with the same two additive fields and proto field numbers
2026-06-17 15:21:42 -04:00
Joseph Doherty
1045e7966d
docs(plans): implementation plan for Debug View tabs + hierarchy trees
...
7 tasks (DV-1..DV-7): additive AlarmStateChanged native-binding contract
chain, site snapshot native placeholders, DebugTreeNode + pure builder
(attribute + alarm trees with roll-up/filter), DebugView tabs reusing
TreeView<TItem>, docs, and integration (build + docker + Playwright).
2026-06-17 14:14:58 -04:00
Joseph Doherty
811d72255c
docs(plans): design for Debug View tabs + hierarchy trees
...
Tabbed Attributes/Alarms view with collapsible composition trees derived
from path-qualified canonical names; all configured alarms (computed +
native) shown with current status; branch-level status roll-up; native
source bindings as nodes with conditions nested. Site snapshot enriched
with placeholder rows for idle native sources via an additive
IsConfiguredPlaceholder field on AlarmStateChanged.
2026-06-17 14:06:08 -04:00
Joseph Doherty
e8db6c71a8
docs(plans): mark WaitAsync compile-surface tasks complete in tasks.json
2026-06-17 11:24:03 -04:00
Joseph Doherty
dc43a3f0f6
docs(plans): add WaitAsync compile-surface mirror-gaps plan + tasks
2026-06-17 11:00:41 -04:00
Joseph Doherty
af54c8ad11
merge: integrate WaitAsync/M5-audit (parallel session) with galaxy array-write + inbound-timeout fixes
2026-06-17 09:28:15 -04:00
Joseph Doherty
11534089b9
docs(siteruntime): mark WaitAsync deferred items implemented (§3/§4.2/§6) + fast-path throwing-predicate test
2026-06-17 09:15:42 -04:00
Joseph Doherty
cd15426b21
docs(siteruntime): plan for WaitAsync deferred items (WaitForAsync, quality-gated, routed §6)
2026-06-17 08:58:05 -04:00
Joseph Doherty
b89d69a008
docs(siteruntime): add WaitAsync attribute-change helper spec
2026-06-17 08:14:09 -04:00
Joseph Doherty
639e331db1
test+docs(m5): M5.7 — de-date 2 EndToEnd purge tests ( closes #52 ); document T3-T8 in Component-AuditLog/-CLI/README/CLAUDE
...
Tests: anchor SeedOccurredAt() to a fixed thresholdAnchor (2026-01-20) and compute
RetentionDays dynamically (UtcNow - anchor + 1d) so the threshold always sits near
Jan 20 2026, between the Jan-15 "old" seed (purged) and Apr-15/Jun-15 "kept" seeds.
Seed dates stay within the explicit pf_AuditLog_Month boundary range (Jan 2026 –
Dec 2027) — relative-from-now offsets landed before 2026-01-01 (the catch-all
partition, invisible to GetPartitionBoundariesOlderThanAsync). Both tests confirmed
passing; all 284 AuditLog tests green.
Docs:
- Component-AuditLog.md: per-channel retention overrides (T3, PerChannelRetentionDays
+ bounded DELETE + AuditLogPurge:ChannelPurgeBatchSize); ParentExecutionId tag-cascade
now spans alarm-triggered + nested CallScript/CallShared + inbound→routed (T4, "no
further spawn points deferred"); per-node stuck KPIs for Notification Outbox +
Site Call Audit (T6); T7 structured response-capture increments (request headers in
Extra.requestHeaders, AuditInboundCeilingHits counter, per-method SkipBodyCapture);
T8 CLI audit tree; T1 hash-chain + T2 Parquet explicitly marked deferred to v1.x.
- Component-CLI.md + README.md: document audit tree --execution-id <guid> and
audit backfill-source-node --sentinel/--before/--batch with exact options verified
against AuditCommands.cs; update Interactions to list new endpoints.
- CLAUDE.md: update audit-log design-decision bullets for T3 per-channel retention,
T4 tag-cascade complete, T6 per-node KPIs, T7 inbound capture increments, T8 tree
command; clarify T1/T2 remain deferred to v1.x.
2026-06-16 22:26:09 -04:00
Joseph Doherty
55630b48b6
feat(audit): M5.6 SourceNode sentinel backfill (purge-role) + CLI + runbook note (T5)
2026-06-16 22:02:21 -04:00
Joseph Doherty
f63055c296
chore(inbound): task-persistence for Ipsen MES MoveIn plan
2026-06-16 22:00:10 -04:00
Joseph Doherty
6fbf3e71fd
docs(inbound): implementation plan for Ipsen MES MoveIn
2026-06-16 22:00:10 -04:00
Joseph Doherty
d8ccad6f54
docs(inbound): design for Ipsen MES MoveIn -> reactor MES receiver
...
SAPID(+side) -> BTDB Machine.SAPID -> Code -> instance; inbound script does
the lookup via a new scoped read-only DB helper, then routes to a new T1
template script that gates on MoveInReadyFlag and writes the MoveIn to the
correct Left/Right MES receiver. -LT deferred.
2026-06-16 22:00:10 -04:00
Joseph Doherty
0e9bcbb676
docs(m5): implementation plan + tasks for audit hardening T3-T8
2026-06-16 21:12:52 -04:00
Joseph Doherty
1b7600fcb3
docs(m5): design — audit hardening T3-T8 (T1 hash-chain + T2 Parquet stay deferred)
2026-06-16 21:10:21 -04:00
Joseph Doherty
e77e209b8a
docs(m4): fix bundle CLI example option names in transport design §13 (--output/--input, not --out/positional)
2026-06-16 20:37:51 -04:00
Joseph Doherty
dd545281e6
docs(m4.3): reconcile CLI README + Component-CLI to registered commands/options (document bundle group; fix option drift)
2026-06-16 20:30:40 -04:00
Joseph Doherty
0780c2e49e
docs(m4.4): clear stale deferred/no-op markers for shipped features (relay, bundle-import audit, M5 redaction, audit drill-in, Transport CLI, traceability)
...
- SiteCallAudit/ServiceCollectionExtensions.cs: drop "still deferred" note on relay; point to SiteCallAuditActor where it lives
- Transport/Import/BundleImporter.cs: update "Only LoadAsync implemented" to reflect all three phases shipped
- SiteRuntime/Scripts/AuditingDbCommand.cs: replace two M5-deferred redaction comments with accurate references to AuditLogOptions.PerTargetOverrides
- SiteRuntime/Scripts/ScriptRuntimeContext.cs: replace "M5 will layer redaction" note with accurate description of shipped redactor
- CentralUI/AuditLogPage.razor.cs: replace "Bundle C wires… no-op seam" with accurate description of HandleRowSelected implementation
- docs/plans/2026-05-24-transport-design.md §13: update from "CLI Deferred / not built in v1" to reflect shipped BundleCommands.cs; update Open Questions entry
- docs/plans/2026-05-24-transport.md: convert Out-of-Scope "Do NOT build CLI" reminder to a factual note that it shipped
- docs/plans/2026-05-24-transport.md.tasks.json: flip all 30 tasks from pending → done (entire Transport feature shipped)
2026-06-16 20:30:29 -04:00
Joseph Doherty
13605d3dfd
docs(m4.1): reconcile Config-DB AuditLog schema + Commons (AuditEvent/ApiKey/SiteCall/NotificationType) to shipped code
2026-06-16 20:29:16 -04:00
Joseph Doherty
c3b046457e
docs(m4.2): reconcile InboundAPI (Bearer/audit-timing/type-validation), Security (cookie session, role names), Notification (Email-only, AuditKind vocab) to code
2026-06-16 20:27:43 -04:00
Joseph Doherty
fb5f14e04f
docs(m3): document Script Analysis component ( #25 ); reconcile consumer specs + README/CLAUDE component list
2026-06-16 20:05:24 -04:00
Joseph Doherty
0cc8642cfa
docs(m3): implementation plan + tasks for shared ScriptAnalysis consolidation
2026-06-16 19:09:12 -04:00
Joseph Doherty
8e99f22b24
docs(m3): design — shared ScriptAnalysis project consolidating the 4 trust-model analyzers
2026-06-16 19:07:32 -04:00
Joseph Doherty
dc9f31537a
docs: record final-review follow-ups (deployed-snapshot normalization gap I-1; CLI native-form help example)
2026-06-16 18:34:34 -04:00
Joseph Doherty
c53b621b85
docs: mark native-typed JSON feature complete; update Component-Commons codec note
...
NJ-6: full solution builds 0/0; feature-targeted tests green (Commons codec 38,
TemplateEngine InstanceService 17, ConfigDB normalizer 8, Transport serializer 12,
SiteRuntime InstanceActor 47). Component-Commons now describes the native-typed
List encoding + read-both decode + the three normalization paths. #93/M3 folded in.
2026-06-16 18:27:10 -04:00
Joseph Doherty
69f7c526d0
docs: implementation plan for native-typed JSON List values + normalization
...
6 tasks (NJ-1..NJ-6): native codec + read-both decode; stamp override
ElementDataType (#93/M3); idempotent central startup normalizer; site
override-load normalization; normalize-on-import; integration + docs.
2026-06-16 17:13:14 -04:00
Joseph Doherty
91b1aa1275
docs: design for native-typed JSON List attribute values + data normalization
...
Encode emits native-typed JSON ([10,20], [true,false], ISO dates); Decode reads
both old (array-of-strings) and new forms. Existing data normalized via an
idempotent central MS SQL startup normalizer, active site SQLite normalization in
the InstanceActor override-load path, and normalize-on-import for bundles.
Approved via brainstorming (Approach B, thorough).
2026-06-16 17:08:38 -04:00
Joseph Doherty
734c161383
docs: mark multi-value (List) attribute feature complete; document DataType.List + ElementDataType in Component-Commons
...
MV-15 integration checkpoint: full solution builds 0/0; feature-targeted tests
green across Commons, TemplateEngine, SiteRuntime, DataConnectionLayer,
Communication, Transport, ManagementService, CLI, CentralUI (255 tests).
2026-06-16 16:34:56 -04:00