Proven
Reference/Adapter interfaces

Tool adapter

A deterministic tool whose run is evidence.

This is the Go interface, with its comments, as go doc prints it.

package tool // import "github.com/saphan-ai/proven/internal/tool"

type Adapter interface {
	// ID is the tool's stable name, for example "go-race".
	ID() string
	// Version is the tool's version when the adapter knows it.
	// Empty means the runner records "unknown" rather than guessing.
	Version() string
	// Applies reports whether the tool looks at these changed paths.
	Applies(paths []string) bool
	// Argv is the command Proven runs, with no shell (ADR-0025).
	// A non-empty reason means there is no command and nothing is started.
	Argv(paths []string) (argv []string, reason string)
	// Read classifies one side's output. It is called only after that side ran.
	Read(output string) Reading
}
    Adapter is one deterministic tool (ADR-0040). The runner compares the two
    sides. The adapter does not.

func ByID(id string) (Adapter, bool)