settings ui work #2645
No reviewers
Labels
No labels
1week
2weeks
Failed compliance check
IP cameras
NATS
Possible security concern
Review effort 1/5
Review effort 2/5
Review effort 3/5
Review effort 4/5
Review effort 5/5
UI
aardvark
accessibility
amd64
api
arm64
auth
back-end
bgp
blog
bug
build
checkers
ci-cd
cleanup
cnpg
codex
core
dependencies
device-management
documentation
duplicate
dusk
ebpf
enhancement
eta 1d
eta 1hr
eta 3d
eta 3hr
feature
fieldsurvey
github_actions
go
good first issue
help wanted
invalid
javascript
k8s
log-collector
mapper
mtr
needs-triage
netflow
network-sweep
observability
oracle
otel
plug-in
proton
python
question
reddit
redhat
research
rperf
rperf-checker
rust
sdk
security
serviceradar-agent
serviceradar-agent-gateway
serviceradar-web
serviceradar-web-ng
siem
snmp
sysmon
topology
ubiquiti
wasm
wontfix
zen-engine
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
carverauto/serviceradar!2645
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "refs/pull/2645/head"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Imported from GitHub pull request.
Original GitHub pull request: #2242
Original author: @mfreeman451
Original URL: https://github.com/carverauto/serviceradar/pull/2242
Original created: 2026-01-11T04:02:51Z
Original updated: 2026-01-11T04:10:18Z
Original head: carverauto/serviceradar:feat/rule_builder_ui
Original base: testing
Original merged: 2026-01-11T04:10:17Z 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:
Describe your changes
Issue ticket number and link
Code checklist before requesting a review
PR Type
Enhancement, Tests, Documentation
Description
New Rule Builder UI: Comprehensive three-tab interface (Logs, Events, Alerts) for managing log normalization, event promotion, and alert rules with full CRUD operations and template management
Rule Template System: New tenant-scoped template resources (
ZenRuleTemplate,LogPromotionRuleTemplate,StatefulAlertRuleTemplate) with default seeding for tenant onboardingZen Rule Management: Complete Zen rule resource with compilation to JSON Decision Model format, KV synchronization to datasvc, and validation constraints
Default Rule Seeding: GenServer modules (
TemplateSeeder,ZenRuleSeeder,ZenRuleSync) that automatically seed baseline rules and templates for each tenant on startupUnified Settings Navigation: New
SettingsComponentsmodule providing consistent layout and navigation across settings pages, replacing scattered admin componentsDatabase Schema: New tenant-scoped tables for Zen rules, rule templates, and promotion/alert rule templates with proper indexing and multitenancy support
Navigation Restructuring: Updated routing from
/infrastructureand/users/settingsto unified/settings/*paths with backward compatibility redirectsDocumentation: Added rule builder user guide, design specifications, and implementation tasks for both current and future JDM editor features
Bug Fix: Fixed inline value rendering in alert show page by pre-assigning template variables
Test Coverage: New integration tests for rule builder UI, Zen rules, and updated path-based tests for navigation changes
Configuration Updates: Added passthrough rules to Zen consumer configurations and updated test assertions for new rule ordering
Diagram Walkthrough
File Walkthrough
4 files
config.rs
Update config tests for new passthrough rule orderingcmd/consumers/zen/src/config.rs
passthroughrule added as first rule
strip_full_messageandcef_severityin syslog decision group
snmp_severityrule in snmp decision groupinsertion
rules_live_test.exs
Rule builder UI integration testsweb-ng/test/serviceradar_web_ng_web/live/settings/rules_live_test.exs
rules, and stateful alert rules
types
zen_rule_test.exs
Zen rule integration testselixir/serviceradar_core/test/serviceradar/observability/zen_rule_test.exs
sync
settings_test.exs
User settings test path updatesweb-ng/test/serviceradar_web_ng_web/live/user_live/settings_test.exs
/users/settingsto/settings/profiletomatch new routing
update workflows
24 files
index.ex
New rules management LiveView with three-tier pipeline UIweb-ng/lib/serviceradar_web_ng_web/live/settings/rules_live/index.ex
promotion, and alert rules
operations for rules and templates
preset management via modal dialogs
normalization, and data querying
index.ex
Refactor cluster status with caching and tenant filteringweb-ng/lib/serviceradar_web_ng_web/live/settings/cluster_live/index.ex
and agents with stale detection
agents
handling and concurrent processing
cache management
gateways_tableandagents_tablecomponents
format support
zen_rule_templates.ex
New Zen rule templates module with decision modelselixir/serviceradar_core/lib/serviceradar/observability/zen_rule_templates.ex
decision models
passthrough,strip_full_message,snmp_severity, andcef_severitycompile/2function to return appropriate template JSONbased on template type
representation
index.ex
NATS operator and tenant account management UI integrationweb-ng/lib/serviceradar_web_ng_web/live/admin/edge_sites_live/index.ex
SettingsComponentsinstead ofAdminComponentsforunified settings navigation
and filtering
load_operator_status()andload_tenant_accounts()functions to fetch NATS infrastructure data
error handling
operator_status_card(),system_account_card(), andnats_status_badge()for NATS status displaytemplate_seeder.ex
Default rule template seeding for tenant onboardingelixir/serviceradar_core/lib/serviceradar/observability/template_seeder.ex
on startup
LogPromotionRuleTemplate,StatefulAlertRuleTemplate, andZenRuleTemplatesyslog_passthroughtopassthrough)logs with passthrough, severity mapping, and message stripping
zen_rule_seeder.ex
Default Zen rule seeding for tenant onboardingelixir/serviceradar_core/lib/serviceradar/observability/zen_rule_seeder.ex
startup
OTEL, internal)
mapping rules
settings.ex
User settings page layout and navigation restructuringweb-ng/lib/serviceradar_web_ng_web/live/user_live/settings.ex
structure with
ui_panelcomponentssections with descriptive headers
/users/settingsto/settings/profileforconsistency
zen_rule.ex
Zen rule resource with compilation and KV syncelixir/serviceradar_core/lib/serviceradar/observability/zen_rule.ex
multitenancy support
config, and compiled JDM
CompileZenRuleandSyncZenRulechangesmembership
stateful_alert_rule_template.ex
Stateful alert rule template resourceelixir/serviceradar_core/lib/serviceradar/observability/stateful_alert_rule_template.ex
timing, signal type, and match/event/alert payloads
zen_rule_sync.ex
Zen rule KV synchronization and reconciliation serviceelixir/serviceradar_core/lib/serviceradar/observability/zen_rule_sync.ex
reconciles on startup/interval
sync_rule()function to push compiled JDM to KV withrevision tracking
delete_rule()for removing disabled rules from KVzen_rule_template.ex
Zen rule template resource for builder presetselixir/serviceradar_core/lib/serviceradar/observability/zen_rule_template.ex
template type
settings_components.ex
Unified settings navigation and layout componentsweb-ng/lib/serviceradar_web_ng_web/components/settings_components.ex
navigation
settings_shell()wrapper component for consistent max-widthcontainer
settings_nav()andsettings_tabs()for main settingsnavigation (Cluster, Events, Edge Ops, Integrations, Jobs)
edge_nav()andedge_tabs()for edge operations sub-navigation(Collectors, Sites & NATS, Onboarding)
client.ex
DataService client KV revision retrievalelixir/serviceradar_core/lib/serviceradar/data_service/client.ex
get_with_revision()function to retrieve KV values along withtheir revision numbers
KVService.Stub.get()with revision extractionfrom response
RPC errors
log_promotion_rule_template.ex
Log promotion rule template resourceelixir/serviceradar_core/lib/serviceradar/observability/log_promotion_rule_template.ex
payload
zen_rule.ex
Zen rule validation constraintselixir/serviceradar_core/lib/serviceradar/observability/validations/zen_rule.ex
numbers, hyphens, underscores)
logs)
otel_metrics for metrics)
compile_zen_rule.ex
Zen rule compilation to JDM formatelixir/serviceradar_core/lib/serviceradar/observability/changes/compile_zen_rule.ex
JSON Decision Model
sync_zen_rule.ex
Zen rule KV synchronization changeelixir/serviceradar_core/lib/serviceradar/observability/changes/sync_zen_rule.ex
create/update/destroy
subject, name)
index.ex
Collector admin page settings navigation integrationweb-ng/lib/serviceradar_web_ng_web/live/admin/collector_live/index.ex
SettingsComponentsinstead ofAdminComponentssettings_shell()andedge_nav()components forunified navigation
zen_rule_template.ex
Zen rule template validation constraintselixir/serviceradar_core/lib/serviceradar/observability/validations/zen_rule_template.ex
subject constraints
index.ex
Cluster admin page settings navigation integrationweb-ng/lib/serviceradar_web_ng_web/live/admin/cluster_live/index.ex
SettingsComponentsinstead ofAdminComponentssettings_shell()andsettings_nav()componentsfor unified navigation
stateful_alert_rule.ex
Stateful alert rule code interface and action updateselixir/serviceradar_core/lib/serviceradar/observability/stateful_alert_rule.ex
list,list_active,create,update,destroyfunctions
acceptlists to create and update actions for fieldvalidation
show.ex
Node show page navigation path updatesweb-ng/lib/serviceradar_web_ng_web/live/node_live/show.ex
/infrastructure/nodesto/settings/cluster/nodesfor SRQL context/settings/clusterinsteadof
/infrastructure?tab=nodesindex.ex
Edge package admin page settings navigation integrationweb-ng/lib/serviceradar_web_ng_web/live/admin/edge_package_live/index.ex
SettingsComponentsinstead ofAdminComponentssettings_shell(),settings_nav(), andedge_nav()components
show.ex
Edge sites show page settings navigation integrationweb-ng/lib/serviceradar_web_ng_web/live/admin/edge_sites_live/show.ex
SettingsComponentsinstead ofAdminComponentssettings_shell(),settings_nav(), andedge_nav()components
13 files
layouts.ex
Update navigation links and sidebar routingweb-ng/lib/serviceradar_web_ng_web/components/layouts.ex
/settings/clusterinstead of/admin/jobs/settings,/admin, and/users/settingspaths/users/settingsto/settings/profile20260111080000_add_rule_templates.exs
Database schema for rule template storageelixir/serviceradar_core/priv/repo/tenant_migrations/20260111080000_add_rule_templates.exs
zen_rule_templates,log_promotion_rule_templates,stateful_alert_rule_templates(tenant_id, name)for promotion and statefultemplates
event/alert payloads
application.ex
Application startup configuration for rule seeding and syncelixir/serviceradar_core/lib/serviceradar/application.ex
TemplateSeederGenServer to seed default rule templates onstartup
ZenRuleSeederGenServer to seed default Zen rules on startupZenRuleSyncGenServer to reconcile Zen rules with datasvc KVstore
availability
20260110070000_add_zen_rules.exs
Database schema for Zen rule storageelixir/serviceradar_core/priv/repo/tenant_migrations/20260110070000_add_zen_rules.exs
zen_rulestable with columns for rule definition, compilationoutput, and KV metadata
(tenant_id, name)for rule uniqueness per tenantconfiguration
20260111013324_update-zen-rule-identities.exs
Zen rule identity constraint updateselixir/serviceradar_core/priv/repo/tenant_migrations/20260111013324_update-zen-rule-identities.exs
zen_rulesandzen_rule_templatesfrom(tenant_id, name)to(tenant_id, subject, name)router.ex
Router updates for unified settings navigationweb-ng/lib/serviceradar_web_ng_web/router.ex
/users/settingsto/settings/profilefor backwardcompatibility
/users/settingsto/settings/profile/settings/cluster/nodes/:node_nameroute for node details/settings/rulesroute for rule builder UI/infrastructureroutes with redirects to/settings/clusterpaths
20260111013324.json
Add stateful alert rule templates resource snapshotelixir/serviceradar_core/priv/resource_snapshots/repo/tenants/stateful_alert_rule_templates/20260111013324.json
stateful_alert_rule_templatestableschema
priority, match/event maps, and tenant_id
tenant_idandnamecombination20260111013324.json
Add zen rules resource snapshotelixir/serviceradar_core/priv/resource_snapshots/repo/tenants/zen_rules/20260111013324.json
zen_rulestable schemastream_name, subject, format, template, builder_config, compiled_jdm,
and tenant_id
tenant_id,subject, andnamecombination
20260111013324.json
Add zen rule templates resource snapshotelixir/serviceradar_core/priv/resource_snapshots/repo/tenants/zen_rule_templates/20260111013324.json
zen_rule_templatestable schemastream_name, subject, template, builder_config, and tenant_id
tenant_id,subject, andnamecombination
20260111013324.json
Add log promotion rule templates resource snapshotelixir/serviceradar_core/priv/resource_snapshots/repo/tenants/log_promotion_rule_templates/20260111013324.json
log_promotion_rule_templatestableschema
priority, match/event maps, and tenant_id
tenant_idandnamecombinationzen-consumer-with-otel.json
Add passthrough rules to zen consumer configurationcmd/consumers/zen/zen-consumer-with-otel.json
passthroughrule with order 1 to syslog subject rules, shiftingexisting rules to orders 2 and 3
passthroughrule with order 1 to snmp subject rules and changedsecond rule from
cef_severitytosnmp_severitywith order 2zen-consumer.json
Add passthrough rules to zen consumer configurationcmd/consumers/zen/zen-consumer.json
passthroughrule with order 1 to syslog subject rules, shiftingexisting rules to orders 2 and 3
passthroughrule with order 1 to snmp subject rules and changedsecond rule from
cef_severitytosnmp_severitywith order 2zen-consumer.json
Add passthrough rules to zen consumer configurationpackaging/zen/config/zen-consumer.json
passthroughrule with order 1 to syslog subject rules, shiftingexisting rules to orders 2 and 3
passthroughrule with order 1 to snmp subject rules and changedsecond rule from
cef_severitytosnmp_severitywith order 22 files
BUILD.bazel
Add new Go source files to build targetpkg/consumers/db-event-writer/BUILD.bazel
json_logs.goandocsf_events.goBUILD.bazel
Update log crate dependency versioncmd/checkers/rperf-server/BUILD.bazel
logcrate dependency from version 0.4.28 to 0.4.291 files
show.ex
Alert show page inline value rendering fixweb-ng/lib/serviceradar_web_ng_web/live/alert_live/show.ex
value_textto avoiddirect function calls in templates
9 files
tasks.md
Mark rule builder UI implementation tasks completeopenspec/changes/add-rule-builder-ui/tasks.md
including resource creation, migrations, KV sync, and template seeding
actions and template endpoints
layout, rule builders, and template libraries
in section 5 (Tests)
design.md
Add Zen JDM editor design specificationopenspec/changes/add-zen-jdm-editor/design.md
per rule
phoenix_react_serverfor React embedding andstore JDM definition as first-class JSON field
migration plan for existing template-based rules
design.md
Update rule builder UI design with template librariesopenspec/changes/add-rule-builder-ui/design.md
to "Events"
in main content area
seeded with defaults
seeding
spec.md
Add template library and default rules requirementsopenspec/changes/add-rule-builder-ui/specs/observability-rule-management/spec.md
tenant onboarding
supported Zen subject
operations
to select templates when creating/editing rules
rule-builder.md
Add rule builder user documentationdocs/docs/rule-builder.md
(Zen) rules workflow
(promotion and stateful alerts)
tasks.md
Add Zen JDM editor implementation tasksopenspec/changes/add-zen-jdm-editor/tasks.md
Rule Editor UX, and Tests + Docs
jdm_definitionattribute,backfilling definitions, React integration, and LiveView tests
syslog.md
Update syslog documentation with rule builder referencedocs/docs/syslog.md
Builder UI
normalization rules for syslog
proposal.md
Add Zen JDM editor change proposalopenspec/changes/add-zen-jdm-editor/proposal.md
view
editor
phoenix_react_serverandstoring JDM definitions in CNPG
documentation
snmp.md
Update SNMP documentation with rule builder referencedocs/docs/snmp.md
Builder UI
normalization rules for SNMP traps
12 files
Imported GitHub PR comment.
Original author: @qodo-code-review[bot]
Original URL: https://github.com/carverauto/serviceradar/pull/2242#issuecomment-3733973215
Original created: 2026-01-11T04:04:16Z
PR Compliance Guide 🔍
Below is a summary of compliance checks for this PR:
Authorization bypass
Description: The new admin LiveView code performs multiple Ash reads with
authorize?: false(e.g.,operator and tenant account provisioning status) and allows enqueuing
CreateAccountWorkerbased on a user-supplied
tenant_id, which could enable unauthorized data access orprivileged actions if route/LiveView access controls are misconfigured.
index.ex [645-733]
Referred Code
🎫 No ticket provided
Codebase context is not defined
Follow the guide to enable codebase context checks.
Generic: Meaningful Naming and Self-Documenting Code
Objective: Ensure all identifiers clearly express their purpose and intent, making code
self-documenting
Status: Passed
Generic: Robust Error Handling and Edge Case Management
Objective: Ensure comprehensive error handling that provides meaningful context and graceful
degradation
Status:
Unsafe atom conversion: User-controlled
statusis converted viaString.to_existing_atom/1without guarding, whichcan raise and crash the LiveView when an unexpected value is submitted.
Referred Code
Generic: Secure Error Handling
Objective: To prevent the leakage of sensitive system information through error messages while
providing sufficient detail for internal debugging.
Status:
Internal error exposed: The UI renders
@operator.error_messagedirectly, which may expose internal operationaldetails to the end-user instead of a generic user-facing error.
Referred Code
Generic: Comprehensive Audit Trails
Objective: To create a detailed and reliable record of critical system actions for security analysis
and compliance.
Status:
Missing audit logging: The new rule/template CRUD LiveView actions (create/update/delete) do not emit audit logs
with user/tenant context, so it is unclear whether these critical settings changes are
traceable.
Referred Code
Generic: Secure Logging Practices
Objective: To ensure logs are useful for debugging and auditing without exposing sensitive
information like PII, PHI, or cardholder data.
Status:
Logging not shown: The new administrative actions (e.g., reprovisioning) and error paths do not show any
structured logging in the diff, so it cannot be verified that logs are both present and
free of sensitive data.
Referred Code
Generic: Security-First Input Validation and Data Handling
Objective: Ensure all data inputs are validated, sanitized, and handled securely to prevent
vulnerabilities
Status:
Authorization bypass risk: Several reads are performed with
authorize?: false(e.g., operator status and tenantprovisioning lists), which may bypass authorization unless this LiveView is otherwise
access-controlled outside the diff.
Referred Code
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/2242#issuecomment-3733973992
Original created: 2026-01-11T04:05:41Z
PR Code Suggestions ✨
Explore these optional code suggestions:
Re-evaluate the template-based rule abstraction
The current template-based abstraction for Zen rules should be re-evaluated. A
design document included in the PR already proposes replacing this with a direct
JDM editor, so it would be more efficient to implement the final solution now
instead of building a temporary UI.
Examples:
web-ng/lib/serviceradar_web_ng_web/live/settings/rules_live/index.ex [1-2097]
openspec/changes/add-zen-jdm-editor/design.md [1-38]
Solution Walkthrough:
Before:
After:
Suggestion importance[1-10]: 10
__
Why: The suggestion correctly identifies a major strategic issue where the PR implements a complex, template-based UI that is already planned for replacement by a direct JDM editor, as documented in a new design file (
add-zen-jdm-editor/design.md) within this same PR, thus preventing significant throwaway work.Fix unreliable timestamp normalization logic
Replace the brittle, magnitude-based timestamp normalization in
parse_timestamp_to_mswith a more robust heuristic to avoid misinterpretingtimestamp units and prevent bugs in staleness detection.
web-ng/lib/serviceradar_web_ng_web/live/settings/cluster_live/index.ex [915-932]
[To ensure code accuracy, apply this suggestion manually]Suggestion importance[1-10]: 9
__
Why: The suggestion correctly identifies a significant bug in the timestamp normalization logic, which uses fragile magic numbers and can lead to incorrect staleness detection for cluster components.
Refresh agents_cache on manual refresh
Update the
agents_cachein thehandle_event("refresh", ...)handler to ensurethe agent list is refreshed along with the gateway list when the user triggers a
manual refresh.
web-ng/lib/serviceradar_web_ng_web/live/settings/cluster_live/index.ex [262-289]
[To ensure code accuracy, apply this suggestion manually]Suggestion importance[1-10]: 8
__
Why: The suggestion correctly identifies a bug where the manual refresh button does not update the agent list, leading to a stale UI display for agents.
Handle seeder function return values
Chain the seeder function calls using a
withstatement to handle potentialfailures and prevent creating a tenant in an inconsistent state.
elixir/serviceradar_core/lib/serviceradar/identity/changes/initialize_tenant_infrastructure.ex [97-103]
Suggestion importance[1-10]: 8
__
Why: The suggestion correctly identifies that failing seeder functions would lead to an inconsistent tenant state, and proposes an idiomatic
withblock to handle errors and ensure atomicity.Fetch records directly to prevent race conditions
Refactor
edit_*event handlers to fetch records directly from the database byID, preventing potential race conditions and ensuring users edit the most
up-to-date data.
web-ng/lib/serviceradar_web_ng_web/live/settings/rules_live/index.ex [127-145]
[To ensure code accuracy, apply this suggestion manually]Suggestion importance[1-10]: 7
__
Why: The suggestion correctly identifies a potential race condition where editing is based on stale data from
socket.assigns, and proposes fetching the latest data to ensure consistency.Fetch records before deletion for data consistency
Refactor
delete_*event handlers to fetch records directly from the database byID before deletion to ensure atomicity and prevent errors from stale data.
web-ng/lib/serviceradar_web_ng_web/live/settings/rules_live/index.ex [151-169]
[To ensure code accuracy, apply this suggestion manually]Suggestion importance[1-10]: 7
__
Why: The suggestion correctly points out that deleting based on a stale list from
socket.assignscan lead to errors, and recommends fetching the record by ID before deletion for atomicity.Return a consistent {:ok, _} tuple
Modify
reprovision_tenantto ensure it always returns an{:ok, _}or{:error, _}tuple by including the result of
ServiceRadar.NATS.Workers.CreateAccountWorker.enqueue/1in thewithstatement.web-ng/lib/serviceradar_web_ng_web/live/admin/edge_sites_live/index.ex [709-714]
[To ensure code accuracy, apply this suggestion manually]Suggestion importance[1-10]: 7
__
Why: The suggestion correctly points out that the
withblock might not return a tuple, which could cause a crash in the callingcasestatement, and proposes a valid fix.Prevent DoS with safe atom conversion
Replace the unsafe
String.to_existing_atom/1with acasestatement to safelyconvert user-provided filter status strings to atoms, preventing a potential DoS
vulnerability.
web-ng/lib/serviceradar_web_ng_web/live/admin/edge_sites_live/index.ex [658-690]
[To ensure code accuracy, apply this suggestion manually]Suggestion importance[1-10]: 9
__
Why: The suggestion correctly identifies a security vulnerability (DoS) from using
String.to_existing_atom/1on user input and provides a robust fix using pattern matching.Use assign_new for template assigns
Replace
assign/3withassign_new/3to avoid overwriting existing assigns and usea multiline
~Hsigil for better readability.web-ng/lib/serviceradar_web_ng_web/live/alert_live/show.ex [192-196]
[To ensure code accuracy, apply this suggestion manually]Suggestion importance[1-10]: 2
__
Why: The suggestion to use
assign_newis valid for preventing accidental overwrites, but in this specific context wherevalue_textis derived directly fromvalue,assignis sufficient and clear. The change offers a minor improvement in robustness.Imported GitHub PR comment.
Original author: @qodo-code-review[bot]
Original URL: https://github.com/carverauto/serviceradar/pull/2242#issuecomment-3733974193
Original created: 2026-01-11T04:06:01Z
CI Feedback 🧐
A test triggered by this PR failed. Here is an AI-generated analysis of the failure:
Action: test-rust (rust/srql)
Failed stage: Run Tests [❌]
Failed test name: srql_api_queries
Failure summary:
The action failed because the Rust integration test
srql_api_queriesfailed while trying to connectto the remote PostgreSQL fixture.
- The test panicked in
rust/srql/tests/support/harness.rs:74:10with:
failed to acquire remote fixture lock: db error.- The underlying DB error shows the
connection was rejected by Postgres
pg_hba.conf:FATAL: pg_hba.conf rejects connection for host"10.42.68.65", user "srql_hydra", database "postgres", no encryption.- This indicates the CI
runner’s IP (or connection settings) is not allowed by the fixture’s
pg_hba.conf, and/or the serverrequires SSL but the client attempted an unencrypted connection (
no encryption).Relevant error logs: