2332 feat remove kv for configdynamic config generation #2688

Merged
mfreeman451 merged 5 commits from refs/pull/2688/head into staging 2026-01-18 07:26:06 +00:00
mfreeman451 commented 2026-01-18 07:04:53 +00:00 (Migrated from github.com)
Owner

Imported from GitHub pull request.

Original GitHub pull request: #2335
Original author: @mfreeman451
Original URL: https://github.com/carverauto/serviceradar/pull/2335
Original created: 2026-01-18T07:04:53Z
Original updated: 2026-01-18T07:26:07Z
Original head: carverauto/serviceradar:2332-feat-remove-kv-for-configdynamic-config-generation
Original base: staging
Original merged: 2026-01-18T07:26:06Z 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


Description

  • Removed KV store backend support from configuration loading across all services; services now exclusively support file and environment variable configuration sources

  • Deleted KV-related code including SetKVStore(), OverlayFromKV(), KV client initialization, bootstrap seeding, and watch/reload functionality from Go and Rust implementations

  • Simplified configuration architecture by removing KV overlay merging, type coercion helpers, and KV-based template publishing fallbacks

  • Updated all service configurations (docker-compose, systemd, Helm) to use CONFIG_SOURCE=file instead of kv

  • Removed KV dependencies from multiple services: agent, otel, flowgger, trapd, rperf-client, zen consumer, and config-sync tool

  • Updated documentation and specifications to reflect file-based configuration only, including migration guidance and deprecation notices

  • Code cleanup including import reorganization, formatting improvements, and removal of unused KV-related error variables

  • Preserved KV support in config-sync tool by localizing KV client creation function


Diagram Walkthrough

flowchart LR
  A["Services with KV Config"] -->|Remove KV Support| B["File-Based Config Only"]
  C["KV Client Code"] -->|Delete| D["Removed Files"]
  E["Config Loading Logic"] -->|Simplify| F["File + Env Only"]
  G["Deployment Configs"] -->|Update| H["CONFIG_SOURCE=file"]
  I["Documentation"] -->|Update| J["File-Based Guidance"]

File Walkthrough

Relevant files
Enhancement
13 files
config.go
Remove KV store backend from configuration loading             

pkg/config/config.go

  • Removed KV store backend support; services now only support file and
    environment variable configuration sources
  • Deleted SetKVStore() method and OverlayFromKV() function that handled
    KV configuration merging
  • Removed KV-related helper functions (decodeJSONObject,
    normalizeOverlayTypes, coerceOverlayValue, etc.) for type coercion
  • Simplified loadAndValidateWithSource() to return error when
    CONFIG_SOURCE=kv is used
+7/-259 
server.go
Remove KV store setup and bootstrap from agent server       

pkg/agent/server.go

  • Removed setupDataStores() function and KV client initialization logic
  • Deleted bootstrapKVDefaults() method that seeded default checker
    configs to KV
  • Removed KV-related error variables and security configuration
    resolution functions
  • Simplified NewServer() to skip KV setup and removed configStore field
    initialization
  • Removed KV overlay logic from loadCheckerConfig() to load only from
    file
+12/-220
service.go
Remove KV manager and watching from service bootstrap       

pkg/config/bootstrap/service.go

  • Removed KV manager creation and configuration overlay logic from
    Service() function
  • Deleted helper functions: newKVManager(), resolveKeyContext(),
    applyKVOverlays(), attachWatcherHooks()
  • Simplified Result struct by removing manager, cfgLoader, and
    pinnedPath fields
  • Made StartWatch() and Close() methods no-ops; configuration is now
    file-based only
+9/-217 
template.go
Remove KV template publishing fallback                                     

pkg/config/bootstrap/template.go

  • Removed publishTemplateWithFallback() function that attempted KV
    publishing with core fallback
  • Deleted persistTemplateToKV() and retryTemplatePublish() functions for
    KV template storage
  • Simplified template registration to only use core gRPC endpoint,
    removing KV as a fallback
  • Removed templatePublishRetryBackoff constant; only
    templatePublishTimeout remains
+15/-120
main.go
Localize KV client creation in config-sync tool                   

cmd/tools/config-sync/main.go

  • Added local newKVServiceClientFromEnv() function to replace removed
    shared utility
  • Function handles KV client creation with mTLS and SPIFFE security
    modes from environment variables
  • Maintains KV client support for config-sync tool but removes
    dependency on shared config package
+79/-1   
main.go
Remove KV config source handling from faker                           

cmd/faker/main.go

  • Removed conditional logic checking CONFIG_SOURCE=kv environment
    variable
  • Simplified config loading to always use file-based defaults without KV
    bootstrap path
  • Removed KV-specific error messages and materialization logic branches
+4/-17   
errors.go
Remove KV-related error definitions                                           

pkg/agent/errors.go

  • Removed KV-related error variables: errNoSecurityConfigKV and
    errFailedToInitializeKVClient
  • Kept errDataServiceUnavailable error
+1/-4     
lib.rs
Remove KV support from Rust config bootstrap library         

rust/config-bootstrap/src/lib.rs

  • Removed KV client connection and overlay logic from Bootstrap::new()
    and load() methods
  • Deleted watch() method for KV change monitoring
  • Removed helper functions: overlay_kv(), sanitize_config(), and related
    sanitization support
  • Simplified BootstrapOptions struct by removing kv_key, seed_kv, and
    watch_kv fields
  • Updated documentation to reflect file-only and pinned overlay
    configuration
+13/-232
main.rs
Remove KV configuration from OTEL service                               

cmd/otel/src/main.rs

  • Removed CONFIG_SOURCE=kv detection and KV key configuration
  • Removed unused Arc import and CONFIG_PATH constant
  • Simplified bootstrap options to remove kv_key, seed_kv, and watch_kv
    parameters
+2/-30   
main.rs
Remove KV support from rperf-client                                           

cmd/checkers/rperf-client/src/main.rs

  • Removed KV detection and configuration logic
  • Removed RestartHandle import and KV watch/restart spawning code
  • Simplified bootstrap to file-based configuration only
+3/-25   
main.rs
Remove KV configuration from zen consumer                               

cmd/consumers/zen/src/main.rs

  • Removed CONFIG_SOURCE=kv detection and KV key configuration
  • Removed RestartHandle import and KV watch/restart spawning code
  • Removed --seed-kv CLI argument
  • Simplified bootstrap to file-based configuration only
+3/-31   
main.rs
Remove KV support from trapd service                                         

cmd/trapd/src/main.rs

  • Removed KV detection and configuration logic
  • Removed RestartHandle import and KV watch/restart spawning code
  • Simplified bootstrap to file-based configuration only
+3/-29   
main.rs
Remove KV configuration from flowgger service                       

cmd/flowgger/src/main.rs

  • Removed KV detection and configuration logic
  • Removed RestartHandle import and KV watch/restart spawning code
  • Simplified bootstrap to file-based configuration only
  • Removed conditional logic for writing temporary config based on KV
    usage
+6/-30   
Formatting
16 files
main.go
Code formatting alignment                                                               

cmd/checkers/dusk/main.go

  • Minor formatting fix: aligned error variable declarations
+2/-2     
parser.rs
Code formatting improvements in parser                                     

rust/srql/src/parser.rs

  • Reformatted multi-line function calls for better code readability
  • Applied consistent line-breaking style to strip_prefix() and
    strip_suffix() chains
+32/-8   
agents.rs
Import and query formatting improvements                                 

rust/srql/src/query/agents.rs

  • Reorganized import statements in alphabetical order
  • Reformatted multi-line query filter expressions for consistency
+26/-19 
services.rs
Import and query formatting improvements                                 

rust/srql/src/query/services.rs

  • Reorganized import statements in alphabetical order
  • Reformatted multi-line SQL query building expressions for consistency
+13/-5   
devices.rs
Import and query formatting improvements                                 

rust/srql/src/query/devices.rs

  • Reorganized import statements in alphabetical order
  • Reformatted multi-line SQL expressions for consistency
+6/-6     
cpu_metrics.rs
Import and query formatting improvements                                 

rust/srql/src/query/cpu_metrics.rs

  • Reorganized import statements in alphabetical order
  • Reformatted multi-line stats query building for consistency
+5/-3     
interfaces.rs
Import statement reorganization                                                   

rust/srql/src/query/interfaces.rs

  • Reorganized import statements in alphabetical order
+4/-4     
timeseries_metrics.rs
Import statement reorganization                                                   

rust/srql/src/query/timeseries_metrics.rs

  • Reorganized import statements in alphabetical order
+3/-3     
main.rs
Remove unused import                                                                         

cmd/ebpf/profiler/profiler/src/main.rs

  • Removed unused warn import from log crate
+1/-5     
process_metrics.rs
Import statement reorganization                                                   

