From 9df7260f02047d2370da192fc293e8387b078d0f Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 2 Nov 2026 23:08:05 +0000 Subject: [PATCH 1/3] Move the audit append path into Base IAuditLogService (with AuditLogEntrySnapshot) and AuditActionDefinition with its contributor contract move from Humans.AuditLog/Contracts to Humans.Base/AuditLog, namespace unchanged. Projects that only wrote audit rows or declared actions drop their AuditLog reference. AuditLog is still referenced by Web, Agent (viewer), GoogleIntegration (legacy reader) and the six sections whose views render . Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_0186neA78CpJeYKoxRTGsySg --- .../AuditLog}/AuditActionDefinition.cs | 0 .../AuditLog}/IAuditLogService.cs | 2 +- src/Humans.Base/Humans.Base.csproj | 1 + src/Sections/Humans.AuditLog/Docs/AuditLog.md | 7 ++++--- src/Sections/Humans.AuditLog/Docs/health.md | 9 +++++---- src/Sections/Humans.Auth/Humans.Auth.csproj | 2 -- src/Sections/Humans.Backdoor/Humans.Backdoor.csproj | 1 - src/Sections/Humans.Campaigns/Humans.Campaigns.csproj | 1 - src/Sections/Humans.Camps/Humans.Camps.csproj | 1 - src/Sections/Humans.Cantina/Humans.Cantina.csproj | 4 +--- .../Humans.CityPlanning/Humans.CityPlanning.csproj | 1 - src/Sections/Humans.Consent/Humans.Consent.csproj | 1 - src/Sections/Humans.Containers/Humans.Containers.csproj | 1 - src/Sections/Humans.Debug/Humans.Debug.csproj | 5 ++--- .../Humans.Development/Humans.Development.csproj | 1 - .../Humans.Email.Contracts/Humans.Email.Contracts.csproj | 5 ++--- src/Sections/Humans.Email/Humans.Email.csproj | 1 - src/Sections/Humans.Events/Humans.Events.csproj | 1 - src/Sections/Humans.Feedback/Humans.Feedback.csproj | 1 - .../Humans.Finance.Contracts.csproj | 5 ++--- src/Sections/Humans.Finance/Humans.Finance.csproj | 1 - src/Sections/Humans.Gate/Humans.Gate.csproj | 1 - src/Sections/Humans.Governance/Humans.Governance.csproj | 1 - src/Sections/Humans.Grants/Humans.Grants.csproj | 1 - src/Sections/Humans.Issues/Humans.Issues.csproj | 1 - src/Sections/Humans.MailerLite/Humans.MailerLite.csproj | 1 - src/Sections/Humans.Monitor/Humans.Monitor.csproj | 1 - src/Sections/Humans.Onboarding/Humans.Onboarding.csproj | 1 - .../Humans.Preapprovals/Humans.Preapprovals.csproj | 1 - src/Sections/Humans.Rideshare/Humans.Rideshare.csproj | 1 - src/Sections/Humans.Settings/Humans.Settings.csproj | 1 - src/Sections/Humans.Shifts/Humans.Shifts.csproj | 2 -- src/Sections/Humans.Surveys/Humans.Surveys.csproj | 1 - src/Sections/Humans.Workgroups/Humans.Workgroups.csproj | 1 - tests/Humans.Auth.Tests/Humans.Auth.Tests.csproj | 1 - tests/Humans.Backdoor.Tests/Humans.Backdoor.Tests.csproj | 1 - tests/Humans.Camps.Tests/Humans.Camps.Tests.csproj | 1 - .../Humans.Containers.Tests.csproj | 1 - .../Humans.Development.Tests.csproj | 1 - tests/Humans.Email.Tests/Humans.Email.Tests.csproj | 1 - tests/Humans.Feedback.Tests/Humans.Feedback.Tests.csproj | 1 - tests/Humans.Finance.Tests/Humans.Finance.Tests.csproj | 1 - tests/Humans.Gate.Tests/Humans.Gate.Tests.csproj | 1 - .../Humans.Governance.Tests.csproj | 1 - tests/Humans.Grants.Tests/Humans.Grants.Tests.csproj | 1 - tests/Humans.Issues.Tests/Humans.Issues.Tests.csproj | 1 - .../Humans.MailerLite.Tests.csproj | 1 - tests/Humans.Monitor.Tests/Humans.Monitor.Tests.csproj | 1 - .../Humans.Onboarding.Tests.csproj | 1 - .../Humans.Preapprovals.Tests.csproj | 1 - .../Humans.Rideshare.Tests/Humans.Rideshare.Tests.csproj | 1 - tests/Humans.Settings.Tests/Humans.Settings.Tests.csproj | 1 - tests/Humans.Shifts.Tests/Humans.Shifts.Tests.csproj | 1 - tests/Humans.Surveys.Tests/Humans.Surveys.Tests.csproj | 1 - tests/Humans.Teams.Tests/Humans.Teams.Tests.csproj | 1 - tests/Humans.Tickets.Tests/Humans.Tickets.Tests.csproj | 1 - tests/Humans.Users.Tests/Humans.Users.Tests.csproj | 1 - .../Humans.Workgroups.Tests.csproj | 1 - 58 files changed, 18 insertions(+), 71 deletions(-) rename src/{Sections/Humans.AuditLog/Contracts => Humans.Base/AuditLog}/AuditActionDefinition.cs (100%) rename src/{Sections/Humans.AuditLog/Contracts => Humans.Base/AuditLog}/IAuditLogService.cs (93%) diff --git a/src/Sections/Humans.AuditLog/Contracts/AuditActionDefinition.cs b/src/Humans.Base/AuditLog/AuditActionDefinition.cs similarity index 100% rename from src/Sections/Humans.AuditLog/Contracts/AuditActionDefinition.cs rename to src/Humans.Base/AuditLog/AuditActionDefinition.cs diff --git a/src/Sections/Humans.AuditLog/Contracts/IAuditLogService.cs b/src/Humans.Base/AuditLog/IAuditLogService.cs similarity index 93% rename from src/Sections/Humans.AuditLog/Contracts/IAuditLogService.cs rename to src/Humans.Base/AuditLog/IAuditLogService.cs index 304f0906b3..6edc7ebdce 100644 --- a/src/Sections/Humans.AuditLog/Contracts/IAuditLogService.cs +++ b/src/Humans.Base/AuditLog/IAuditLogService.cs @@ -33,7 +33,7 @@ Task> GetEntityIdsForEntityTypeActionsAsync( CancellationToken ct = default); } -/// Action is the stored name; resolves it to its definition. +/// Action is the stored name; IAuditViewerService resolves it to its definition. public sealed record AuditLogEntrySnapshot( Guid Id, string Action, diff --git a/src/Humans.Base/Humans.Base.csproj b/src/Humans.Base/Humans.Base.csproj index 8966a88a6a..02f5c44188 100644 --- a/src/Humans.Base/Humans.Base.csproj +++ b/src/Humans.Base/Humans.Base.csproj @@ -87,6 +87,7 @@ were self-retiring and went with the assembly. Gdpr/ is the GDPR export/erase fan-out seam every data-owning section implements. + AuditLog/ is the audit append path every writing section calls. --> - diff --git a/src/Sections/Humans.Backdoor/Humans.Backdoor.csproj b/src/Sections/Humans.Backdoor/Humans.Backdoor.csproj index baa713c135..2319d458c0 100644 --- a/src/Sections/Humans.Backdoor/Humans.Backdoor.csproj +++ b/src/Sections/Humans.Backdoor/Humans.Backdoor.csproj @@ -23,7 +23,6 @@ - - diff --git a/src/Sections/Humans.Cantina/Humans.Cantina.csproj b/src/Sections/Humans.Cantina/Humans.Cantina.csproj index 2927f504c0..345c29fbb1 100644 --- a/src/Sections/Humans.Cantina/Humans.Cantina.csproj +++ b/src/Sections/Humans.Cantina/Humans.Cantina.csproj @@ -25,11 +25,9 @@ - diff --git a/src/Sections/Humans.CityPlanning/Humans.CityPlanning.csproj b/src/Sections/Humans.CityPlanning/Humans.CityPlanning.csproj index b1d2006c9b..b43f6eae1b 100644 --- a/src/Sections/Humans.CityPlanning/Humans.CityPlanning.csproj +++ b/src/Sections/Humans.CityPlanning/Humans.CityPlanning.csproj @@ -26,7 +26,6 @@ - diff --git a/src/Sections/Humans.Consent/Humans.Consent.csproj b/src/Sections/Humans.Consent/Humans.Consent.csproj index 9627eb36b7..09811af38e 100644 --- a/src/Sections/Humans.Consent/Humans.Consent.csproj +++ b/src/Sections/Humans.Consent/Humans.Consent.csproj @@ -22,7 +22,6 @@ - diff --git a/src/Sections/Humans.Containers/Humans.Containers.csproj b/src/Sections/Humans.Containers/Humans.Containers.csproj index 971fbaba27..fd7fa56818 100644 --- a/src/Sections/Humans.Containers/Humans.Containers.csproj +++ b/src/Sections/Humans.Containers/Humans.Containers.csproj @@ -20,7 +20,6 @@ - - diff --git a/src/Sections/Humans.Development/Humans.Development.csproj b/src/Sections/Humans.Development/Humans.Development.csproj index 7d566c99e5..d8d0485414 100644 --- a/src/Sections/Humans.Development/Humans.Development.csproj +++ b/src/Sections/Humans.Development/Humans.Development.csproj @@ -79,7 +79,6 @@ - diff --git a/src/Sections/Humans.Email.Contracts/Humans.Email.Contracts.csproj b/src/Sections/Humans.Email.Contracts/Humans.Email.Contracts.csproj index e55773b586..dbb5af9fcf 100644 --- a/src/Sections/Humans.Email.Contracts/Humans.Email.Contracts.csproj +++ b/src/Sections/Humans.Email.Contracts/Humans.Email.Contracts.csproj @@ -19,14 +19,13 @@ IImmediateOutboxProcessor), the MessageCategory rules, the facilitated-message builder, the body composer, the SMTP transport, the repository and the entity. - References Humans.Base, plus Humans.AuditLog for the AuditActionDefinition that EmailAuditActions - declares (Camps and Teams audit facilitated messages with it). Base references Humans.Users.Contracts, + References only Humans.Base (AuditActionDefinition, which EmailAuditActions declares for + Camps and Teams to audit facilitated messages, lives there). Base references Humans.Users.Contracts, so nothing in that project may ever reference this one. --> - diff --git a/src/Sections/Humans.Email/Humans.Email.csproj b/src/Sections/Humans.Email/Humans.Email.csproj index 1cbc756022..fb170764d8 100644 --- a/src/Sections/Humans.Email/Humans.Email.csproj +++ b/src/Sections/Humans.Email/Humans.Email.csproj @@ -24,7 +24,6 @@ - - diff --git a/src/Sections/Humans.Finance/Humans.Finance.csproj b/src/Sections/Humans.Finance/Humans.Finance.csproj index b4c3fc6487..cb84648083 100644 --- a/src/Sections/Humans.Finance/Humans.Finance.csproj +++ b/src/Sections/Humans.Finance/Humans.Finance.csproj @@ -26,7 +26,6 @@ - diff --git a/src/Sections/Humans.Gate/Humans.Gate.csproj b/src/Sections/Humans.Gate/Humans.Gate.csproj index 23cde059b2..d67584db44 100644 --- a/src/Sections/Humans.Gate/Humans.Gate.csproj +++ b/src/Sections/Humans.Gate/Humans.Gate.csproj @@ -24,7 +24,6 @@ - - diff --git a/src/Sections/Humans.Grants/Humans.Grants.csproj b/src/Sections/Humans.Grants/Humans.Grants.csproj index 5b06980530..f6eb9bb13d 100644 --- a/src/Sections/Humans.Grants/Humans.Grants.csproj +++ b/src/Sections/Humans.Grants/Humans.Grants.csproj @@ -25,7 +25,6 @@ - diff --git a/src/Sections/Humans.Issues/Humans.Issues.csproj b/src/Sections/Humans.Issues/Humans.Issues.csproj index d9d7bea266..b12091de67 100644 --- a/src/Sections/Humans.Issues/Humans.Issues.csproj +++ b/src/Sections/Humans.Issues/Humans.Issues.csproj @@ -24,7 +24,6 @@ - diff --git a/src/Sections/Humans.MailerLite/Humans.MailerLite.csproj b/src/Sections/Humans.MailerLite/Humans.MailerLite.csproj index a8a67c97fa..816c06f490 100644 --- a/src/Sections/Humans.MailerLite/Humans.MailerLite.csproj +++ b/src/Sections/Humans.MailerLite/Humans.MailerLite.csproj @@ -64,7 +64,6 @@ - diff --git a/src/Sections/Humans.Monitor/Humans.Monitor.csproj b/src/Sections/Humans.Monitor/Humans.Monitor.csproj index 8b8aac1cb8..b9f694d3de 100644 --- a/src/Sections/Humans.Monitor/Humans.Monitor.csproj +++ b/src/Sections/Humans.Monitor/Humans.Monitor.csproj @@ -29,7 +29,6 @@ - diff --git a/src/Sections/Humans.Onboarding/Humans.Onboarding.csproj b/src/Sections/Humans.Onboarding/Humans.Onboarding.csproj index f84da080b0..f743f427fc 100644 --- a/src/Sections/Humans.Onboarding/Humans.Onboarding.csproj +++ b/src/Sections/Humans.Onboarding/Humans.Onboarding.csproj @@ -55,7 +55,6 @@ - diff --git a/src/Sections/Humans.Preapprovals/Humans.Preapprovals.csproj b/src/Sections/Humans.Preapprovals/Humans.Preapprovals.csproj index 4b2dbb7c17..fc72ffd441 100644 --- a/src/Sections/Humans.Preapprovals/Humans.Preapprovals.csproj +++ b/src/Sections/Humans.Preapprovals/Humans.Preapprovals.csproj @@ -25,7 +25,6 @@ - diff --git a/src/Sections/Humans.Rideshare/Humans.Rideshare.csproj b/src/Sections/Humans.Rideshare/Humans.Rideshare.csproj index a051c49350..bf528b80f9 100644 --- a/src/Sections/Humans.Rideshare/Humans.Rideshare.csproj +++ b/src/Sections/Humans.Rideshare/Humans.Rideshare.csproj @@ -25,7 +25,6 @@ - diff --git a/src/Sections/Humans.Settings/Humans.Settings.csproj b/src/Sections/Humans.Settings/Humans.Settings.csproj index 6c14c712ed..cd1d597261 100644 --- a/src/Sections/Humans.Settings/Humans.Settings.csproj +++ b/src/Sections/Humans.Settings/Humans.Settings.csproj @@ -27,7 +27,6 @@ - diff --git a/src/Sections/Humans.Shifts/Humans.Shifts.csproj b/src/Sections/Humans.Shifts/Humans.Shifts.csproj index bde41fdf20..bffcaf056f 100644 --- a/src/Sections/Humans.Shifts/Humans.Shifts.csproj +++ b/src/Sections/Humans.Shifts/Humans.Shifts.csproj @@ -55,7 +55,6 @@ below this project). Camps — ICampService: camp labels and rosters for the summary-by-camp. Users — UserInfo snapshots, IUserMerge, and the profile-side reads. - AuditLog — every write path records an audit entry. Auth — the coordinator/manager authorization surface. EarlyEntry — VolunteerTrackingExportService implements IEarlyEntryProvider; the section project, since EarlyEntry's contracts are a folder. @@ -75,7 +74,6 @@ names no Humans.Shifts type at all. Tickets — early entry gates on the volunteer holding a ticket. --> - - diff --git a/tests/Humans.Containers.Tests/Humans.Containers.Tests.csproj b/tests/Humans.Containers.Tests/Humans.Containers.Tests.csproj index 3ce621bfaf..1fef40b7ba 100644 --- a/tests/Humans.Containers.Tests/Humans.Containers.Tests.csproj +++ b/tests/Humans.Containers.Tests/Humans.Containers.Tests.csproj @@ -2,7 +2,6 @@ - diff --git a/tests/Humans.Development.Tests/Humans.Development.Tests.csproj b/tests/Humans.Development.Tests/Humans.Development.Tests.csproj index 1f60b45398..89ff844098 100644 --- a/tests/Humans.Development.Tests/Humans.Development.Tests.csproj +++ b/tests/Humans.Development.Tests/Humans.Development.Tests.csproj @@ -2,7 +2,6 @@ - diff --git a/tests/Humans.Email.Tests/Humans.Email.Tests.csproj b/tests/Humans.Email.Tests/Humans.Email.Tests.csproj index 43a1192f85..30b1b4daae 100644 --- a/tests/Humans.Email.Tests/Humans.Email.Tests.csproj +++ b/tests/Humans.Email.Tests/Humans.Email.Tests.csproj @@ -2,7 +2,6 @@ - diff --git a/tests/Humans.Feedback.Tests/Humans.Feedback.Tests.csproj b/tests/Humans.Feedback.Tests/Humans.Feedback.Tests.csproj index af97b94056..7c9903273f 100644 --- a/tests/Humans.Feedback.Tests/Humans.Feedback.Tests.csproj +++ b/tests/Humans.Feedback.Tests/Humans.Feedback.Tests.csproj @@ -2,7 +2,6 @@ - diff --git a/tests/Humans.Finance.Tests/Humans.Finance.Tests.csproj b/tests/Humans.Finance.Tests/Humans.Finance.Tests.csproj index 41b531e5ec..ff2a214773 100644 --- a/tests/Humans.Finance.Tests/Humans.Finance.Tests.csproj +++ b/tests/Humans.Finance.Tests/Humans.Finance.Tests.csproj @@ -7,7 +7,6 @@ - diff --git a/tests/Humans.Gate.Tests/Humans.Gate.Tests.csproj b/tests/Humans.Gate.Tests/Humans.Gate.Tests.csproj index 895acce921..7ee6daf2ff 100644 --- a/tests/Humans.Gate.Tests/Humans.Gate.Tests.csproj +++ b/tests/Humans.Gate.Tests/Humans.Gate.Tests.csproj @@ -2,7 +2,6 @@ - diff --git a/tests/Humans.Governance.Tests/Humans.Governance.Tests.csproj b/tests/Humans.Governance.Tests/Humans.Governance.Tests.csproj index fe20abe384..ca326dfb47 100644 --- a/tests/Humans.Governance.Tests/Humans.Governance.Tests.csproj +++ b/tests/Humans.Governance.Tests/Humans.Governance.Tests.csproj @@ -2,7 +2,6 @@ - diff --git a/tests/Humans.Grants.Tests/Humans.Grants.Tests.csproj b/tests/Humans.Grants.Tests/Humans.Grants.Tests.csproj index edfc605c32..9e332fd95e 100644 --- a/tests/Humans.Grants.Tests/Humans.Grants.Tests.csproj +++ b/tests/Humans.Grants.Tests/Humans.Grants.Tests.csproj @@ -2,7 +2,6 @@ - diff --git a/tests/Humans.Issues.Tests/Humans.Issues.Tests.csproj b/tests/Humans.Issues.Tests/Humans.Issues.Tests.csproj index 09ff1ae22f..416314e003 100644 --- a/tests/Humans.Issues.Tests/Humans.Issues.Tests.csproj +++ b/tests/Humans.Issues.Tests/Humans.Issues.Tests.csproj @@ -6,7 +6,6 @@ - diff --git a/tests/Humans.MailerLite.Tests/Humans.MailerLite.Tests.csproj b/tests/Humans.MailerLite.Tests/Humans.MailerLite.Tests.csproj index 39c5e38506..526a48af35 100644 --- a/tests/Humans.MailerLite.Tests/Humans.MailerLite.Tests.csproj +++ b/tests/Humans.MailerLite.Tests/Humans.MailerLite.Tests.csproj @@ -2,7 +2,6 @@ - diff --git a/tests/Humans.Monitor.Tests/Humans.Monitor.Tests.csproj b/tests/Humans.Monitor.Tests/Humans.Monitor.Tests.csproj index b50d0a6ec5..623353b868 100644 --- a/tests/Humans.Monitor.Tests/Humans.Monitor.Tests.csproj +++ b/tests/Humans.Monitor.Tests/Humans.Monitor.Tests.csproj @@ -2,7 +2,6 @@ - diff --git a/tests/Humans.Onboarding.Tests/Humans.Onboarding.Tests.csproj b/tests/Humans.Onboarding.Tests/Humans.Onboarding.Tests.csproj index 9c55842061..3b402a50e8 100644 --- a/tests/Humans.Onboarding.Tests/Humans.Onboarding.Tests.csproj +++ b/tests/Humans.Onboarding.Tests/Humans.Onboarding.Tests.csproj @@ -2,7 +2,6 @@ - diff --git a/tests/Humans.Preapprovals.Tests/Humans.Preapprovals.Tests.csproj b/tests/Humans.Preapprovals.Tests/Humans.Preapprovals.Tests.csproj index a981462149..f296e8598c 100644 --- a/tests/Humans.Preapprovals.Tests/Humans.Preapprovals.Tests.csproj +++ b/tests/Humans.Preapprovals.Tests/Humans.Preapprovals.Tests.csproj @@ -2,7 +2,6 @@ - diff --git a/tests/Humans.Rideshare.Tests/Humans.Rideshare.Tests.csproj b/tests/Humans.Rideshare.Tests/Humans.Rideshare.Tests.csproj index a45333f50b..6934d2df44 100644 --- a/tests/Humans.Rideshare.Tests/Humans.Rideshare.Tests.csproj +++ b/tests/Humans.Rideshare.Tests/Humans.Rideshare.Tests.csproj @@ -2,7 +2,6 @@ - diff --git a/tests/Humans.Settings.Tests/Humans.Settings.Tests.csproj b/tests/Humans.Settings.Tests/Humans.Settings.Tests.csproj index a28b052352..49ad689ae5 100644 --- a/tests/Humans.Settings.Tests/Humans.Settings.Tests.csproj +++ b/tests/Humans.Settings.Tests/Humans.Settings.Tests.csproj @@ -4,7 +4,6 @@ - diff --git a/tests/Humans.Shifts.Tests/Humans.Shifts.Tests.csproj b/tests/Humans.Shifts.Tests/Humans.Shifts.Tests.csproj index 7b5943597a..59add07258 100644 --- a/tests/Humans.Shifts.Tests/Humans.Shifts.Tests.csproj +++ b/tests/Humans.Shifts.Tests/Humans.Shifts.Tests.csproj @@ -2,7 +2,6 @@ - diff --git a/tests/Humans.Surveys.Tests/Humans.Surveys.Tests.csproj b/tests/Humans.Surveys.Tests/Humans.Surveys.Tests.csproj index 46b48a6802..f95f7fcc6c 100644 --- a/tests/Humans.Surveys.Tests/Humans.Surveys.Tests.csproj +++ b/tests/Humans.Surveys.Tests/Humans.Surveys.Tests.csproj @@ -2,7 +2,6 @@ - diff --git a/tests/Humans.Teams.Tests/Humans.Teams.Tests.csproj b/tests/Humans.Teams.Tests/Humans.Teams.Tests.csproj index 194456a5a8..ce08f18a02 100644 --- a/tests/Humans.Teams.Tests/Humans.Teams.Tests.csproj +++ b/tests/Humans.Teams.Tests/Humans.Teams.Tests.csproj @@ -16,7 +16,6 @@ reaching into another section's tables. --> - diff --git a/tests/Humans.Settings.Tests/Humans.Settings.Tests.csproj b/tests/Humans.Settings.Tests/Humans.Settings.Tests.csproj index 49ad689ae5..a4cdb80033 100644 --- a/tests/Humans.Settings.Tests/Humans.Settings.Tests.csproj +++ b/tests/Humans.Settings.Tests/Humans.Settings.Tests.csproj @@ -3,7 +3,6 @@ - From 3de6dd02366a90276751e9c0f1594f98f891a78f Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 3 Nov 2026 11:12:23 +0000 Subject: [PATCH 3/3] Point AuditLog data-access map at the Base location Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_0186neA78CpJeYKoxRTGsySg --- src/Sections/Humans.AuditLog/Docs/data-access.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Sections/Humans.AuditLog/Docs/data-access.md b/src/Sections/Humans.AuditLog/Docs/data-access.md index 5e38da8df1..ba11cb70c9 100644 --- a/src/Sections/Humans.AuditLog/Docs/data-access.md +++ b/src/Sections/Humans.AuditLog/Docs/data-access.md @@ -3,9 +3,9 @@ ## AuditLog Project: `src/Sections/Humans.AuditLog` — services under `Services/`, -repository under `Data/`, plus a `src/Sections/Humans.AuditLog/Contracts` -folder carrying `IAuditLogService` and `AuditLogEntrySnapshot` (read by most -sections). `AuditLog` is a **horizontal section**. +repository under `Data/`. `IAuditLogService` and `AuditLogEntrySnapshot` (used +by most sections) live in `src/Humans.Base/AuditLog/`; the section's `Contracts/` +folder keeps `IAuditViewerService`, `AuditEvent` and `ILegacyGoogleSyncAuditReader`. `AuditLog` is a **horizontal section**. **DbContext:** `AuditLogDbContext`. `AuditLogRepository` injects `IDbContextFactory` directly. Owns