AntFleet

Disagreement · f3aba81f-openai-1

ATH dedup clock (last_alerts.ath) is never explicitly updated on notify

mismatch
repo 6f7fc663·PR #23·reviewed 1 week ago

Primary finding

ATH dedup clock (last_alerts.ath) is never explicitly updated on notify

mediumbughigh
  • skills/price-threshold-alert/SKILL.md:62
  • skills/price-threshold-alert/SKILL.md:114-116
  • skills/price-threshold-alert/SKILL.md:44-46
The invariants state last_alerts.* powers the 4h dedup. Step 4 describes setting ath.announced_at for baseline suppression but does not state that last_alerts.ath is updated on actual ATH notification. Without updating last_alerts.ath, the stated ATH dedup mechanism may not work as intended.

Recommendation

On ATH notify, set last_alerts.ath = NOW (in addition to updating ath.announced_at). Use last_alerts.ath for the 4h dedup check; only set ath.announced_at during baseline suppression.

Counterpart finding

Chain fallback marker is set in log but not propagated into state or notification context

lowapi-contractmedium
  • skills/price-threshold-alert/SKILL.md:110-115
If the configured chain has no pool, the skill prices the token off some *other* chain's pool. ATH and target evaluations then operate on a price from a different market, which can corrupt the ATH baseline. The doc only mentions a log marker; it does not exclude this fallback price from ATH/target evaluation or warn the operator that the canonical chain is unavailable.

Recommendation

When falling back to a non-configured chain, either skip ATH/target writes for that run, or notify with a `PRICE_ALERT_CHAIN_FALLBACK` status. At minimum, persist the fallback flag in state so subsequent runs do not treat the cross-chain price as authoritative.

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 →