rust/srql/src/query/process_metrics.rs

  • Reorganized import statements in alphabetical order
+2/-2     
device_updates.rs
Import statement reorganization                                                   

rust/srql/src/query/device_updates.rs

  • Reorganized import statements in alphabetical order
+3/-3     
disk_metrics.rs
Import statement reorganization                                                   

rust/srql/src/query/disk_metrics.rs

  • Reorganized import statements in alphabetical order
+2/-2     
gateways.rs
Import statement reorganization                                                   

rust/srql/src/query/gateways.rs

  • Reorganized import statements in alphabetical order
+2/-2     
memory_metrics.rs
Import statement reorganization                                                   

rust/srql/src/query/memory_metrics.rs

  • Reorganized import statements in alphabetical order
+2/-2     
harness.rs
Code formatting improvements                                                         

rust/srql/tests/support/harness.rs

  • Reformatted multi-line TLS connector setup for consistency
+1/-2     
traces.rs
Import statement reorganization                                                   

rust/srql/src/query/traces.rs

  • Reorganized import statements in alphabetical order
+1/-1     
Configuration changes
16 files
docker-compose.yml
Update docker-compose to use file-based configuration       

docker-compose.yml

  • Changed CONFIG_SOURCE from kv to file for otel, flowgger, trapd,
    db-event-writer, and mapper services
  • Removed all KV-related environment variables (KV_ADDRESS, KV_SEC_MODE,
    KV_CERT_*, KV_SERVER_NAME) from affected services
+5/-40   
values.yaml
Update Helm values for file-based configuration                   

helm/serviceradar/values.yaml

  • Changed configSource from kv to file
  • Disabled checker template seeding (enabled: false) with note that
    KV-backed seeding is deprecated
  • Disabled config watch (configWatchEnabled: false) with note that KV
    watch/reload is no longer supported
+5/-5     
_helpers.tpl
Simplify Helm KV environment template                                       

helm/serviceradar/templates/_helpers.tpl

  • Simplified KV environment variable template to always set
    CONFIG_SOURCE=file
  • Removed conditional logic for KV config source selection
  • Removed unused variable declarations
+2/-4     
BUILD.bazel
Update Bazel build configuration for KV removal                   

pkg/config/BUILD.bazel

  • Removed KV-related source files from build: kv_client.go,
    kv_repair.go, kv_loader.go, kv_watch.go, watchers.go,
    watchers_snapshot.go
  • Added toml_mask.go to build sources
  • Removed dependencies on KV packages and proto definitions
+1/-13   
db-event-writer.yaml
Update db-event-writer Helm template for file-based config

helm/serviceradar/templates/db-event-writer.yaml

  • Changed CONFIG_SOURCE to hardcoded file value
+1/-1     
serviceradar-dusk-checker.service
Update dusk-checker systemd service configuration               

packaging/dusk-checker/systemd/serviceradar-dusk-checker.service

  • Changed CONFIG_SOURCE from kv to file
+1/-1     
serviceradar-rperf-checker.service
Update rperf-checker systemd service configuration             

packaging/rperf-checker/systemd/serviceradar-rperf-checker.service

  • Changed CONFIG_SOURCE from kv to file
+1/-1     
serviceradar-mapper.service
Update mapper systemd service configuration                           

packaging/mapper/systemd/serviceradar-mapper.service

  • Changed CONFIG_SOURCE from kv to file
+1/-1     
serviceradar-profiler.service
Update profiler systemd service configuration                       

packaging/profiler/systemd/serviceradar-profiler.service

  • Changed CONFIG_SOURCE from kv to file
+1/-1     
serviceradar-sync.service
Update sync systemd service configuration                               

packaging/sync/systemd/serviceradar-sync.service

  • Changed CONFIG_SOURCE from kv to file
+1/-1     
serviceradar-otel.service
Update otel systemd service configuration                               

packaging/otel/systemd/serviceradar-otel.service

  • Changed CONFIG_SOURCE from kv to file
+1/-1     
serviceradar-event-writer.service
Update event-writer systemd service configuration               

packaging/event-writer/systemd/serviceradar-event-writer.service

  • Changed CONFIG_SOURCE from kv to file
+1/-1     
serviceradar-agent.service
Update agent systemd service configuration                             

packaging/agent/systemd/serviceradar-agent.service

  • Changed CONFIG_SOURCE from kv to file
+1/-1     
serviceradar-trapd.service
Update trapd systemd service configuration                             

packaging/trapd/systemd/serviceradar-trapd.service

  • Changed CONFIG_SOURCE from kv to file
+1/-1     
serviceradar-flowgger.service
Update flowgger systemd service configuration                       

packaging/flowgger/systemd/serviceradar-flowgger.service

  • Changed CONFIG_SOURCE from kv to file
+1/-1     
serviceradar-zen.service
Update zen systemd service configuration                                 

packaging/zen/systemd/serviceradar-zen.service

  • Changed CONFIG_SOURCE from kv to file
+1/-1     
Documentation
11 files
agents.md
Update agent documentation for file-based configuration   

docs/docs/agents.md

  • Updated troubleshooting section to check local filesystem instead of
    KV store
  • Removed references to KV keys and watcher telemetry
  • Updated configuration file paths to use /etc/serviceradar instead of
    KV keys
  • Removed section on expected KV keys and KV-based configuration
    management
+17/-30 
kv-ci-plan.md
Mark KV CI plan as deprecated                                                       

docs/kv-ci-plan.md

  • Marked document as deprecated
  • Replaced content with note that KV-backed service configuration has
    been removed
  • Removed all CI safeguard procedures related to KV configuration
+3/-56   
README.md
Update config-bootstrap README for file-based configuration

rust/config-bootstrap/README.md

  • Updated crate description to reflect file-based configuration only
  • Removed documentation for KV overlay, sanitization, auto-seeding, and
    watch support
  • Simplified configuration lifecycle to load from disk and apply pinned
    overlay
  • Updated integration examples to remove KV-related parameters
+5/-41   
spec.md
Add specification for removing KV service configuration   

openspec/changes/remove-edge-kv-config/specs/kv-configuration/spec.md

  • Added new specification requirements for file-based and gRPC-delivered
    service configuration
  • Documented that services MUST NOT read, seed, or watch KV for service
    configuration
  • Removed requirements for automatic configuration seeding, KV
    precedence, and KV-based observability
  • Added migration guidance for deployments using KV-backed configuration
+44/-0   
design.md
Add design document for KV configuration removal                 

openspec/changes/remove-edge-kv-config/design.md

  • Added design document explaining context and goals for removing KV
    configuration
  • Documented decisions to remove KV config dependencies while preserving
    KV for rules (zen)
  • Outlined risks, trade-offs, and migration plan
  • Identified open questions about service dependencies
+32/-0   
snmp.md
Update SNMP documentation for file-based configuration     

docs/docs/snmp.md

  • Updated credential storage guidance from KV to gateway
    configuration/profile data
  • Changed SNMPv3 credential storage from KV to profiles
  • Updated trapd configuration override guidance from KV overlay to file
    edits or pinned overlay
+3/-3     
proposal.md
Add proposal for removing KV service configuration             

openspec/changes/remove-edge-kv-config/proposal.md

  • Added proposal document outlining rationale for removing KV-backed
    configuration
  • Documented what changes (removal of KV config seeding, watching,
    merging)
  • Listed affected components and breaking changes
+16/-0   
tasks.md
Add task checklist for KV removal project                               

openspec/changes/remove-edge-kv-config/tasks.md

  • Added task checklist for KV configuration removal project
  • Marked discovery and implementation tasks as complete
  • Marked documentation and validation tasks (with validation tests
    pending)
+18/-0   
project.md
Update project documentation for KV configuration removal

openspec/project.md

  • Updated KV service description to note that service configuration is
    file- or gRPC-based (no KV auto-reload)
+1/-1     
kv-configuration.md
Update KV configuration documentation                                       

docs/docs/kv-configuration.md

  • Added note that service configuration is no longer stored in KV
  • Updated operational check guidance to reference service templates
    instead of KV config
  • Clarified that KV is used for rules and other data, not service
    configuration
+3/-2     
README.md
Improve configuration troubleshooting documentation           

docker/README.md

  • Updated troubleshooting documentation for configuration loading issues
  • Clarified that CONFIG_SOURCE should be set to file or env
  • Added command to verify config file is mounted at /etc/serviceradar
  • Improved clarity of diagnostic steps for configuration problems
