AntFleet

Disagreement · cf4e74ac-anthropic-4

cmd_claimable is documented as performing an on-chain read but actually does nothing

mismatch
repo a16d2030·PR #1·reviewed 1 week ago

Primary finding

cmd_claimable is documented as performing an on-chain read but actually does nothing

mediumdocs-gaphigh
  • agenticbets/scripts/agenticbets.py:235-246
  • agenticbets/SKILL.md
  • agenticbets/references/agent-usage.md
Both SKILL.md and agent-usage.md describe `claimable` as returning a true/false read of the contract, and agent-usage.md even instructs the agent to gate the claim flow on its output. In reality cmd_claimable prints a 'coming soon' message and returns nothing actionable. An LLM agent following these docs literally will misinterpret the human-readable text as a positive/negative signal and either claim unnecessarily (gas wasted) or skip a real claim. encode_claimable is defined but never used, reinforcing that the feature is stubbed.

Recommendation

Either (a) implement the contract read (via Bankr eth_call or a separate provider) or (b) update both docs to clearly state that `claimable` is not yet implemented and remove the gate-on-it instruction from agent-usage.md.

Counterpart finding

Missing preflight validation before submitting transactions (market status and minimum amount) leads to avoidable reverts and gas loss

mediumapi-contracthigh
  • agenticbets/scripts/agenticbets.py:215-249
  • agenticbets/references/agent-usage.md:46-49
  • agenticbets/references/agent-usage.md:100-101
The CLI submits approval and bet without checking if the market is still open or if the amount satisfies the on-chain minimum of 1 USDC. This can lead to reverted transactions and wasted gas. The usage guide recommends confirming the market is open before betting and notes BelowMinBet for <1 USDC.

Recommendation

- Validate market['status'] == 'open' and market.get('secondsToLock', 0) > 10s (or configurable threshold) before submitting. - Enforce amount >= 1.0 USDC in CLI and fail fast with a clear message. - Optionally prompt the user to confirm when secondsToLock is very low.

Why this didn't post

This finding didn't meet AntFleet's unanimous agreement threshold. Both frontier models review every PR independently; only findings they both flag with the same severity and category are posted to the PR. This one fell through.

read the methodology →