16 Commits
Author SHA1 Message Date
zeekayandHanzo Dev 6b380d62a4 Go 1.27.1, and the code it can say more simply
Modules declare go 1.27.1 and the build images follow. go fix applied the
modernizers: any, max and range over int. omitzero is not applied, since it
changes what the JSON says.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-16 19:15:04 -07:00
zeekay 2270db4043 Pin past the versions the proxy can no longer serve
The 2026-07-15 retag moved these tags, so proxy.golang.org answers not-found, Go
falls through to direct, and the bytes GitHub serves now disagree with
sum.golang.org. The build stopped at a checksum before reaching a compiler.
Those versions can never verify again; moving past them is the repair.
2026-09-01 15:54:27 -07:00
zeekay 50ea4c9edd reach chains at /v1/chain; the node deleted /v1/bc 2026-08-30 20:37:33 -07:00
zeekayandHanzo Dev 981157b044 docgen: quote frontmatter title/description (YAML-safe)
A synopsis containing a colon (e.g. "LP-103: https://…") broke unquoted
YAML frontmatter and failed the next build. Quoting the values makes any
colon/hash safe; inline() already maps internal quotes to apostrophes.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-22 21:46:47 -07:00
zeekayandHanzo Dev 54587bb272 Generate the MCP tool reference from the registry
tools/docgen builds each read surface with a non-dialing caller and emits
the tools/list descriptors (name, description, input schema) as MDX for
docs.lux.network, so the MCP reference matches the surface an agent sees.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-22 19:49:41 -07:00
zeekay a4aa2cdc53 add native CI 2026-08-21 00:11:06 -07:00
zeekay dfa3e4a69d carry the github copy onto the forge
github.com held commits this host lacked, which refuses the mirror push
("fetch first") and stops github receiving anything at all. Merging rather
than overwriting, so the mirror is a fast-forward again and neither side's
work is dropped.
2026-08-20 21:55:51 -07:00
zeekay c09186653b run on the native fleet
Adds .hanzo/workflows/cicd.yml calling the canonical pipeline and drops the
GitHub-hosted workflows it replaces. Lands here because this is where the repo
is written — git.hanzo.ai is upstream and github.com is its push mirror, so the
same change made on github.com never reaches the runner fleet.
2026-08-20 20:13:00 -07:00
zeekay f109d420a6 add the licence this repo publishes under
This repository was public with no LICENSE file, which means the code was
published under no grant at all. Apache-2.0 matches the rest of the estate.
2026-08-20 10:34:04 -07:00
zeekayandHanzo Dev 33b741775e rpc: /ext/ -> /v1/ on our own hosts
luxd serves /v1/*; /ext/* 404s. Third-party chains keep their own paths.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-03 21:02:04 -07:00
zeekayandHanzo Dev 5143d3679c deps: drop go.sum lines that disagree with the checksum log
These hashes were recorded from direct VCS fetches made while GOPRIVATE covered
github.com/luxfi/*, which switches off the module proxy and checksum
verification together. Tags moved afterwards, so what is written down here no
longer matches what sum.golang.org holds and the build refuses to verify.

proxy.golang.org still serves the originally-published bytes and those verify
against the log, so dropping only the disagreeing lines and re-tidying restores
a verified module graph with no version change. Lines that agree are untouched;
this is not a regenerated go.sum.

The failure followed the machine rather than the repository — the same commit
built wherever the module cache was clean. Any machine or CI runner that
fetched luxfi modules under the old GOPRIVATE holds the same poisoned entries.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-28 09:38:44 -07:00
zeekay ce01affa25 fix(deps): correct moved-tag hashes for luxfi modules in go.sum
Several luxfi versions carry TWO different contents across this workspace,
because published tags were moved instead of a new patch being cut:
[email protected], [email protected], [email protected], [email protected], [email protected].

Adjudicated before editing, since "checksum mismatch / SECURITY ERROR" is also
what a real supply-chain attack looks like. It is not one here: sum.golang.org
holds the OLD hash while proxy.golang.org and a direct fetch BOTH serve the same
NEW bytes. Two independent transports agreeing means nothing is rewriting
content in flight — the tag moved at source. The sumdb entry is a fossil:
GOPRIVATE covers github.com/luxfi/* with GOSUMDB=off, so our own modules never
consult the checksum DB and a moved tag splits consumers silently.

The old bytes are served by nothing now, so a stale pin can never build.
Corrected to the only content that exists, in BOTH line forms (h1: and
/go.mod h1:) — Go reports these one at a time, so a partial fix just relocates
the error.

Deliberately no `go mod tidy`: this changes no selected version, only the
recorded hash of versions already chosen.

Verified: `go list -m all` resolves with no checksum error.

The durable fix is upstream: never move a published tag, cut x.y.z+1 instead.
2026-07-26 02:42:49 -07:00
zeekayandHanzo Dev 10f2256379 bump: latest dealerless PQ (corona v0.10.3, pulsar v1.8.0)
Co-authored-by: Hanzo Dev <[email protected]>
2026-06-30 13:26:35 -07:00
zeekay 10ce365e4e bump: dealerless pulsar/corona/dkg/mlwe (no trusted dealer, no-reconstruct)
Move to the dealerless threshold-signature stack: corona v0.10.2 (Module-LWE
Ringtail, dealerless Pedersen-VSS) + pulsar v1.7.1 (dealerless Mithril RSS keygen
+ no-reconstruct signing, trusted dealer ripped) + dkg v0.3.5 + mlwe v0.2.1.
2026-06-28 19:39:51 -07:00
zeekay e2010a808e mcp: decomplect into 3 orthogonal packages (transport / evmread / governance)
Split the flat governance MCP package into three independently-complete
packages so the generic parts are written ONCE and future MCP surfaces
(mining, treasury, bridge) are just a bag of read tools, never re-implementing
transport. One and only one way:

  github.com/luxfi/mcp           (root)  - domain-agnostic READ-ONLY MCP
                                           transport (Serve, Tool, Surface,
                                           dispatch, per-call timeout, line
                                           cap, panic->JSON-RPC recover) +
                                           ChainObservation. Imports NO geth.
  github.com/luxfi/mcp/evmread           - the SOLE go-ethereum importer: a
                                           minimal read-only Caller, Contract,
                                           Call/CallStruct[T], and the
                                           per-request Bounded call ceiling.
  github.com/luxfi/mcp/governance        - a Surface of the 8 read tools;
                                           reads via evmread, contributes
                                           []mcp.Tool to the shared transport.
  github.com/luxfi/mcp/cmd/lux-mcp       - the binary (was aivm-gov-mcp).

What this generalizes (the real point, not just a move):
- Tool is now a value carrying its own Read closure; Serve composes
  ...Surface and rejects duplicate / empty / nil-Read tools.
- ChainObservation lifted to the root and WIRED INTO ALL 8 TOOLS: every read
  returns (value, *ChainObservation) so an operator-LLM's signed verdict can
  bind Observation.Hash() and re-verify the chain state it claims to have seen
  - domain-independently. (Closes the previously-deferred MED-8.)
- The read-only AST gate is now MODULE-WIDE: it proves go-ethereum is imported
  by exactly one package (evmread), no package imports bind/geth-crypto/
  geth-rpc/reflect, the string-fragment denylist holds, and evmread.Caller's
  method set is exactly {CallContract,ChainID,BlockNumber,HeaderByNumber}.

Behavior-preserving and adversarially re-verified (blue->red loop):
- HIGH-1 bonded-quorum tally still matches AIGovernor.settle()'s _bonded
  filter exactly (PoC drives real compiled Solidity via core/vm/runtime).
- Parity tests remain real (independent ABI decode vs MCP output), struct
  mirrors still field-for-field aligned with luxfi/standard.
- Per-request bounded ceiling cannot leak/bypass; line cap + timeout + recover
  preserved. Read-only invariant intact and STRONGER (adding a write method to
  Caller is now a compile failure).
- Tests: 33 pass, 0 fail, 0 skip across the 3 packages (was 23 pre-split;
  none dropped, several strengthened); go build / vet / -race clean.
2026-06-24 23:46:17 -07:00
zeekay 19f506b4b1 governance: node-side Proof-of-AI governance MCP (the operator-LLM sensory surface)
The missing "LLM of node operator" half of on-chain AI governance: a read-only
MCP server a node exposes so an operator-LLM can query its own chain mid-thought
before signing an AIGovernor verdict — chain_state, param_history, receipt_lookup,
quorum_status, etc. Read-only by construction (AST gate, no state-mutating verb),
bounded calls + per-call timeout, every read at a pinned block.

EthCaller is the read-only EVM seam; quorum tally mirrors AIGovernor.settle so the
LLM sees the same canonical view the chain will. cmd/aivm-gov-mcp serves it over
stdio (drop-in for hanzo-dev / Claude Desktop mcp-servers, like gym.distributed.mcp).

Verified: go test ./governance/ = ok (SDKROOT set; CGO secp256k1/gopsutil need the
macOS SDK path). Pairs with luxfi/standard ai/governance (AIGovernor/AIApproval/
AIExecute). Future: decomplect transport+evmread to module root as a Surface once a
2nd surface (mining/treasury) lands — held per YAGNI.
2026-06-24 19:08:04 -07:00