+2/-1     
Additional files
22 files
BUILD.bazel +0/-1     
checker_seed.go +0/-133 
server_test.go +0/-97   
types.go +0/-3     
config_test.go +0/-423 
integration_test.go +0/-187 
kv_client.go +0/-873 
kv_client_test.go +0/-661 
kv_loader.go +0/-116 
kv_repair.go +0/-100 
kv_repair_test.go +0/-93   
kv_watch.go +0/-123 
test_constants_test.go +0/-3     
watchers.go +0/-179 
watchers_snapshot.go +0/-55   
watchers_test.go +0/-60   
restart.rs +0/-67   
sanitize.rs +0/-306 
watch.rs +0/-165 
BUILD.bazel +0/-16   
kv_seeding_test.go +0/-321 
pinned_precedence_test.go +0/-78   

Imported from GitHub pull request. Original GitHub pull request: #2335 Original author: @mfreeman451 Original URL: https://github.com/carverauto/serviceradar/pull/2335 Original created: 2026-01-18T07:04:53Z Original updated: 2026-01-18T07:26:07Z Original head: carverauto/serviceradar:2332-feat-remove-kv-for-configdynamic-config-generation Original base: staging Original merged: 2026-01-18T07:26:06Z 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 ___ ### **Description** - **Removed KV store backend support** from configuration loading across all services; services now exclusively support file and environment variable configuration sources - **Deleted KV-related code** including `SetKVStore()`, `OverlayFromKV()`, KV client initialization, bootstrap seeding, and watch/reload functionality from Go and Rust implementations - **Simplified configuration architecture** by removing KV overlay merging, type coercion helpers, and KV-based template publishing fallbacks - **Updated all service configurations** (docker-compose, systemd, Helm) to use `CONFIG_SOURCE=file` instead of `kv` - **Removed KV dependencies** from multiple services: agent, otel, flowgger, trapd, rperf-client, zen consumer, and config-sync tool - **Updated documentation and specifications** to reflect file-based configuration only, including migration guidance and deprecation notices - **Code cleanup** including import reorganization, formatting improvements, and removal of unused KV-related error variables - **Preserved KV support** in config-sync tool by localizing KV client creation function ___ ### Diagram Walkthrough ```mermaid flowchart LR A["Services with KV Config"] -->|Remove KV Support| B["File-Based Config Only"] C["KV Client Code"] -->|Delete| D["Removed Files"] E["Config Loading Logic"] -->|Simplify| F["File + Env Only"] G["Deployment Configs"] -->|Update| H["CONFIG_SOURCE=file"] I["Documentation"] -->|Update| J["File-Based Guidance"] ``` <details><summary><h3>File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>13 files</summary><table> <tr> <td> <details> <summary><strong>config.go</strong><dd><code>Remove KV store backend from configuration loading</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> pkg/config/config.go <ul><li>Removed KV store backend support; services now only support file and <br>environment variable configuration sources<br> <li> Deleted <code>SetKVStore()</code> method and <code>OverlayFromKV()</code> function that handled <br>KV configuration merging<br> <li> Removed KV-related helper functions (<code>decodeJSONObject</code>, <br><code>normalizeOverlayTypes</code>, <code>coerceOverlayValue</code>, etc.) for type coercion<br> <li> Simplified <code>loadAndValidateWithSource()</code> to return error when <br><code>CONFIG_SOURCE=kv</code> is used</ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-a3d824da3c42420cd5cbb0a4a2c0e7b5bfddd819652788a0596d195dc6e31fa5">+7/-259</a>&nbsp; </td> </tr> <tr> <td> <details> <summary><strong>server.go</strong><dd><code>Remove KV store setup and bootstrap from agent server</code>&nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> pkg/agent/server.go <ul><li>Removed <code>setupDataStores()</code> function and KV client initialization logic<br> <li> Deleted <code>bootstrapKVDefaults()</code> method that seeded default checker <br>configs to KV<br> <li> Removed KV-related error variables and security configuration <br>resolution functions<br> <li> Simplified <code>NewServer()</code> to skip KV setup and removed <code>configStore</code> field <br>initialization<br> <li> Removed KV overlay logic from <code>loadCheckerConfig()</code> to load only from <br>file</ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-3c51e5356a25859a3300ab62ed2494462feb2567ef69e6db3aa2bbc1032c1c5d">+12/-220</a></td> </tr> <tr> <td> <details> <summary><strong>service.go</strong><dd><code>Remove KV manager and watching from service bootstrap</code>&nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> pkg/config/bootstrap/service.go <ul><li>Removed KV manager creation and configuration overlay logic from <br><code>Service()</code> function<br> <li> Deleted helper functions: <code>newKVManager()</code>, <code>resolveKeyContext()</code>, <br><code>applyKVOverlays()</code>, <code>attachWatcherHooks()</code><br> <li> Simplified <code>Result</code> struct by removing <code>manager</code>, <code>cfgLoader</code>, and <br><code>pinnedPath</code> fields<br> <li> Made <code>StartWatch()</code> and <code>Close()</code> methods no-ops; configuration is now <br>file-based only</ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-bdbe338c04da107ded4d961b6a02c05f7580a5b70d33d2e141c4b60769a35ea7">+9/-217</a>&nbsp; </td> </tr> <tr> <td> <details> <summary><strong>template.go</strong><dd><code>Remove KV template publishing fallback</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> pkg/config/bootstrap/template.go <ul><li>Removed <code>publishTemplateWithFallback()</code> function that attempted KV <br>publishing with core fallback<br> <li> Deleted <code>persistTemplateToKV()</code> and <code>retryTemplatePublish()</code> functions for <br>KV template storage<br> <li> Simplified template registration to only use core gRPC endpoint, <br>removing KV as a fallback<br> <li> Removed <code>templatePublishRetryBackoff</code> constant; only <br><code>templatePublishTimeout</code> remains</ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-9a44dcfb7a9e43b18ebf20b4be4123c6cf52a4e9fcf1b7ad65877148325f2b7e">+15/-120</a></td> </tr> <tr> <td> <details> <summary><strong>main.go</strong><dd><code>Localize KV client creation in config-sync tool</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> cmd/tools/config-sync/main.go <ul><li>Added local <code>newKVServiceClientFromEnv()</code> function to replace removed <br>shared utility<br> <li> Function handles KV client creation with mTLS and SPIFFE security <br>modes from environment variables<br> <li> Maintains KV client support for config-sync tool but removes <br>dependency on shared config package</ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-bc6eeb1b05bcb9179525e32fac1de9926b5823ec3504be546ab10c5c9740f544">+79/-1</a>&nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>main.go</strong><dd><code>Remove KV config source handling from faker</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> cmd/faker/main.go <ul><li>Removed conditional logic checking <code>CONFIG_SOURCE=kv</code> environment <br>variable<br> <li> Simplified config loading to always use file-based defaults without KV <br>bootstrap path<br> <li> Removed KV-specific error messages and materialization logic branches</ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-f101715b3bafbe3843ac9df0ffa3566fd0278b8f730efa3665557ce98acf6d23">+4/-17</a>&nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>errors.go</strong><dd><code>Remove KV-related error definitions</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> pkg/agent/errors.go <ul><li>Removed KV-related error variables: <code>errNoSecurityConfigKV</code> and <br><code>errFailedToInitializeKVClient</code><br> <li> Kept <code>errDataServiceUnavailable</code> error</ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-460c68346461a5d287148e8772814817cfa658f50bd06d684793b51e17c4f48a">+1/-4</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>lib.rs</strong><dd><code>Remove KV support from Rust config bootstrap library</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> rust/config-bootstrap/src/lib.rs <ul><li>Removed KV client connection and overlay logic from <code>Bootstrap::new()</code> <br>and <code>load()</code> methods<br> <li> Deleted <code>watch()</code> method for KV change monitoring<br> <li> Removed helper functions: <code>overlay_kv()</code>, <code>sanitize_config()</code>, and related <br>sanitization support<br> <li> Simplified <code>BootstrapOptions</code> struct by removing <code>kv_key</code>, <code>seed_kv</code>, and <br><code>watch_kv</code> fields<br> <li> Updated documentation to reflect file-only and pinned overlay <br>configuration</ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-e22e02fcd266a37d6703eb4bf85bb4ac19e91682d0f6160066915ff61d92bbc4">+13/-232</a></td> </tr> <tr> <td> <details> <summary><strong>main.rs</strong><dd><code>Remove KV configuration from OTEL service</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> cmd/otel/src/main.rs <ul><li>Removed <code>CONFIG_SOURCE=kv</code> detection and KV key configuration<br> <li> Removed unused <code>Arc</code> import and <code>CONFIG_PATH</code> constant<br> <li> Simplified bootstrap options to remove <code>kv_key</code>, <code>seed_kv</code>, and <code>watch_kv</code> <br>parameters</ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-0928ea32b4e5970a3103f9391ff4debac80f03967326e55aafabca9b95b6c86e">+2/-30</a>&nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>main.rs</strong><dd><code>Remove KV support from rperf-client</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> cmd/checkers/rperf-client/src/main.rs <ul><li>Removed KV detection and configuration logic<br> <li> Removed <code>RestartHandle</code> import and KV watch/restart spawning code<br> <li> Simplified bootstrap to file-based configuration only</ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-fb8dc04ef7087f15c7498a2d197e37fd629444ebff0291a3cc8ca49aabdc94cc">+3/-25</a>&nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>main.rs</strong><dd><code>Remove KV configuration from zen consumer</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> cmd/consumers/zen/src/main.rs <ul><li>Removed <code>CONFIG_SOURCE=kv</code> detection and KV key configuration<br> <li> Removed <code>RestartHandle</code> import and KV watch/restart spawning code<br> <li> Removed <code>--seed-kv</code> CLI argument<br> <li> Simplified bootstrap to file-based configuration only</ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-78494042ba6078c9704eeb6e374d97a3481a5a74426db8e95ed34da15f9133b2">+3/-31</a>&nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>main.rs</strong><dd><code>Remove KV support from trapd service</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> cmd/trapd/src/main.rs <ul><li>Removed KV detection and configuration logic<br> <li> Removed <code>RestartHandle</code> import and KV watch/restart spawning code<br> <li> Simplified bootstrap to file-based configuration only</ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-33b655d8730ae3e9c844ee280787d11f1b0d5343119188273f89558805f814ba">+3/-29</a>&nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>main.rs</strong><dd><code>Remove KV configuration from flowgger service</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> cmd/flowgger/src/main.rs <ul><li>Removed KV detection and configuration logic<br> <li> Removed <code>RestartHandle</code> import and KV watch/restart spawning code<br> <li> Simplified bootstrap to file-based configuration only<br> <li> Removed conditional logic for writing temporary config based on KV <br>usage</ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-c10b431511497d683869182aaf88fb2ec422f3db7fe27ce5af646a9a4f8f3899">+6/-30</a>&nbsp; &nbsp; </td> </tr> </table></details></td></tr><tr><td><strong>Formatting</strong></td><td><details><summary>16 files</summary><table> <tr> <td> <details> <summary><strong>main.go</strong><dd><code>Code formatting alignment</code>&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; </dd></summary> <hr> cmd/checkers/dusk/main.go - Minor formatting fix: aligned error variable declarations </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-2beb066906fd7a77f5812c5dcdb294a4886c9c2943378f49bce239cfe51b8035">+2/-2</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>parser.rs</strong><dd><code>Code formatting improvements in parser</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> rust/srql/src/parser.rs <ul><li>Reformatted multi-line function calls for better code readability<br> <li> Applied consistent line-breaking style to <code>strip_prefix()</code> and <br><code>strip_suffix()</code> chains</ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-b2edf55d1721185349ecddb2f4eacc42e0dfcae19b6c2bc638602f187da67e66">+32/-8</a>&nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>agents.rs</strong><dd><code>Import and query formatting improvements</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> rust/srql/src/query/agents.rs <ul><li>Reorganized import statements in alphabetical order<br> <li> Reformatted multi-line query filter expressions for consistency</ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-4c64666b2ea0a610ccbb59e89a560d62a06643335e19dab2185557b60728a82a">+26/-19</a>&nbsp; </td> </tr> <tr> <td> <details> <summary><strong>services.rs</strong><dd><code>Import and query formatting improvements</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> rust/srql/src/query/services.rs <ul><li>Reorganized import statements in alphabetical order<br> <li> Reformatted multi-line SQL query building expressions for consistency</ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-ad5e7e1a352406ed473a765de4856625f1bede590e7e2c724163bcd1e7b313e9">+13/-5</a>&nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>devices.rs</strong><dd><code>Import and query formatting improvements</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> rust/srql/src/query/devices.rs <ul><li>Reorganized import statements in alphabetical order<br> <li> Reformatted multi-line SQL expressions for consistency</ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-3202f22fff6863ed7848a129c49e2323322462b379d896d3fca2e59aa6f7b4c5">+6/-6</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>cpu_metrics.rs</strong><dd><code>Import and query formatting improvements</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> rust/srql/src/query/cpu_metrics.rs <ul><li>Reorganized import statements in alphabetical order<br> <li> Reformatted multi-line stats query building for consistency</ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-400c860c805cd3e1a5e7f7c42cece63cce3e62c1f3fd8b49a5803e26b40fe31e">+5/-3</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>interfaces.rs</strong><dd><code>Import statement reorganization</code>&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; </dd></summary> <hr> rust/srql/src/query/interfaces.rs - Reorganized import statements in alphabetical order </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-1ec833d4525fb2806523888b8c57b76ca8dd2ab70539368ccecc4d262769c8c5">+4/-4</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>timeseries_metrics.rs</strong><dd><code>Import statement reorganization</code>&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; </dd></summary> <hr> rust/srql/src/query/timeseries_metrics.rs - Reorganized import statements in alphabetical order </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-8450bff3aef4c1271bbf9b96809b4a5ac7b218e3f98c8b60387e35dbf4845bb0">+3/-3</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>main.rs</strong><dd><code>Remove unused import</code>&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; </dd></summary> <hr> cmd/ebpf/profiler/profiler/src/main.rs - Removed unused `warn` import from `log` crate </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-cd1bb855ed58ca61348770a32afdac803983cc9071747c3ae173b7b3b86daaa5">+1/-5</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>process_metrics.rs</strong><dd><code>Import statement reorganization</code>&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; </dd></summary> <hr> rust/srql/src/query/process_metrics.rs - Reorganized import statements in alphabetical order </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-c70bb600f5fba7199d80930fdc735cfc38371ef2d4ff3c821af55100e4cb0bac">+2/-2</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>device_updates.rs</strong><dd><code>Import statement reorganization</code>&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; </dd></summary> <hr> rust/srql/src/query/device_updates.rs - Reorganized import statements in alphabetical order </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-77b99f0ef409a6a3e4ecc65800ae841231a82b27a64e8dc1d4667db6698a539d">+3/-3</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>disk_metrics.rs</strong><dd><code>Import statement reorganization</code>&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; </dd></summary> <hr> rust/srql/src/query/disk_metrics.rs - Reorganized import statements in alphabetical order </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-b5a536baa37176f971e96c789991202b483314e2a85d4556489b4568a5675162">+2/-2</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>gateways.rs</strong><dd><code>Import statement reorganization</code>&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; </dd></summary> <hr> rust/srql/src/query/gateways.rs - Reorganized import statements in alphabetical order </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-c8e36b4707eb458aa0ee03e15b1c764622c558d304e4e265deab556deba44bff">+2/-2</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>memory_metrics.rs</strong><dd><code>Import statement reorganization</code>&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; </dd></summary> <hr> rust/srql/src/query/memory_metrics.rs - Reorganized import statements in alphabetical order </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-a12a227c4b5c224359799853f5fd7bbf626ec14b1e7eae40e4c65b1db6699417">+2/-2</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>harness.rs</strong><dd><code>Code formatting improvements</code>&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; </dd></summary> <hr> rust/srql/tests/support/harness.rs - Reformatted multi-line TLS connector setup for consistency </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-f15ba86798901e9218b7310fbeae763be61ab6ccf3fe592a79d63eda02eea8b4">+1/-2</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>traces.rs</strong><dd><code>Import statement reorganization</code>&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; </dd></summary> <hr> rust/srql/src/query/traces.rs - Reorganized import statements in alphabetical order </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-f390b0aef82baa9c3438719276dca70be826318d7446074a83b4527558528e19">+1/-1</a>&nbsp; &nbsp; &nbsp; </td> </tr> </table></details></td></tr><tr><td><strong>Configuration changes</strong></td><td><details><summary>16 files</summary><table> <tr> <td> <details> <summary><strong>docker-compose.yml</strong><dd><code>Update docker-compose to use file-based configuration</code>&nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> docker-compose.yml <ul><li>Changed <code>CONFIG_SOURCE</code> from <code>kv</code> to <code>file</code> for otel, flowgger, trapd, <br>db-event-writer, and mapper services<br> <li> Removed all KV-related environment variables (KV_ADDRESS, KV_SEC_MODE, <br>KV_CERT_*, KV_SERVER_NAME) from affected services</ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-e45e45baeda1c1e73482975a664062aa56f20c03dd9d64a827aba57775bed0d3">+5/-40</a>&nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>values.yaml</strong><dd><code>Update Helm values for file-based configuration</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> helm/serviceradar/values.yaml <ul><li>Changed <code>configSource</code> from <code>kv</code> to <code>file</code><br> <li> Disabled checker template seeding (<code>enabled: false</code>) with note that <br>KV-backed seeding is deprecated<br> <li> Disabled config watch (<code>configWatchEnabled: false</code>) with note that KV <br>watch/reload is no longer supported</ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-d4449c7cb70362554b274f81eae5a4b81a8e81df494282e383d1b7ea3871c452">+5/-5</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>_helpers.tpl</strong><dd><code>Simplify Helm KV environment template</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> helm/serviceradar/templates/_helpers.tpl <ul><li>Simplified KV environment variable template to always set <br><code>CONFIG_SOURCE=file</code><br> <li> Removed conditional logic for KV config source selection<br> <li> Removed unused variable declarations</ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-3d59d815f528d134e097ce2c3e830c6eaa738e27b6645df1e9b18136cd5d3c0d">+2/-4</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>BUILD.bazel</strong><dd><code>Update Bazel build configuration for KV removal</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> pkg/config/BUILD.bazel <ul><li>Removed KV-related source files from build: <code>kv_client.go</code>, <br><code>kv_repair.go</code>, <code>kv_loader.go</code>, <code>kv_watch.go</code>, <code>watchers.go</code>, <br><code>watchers_snapshot.go</code><br> <li> Added <code>toml_mask.go</code> to build sources<br> <li> Removed dependencies on KV packages and proto definitions</ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-470abb5244df5f7dcefaaf6156a92386050ebd9d8878e0d4e38a5db6b7d9f20f">+1/-13</a>&nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>db-event-writer.yaml</strong><dd><code>Update db-event-writer Helm template for file-based config</code></dd></summary> <hr> helm/serviceradar/templates/db-event-writer.yaml - Changed `CONFIG_SOURCE` to hardcoded `file` value </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-e4f899d11e5720f7049aa6fd632bd6993739410051bf65bc6fc8469739e5d2e4">+1/-1</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>serviceradar-dusk-checker.service</strong><dd><code>Update dusk-checker systemd service configuration</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> packaging/dusk-checker/systemd/serviceradar-dusk-checker.service - Changed `CONFIG_SOURCE` from `kv` to `file` </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-d7af32d6f270999588bde28ad3d3e45f8d4ad072726159e27375da48ddb6d14d">+1/-1</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>serviceradar-rperf-checker.service</strong><dd><code>Update rperf-checker systemd service configuration</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> packaging/rperf-checker/systemd/serviceradar-rperf-checker.service - Changed `CONFIG_SOURCE` from `kv` to `file` </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-a4764a7e914bb4bdfb062549d9f1309b68c16a69de9797ff09810899e3545ffc">+1/-1</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>serviceradar-mapper.service</strong><dd><code>Update mapper systemd service configuration</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> packaging/mapper/systemd/serviceradar-mapper.service - Changed `CONFIG_SOURCE` from `kv` to `file` </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-1b70ed69a99e932a662a33c76710d5e10f3d9aec4f44c81fc55f162deb527e2b">+1/-1</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>serviceradar-profiler.service</strong><dd><code>Update profiler systemd service configuration</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> packaging/profiler/systemd/serviceradar-profiler.service - Changed `CONFIG_SOURCE` from `kv` to `file` </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-1f8b01a0b46d3253a8ed3dae7a57705c47b20ffe1bc1bcde3cc870ff5c069c60">+1/-1</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>serviceradar-sync.service</strong><dd><code>Update sync systemd service configuration</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> packaging/sync/systemd/serviceradar-sync.service - Changed `CONFIG_SOURCE` from `kv` to `file` </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-19010b7017f69cf46a6fd061546acfedaee472af58929205e5df65aa3a2fb9f0">+1/-1</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>serviceradar-otel.service</strong><dd><code>Update otel systemd service configuration</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> packaging/otel/systemd/serviceradar-otel.service - Changed `CONFIG_SOURCE` from `kv` to `file` </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-e0830e8859db10b268005987ed7c5a4d280a8b48108d47ce658455868aa322fc">+1/-1</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>serviceradar-event-writer.service</strong><dd><code>Update event-writer systemd service configuration</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> packaging/event-writer/systemd/serviceradar-event-writer.service - Changed `CONFIG_SOURCE` from `kv` to `file` </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-38c85bd89054ce988993e502a70d671f317a815a472e7a9c38cfcb963ebf9462">+1/-1</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>serviceradar-agent.service</strong><dd><code>Update agent systemd service configuration</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> packaging/agent/systemd/serviceradar-agent.service - Changed `CONFIG_SOURCE` from `kv` to `file` </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-cd9d5d337d86a7b90566852040c22b0b3eb5089ed15520868a7823b280db2596">+1/-1</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>serviceradar-trapd.service</strong><dd><code>Update trapd systemd service configuration</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> packaging/trapd/systemd/serviceradar-trapd.service - Changed `CONFIG_SOURCE` from `kv` to `file` </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-0df974a7ea6b266dad4af4c2b2f754353e02e175b6ca827c011b0ba0cdae285f">+1/-1</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>serviceradar-flowgger.service</strong><dd><code>Update flowgger systemd service configuration</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> packaging/flowgger/systemd/serviceradar-flowgger.service - Changed `CONFIG_SOURCE` from `kv` to `file` </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-50c374b8f776b773764342e4a5e5c11449536113f5ec3a69a5d97238b9fb5360">+1/-1</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>serviceradar-zen.service</strong><dd><code>Update zen systemd service configuration</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> packaging/zen/systemd/serviceradar-zen.service - Changed `CONFIG_SOURCE` from `kv` to `file` </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-1ac58d92dc5e47a57ac14568ebee4d7e6a98c8330db0ccc8adf163e2e3172b54">+1/-1</a>&nbsp; &nbsp; &nbsp; </td> </tr> </table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>11 files</summary><table> <tr> <td> <details> <summary><strong>agents.md</strong><dd><code>Update agent documentation for file-based configuration</code>&nbsp; &nbsp; </dd></summary> <hr> docs/docs/agents.md <ul><li>Updated troubleshooting section to check local filesystem instead of <br>KV store<br> <li> Removed references to KV keys and watcher telemetry<br> <li> Updated configuration file paths to use <code>/etc/serviceradar</code> instead of <br>KV keys<br> <li> Removed section on expected KV keys and KV-based configuration <br>management</ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-af8d04277f2353629065b0cc5fad3e44bd3e7c20339bd125e0812104bdbeff28">+17/-30</a>&nbsp; </td> </tr> <tr> <td> <details> <summary><strong>kv-ci-plan.md</strong><dd><code>Mark KV CI plan as deprecated</code>&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; </dd></summary> <hr> docs/kv-ci-plan.md <ul><li>Marked document as deprecated<br> <li> Replaced content with note that KV-backed service configuration has <br>been removed<br> <li> Removed all CI safeguard procedures related to KV configuration</ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-60ccc8f58261bec42e9c77f3647e9b40505e2c5c343b5de62add7ff22581c8e7">+3/-56</a>&nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>README.md</strong><dd><code>Update config-bootstrap README for file-based configuration</code></dd></summary> <hr> rust/config-bootstrap/README.md <ul><li>Updated crate description to reflect file-based configuration only<br> <li> Removed documentation for KV overlay, sanitization, auto-seeding, and <br>watch support<br> <li> Simplified configuration lifecycle to load from disk and apply pinned <br>overlay<br> <li> Updated integration examples to remove KV-related parameters</ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-e5708e7c49760ca3538c27d8644905e6f91e56051111553e78631c93de10ffa9">+5/-41</a>&nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>spec.md</strong><dd><code>Add specification for removing KV service configuration</code>&nbsp; &nbsp; </dd></summary> <hr> openspec/changes/remove-edge-kv-config/specs/kv-configuration/spec.md <ul><li>Added new specification requirements for file-based and gRPC-delivered <br>service configuration<br> <li> Documented that services MUST NOT read, seed, or watch KV for service <br>configuration<br> <li> Removed requirements for automatic configuration seeding, KV <br>precedence, and KV-based observability<br> <li> Added migration guidance for deployments using KV-backed configuration</ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-32b428d7981cd91c7bc06c8c26fb2f03518c97ac32fe38ebd8844680109118af">+44/-0</a>&nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>design.md</strong><dd><code>Add design document for KV configuration removal</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> openspec/changes/remove-edge-kv-config/design.md <ul><li>Added design document explaining context and goals for removing KV <br>configuration<br> <li> Documented decisions to remove KV config dependencies while preserving <br>KV for rules (zen)<br> <li> Outlined risks, trade-offs, and migration plan<br> <li> Identified open questions about service dependencies</ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-73e27500b5e010938f193d57bf887a679d7aa06cc32885edcda5eb009ee3e1e2">+32/-0</a>&nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>snmp.md</strong><dd><code>Update SNMP documentation for file-based configuration</code>&nbsp; &nbsp; &nbsp; </dd></summary> <hr> docs/docs/snmp.md <ul><li>Updated credential storage guidance from KV to gateway <br>configuration/profile data<br> <li> Changed SNMPv3 credential storage from KV to profiles<br> <li> Updated trapd configuration override guidance from KV overlay to file <br>edits or pinned overlay</ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-5d2a72888517a4c731287280253a29cedbcbe595f1ce57c2fa14aef37c62595a">+3/-3</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>proposal.md</strong><dd><code>Add proposal for removing KV service configuration</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> openspec/changes/remove-edge-kv-config/proposal.md <ul><li>Added proposal document outlining rationale for removing KV-backed <br>configuration<br> <li> Documented what changes (removal of KV config seeding, watching, <br>merging)<br> <li> Listed affected components and breaking changes</ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-0133ff4acfb9a10b68c914ac54238d2327d07921a01d72ba77566471cea6d377">+16/-0</a>&nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>tasks.md</strong><dd><code>Add task checklist for KV removal project</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> openspec/changes/remove-edge-kv-config/tasks.md <ul><li>Added task checklist for KV configuration removal project<br> <li> Marked discovery and implementation tasks as complete<br> <li> Marked documentation and validation tasks (with validation tests <br>pending)</ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-c73829aa9986121923ae991c9a606a28e8cf785690cc0a3b278c9d980f32b553">+18/-0</a>&nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>project.md</strong><dd><code>Update project documentation for KV configuration removal</code></dd></summary> <hr> openspec/project.md <ul><li>Updated KV service description to note that service configuration is <br>file- or gRPC-based (no KV auto-reload)</ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-10c431237ea8388147f27e3a0750ece7b3be53ca35a986acf49b6565508e012e">+1/-1</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>kv-configuration.md</strong><dd><code>Update KV configuration documentation</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> docs/docs/kv-configuration.md <ul><li>Added note that service configuration is no longer stored in KV<br> <li> Updated operational check guidance to reference service templates <br>instead of KV config<br> <li> Clarified that KV is used for rules and other data, not service <br>configuration</ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-24c06e4806fa0ec5508ae5aeab9fbe82be7122af9933e6b7970032576cf5f6f8">+3/-2</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>README.md</strong><dd><code>Improve configuration troubleshooting documentation</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> docker/README.md <ul><li>Updated troubleshooting documentation for configuration loading issues<br> <li> Clarified that CONFIG_SOURCE should be set to <code>file</code> or <code>env</code><br> <li> Added command to verify config file is mounted at <code>/etc/serviceradar</code><br> <li> Improved clarity of diagnostic steps for configuration problems</ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-da8fcbe728a9172b578e5d754f8e2df214c658c4321f610e63dd68bea828ab49">+2/-1</a>&nbsp; &nbsp; &nbsp; </td> </tr> </table></details></td></tr><tr><td><strong>Additional files</strong></td><td><details><summary>22 files</summary><table> <tr> <td><strong>BUILD.bazel</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-9763df8132fa8d8919489fdfaf2434921b436714eb2aa276dca0ea4f92c02ec5">+0/-1</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td><strong>checker_seed.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-e59d16c2621f9241f14e037549badf987107edaa5ad5d27eb160d27b5ccaf276">+0/-133</a>&nbsp; </td> </tr> <tr> <td><strong>server_test.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-bd96a3d3da5a6788f2a8df14f82bd22b96dde41f7067d20484ca0b5abeaf264e">+0/-97</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>types.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-e3a3767c816cdb568a387a32243f7348046f1f3445549cc06368870c914496cd">+0/-3</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td><strong>config_test.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-29cea1b5b831c8655c7155f43e2367cec73e66d1e338f8b3c7877a2f339b8811">+0/-423</a>&nbsp; </td> </tr> <tr> <td><strong>integration_test.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-a3f7c10ccf6cc5bb623e271a9514799a372091bf223036806d8262db41510b3b">+0/-187</a>&nbsp; </td> </tr> <tr> <td><strong>kv_client.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-0c911990aa32d43404f0f23dadc0363ec97ed4ca315592e6c9bd24510e82e06d">+0/-873</a>&nbsp; </td> </tr> <tr> <td><strong>kv_client_test.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-09814dd9ab05f9d40f40974f297806d71fe2eca5f8120492c9f79311153d3aef">+0/-661</a>&nbsp; </td> </tr> <tr> <td><strong>kv_loader.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-1d1c25f337f10b6e230c25c4bb7914a1b97106b106570d1c72f116bea17824a7">+0/-116</a>&nbsp; </td> </tr> <tr> <td><strong>kv_repair.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-cf55ade5ae708eee328e7cd48131c8cc5c4b83968511dfebc28ff28809e1d768">+0/-100</a>&nbsp; </td> </tr> <tr> <td><strong>kv_repair_test.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-4d31f0198901fd3994040a41f1c88120720ca717d8c21ae48a3e225e36cfcf5e">+0/-93</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>kv_watch.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-6d4dd0c34977dc5f8eda8c3a62075478ae14ab26d45bbcdd24974310ee839e84">+0/-123</a>&nbsp; </td> </tr> <tr> <td><strong>test_constants_test.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-a91f8441caf4f4b2ba64665b80b224b7464f8400e4d4ee0f6277ec26aecfa68a">+0/-3</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td><strong>watchers.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-bbc878c252ce9408c4bb821b90aa297836781531d7530fb1c84a8dd1c31a3d86">+0/-179</a>&nbsp; </td> </tr> <tr> <td><strong>watchers_snapshot.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-e6b688991669ff2e740b25b031841a14db1e2da72068981f3f6fd1fd0e2a236b">+0/-55</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>watchers_test.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-7e73cc9429d87cf11a87f5ce84b68329af719b0331393a92987d9470010e8bdd">+0/-60</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>restart.rs</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-ad7647d63016c1b830b4d11061e9586b08729c663deca2839ecf7f70236722e9">+0/-67</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>sanitize.rs</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-ec8aad8b0115ca111f9294fa90414448720153176b878010d62eecd33bd20ece">+0/-306</a>&nbsp; </td> </tr> <tr> <td><strong>watch.rs</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-f922120c29012f3c9ad574f52556ea318cefe5f9ab2060a18ab2d2e9d80d8c2b">+0/-165</a>&nbsp; </td> </tr> <tr> <td><strong>BUILD.bazel</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-a115f06e115d125ea262209db14a72a06c8c7c6cd762746277a2f3b5c782dcb5">+0/-16</a>&nbsp; &nbsp; </td> </tr> <tr> <td><strong>kv_seeding_test.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-bc4616e11d3774b5ced79a869fb5848501c995fb951bb63a41b4df856969cb7f">+0/-321</a>&nbsp; </td> </tr> <tr> <td><strong>pinned_precedence_test.go</strong></td> <td><a href="https://github.com/carverauto/serviceradar/pull/2335/files#diff-2774066156671e52ad763e9d696758aa81f4a59b45df65d129caad52174ad6b2">+0/-78</a>&nbsp; &nbsp; </td> </tr> </table></details></td></tr></tbody></table> </details> ___
qodo-code-review[bot] commented 2026-01-18 07:06:13 +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/2335#issuecomment-3764997152
Original created: 2026-01-18T07:06:13Z

