Cleanup/serviceradar core removal #2647

Merged
mfreeman451 merged 3 commits from refs/pull/2647/head into testing 2026-01-11 16:53:38 +00:00
mfreeman451 commented 2026-01-11 16:50:35 +00:00 (Migrated from github.com)
Owner

Imported from GitHub pull request.

Original GitHub pull request: #2244
Original author: @mfreeman451
Original URL: https://github.com/carverauto/serviceradar/pull/2244
Original created: 2026-01-11T16:50:35Z
Original updated: 2026-01-11T16:53:39Z
Original head: carverauto/serviceradar:cleanup/serviceradar-core_removal
Original base: testing
Original merged: 2026-01-11T16:53:38Z by @mfreeman451

User description

IMPORTANT: Please sign the Developer Certificate of Origin

Thank you for your contribution to ServiceRadar. Please note, when contributing, the developer must include
a DCO sign-off statement indicating the DCO acceptance in one commit message. Here
is an example DCO Signed-off-by line in a commit message:

Signed-off-by: J. Doe <j.doe@domain.com>

Describe your changes

Code checklist before requesting a review

  • I have signed the DCO?
  • The build completes without errors?
  • All tests are passing when running make test?

PR Type

Enhancement, Documentation


Description

  • Remove deprecated Go-based core service, replace with Elixir core-elx

  • Update all service references from serviceradar-core to serviceradar-core-elx

  • Remove webhook configuration dependency from CoreServiceConfig struct

  • Add comprehensive design documentation for golang core removal


Diagram Walkthrough

flowchart LR
  A["Deprecated Go Core<br/>serviceradar-core"] -->|"Replaced by"| B["Elixir Core<br/>serviceradar-core-elx"]
  C["Docker Compose<br/>Configs"] -->|"Updated references"| B
  D["K8s/Helm<br/>Manifests"] -->|"Updated references"| B
  E["Config Models<br/>pkg/models"] -->|"Remove Webhooks field"| F["Clean Dependencies"]
  G["Documentation<br/>INSTALL.md, README"] -->|"Updated"| B

File Walkthrough

Relevant files
Bug fix
1 files
config.go
Remove webhook config and core alerts import                         
+6/-8     
Configuration changes
5 files
docker-compose.dev.yml
Replace golang core with Elixir core-elx service                 
+23/-34 
docker-compose.spiffe.yml
Migrate core service to Elixir with updated environment config
+31/-34 
tools-profile.sh
Update service references to core-elx hostname                     
+4/-4     
BUILD.bazel
Update build references from core to core-elx image           
+3/-50   
sbom-images.yml
Update SBOM workflow to reference core-elx image                 
+1/-1     
Documentation
8 files
INSTALL.md
Update installation docs to reference core-elx service     
+11/-7   
README.md
Document Elixir core-elx as primary container image           
+6/-5     
README.md
Update example references from core to agent components   
+4/-4     
README.md
Remove golang core references from SPIRE documentation     
+3/-3     
proposal.md
Add proposal for removing deprecated golang core service 
+77/-0   
design.md
Add detailed design and dependency analysis for core removal
+174/-0 
tasks.md
Add comprehensive task checklist for core service removal
+99/-0   
spec.md
Add architecture requirements for Elixir-only core service
+33/-0   
Additional files
101 files
BUILD.bazel +0/-32   
.ko.yaml +0/-15   
BUILD.bazel +0/-17   
BUILD.bazel +0/-24   
app.go +0/-206 
config.json +0/-165 
config.json +0/-165 
main.go +0/-86   
Dockerfile.core +0/-93   
entrypoint-core.sh +0/-98   
push_targets.bzl +0/-1     
Dockerfile.rpm.core +0/-100 
core.yaml +0/-264 
kustomization.yaml +0/-1     
serviceradar-core.yaml +0/-270 
kustomization.yaml +0/-1     
spire-clusterspiffeid-core.yaml +0/-13   
kustomization.yaml +0/-3     
serviceradar-core-grpc-external.yaml +0/-22   
kustomization.yaml +0/-3     
serviceradar-core-grpc-external.yaml +0/-22   
components.json +0/-56   
BUILD.bazel +0/-9     
api.docker.env +0/-9     
api.env +0/-4     
core.docker.json +0/-142 
core.json +0/-165 
package.sh +0/-131 
postinstall.sh +0/-178 
preremove.sh +0/-9     
serviceradar-core.service +0/-27   
packages.bzl +0/-42   
serviceradar-core.spec +0/-192 
BUILD.bazel +0/-127 
BUILD.bazel +0/-14   
discord.go +0/-57   
interfaces.go +0/-34   
mock_alerts.go +0/-69   
webhook.go +0/-362 
alias_events.go +0/-203 
alias_events_test.go +0/-116 
BUILD.bazel +0/-79   
agent_registry.go +0/-72   
alias_history_test.go +0/-55   
auth.go +0/-1303
auth_test.go +0/-149 
collectors.go +0/-114 
collectors_test.go +0/-40   
config_redaction.go +0/-196 
config_redaction_test.go +0/-151 
config_status_test.go +0/-70   
datasvc_registry.go +0/-175 
device_graph.go +0/-78   
device_registry.go +0/-361 
edge_onboarding.go +0/-773 
edge_onboarding_archive.go +0/-427 
edge_onboarding_test.go +0/-666 
identity.go +0/-425 
identity_test.go +0/-126 
interfaces.go +0/-52   
mock_api_server.go +0/-105 
network_discovery.go +0/-646 
rperf.go +0/-109 
server.go +0/-2874
snmp_status.go +0/-100 
spire.go +0/-135 
sysmon.go +0/-722 
template_registry_adapter.go +0/-61   
types.go +0/-177 
BUILD.bazel +0/-45   
auth.go +0/-221 
auth_test.go +0/-327 
interfaces.go +0/-35   
jwks.go +0/-71   
jwt.go +0/-235 
middleware.go +0/-90   
mock_auth.go +0/-118 
rbac.go +0/-183 
rbac_test.go +0/-31   
BUILD.bazel +0/-14   
bootstrap.go +0/-89   
canonical_cache.go +0/-132 
canonical_cache_test.go +0/-54   
capabilities.go +0/-273 
capability_metrics.go +0/-55   
config.go +0/-453 
config_defaults_test.go +0/-20   
devices.go +0/-497 
devices_test.go +0/-882 
discovery.go +0/-1059
discovery_test.go +0/-745 
edge_onboarding.go +0/-3257
edge_onboarding_test.go +0/-1808
errors.go +0/-27   
events.go +0/-216 
events_test.go +0/-134 
flush.go +0/-509 
gateway_recovery.go +0/-88   
gateway_recovery_test.go +0/-219 
gateways.go +0/-1549
Additional files not shown

