Skip to content

feat(release): publish a Homebrew formula to vyncint/homebrew-tap - #10

Merged
vyncint merged 1 commit into
mainfrom
feat/homebrew-formula
Sep 7, 2026
Merged

feat(release): publish a Homebrew formula to vyncint/homebrew-tap#10
vyncint merged 1 commit into
mainfrom
feat/homebrew-formula

Conversation

@vyncint

@vyncint vyncint commented Sep 7, 2026

Copy link
Copy Markdown
Owner

What and why

brew install vyncint/tap/oxidelake — same setup as mossaic. binaries.yml gains a formula job (after the four platform archives are attached) that regenerates Formula/oxidelake.rb in vyncint/homebrew-tap from the uploaded .sha256 files, so the formula cannot describe an archive that was never built. It is generated, not hand-edited: a hand-edit in the tap is overwritten by the next release, silently.

Best-effort by design: it needs the HOMEBREW_TAP_TOKEN secret (fine-grained PAT, contents: write on the tap only, passed by name — not secrets: inherit). Without it the job posts a notice and exits clean; the tap keeps what it has. A formula one version behind is a smaller problem than a release that fails after the crates are on crates.io.

The formula's test do generates a 100-row table with oxide gen-data and runs SELECT count(*) through oxide sql, so brew test exercises the embedded engine rather than only --version.

Also: README Install leads with the brew line; docs/RELEASING.md documents the secret and how to refresh the formula for a tag whose release already ran (gh workflow run binaries.yml --ref main -f tag=vX.Y.Z — archives already on the release are left alone). The tap's README already lists oxidelake (pushed separately).

How it was verified

  • zizmor --persona pedantic on both workflows: no findings (the tap checkout's persist-credentials: true carries an explicit zizmor: ignore[artipacked], as in mossaic — pushing back is that job's whole business and the credential is scoped to one repository).

  • The generator is mossaic's, byte-for-byte in structure, with oxidelake's names, license (Apache-2.0), binaries and test; mossaic's output passes brew audit --strict in the tap.

  • First real run: after merge and once HOMEBREW_TAP_TOKEN is set, gh workflow run binaries.yml --ref main -f tag=v0.1.0 produces the 0.1.0 formula; brew install vyncint/tap/oxidelake && brew test oxidelake on a Mac closes the loop.

  • make gate lanes relevant to this change (release-scripts, zizmor) are green locally

  • tests — CI YAML, n/a

  • GPU paths — n/a

Checklist

  • STATUS.md — unchanged
  • CHANGELOG.md — no user-visible change to the crates; install docs updated in README
  • No AI attribution in any commit

`brew install vyncint/tap/oxidelake`, the way mossaic installs. The
binaries workflow gains a `formula` job that regenerates
Formula/oxidelake.rb in the tap from the `.sha256` files the platform
matrix uploaded, so the formula can never describe an archive that was
not built. Generated rather than hand-edited: a hand-edit in the tap is
overwritten by the next release.

Best-effort by design. It needs HOMEBREW_TAP_TOKEN (a PAT with
contents:write on the tap and nothing else, passed by name rather than
`secrets: inherit`); without it the job says so and exits clean, and the
tap keeps the previous version. The formula's test generates a table and
runs a query, so `brew test` exercises the embedded engine, not only
`--version`.

Signed-off-by: Vyncint Ng <115854244+vyncint@users.noreply.github.com>
@vyncint
vyncint merged commit 764942b into main Sep 7, 2026
12 checks passed
@vyncint
vyncint deleted the feat/homebrew-formula branch September 7, 2026 00:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant