fix(privacy): keep ETL resource IDs out of failure logs - #219
Conversation
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Superseded by current-base replacement #320. Fresh pre-disposition verification found #219 at |
Purpose
Fix #218 test-first from exact protected
develop@622e5e6c3d534f230c390f10e3832efadfc01825. The sharedEtlApiProblemHandlerhistorically logged rawrequest.getRequestURI()values for covered ETL failures. Because the same advice handles owner-scoped durable-job controllers, ordinary WARN/ERROR logs could contain opaque per-job resource identifiers even though the HTTP Problem Details body is deliberately bounded.This direct-
developDraft changes only the shared handler and one focused logging regression. It does not change RFC 9457 responseinstance, authorization, controller routing, payload retention, status/error-code semantics, local debug profiles, dependencies, or canonical #149 documentation.Exact current identity
develop@622e5e6c3d534f230c390f10e3832efadfc01825;privacy/etl-problem-log-resource-id-622e5e6;1679d0c9ad99297ba710425e700fe68c21101dd4;79e8e4e7d593665c99d94dfc35fe842c1e5c749f;71c9944bdd8102994cf7ff0552db6b4bb9c2119c;EtlApiProblemHandler.javaandEtlApiProblemHandlerLoggingTest.java;Every check/review from the RED head, predecessor source, another PR, or another base is historical and does not transfer.
RCA
request.getRequestURI().RED — hosted production-boundary proof
Test-only
1679d0c9ad99297ba710425e700fe68c21101dd4addedEtlApiProblemHandlerLoggingTestbefore production changed. It invokes the real target-failure handler with/api/etl/jobs/0198f4cf-41c8-7f52-9e5d-private-job-markerand requires stableETL target failureclassification while the unique owner-scoped resource marker remains absent from captured ordinary logs.CI
31366659260, macOS job93386394718, checked out synthetic merge30ccf21c5fcde284385f9d348b35c3020f9a480a(Merge 1679d0c... into 622e5e6...). Production/test compilation succeeded and ETL ran 276 tests with exactly one failure, zero errors/skips. The emitted line contained:ETL target failure path=/api/etl/jobs/0198f4cf-41c8-7f52-9e5d-private-job-marker ...and exactly the new no-resource-ID assertion failed. Existing synchronous and durable-job controller failure tests remained green. This is valid RED at the real handler/logging boundary, not setup/import/fixture/dependency failure.
GREEN — exact current source
79e8e4e7d593665c99d94dfc35fe842c1e5c749fapplies the narrowest correction:EtlApiProblemHandler;ProblemDetail.instancestill usesrequest.getRequestURI(), so RFC 9457 client semantics are unchanged;The implementation was published as exactly one fast-forward commit over the observed RED head. The immediate compare is
ahead 1 / behind 0with onlyEtlApiProblemHandler.javachanged, so no concurrent branch movement was silently incorporated.Exact-current-head hosted verification
All exposed workflow aggregates associated with exact current source
79e8e4e7d593665c99d94dfc35fe842c1e5c749fare terminal-success:31366864646: success on Ubuntu, macOS and Windows;31366864649: success;31366864621: success;31366864623: success;31366864701: aggregate success.This remains development/merge-preview evidence rather than protected merge authorization. Current CI checked GitHub's synthetic merge preview rather than accepted literal source. Hard Trivy job
93387023450likewise checked synthetic merge71c9944...and explicitly warnedDependency version cannot be determined. Child dependencies will not be found.before reporting zero CRITICAL/HIGH/MEDIUM findings; #196 owns that dependency-graph completeness defect. The scan also still encounters the tracked 82 MBzipkin.jar, separately owned by #168/#169.Protected JaCoCo source remains an independent false-green boundary until #162/#164 or equivalent integration, with repository-wide production coverage scope tracked by #205. A green aggregate cannot change the revision, dependency graph, or selected production units actually examined.
Documentation / relationship
#182 owns the broader production-safe observability profile and finite-cardinality policy; #159 owns canonical Security/Threat Model/Test Strategy/Operability/Traceability reconciliation. This branch closes only the concrete shared-handler log boundary and does not race #149's canonical documentation writer.
Merge boundary
Keep Draft. Merge only when the unchanged exact source head has accepted literal-source deterministic/security evidence, complete same-revision dependency/vulnerability evidence with no unresolved #196 incompleteness, non-vacuous applicable owned-production coverage under #162/#164/#205 or equivalent accepted controls, every required repository/security gate, zero valid unresolved findings, and qualifying independent non-author formal approval where governance requires it. No predecessor-head, other-PR, incomplete-scanner, status-only, skipped-required, queued, or synthetic-merge-only evidence transfers.