Imported from GitHub pull request. Original GitHub pull request: #2244 Original author: @mfreeman451 Original URL: https://github.com/carverauto/serviceradar/pull/2244 Original created: 2026-01-11T16:50:35Z Original updated: 2026-01-11T16:53:39Z Original head: carverauto/serviceradar:cleanup/serviceradar-core_removal Original base: testing Original merged: 2026-01-11T16:53:38Z by @mfreeman451 --- ### **User description** ## IMPORTANT: Please sign the Developer Certificate of Origin Thank you for your contribution to ServiceRadar. Please note, when contributing, the developer must include a [DCO sign-off statement]( https://developercertificate.org/) indicating the DCO acceptance in one commit message. Here is an example DCO Signed-off-by line in a commit message: ``` Signed-off-by: J. Doe <j.doe@domain.com> ``` ## Describe your changes ## Issue ticket number and link ## Code checklist before requesting a review - [ ] I have signed the DCO? - [ ] The build completes without errors? - [ ] All tests are passing when running make test? ___ ### **PR Type** Enhancement, Documentation ___ ### **Description** - Remove deprecated Go-based core service, replace with Elixir core-elx - Update all service references from serviceradar-core to serviceradar-core-elx - Remove webhook configuration dependency from CoreServiceConfig struct - Add comprehensive design documentation for golang core removal ___ ### Diagram Walkthrough ```mermaid flowchart LR A["Deprecated Go Core<br/>serviceradar-core"] -->|"Replaced by"| B["Elixir Core<br/>serviceradar-core-elx"] C["Docker Compose<br/>Configs"] -->|"Updated references"| B D["K8s/Helm<br/>Manifests"] -->|"Updated references"| B E["Config Models<br/>pkg/models"] -->|"Remove Webhooks field"| F["Clean Dependencies"] G["Documentation<br/>INSTALL.md, README"] -->|"Updated"| B ``` <details><summary><h3>File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Bug fix</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>config.go</strong><dd><code>Remove webhook config and core alerts import</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-366a7f033cccba511935056e3e5bd509657f2e86213958a84b1d0d3ec606db83">+6/-8</a>&nbsp; &nbsp; &nbsp; </td> </tr> </table></details></td></tr><tr><td><strong>Configuration changes</strong></td><td><details><summary>5 files</summary><table> <tr> <td><strong>docker-compose.dev.yml</strong><dd><code>Replace golang core with Elixir core-elx service</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-9542f82d64bbeebd91f6236324bfe199e9657e2cb1fd9779d5d6dcdcf9cd4de1">+23/-34</a>&nbsp; </td> </tr> <tr> <td><strong>docker-compose.spiffe.yml</strong><dd><code>Migrate core service to Elixir with updated environment config</code></dd></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-603fd9e7d40841d174f26b95d0cb0c9537430bf3f7a5da3ccbba4ea3d8ac66c9">+31/-34</a>&nbsp; </td> </tr> <tr> <td><strong>tools-profile.sh</strong><dd><code>Update service references to core-elx hostname</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-f47597e2f5d4d085d8bf109109608f8ec0b7db8e90545e869b9ae409b607a4ac">+4/-4</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td><strong>BUILD.bazel</strong><dd><code>Update build references from core to core-elx image</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-0e4db31c224a8f72ae8e870a849e38a59d74a2c7f7b04347b0b3eb07e20c5a80">+3/-50</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>sbom-images.yml</strong><dd><code>Update SBOM workflow to reference core-elx image</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-306f4aa8e8e286f727246a7517eecd45f3535fd99a644f60d635b9fa39875f54">+1/-1</a>&nbsp; &nbsp; &nbsp; </td> </tr> </table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>8 files</summary><table> <tr> <td><strong>INSTALL.md</strong><dd><code>Update installation docs to reference core-elx service</code>&nbsp; &nbsp; &nbsp; </dd></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-09b140a43ebfdd8dbec31ce72cafffd15164d2860fd390692a030bcb932b54a0">+11/-7</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>README.md</strong><dd><code>Document Elixir core-elx as primary container image</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-da8fcbe728a9172b578e5d754f8e2df214c658c4321f610e63dd68bea828ab49">+6/-5</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td><strong>README.md</strong><dd><code>Update example references from core to agent components</code>&nbsp; &nbsp; </dd></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-9c5cf52f29654a6beae1aa2cee50ec7ad4656b84cdf48109a5da8935777005a1">+4/-4</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td><strong>README.md</strong><dd><code>Remove golang core references from SPIRE documentation</code>&nbsp; &nbsp; &nbsp; </dd></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-8b4f234b5a5b8a166a37e898facf84394962c1e6754c0ec13833b2a3cc400f7c">+3/-3</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td><strong>proposal.md</strong><dd><code>Add proposal for removing deprecated golang core service</code>&nbsp; </dd></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-a03b30a377f9866d5a978c0ff648214dc25db5c273358fdccd2abd6481095234">+77/-0</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>design.md</strong><dd><code>Add detailed design and dependency analysis for core removal</code></dd></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-bfe97c1c5f22a16b721cb415493df22314de436415908ca158c0b3005edfd32c">+174/-0</a>&nbsp; </td> </tr> <tr> <td><strong>tasks.md</strong><dd><code>Add comprehensive task checklist for core service removal</code></dd></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-f3644a6407c8c5366efcc2c7b12c0e11b0fd18e85294c9a1a6b74d5a9574896e">+99/-0</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>spec.md</strong><dd><code>Add architecture requirements for Elixir-only core service</code></dd></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-327773a1302bde1a8cf91205e33aa709a055cda5a3b54f035f18297855aec620">+33/-0</a>&nbsp; &nbsp; </td> </tr> </table></details></td></tr><tr><td><strong>Additional files</strong></td><td><details><summary>101 files</summary><table> <tr> <td><strong>BUILD.bazel</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-884fa9353a5226345e44fbabea3300efc7a87dfbcde0b6a42521ca51823f1b68">+0/-32</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>.ko.yaml</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-c403e088cfbc9e150c604da6a056a188e7a5f5585c45cdb515460f000008b441">+0/-15</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>BUILD.bazel</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-cf437f055db002c5a1dba0ac4a4949d0ecc4b095e8e760bf5aec0f5d4c08f572">+0/-17</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>BUILD.bazel</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-5570e460b26d54e1c23df4652073efa22cfd37353237956b5ffc4f355bbb3346">+0/-24</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>app.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-4ad8a289575edf3b163088617b7a40ae1305c29ced0c7d59b3751c57d6938072">+0/-206</a>&nbsp; </td> </tr> <tr> <td><strong>config.json</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-2423ef78d36e905ae993b69ff59f5df6b2e1b9492fb0fa8c6d0aad7c76d2d229">+0/-165</a>&nbsp; </td> </tr> <tr> <td><strong>config.json</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-ef778d85ac6f9652c25cb0d631f0fe8dfb3edac4dde5d719a4fc2926fb5c3216">+0/-165</a>&nbsp; </td> </tr> <tr> <td><strong>main.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-4ab3fd1d4debc53dd2499d94a0f60c648fdae4235dd1e3678095a975f5bb434a">+0/-86</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>Dockerfile.core</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-34849cba9f0b40185bfcba10b1a076a87f4ab2d63e08d5a88fc932c60956df66">+0/-93</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>entrypoint-core.sh</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-8338c1aca698162657e6ec96bfa568dd1f27250c7939107c927c11685db1e051">+0/-98</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>push_targets.bzl</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-4af33fe62caba04b6d479589c16cfb85babc39bae5c92595d4d4e31660738513">+0/-1</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td><strong>Dockerfile.rpm.core</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-90650fa7b4e1e8a4b029b779e379604b3c501de516b6418ae665ea8cb094995d">+0/-100</a>&nbsp; </td> </tr> <tr> <td><strong>core.yaml</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-06ab387d2c169d82a1de28b5e66c86f0417bd81b82a96246d0a2da8bfaa8d224">+0/-264</a>&nbsp; </td> </tr> <tr> <td><strong>kustomization.yaml</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-c4260176971b950ef1b967a2631b446225071906172f56287c465ad2e29788d9">+0/-1</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td><strong>serviceradar-core.yaml</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-2f484d8fe3bae65aace437568f6dd660c92f57b452f7bd1608083a8fe3716ba3">+0/-270</a>&nbsp; </td> </tr> <tr> <td><strong>kustomization.yaml</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-da7153de0d369673a73265d55929b82c3fa51a1c6f6482ad28c1c0e65ffe23db">+0/-1</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td><strong>spire-clusterspiffeid-core.yaml</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-e55c65f79cefe84f9d0a7d1a24d6f970bd7c74e2852ae2d46f00ca32d4b6c019">+0/-13</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>kustomization.yaml</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-0527e7f19d087f3576d5755a79554797ffbab78b1a7efaa38984b4f3241f6fc9">+0/-3</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td><strong>serviceradar-core-grpc-external.yaml</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-67e2a1dffbc8d92de3c92174fd842cf8d8591ed6e8e60cbeff3e726090656d49">+0/-22</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>kustomization.yaml</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-ae7d8d4134a595a9d278924988f58e1843ad4d5d24b4df3b2c976dd3610a1b64">+0/-3</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td><strong>serviceradar-core-grpc-external.yaml</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-f51adfb8139cb35e63c15d12bc01dbd1083c5fb364ec73c0ba3ee094920209cf">+0/-22</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>components.json</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-3ae5949d89b0252d10fce9bf950231c8151a73b2154dccfe4e7261acc116582c">+0/-56</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>BUILD.bazel</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-d375384323093ea1f35b57fb77433b4bbc98e26074cb44928d9c0e65644ae96b">+0/-9</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td><strong>api.docker.env</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-f73382a0d52d8a3b678def7f1ba1e799199985c95407e09a3c31d7045fbcc3a0">+0/-9</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td><strong>api.env</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-860b39f96839d818a8370265a8acdeba2ea0f43aa1e367afe621ae34aa97e647">+0/-4</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td><strong>core.docker.json</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-e8daaf647c9f7582595681307b2d56a0b0436bebb8e9112d9c894cacb3347a1f">+0/-142</a>&nbsp; </td> </tr> <tr> <td><strong>core.json</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-4f0af07024cb3f3d96091e6fba8a2c28a8c77e25a3cf459b89baf16b82e96723">+0/-165</a>&nbsp; </td> </tr> <tr> <td><strong>package.sh</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-b46a18191d186203d53b70cd5bb134e24c9e5181de89c41abc9cbe87ad8291b1">+0/-131</a>&nbsp; </td> </tr> <tr> <td><strong>postinstall.sh</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-a1224d84676dd2c5874d49d80f7edb6f50c88c819fbaf5c216c17703b7929113">+0/-178</a>&nbsp; </td> </tr> <tr> <td><strong>preremove.sh</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-d9cdcf2e28e8592968f8656b2e76d447c88386a500f233b8474b5ed33cc77219">+0/-9</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td><strong>serviceradar-core.service</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-00f43084e6510eb59c79114b00a95d3e61e601cbb7b50329b639c3768f761cf5">+0/-27</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>packages.bzl</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-9bfe2a5141a9e402bb5a5a8fca53b9eea64396ec18108c535392e1054c90b913">+0/-42</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>serviceradar-core.spec</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-b03570dbdd332568f77902ae5a6dc38255e2639e1fa4bb921c06c1557dbf35e0">+0/-192</a>&nbsp; </td> </tr> <tr> <td><strong>BUILD.bazel</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-af133ce6c45ec51c66bcb5fe0b424291d78688285b614275765003b83c177534">+0/-127</a>&nbsp; </td> </tr> <tr> <td><strong>BUILD.bazel</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-1b78d8c9438c278cc0c21bd540917bca9b1675551fd3ddecac0acd0369bf9a4b">+0/-14</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>discord.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-1af8682861a181c62d99b2a5fe28d7e600e3f179f04b13a47c88d9bb72b5518c">+0/-57</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>interfaces.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-afb0e0677190e31ba9f30d083416bb411e5244742979238bf34bbe6514c28322">+0/-34</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>mock_alerts.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-fa49f6afd03d33bfb892eb81f9fc2580717af8ae1dab7c73b659c2cd5eca1eb7">+0/-69</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>webhook.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-153f1a3af5930b8e2f3b4be28de8185919a1ef1d99f1395e806df868d6df443e">+0/-362</a>&nbsp; </td> </tr> <tr> <td><strong>alias_events.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-6f4a025b8603f442a742e6af5ce59d704ea85f6d067ed2762d5720f0de288524">+0/-203</a>&nbsp; </td> </tr> <tr> <td><strong>alias_events_test.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-6c5cbc13d42263331420df5a6ba0500e2184efd44c61cd75d699fb75ea658000">+0/-116</a>&nbsp; </td> </tr> <tr> <td><strong>BUILD.bazel</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-ee91bfc5d078aab2befc64f89c36dca0de7342465f414ecd70292d092153bfcc">+0/-79</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>agent_registry.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-0df374b9f39280c9e16603d3dfb872be6d49eaef78507a9c26a2bc9610cbb041">+0/-72</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>alias_history_test.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-7987dd5473f28408a800cdedd612ada3eb79c5fc5ba7c4a4e31750f28eb7b9c9">+0/-55</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>auth.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-61eb09279471ca59a1b57a306f0ad05988a8cb39eca163b32bfb86c53f8a553e">+0/-1303</a></td> </tr> <tr> <td><strong>auth_test.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-4e62854ea14cbf28a84fb3d9fc1341866261872678a73c3912628e475ddb7d06">+0/-149</a>&nbsp; </td> </tr> <tr> <td><strong>collectors.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-ea8e042db40227646592d91e2cabf35dfbad5fdcd4d7e48566768ec9cd91b50a">+0/-114</a>&nbsp; </td> </tr> <tr> <td><strong>collectors_test.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-55e61784b820564f9424218a59dbc62d3c358156488b8beb09bdcd1894172e95">+0/-40</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>config_redaction.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-2331b461668ce353c364a2d779e3d064ce00c536d4fa4b26dd6eaced7df476a4">+0/-196</a>&nbsp; </td> </tr> <tr> <td><strong>config_redaction_test.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-7c4d2ba039a59d651e8c5e7932266dafb566fff04a884ba079fc8755bc618b5c">+0/-151</a>&nbsp; </td> </tr> <tr> <td><strong>config_status_test.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-f2e69c39ea36d06d2101e2ce9cd4dda2cbbb53831c3e804a452aca603a81e440">+0/-70</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>datasvc_registry.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-9218ee6431c62dd960cdde73b650080803141719665b3429d440483f7e05ffe4">+0/-175</a>&nbsp; </td> </tr> <tr> <td><strong>device_graph.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-91ecda82892945aa05bfb95fcd180357f622533b14454be294f77dbff262d817">+0/-78</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>device_registry.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-34b7da1b2845de83ee2b0eeba93ef1c8b7abf40517f20617c861abffec32ee1c">+0/-361</a>&nbsp; </td> </tr> <tr> <td><strong>edge_onboarding.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-c494568149a0b526ca5349c1d78d5e5ee7ec4144ecfd324c44f25fef584292bc">+0/-773</a>&nbsp; </td> </tr> <tr> <td><strong>edge_onboarding_archive.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-2d7fbd464b3d6fe7ccfd0e244ba5af3c68fe7cbe39821f2e1e45652512eb7d28">+0/-427</a>&nbsp; </td> </tr> <tr> <td><strong>edge_onboarding_test.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-ff98b520d3df871ff219eb56ab1a2ac2d55afb266b87393bd63360635ba02880">+0/-666</a>&nbsp; </td> </tr> <tr> <td><strong>identity.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-6561d8fc8daf275c514d54c99743f4e0f694d6392fb6bf7dd2bb7ad88e3b9ab0">+0/-425</a>&nbsp; </td> </tr> <tr> <td><strong>identity_test.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-d34e6900ac440087e2fcf68a9abf8e871aea16438de782e6de28b4c39fc882b3">+0/-126</a>&nbsp; </td> </tr> <tr> <td><strong>interfaces.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-ed4bf67095345b7e387caeb64a5033a276047cf9d7ea1c0f3fe215a8bbfa14f4">+0/-52</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>mock_api_server.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-c959039ce0e77b7e92616612fdd7329ac3b3999fd205ef92204a2069867472ac">+0/-105</a>&nbsp; </td> </tr> <tr> <td><strong>network_discovery.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-60047002fd6642800576f57541a62a48015b4e21c7e00c4c8bfcae29007e0804">+0/-646</a>&nbsp; </td> </tr> <tr> <td><strong>rperf.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-299f5ee148213bf2622166b05f00e3c47b5725b7f5ba98c111ab5fcc13e23879">+0/-109</a>&nbsp; </td> </tr> <tr> <td><strong>server.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-1bb99367fdd853c728b7cfbf5893a293f6d217144dfb5282cb8dd32e5261021e">+0/-2874</a></td> </tr> <tr> <td><strong>snmp_status.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-49d7a07074b5841f306bb6671b7d8784cf1bc58fb34516aa74b318f369e78804">+0/-100</a>&nbsp; </td> </tr> <tr> <td><strong>spire.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-b2b0398e450cc0108fdef1349586a31fb4b204ddc529543a7a2d892cbb89fe81">+0/-135</a>&nbsp; </td> </tr> <tr> <td><strong>sysmon.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-4879e8b367ee55413c6cb006f23bb912261df5310c640d3af352033cf97ffc84">+0/-722</a>&nbsp; </td> </tr> <tr> <td><strong>template_registry_adapter.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-a804a6194734dbdc6e252816294f7822291b5f6da4203dd9829ad0ad4ab6af8e">+0/-61</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>types.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-39f024121630282f9e3eeee5b77e5a63a87950b9eae4f479277a289796b42d56">+0/-177</a>&nbsp; </td> </tr> <tr> <td><strong>BUILD.bazel</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-29fdc151e4be1c5a4531b5ad1616fc92e7ba6dbeb677c8d83f0c0aff76b13ed7">+0/-45</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>auth.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-0b7f7eb5cf973f3df06eecd45ab16a2c7460fc5070817ececec1b2088de4e6b8">+0/-221</a>&nbsp; </td> </tr> <tr> <td><strong>auth_test.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-5acdcf8a4c5007fccaea93cf2ed8da0a9b14d411f2a106df8fb1a64ad84f72ea">+0/-327</a>&nbsp; </td> </tr> <tr> <td><strong>interfaces.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-e90dc6a02020d9354740725bc8a389080289d550de63663d07bff9866c4b7201">+0/-35</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>jwks.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-c1dcd45c039f662eaeb0919049cf430a917c01be90477942e86e5098cfbebb8c">+0/-71</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>jwt.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-680a5571533c378b414c0a3f01e2546e006947291dd93e15fc833a1350f3cae1">+0/-235</a>&nbsp; </td> </tr> <tr> <td><strong>middleware.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-cbc89c70ced5288dfd4283a8cb972f74e50e1aa05a3acb6d523ee8e258ad7924">+0/-90</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>mock_auth.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-e60d3e71da4f7d1b20e73d877aa83725e188ff0d8325fcca7c19156ca5eddcdf">+0/-118</a>&nbsp; </td> </tr> <tr> <td><strong>rbac.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-b6534f98cbeb7d1c075c2e41c2302d33e5aebd32f8dcfb563c51582e8121d650">+0/-183</a>&nbsp; </td> </tr> <tr> <td><strong>rbac_test.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-39a23495b9ec913fc1dc8caa0b6d163e829b36115981358adcad2ca6bc71c494">+0/-31</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>BUILD.bazel</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-bdb6fcf1c82f674b3fee09c9b82a36817a1dffe59b4f0b9dd42442a3249274b7">+0/-14</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>bootstrap.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-b3cc8955e22d15be8a676a46643ccffc5283d26f2c0ef2fb21a73894d4933912">+0/-89</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>canonical_cache.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-f15007387966f0f7a8fc3fe7dd99304bb6426f02a5b4cc76370999ee4459b2b6">+0/-132</a>&nbsp; </td> </tr> <tr> <td><strong>canonical_cache_test.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-f293e25e290f31cfd598d6dabaf77c3d9f15441a2e18c46bdbc0f0784207eaef">+0/-54</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>capabilities.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-4084a2d451d8d35a130d6ead2417126a70dd4929ffb18004640c4f7a91d44ce5">+0/-273</a>&nbsp; </td> </tr> <tr> <td><strong>capability_metrics.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-d3c5427a3fda9cecf8a18cdc74b357133d60201ac3ca00cd9aebbea14a63e41f">+0/-55</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>config.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-a2dcdf3bac7ca59032d52f7a0635b5dbcfcb83a6f07cc45db8f57fba0cc33c30">+0/-453</a>&nbsp; </td> </tr> <tr> <td><strong>config_defaults_test.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-da36d332e7ed42f5ef6bda1ce6806c69f902e644e17f9f6d78c3c1673e331d51">+0/-20</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>devices.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-fb7f5159558f22afdc809b9cbf5a9c0f71560be2f7389c944da8f1604998ea48">+0/-497</a>&nbsp; </td> </tr> <tr> <td><strong>devices_test.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-133a0e1348e2d2dcfc9645f0409219463138e17380efd4fbc213be14c104043b">+0/-882</a>&nbsp; </td> </tr> <tr> <td><strong>discovery.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-037880b0f5f345614f813cca12ec429765f07396878b6f177b4259eb3a4f5f0e">+0/-1059</a></td> </tr> <tr> <td><strong>discovery_test.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-b98ad41e72ec7955760cb3125403b10e31a63566d9a35a0d08f3231df5c2b0b3">+0/-745</a>&nbsp; </td> </tr> <tr> <td><strong>edge_onboarding.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-85874e3c4bdcc9110db09909f10648d44cdee554b26c987f910502321eb20b5c">+0/-3257</a></td> </tr> <tr> <td><strong>edge_onboarding_test.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-83ba269452783436d693c0f17ab42c959efdef44c7cf6ec27301dd1b0e7d5744">+0/-1808</a></td> </tr> <tr> <td><strong>errors.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-b68d5ad41a41e93fa7a12e6af28f9759616b75c91192c7fa2fa1aab69bf3470a">+0/-27</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>events.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-7d499ed41701e367e51735c9a0a78bcce977dea3872771eb7b22c47dc39e0241">+0/-216</a>&nbsp; </td> </tr> <tr> <td><strong>events_test.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-e566158923f4d9a76314034653cff9edb9c5f6c2528dbed3bc9d54cc06ceab55">+0/-134</a>&nbsp; </td> </tr> <tr> <td><strong>flush.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-4ad1cf4b0397bd277cd9c0553e4992ad7c9e9484d49d49d48af015958dc4bf4b">+0/-509</a>&nbsp; </td> </tr> <tr> <td><strong>gateway_recovery.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-09c0dd2dd8ac566d3787a0d90331ad93c8c448325d3283fe337660c8d9f5b91e">+0/-88</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>gateway_recovery_test.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-84f2e51750248ab47b4d77e89e127741d6ffa997f4ab7bc1ee2570790fec613b">+0/-219</a>&nbsp; </td> </tr> <tr> <td><strong>gateways.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-260332914ad2238e720f4637a71b0f9f01e899102bc6b37f7827782e56b0b5c0">+0/-1549</a></td> </tr> <tr> <td><strong>Additional files not shown</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-2f328e4cd8dbe3ad193e49d92bcf045f47a6b72b1e9487d366f6b8288589b4ca"></a></td> </tr> </table></details></td></tr></tbody></table> </details> ___
qodo-code-review[bot] commented 2026-01-11 16:51:11 +00:00 (Migrated from github.com)
Author
Owner

