Pulse/internal/servicediscovery
rcourtman 2b24c375e0
Some checks are pending
Build and Test / Secret Scan (push) Waiting to run
Build and Test / Frontend & Backend (push) Waiting to run
Abstain instead of fabricating discovery when commands can't run
When a deep scan was attempted for a workload (container/VM) but produced no
command output — e.g. the host agent rejects exec — the AI analyzer was still
asked to identify the service from metadata alone. It confabulated confident,
false identities: an ESPHome LXC and an influxdb-telegraf LXC were both
"identified" as Pi-hole at 0.95 confidence, with invented facts carrying
fabricated command sources (source: "pihole -v" for a command that never ran)
and a docker exec CLI for an LXC.

When a command scan was attempted for a command-dependent resource type but
yielded nothing, abstain: skip the analyzer entirely and return a not-determined
result (no service, no facts, zero confidence) with guidance to enable Pulse
Commands. Host agents are unaffected (identified from their own metadata), and
deployments without command scanning keep the metadata-only path. Abstaining
also avoids a wasted model call.

Verified live: re-running discovery on the esphome LXC now returns an empty,
zero-confidence result with the correct container CLI instead of fabricated
Pi-hole facts. Adds a regression test.
2026-06-05 09:57:57 +01:00
..
commands.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
commands_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
deep_scanner.go Route hostname lookups through canonical equivalence 2026-04-21 22:47:23 +01:00
deep_scanner_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
fingerprint.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
formatters.go Implement Discovery observed context UX 2026-05-20 13:21:55 +01:00
formatters_test.go Implement Discovery observed context UX 2026-05-20 13:21:55 +01:00
readiness.go Add discovery readiness to Assistant context 2026-06-04 21:56:36 +01:00
readiness_test.go Add discovery readiness to Assistant context 2026-06-04 21:56:36 +01:00
service.go Abstain instead of fabricating discovery when commands can't run 2026-06-05 09:57:57 +01:00
service_identity.go Make workload discovery repair known service results 2026-06-05 09:21:53 +01:00
service_test.go Abstain instead of fabricating discovery when commands can't run 2026-06-05 09:57:57 +01:00
store.go Remove 198 unreachable Go functions 2026-06-03 12:29:37 +01:00
store_test.go Remove 198 unreachable Go functions 2026-06-03 12:29:37 +01:00
tools_adapter.go Implement Discovery observed context UX 2026-05-20 13:21:55 +01:00
tools_adapter_test.go Implement Discovery observed context UX 2026-05-20 13:21:55 +01:00
types.go Harden Discovery command-scan gating 2026-05-20 12:40:04 +01:00
types_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
url_suggestion.go Make workload discovery repair known service results 2026-06-05 09:21:53 +01:00
url_suggestion_test.go Make workload discovery repair known service results 2026-06-05 09:21:53 +01:00