feat(venue): SURPLUS_ATTESTER_ONLY — a quorum member that never issues#18
Merged
Conversation
The bonded-issuer invariant (venue.rs) treats "has a key + is in a CLOB book"
as "is an issuer" and panics if such a node serves inference in router-proxy
mode. But an independent-DC quorum member like op5 co-signs batches without ever
issuing a lot — the invariant is broader than the role it guards, and the live
fleet bridged it with a SURPLUS_INFERENCE_URL=router pointer (honest but a hack).
Add a first-class attester-only mode: SURPLUS_ATTESTER_ONLY=1 excludes the node
from the bonded-issuer check (it issues nothing, so the own-model rule cannot
apply) AND hard-disables issuance — signed_mm_quote returns None and rfq_quote
refuses, so the node signs no maker orders and mints no lots. A node that cannot
issue cannot resell, so the invariant's security goal holds by construction.
Proven: a node in router mode, in a book, with no own model + ATTESTER_ONLY=1
boots clean (pre-fix it panicked) and refuses RFQ ("attester-only ... does not
issue quotes"). Replaces the op5 INFERENCE_URL bridge with the honest role.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Replaces the op5
SURPLUS_INFERENCE_URL=routerbridge (honest but a hack) with a first-class role.The problem
venue.rs's bonded-issuer invariant treats "has a key + is in a CLOB book" as "is an issuer" and panics if such a node serves inference in router-proxy mode. But an independent-DC quorum member like op5 co-signs batches without ever issuing a lot — the invariant is broader than the role it guards. The live fleet bridged it by pointingSURPLUS_INFERENCE_URLat the Router, which clears the panic but is exactly the reselling the rule means to forbid.The fix
SURPLUS_ATTESTER_ONLY=1:signed_mm_quotereturnsNoneandrfq_quoterefuses, so the node signs no maker orders and mints no lots.A node that cannot issue cannot resell, so the invariant's security goal holds by construction rather than by a config pointer.
Proven
A node in router mode, in a book, with no own model +
ATTESTER_ONLY=1:Pre-fix that exact config panicked on boot. Operator suite still 19/19.
Deploying op5 with this drops the
inference.confdrop-in for a one-lineSURPLUS_ATTESTER_ONLY=1.🤖 Generated with Claude Code