Opus
AgentFloatHook._beforeSwap uses regular approve (not forceApprove) on USDT-style tokens
- contracts/src/AgentFloatHook.sol:144-158
On mainnet USDT is the underlying. The README and other code paths consistently use forceApprove (zero-then-set) because USDT rejects non-zero → non-zero approve. The transient-storage branch of _beforeSwap uses plain `usdc.approve(address(poolManager), recallAmount)` (no SafeERC20 forceApprove), so the second+ JIT recall in a row will revert when the prior allowance to poolManager is non-zero. The fallback branch correctly uses forceApprove, which makes the inconsistency a real bug rather than intent.
Recommendation
Use `usdc.forceApprove(address(poolManager), recallAmount)` in both branches.