ⓘ Your approaching your monthly quota for Qodo. Upgrade your plan

PR Compliance Guide 🔍

Below is a summary of compliance checks for this PR:

Security Compliance
🟢
No security concerns identified No security vulnerabilities detected by AI analysis. Human verification advised for critical code.
Ticket Compliance
🟡
🎫 #2332
🟢 Remove the ability for edge collectors/services to talk to or load configuration from the
KV store.
Make a clean break in pkg/config by removing KV-related configuration
loading/overlay/watch/reload code.
Clean up affected services (Rust and Go) so they use file-based config (JSON/YAML/TOML)
and/or get config over gRPC (agent), instead of KV.
Update deployment/configuration artifacts (e.g., docker-compose, systemd, Helm) to stop
using CONFIG_SOURCE=kv for affected services.
Limit scope to non-Elixir services (Elixir services are explicitly out of scope).
Apply eligible cleanup to edge components mentioned: flowgger, trapd, zen (consumer), otel
(and possibly others).
Remove/cleanup ancillary KV utilities and dependencies that are no longer needed (e.g.,
possibly rust/kvutil), if applicable.
Apply eligible cleanup to edge components mentioned: inbound netflow PR (if present).
Codebase Duplication Compliance
Codebase context is not defined

Follow the guide to enable codebase context checks.