Imported GitHub PR comment.

Original author: @qodo-code-review[bot]
Original URL: https://github.com/carverauto/serviceradar/pull/2244#issuecomment-3735021132
Original created: 2026-01-11T16:51:11Z

PR Compliance Guide 🔍

Below is a summary of compliance checks for this PR:

Security Compliance
Hardcoded default credentials

Description: The new core-elx service configuration hardcodes and/or provides insecure default secrets
(e.g., CNPG_PASSWORD=serviceradar here and similarly
CNPG_PASSWORD=${CNPG_PASSWORD:-serviceradar} plus
RELEASE_COOKIE=${RELEASE_COOKIE:-serviceradar_cookie} in docker-compose.spiffe.yml), which
can lead to credential exposure and accidental deployment with known credentials.
docker-compose.dev.yml [23-35]

Referred Code
environment:
  - CLUSTER_ENABLED=false
  # Database configuration
  - CNPG_HOST=cnpg
  - CNPG_PORT=5432
  - CNPG_DATABASE=serviceradar
  - CNPG_USERNAME=serviceradar
  - CNPG_PASSWORD=serviceradar
  - CNPG_SSL_MODE=disable
  # Feature flags
  - SERVICERADAR_CORE_REPO_ENABLED=true
  - SERVICERADAR_CORE_RUN_MIGRATIONS=true
