AntFleet

Disagreement · f3aba81f-anthropic-2

ATH gate state update on non-baseline higher price omits `announced_at` clock for dedup

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

Primary finding

ATH gate state update on non-baseline higher price omits `announced_at` clock for dedup

mediumbugmedium
  • skills/price-threshold-alert/SKILL.md:121-132
  • skills/price-threshold-alert/SKILL.md:188-196
Step 4 says to use `last_alerts.ath` for the 4h dedup window, but the suppression-on-baseline path only sets `state.ath.announced_at = NOW` — not `state.last_alerts.ath`. Conversely, the normal ATH-fired path is not explicitly described as updating `last_alerts.ath`; the doc references the 4h dedup against `last_alerts.ath` but never lists the write. Without explicit instructions to set `last_alerts.ath = NOW` on real ATH fires, an implementer could leave dedup wide open and refire ATH on every minutely tick. The mix of `ath.announced_at` vs `last_alerts.ath` further muddies which clock authoritatively gates ATH dedup.

Recommendation

In Step 4, explicitly state: 'On notify, set `state.last_alerts.ath = NOW` and `state.ath.announced_at = NOW`.' Pick one clock (preferably `last_alerts.ath`) and reference it consistently as the dedup authority.

Counterpart finding

Misleading field name first_seen_below_at despite side possibly being below or above

lowdocs-gaphigh
  • skills/price-threshold-alert/SKILL.md:50-55
  • skills/price-threshold-alert/SKILL.md:133
  • skills/price-threshold-alert/SKILL.md:63
The field first_seen_below_at is always recorded regardless of side, but the name suggests it only applies when first seen below the target. This is confusing and error-prone for maintainers.

Recommendation

Rename to first_seen_at (or first_seen_from_side_at) throughout schema, logic, LRU policy, and docs.

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 →