Skip to content

teach deploy-uni-hook the fleet audit rules - #992

Merged
aaronjmars merged 1 commit into
mainfrom
feat/deploy-uni-hook-audit-rules
Aug 30, 2026
Merged

teach deploy-uni-hook the fleet audit rules#992
aaronjmars merged 1 commit into
mainfrom
feat/deploy-uni-hook-audit-rules

Conversation

@aaronjmars

Copy link
Copy Markdown
Collaborator

Why

aeon-vuln memory/topics/aeon-fun-hooks.md and aeon-onchain coverage already measured these on the live fleet. Canon deploy-uni-hook still shipped them:

  • skim skipped the fee on exact-output (unspecifiedAmount <= 0)
  • skim take()d to address(this) and needed withdraw() (custody HIGH)
  • freeform had no gate checklist, so it would regenerate BlockEcho/TailTwins/CapGate

What

  • HookFeeHook: charge magnitude (exact-in and exact-out), widen to int256 before abs, take() to immutable feeRecipient, no withdraw
  • Static audit: FAIL take(..., address(this), ...); WARN exact-out skip and balanceOf(poolManager)
  • SKILL.md + freeform scaffold: standing fee/gate/test rules from the audits

Follow-up of #991 (Labs routing). Does not change catalogs.

Test

  • bash -n skills/deploy-uni-hook/hook-deploy.sh
  • Constructor still constructor(IPoolManager) so DeployHook.s.sol is unchanged

The aeon-vuln/onchain audits found a shared exact-output fee skip, custody
take() to address(this), int128.min abs panic, and a standing gate checklist
(off-by-one, contention DoS, raw amountSpecified cap). The skim template still
had the first two. Patch it, fail custody in the static scan, and put the
checklist in the generator so freeform does not recreate them.
@aaronjmars
aaronjmars merged commit b99d6ae into main Aug 30, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant