feat: add ward pkg brew audited brew wrapper at parity with coily #53
No reviewers
Labels
No labels
burndown-2026-06
pressure-test
sunday-sprint
coherence-core
consult
headless
interactive
P0
P1
P2
P3
P4
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
coilyco-flight-deck/ward!53
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/pkg-brew"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What
Adds a
ward pkggroup with abrewsubcommand at full parity withcoily pkg brew(coilycmd/coily/brew.go). Ward-gated board repos now have a native audited brew path instead of routing package management back to coily.Why
Ward's own bare-
brewdeny hint pointed atcoily brew ..., coupling public ward-gated repos to coily, which public contributors don't have. The cli-guard reflow (cli-guard#74) moved the "ward never grows ops verbs" constraint to the futureseedtemplate, so ward is now the right home for an audited package wrapper.How
cmd/ward/pkg_brew.go- the brew wrapper ported from coily: brew-argv-shaped single entry point; formula/tap mutations default to primary-org taps with--allow-untappedopt-out; touch-everything verbs gated; read-only verbs andbrew bundlepass through. Audit rowspkg.brew.*.cmd/ward/runner.go- a minimal wardRunner(shell + audit writer), built lazily inside the pkg action so lean verbs (hook,version,exec) never touch the audit directory. Reuses cli-guardverb/audit/egress/exitcode/shell/config- no coily import.cmd/ward/pkg.go- thepkggroup;pkg_brew_test.go- coily's brew tests ported (split-args, classify, tap-scope, shape).brewdeny-recovery hint to offer the ward-native path; README + FEATURES.Verification
go build/go vet/gofmtclean; golangci-lint v2.12.2: 0 issues; fullgo test ./...green.ward pkg brew bundle checkshelled to brew against a real Brewfile and returned the correct unmet-deps result, writing an audit row.Follow-ups (out of scope)
otel-a2a-relay-ansible-debugboard repo, currently on the interimcoily pkg brew bundle.closes #52
ward pkg brewaudited brew wrapper at parity with coily