Problem
Closed issue #20 specified a Lucidly syUSD auto-park flow but went stale before the partner conversation matured. The shape is right; the integration timing is now live. This issue replaces #20 with a current-spec version aligned to the 2026-06-01 partnership map (validator-slot + adapter contract together).
Agent wallets sit on idle CR8-USD / USDC between settlements. At any realistic agent payment volume (hundreds of agents, single-digit USD per settlement), 70-95% of the float is idle. Parking that float into Lucidly's syUSD vault earns yield with zero behavioral change at the agent layer.
Proposed Approach
contracts/adapters/LucidlyAdapter.sol wraps the ILucidlyVault interface. Per-wallet config:
idle_target_bps (e.g. 8000 = 80% parked, 20% liquid buffer)
unpark_threshold_bps (when liquid drops below this, pull from vault before next tx)
- Auto-rebalance hook in
AgentEscrow.release and x402_middleware.settle: after every settlement, evaluate liquid buffer vs target. If liquid > target + 5%, deposit excess. If liquid < target - 5%, withdraw from vault.
switchboard/adapters/lucidly.py Python client mirror — same logic at the off-chain switchboard layer so non-EVM-native agents can use it.
- Realized APY card: weekly cron emits a per-wallet
realized_30d_apy JSON blob to a public surface. This is the disclosure that closes the loop on the Lucidly co-marketing (per the partnership roadmap).
- No yield without slippage cap: if Lucidly vault entry slippage exceeds 25 bps, skip the park and log. Avoids the "yield surface looks great until you actually try to enter" trap.
Acceptance Criteria
References
Problem
Closed issue #20 specified a Lucidly syUSD auto-park flow but went stale before the partner conversation matured. The shape is right; the integration timing is now live. This issue replaces #20 with a current-spec version aligned to the 2026-06-01 partnership map (validator-slot + adapter contract together).
Agent wallets sit on idle CR8-USD / USDC between settlements. At any realistic agent payment volume (hundreds of agents, single-digit USD per settlement), 70-95% of the float is idle. Parking that float into Lucidly's syUSD vault earns yield with zero behavioral change at the agent layer.
Proposed Approach
contracts/adapters/LucidlyAdapter.solwraps theILucidlyVaultinterface. Per-wallet config:idle_target_bps(e.g. 8000 = 80% parked, 20% liquid buffer)unpark_threshold_bps(when liquid drops below this, pull from vault before next tx)AgentEscrow.releaseandx402_middleware.settle: after every settlement, evaluate liquid buffer vs target. If liquid > target + 5%, deposit excess. If liquid < target - 5%, withdraw from vault.switchboard/adapters/lucidly.pyPython client mirror — same logic at the off-chain switchboard layer so non-EVM-native agents can use it.realized_30d_apyJSON blob to a public surface. This is the disclosure that closes the loop on the Lucidly co-marketing (per the partnership roadmap).Acceptance Criteria
LucidlyAdapter.soldeployed against testnet Lucidly vaultidle_target_bps/unpark_threshold_bpsconfigReferences
kcolbchain/stablecoin-toolkit