Skip to content

feat: complete DailyWindowGate + MarketHoursGate (source, deployer, count) - #12

Merged
aaronjmars merged 4 commits into
mainfrom
fix/dailywindowgate-deployer
Sep 5, 2026
Merged

aaronjmars merged 4 commits into
mainfrom
fix/dailywindowgate-deployer

Conversation

@aaronjmars

@aaronjmars aaronjmars commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Completes the two newest fleet hooks (DailyWindowGate, MarketHoursGate), the #5 parity fix, a weekly auto-sync job, and relaxes the AeonFee wording to match reality.

1. Deployer + count (closes #5)

hooks/dailywindowgate.json deployer (onchain-verified, aeon EOA 0x0DE9...00C8 via CREATE2 0x4e59b448...), README 10->12, hooklist.json regenerated.

2. In-repo source for the two hooks

Basescan-verified source vendored: src/DailyWindowGate.sol, src/MarketHoursGate.sol + missing lib/v4-core files (TickMath.sol, BitMath.sol). All 12 hooks now have source in-repo.

3. Weekly source-sync automation

scripts/sync_source.py + .github/workflows/weekly-sync.yml: for any hooks/*.json lacking src/<Name>.sol, fetch verified source by the JSON address across all 7 chains, vendor it + deps, auto-flag no-AeonFee hooks, open a PR (never auto-merge). Repo secret ETHERSCAN_API_KEY is set. Proven end-to-end (delete + regenerate + forge build).

4. AeonFee wording (resolves the heads-up)

The fleet does NOT universally take 10 bps: the two gates are beforeSwap-only (flags 0x80), no AeonFee. Reworded README intro, AeonFee table row + section, added the two gate rows, softened the generated HOOKS.md line via aggregate.py. (Repo gate hooks like CapGate DO keep AeonFee - only these two freeform deploys skip it.)

forge build + forge test (non-fork) + validate.py + aggregate.py --check green; CI green.

Closes #5.

- hooks/dailywindowgate.json: add optional deployer 0x0DE98e661606EcFC448da7A8276DdE4de45200C8 for parity with markethoursgate.json (closes #5). Verified onchain: Base tx 0x68a6b8a3ac7362790f7cdccf41d82333684858c1b9190b4d9ee7ca4182ba40b0 CREATE2-deployed 0x752B... from that EOA.
- README.md: fleet is 12 hooks, not 10 (DailyWindowGate + MarketHoursGate added after the intro line was written).
- hooklist.json: regenerated via scripts/aggregate.py.
Pulled the Basescan-verified source for both hooks (Base) and added it under src/, so all 12 fleet hooks now have source in-repo, not just registry JSON.

- src/DailyWindowGate.sol, src/MarketHoursGate.sol: the deployed freeform Hook.sol verbatim (three comment em dashes normalized to hyphens; no code change). Header flags that these are the raw deploy-skill gates and, unlike the other 10, do NOT inherit AeonFee - flags 0x80, beforeSwap-only, no 10 bps fee.
- lib/v4-core/src/libraries/TickMath.sol + BitMath.sol: the two v4-core files the scaffold imports that were not yet in the vendored subset.

forge build + forge test (non-fork) pass locally.
@aaronjmars aaronjmars changed the title fix: DailyWindowGate deployer field + correct fleet count to 12 feat: complete DailyWindowGate + MarketHoursGate (source, deployer, count) Sep 5, 2026
scripts/sync_source.py: for every hooks/<slug>.json with no matching src/<Name>.sol, pull the verified source from the chain explorer (by the address in the JSON) and vendor it, plus any lib/ file it needs. Detects and flags hooks that do not inherit AeonFee. Dry-run by default; --write also emits sync_summary.md for a PR body.

.github/workflows/weekly-sync.yml: runs it Mondays 06:00 UTC (+ manual dispatch), builds to verify, opens a PR when anything was added, no-op on a quiet week. Never auto-merges. Needs the ETHERSCAN_API_KEY repo secret for etherscan-family chains (Robinhood is keyless).

Also regenerates the two gate headers via the script so repo output matches the automation (no drift).
The fleet does not universally take a 10 bps fee: DailyWindowGate and MarketHoursGate were deployed as pure beforeSwap gates (flags 0x80) with no AeonFee. Reword the README intro, the AeonFee table row, and the AeonFee-base section, add the two gates to the hook table, and soften the generated HOOKS.md catalog line (via aggregate.py).
@aaronjmars
aaronjmars merged commit d8d4ba8 into main Sep 5, 2026
2 checks passed
@aaronjmars
aaronjmars deleted the fix/dailywindowgate-deployer branch September 5, 2026 21:12
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.

dailywindowgate.json: add optional deployer field for parity

1 participant