Follow-up to the 2026-10-18 architecture audit, linked to PAR-449 and the completed architecture rebuild PAR-408. Rules are in docs/architecture.md. Audit baseline: commit 08d99ee; all 18 architecture checks passed, which does not establish full compliance.
Baseline source scan found 69 conventional log.info/warn/error/debug/trace(...) calls and no fluent logging calls. Example: triage/usecase/ApplyDecision.java:101 logs the decision with positional parameters; platform/outbox/OutboxWorker logs kind/attempt/error without consistently carrying event identity. Rule 32 requires SLF4J key-value fields and a request or event ID. Fluent syntax itself is not the requirement; verify actual structured output and correlation.
Acceptance:
PAR-412 originally specified correlation logging and is marked Done; this tracks the remaining gap.
Implemented in stacked PR #120, based on the preceding architecture layer. Cumulative verification at 46d7c31: 1,334 backend tests, 1,230 web unit tests and 480 Chromium story tests passed; lint, typecheck, API drift and production build/CSS checks passed. The complete story suite passed on the CI-prescribed retry after the known PAR-443 iframe import flake. Diagram uploaded and PR base/head verified. Awaiting review; not merged.
Merged PR #120 into main after all eight stack PRs passed CI. Merge commits preserved dependency ancestry; every layer's retargeted diff and exact head were verified. The full stack head 46d7c31 is now an ancestor of main at b5d5ef5. Marked Done. The separate tenant-index clarification remains tracked in PAR-495.
Implementing layer 5: preserve the existing HTTP/MCP/outbox MDC support, add missing Discord/async/job scopes, emit SLF4J key-value fields, and persist the originating request ID with outbox rows so delivery/retries remain traceable. Verify emitted fields and concurrent cleanup; redact prompts, token material and vendor response bodies. Add a backward-compatible nullable-column migration for historical outbox rows.