ci: canonical pair — hanzo.yml + forge caller

github.com has no runner for hanzo-build-linux-amd64, so a caller under
.github/workflows is a gate that can never be scheduled. This is the ~7-line
caller on the plane that can (git.hanzo.ai git-runner fleet), pinned @v1.

Co-authored-by: Hanzo Dev <[email protected]>
This commit is contained in:
2026-08-06 02:37:24 -07:00
co-authored by Hanzo Dev
parent dff11f3007
commit 405720d38f
2 changed files with 34 additions and 0 deletions
+15
View File
@@ -0,0 +1,15 @@
# Canonical caller — every knob lives in /hanzo.yml, none here.
# Runs on the git-runner fleet at git.hanzo.ai, the only pool serving these
# labels. github.com resolves only .github/workflows and has no runner for
# them, so a caller placed there is a gate that cannot be scheduled.
name: CI/CD
on:
push:
branches: [master]
tags: ['v*']
pull_request:
workflow_dispatch:
jobs:
cicd:
uses: hanzoai/ci/.hanzo/workflows/build.yml@v1
secrets: inherit
+19
View File
@@ -0,0 +1,19 @@
# Canonical CI/CD config for hanzoai/utf-8-validate — read by the hanzoai/ci
# reusable workflow (.hanzo/workflows/cicd.yml) and by platform.hanzo.ai.
#
# LIBRARY: UTF-8 validation for WebSocket frames — a C++ N-API addon with a
# pure-JS fallback. No image, no deploy — it ships from a tag.
#
# `npm install` compiles the addon (the package's own `install` script is
# node-gyp-build), so a build break in src/ fails here rather than at somebody
# else's install time. Then mocha runs test/, which feeds the addon and the
# fallback the same corpus of valid and deliberately malformed sequences —
# overlong encodings, lone surrogates, truncated continuation bytes — and
# requires them to agree.
#
# That agreement is the entire product. This is what a WebSocket server calls
# to decide whether to accept a frame, so "returns true too often" is a
# protocol hole, and it is invisible to anything but a test.
test:
- name: build-and-test
run: npm install && npm test