Files
zooqueen 04a818ba12 ci: take the reusable that reads the lock instead of hunting a tag
v1.0.49's client lane decided check-vs-move from `github.event_name`, which
git.hanzo.ai renders as `workflow_call` inside every reusable, so this repo's
pushes ran as MOVEs and went looking for hanzoai/cloud's newest tag. That tag
is v1.801.507, which is not on cloud's main and carries no openapi.yaml, so the
fetch 404'd and took the job with it.

v1.0.54 asks the payload instead: with none, the ref is the one .spec-lock
already names, which is what a check is and what a push wants.
2026-08-12 21:11:18 -07:00

43 lines
2.3 KiB
YAML

# ~7-line canonical caller — all real config lives in /hanzo.yml.
#
# This repo declared a gate and had nowhere to run it. `.github/workflows/cicd.yml`
# imports the same pipeline, but its default label `hanzo-build-linux-amd64` is
# served on github.com by nothing: the ARC pool that last ran it there
# (hanzo-build-linux-amd64-lfpvh-runner-vt7lh, hanzoai/finance, 133s) was retired,
# and every caller since has queued for 86402s — 24h exactly, GitHub's queue
# timeout — and reported "cancelled". A gate that cannot be scheduled is not a
# gate, and a red X that says "cancelled" reads like an infrastructure hiccup
# rather than what it is: the suite never ran, and has not run for weeks.
#
# The pool that DOES serve that label is the git-runner fleet on git.hanzo.ai
# (universe:infra/k8s/git-runner/statefulset.yaml), which is reachable only from
# this plane — the same plane sync-from-github.yml already mirrors every GitHub
# commit onto within ten minutes. So the gate belongs here, beside the publish
# it guards, and this file is the ~7 lines that ask for it.
name: CI/CD
on:
push:
branches: [main]
tags: ['v*']
pull_request:
# THE RELEASE POKES THE PROJECTION, and workflow_dispatch is how, because it
# is the dispatch verb this forge HAS. Two shapes were tried and neither could
# work: cloud posted `repository_dispatch: spec-update` at api.github.com,
# where these callers ask for a label github.com has no runner for, so twelve
# accepted events ran nothing; then this file grew a nightly `schedule:`,
# which does move the projection but decides WHEN by a clock rather than by a
# release, so a client is a day stale on average and nothing anywhere records
# which release it is a projection of.
#
# Measured instead of assumed: POST /v1/repos/<o>/<r>/actions/workflows/
# cicd.yml/dispatches on git.hanzo.ai answers 204, a git-runner picks the run
# up in seconds, and it reaches its first step. So the release dispatches this
# directly, on the side that has the runners, and the lane's no-payload path
# takes cloud's NEWEST TAG — which exists only after that commit built, smoked
# and rolled out. One trigger, fired by the thing that changed.
workflow_dispatch:
jobs:
cicd:
uses: hanzoai/ci/.hanzo/workflows/[email protected]
secrets: inherit