Repository navigation
feat(recommendations): preserve source account provenance - #883
Conversation
|
Warning Review limit reached
This review includes 7 billable files and costs up to $1.75.
Reviews can continue after your included limit without a manual trigger. An admin must approve usage-based billing. Or wait 28 minutes for your next included review. View limit details
Comment |
|
This PR uses the independent-review path permitted by the project policy. Two fresh adversarial passes and native PostgreSQL/SDK verification cover 39c3445, as recorded in the description. CodeRabbit reported an included-review limit and did not review this head; no paid review or retry is requested. Any actual findings remain subject to resolution, and required CI and normal merge protections still apply. |
Provider recommendations can name a source account that differs from the registered collector. The converter discarded that identity, preventing later source-aware matching. This change carries the nonempty provider value verbatim in optional
source_account_id, independently ofcloud_account_id.Persistence rejects NUL and invalid UTF-8 with a fixed error before JSON encoding. A failure rolls back earlier batches, replacement deletion, eviction and freshness updates.
Refs #799. Recommendation IDs, the SQL conflict target and consumer identity remain unchanged. Same-tuple source variants still need the later identity steps; this PR does not complete Archera matching or the real-account validation tracked in #798.
Validation at
39c344541afe8245c0d4e09eb2b6303e6586bdeb: Go 1.26.9 backend build and package race tests, golangci-lint 2.10.1 including integration tests, complexity checks and normal hooks passed. Two source passes and exact-byte staged review are clean. Fresh independent cold verification completed two adversarial passes with no actionable findings: real loopback HTTP through the AWS SDK, production conversion/tagging and local PostgreSQL 17.11 JSONB roundtrip; 501-row upsert/replace rollback; null, empty, case and Unicode checks; parent regression and scratch mutation failures at the intended assertions.Native evidence uses synthetic local data. AWS RI SDK transport was exercised; AWS SP and Azure/GCP provider assignments were checked against pinned source, with converter unit tests for all three clouds. No live provider, purchase or customer database verification is claimed.