zooqueenandHanzo Dev c8e51e390b fix: call the pipeline at the address it actually lives
hanzoai/ci keeps the reusable at .github/workflows/build.yml — the one path
both planes resolve, since github.com reads a reusable only from there and the
forge reads it too. The v1 tag moved with it, so a caller still naming
.hanzo/workflows/build.yml asks for a blob that is not in the tree:

  InsertRun: read hanzoai/ci@v1:.hanzo/workflows/build.yml: object does not exist

The caller itself stays at .hanzo/workflows/cicd.yml on purpose: github.com has
no runner for these labels, so a caller placed there could never be scheduled.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-08 01:14:30 -07:00

Hanzo Research (Go)

The Go client for /v1/research: record an experiment as a falsifiable test — hypothesis, attempts, verdict — and query the evidence back.

Stdlib only (net/http + encoding/json), no external modules, so any service can import it without dragging in a dependency graph.

Install

go get github.com/hanzoai/research

Use it

c := research.New(research.Config{Project: "enso-bench"})

exp, _ := c.Experiment(kind, subject, task)
exp.Record(item, model, research.Result{ /* one attempt */ })
exp.Log("what happened")
exp.Conclude(research.Proven, because, value)

Finish(value) seals a run without an explicit verdict; a hypothesis with no verdict records as Inconclusive. Record is idempotent, so a retried attempt does not double count.

Authentication is your per-org API key, read from the environment like every other Hanzo client.

One record, every language

The server keys each experiment on (project, id = kind:subject:task), so the Python, Rust and C++ clients upsert the same row this one does. JSON spacing differs between them and is immaterial to the store. If you already know one of those clients, the verbs here are the same.

Docs

LLM.md is the full surface and the semantics of each verb. example_test.go is a runnable walkthrough.

License

See LICENSE.

S
Description
Hanzo Research SDK (Go) — zero-config /v1/research self-logging client: structure runs as falsifiable tests (hypothesis → verdict), byte-compatible with the Python/Rust/C++ SDKs, universal open kinds
Readme
87 KiB
Languages
Go 100%