AntFleet

Disagreement · 654c4c6d-anthropic-1

Dry-run mode persists state, contradicting the 'dry-run' contract and silently consuming releases

solo Opus
repo 6f7fc663·PR #15·reviewed 1 week ago

Opus finding

Dry-run mode persists state, contradicting the 'dry-run' contract and silently consuming releases

mediumapi-contracthigh
  • skills/fork-release-tracker/SKILL.md:173-174
  • aeon.yml:132
The aeon.yml comment and the top-of-file var docstring describe `dry-run` as 'skip notify (state still updates)', but the behavior is dangerously asymmetric with operator expectations across other skills in the fleet (where dry-run is typically a pure preview). More importantly, because dry-run writes to `state.announced`, an operator testing the skill will permanently mark releases as 'already announced' — the very next real run will treat them as duplicates and emit `FORK_RELEASE_QUIET`, suppressing the celebratory announcement the skill exists to produce. This is a contract trap: the only way to recover is hand-editing the state file, which the same doc later instructs operators to do.

Recommendation

Either (a) make dry-run truly read-only (do not update `announced`; only `last_run` at most), or (b) prominently warn in the var docstring and aeon.yml comment that 'dry-run consumes the dedup window — releases previewed in dry-run will not re-announce.' Option (a) is the safer default and matches operator intuition.

Other reviewer

The other reviewer flagged nothing in this file/line range.

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 →