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
0569c5ff23
feat(audit): M5.1 audit tree endpoint + CLI audit tree (T8)
...
Add GET /api/audit/tree endpoint that accepts executionId query param,
authenticates via HTTP Basic + LDAP (OperationalAudit permission), calls
IAuditLogRepository.GetExecutionTreeAsync, and returns a JSON array of
ExecutionTreeNode. Returns 400 for missing/invalid GUID, 401/403 as normal.
Add `scadabridge audit tree --execution-id <guid> [--format table|json]`
CLI subcommand in AuditCommands.Build(). Adds AuditTreeHelpers with:
- BuildUrl: constructs the relative URL + query string
- RunTreeAsync: calls the endpoint, dispatches to table or JSON renderer
- WriteTable: indented ASCII tree (root → children, [*] marks queried node)
- WriteJson: pretty-printed JSON array pass-through
Tests: 7 new ManagementService endpoint tests (valid id, empty, 400, 401,
403, Viewer allowed, wrong role), 18 new CLI tests (parse, render, HTTP
error codes, JSON output, multi-level indentation, queried-node marker).
2026-06-16 21:20:54 -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
100540b153
fix(multivalue): MV-11/MV-13 review nits — correct CLI attribute-delete README synopsis; explicit Disabled + dead-branch cleanup in TemplateEdit list editor
2026-06-16 16:27:44 -04:00
Joseph Doherty
85db4571b2
feat(cli): --element-type and JSON --value for List attributes
2026-06-16 16:18:08 -04:00
Joseph Doherty
c84eb5aeef
docs(cli): note intentional omission of HiLo per-setpoint priorities/deadbands/messages (review fix)
2026-06-07 10:06:58 -04:00
Joseph Doherty
bbc3804d07
feat(cli): typed setpoint flags for template alarm add (serializes trigger-config JSON)
2026-06-07 10:02:51 -04:00
Joseph Doherty
eabf270d71
docs: complete XML doc coverage (returns, summaries, inheritdoc)
...
Resolve all 622 issues flagged by the enhanced CommentChecker: add missing
<returns> tags (incl. the standard phrasing on non-generic Task methods),
add missing <summary> tags, and replace misused/redundant <inheritdoc/> on
members that override or implement nothing with real documentation.
Documentation-only — no behavior change; solution builds clean.
2026-06-03 11:39:32 -04:00
Joseph Doherty
731cfd3bfc
feat(auth): ScadaBridge TransportExport excludes inbound API keys (re-arch C4; methods-only, import ignores legacy key sections); keys re-issued per environment
2026-06-02 05:06:40 -04:00
Joseph Doherty
8219b8ee18
fix(auth): C2 review — not-found throws (no spurious audit) on update/delete/set-methods, reject empty methods (unusable-key/stealth-disable), richer set-methods response, token advisory to stderr
2026-06-02 04:21:28 -04:00
Joseph Doherty
6518e93424
feat(auth): ScadaBridge ManagementActor + CLI + Commons messages onto IInboundApiKeyAdmin seam (re-arch C2; int->string keyId, +Methods, +SetApiKeyMethods)
2026-06-02 04:11:44 -04:00
Joseph Doherty
c899cb162c
refactor: scrub residual ScadaLink refs → ScadaBridge (env vars, config keys, assembly name, SQL login)
...
Renames the 13 SCADALINK_* runtime env vars → SCADABRIDGE_*, the ScadaLink__
.NET config keys → ScadaBridge__, the stale ScadaLink.Host.exe assembly name
→ ZB.MOM.WW.ScadaBridge.Host.exe, the scadalink_app SQL login → scadabridge_app,
and residual identifiers/comments/docs. Migration records (prior rename
tooling/design, DB-rename helper, this scrub script) carved out.
Adds tools/scrub-scadalink-refs.sh.
2026-05-31 21:50:38 -04:00
Joseph Doherty
a6dcbf62cd
feat(cli): native-alarm-source commands (template add/list/remove + instance set/clear)
2026-05-31 02:30:05 -04:00
Joseph Doherty
7b0b9c7365
refactor: rename ScadaLink → ZB.MOM.WW.ScadaBridge (code + projects + namespaces)
...
Solution + 23 src projects + 26 test projects renamed; folders, csproj,
namespaces, and ScadaLinkDbContext/ScadaBridgeDbContext class updated.
ActorSystem "scadalink" → "scadabridge", Akka seed-node URLs migrated.
SQL roles/logins, LDAP domains, CLI command name, and CLI config dir
(~/.scadalink → ~/.scadabridge) also renamed.
Build green; 5 Host.Tests fail awaiting SQL login rename in next commit.
Pre-existing StaleTagMonitor timing flakes unchanged.
Rename script committed at tools/rename-to-scadabridge.sh.
2026-05-28 09:37:45 -04:00