volumes:
Ticket Compliance
🎫 No ticket provided
  • Create ticket/issue
Codebase Duplication Compliance
Codebase context is not defined

Follow the guide to enable codebase context checks.

Custom Compliance
🟢
Generic: Comprehensive Audit Trails

Objective: To create a detailed and reliable record of critical system actions for security analysis
and compliance.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Meaningful Naming and Self-Documenting Code

Objective: Ensure all identifiers clearly express their purpose and intent, making code
self-documenting

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Robust Error Handling and Edge Case Management

Objective: Ensure comprehensive error handling that provides meaningful context and graceful
degradation

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Error Handling

Objective: To prevent the leakage of sensitive system information through error messages while
providing sufficient detail for internal debugging.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Logging Practices

Objective: To ensure logs are useful for debugging and auditing without exposing sensitive
information like PII, PHI, or cardholder data.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

🔴
Generic: Security-First Input Validation and Data Handling

Objective: Ensure all data inputs are validated, sanitized, and handled securely to prevent
vulnerabilities

Status:
Hardcoded DB password: The PR introduces hardcoded database credentials via CNPG_PASSWORD=serviceradar, which is
insecure handling of sensitive configuration data.

Referred Code
- CNPG_HOST=cnpg
- CNPG_PORT=5432
- CNPG_DATABASE=serviceradar
- CNPG_USERNAME=serviceradar
- CNPG_PASSWORD=serviceradar
- CNPG_SSL_MODE=disable

