ADR-022: Tap-Qualified Homebrew Formula Installs

Status

Accepted

Related: ADR-021 (unrelated); tracked in issue #251.

Date

2026-09-13

Context

stamp install nklmilojevic/sofka/sofka -m brew was rejected before brew ran: validPkgNameRegex disallows /, and brew’s package validation routed through it, even though brew’s own tap validation already tolerated slashes.

Homebrew 6.0 introduced tap trust: non-official taps must be trusted before Homebrew evaluates their Ruby. Crucially, the documented model is that installing a fully qualified name (brew install owner/tap/formula) trusts only that item and auto-taps the tap — no separate brew trust is needed. Whole-tap trust (brew trust owner/tap) is the broader alternative.

Two further findings: stamp tap did not record the tap in the manifest (unlike stamp repo add), and its error was double-wrapped.

Decision

Support tap-qualified formulae for brew only, mirroring brew’s behavior.

Alternatives Considered

Track the short name and record the tap

Normalize qualified↔basename in presence checks

Reorder AddRepo to trust before/independently of brew tap

Support tap-qualified casks in the same change

Consequences