24 Commits
Author SHA1 Message Date
zeekayandHanzo Dev 096f96835b runs-on names a machine, not a purpose
The purpose-prefixed labels (hanzo-build-*, hanzo-deploy-*, hanzo-docs-build-*)
are retired in favour of the bare <os>-<arch> every runner already advertises.

They were not a capability, only a habit, and the habit cost builds: papers asked
for hanzo-build-linux-amd64, no online runner offered it, and two idle
linux-amd64 runners sat beside the queue while the build simply never ran. The
lux tree lost three days to lux-linux-amd64 the same way.

What a job is FOR is the workflow's name. runs-on is the machine it needs.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-15 11:36:52 -07:00
zeekay ba01baa778 ci: give the moved jobs the toolchain they assume
First real runs on this fleet turned up three things the workflows had been
getting for free from GitHub's hosted image.

golangci-lint had no setup-go step. The linter shells out to `go` to load
packages, and the job image does not carry a toolchain on PATH, so it exited on
"go command required, not found" without reading a file. It sets up Go from
go.mod now, like every other job here.

doctests ran setup-go before checkout, so go.mod was not on disk when the action
looked for it and the module cache degraded to a permanent miss. Checkout goes
first.

The e2e proxy builder was pinned to golang:1.24-alpine while go.mod requires
1.26.4. The official golang images set GOTOOLCHAIN=local, which makes the image
the authority and refuses a newer directive, so `go mod download` stopped the
compose build and took both docker.start and docker.e2e.start with it. The base
moves up to 1.26-alpine; the version stays declared in exactly one place, go.mod,
with the image as its floor.

govulncheck is reporting three standard-library advisories against this module.
That is a real finding and it stays visible.
2026-08-13 21:24:19 -07:00
zeekay 4535998e68 ci: let the Redis suite be re-run on demand
Every leg of test-redis-ce brings up a real Redis container, so a red leg can
mean the environment rather than the code. workflow_dispatch makes confirming
which one a button instead of an empty commit.
2026-08-13 21:12:15 -07:00
zeekay f2bf7a47a8 ci: run on the forge, not on GitHub Actions
The runner labels here were already right, but the files sat in
.github/workflows, the second entry in WORKFLOW_DIRS. Second is only read while
the first is absent, so every one of them was one .hanzo/workflows commit from
going silent. Six move across; four do not.

Moved: build.yml, doctests.yaml, golangci-lint.yml, govulncheck.yml,
spellcheck.yml, test-e2e.yml. The runners carry a docker daemon, so the
compose-backed suites (make docker.start, make docker.e2e.start) and the
`services:` block in doctests work as written. .github/actions/run-tests stays
where it is -- it is a composite action, not a workflow, and the `./` path
resolves from the repo root regardless of which directory the caller lives in.

Two adjustments inside the files that moved:

  build.yml drops the benchmark job and samples the matrix at three Redis
  versions instead of five. `make bench` measures without comparing to a
  baseline, so it produced no pass/fail signal for thirty runner-slots per push
  on a pool every org shares. What the sampling gives up is a break specific to
  Redis 8.6 or 8.2, or to the 1.25.x pin now covered by oldstable/stable. The
  Codecov upload goes with it: CODECOV_TOKEN is not a secret this forge holds,
  so coverage is produced and no longer reported to a dashboard.

  govulncheck.yml asked setup-go for "1.26.4.x", which is not a version it can
  resolve. It reads go.mod now, which is where the toolchain version is already
  decided.

Dropped, with what each cost:

  codeql-analysis.yml   uploaded SARIF to GitHub code scanning. There is no
                        such service here, and govulncheck covers the
                        vulnerability half against the Go advisory database.
  release-drafter.yml   assembled GitHub Release drafts from merged pull
                        requests. Release notes are written by hand.
                        Its .github/release-drafter-config.yml goes too;
                        nothing else reads it.
  stale-issues.yml      aged out issues and pull requests through the GitHub
                        issues API. Triage is manual.
  test-redis-enterprise.yml  needed the licensed redislabs/redis Enterprise
                        image and a clone of RedisLabs/redis-ee-docker. It was
                        already `if: false` upstream, so it gated nothing;
                        Redis Enterprise remains untested by CI.
2026-08-13 21:11:23 -07:00
zeekayandHanzo Dev ee3ef1a41a fix: delete the stale compose.yml that was shadowing the real one
The tree carried two compose files. Docker Compose v2 resolves by a fixed
precedence -- compose.yaml, compose.yml, docker-compose.yaml,
docker-compose.yml -- so compose.yml won every time and docker-compose.yml,
the one upstream merges actually keep current, was never read:

  warning  Found multiple config files with supported names:
           .../compose.yml, .../docker-compose.yml
  warning  Using /Users/z/work/hanzo/kv-go/compose.yml