Learn more about managing compliance generic rules or creating your own custom rules

  • Update
Compliance status legend 🟢 - Fully Compliant
🟡 - Partial Compliant
🔴 - Not Compliant
- Requires Further Human Verification
🏷️ - Compliance label
Imported GitHub PR comment. Original author: @qodo-code-review[bot] Original URL: https://github.com/carverauto/serviceradar/pull/2244#issuecomment-3735021132 Original created: 2026-01-11T16:51:11Z --- ## PR Compliance Guide 🔍 <!-- https://github.com/carverauto/serviceradar/commit/ea149c3bdee2b5268319086e75dc7271f5547d78 --> Below is a summary of compliance checks for this PR:<br> <table><tbody><tr><td colspan='2'><strong>Security Compliance</strong></td></tr> <tr><td rowspan=1>⚪</td> <td><details><summary><strong>Hardcoded default credentials </strong></summary><br> <b>Description:</b> The new <code>core-elx</code> service configuration hardcodes and/or provides insecure default secrets <br>(e.g., <code>CNPG_PASSWORD=serviceradar</code> here and similarly <br><code>CNPG_PASSWORD=${CNPG_PASSWORD:-serviceradar}</code> plus <br><code>RELEASE_COOKIE=${RELEASE_COOKIE:-serviceradar_cookie}</code> in <code>docker-compose.spiffe.yml</code>), which <br>can lead to credential exposure and accidental deployment with known credentials.<br> <strong><a href='https://github.com/carverauto/serviceradar/pull/2244/files#diff-9542f82d64bbeebd91f6236324bfe199e9657e2cb1fd9779d5d6dcdcf9cd4de1R23-R35'>docker-compose.dev.yml [23-35]</a></strong><br> <details open><summary>Referred Code</summary> ```yaml environment: - CLUSTER_ENABLED=false # Database configuration - CNPG_HOST=cnpg - CNPG_PORT=5432 - CNPG_DATABASE=serviceradar - CNPG_USERNAME=serviceradar - CNPG_PASSWORD=serviceradar - CNPG_SSL_MODE=disable # Feature flags - SERVICERADAR_CORE_REPO_ENABLED=true - SERVICERADAR_CORE_RUN_MIGRATIONS=true volumes: ``` </details></details></td></tr> <tr><td colspan='2'><strong>Ticket Compliance</strong></td></tr> <tr><td>⚪</td><td><details><summary>🎫 <strong>No ticket provided </strong></summary> - [ ] Create ticket/issue <!-- /create_ticket --create_ticket=true --> </details></td></tr> <tr><td colspan='2'><strong>Codebase Duplication Compliance</strong></td></tr> <tr><td>⚪</td><td><details><summary><strong>Codebase context is not defined </strong></summary> Follow the <a href='https://qodo-merge-docs.qodo.ai/core-abilities/rag_context_enrichment/'>guide</a> to enable codebase context checks. </details></td></tr> <tr><td colspan='2'><strong>Custom Compliance</strong></td></tr> <tr><td rowspan=5>🟢</td><td> <details><summary><strong>Generic: Comprehensive Audit Trails</strong></summary><br> **Objective:** To create a detailed and reliable record of critical system actions for security analysis <br>and compliance.<br> **Status:** Passed<br> > Learn more about managing compliance <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#configuration-options'>generic rules</a> or creating your own <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#custom-compliance'>custom rules</a> </details></td></tr> <tr><td> <details><summary><strong>Generic: Meaningful Naming and Self-Documenting Code</strong></summary><br> **Objective:** Ensure all identifiers clearly express their purpose and intent, making code <br>self-documenting<br> **Status:** Passed<br> > Learn more about managing compliance <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#configuration-options'>generic rules</a> or creating your own <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#custom-compliance'>custom rules</a> </details></td></tr> <tr><td> <details><summary><strong>Generic: Robust Error Handling and Edge Case Management</strong></summary><br> **Objective:** Ensure comprehensive error handling that provides meaningful context and graceful <br>degradation<br> **Status:** Passed<br> > Learn more about managing compliance <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#configuration-options'>generic rules</a> or creating your own <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#custom-compliance'>custom rules</a> </details></td></tr> <tr><td> <details><summary><strong>Generic: Secure Error Handling</strong></summary><br> **Objective:** To prevent the leakage of sensitive system information through error messages while <br>providing sufficient detail for internal debugging.<br> **Status:** Passed<br> > Learn more about managing compliance <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#configuration-options'>generic rules</a> or creating your own <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#custom-compliance'>custom rules</a> </details></td></tr> <tr><td> <details><summary><strong>Generic: Secure Logging Practices</strong></summary><br> **Objective:** To ensure logs are useful for debugging and auditing without exposing sensitive <br>information like PII, PHI, or cardholder data.<br> **Status:** Passed<br> > Learn more about managing compliance <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#configuration-options'>generic rules</a> or creating your own <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#custom-compliance'>custom rules</a> </details></td></tr> <tr><td rowspan=1>🔴</td> <td><details> <summary><strong>Generic: Security-First Input Validation and Data Handling</strong></summary><br> **Objective:** Ensure all data inputs are validated, sanitized, and handled securely to prevent <br>vulnerabilities<br> **Status:** <br><a href='https://github.com/carverauto/serviceradar/pull/2244/files#diff-9542f82d64bbeebd91f6236324bfe199e9657e2cb1fd9779d5d6dcdcf9cd4de1R26-R31'><strong>Hardcoded DB password</strong></a>: The PR introduces hardcoded database credentials via <code>CNPG_PASSWORD=serviceradar</code>, which is <br>insecure handling of sensitive configuration data.<br> <details open><summary>Referred Code</summary> ```yaml - CNPG_HOST=cnpg - CNPG_PORT=5432 - CNPG_DATABASE=serviceradar - CNPG_USERNAME=serviceradar - CNPG_PASSWORD=serviceradar - CNPG_SSL_MODE=disable ``` </details> > Learn more about managing compliance <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#configuration-options'>generic rules</a> or creating your own <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#custom-compliance'>custom rules</a> </details></td></tr> <tr><td align="center" colspan="2"> - [ ] Update <!-- /compliance --update_compliance=true --> </td></tr></tbody></table> <details><summary>Compliance status legend</summary> 🟢 - Fully Compliant<br> 🟡 - Partial Compliant<br> 🔴 - Not Compliant<br> ⚪ - Requires Further Human Verification<br> 🏷️ - Compliance label<br> </details>
qodo-code-review[bot] commented 2026-01-11 16:51:32 +00:00 (Migrated from github.com)
Author
Owner

Imported GitHub PR comment.

Original author: @qodo-code-review[bot]
Original URL: https://github.com/carverauto/serviceradar/pull/2244#issuecomment-3735021937
Original created: 2026-01-11T16:51:32Z

CI Feedback 🧐

A test triggered by this PR failed. Here is an AI-generated analysis of the failure:

Action: build

Failed stage: Configure SRQL fixture database for tests []

Failure summary:

The action failed because a required secret/environment variable for the test setup was missing:
-
The workflow expects SRQL_TEST_DATABASE_CA_CERT to be configured so it can verify TLS for the SRQL
test/fixture database.
- The log shows SRQL_TEST_DATABASE_CA_CERT: is empty, followed by:
SRQL_TEST_DATABASE_CA_CERT secret must be configured to verify SRQL fixture TLS.
- This caused the
step to exit with code 1 (Process completed with exit code 1), stopping the job before any tests
could run.

