5. Implementation plan

All seven target connectors already exist in the Hummingbot codebase (hyperliquidhyperliquid_perpetualdydx_v4_perpetualgrvt_perpetualpacifica_perpetuallighter_perpetualdecibel_perpetual). Each connector's work is additive: add a small set of builder constants, route order payloads through an inject_builder_fields() method, and expose a /builder-info handler. No connector requires structural changes.

After §5.1 (spec ratification and Foundation onboarding) lands, all connector tracks proceed in parallel. The Foundation assigns each track to an existing connector maintainer where one is active, or creates a bounty for community implementation where no maintainer exists. Tracks do not depend on each other — each lands independently when its implementation and review complete. The Hummingbot API endpoint (§5.3) and Condor integration (§5.4) also proceed in parallel with the connector tracks, with Condor adopting each venue as its connector ships.

5.1 Prerequisite: Spec ratification and Foundation onboarding

5.2 Connector implementation (parallel tracks)

All connector tracks below proceed in parallel after §5.1. The Foundation assigns each track to an existing connector maintainer where one is active, or creates a bounty for community implementation where no maintainer exists. Hyperliquid is designated as the reference implementation because Hummingbot already has an active Hyperliquid maintainer team and Condor's first integration targets Hyperliquid; later tracks can refer to the Hyperliquid implementation for patterns. No track is blocked on any other.

5.2.1 Hyperliquid (reference implementation)

This track covers both hyperliquid (spot) and hyperliquid_perpetual (perp) connectors. The implementation: attach a Foundation builder address with a zero fee rate to every mainnet order, omit on testnet and vault, no approval action invoked from the connector.

Approval rationale (why 0 bps works without approval)

The Hyperliquid order builder field carries {"b": "<address>", "f": <tenths_of_bps>}. The exchange enforces f ≤ user_approved_max(user, builder) on every order; the user's approved maximum for a given builder is queryable via the info endpoint ({"type": "maxBuilderFee", "user": "0x<user>", "builder": "0x<builder>"}). For unapproved (user, builder) pairs, the response is 0. At f = 0, the constraint 0 ≤ 0 is trivially satisfied, so the order is accepted without requiring a prior ApproveBuilderFee action.

Two cases where the venue still rejects 0-fee builder fields and require omitting the field entirely:

Constants

hyperliquid_perpetual_constants.py (identical pattern in hyperliquid_constants.py for spot, with the spot cap):

BUILDER_SUPPORTED = True

# Foundation builder identity. Set after §5.1 onboarding.
# The address of the Foundation-controlled wallet that has deposited
# ≥100 USDC on Hyperliquid (required to register as a builder).
FOUNDATION_BUILDER_ADDRESS = "0x..."

# Foundation default fee. 0 means attribution only.
# Unit: tenths of a basis point (Hyperliquid's `f` unit).
FOUNDATION_BUILDER_FEE_TENTHS_BPS = 0

# Protocol caps for override validation.
# Unit: tenths of a basis point. Reference: Hyperliquid builder-codes docs.
HYPERLIQUID_PERP_BUILDER_FEE_CAP_TENTHS_BPS = 100    # = 10 bps (perp cap)
HYPERLIQUID_SPOT_BUILDER_FEE_CAP_TENTHS_BPS = 1000   # = 100 bps (spot cap)