Commit Graph

642 Commits

Author SHA1 Message Date
Joseph Doherty
e6e450a257 docs(audit): add Centralized Audit Log requirements (AL-1..AL-12) to HighLevelReqs 2026-05-20 08:42:04 -04:00
Joseph Doherty
31befa1238 docs(audit): register Audit Log (#23) in the README component table 2026-05-20 08:41:22 -04:00
Joseph Doherty
f205746894 docs(audit): disambiguate Config DB refs to 'audit log viewer' post-rename
Task 10's reviewer noted that Component-CentralUI.md renamed the
IAuditService page from 'Audit Log Viewer' to 'Configuration Audit Log
Viewer' to avoid collision with the new operational Audit Log page (#23).
Two stale lowercased refs in Component-ConfigurationDatabase.md needed
the same disambiguation.
2026-05-20 08:39:13 -04:00
Joseph Doherty
8d922391b8 docs(audit): add Audit nav group, Audit Log page, drill-ins, and KPI tiles to Central UI 2026-05-20 08:34:28 -04:00
Joseph Doherty
72388a7616 docs(audit): fix Audit error rate semantics and CLI permission split
Bundle D code-review feedback on 0ae1a25 and e6f7a7f:

- Audit error rate (HealthMonitoring tile) was described as a combined
  view of CentralAuditWriteFailures + AuditRedactionFailure (writer
  health). Per alog.md §10.3 / §14.1 it is the operational error rate
  of audited operations: % of central AuditLog rows with Status not
  in (Success/Delivered/Enqueued) over a rolling 5-min window. Audit
  writer issues surface separately via the dedicated metrics.

- Audit volume description gains the spec-mandated 'events/min, global
  + per-site sparkline' shape.

- CLI: scadalink audit was claiming all three subcommands need both
  OperationalAudit and AuditExport. Per alog.md §11.2 / §15.1, read
  (query, verify-chain) needs OperationalAudit; bulk export
  additionally requires AuditExport. Restored the spec's split.
2026-05-20 08:30:42 -04:00
Joseph Doherty
e6f7a7ff79 docs(audit): add scadalink audit command group to CLI 2026-05-20 08:26:40 -04:00
Joseph Doherty
0ae1a254d7 docs(audit): add Audit Log health metrics and dashboard tiles 2026-05-20 08:26:03 -04:00
Joseph Doherty
61ec4161bf docs(audit): emit ApiInbound.Completed audit row per request 2026-05-20 08:25:14 -04:00
Joseph Doherty
c7ddfc7140 docs(audit): central direct-write of notification dispatch events to AuditLog 2026-05-20 08:20:44 -04:00
Joseph Doherty
8a3e61c670 docs(audit): note shared cached-operation telemetry with Audit Log 2026-05-20 08:20:06 -04:00
Joseph Doherty
2039b1ddca docs(audit): emit AuditLog rows from External System Gateway call paths 2026-05-20 08:06:12 -04:00
Joseph Doherty
117fa39d35 docs(audit): note IAuditWriter hook and site SQLite in Site Runtime 2026-05-20 08:05:31 -04:00
Joseph Doherty
1517b9a03f docs(audit): fix cross-ref to use prose anchor in Component-AuditLog.md
Reviewer flag on 1bbfad3: "per Component-AuditLog.md, §6.2" pointed at
alog.md numbering, not at any anchor in Component-AuditLog.md (which uses
prose subsection titles). Switch to the prose anchor (Ingestion Paths →
Telemetry forward) so the link resolves.
2026-05-20 08:03:50 -04:00
Joseph Doherty
1bbfad3fcd docs(audit): register AuditLog singletons in Cluster Infrastructure 2026-05-20 07:59:13 -04:00
Joseph Doherty
36a598840f docs(audit): add AuditLog table, partitioning, and DB roles to Config DB 2026-05-20 07:58:27 -04:00
Joseph Doherty
acb160ecce docs(audit): fix plan reference to existing CachedCallTelemetry message
Task 2's spec reviewer flagged that the plan used a non-existent name
'CachedOperationTelemetry' when describing the additively-evolved cached
telemetry message. The existing message is 'CachedCallTelemetry'; renaming
would violate Commons REQ-COM-5a (additive-only). Plan now reflects the
in-place additive evolution and warns against rename.
2026-05-20 07:53:23 -04:00
Joseph Doherty
0daa63076d docs(audit): register AuditEvent, IAuditWriter, AuditTelemetry types in Commons 2026-05-20 07:48:36 -04:00
Joseph Doherty
08ccd72365 docs(audit): fix Ingestion Paths count and Purpose conjunction wording
Code-review feedback on c334de0:
- Ingestion Paths intro said 'Three write paths' but the section has four
  subsections (site hot-path append + 3 central writers). Reword to 'Four
  paths feed the central AuditLog -- one site originator and three central
  writers'.
- Purpose: 'dashboards plus drilldowns plus filter queries' read awkwardly;
  switch to standard comma list.
2026-05-20 07:44:54 -04:00
Joseph Doherty
c334de03f4 docs(audit): add Component-AuditLog (#23) design document 2026-05-20 07:36:35 -04:00
Joseph Doherty
d93ca4c56e docs(audit): add implementation plan for centralized audit log
See docs/plans/2026-05-20-centralized-audit-log.md and peer .tasks.json.
17 tasks covering Component-AuditLog.md plus cross-references across
11 affected component docs, README, HighLevelReqs, and CLAUDE.md.
Spec is alog.md at commit fec0bb1.
2026-05-20 07:32:47 -04:00
Joseph Doherty
fec0bb10ff docs(audit): add centralized audit log design (alog.md)
Validated design for a new append-only AuditLog covering the script
trust boundary: outbound API calls (sync + cached), outbound DB
operations (sync + cached, incl. script-initiated reads), notifications,
and inbound API requests. Layered alongside existing Notifications (#21)
and SiteCalls (#22) operational tables.

Key decisions:
- One row per lifecycle event; strictly append-only.
- Site SQLite hot-path append + best-effort gRPC telemetry + central
  reconciliation pull. Site purge requires ForwardState=Forwarded.
- Cached calls: site emits; one telemetry packet feeds both the
  immutable AuditLog row and the operational SiteCalls upsert.
- Payload: metadata + truncated bodies (8 KB default, 64 KB on errors).
  Headers redacted; SQL parameter values captured by default.
- Audit-write failures never abort the user-facing action.
- Monthly partitioning at central; 365-day global retention.
- New Audit nav group + drill-in links from existing pages.

Deferred to v1.x: hash-chain tamper evidence, Parquet archival,
per-channel retention overrides. Provisional component #23.
2026-05-20 07:21:44 -04:00
Joseph Doherty
d08cedc8c4 Merge branch 'cached-call-tracking': add cached-call tracking design 2026-05-19 12:23:13 -04:00
Joseph Doherty
ec82027bd2 docs(requirements): register Site Call Audit in the Host component matrix 2026-05-19 12:09:01 -04:00
Joseph Doherty
d8d47821e3 docs(requirements): reconcile cross-references for Site Call Audit 2026-05-19 12:06:02 -04:00
Joseph Doherty
38b51ef894 docs: record cached-call tracking in CLAUDE.md 2026-05-19 12:03:17 -04:00
Joseph Doherty
d8dfbc79f4 docs: add Site Call Audit to README component table 2026-05-19 12:02:05 -04:00
Joseph Doherty
c2cd62e72a docs(requirements): note shared TrackedOperationId model in notification docs 2026-05-19 12:00:45 -04:00
Joseph Doherty
e681a1f0e1 docs(requirements): add Site Call Audit KPIs to Health Monitoring 2026-05-19 11:58:46 -04:00
Joseph Doherty
7589ea8da9 docs(requirements): list Site Call Audit KPI tiles on the Central UI health dashboard 2026-05-19 11:57:59 -04:00
Joseph Doherty
e471a5a855 docs(requirements): add Site Calls page to Central UI 2026-05-19 11:56:02 -04:00
Joseph Doherty
77cc4865c5 docs(requirements): add SiteCalls table and purge to Configuration Database 2026-05-19 11:53:54 -04:00
Joseph Doherty
d46cb56934 docs(requirements): correct cached-call telemetry lifecycle states in Communication 2026-05-19 11:52:34 -04:00
Joseph Doherty
d43d43d795 docs(requirements): add cached-call telemetry pattern to Communication 2026-05-19 11:50:55 -04:00
Joseph Doherty
00ec265980 docs(requirements): add Tracking.Status and cached-call handles to Script Runtime API 2026-05-19 11:48:45 -04:00
Joseph Doherty
f839f6ce45 docs(requirements): make cached-write and cached-call docs symmetric 2026-05-19 11:47:30 -04:00
Joseph Doherty
354314dfe0 docs(requirements): cached calls return TrackedOperationId in ESG 2026-05-19 11:45:41 -04:00
Joseph Doherty
320e4d7479 docs(requirements): document Failed terminal state for permanent cached-call failures 2026-05-19 11:44:23 -04:00
Joseph Doherty
17ef5f85de docs(requirements): add site-local tracking table and telemetry to Store-and-Forward 2026-05-19 11:42:20 -04:00
Joseph Doherty
5efbb9a985 docs(requirements): name TrackedOperationKind enum and clarify status-enum relationships 2026-05-19 11:40:18 -04:00
Joseph Doherty
397498c120 docs(requirements): add TrackedOperationId and cached-call contracts to Commons 2026-05-19 11:37:04 -04:00
Joseph Doherty
e0026c6da7 docs(requirements): clarify Site Call Audit lifecycle states and actionability 2026-05-19 11:34:44 -04:00
Joseph Doherty
627c48c458 docs(requirements): add Site Call Audit component (#22) 2026-05-19 11:32:00 -04:00
Joseph Doherty
a08ad09514 docs(plans): add cached-call tracking implementation plan 2026-05-19 11:30:21 -04:00
Joseph Doherty
e7ed858920 docs(plans): design cached-call tracking with trackable IDs
Add TrackedOperationId handles to CachedCall/CachedWrite under a unified tracking model. New site-local tracking table is the status source of truth; new central Site Call Audit component (#22) mirrors status via telemetry, exposes KPIs and a Site Calls UI page with central->site Retry/Discard.
2026-05-19 11:26:37 -04:00
Joseph Doherty
f749a5f977 test(central-ui): cover the Notifications nav section in Playwright nav tests 2026-05-19 06:45:55 -04:00
Joseph Doherty
547a7b98e5 fix(central-ui): load notification-list recipients sequentially to avoid concurrent DbContext use 2026-05-19 06:34:32 -04:00
Joseph Doherty
7ecf6448e3 docs(plans): mark Notifications nav group tasks complete 2026-05-19 06:31:23 -04:00
Joseph Doherty
562a1d1678 test(central-ui): assert the Health KPIs link is a real anchor element 2026-05-19 06:24:39 -04:00
Joseph Doherty
82745ef916 feat(central-ui): link Health outbox tiles to the Notification KPIs page 2026-05-19 06:22:02 -04:00
Joseph Doherty
0be1feb561 feat(central-ui): add the Notifications nav section 2026-05-19 06:17:58 -04:00