`npm ci` refused with EUSAGE — "can only install packages when your package.json
and package-lock.json are in sync" — naming fs-extra (lock 11.2.0 vs 11.4.0) and
gulp-vinyl-zip (2.1.2 vs 2.5.0). Two dependencies were bumped without the lock
being regenerated, so the gate could not install anything and the build stopped
before it compiled a line.
Regenerated in the tree, not in isolation: resolution here needs this repo's own
.npmrc (legacy-peer-deps, electron disturl) because package.json pins a
TypeScript nightly that [email protected]'s peer range rejects. Generated without
it, npm resolves a different graph — or empties the file.
Verified with the gate's own check: `npm ci --dry-run --ignore-scripts` exits 0
and reports 1919 packages, where before it exited 1 with EUSAGE. Lockfile only,
2003 entries, 892K -> 932K.
Co-authored-by: Hanzo Dev <[email protected]>
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]>
Superseded: the Hanzo GitHub App pushes a webhook, so the forge tracks GitHub
without a per-repo workflow. This file called git.hanzo.ai/api/v1/.../mirror-sync
— a Gitea API for a system we no longer drive — and would sit inert in every repo.
One mechanism, in one place, instead of ~350 copies of a cron.
git.hanzo.ai mirrors this repo by PULL on a ~10-minute interval, and arcd runs
CI/CD there — so every push waited out that interval before anything built.
This asks Gitea to pull HEAD immediately.
Latency only: the repo already mirrors via the App webhook, so a missing
HANZO_GIT_TOKEN or a failed curl is non-fatal and never fails the push.
Idempotent (mirror-sync just pulls HEAD) and concurrency-coalesced.