Custom Compliance
🟢
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:
Silent error fallback: The new newKVServiceClientFromEnv returns (nil, nil, nil) for multiple
misconfiguration/error cases (missing certs, unknown KV_SEC_MODE), silently disabling KV
sync instead of returning an actionable error or warning.

Referred Code
func newKVServiceClientFromEnv(ctx context.Context, role models.ServiceRole) (proto.KVServiceClient, func() error, error) {
	addr := strings.TrimSpace(os.Getenv("KV_ADDRESS"))
	if addr == "" {
		return nil, nil, nil
	}

	secMode := strings.ToLower(strings.TrimSpace(os.Getenv("KV_SEC_MODE")))
	var sec *models.SecurityConfig

	switch secMode {
	case string(models.SecurityModeMTLS):
		cert := strings.TrimSpace(os.Getenv("KV_CERT_FILE"))
		key := strings.TrimSpace(os.Getenv("KV_KEY_FILE"))
		ca := strings.TrimSpace(os.Getenv("KV_CA_FILE"))
		if cert == "" || key == "" || ca == "" {
			return nil, nil, nil
		}

		sec = &models.SecurityConfig{
			Mode: models.SecurityModeMTLS,
			TLS: models.TLSConfig{


 ... (clipped 31 lines)

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/2335#issuecomment-3764997152 Original created: 2026-01-18T07:06:13Z --- <pre>ⓘ Your approaching your monthly quota for Qodo. <a href="https://www.qodo.ai/pricing">Upgrade your plan</a></pre> ## PR Compliance Guide 🔍 <!-- https://github.com/carverauto/serviceradar/commit/122a1f338f25ed0ef0a33f99a469d48a8c6eac5c --> 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>🟢</td><td><details><summary><strong>No security concerns identified</strong></summary> No security vulnerabilities detected by AI analysis. Human verification advised for critical code. </details></td></tr> <tr><td colspan='2'><strong>Ticket Compliance</strong></td></tr> <tr><td>🟡</td> <td> <details> <summary>🎫 <a href=https://github.com/carverauto/serviceradar/issues/2332>#2332</a></summary> <table width='100%'><tbody> <tr><td rowspan=6>🟢</td> <td>Remove the ability for edge collectors/services to talk to or load configuration from the <br>KV store.</td></tr> <tr><td>Make a clean break in <code>pkg/config</code> by removing KV-related configuration <br>loading/overlay/watch/reload code.</td></tr> <tr><td>Clean up affected services (Rust and Go) so they use file-based config (JSON/YAML/TOML) <br>and/or get config over gRPC (agent), instead of KV.</td></tr> <tr><td>Update deployment/configuration artifacts (e.g., docker-compose, systemd, Helm) to stop <br>using <code>CONFIG_SOURCE=kv</code> for affected services.</td></tr> <tr><td>Limit scope to non-Elixir services (Elixir services are explicitly out of scope).</td></tr> <tr><td>Apply eligible cleanup to edge components mentioned: flowgger, trapd, zen (consumer), otel <br>(and possibly others).</td></tr> <tr><td rowspan=2>⚪</td> <td>Remove/cleanup ancillary KV utilities and dependencies that are no longer needed (e.g., <br>possibly <code>rust/kvutil</code>), if applicable.</td></tr> <tr><td>Apply eligible cleanup to edge components mentioned: inbound netflow PR (if present).</td></tr> </tbody></table> </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=1>🟢</td><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 rowspan=1>🔴</td> <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:** <br><a href='https://github.com/carverauto/serviceradar/pull/2335/files#diff-bc6eeb1b05bcb9179525e32fac1de9926b5823ec3504be546ab10c5c9740f544R132-R183'><strong>Silent error fallback</strong></a>: The new <code>newKVServiceClientFromEnv</code> returns <code>(nil, nil, nil)</code> for multiple <br>misconfiguration/error cases (missing certs, unknown <code>KV_SEC_MODE</code>), silently disabling KV <br>sync instead of returning an actionable error or warning.<br> <details open><summary>Referred Code</summary> ```go func newKVServiceClientFromEnv(ctx context.Context, role models.ServiceRole) (proto.KVServiceClient, func() error, error) { addr := strings.TrimSpace(os.Getenv("KV_ADDRESS")) if addr == "" { return nil, nil, nil } secMode := strings.ToLower(strings.TrimSpace(os.Getenv("KV_SEC_MODE"))) var sec *models.SecurityConfig switch secMode { case string(models.SecurityModeMTLS): cert := strings.TrimSpace(os.Getenv("KV_CERT_FILE")) key := strings.TrimSpace(os.Getenv("KV_KEY_FILE")) ca := strings.TrimSpace(os.Getenv("KV_CA_FILE")) if cert == "" || key == "" || ca == "" { return nil, nil, nil } sec = &models.SecurityConfig{ Mode: models.SecurityModeMTLS, TLS: models.TLSConfig{ ... (clipped 31 lines) ``` </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 rowspan=4>⚪</td> <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-18 07:07:21 +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/2335#issuecomment-3764998057
Original created: 2026-01-18T07:07:21Z

ⓘ Your approaching your monthly quota for Qodo. Upgrade your plan

PR Code Suggestions

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
Possible issue
Avoid nil KV client usage

In newKVClient, add a check for a nil client returned from
newKVServiceClientFromEnv and return nil to prevent creating a broken
kvgrpc.Client.

cmd/tools/config-sync/main.go [121-128]

 func newKVClient(ctx context.Context, role models.ServiceRole) (*kvgrpc.Client, error) {
     client, closer, err := newKVServiceClientFromEnv(ctx, role)
     if err != nil {
         return nil, err
     }
+    if client == nil {
+        // No KV configured
+        return nil, nil
+    }
     return kvgrpc.New(client, closer), nil
 }

[To ensure code accuracy, apply this suggestion manually]

Suggestion importance[1-10]: 8

__

Why: The suggestion correctly identifies a potential nil pointer issue where a nil client could be passed to kvgrpc.New, preventing a likely panic and improving robustness.

Medium
Return error on partial mTLS configuration

Return an explicit error from newKVServiceClientFromEnv if mTLS is configured
but required environment variables are missing, instead of silently returning
nil.

cmd/tools/config-sync/main.go [142-148]

 	case string(models.SecurityModeMTLS):
 		cert := strings.TrimSpace(os.Getenv("KV_CERT_FILE"))
 		key := strings.TrimSpace(os.Getenv("KV_KEY_FILE"))
 		ca := strings.TrimSpace(os.Getenv("KV_CA_FILE"))
 		if cert == "" || key == "" || ca == "" {
-			return nil, nil, nil
+			return nil, nil, fmt.Errorf("KV_SEC_MODE=mtls requires KV_CERT_FILE, KV_KEY_FILE, and KV_CA_FILE to be set")
 		}
  • Apply / Chat
Suggestion importance[1-10]: 7

__

Why: The suggestion improves error handling by making a silent failure an explicit error, which enhances debuggability for misconfigurations.

Medium
General
Remove unused KV environment variables

Remove unused KV-related environment variables (KV_ADDRESS, KV_SEC_MODE,
KV_CERT_DIR) as the configuration source is now a file.

packaging/dusk-checker/systemd/serviceradar-dusk-checker.service [9-12]

 Environment="CONFIG_SOURCE=file"
-Environment="KV_ADDRESS=127.0.0.1:50057"
-Environment="KV_SEC_MODE=mtls"
-Environment="KV_CERT_DIR=/etc/serviceradar/certs"
  • Apply / Chat
Suggestion importance[1-10]: 6

__

Why: The suggestion correctly identifies that with CONFIG_SOURCE=file, the KV_* environment variables are likely obsolete and should be removed for better code hygiene and clarity.

Low
Fix line continuation backslash

In the curl command example, replace the double backslash (\) with a single
backslash (</code>) for correct line continuation in the shell.

docs/docs/kv-configuration.md [34-35]

-curl -sS -H "Authorization: Bearer ${TOKEN}" \\
+curl -sS -H "Authorization: Bearer ${TOKEN}" \
   https://<core-host>/api/admin/config | jq '.[].service_type'
  • Apply / Chat
Suggestion importance[1-10]: 5

__

Why: The suggestion correctly identifies a typo in a shell command example within the documentation, improving its accuracy and usability for developers.

Low
Simplify error message handling logic

Refactor the error message handling for failed template registrations to be more
concise by inverting the conditional logic.

pkg/config/bootstrap/template.go [116-122]

 	if !resp.GetSuccess() {
-		msg := strings.TrimSpace(resp.GetMessage())
-		if msg == "" {
-			msg = "core rejected template"
+		msg := "core rejected template"
+		if respMsg := strings.TrimSpace(resp.GetMessage()); respMsg != "" {
+			msg = respMsg
 		}
 		return fmt.Errorf("%w: %s", errTemplateRegistration, msg)
 	}
  • Apply / Chat
Suggestion importance[1-10]: 2

__

Why: This is a minor stylistic change that offers a marginal improvement in code conciseness without affecting functionality.

Low
  • Update
Imported GitHub PR comment. Original author: @qodo-code-review[bot] Original URL: https://github.com/carverauto/serviceradar/pull/2335#issuecomment-3764998057 Original created: 2026-01-18T07:07:21Z --- <pre>ⓘ Your approaching your monthly quota for Qodo. <a href="https://www.qodo.ai/pricing">Upgrade your plan</a></pre> ## PR Code Suggestions ✨ <!-- 122a1f3 --> 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=2>Possible issue</td> <td> <details><summary>Avoid nil KV client usage</summary> ___ **In <code>newKVClient</code>, add a check for a <code>nil</code> client returned from <br><code>newKVServiceClientFromEnv</code> and return <code>nil</code> to prevent creating a broken <br><code>kvgrpc.Client</code>.** [cmd/tools/config-sync/main.go [121-128]](https://github.com/carverauto/serviceradar/pull/2335/files#diff-bc6eeb1b05bcb9179525e32fac1de9926b5823ec3504be546ab10c5c9740f544R121-R128) ```diff func newKVClient(ctx context.Context, role models.ServiceRole) (*kvgrpc.Client, error) { client, closer, err := newKVServiceClientFromEnv(ctx, role) if err != nil { return nil, err } + if client == nil { + // No KV configured + return nil, nil + } return kvgrpc.New(client, closer), nil } ``` `[To ensure code accuracy, apply this suggestion manually]` <details><summary>Suggestion importance[1-10]: 8</summary> __ Why: The suggestion correctly identifies a potential nil pointer issue where a `nil` client could be passed to `kvgrpc.New`, preventing a likely panic and improving robustness. </details></details></td><td align=center>Medium </td></tr><tr><td> <details><summary>Return error on partial mTLS configuration</summary> ___ **Return an explicit error from <code>newKVServiceClientFromEnv</code> if mTLS is configured <br>but required environment variables are missing, instead of silently returning <br><code>nil</code>.** [cmd/tools/config-sync/main.go [142-148]](https://github.com/carverauto/serviceradar/pull/2335/files#diff-bc6eeb1b05bcb9179525e32fac1de9926b5823ec3504be546ab10c5c9740f544R142-R148) ```diff case string(models.SecurityModeMTLS): cert := strings.TrimSpace(os.Getenv("KV_CERT_FILE")) key := strings.TrimSpace(os.Getenv("KV_KEY_FILE")) ca := strings.TrimSpace(os.Getenv("KV_CA_FILE")) if cert == "" || key == "" || ca == "" { - return nil, nil, nil + return nil, nil, fmt.Errorf("KV_SEC_MODE=mtls requires KV_CERT_FILE, KV_KEY_FILE, and KV_CA_FILE to be set") } ``` - [ ] **Apply / Chat** <!-- /improve --apply_suggestion=1 --> <details><summary>Suggestion importance[1-10]: 7</summary> __ Why: The suggestion improves error handling by making a silent failure an explicit error, which enhances debuggability for misconfigurations. </details></details></td><td align=center>Medium </td></tr><tr><td rowspan=3>General</td> <td> <details><summary>Remove unused KV environment variables</summary> ___ **Remove unused KV-related environment variables (<code>KV_ADDRESS</code>, <code>KV_SEC_MODE</code>, <br><code>KV_CERT_DIR</code>) as the configuration source is now a file.** [packaging/dusk-checker/systemd/serviceradar-dusk-checker.service [9-12]](https://github.com/carverauto/serviceradar/pull/2335/files#diff-d7af32d6f270999588bde28ad3d3e45f8d4ad072726159e27375da48ddb6d14dR9-R12) ```diff Environment="CONFIG_SOURCE=file" -Environment="KV_ADDRESS=127.0.0.1:50057" -Environment="KV_SEC_MODE=mtls" -Environment="KV_CERT_DIR=/etc/serviceradar/certs" ``` - [ ] **Apply / Chat** <!-- /improve --apply_suggestion=2 --> <details><summary>Suggestion importance[1-10]: 6</summary> __ Why: The suggestion correctly identifies that with `CONFIG_SOURCE=file`, the `KV_*` environment variables are likely obsolete and should be removed for better code hygiene and clarity. </details></details></td><td align=center>Low </td></tr><tr><td> <details><summary>Fix line continuation backslash</summary> ___ **In the <code>curl</code> command example, replace the double backslash (<code>\\</code>) with a single <br>backslash (<code>\</code>) for correct line continuation in the shell.** [docs/docs/kv-configuration.md [34-35]](https://github.com/carverauto/serviceradar/pull/2335/files#diff-24c06e4806fa0ec5508ae5aeab9fbe82be7122af9933e6b7970032576cf5f6f8R34-R35) ```diff -curl -sS -H "Authorization: Bearer ${TOKEN}" \\ +curl -sS -H "Authorization: Bearer ${TOKEN}" \ https://<core-host>/api/admin/config | jq '.[].service_type' ``` - [ ] **Apply / Chat** <!-- /improve --apply_suggestion=3 --> <details><summary>Suggestion importance[1-10]: 5</summary> __ Why: The suggestion correctly identifies a typo in a shell command example within the documentation, improving its accuracy and usability for developers. </details></details></td><td align=center>Low </td></tr><tr><td> <details><summary>Simplify error message handling logic</summary> ___ **Refactor the error message handling for failed template registrations to be more <br>concise by inverting the conditional logic.** [pkg/config/bootstrap/template.go [116-122]](https://github.com/carverauto/serviceradar/pull/2335/files#diff-9a44dcfb7a9e43b18ebf20b4be4123c6cf52a4e9fcf1b7ad65877148325f2b7eR116-R122) ```diff if !resp.GetSuccess() { - msg := strings.TrimSpace(resp.GetMessage()) - if msg == "" { - msg = "core rejected template" + msg := "core rejected template" + if respMsg := strings.TrimSpace(resp.GetMessage()); respMsg != "" { + msg = respMsg } return fmt.Errorf("%w: %s", errTemplateRegistration, msg) } ``` - [ ] **Apply / Chat** <!-- /improve --apply_suggestion=4 --> <details><summary>Suggestion importance[1-10]: 2</summary> __ Why: This is a minor stylistic change that offers a marginal improvement in code conciseness without affecting functionality. </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>
qodo-code-review[bot] commented 2026-01-18 07:21:19 +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/2335#issuecomment-3765007800
Original created: 2026-01-18T07:21:19Z

CI Feedback 🧐

(Feedback updated until commit github.com/carverauto/serviceradar@f8fd106366)

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 []

Failed test name: ""

Failure summary:

The action failed during CI setup because the required secret SRQL_TEST_DATABASE_CA_CERT was not
configured.
- The workflow explicitly checks for SRQL_TEST_DATABASE_CA_CERT to verify TLS for the
SRQL test fixture and aborts when it is empty.
- Log shows: SRQL_TEST_DATABASE_CA_CERT secret must
be configured to verify SRQL fixture TLS. followed by Process completed with exit code 1. (around
lines 636-637).

Relevant error logs:
1:  Runner name: 'arc-runner-set-hk6mk-runner-mkxq5'
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.28.0 from https://github.com/bazelbuild/bazelisk/releases/download/v1.28.0/bazelisk-linux-amd64
552:  Adding to the cache ...
553:  Successfully cached bazelisk to /home/runner/_work/_tool/bazelisk/1.28.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/2335#issuecomment-3765007800 Original created: 2026-01-18T07:21:19Z --- ## CI Feedback 🧐 #### (Feedback updated until commit https://github.com/carverauto/serviceradar/commit/f8fd1063663535f9ae4538c2ab13dcce60c27b9b) 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/21107969595/job/60702219843) [❌] </td></tr> <tr><td> **Failed test name:** "" </td></tr> <tr><td> **Failure summary:** The action failed during CI setup because the required secret <code>SRQL_TEST_DATABASE_CA_CERT</code> was not <br>configured.<br> - The workflow explicitly checks for <code>SRQL_TEST_DATABASE_CA_CERT</code> to verify TLS for the <br>SRQL test fixture and aborts when it is empty.<br> - Log shows: <code>SRQL_TEST_DATABASE_CA_CERT secret must </code><br><code>be configured to verify SRQL fixture TLS.</code> followed by <code>Process completed with exit code 1.</code> (around <br>lines 636-637).<br> </td></tr> <tr><td> <details><summary>Relevant error logs:</summary> ```yaml 1: Runner name: 'arc-runner-set-hk6mk-runner-mkxq5' 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.28.0 from https://github.com/bazelbuild/bazelisk/releases/download/v1.28.0/bazelisk-linux-amd64 552: Adding to the cache ... 553: Successfully cached bazelisk to /home/runner/_work/_tool/bazelisk/1.28.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>
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!2688
No description provided.