Files
dev/hanzo.yml
T
zeekayandHanzo Dev 6c7c3d3af4 release: one job on the Mac runner ships all five targets
The GitHub Actions lane was dropped and nothing replaced it, so v0.6.95 was
tagged and never published; npm and every installer still hand out 0.6.94.
The reason given — no runner for four of the five targets — is not true of a
Mac: it builds darwin natively, both linux-musl through cargo-zigbuild and
windows-msvc through cargo-xwin, all verified from this machine. So the
release is .hanzo/workflows/release.yml on the dbc-metal host runner, one
job, every push to main: build, GitHub Release + forge release, npm, Homebrew,
then the bump commit and tag. hanzo_identity guards the new file.

Two things found while proving it end to end:

- `dev login` on the Hanzo path died on a Cloudflare 502 page mid-poll —
  "unexpected token response: <!DOCTYPE html>". A body that is not an OAuth
  error is the edge, not the issuer; keep polling and let the device code's
  lifetime end it.
- The troubleshooting link in agent_tool still pointed at just-every/code.

Merges the forge's 0faa6fe so both remotes share one history; the blob-size
gate it ported into hanzo.yml stays.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-16 14:51:31 -07:00

61 lines
2.9 KiB
YAML

# hanzoai/dev — the `dev` CLI (Rust workspace under code-rs/: core, tui, exec,
# app-server, mcp client/server, and ~30 more crates).
#
# Gate only: no image, nothing to deploy. The release — five per-platform
# binaries, npm, Homebrew — is .hanzo/workflows/release.yml, one job on the
# macOS host runner.
#
# THE GATE IS THE COMPILE, because for this repo nothing else is. There is no
# meaningful lint-only proxy: the workspace is where the product lives, and a
# type error in core/ is invisible to the root `prettier --check *.json *.md`
# that is the only thing package.json offers.
#
# `cargo check`, not `cargo build`: it runs the full front end of the compiler
# over every crate in the workspace — resolution, typeck, borrowck — and skips
# only codegen and linking. That catches every break a `build` would, at roughly
# a third of the cost, on a fleet of ten shared runners.
#
# --locked so Cargo.lock is a fact rather than a suggestion: an out-of-date lock
# fails here instead of silently resolving to versions no release will ever use.
#
# The toolchain is installed by this gate. hanzoai/ci provisions Rust only when
# a Cargo.toml sits at the repo ROOT, and this workspace lives one directory
# down — so without these three lines the gate dies at `cargo: command not
# found` (exit 127) and never reads a single crate. --default-toolchain none
# leaves the choice to code-rs/rust-toolchain.toml, which pins 1.90.0.
test:
# Cheap, and first, so a 300 KB blob fails in seconds rather than after the
# workspace compiles. This is .github/workflows/blob-size-policy.yml, which
# the fork added deliberately and which the canonical lane would otherwise
# have dropped on the floor.
#
# The base is computed here instead of read from a PR event: the old workflow
# took HEAD^1/HEAD^2 off GitHub's synthetic merge commit, which only exists
# for a pull_request run. merge-base against origin/main is the same question
# asked in a way that has an answer on a push too — where it resolves to HEAD
# and the check is a no-op, which is correct, since main's blobs already
# passed on the way in.
#
# The allowlist lives at .github/blob-size-allowlist.txt and stays there;
# only .github/workflows went away.
- name: blob-size
run: |
set -euo pipefail
git fetch --quiet --unshallow origin main 2>/dev/null || git fetch --quiet origin main
base=$(git merge-base origin/main HEAD)
python3 scripts/check_blob_size.py \
--base "$base" --head HEAD \
--max-bytes 512000 \
--allowlist .github/blob-size-allowlist.txt
- name: cargo-check
run: |
set -euo pipefail
if ! command -v cargo >/dev/null 2>&1; then
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs \
| sh -s -- -y --profile minimal --default-toolchain none
fi
export PATH="$HOME/.cargo/bin:$PATH"
cd code-rs
cargo check --workspace --locked