gastownhall/beads · error

dbproxy: unverified-process inspection is not implemented on

Error message

dbproxy: unverified-process inspection is not implemented on %s

What it means

errUnverifiedUnsupported is a sentinel returned by every unverified-process operation on platforms with no implementation (only darwin, linux, windows are implemented). It mirrors procid.ErrUnsupported: instead of guessing a PID's identity on an unknown GOOS, the force-stop machinery fails cleanly. Callers can detect it with errors.Is.

Source

Thrown at internal/storage/dbproxy/proxy/unverified_process_unsupported.go:13

//go:build !linux && !darwin && !windows

package proxy

import (
	"fmt"
	"runtime"
)

// errUnverifiedUnsupported mirrors procid.ErrUnsupported for the force-stop
// path: on platforms with no process-inspection implementation the proxy
// machinery refuses cleanly rather than guessing at a PID's identity.
var errUnverifiedUnsupported = fmt.Errorf(
	"dbproxy: unverified-process inspection is not implemented on %s", runtime.GOOS)

type unverifiedProcess struct{}

func openUnverifiedProcess(pid int) (proc *unverifiedProcess, gone bool, err error) {
	return nil, false, errUnverifiedUnsupported
}

func (p *unverifiedProcess) executableBasename() (basename string, gone bool, err error) {
	return "", false, errUnverifiedUnsupported
}

func (p *unverifiedProcess) commandLineContains(needle string) (matched bool, gone bool, err error) {
	return false, false, errUnverifiedUnsupported
}

func (p *unverifiedProcess) kill() (gone bool, err error) {
	return false, errUnverifiedUnsupported

View on GitHub (pinned to 71377f2769)

Solutions

  1. Run bd on a supported platform (darwin, linux, or windows) for daemon stop operations.
  2. Manually kill the daemon PID and remove the pidfile when on an unsupported platform.
  3. File/await an upstream port of unverified_process_<goos>.go for your platform.
  4. Guard automation to skip dbproxy force-stop on unsupported GOOS values (runtime.GOOS check).

Example fix

// before: force-stop on freebsd
if runtime.GOOS == "freebsd" { proxy.Stop() }
// after
goos := runtime.GOOS
if goos == "darwin" || goos == "linux" || goos == "windows" {
    proxy.Stop()
} else {
    // manual cleanup: kill recorded pid, remove pidfile
}
Defensive patterns

Strategy: fallback

Validate before calling

switch runtime.GOOS {
case "darwin", "linux", "windows":
    // unverified-process force-stop supported
default:
    // unsupported: plan manual pidfile cleanup instead
}

Try / catch

proc, gone, err := openUnverifiedProcess(pid)
if err != nil {
    if errors.Is(err, errUnverifiedUnsupported) {
        // fall back to manual cleanup: read pidfile, verify PID, kill by hand
        return manualCleanup(pidfilePath)
    }
    return err
}

Prevention

When it happens

Trigger: openUnverifiedProcess / executableBasename / commandLineContains / kill / exited are invoked on a GOOS without a build-tagged implementation, e.g. building the proxy force-stop path for freebsd, openbsd, or plan9.

Common situations: Cross-compiling bd for a niche platform and then triggering daemon stop/cleanup; running in an environment where an unsupported GOOS was assumed to work; CI matrices testing unimplemented platforms.

Related errors


AI-assisted analysis of gastownhall/beads@71377f2769 (2026-08-30). Data as JSON: /api/errors/ee4d5fb8f2605a29. Report an issue: GitHub.