bug: cant create stage new plugin #893

Closed
opened 2026-03-28 04:29:38 +00:00 by mfreeman451 · 0 comments
Owner

Imported from GitHub.

Original GitHub issue: #2567
Original author: @mfreeman451
Original URL: https://github.com/carverauto/serviceradar/issues/2567
Original created: 2026-01-28T21:59:11Z


Describe the bug

Tried to create/stage the hello wasm demo wasm plugin into ServiceRadar, copied in all of the normal assets like we see in tools/wasm-plugin-harness, throwing this error;

21:56:05.112 [error] GenServer #PID<0.100679.0> terminating
** (KeyError) key :plugins_base_path not found in:

    %{
      versions: [
        %ServiceRadar.Plugins.PluginPackage{
          id: "6334b16c-8d47-4c65-9e08-0c25038551b4",
          plugin_id: "hello-wasm",
          name: "Hello Wasm",
          version: "0.1.0",
          description: "TinyGo hello-world plugin for ServiceRadar",
          entrypoint: "run_check",
          runtime: "wasi-preview1",
          outputs: "serviceradar.plugin_result.v1",
          manifest: %{
            "capabilities" => ["get_config", "log", "submit_result"],
            "description" => "TinyGo hello-world plugin for ServiceRadar",
            "display_contract" => %{},
            "entrypoint" => "run_check",
            "id" => "hello-wasm",
            "name" => "Hello Wasm",
            "outputs" => "serviceradar.plugin_result.v1",
            "permissions" => %{
              "allowed_domains" => [],
              "allowed_networks" => [],
              "allowed_ports" => []
            },
            "resources" => %{
              "max_open_connections" => 0,
              "requested_cpu_ms" => 500,
              "requested_memory_mb" => 16
            },
            "runtime" => "wasi-preview1",
            "schema_version" => 1,
            "source" => %{
              "commit" => "local-build",
              "repo_url" => "https://example.invalid/serviceradar/hello-wasm"
            },
            "version" => "0.1.0"
          },
          config_schema: %{
            "properties" => %{
              "message" => %{
                "description" => "Optional message for logging",
                "type" => "string"
              }
            },
            "type" => "object"
          },
          display_contract: %{
            "schema_version" => 1,
            "widgets" => ["status_badge", "stat_card", "table", "markdown",
             "sparkline"]
          },
          wasm_object_key: nil,
          content_hash: nil,
          signature: %{},
          source_type: :upload,
          source_repo_url: nil,
          source_commit: nil,
          gpg_key_id: nil,
          gpg_verified_at: nil,
          status: :staged,
          approved_capabilities: [],
          approved_permissions: %{},
          approved_resources: %{},
          approved_by: nil,
          approved_at: nil,
          denied_reason: nil,
          inserted_at: ~U[2026-01-28 21:56:05.061389Z],
          updated_at: ~U[2026-01-28 21:56:05.061389Z],
          plugin: #Ash.NotLoaded<:relationship, field: :plugin>,
          assignments: #Ash.NotLoaded<:relationship, field: :assignments>,
          __meta__: #Ecto.Schema.Metadata<:loaded, "platform", "plugin_packages">
        }
      ],
      __changed__: nil,
      upload_errors: [],
      uploads: %{
        __phoenix_refs_to_names__: %{"phx-GI8Dzr_7x8zCQUGB" => :wasm_blob},
        wasm_blob: #Phoenix.LiveView.UploadConfig<
          name: :wasm_blob,
          max_entries: 1,
          max_file_size: 52428800,
          entries: [],
          accept: ".wasm",
          ref: "phx-GI8Dzr_7x8zCQUGB",
          errors: [],
          auto_upload?: false,
          progress_event: nil,
          writer: #Function<1.133653645/3 in Phoenix.LiveView.UploadConfig.build/3>,
          ...
        >
      },
      package: %ServiceRadar.Plugins.PluginPackage{
        id: "6334b16c-8d47-4c65-9e08-0c25038551b4",
        plugin_id: "hello-wasm",
        name: "Hello Wasm",
        version: "0.1.0",
        description: "TinyGo hello-world plugin for ServiceRadar",
        entrypoint: "run_check",
        runtime: "wasi-preview1",
        outputs: "serviceradar.plugin_result.v1",
        manifest: %{
          "capabilities" => ["get_config", "log", "submit_result"],
          "description" => "TinyGo hello-world plugin for ServiceRadar",
          "display_contract" => %{},
          "entrypoint" => "run_check",
          "id" => "hello-wasm",
          "name" => "Hello Wasm",
          "outputs" => "serviceradar.plugin_result.v1",
          "permissions" => %{
            "allowed_domains" => [],
            "allowed_networks" => [],
            "allowed_ports" => []
          },
          "resources" => %{
            "max_open_connections" => 0,
            "requested_cpu_ms" => 500,
            "requested_memory_mb" => 16
          },
          "runtime" => "wasi-preview1",
          "schema_version" => 1,
          "source" => %{
            "commit" => "local-build",
            "repo_url" => "https://example.invalid/serviceradar/hello-wasm"
          },
          "version" => "0.1.0"
        },
        config_schema: %{
          "properties" => %{
            "message" => %{
              "description" => "Optional message for logging",
              "type" => "string"
            }
          },
          "type" => "object"
        },
        display_contract: %{
          "schema_version" => 1,
          "widgets" => ["status_badge", "stat_card", "table", "markdown",
           "sparkline"]
        },
        wasm_object_key: "plugins/hello-wasm/0.1.0/6334b16c-8d47-4c65-9e08-0c25038551b4.wasm",
        content_hash: nil,
        signature: %{},
        source_type: :upload,
        source_repo_url: nil,
        source_commit: nil,
        gpg_key_id: nil,
        gpg_verified_at: nil,
        status: :staged,
        approved_capabilities: [],
        approved_permissions: %{},
        approved_resources: %{},
        approved_by: nil,
        approved_at: nil,
        denied_reason: nil,
        inserted_at: ~U[2026-01-28 21:56:05.061389Z],
        updated_at: ~U[2026-01-28 21:56:05.061389Z],
        plugin: #Ash.NotLoaded<:relationship, field: :plugin>,
        assignments: #Ash.NotLoaded<:relationship, field: :assignments>,
        __meta__: #Ecto.Schema.Metadata<:loaded, "platform", "plugin_packages">
      },
      agents: [
        %ServiceRadar.Infrastructure.Agent{
          uid: "k8s-agent",
          name: nil,
          type_id: 4,
          type: nil,
          uid_alt: nil,
          vendor_name: "ServiceRadar",
          version: "dev",
          policies: [],
          gateway_id: nil,
          device_uid: "sr:47564b95-7b8f-4751-99c2-eb63c20bc3c8",
          capabilities: ["icmp", "sweep", "snmp", "dusk", "mapper", "sync",
           "sysmon"],
          host: "10.0.2.13",
          port: nil,
          spiffe_identity: nil,
          status: :connected,
          is_healthy: true,
          first_seen_time: ~U[2026-01-28 20:13:28Z],
          last_seen_time: ~U[2026-01-28 21:53:59Z],
          created_time: ~U[2026-01-28 20:13:28Z],
          modified_time: ~U[2026-01-28 21:53:59Z],
          metadata: %{
            "domain" => "default",
            "gateway_id" => "gateway-platform",
            "partition_id" => "default",
            "source_ip" => "10.0.2.13"
          },
          config_source: nil,
          plugin_engine_max_memory_mb: nil,
          plugin_engine_max_cpu_ms: nil,
          plugin_engine_max_concurrent: nil,
          plugin_engine_max_open_connections: nil,
          type_name: #Ash.NotLoaded<:calculation, field: :type_name>,
          display_name: #Ash.NotLoaded<:calculation, field: :display_name>,
          is_online: #Ash.NotLoaded<:calculation, field: :is_online>,
          status_color: #Ash.NotLoaded<:calculation, field: :status_color>,
          status_label: #Ash.NotLoaded<:calculation, field: :status_label>,
          endpoint: #Ash.NotLoaded<:calculation, field: :endpoint>,
          gateway: #Ash.NotLoaded<:relationship, field: :gateway>,
          device: #Ash.NotLoaded<:relationship, field: :device>,
          checkers: #Ash.NotLoaded<:relationship, field: :checkers>,
          __meta__: #Ecto.Schema.Metadata<:loaded, "platform", "ocsf_agents">
        }
      ],
      assignments: [],
      download_url: "https://demo.serviceradar.cloud/api/plugin-packages/6334b16c-8d47-4c65-9e08-0c25038551b4/blob?token=eyJhY3QiOiJkb3dubG9hZCIsImV4cCI6MTc2OTYzODI2NSwiaWQiOiI2MzM0YjE2Yy04ZDQ3LTRjNjUtOWUwOC0wYzI1MDM4NTUxYjQiLCJrZXkiOiJwbHVn (truncated)
21:56:05.117 [error] an exception was raised:
    ** (KeyError) key :plugins_base_path not found in:

    %{
      versions: [
        %ServiceRadar.Plugins.PluginPackage{
          id: "6334b16c-8d47-4c65-9e08-0c25038551b4",
          plugin_id: "hello-wasm",
          name: "Hello Wasm",
          version: "0.1.0",
          description: "TinyGo hello-world plugin for ServiceRadar",
          entrypoint: "run_check",
          runtime: "wasi-preview1",
          outputs: "serviceradar.plugin_result.v1",
          manifest: %{
            "capabilities" => ["get_config", "log", "submit_result"],
            "description" => "TinyGo hello-world plugin for ServiceRadar",
            "display_contract" => %{},
            "entrypoint" => "run_check",
            "id" => "hello-wasm",
            "name" => "Hello Wasm",
            "outputs" => "serviceradar.plugin_result.v1",
            "permissions" => %{
              "allowed_domains" => [],
              "allowed_networks" => [],
              "allowed_ports" => []
            },
            "resources" => %{
              "max_open_connections" => 0,
              "requested_cpu_ms" => 500,
              "requested_memory_mb" => 16
            },
            "runtime" => "wasi-preview1",
            "schema_version" => 1,
            "source" => %{
              "commit" => "local-build",
              "repo_url" => "https://example.invalid/serviceradar/hello-wasm"
            },
            "version" => "0.1.0"
          },
          config_schema: %{
            "properties" => %{
              "message" => %{
                "description" => "Optional message for logging",
                "type" => "string"
              }
            },
            "type" => "object"
          },
          display_contract: %{
            "schema_version" => 1,
            "widgets" => ["status_badge", "stat_card", "table", "markdown",
             "sparkline"]
          },
          wasm_object_key: nil,
          content_hash: nil,
          signature: %{},
          source_type: :upload,
          source_repo_url: nil,
          source_commit: nil,
          gpg_key_id: nil,
          gpg_verified_at: nil,
          status: :staged,
          approved_capabilities: [],
          approved_permissions: %{},
          approved_resources: %{},
          approved_by: nil,
          approved_at: nil,
          denied_reason: nil,
          inserted_at: ~U[2026-01-28 21:56:05.061389Z],
          updated_at: ~U[2026-01-28 21:56:05.061389Z],
          plugin: #Ash.NotLoaded<:relationship, field: :plugin>,
          assignments: #Ash.NotLoaded<:relationship, field: :assignments>,
          __meta__: #Ecto.Schema.Metadata<:loaded, "platform", "plugin_packages">
        }
      ],
      __changed__: nil,
      upload_errors: [],
      uploads: %{
        __phoenix_refs_to_names__: %{"phx-GI8Dzr_7x8zCQUGB" => :wasm_blob},
        wasm_blob: #Phoenix.LiveView.UploadConfig<
          name: :wasm_blob,
          max_entries: 1,
          max_file_size: 52428800,
          entries: [],
          accept: ".wasm",
          ref: "phx-GI8Dzr_7x8zCQUGB",
          errors: [],
          auto_upload?: false,
          progress_event: nil,
          writer: #Function<1.133653645/3 in Phoenix.LiveView.UploadConfig.build/3>,
          ...
        >
      },
      package: %ServiceRadar.Plugins.PluginPackage{
        id: "6334b16c-8d47-4c65-9e08-0c25038551b4",
        plugin_id: "hello-wasm",
        name: "Hello Wasm",
        version: "0.1.0",
        description: "TinyGo hello-world plugin for ServiceRadar",
        entrypoint: "run_check",
        runtime: "wasi-preview1",
        outputs: "serviceradar.plugin_result.v1",
        manifest: %{
          "capabilities" => ["get_config", "log", "submit_result"],
          "description" => "TinyGo hello-world plugin for ServiceRadar",
          "display_contract" => %{},
          "entrypoint" => "run_check",
          "id" => "hello-wasm",
          "name" => "Hello Wasm",
          "outputs" => "serviceradar.plugin_result.v1",
          "permissions" => %{
            "allowed_domains" => [],
            "allowed_networks" => [],
            "allowed_ports" => []
          },
          "resources" => %{
            "max_open_connections" => 0,
            "requested_cpu_ms" => 500,
            "requested_memory_mb" => 16
          },
          "runtime" => "wasi-preview1",
          "schema_version" => 1,
          "source" => %{
            "commit" => "local-build",
            "repo_url" => "https://example.invalid/serviceradar/hello-wasm"
          },
          "version" => "0.1.0"
        },
        config_schema: %{
          "properties" => %{
            "message" => %{
              "description" => "Optional message for logging",
              "type" => "string"
            }
          },
          "type" => "object"
        },
        display_contract: %{
          "schema_version" => 1,
          "widgets" => ["status_badge", "stat_card", "table", "markdown",
           "sparkline"]
        },
        wasm_object_key: "plugins/hello-wasm/0.1.0/6334b16c-8d47-4c65-9e08-0c25038551b4.wasm",
        content_hash: nil,
        signature: %{},
        source_type: :upload,
        source_repo_url: nil,
        source_commit: nil,
        gpg_key_id: nil,
        gpg_verified_at: nil,
        status: :staged,
        approved_capabilities: [],
        approved_permissions: %{},
        approved_resources: %{},
        approved_by: nil,
        approved_at: nil,
        denied_reason: nil,
        inserted_at: ~U[2026-01-28 21:56:05.061389Z],
        updated_at: ~U[2026-01-28 21:56:05.061389Z],
        plugin: #Ash.NotLoaded<:relationship, field: :plugin>,
        assignments: #Ash.NotLoaded<:relationship, field: :assignments>,
        __meta__: #Ecto.Schema.Metadata<:loaded, "platform", "plugin_packages">
      },
      agents: [
        %ServiceRadar.Infrastructure.Agent{
          uid: "k8s-agent",
          name: nil,
          type_id: 4,
          type: nil,
          uid_alt: nil,
          vendor_name: "ServiceRadar",
          version: "dev",
          policies: [],
          gateway_id: nil,
          device_uid: "sr:47564b95-7b8f-4751-99c2-eb63c20bc3c8",
          capabilities: ["icmp", "sweep", "snmp", "dusk", "mapper", "sync",
           "sysmon"],
          host: "10.0.2.13",
          port: nil,
          spiffe_identity: nil,
          status: :connected,
          is_healthy: true,
          first_seen_time: ~U[2026-01-28 20:13:28Z],
          last_seen_time: ~U[2026-01-28 21:53:59Z],
          created_time: ~U[2026-01-28 20:13:28Z],
          modified_time: ~U[2026-01-28 21:53:59Z],
          metadata: %{
            "domain" => "default",
            "gateway_id" => "gateway-platform",
            "partition_id" => "default",
            "source_ip" => "10.0.2.13"
          },
          config_source: nil,
          plugin_engine_max_memory_mb: nil,
          plugin_engine_max_cpu_ms: nil,
          plugin_engine_max_concurrent: nil,
          plugin_engine_max_open_connections: nil,
          type_name: #Ash.NotLoaded<:calculation, field: :type_name>,
          display_name: #Ash.NotLoaded<:calculation, field: :display_name>,
          is_online: #Ash.NotLoaded<:calculation, field: :is_online>,
          status_color: #Ash.NotLoaded<:calculation, field: :status_color>,
          status_label: #Ash.NotLoaded<:calculation, field: :status_label>,
          endpoint: #Ash.NotLoaded<:calculation, field: :endpoint>,
          gateway: #Ash.NotLoaded<:relationship, field: :gateway>,
          device: #Ash.NotLoaded<:relationship, field: :device>,
          checkers: #Ash.NotLoaded<:relationship, field: :checkers>,
          __meta__: #Ecto.Schema.Metadata<:loaded, "platform", "ocsf_agents">
        }
      ],
      assignments: [],
      download_url: "https://demo.serviceradar.cloud/api/plugin-packages/6334b16c-8d47-4c65-9e08-0c25038551b4/blob?token=eyJhY3QiOiJkb3dubG9hZCIsImV4cCI6MTc2OTYzODI2NSwiaWQiOiI2MzM0YjE2Yy04ZDQ3LTRjNjUtOWUwOC0wYzI1MDM4NTUxYjQiLCJrZXkiOiJwbHVnaW5zL2hlb (truncated)
21:56:14.269 [info] Plug.SSL is redirecting GET / to https://demo.serviceradar.cloud with status 301
21:56:15.097 request_id=0beedcc6ea30027401548a208b2e455f [info] GET /settings/agents/plugins/6334b16c-8d47-4c65-9e08-0c25038551b4
21:56:15.137 request_id=0beedcc6ea30027401548a208b2e455f [info] Sent 500 in 40ms
21:56:15.140 request_id=0beedcc6ea30027401548a208b2e455f [error] ** (KeyError) key :plugins_base_path not found in:

    %{
      versions: [
        %ServiceRadar.Plugins.PluginPackage{
          id: "6334b16c-8d47-4c65-9e08-0c25038551b4",
          plugin_id: "hello-wasm",
          name: "Hello Wasm",
          version: "0.1.0",
          description: "TinyGo hello-world plugin for ServiceRadar",
          entrypoint: "run_check",
          runtime: "wasi-preview1",
          outputs: "serviceradar.plugin_result.v1",
          manifest: %{
            "capabilities" => ["get_config", "log", "submit_result"],
            "description" => "TinyGo hello-world plugin for ServiceRadar",
            "display_contract" => %{},
            "entrypoint" => "run_check",
            "id" => "hello-wasm",
            "name" => "Hello Wasm",
            "outputs" => "serviceradar.plugin_result.v1",
            "permissions" => %{
              "allowed_domains" => [],
              "allowed_networks" => [],
              "allowed_ports" => []
            },
            "resources" => %{
              "max_open_connections" => 0,
              "requested_cpu_ms" => 500,
              "requested_memory_mb" => 16
            },
            "runtime" => "wasi-preview1",
            "schema_version" => 1,
            "source" => %{
              "commit" => "local-build",
              "repo_url" => "https://example.invalid/serviceradar/hello-wasm"
            },
            "version" => "0.1.0"
          },
          config_schema: %{
            "properties" => %{
              "message" => %{
                "description" => "Optional message for logging",
                "type" => "string"
              }
            },
            "type" => "object"
          },
          display_contract: %{
            "schema_version" => 1,
            "widgets" => ["status_badge", "stat_card", "table", "markdown",
             "sparkline"]
          },
          wasm_object_key: "plugins/hello-wasm/0.1.0/6334b16c-8d47-4c65-9e08-0c25038551b4.wasm",
          content_hash: nil,
          signature: %{},
          source_type: :upload,
          source_repo_url: nil,
          source_commit: nil,
          gpg_key_id: nil,
          gpg_verified_at: nil,
          status: :staged,
          approved_capabilities: [],
          approved_permissions: %{},
          approved_resources: %{},
          approved_by: nil,
          approved_at: nil,
          denied_reason: nil,
          inserted_at: ~U[2026-01-28 21:56:05.061389Z],
          updated_at: ~U[2026-01-28 21:56:05.061389Z],
          plugin: #Ash.NotLoaded<:relationship, field: :plugin>,
          assignments: #Ash.NotLoaded<:relationship, field: :assignments>,
          __meta__: #Ecto.Schema.Metadata<:loaded, "platform", "plugin_packages">
        }
      ],
      __changed__: nil,
      upload_errors: [],
      uploads: %{
        __phoenix_refs_to_names__: %{"phx-GI8D0RXdmNNLpESB" => :wasm_blob},
        wasm_blob: #Phoenix.LiveView.UploadConfig<
          name: :wasm_blob,
          max_entries: 1,
          max_file_size: 52428800,
          entries: [],
          accept: ".wasm",
          ref: "phx-GI8D0RXdmNNLpESB",
          errors: [],
          auto_upload?: false,
          progress_event: nil,
          writer: #Function<1.133653645/3 in Phoenix.LiveView.UploadConfig.build/3>,
          ...
        >
      },
      package: %ServiceRadar.Plugins.PluginPackage{
        id: "6334b16c-8d47-4c65-9e08-0c25038551b4",
        plugin_id: "hello-wasm",
        name: "Hello Wasm",
        version: "0.1.0",
        description: "TinyGo hello-world plugin for ServiceRadar",
        entrypoint: "run_check",
        runtime: "wasi-preview1",
        outputs: "serviceradar.plugin_result.v1",
        manifest: %{
          "capabilities" => ["get_config", "log", "submit_result"],
          "description" => "TinyGo hello-world plugin for ServiceRadar",
          "display_contract" => %{},
          "entrypoint" => "run_check",
          "id" => "hello-wasm",
          "name" => "Hello Wasm",
          "outputs" => "serviceradar.plugin_result.v1",
          "permissions" => %{
            "allowed_domains" => [],
            "allowed_networks" => [],
            "allowed_ports" => []
          },
          "resources" => %{
            "max_open_connections" => 0,
            "requested_cpu_ms" => 500,
            "requested_memory_mb" => 16
          },
          "runtime" => "wasi-preview1",
          "schema_version" => 1,
          "source" => %{
            "commit" => "local-build",
            "repo_url" => "https://example.invalid/serviceradar/hello-wasm"
          },
          "version" => "0.1.0"
        },
        config_schema: %{
          "properties" => %{
            "message" => %{
              "description" => "Optional message for logging",
              "type" => "string"
            }
          },
          "type" => "object"
        },
        display_contract: %{
          "schema_version" => 1,
          "widgets" => ["status_badge", "stat_card", "table", "markdown",
           "sparkline"]
        },
        wasm_object_key: "plugins/hello-wasm/0.1.0/6334b16c-8d47-4c65-9e08-0c25038551b4.wasm",
        content_hash: nil,
        signature: %{},
        source_type: :upload,
        source_repo_url: nil,
        source_commit: nil,
        gpg_key_id: nil,
        gpg_verified_at: nil,
        status: :staged,
        approved_capabilities: [],
        approved_permissions: %{},
        approved_resources: %{},
        approved_by: nil,
        approved_at: nil,
        denied_reason: nil,
        inserted_at: ~U[2026-01-28 21:56:05.061389Z],
        updated_at: ~U[2026-01-28 21:56:05.061389Z],
        plugin: #Ash.NotLoaded<:relationship, field: :plugin>,
        assignments: #Ash.NotLoaded<:relationship, field: :assignments>,
        __meta__: #Ecto.Schema.Metadata<:loaded, "platform", "plugin_packages">
      },
      agents: [
        %ServiceRadar.Infrastructure.Agent{
          uid: "k8s-agent",
          name: nil,
          type_id: 4,
          type: nil,
          uid_alt: nil,
          vendor_name: "ServiceRadar",
          version: "dev",
          policies: [],
          gateway_id: nil,
          device_uid: "sr:47564b95-7b8f-4751-99c2-eb63c20bc3c8",
          capabilities: ["icmp", "sweep", "snmp", "dusk", "mapper", "sync",
           "sysmon"],
          host: "10.0.2.13",
          port: nil,
          spiffe_identity: nil,
          status: :connected,
          is_healthy: true,
          first_seen_time: ~U[2026-01-28 20:13:28Z],
          last_seen_time: ~U[2026-01-28 21:53:59Z],
          created_time: ~U[2026-01-28 20:13:28Z],
          modified_time: ~U[2026-01-28 21:53:59Z],
          metadata: %{
            "domain" => "default",
            "gateway_id" => "gateway-platform",
            "partition_id" => "default",
            "source_ip" => "10.0.2.13"
          },
          config_source: nil,
          plugin_engine_max_memory_mb: nil,
          plugin_engine_max_cpu_ms: nil,
          plugin_engine_max_concurrent: nil,
          plugin_engine_max_open_connections: nil,
          type_name: #Ash.NotLoaded<:calculation, field: :type_name>,
          display_name: #Ash.NotLoaded<:calculation, field: :display_name>,
          is_online: #Ash.NotLoaded<:calculation, field: :is_online>,
          status_color: #Ash.NotLoaded<:calculation, field: :status_color>,
          status_label: #Ash.NotLoaded<:calculation, field: :status_label>,
          endpoint: #Ash.NotLoaded<:calculation, field: :endpoint>,
          gateway: #Ash.NotLoaded<:relationship, field: :gateway>,
          device: #Ash.NotLoaded<:relationship, field: :device>,
          checkers: #Ash.NotLoaded<:relationship, field: :checkers>,
          __meta__: #Ecto.Schema.Metadata<:loaded, "platform", "ocsf_agents">
        }
      ],
      assignments: [],
      download_url: "https://demo.serviceradar.cloud/api/plugin-packages/6334b16c-8d47-4c65-9e08-0c25038551b4/blob?token=eyJhY3QiOiJkb3dubG9hZCIsImV4cCI6MTc2OTYzODI3NSwiaWQiOiI2MzM0YjE2Yy04ZDQ3LTRjNjUtOWUwOC0wYzI1M (truncated)

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

Imported from GitHub. Original GitHub issue: #2567 Original author: @mfreeman451 Original URL: https://github.com/carverauto/serviceradar/issues/2567 Original created: 2026-01-28T21:59:11Z --- **Describe the bug** Tried to create/stage the hello wasm demo wasm plugin into ServiceRadar, copied in all of the normal assets like we see in `tools/wasm-plugin-harness`, throwing this error; ``` 21:56:05.112 [error] GenServer #PID<0.100679.0> terminating ** (KeyError) key :plugins_base_path not found in: %{ versions: [ %ServiceRadar.Plugins.PluginPackage{ id: "6334b16c-8d47-4c65-9e08-0c25038551b4", plugin_id: "hello-wasm", name: "Hello Wasm", version: "0.1.0", description: "TinyGo hello-world plugin for ServiceRadar", entrypoint: "run_check", runtime: "wasi-preview1", outputs: "serviceradar.plugin_result.v1", manifest: %{ "capabilities" => ["get_config", "log", "submit_result"], "description" => "TinyGo hello-world plugin for ServiceRadar", "display_contract" => %{}, "entrypoint" => "run_check", "id" => "hello-wasm", "name" => "Hello Wasm", "outputs" => "serviceradar.plugin_result.v1", "permissions" => %{ "allowed_domains" => [], "allowed_networks" => [], "allowed_ports" => [] }, "resources" => %{ "max_open_connections" => 0, "requested_cpu_ms" => 500, "requested_memory_mb" => 16 }, "runtime" => "wasi-preview1", "schema_version" => 1, "source" => %{ "commit" => "local-build", "repo_url" => "https://example.invalid/serviceradar/hello-wasm" }, "version" => "0.1.0" }, config_schema: %{ "properties" => %{ "message" => %{ "description" => "Optional message for logging", "type" => "string" } }, "type" => "object" }, display_contract: %{ "schema_version" => 1, "widgets" => ["status_badge", "stat_card", "table", "markdown", "sparkline"] }, wasm_object_key: nil, content_hash: nil, signature: %{}, source_type: :upload, source_repo_url: nil, source_commit: nil, gpg_key_id: nil, gpg_verified_at: nil, status: :staged, approved_capabilities: [], approved_permissions: %{}, approved_resources: %{}, approved_by: nil, approved_at: nil, denied_reason: nil, inserted_at: ~U[2026-01-28 21:56:05.061389Z], updated_at: ~U[2026-01-28 21:56:05.061389Z], plugin: #Ash.NotLoaded<:relationship, field: :plugin>, assignments: #Ash.NotLoaded<:relationship, field: :assignments>, __meta__: #Ecto.Schema.Metadata<:loaded, "platform", "plugin_packages"> } ], __changed__: nil, upload_errors: [], uploads: %{ __phoenix_refs_to_names__: %{"phx-GI8Dzr_7x8zCQUGB" => :wasm_blob}, wasm_blob: #Phoenix.LiveView.UploadConfig< name: :wasm_blob, max_entries: 1, max_file_size: 52428800, entries: [], accept: ".wasm", ref: "phx-GI8Dzr_7x8zCQUGB", errors: [], auto_upload?: false, progress_event: nil, writer: #Function<1.133653645/3 in Phoenix.LiveView.UploadConfig.build/3>, ... > }, package: %ServiceRadar.Plugins.PluginPackage{ id: "6334b16c-8d47-4c65-9e08-0c25038551b4", plugin_id: "hello-wasm", name: "Hello Wasm", version: "0.1.0", description: "TinyGo hello-world plugin for ServiceRadar", entrypoint: "run_check", runtime: "wasi-preview1", outputs: "serviceradar.plugin_result.v1", manifest: %{ "capabilities" => ["get_config", "log", "submit_result"], "description" => "TinyGo hello-world plugin for ServiceRadar", "display_contract" => %{}, "entrypoint" => "run_check", "id" => "hello-wasm", "name" => "Hello Wasm", "outputs" => "serviceradar.plugin_result.v1", "permissions" => %{ "allowed_domains" => [], "allowed_networks" => [], "allowed_ports" => [] }, "resources" => %{ "max_open_connections" => 0, "requested_cpu_ms" => 500, "requested_memory_mb" => 16 }, "runtime" => "wasi-preview1", "schema_version" => 1, "source" => %{ "commit" => "local-build", "repo_url" => "https://example.invalid/serviceradar/hello-wasm" }, "version" => "0.1.0" }, config_schema: %{ "properties" => %{ "message" => %{ "description" => "Optional message for logging", "type" => "string" } }, "type" => "object" }, display_contract: %{ "schema_version" => 1, "widgets" => ["status_badge", "stat_card", "table", "markdown", "sparkline"] }, wasm_object_key: "plugins/hello-wasm/0.1.0/6334b16c-8d47-4c65-9e08-0c25038551b4.wasm", content_hash: nil, signature: %{}, source_type: :upload, source_repo_url: nil, source_commit: nil, gpg_key_id: nil, gpg_verified_at: nil, status: :staged, approved_capabilities: [], approved_permissions: %{}, approved_resources: %{}, approved_by: nil, approved_at: nil, denied_reason: nil, inserted_at: ~U[2026-01-28 21:56:05.061389Z], updated_at: ~U[2026-01-28 21:56:05.061389Z], plugin: #Ash.NotLoaded<:relationship, field: :plugin>, assignments: #Ash.NotLoaded<:relationship, field: :assignments>, __meta__: #Ecto.Schema.Metadata<:loaded, "platform", "plugin_packages"> }, agents: [ %ServiceRadar.Infrastructure.Agent{ uid: "k8s-agent", name: nil, type_id: 4, type: nil, uid_alt: nil, vendor_name: "ServiceRadar", version: "dev", policies: [], gateway_id: nil, device_uid: "sr:47564b95-7b8f-4751-99c2-eb63c20bc3c8", capabilities: ["icmp", "sweep", "snmp", "dusk", "mapper", "sync", "sysmon"], host: "10.0.2.13", port: nil, spiffe_identity: nil, status: :connected, is_healthy: true, first_seen_time: ~U[2026-01-28 20:13:28Z], last_seen_time: ~U[2026-01-28 21:53:59Z], created_time: ~U[2026-01-28 20:13:28Z], modified_time: ~U[2026-01-28 21:53:59Z], metadata: %{ "domain" => "default", "gateway_id" => "gateway-platform", "partition_id" => "default", "source_ip" => "10.0.2.13" }, config_source: nil, plugin_engine_max_memory_mb: nil, plugin_engine_max_cpu_ms: nil, plugin_engine_max_concurrent: nil, plugin_engine_max_open_connections: nil, type_name: #Ash.NotLoaded<:calculation, field: :type_name>, display_name: #Ash.NotLoaded<:calculation, field: :display_name>, is_online: #Ash.NotLoaded<:calculation, field: :is_online>, status_color: #Ash.NotLoaded<:calculation, field: :status_color>, status_label: #Ash.NotLoaded<:calculation, field: :status_label>, endpoint: #Ash.NotLoaded<:calculation, field: :endpoint>, gateway: #Ash.NotLoaded<:relationship, field: :gateway>, device: #Ash.NotLoaded<:relationship, field: :device>, checkers: #Ash.NotLoaded<:relationship, field: :checkers>, __meta__: #Ecto.Schema.Metadata<:loaded, "platform", "ocsf_agents"> } ], assignments: [], download_url: "https://demo.serviceradar.cloud/api/plugin-packages/6334b16c-8d47-4c65-9e08-0c25038551b4/blob?token=eyJhY3QiOiJkb3dubG9hZCIsImV4cCI6MTc2OTYzODI2NSwiaWQiOiI2MzM0YjE2Yy04ZDQ3LTRjNjUtOWUwOC0wYzI1MDM4NTUxYjQiLCJrZXkiOiJwbHVn (truncated) 21:56:05.117 [error] an exception was raised: ** (KeyError) key :plugins_base_path not found in: %{ versions: [ %ServiceRadar.Plugins.PluginPackage{ id: "6334b16c-8d47-4c65-9e08-0c25038551b4", plugin_id: "hello-wasm", name: "Hello Wasm", version: "0.1.0", description: "TinyGo hello-world plugin for ServiceRadar", entrypoint: "run_check", runtime: "wasi-preview1", outputs: "serviceradar.plugin_result.v1", manifest: %{ "capabilities" => ["get_config", "log", "submit_result"], "description" => "TinyGo hello-world plugin for ServiceRadar", "display_contract" => %{}, "entrypoint" => "run_check", "id" => "hello-wasm", "name" => "Hello Wasm", "outputs" => "serviceradar.plugin_result.v1", "permissions" => %{ "allowed_domains" => [], "allowed_networks" => [], "allowed_ports" => [] }, "resources" => %{ "max_open_connections" => 0, "requested_cpu_ms" => 500, "requested_memory_mb" => 16 }, "runtime" => "wasi-preview1", "schema_version" => 1, "source" => %{ "commit" => "local-build", "repo_url" => "https://example.invalid/serviceradar/hello-wasm" }, "version" => "0.1.0" }, config_schema: %{ "properties" => %{ "message" => %{ "description" => "Optional message for logging", "type" => "string" } }, "type" => "object" }, display_contract: %{ "schema_version" => 1, "widgets" => ["status_badge", "stat_card", "table", "markdown", "sparkline"] }, wasm_object_key: nil, content_hash: nil, signature: %{}, source_type: :upload, source_repo_url: nil, source_commit: nil, gpg_key_id: nil, gpg_verified_at: nil, status: :staged, approved_capabilities: [], approved_permissions: %{}, approved_resources: %{}, approved_by: nil, approved_at: nil, denied_reason: nil, inserted_at: ~U[2026-01-28 21:56:05.061389Z], updated_at: ~U[2026-01-28 21:56:05.061389Z], plugin: #Ash.NotLoaded<:relationship, field: :plugin>, assignments: #Ash.NotLoaded<:relationship, field: :assignments>, __meta__: #Ecto.Schema.Metadata<:loaded, "platform", "plugin_packages"> } ], __changed__: nil, upload_errors: [], uploads: %{ __phoenix_refs_to_names__: %{"phx-GI8Dzr_7x8zCQUGB" => :wasm_blob}, wasm_blob: #Phoenix.LiveView.UploadConfig< name: :wasm_blob, max_entries: 1, max_file_size: 52428800, entries: [], accept: ".wasm", ref: "phx-GI8Dzr_7x8zCQUGB", errors: [], auto_upload?: false, progress_event: nil, writer: #Function<1.133653645/3 in Phoenix.LiveView.UploadConfig.build/3>, ... > }, package: %ServiceRadar.Plugins.PluginPackage{ id: "6334b16c-8d47-4c65-9e08-0c25038551b4", plugin_id: "hello-wasm", name: "Hello Wasm", version: "0.1.0", description: "TinyGo hello-world plugin for ServiceRadar", entrypoint: "run_check", runtime: "wasi-preview1", outputs: "serviceradar.plugin_result.v1", manifest: %{ "capabilities" => ["get_config", "log", "submit_result"], "description" => "TinyGo hello-world plugin for ServiceRadar", "display_contract" => %{}, "entrypoint" => "run_check", "id" => "hello-wasm", "name" => "Hello Wasm", "outputs" => "serviceradar.plugin_result.v1", "permissions" => %{ "allowed_domains" => [], "allowed_networks" => [], "allowed_ports" => [] }, "resources" => %{ "max_open_connections" => 0, "requested_cpu_ms" => 500, "requested_memory_mb" => 16 }, "runtime" => "wasi-preview1", "schema_version" => 1, "source" => %{ "commit" => "local-build", "repo_url" => "https://example.invalid/serviceradar/hello-wasm" }, "version" => "0.1.0" }, config_schema: %{ "properties" => %{ "message" => %{ "description" => "Optional message for logging", "type" => "string" } }, "type" => "object" }, display_contract: %{ "schema_version" => 1, "widgets" => ["status_badge", "stat_card", "table", "markdown", "sparkline"] }, wasm_object_key: "plugins/hello-wasm/0.1.0/6334b16c-8d47-4c65-9e08-0c25038551b4.wasm", content_hash: nil, signature: %{}, source_type: :upload, source_repo_url: nil, source_commit: nil, gpg_key_id: nil, gpg_verified_at: nil, status: :staged, approved_capabilities: [], approved_permissions: %{}, approved_resources: %{}, approved_by: nil, approved_at: nil, denied_reason: nil, inserted_at: ~U[2026-01-28 21:56:05.061389Z], updated_at: ~U[2026-01-28 21:56:05.061389Z], plugin: #Ash.NotLoaded<:relationship, field: :plugin>, assignments: #Ash.NotLoaded<:relationship, field: :assignments>, __meta__: #Ecto.Schema.Metadata<:loaded, "platform", "plugin_packages"> }, agents: [ %ServiceRadar.Infrastructure.Agent{ uid: "k8s-agent", name: nil, type_id: 4, type: nil, uid_alt: nil, vendor_name: "ServiceRadar", version: "dev", policies: [], gateway_id: nil, device_uid: "sr:47564b95-7b8f-4751-99c2-eb63c20bc3c8", capabilities: ["icmp", "sweep", "snmp", "dusk", "mapper", "sync", "sysmon"], host: "10.0.2.13", port: nil, spiffe_identity: nil, status: :connected, is_healthy: true, first_seen_time: ~U[2026-01-28 20:13:28Z], last_seen_time: ~U[2026-01-28 21:53:59Z], created_time: ~U[2026-01-28 20:13:28Z], modified_time: ~U[2026-01-28 21:53:59Z], metadata: %{ "domain" => "default", "gateway_id" => "gateway-platform", "partition_id" => "default", "source_ip" => "10.0.2.13" }, config_source: nil, plugin_engine_max_memory_mb: nil, plugin_engine_max_cpu_ms: nil, plugin_engine_max_concurrent: nil, plugin_engine_max_open_connections: nil, type_name: #Ash.NotLoaded<:calculation, field: :type_name>, display_name: #Ash.NotLoaded<:calculation, field: :display_name>, is_online: #Ash.NotLoaded<:calculation, field: :is_online>, status_color: #Ash.NotLoaded<:calculation, field: :status_color>, status_label: #Ash.NotLoaded<:calculation, field: :status_label>, endpoint: #Ash.NotLoaded<:calculation, field: :endpoint>, gateway: #Ash.NotLoaded<:relationship, field: :gateway>, device: #Ash.NotLoaded<:relationship, field: :device>, checkers: #Ash.NotLoaded<:relationship, field: :checkers>, __meta__: #Ecto.Schema.Metadata<:loaded, "platform", "ocsf_agents"> } ], assignments: [], download_url: "https://demo.serviceradar.cloud/api/plugin-packages/6334b16c-8d47-4c65-9e08-0c25038551b4/blob?token=eyJhY3QiOiJkb3dubG9hZCIsImV4cCI6MTc2OTYzODI2NSwiaWQiOiI2MzM0YjE2Yy04ZDQ3LTRjNjUtOWUwOC0wYzI1MDM4NTUxYjQiLCJrZXkiOiJwbHVnaW5zL2hlb (truncated) 21:56:14.269 [info] Plug.SSL is redirecting GET / to https://demo.serviceradar.cloud with status 301 21:56:15.097 request_id=0beedcc6ea30027401548a208b2e455f [info] GET /settings/agents/plugins/6334b16c-8d47-4c65-9e08-0c25038551b4 21:56:15.137 request_id=0beedcc6ea30027401548a208b2e455f [info] Sent 500 in 40ms 21:56:15.140 request_id=0beedcc6ea30027401548a208b2e455f [error] ** (KeyError) key :plugins_base_path not found in: %{ versions: [ %ServiceRadar.Plugins.PluginPackage{ id: "6334b16c-8d47-4c65-9e08-0c25038551b4", plugin_id: "hello-wasm", name: "Hello Wasm", version: "0.1.0", description: "TinyGo hello-world plugin for ServiceRadar", entrypoint: "run_check", runtime: "wasi-preview1", outputs: "serviceradar.plugin_result.v1", manifest: %{ "capabilities" => ["get_config", "log", "submit_result"], "description" => "TinyGo hello-world plugin for ServiceRadar", "display_contract" => %{}, "entrypoint" => "run_check", "id" => "hello-wasm", "name" => "Hello Wasm", "outputs" => "serviceradar.plugin_result.v1", "permissions" => %{ "allowed_domains" => [], "allowed_networks" => [], "allowed_ports" => [] }, "resources" => %{ "max_open_connections" => 0, "requested_cpu_ms" => 500, "requested_memory_mb" => 16 }, "runtime" => "wasi-preview1", "schema_version" => 1, "source" => %{ "commit" => "local-build", "repo_url" => "https://example.invalid/serviceradar/hello-wasm" }, "version" => "0.1.0" }, config_schema: %{ "properties" => %{ "message" => %{ "description" => "Optional message for logging", "type" => "string" } }, "type" => "object" }, display_contract: %{ "schema_version" => 1, "widgets" => ["status_badge", "stat_card", "table", "markdown", "sparkline"] }, wasm_object_key: "plugins/hello-wasm/0.1.0/6334b16c-8d47-4c65-9e08-0c25038551b4.wasm", content_hash: nil, signature: %{}, source_type: :upload, source_repo_url: nil, source_commit: nil, gpg_key_id: nil, gpg_verified_at: nil, status: :staged, approved_capabilities: [], approved_permissions: %{}, approved_resources: %{}, approved_by: nil, approved_at: nil, denied_reason: nil, inserted_at: ~U[2026-01-28 21:56:05.061389Z], updated_at: ~U[2026-01-28 21:56:05.061389Z], plugin: #Ash.NotLoaded<:relationship, field: :plugin>, assignments: #Ash.NotLoaded<:relationship, field: :assignments>, __meta__: #Ecto.Schema.Metadata<:loaded, "platform", "plugin_packages"> } ], __changed__: nil, upload_errors: [], uploads: %{ __phoenix_refs_to_names__: %{"phx-GI8D0RXdmNNLpESB" => :wasm_blob}, wasm_blob: #Phoenix.LiveView.UploadConfig< name: :wasm_blob, max_entries: 1, max_file_size: 52428800, entries: [], accept: ".wasm", ref: "phx-GI8D0RXdmNNLpESB", errors: [], auto_upload?: false, progress_event: nil, writer: #Function<1.133653645/3 in Phoenix.LiveView.UploadConfig.build/3>, ... > }, package: %ServiceRadar.Plugins.PluginPackage{ id: "6334b16c-8d47-4c65-9e08-0c25038551b4", plugin_id: "hello-wasm", name: "Hello Wasm", version: "0.1.0", description: "TinyGo hello-world plugin for ServiceRadar", entrypoint: "run_check", runtime: "wasi-preview1", outputs: "serviceradar.plugin_result.v1", manifest: %{ "capabilities" => ["get_config", "log", "submit_result"], "description" => "TinyGo hello-world plugin for ServiceRadar", "display_contract" => %{}, "entrypoint" => "run_check", "id" => "hello-wasm", "name" => "Hello Wasm", "outputs" => "serviceradar.plugin_result.v1", "permissions" => %{ "allowed_domains" => [], "allowed_networks" => [], "allowed_ports" => [] }, "resources" => %{ "max_open_connections" => 0, "requested_cpu_ms" => 500, "requested_memory_mb" => 16 }, "runtime" => "wasi-preview1", "schema_version" => 1, "source" => %{ "commit" => "local-build", "repo_url" => "https://example.invalid/serviceradar/hello-wasm" }, "version" => "0.1.0" }, config_schema: %{ "properties" => %{ "message" => %{ "description" => "Optional message for logging", "type" => "string" } }, "type" => "object" }, display_contract: %{ "schema_version" => 1, "widgets" => ["status_badge", "stat_card", "table", "markdown", "sparkline"] }, wasm_object_key: "plugins/hello-wasm/0.1.0/6334b16c-8d47-4c65-9e08-0c25038551b4.wasm", content_hash: nil, signature: %{}, source_type: :upload, source_repo_url: nil, source_commit: nil, gpg_key_id: nil, gpg_verified_at: nil, status: :staged, approved_capabilities: [], approved_permissions: %{}, approved_resources: %{}, approved_by: nil, approved_at: nil, denied_reason: nil, inserted_at: ~U[2026-01-28 21:56:05.061389Z], updated_at: ~U[2026-01-28 21:56:05.061389Z], plugin: #Ash.NotLoaded<:relationship, field: :plugin>, assignments: #Ash.NotLoaded<:relationship, field: :assignments>, __meta__: #Ecto.Schema.Metadata<:loaded, "platform", "plugin_packages"> }, agents: [ %ServiceRadar.Infrastructure.Agent{ uid: "k8s-agent", name: nil, type_id: 4, type: nil, uid_alt: nil, vendor_name: "ServiceRadar", version: "dev", policies: [], gateway_id: nil, device_uid: "sr:47564b95-7b8f-4751-99c2-eb63c20bc3c8", capabilities: ["icmp", "sweep", "snmp", "dusk", "mapper", "sync", "sysmon"], host: "10.0.2.13", port: nil, spiffe_identity: nil, status: :connected, is_healthy: true, first_seen_time: ~U[2026-01-28 20:13:28Z], last_seen_time: ~U[2026-01-28 21:53:59Z], created_time: ~U[2026-01-28 20:13:28Z], modified_time: ~U[2026-01-28 21:53:59Z], metadata: %{ "domain" => "default", "gateway_id" => "gateway-platform", "partition_id" => "default", "source_ip" => "10.0.2.13" }, config_source: nil, plugin_engine_max_memory_mb: nil, plugin_engine_max_cpu_ms: nil, plugin_engine_max_concurrent: nil, plugin_engine_max_open_connections: nil, type_name: #Ash.NotLoaded<:calculation, field: :type_name>, display_name: #Ash.NotLoaded<:calculation, field: :display_name>, is_online: #Ash.NotLoaded<:calculation, field: :is_online>, status_color: #Ash.NotLoaded<:calculation, field: :status_color>, status_label: #Ash.NotLoaded<:calculation, field: :status_label>, endpoint: #Ash.NotLoaded<:calculation, field: :endpoint>, gateway: #Ash.NotLoaded<:relationship, field: :gateway>, device: #Ash.NotLoaded<:relationship, field: :device>, checkers: #Ash.NotLoaded<:relationship, field: :checkers>, __meta__: #Ecto.Schema.Metadata<:loaded, "platform", "ocsf_agents"> } ], assignments: [], download_url: "https://demo.serviceradar.cloud/api/plugin-packages/6334b16c-8d47-4c65-9e08-0c25038551b4/blob?token=eyJhY3QiOiJkb3dubG9hZCIsImV4cCI6MTc2OTYzODI3NSwiaWQiOiI2MzM0YjE2Yy04ZDQ3LTRjNjUtOWUwOC0wYzI1M (truncated) ``` **To Reproduce** Steps to reproduce the behavior: 1. Go to '...' 2. Click on '....' 3. Scroll down to '....' 4. See error **Expected behavior** A clear and concise description of what you expected to happen. **Screenshots** If applicable, add screenshots to help explain your problem. **Desktop (please complete the following information):** - OS: [e.g. iOS] - Browser [e.g. chrome, safari] - Version [e.g. 22] **Smartphone (please complete the following information):** - Device: [e.g. iPhone6] - OS: [e.g. iOS8.1] - Browser [e.g. stock browser, safari] - Version [e.g. 22] **Additional context** Add any other context about the problem here.
mfreeman451 added this to the 1.1.0 milestone 2026-03-28 04:29:38 +00:00
mfreeman451 2026-03-28 04:29:38 +00:00
Sign in to join this conversation.
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#893
No description provided.