compose.yml was a 106-line snapshot taken before several upstream updates.
It pinned CLIENT_LIBS_TEST_IMAGE at 8.4.0 while the Makefile asks for 8.8.0,
and it was missing three services and a whole profile. Two things were
therefore broken and quiet about it:

  * `make docker.e2e.start` runs `docker compose --profile e2e up`. There is
    no e2e profile in the stale file, so it started nothing;
    .github/workflows/test-e2e.yml then sat waiting for cae-resp-proxy on
    :18100 until the timeout.
  * `make docker.start` (--profile all) never started osscluster-tls, so
    tls_cluster_test.go -- whose own comment says the ports come from the
    compose file -- had no server on 5430.

Deleting the stale copy and giving the live one the canonical name (this
workspace uses compose.yml, never docker-compose.yml) leaves exactly one
compose file. `docker compose --profile e2e config --services` now returns
redis, cae-resp-proxy and proxy-fault-injector; --profile all also brings up
osscluster-tls. The three comments that named the old path now name the new
one. go build ./... clean.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-27 14:56:26 -07:00
zeekayandHanzo Dev e3ee0b50f2 fix(build): repoint go-redis internal imports to hanzoai/kv-go module path and restore lost merge artifacts (internal/rand->math/rand, pool close-reason/metric-state consts, otel/push/util/auth/uberatomic imports)
Co-authored-by: Hanzo Dev <[email protected]>
2026-06-30 16:15:55 -07:00
zeekay 7d745d140c docs(brand): add hero banner 2026-06-28 20:18:30 -07:00
zeekay 267303dddd chore(brand): dynamic hero banner 2026-06-28 20:18:28 -07:00
34e85f1432 ci: run on self-hosted ARC pool (hanzo-build-linux-amd64/deploy), not GitHub-hosted (#8)
Co-authored-by: zeekay <[email protected]>
2026-06-19 20:36:12 -07:00
zeekay 9f28f8f7c5 deps: prometheus/client_golang → luxfi/metric
Mechanical migration following the beego v2.3.8 fork precedent
(bc7b075). Same exposition surface, zero prometheus/client_golang
in the dep graph.
2026-06-10 18:34:03 -07:00
zeekay fe31ef4530 deps: bump nested go.mod Go to 1.26.4
Workspace-wide sync. luxfi/node already shipped on 1.26.4 in v1.30.6
(commit 121aca1fa9); nested module catch-up.
2026-06-07 12:27:54 -07:00
zeekay c656554359 deps: bump Go to 1.26.4 across go.mod, Dockerfiles, GH Actions
Workspace-wide sync. luxfi/node already shipped on 1.26.4 in v1.30.6
(commit 121aca1fa9); this is the cross-repo catch-up.
2026-06-07 12:20:18 -07:00
zeekayandGitHub e083b302bf Merge pull request #4 from hanzoai/dependabot/github_actions/release-drafter/release-drafter-7
chore(deps): bump release-drafter/release-drafter from 6 to 7
2026-06-03 13:15:50 -07:00
zeekayandGitHub 8687d4a473 Merge pull request #5 from hanzoai/dependabot/github_actions/rojopolis/spellcheck-github-actions-0.60.0
chore(deps): bump rojopolis/spellcheck-github-actions from 0.57.0 to 0.60.0
2026-06-03 13:15:46 -07:00
zeekayandGitHub b15d82fe01 Merge pull request #6 from hanzoai/dependabot/github_actions/codecov/codecov-action-6
chore(deps): bump codecov/codecov-action from 5 to 6
2026-06-03 13:12:25 -07:00
zeekay 21f34da35a merge: upstream/master (preserve Hanzo brand, 100 commits) 2026-06-02 09:58:21 -07:00
zeekay 7cdf45df6a go.mod: bump go directive to 1.26.3 (security advisory) 2026-05-12 20:54:34 -07:00
zeekay 3f1f58557f chore: update dependencies 2026-04-01 14:19:00 -07:00
zeekay 87ebe239d3 chore: symlink AGENTS.md and CLAUDE.md to LLM.md
Canonical project context lives in LLM.md. Symlinks ensure
agentic coding tools (Claude Code, Cursor, etc.) find context
automatically regardless of which filename they look for.
2026-04-01 14:12:45 -07:00
zeekay b92cadf5fb docs: add LLM.md project guide 2026-03-11 10:31:56 -07:00
zeekay 7a62812520 chore: update Go module dependencies 2026-03-03 22:35:21 -08:00
zeekay dc9c420fc0 chore: rename docker-compose.yml to compose.yml 2026-03-03 14:00:00 -08:00
zeekay 6a7c791835 chore: bump Go 1.26.1 2026-03-22 14:14:13 -07:00
zeekay 24f201b8e5 Rebrand as hanzoai/kv-go
Update module path from github.com/redis/go-redis/v9 to
github.com/hanzoai/kv-go/v9 for use as the Hanzo KV Go SDK.

- Update go.mod module declaration
- Update all Go imports across 260 files
- Update all submodule go.mod files (extra/*, example/*, internal/customvet)
2026-01-19 18:15:43 -08:00