X3_NEAR_ROUTE_SHAPE
More than one leg, or a fallback. 1Click settles one swap, and a second leg could half-execute with no rollback.
The language
X3 Shield on NEAR uses a narrow, tested slice of X3. Here's the whole pipeline, what the compiler refuses, the chain engine behind it, and what we're building next.
The hackathon path is the top line. The bottom line is the X3 chain, which is not part of the NEAR judge path.
.x3 source
Mandate and payment
Compile
Parse, type-check, lower
Guard terms
Hash-pinned on NEAR
1Click quote
Signature, then terms
.x3 source
Strategies and programs
Rust compiler
HIR, MIR, backend
X3BC
One canonical bytecode
X3VM
Atomic, signed receipts
These programs never reach a quote. Each code is a real refusal in the checker that the playground runs.
X3_NEAR_ROUTE_SHAPE
More than one leg, or a fallback. 1Click settles one swap, and a second leg could half-execute with no rollback.
X3_NEAR_SLIPPAGE_REQUIRED
No slippage bound. The compiler will not choose a tolerance on the agent's behalf.
X3_NEAR_TIMEOUT_REQUIRED
No timeout. The deadline is when 1Click starts refunding, so it has to be stated.
X3_NEAR_NONCE
A payment under a mandate with no one-use nonce, or with two. Guard records each payment under its nonce.
X3_NEAR_REFUND_ASSET
A refund in a different asset or on a different chain than the deposit. 1Click refunds the deposited asset only.
X3_NEAR_REFUND_TO
Timeout and on_fail refund to different addresses, or to an address that is not on the origin chain.
X3_NEAR_GUARD_UNENFORCEABLE
A require clause the NEAR path has no way to enforce. It is refused, never silently dropped.
X3_NEAR_ON_FAIL_UNSUPPORTED
on_fail halt or quarantine. 1Click can only refund, so the program would promise something that cannot happen.
X3_NEAR_ROUTE_ENDPOINTS
The leg's assets don't match the intent's from and to.
X3_MANDATE_APPROVAL
An agent listed as its own approver, an approval threshold above the cap, or an impossible threshold.
X3_MANDATE_BOUND
A mandate that leaves slippage or fees unbounded.
X3_MANDATE_LIMIT
A per-payment cap above the daily cap, or a cap that does not fit the contract's u128.
Work in the X3 chain monorepo on unifying X3 Lang with the production X3BC bytecode and VM.
You can't check any of this from here: the repository is private, so nothing on this page links to it. It is listed so the language's scope is clear. None of it is part of the NEAR submission, and none of it is cited as evidence on Inspect the Proof.
Main Guard stores an agent program's SHA-256 but does not check it. The Tidepool Guard already refuses an authorization whose program hash doesn't match the one the owner registered. Doing the same in agent_accept_quote would mean an approved mandate only carries the exact program the owner saw.
NEAR FunctionCall-only and Base EIP-712 vault work has local Sandbox and Foundry coverage in the source repository. Public vault deployment and independent audits remain unproven; these prototypes did not custody the historical Tidepool transfer.
Compile the current and proposed mandate, then show the owner every term that changed (cap, recipients, refund address, expiry) before the create_mandate call goes out. The playground's checker can already produce both term sets.
Lower check_mandate to X3BC so the same bytecode runs in the browser, on the X3 chain and in the Guard. That removes the hand-kept ports and gives one parity test where there are three today.
An append-only feed of every agent proposal, with its .x3 hash, the verdict, the rule that decided it, and the transaction when there is one. Hostile-model runs would be labeled as attacks.
The same mandate shape, applied to liquidity: which pools an LP agent may enter, how much, the maximum price impact, and a fixed withdrawal address. Liquidity managed by an agent, bounded by the owner.
Want one of these sooner, or have a better one? Open an issue or back the work.