feat: complete DailyWindowGate + MarketHoursGate (source, deployer, count) - #12
Merged
Merged
Conversation
- 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.
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).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.jsondeployer (onchain-verified, aeon EOA0x0DE9...00C8via CREATE20x4e59b448...), README 10->12,hooklist.jsonregenerated.2. In-repo source for the two hooks
Basescan-verified source vendored:
src/DailyWindowGate.sol,src/MarketHoursGate.sol+ missinglib/v4-corefiles (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 anyhooks/*.jsonlackingsrc/<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 secretETHERSCAN_API_KEYis 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 viaaggregate.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 --checkgreen; CI green.Closes #5.