Commit Graph

775 Commits

Author SHA1 Message Date
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
Joseph Doherty
8bb860ad5f test(central-ui): cover the per-site KPI error path on the Notification KPIs page 2026-05-19 06:14:19 -04:00
Joseph Doherty
22bac058dd feat(central-ui): Notification KPIs page with per-site breakdown 2026-05-19 06:09:43 -04:00
Joseph Doherty
34e464edab refactor(central-ui): split Notification Report out of the Outbox page 2026-05-19 06:03:15 -04:00
Joseph Doherty
016f5d48a6 refactor(central-ui): co-locate NotificationListForm with the Notifications pages 2026-05-19 05:59:40 -04:00
Joseph Doherty
36332e5a94 refactor(central-ui): move Notification List form to /notifications, drop External Systems tab 2026-05-19 05:56:45 -04:00
Joseph Doherty
0fa4ac5525 refactor(central-ui): contextual errors, parallel recipient load, delete-path test for Notification Lists 2026-05-19 05:54:48 -04:00
Joseph Doherty
0f90c0ad9c feat(central-ui): standalone Notification Lists page 2026-05-19 05:49:45 -04:00
Joseph Doherty
25beb833fc refactor(central-ui): move SMTP Configuration page to /notifications/smtp 2026-05-19 05:45:06 -04:00
Joseph Doherty
c95758c6ce feat(notification-outbox): CommunicationService per-site KPI accessor 2026-05-19 05:41:35 -04:00
Joseph Doherty
1629a72093 feat(notification-outbox): actor handler for per-site KPI requests 2026-05-19 05:37:14 -04:00
Joseph Doherty
adcab9dcfc feat(notification-outbox): per-site KPI request/response message contracts 2026-05-19 05:33:37 -04:00
Joseph Doherty
d54c3da291 test(notification-outbox): exercise per-site oldest-age reduction and Retrying status 2026-05-19 05:32:06 -04:00
Joseph Doherty
1bb0e62bb3 feat(notification-outbox): per-site KPI aggregation in the repository 2026-05-19 05:26:20 -04:00
Joseph Doherty
67b86aa683 feat(notification-outbox): per-site KPI snapshot type + repository contract 2026-05-19 05:22:45 -04:00
Joseph Doherty
0904401f1e docs(plans): implementation plan for Notifications nav group 2026-05-19 05:08:52 -04:00
Joseph Doherty
113f00a6fa docs(plans): design for Notifications nav group 2026-05-19 05:01:58 -04:00
Joseph Doherty
17861efa51 test(notification-outbox): assert NotNull in SourceScript negative test 2026-05-19 03:57:38 -04:00