SELECT
  p.pid,
  p.cmdline,
  p.path,
  mnt_namespace,
  p.cwd,
  p.on_disk,
  p.state,
  pp.on_disk AS parent_on_disk,
  pp.path AS parent_path,
  pp.cmdline AS parent_cmdline,
  pp.cwd AS parent_cwd,
  ph.sha256 AS parent_sha256
FROM
  processes p
  LEFT JOIN process_namespaces ON p.pid = process_namespaces.pid
  LEFT JOIN processes pp ON p.parent = pp.pid
  LEFT JOIN hash ph ON pp.path = ph.path
WHERE
  p.on_disk != 1
  AND p.path != ""
  -- use osquery as the reference mount namespace
  AND mnt_namespace IN (
    SELECT DISTINCT
      (mnt_namespace)
    FROM
      process_namespaces
      JOIN processes ON processes.pid = process_namespaces.pid
    WHERE
      processes.name IN ('osqueryi', 'osqueryd')
  )
  -- Persistent apps that are updated often
  AND p.path NOT IN (
    '/usr/lib/gnome-shell-calendar-server',
    "/opt/google/chrome/chrome_crashpad_handler",
    "/opt/google/chrome/chrome",
    "/opt/google/chrome/nacl_helper",
    "/usr/bin/containerd",
    "/usr/bin/dbus-broker-launch",
    "/usr/bin/dbus-broker",
    "/usr/bin/fusermount3",
    "/usr/bin/gjs-console",
    "/usr/bin/gnome-software",
    "/usr/bin/python3.10",
    "/usr/bin/gnome-shell",
    "/usr/bin/kded5",
    "/usr/bin/pipewire",
    "/usr/bin/pipewire-pulse",
    "/usr/bin/tailscaled",
    "/usr/bin/wireplumber",
    "/usr/lib/electron19/electron",
    "/usr/libexec/gnome-shell-calendar-server"
  )
  -- AppImage
  AND p.path NOT LIKE "/tmp/.mount_%/%"
  AND p.path NOT LIKE "/Users/%/%/%.test"