Relevant error logs:
1:  Runner name: 'arc-runner-set-hk6mk-runner-zb9db'
2:  Runner group name: 'Default'
...

139:  ^[[36;1mif command -v apt-get >/dev/null 2>&1; then^[[0m
140:  ^[[36;1m  sudo apt-get update^[[0m
141:  ^[[36;1m  sudo apt-get install -y build-essential pkg-config libssl-dev protobuf-compiler cmake flex bison^[[0m
142:  ^[[36;1melif command -v dnf >/dev/null 2>&1; then^[[0m
143:  ^[[36;1m  sudo dnf install -y gcc gcc-c++ make openssl-devel protobuf-compiler cmake flex bison^[[0m
144:  ^[[36;1melif command -v yum >/dev/null 2>&1; then^[[0m
145:  ^[[36;1m  sudo yum install -y gcc gcc-c++ make openssl-devel protobuf-compiler cmake flex bison^[[0m
146:  ^[[36;1melif command -v microdnf >/dev/null 2>&1; then^[[0m
147:  ^[[36;1m  sudo microdnf install -y gcc gcc-c++ make openssl-devel protobuf-compiler cmake flex bison^[[0m
148:  ^[[36;1melse^[[0m
149:  ^[[36;1m  echo "Unsupported package manager; please install gcc, g++ (or clang), make, OpenSSL headers, pkg-config, and protoc manually." >&2^[[0m
150:  ^[[36;1m  exit 1^[[0m
151:  ^[[36;1mfi^[[0m
152:  ^[[36;1m^[[0m
153:  ^[[36;1mensure_pkg_config^[[0m
154:  ^[[36;1mprotoc --version || (echo "protoc installation failed" && exit 1)^[[0m
155:  shell: /usr/bin/bash -e {0}
...

316:  shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
317:  env:
318:  BUILDBUDDY_ORG_API_KEY: ***
319:  SRQL_TEST_DATABASE_URL: ***
320:  SRQL_TEST_ADMIN_URL: ***
321:  SRQL_TEST_DATABASE_CA_CERT: 
322:  DOCKERHUB_USERNAME: ***
323:  DOCKERHUB_TOKEN: ***
324:  TEST_CNPG_DATABASE: serviceradar_web_ng_test
325:  INSTALL_DIR_FOR_OTP: /home/runner/_work/_temp/.setup-beam/otp
326:  INSTALL_DIR_FOR_ELIXIR: /home/runner/_work/_temp/.setup-beam/elixir
327:  ##[endgroup]
328:  ##[group]Run : install rustup if needed
329:  ^[[36;1m: install rustup if needed^[[0m
330:  ^[[36;1mif ! command -v rustup &>/dev/null; then^[[0m
331:  ^[[36;1m  curl --proto '=https' --tlsv1.2 --retry 10 --retry-connrefused --location --silent --show-error --fail https://sh.rustup.rs | sh -s -- --default-toolchain none -y^[[0m
332:  ^[[36;1m  echo "$CARGO_HOME/bin" >> $GITHUB_PATH^[[0m
...

472:  shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
473:  env:
474:  BUILDBUDDY_ORG_API_KEY: ***
475:  SRQL_TEST_DATABASE_URL: ***
476:  SRQL_TEST_ADMIN_URL: ***
477:  SRQL_TEST_DATABASE_CA_CERT: 
478:  DOCKERHUB_USERNAME: ***
479:  DOCKERHUB_TOKEN: ***
480:  TEST_CNPG_DATABASE: serviceradar_web_ng_test
481:  INSTALL_DIR_FOR_OTP: /home/runner/_work/_temp/.setup-beam/otp
482:  INSTALL_DIR_FOR_ELIXIR: /home/runner/_work/_temp/.setup-beam/elixir
483:  CARGO_HOME: /home/runner/.cargo
484:  CARGO_INCREMENTAL: 0
485:  CARGO_TERM_COLOR: always
486:  ##[endgroup]
487:  ##[group]Run : work around spurious network errors in curl 8.0
488:  ^[[36;1m: work around spurious network errors in curl 8.0^[[0m
489:  ^[[36;1m# https://rust-lang.zulipchat.com/#narrow/stream/246057-t-cargo/topic/timeout.20investigation^[[0m
...

540:  SRQL_TEST_DATABASE_CA_CERT: 
541:  DOCKERHUB_USERNAME: ***
542:  DOCKERHUB_TOKEN: ***
543:  TEST_CNPG_DATABASE: serviceradar_web_ng_test
544:  INSTALL_DIR_FOR_OTP: /home/runner/_work/_temp/.setup-beam/otp
545:  INSTALL_DIR_FOR_ELIXIR: /home/runner/_work/_temp/.setup-beam/elixir
546:  CARGO_HOME: /home/runner/.cargo
547:  CARGO_INCREMENTAL: 0
548:  CARGO_TERM_COLOR: always
549:  ##[endgroup]
550:  Attempting to download 1.x...
551:  Acquiring v1.27.0 from https://github.com/bazelbuild/bazelisk/releases/download/v1.27.0/bazelisk-linux-amd64
552:  Adding to the cache ...
553:  Successfully cached bazelisk to /home/runner/_work/_tool/bazelisk/1.27.0/x64
554:  Added bazelisk to the path
555:  ##[warning]Failed to restore: Cache service responded with 400
556:  Restored bazelisk cache dir @ /home/runner/.cache/bazelisk
...

622:  env:
623:  BUILDBUDDY_ORG_API_KEY: ***
624:  SRQL_TEST_DATABASE_URL: ***
625:  SRQL_TEST_ADMIN_URL: ***
626:  SRQL_TEST_DATABASE_CA_CERT: 
627:  DOCKERHUB_USERNAME: ***
628:  DOCKERHUB_TOKEN: ***
629:  TEST_CNPG_DATABASE: serviceradar_web_ng_test
630:  INSTALL_DIR_FOR_OTP: /home/runner/_work/_temp/.setup-beam/otp
631:  INSTALL_DIR_FOR_ELIXIR: /home/runner/_work/_temp/.setup-beam/elixir
632:  CARGO_HOME: /home/runner/.cargo
633:  CARGO_INCREMENTAL: 0
634:  CARGO_TERM_COLOR: always
635:  ##[endgroup]
636:  SRQL_TEST_DATABASE_CA_CERT secret must be configured to verify SRQL fixture TLS.
637:  ##[error]Process completed with exit code 1.
638:  Post job cleanup.

Imported GitHub PR comment. Original author: @qodo-code-review[bot] Original URL: https://github.com/carverauto/serviceradar/pull/2244#issuecomment-3735021937 Original created: 2026-01-11T16:51:32Z --- ## CI Feedback 🧐 A test triggered by this PR failed. Here is an AI-generated analysis of the failure: <table><tr><td> **Action:** build</td></tr> <tr><td> **Failed stage:** [Configure SRQL fixture database for tests](https://github.com/carverauto/serviceradar/actions/runs/20898579492/job/60040961376) [❌] </td></tr> <tr><td> **Failure summary:** The action failed because a required secret/environment variable for the test setup was missing:<br> - <br>The workflow expects <code>SRQL_TEST_DATABASE_CA_CERT</code> to be configured so it can verify TLS for the SRQL <br>test/fixture database.<br> - The log shows <code>SRQL_TEST_DATABASE_CA_CERT:</code> is empty, followed by: <br><code>SRQL_TEST_DATABASE_CA_CERT secret must be configured to verify SRQL fixture TLS.</code><br> - This caused the <br>step to exit with code <code>1</code> (<code>Process completed with exit code 1</code>), stopping the job before any tests <br>could run.<br> </td></tr> <tr><td> <details><summary>Relevant error logs:</summary> ```yaml 1: Runner name: 'arc-runner-set-hk6mk-runner-zb9db' 2: Runner group name: 'Default' ... 139: ^[[36;1mif command -v apt-get >/dev/null 2>&1; then^[[0m 140: ^[[36;1m sudo apt-get update^[[0m 141: ^[[36;1m sudo apt-get install -y build-essential pkg-config libssl-dev protobuf-compiler cmake flex bison^[[0m 142: ^[[36;1melif command -v dnf >/dev/null 2>&1; then^[[0m 143: ^[[36;1m sudo dnf install -y gcc gcc-c++ make openssl-devel protobuf-compiler cmake flex bison^[[0m 144: ^[[36;1melif command -v yum >/dev/null 2>&1; then^[[0m 145: ^[[36;1m sudo yum install -y gcc gcc-c++ make openssl-devel protobuf-compiler cmake flex bison^[[0m 146: ^[[36;1melif command -v microdnf >/dev/null 2>&1; then^[[0m 147: ^[[36;1m sudo microdnf install -y gcc gcc-c++ make openssl-devel protobuf-compiler cmake flex bison^[[0m 148: ^[[36;1melse^[[0m 149: ^[[36;1m echo "Unsupported package manager; please install gcc, g++ (or clang), make, OpenSSL headers, pkg-config, and protoc manually." >&2^[[0m 150: ^[[36;1m exit 1^[[0m 151: ^[[36;1mfi^[[0m 152: ^[[36;1m^[[0m 153: ^[[36;1mensure_pkg_config^[[0m 154: ^[[36;1mprotoc --version || (echo "protoc installation failed" && exit 1)^[[0m 155: shell: /usr/bin/bash -e {0} ... 316: shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0} 317: env: 318: BUILDBUDDY_ORG_API_KEY: *** 319: SRQL_TEST_DATABASE_URL: *** 320: SRQL_TEST_ADMIN_URL: *** 321: SRQL_TEST_DATABASE_CA_CERT: 322: DOCKERHUB_USERNAME: *** 323: DOCKERHUB_TOKEN: *** 324: TEST_CNPG_DATABASE: serviceradar_web_ng_test 325: INSTALL_DIR_FOR_OTP: /home/runner/_work/_temp/.setup-beam/otp 326: INSTALL_DIR_FOR_ELIXIR: /home/runner/_work/_temp/.setup-beam/elixir 327: ##[endgroup] 328: ##[group]Run : install rustup if needed 329: ^[[36;1m: install rustup if needed^[[0m 330: ^[[36;1mif ! command -v rustup &>/dev/null; then^[[0m 331: ^[[36;1m curl --proto '=https' --tlsv1.2 --retry 10 --retry-connrefused --location --silent --show-error --fail https://sh.rustup.rs | sh -s -- --default-toolchain none -y^[[0m 332: ^[[36;1m echo "$CARGO_HOME/bin" >> $GITHUB_PATH^[[0m ... 472: shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0} 473: env: 474: BUILDBUDDY_ORG_API_KEY: *** 475: SRQL_TEST_DATABASE_URL: *** 476: SRQL_TEST_ADMIN_URL: *** 477: SRQL_TEST_DATABASE_CA_CERT: 478: DOCKERHUB_USERNAME: *** 479: DOCKERHUB_TOKEN: *** 480: TEST_CNPG_DATABASE: serviceradar_web_ng_test 481: INSTALL_DIR_FOR_OTP: /home/runner/_work/_temp/.setup-beam/otp 482: INSTALL_DIR_FOR_ELIXIR: /home/runner/_work/_temp/.setup-beam/elixir 483: CARGO_HOME: /home/runner/.cargo 484: CARGO_INCREMENTAL: 0 485: CARGO_TERM_COLOR: always 486: ##[endgroup] 487: ##[group]Run : work around spurious network errors in curl 8.0 488: ^[[36;1m: work around spurious network errors in curl 8.0^[[0m 489: ^[[36;1m# https://rust-lang.zulipchat.com/#narrow/stream/246057-t-cargo/topic/timeout.20investigation^[[0m ... 540: SRQL_TEST_DATABASE_CA_CERT: 541: DOCKERHUB_USERNAME: *** 542: DOCKERHUB_TOKEN: *** 543: TEST_CNPG_DATABASE: serviceradar_web_ng_test 544: INSTALL_DIR_FOR_OTP: /home/runner/_work/_temp/.setup-beam/otp 545: INSTALL_DIR_FOR_ELIXIR: /home/runner/_work/_temp/.setup-beam/elixir 546: CARGO_HOME: /home/runner/.cargo 547: CARGO_INCREMENTAL: 0 548: CARGO_TERM_COLOR: always 549: ##[endgroup] 550: Attempting to download 1.x... 551: Acquiring v1.27.0 from https://github.com/bazelbuild/bazelisk/releases/download/v1.27.0/bazelisk-linux-amd64 552: Adding to the cache ... 553: Successfully cached bazelisk to /home/runner/_work/_tool/bazelisk/1.27.0/x64 554: Added bazelisk to the path 555: ##[warning]Failed to restore: Cache service responded with 400 556: Restored bazelisk cache dir @ /home/runner/.cache/bazelisk ... 622: env: 623: BUILDBUDDY_ORG_API_KEY: *** 624: SRQL_TEST_DATABASE_URL: *** 625: SRQL_TEST_ADMIN_URL: *** 626: SRQL_TEST_DATABASE_CA_CERT: 627: DOCKERHUB_USERNAME: *** 628: DOCKERHUB_TOKEN: *** 629: TEST_CNPG_DATABASE: serviceradar_web_ng_test 630: INSTALL_DIR_FOR_OTP: /home/runner/_work/_temp/.setup-beam/otp 631: INSTALL_DIR_FOR_ELIXIR: /home/runner/_work/_temp/.setup-beam/elixir 632: CARGO_HOME: /home/runner/.cargo 633: CARGO_INCREMENTAL: 0 634: CARGO_TERM_COLOR: always 635: ##[endgroup] 636: SRQL_TEST_DATABASE_CA_CERT secret must be configured to verify SRQL fixture TLS. 637: ##[error]Process completed with exit code 1. 638: Post job cleanup. ``` </details></td></tr></table>
qodo-code-review[bot] commented 2026-01-11 16:52:23 +00:00 (Migrated from github.com)
Author
Owner

Imported GitHub PR comment.

Original author: @qodo-code-review[bot]
Original URL: https://github.com/carverauto/serviceradar/pull/2244#issuecomment-3735024111
Original created: 2026-01-11T16:52:23Z

PR Code Suggestions

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
High-level
The PR is incomplete

The PR is incomplete as it does not remove the deprecated Go source code from
cmd/core/ and pkg/core/. To fulfill its purpose, the PR should also delete this
code and its related build artifacts.

Examples:

openspec/changes/archive/2026-01-11-remove-golang-core/tasks.md [16-20]
- [ ] 1.3.1 Remove `pkg/core/` directory entirely (includes alerts, api, auth, bootstrap, templateregistry)
- [ ] 1.3.2 Remove core package aliases from `alias/BUILD.bazel`

### 1.4 Remove cmd/core (Service Entrypoint)
- [ ] 1.4.1 Remove `cmd/core/` directory entirely

Solution Walkthrough:

Before:

// Repository structure in the current PR state
/
├── cmd/
│   └── core/       // <-- Deprecated Go code still exists
│       └── ...
├── pkg/
│   └── core/       // <-- Deprecated Go code still exists
│       └── ...
├── docker-compose.spiffe.yml // <-- Updated to use core-elx
├── INSTALL.md                // <-- Updated to use core-elx
└── openspec/
    └── .../tasks.md          // <-- New file listing removal tasks

After:

// Repository structure after applying the suggestion
/
├── cmd/
│   // The 'core/' directory is now deleted
├── pkg/
│   // The 'core/' directory is now deleted
├── docker-compose.spiffe.yml // <-- Already updated
├── INSTALL.md                // <-- Already updated
└── openspec/
    └── .../tasks.md          // <-- Tasks are now completed

Suggestion importance[1-10]: 10

__

Why: The suggestion correctly identifies a critical flaw where the PR fails to execute its primary goal of removing the deprecated Go source code, leaving the repository in an inconsistent state.

High
Possible issue
Add a healthcheck to service

Add a healthcheck to the core-elx service in docker-compose.dev.yml to ensure it
is running correctly, similar to the configuration of the service it replaces.

docker-compose.dev.yml [16-45]

 # For full core-elx configuration, use docker-compose.elx.yml overlay
 core-elx:
   build:
     context: .
     dockerfile: docker/compose/Dockerfile.core-elx
   container_name: serviceradar-core-elx
   hostname: core-elx
   environment:
     - CLUSTER_ENABLED=false
     # Database configuration
     - CNPG_HOST=cnpg
     - CNPG_PORT=5432
     - CNPG_DATABASE=serviceradar
     - CNPG_USERNAME=serviceradar
     - CNPG_PASSWORD=serviceradar
     - CNPG_SSL_MODE=disable
     # Feature flags
     - SERVICERADAR_CORE_REPO_ENABLED=true
     - SERVICERADAR_CORE_RUN_MIGRATIONS=true
   volumes:
     - cert-data:/etc/serviceradar/certs:ro
   depends_on:
     cert-generator:
       condition: service_completed_successfully
+  healthcheck:
+    test: ["CMD", "curl", "-f", "http://localhost:8090/health"]
+    interval: 30s
+    timeout: 3s
+    retries: 3
+    start_period: 10s
   networks:
     serviceradar-net:
       ipv4_address: 172.28.0.3
       aliases:
         - core.serviceradar
   restart: unless-stopped
  • Apply / Chat
Suggestion importance[1-10]: 6

__

Why: The PR removes the old core service which had a healthcheck, but does not add one to the new core-elx service; this suggestion correctly identifies and restores this useful feature for the development environment.

Low
General
Rename variable for improved clarity

In docker/images/BUILD.bazel, rename the core_digest variable to core_elx_digest
for consistency with the updated error message and service name.

docker/images/BUILD.bazel [467-471]

-core_digest=$$(cat "$$core_digest_file")
-if [[ "$$core_digest" != sha256:* ]]; then
-  echo "unexpected core-elx digest format: $$core_digest" >&2
+core_elx_digest=$$(cat "$$core_digest_file")
+if [[ "$$core_elx_digest" != sha256:* ]]; then
+  echo "unexpected core-elx digest format: $$core_elx_digest" >&2
   exit 1
 fi
  • Apply / Chat
Suggestion importance[1-10]: 3

__

Why: This is a valid suggestion that improves code clarity and maintainability by renaming the core_digest variable to core_elx_digest to match the updated context, but it has no functional impact.

Low
  • Update
Imported GitHub PR comment. Original author: @qodo-code-review[bot] Original URL: https://github.com/carverauto/serviceradar/pull/2244#issuecomment-3735024111 Original created: 2026-01-11T16:52:23Z --- ## PR Code Suggestions ✨ <!-- ea149c3 --> Explore these optional code suggestions: <table><thead><tr><td><strong>Category</strong></td><td align=left><strong>Suggestion&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </strong></td><td align=center><strong>Impact</strong></td></tr><tbody><tr><td rowspan=1>High-level</td> <td> <details><summary>The PR is incomplete</summary> ___ **The PR is incomplete as it does not remove the deprecated Go source code from <br><code>cmd/core/</code> and <code>pkg/core/</code>. To fulfill its purpose, the PR should also delete this <br>code and its related build artifacts.** ### Examples: <details> <summary> <a href="https://github.com/carverauto/serviceradar/pull/2244/files#diff-f3644a6407c8c5366efcc2c7b12c0e11b0fd18e85294c9a1a6b74d5a9574896eR16-R20">openspec/changes/archive/2026-01-11-remove-golang-core/tasks.md [16-20]</a> </summary> ```markdown - [ ] 1.3.1 Remove `pkg/core/` directory entirely (includes alerts, api, auth, bootstrap, templateregistry) - [ ] 1.3.2 Remove core package aliases from `alias/BUILD.bazel` ### 1.4 Remove cmd/core (Service Entrypoint) - [ ] 1.4.1 Remove `cmd/core/` directory entirely ``` </details> ### Solution Walkthrough: #### Before: ```markdown // Repository structure in the current PR state / ├── cmd/ │ └── core/ // <-- Deprecated Go code still exists │ └── ... ├── pkg/ │ └── core/ // <-- Deprecated Go code still exists │ └── ... ├── docker-compose.spiffe.yml // <-- Updated to use core-elx ├── INSTALL.md // <-- Updated to use core-elx └── openspec/ └── .../tasks.md // <-- New file listing removal tasks ``` #### After: ```markdown // Repository structure after applying the suggestion / ├── cmd/ │ // The 'core/' directory is now deleted ├── pkg/ │ // The 'core/' directory is now deleted ├── docker-compose.spiffe.yml // <-- Already updated ├── INSTALL.md // <-- Already updated └── openspec/ └── .../tasks.md // <-- Tasks are now completed ``` <details><summary>Suggestion importance[1-10]: 10</summary> __ Why: The suggestion correctly identifies a critical flaw where the PR fails to execute its primary goal of removing the deprecated Go source code, leaving the repository in an inconsistent state. </details></details></td><td align=center>High </td></tr><tr><td rowspan=1>Possible issue</td> <td> <details><summary>Add a healthcheck to service</summary> ___ **Add a <code>healthcheck</code> to the <code>core-elx</code> service in <code>docker-compose.dev.yml</code> to ensure it <br>is running correctly, similar to the configuration of the service it replaces.** [docker-compose.dev.yml [16-45]](https://github.com/carverauto/serviceradar/pull/2244/files#diff-9542f82d64bbeebd91f6236324bfe199e9657e2cb1fd9779d5d6dcdcf9cd4de1R16-R45) ```diff # For full core-elx configuration, use docker-compose.elx.yml overlay core-elx: build: context: . dockerfile: docker/compose/Dockerfile.core-elx container_name: serviceradar-core-elx hostname: core-elx environment: - CLUSTER_ENABLED=false # Database configuration - CNPG_HOST=cnpg - CNPG_PORT=5432 - CNPG_DATABASE=serviceradar - CNPG_USERNAME=serviceradar - CNPG_PASSWORD=serviceradar - CNPG_SSL_MODE=disable # Feature flags - SERVICERADAR_CORE_REPO_ENABLED=true - SERVICERADAR_CORE_RUN_MIGRATIONS=true volumes: - cert-data:/etc/serviceradar/certs:ro depends_on: cert-generator: condition: service_completed_successfully + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8090/health"] + interval: 30s + timeout: 3s + retries: 3 + start_period: 10s networks: serviceradar-net: ipv4_address: 172.28.0.3 aliases: - core.serviceradar restart: unless-stopped ``` - [ ] **Apply / Chat** <!-- /improve --apply_suggestion=1 --> <details><summary>Suggestion importance[1-10]: 6</summary> __ Why: The PR removes the old `core` service which had a healthcheck, but does not add one to the new `core-elx` service; this suggestion correctly identifies and restores this useful feature for the development environment. </details></details></td><td align=center>Low </td></tr><tr><td rowspan=1>General</td> <td> <details><summary>Rename variable for improved clarity</summary> ___ **In <code>docker/images/BUILD.bazel</code>, rename the <code>core_digest</code> variable to <code>core_elx_digest</code> <br>for consistency with the updated error message and service name.** [docker/images/BUILD.bazel [467-471]](https://github.com/carverauto/serviceradar/pull/2244/files#diff-0e4db31c224a8f72ae8e870a849e38a59d74a2c7f7b04347b0b3eb07e20c5a80R467-R471) ```diff -core_digest=$$(cat "$$core_digest_file") -if [[ "$$core_digest" != sha256:* ]]; then - echo "unexpected core-elx digest format: $$core_digest" >&2 +core_elx_digest=$$(cat "$$core_digest_file") +if [[ "$$core_elx_digest" != sha256:* ]]; then + echo "unexpected core-elx digest format: $$core_elx_digest" >&2 exit 1 fi ``` - [ ] **Apply / Chat** <!-- /improve --apply_suggestion=2 --> <details><summary>Suggestion importance[1-10]: 3</summary> __ Why: This is a valid suggestion that improves code clarity and maintainability by renaming the `core_digest` variable to `core_elx_digest` to match the updated context, but it has no functional impact. </details></details></td><td align=center>Low </td></tr> <tr><td align="center" colspan="2"> - [ ] Update <!-- /improve_multi --more_suggestions=true --> </td><td></td></tr></tbody></table>
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
carverauto/serviceradar!2647
No description provided.