Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
470 commits
Select commit Hold shift + click to select a range
270a007
Migrate trusted tokens to the config (#4189)
jmg-duarte Feb 20, 2026
a0266b8
Optimize uni v3 liquidity fetching (#4188)
MartinquaXD Feb 20, 2026
ce4e2a0
Compress S3 body in blocking task (#4185)
MartinquaXD Feb 20, 2026
a6d3976
Speedup event indexing (#4180)
MartinquaXD Feb 20, 2026
2ae17d2
Upgrade prometheus to 0.14 (#4193)
jmg-duarte Feb 23, 2026
a5111a1
Fix order of tokens to improve caching (#4197)
fafk Feb 23, 2026
d178974
Bulk insert order events query (#4184)
MartinquaXD Feb 23, 2026
8154b9d
Avoid unnecessary overhead from logging (#4191)
MartinquaXD Feb 23, 2026
3ec82fc
Migrate banned users, order events cleanup, and S3 config to config f…
jmg-duarte Feb 23, 2026
250f603
Serialize auction in blocking task (#4186)
MartinquaXD Feb 23, 2026
14d102e
Restructure observe crate (#4196)
MartinquaXD Feb 23, 2026
6a9cd2e
Remove backported header injector & extractor (#4200)
jmg-duarte Feb 23, 2026
1d3e3b8
Improve CoinGecko batching mechanism (#4202)
fafk Feb 24, 2026
38287ec
[TRIVIAL] Remove noisy tracing spans (#4203)
MartinquaXD Feb 24, 2026
7cf288e
Autopilot measure network transfer (#4204)
MartinquaXD Feb 24, 2026
c336771
Only check allowance of liquidity sources that are actually used (#4190)
MartinquaXD Feb 24, 2026
47ea629
Migrate autopilot native price estimation config from CLI args to con…
jmg-duarte Feb 25, 2026
e5dc1ea
[TRIVIAL] Change gzip level to 3 (#4209)
MartinquaXD Feb 25, 2026
6b242fd
Move orderbook configuration from CLI args to TOML config file (#4195)
jmg-duarte Feb 26, 2026
51a8fd0
[M3] docs(playground): add Using Otterscan user guide (#4146)
openjarvis2026 Feb 26, 2026
cb58b60
Add v1/orders POST endpoint to get orders in batches (#4048)
m-sz Feb 26, 2026
013b198
Migrate the playground config (#4214)
jmg-duarte Mar 2, 2026
74118ee
Compile only used packages in main Dockerfile (#4220)
jmg-duarte Mar 2, 2026
5cd893e
Replace full alloy import with specific alloy crates (#4219)
jmg-duarte Mar 2, 2026
8842809
Enhance error handling and reporting for app data deserialization (#4…
jmg-duarte Mar 2, 2026
213ae81
Optimize batching for CoinGecko (#4215)
fafk Mar 2, 2026
32fe75a
Compress `/solve` requests (#4212)
squadgazzz Mar 2, 2026
0684d7c
split off new crates from `shared` (#4223)
MartinquaXD Mar 3, 2026
b79d812
Allow multiple parallel settlements from one solver (#4167)
fafk Mar 4, 2026
209ddc4
Move price estimation into separate crate (#4225)
MartinquaXD Mar 4, 2026
a08b1a5
Migrate shared native price estimation config from CLI to config file…
jmg-duarte Mar 4, 2026
594a1af
Accept hex params with and without 0x prefix (#4228)
jmg-duarte Mar 4, 2026
1d4e32a
Add TOML formatting support (#4226)
jmg-duarte Mar 4, 2026
82d3e7c
Extract `signature-validator` and `zeroex-api` crates (#4224)
jmg-duarte Mar 4, 2026
c9db01a
Increase override amount (#4231)
fafk Mar 5, 2026
5131860
replace `alloy` dependencies with specific sub-dependencies (#4230)
MartinquaXD Mar 5, 2026
bbfa48f
Migrate the database shared configuration to a file (#4218)
jmg-duarte Mar 5, 2026
ae83cf7
reenable https support (#4238)
MartinquaXD Mar 6, 2026
fb96d59
Fix log instructions for claude (#4237)
fafk Mar 6, 2026
4b1a8f1
Dont rely on feature unification (#4240)
MartinquaXD Mar 6, 2026
540bc76
Extract autopilot config groups (ethflow, cow_amm, run_loop) to TOML …
jmg-duarte Mar 10, 2026
cd9c49b
Don't consider inflight orders invalid (#4241)
fafk Mar 10, 2026
f6afe62
Upgrade quinn-proto to 0.11.14 (#4245)
jmg-duarte Mar 10, 2026
1e76a49
Update trivy action (#4248)
jmg-duarte Mar 10, 2026
cfce4f9
Migrate OKX solver (#4236)
squadgazzz Mar 10, 2026
2fdd083
Debug endpoint (#4233)
fafk Mar 11, 2026
e287d6c
[TRIVIAL] Log order uids with encoding errors (#4250)
MartinquaXD Mar 11, 2026
10f71cb
Inline submission account config (#4242)
squadgazzz Mar 11, 2026
a1cb98b
Extract autopilot config to configs crate (#4246)
jmg-duarte Mar 11, 2026
b7643dd
BitGet solver (#4249)
squadgazzz Mar 11, 2026
41e27b5
Extract orderbook config to configs crate (#4247)
jmg-duarte Mar 11, 2026
f8ff3cb
Extract order_quoting, banned_users, http_client configs to configs c…
jmg-duarte Mar 11, 2026
64466d1
Fix Bitget API signature when using proxy endpoint (#4256)
squadgazzz Mar 12, 2026
73f1ecd
Store reasons why an order was removed from auction (#4251)
fafk Mar 12, 2026
911ae99
Move price-estimation config structs into configs (#4259)
m-sz Mar 12, 2026
5dc4b2a
[TRIVIAL] Update BitGet solver chain names (#4257)
squadgazzz Mar 12, 2026
a7a875a
Clean up solvers util (#4254)
squadgazzz Mar 12, 2026
275f5f3
Refactor http-client to separate crate (#4258)
m-sz Mar 12, 2026
e20bca0
Increase quote verification gas limit (#4261)
MartinquaXD Mar 13, 2026
c99b5d0
Use write DB for latency sensitive queries (#4262)
MartinquaXD Mar 13, 2026
96d9eb0
Allow full balance and allowance checking during order creation (#4229)
m-sz Mar 13, 2026
f59d9b4
Move common eth domain types to separate crate (#4260)
m-sz Mar 16, 2026
d9464bd
Extract price estimation config to configs crate (#4255)
jmg-duarte Mar 16, 2026
0441cea
Eth domain types driver (#4263)
m-sz Mar 16, 2026
01b3ede
Add custom solver errors (#4268)
fafk Mar 18, 2026
e2c2562
Remove lens from the servies (#4269)
AryanGodara Mar 18, 2026
d7fa1f9
Add knob to ensure gas floor for unverified quotes (#4276)
fafk Mar 19, 2026
3c96711
More efficient account trades query (#4273)
MartinquaXD Mar 19, 2026
c0da9fc
Configs to fix the playground (#4270)
jmg-duarte Mar 19, 2026
bfc4d08
Extract shared CLI arguments to config file-based SharedConfig (#4266)
jmg-duarte Mar 19, 2026
42b6778
Add knob to configure gas ceiling for unverified quotes (#4277)
fafk Mar 19, 2026
e6d3d0b
Simulator crate (#4265)
m-sz Mar 20, 2026
173321d
[TRIVIAL] Speed up analytics DB replication job (#4279)
MartinquaXD Mar 20, 2026
ffe4f5c
fix: Don't quote unsupported tokens (#4280)
fafk Mar 20, 2026
0d94cdf
Add serde tag to SimulatorKind (#4281)
m-sz Mar 20, 2026
10a6e60
Clamp gas value before declaring a winner (#4282)
MartinquaXD Mar 20, 2026
f476949
Fix cargo audit vulnerabilities (aws-lc-sys, rustls-webpki) (#4286)
squadgazzz Mar 23, 2026
eb71b52
Map Bitget API error codes to internal solver errors (#4285)
squadgazzz Mar 23, 2026
25a01e0
[EASY] Improve BitGet test (#4264)
squadgazzz Mar 23, 2026
38d8383
[EASY] Clean up remaining cargo audit advisories (#4287)
squadgazzz Mar 24, 2026
796b6e4
set docker image tag to git-sha aswell (#4289)
extrawurst Mar 24, 2026
2ed3e04
Map remaining Bitget error codes (80011-80015) (#4290)
squadgazzz Mar 24, 2026
f962723
Map OKX error code 51005 (honeypot token) to NotFound (#4293)
squadgazzz Mar 25, 2026
0a42e7c
Fix simulator using raw gas estimator without tip adjustments (#4298)
squadgazzz Mar 27, 2026
3dd0844
Remove Enso's simulator support (#4294)
jmg-duarte Mar 30, 2026
9adf10b
Add Claude Code GitHub Workflow (#4292)
squadgazzz Mar 31, 2026
d067d68
Log original request ID when reusing shared in-flight quote requests …
squadgazzz Mar 31, 2026
e1ae348
Allow solvers to set custom gas fees in their solution (#4299)
squadgazzz Mar 31, 2026
62f7d9b
Log custom solver errors on quoting (#4301)
jmg-duarte Mar 31, 2026
5b22ece
Simulation endpoint (#4275)
m-sz Apr 1, 2026
76446ea
Add block number to order simulation (#4305)
m-sz Apr 3, 2026
0c9026c
Update GH actions to use pinned commit SHA (#4312)
m-sz Apr 7, 2026
b10b826
Custom order simulation (#4304)
m-sz Apr 7, 2026
ab948dc
Skip balance check for flashloan orders (#4278)
felixjff Apr 7, 2026
7b16a3d
Partially filled orders support in simulation (#4306)
m-sz Apr 8, 2026
d6a912d
Add global query timeout to SELECT queries (#4272)
jmg-duarte Apr 8, 2026
2893987
Fix BalancerV2NoProtocolFeeLiquidityBootstrappingPoolFactory Sepolia …
jmg-duarte Apr 8, 2026
d293fd2
Advise Claude to use order debug endpoint (#4303)
fafk Apr 8, 2026
cfbec98
Refactor contracts crate out of the main folder for faster compilatio…
jmg-duarte Apr 8, 2026
0ea7a77
docs: add onboarding diagrams and entrypoints (#4311)
jmg-duarte Apr 9, 2026
1af5aa6
Add a timeout to balance override detection (#4317)
jmg-duarte Apr 9, 2026
1467ba0
Generate tendery link on simulation (#4320)
fafk Apr 9, 2026
befce9d
[TRIVIAL] Pin Claude workflow actions to full commit SHAs (#4323)
squadgazzz Apr 9, 2026
d0073a2
[TRIVIAL] Redact IPFS auth_token in debug (#4325)
jmg-duarte Apr 10, 2026
9281fe1
Surface transfer simulation revert reasons in order creation API (#4321)
squadgazzz Apr 10, 2026
0dd0349
Don't compile contract bindindgs we don't use (#4324)
MartinquaXD Apr 13, 2026
ab88398
Remove uniform clearing prices from winner selection (#4313)
jmg-duarte Apr 13, 2026
6cb520f
Update claude's log instructions (#4319)
fafk Apr 13, 2026
8789f93
Add E2E test to ensure flashloan filtering is performed correctly (#4…
jmg-duarte Apr 14, 2026
df3de51
Support reading TenderlyConfig api_key from environment variable (#4332)
squadgazzz Apr 14, 2026
689cce1
Hide competition until deadline passes (#4330)
fafk Apr 15, 2026
54fd012
Fix RUSTSEC issues (#4334)
fafk Apr 15, 2026
6cccc33
Bump alloy crates from 1.7.3 to 1.8.3 (#4333)
AryanGodara Apr 15, 2026
ea53cdc
Respect settle queue size (#4338)
fafk Apr 16, 2026
63bcb85
Use a common prefix for internal endpoints (#4339)
fafk Apr 16, 2026
17d9f10
Workflow to test contract generated code (#4336)
jmg-duarte Apr 16, 2026
3259720
Add internal solver competition endpoint (#4335)
fafk Apr 17, 2026
33a63b5
Add EIP-4626 native price estimator (#4243)
kaze-cow Apr 20, 2026
9d28f2a
[Driver] Add SettlementStarted solver notification (#4327)
kirsanium Apr 20, 2026
2c34db9
Correctly encode approval interactions for USDT-like tokens (#4354)
MartinquaXD Apr 21, 2026
2f337af
Use inline PR review comments from Claude code review (#4356)
squadgazzz Apr 22, 2026
3f80656
Bump rustls-webpki to 0.103.13 (RUSTSEC-2026-0104) (#4357)
squadgazzz Apr 22, 2026
8ce89a6
Support Aave v3 aToken balance overrides (#4345)
squadgazzz Apr 22, 2026
ebe8968
Include block number in logged Tenderly simulation command (#4359)
squadgazzz Apr 22, 2026
11bbbb7
Fix EIP-4626 contract revert classification (#4360)
jmg-duarte Apr 23, 2026
f58cbda
Add uni v3 defaults on gnosis chain (#4350)
MartinquaXD Apr 24, 2026
3cda241
Overshoot Spardose fake balance by 1% (#4362)
squadgazzz Apr 24, 2026
1ca6556
Propose multiple winning solutions in the driver (#4267)
fafk Apr 24, 2026
5ff7b4f
fix(playground): repair local compose config; prettier `test_playgrou…
igorroncevic Apr 27, 2026
cfaf996
Fix remaining sell error reporting for order simulation (#4364)
m-sz Apr 28, 2026
f5f2e8f
Log driver API request deserialization errors (#4358)
squadgazzz Apr 28, 2026
e8490f9
Make driver access list fetch optional (#4353)
squadgazzz Apr 28, 2026
bf40548
Classify EVM InvalidFEOpcode halts as contract reverts (#4365)
jmg-duarte Apr 28, 2026
0720b9b
Buy orders with same sell buy token (#4274)
ashleychandy Apr 30, 2026
b83c626
[TRIVIAL] Drop Claude Code workflows (#4381)
squadgazzz May 5, 2026
821ca33
Add Bitget buy-order support via reverse-quote endpoint (#4378)
squadgazzz May 5, 2026
544232c
Add parameter to configure `max-quote-timeout` (#4382)
MartinquaXD May 5, 2026
ad79223
Restore Balancer functions used by the gnosis/solvers repo (#4383)
squadgazzz May 5, 2026
01a70b0
[TRIVIAL] Log original quote when a new one gets computed (#4386)
MartinquaXD May 6, 2026
1a769e4
Add CoW Protocol quote-verification debug skill (#4369)
fleupold May 6, 2026
497ffe2
fix: use checked_* for `random_updated_at` (#4363)
metalurgical May 6, 2026
5069452
Enforce EIP-7825 per-tx gas cap on settlement (#4371)
0xDevNinja May 8, 2026
f7aa4c7
Pre-cache BUY_ETH_ADDRESS as non-vault (#4390)
jmg-duarte May 11, 2026
ab62fd1
Builder based API for `simulator` crate (#4372)
MartinquaXD May 11, 2026
2f77117
[TRIVIAL] Configure flashloan router address for all networks (#4397)
MartinquaXD May 11, 2026
ad67a90
[TRIVIAL] Remove `enforce-when-possible` quote verification mode (#4393)
MartinquaXD May 11, 2026
793b598
Drop tx.origin = 0x0000 bypass for ZeroEx RFQ quotes (#4394)
MartinquaXD May 11, 2026
ee3dc75
re-generate contracts (#4403)
MartinquaXD May 11, 2026
9bba462
Rename BalanceOverriding trait to StateOverriding (#4395)
MartinquaXD May 12, 2026
1fedb26
Collapse settlement metrics into single-pass `summarize()` (#4388)
ashleychandy May 12, 2026
05506aa
Fetch and log (and cache) buy/sell quote token symbols (#4396)
jmg-duarte May 12, 2026
f5f18e9
Refactor balance override logic (#4400)
MartinquaXD May 12, 2026
0865709
Introduce logic to compute approval overrides (#4401)
MartinquaXD May 12, 2026
947e2df
Implement new quote verification logic (#4402)
MartinquaXD May 12, 2026
c4852af
Add explicit call target into quote verification simulation (#4407)
MartinquaXD May 12, 2026
06ade38
Remove unnecessary order clone (#4406)
ashleychandy May 13, 2026
47af30f
Filter out solutions with a score of 0 (#4408)
MartinquaXD May 13, 2026
9f8d53c
Add Euler support bandaid (#4409)
MartinquaXD May 14, 2026
d0a7d2a
Fix honeyswap preset (#4413)
fleupold May 15, 2026
78ca01f
[TRIVIAL] Fix run-loop solve deadline default (#4419)
jmg-duarte May 16, 2026
3853dba
[Trivial] Make nightly formatting part of vscode settings (#4416)
fleupold May 19, 2026
3bc9afe
Track superseded mempool errors separately (#4385)
tilacog May 19, 2026
dcbc69d
Shadow-mode order simulation at creation (#4366)
squadgazzz May 19, 2026
ccd4700
Add Claude PR review workflow (#4423)
fleupold May 20, 2026
052c7d1
Remove deprecated Goerli chain (#4425)
AryanGodara May 20, 2026
0f8ad3d
fix: decode OrderUid.validTo as big-endian in Autopilot (#4404)
sunce86 May 20, 2026
0bde412
Fix rate calculation for the EIP4626 tokens (#4424)
jmg-duarte May 21, 2026
f2a0f7e
[Trivial] Fix linter on main (#4431)
fleupold May 22, 2026
b234678
Fix review action (#4428)
fleupold May 22, 2026
7cba4f6
chore: include offending order UID in fulfillment error message (#4415)
edjroz May 22, 2026
9af0ec2
Bounds check `Solver::swap` return in trade verifier (#4432)
squadgazzz May 22, 2026
21da8f9
apply haircut logic in pre-processing (#4417)
extrawurst May 22, 2026
48a3686
Introduce NATS JetStream as event bus (#4427)
MartinquaXD May 23, 2026
df6a14b
feat: remove old settlement forwarder (#4429)
igorroncevic May 25, 2026
992d93a
[ci] Update tombi to 1.1.0 (#4443)
jmg-duarte May 26, 2026
a0902a7
Implement zeroShadow Hermod support (#4426)
jmg-duarte May 26, 2026
e4d897a
Log Tenderly request payload and instrument shadow simulator span (#4…
squadgazzz May 26, 2026
363b031
Run cheap rejection checks before shadow simulation (#4436)
squadgazzz May 26, 2026
0f6fdb8
Inline shadow simulation and EIP-1271 sig check orchestration in vali…
squadgazzz May 26, 2026
bc4423a
Run transfer simulation in parallel with sig check and shadow sim (#4…
squadgazzz May 26, 2026
8b0b9f4
feat: add solver 7702 delegate (#4430)
igorroncevic May 27, 2026
ba95c29
Add dedicated `/ready` endpoint (#4445)
MartinquaXD May 28, 2026
b54766d
Explicitly dump symbol cache after generating the heap dump (#4452)
MartinquaXD May 28, 2026
c8c326a
Speed up user orders query (#4451)
MartinquaXD May 28, 2026
c7e22e3
Separate banned address backends from caches (#4446)
jmg-duarte May 28, 2026
a76acf9
chore: validate submission accounts on deserialization (#4450)
dymchenkko May 28, 2026
f9f09d7
Add duration histogram for order creation shadow simulation (#4453)
squadgazzz May 29, 2026
1f80d54
Remove deprecated v1/solver_competition endpoints (#4455)
jmg-duarte May 29, 2026
5341875
Fix openapi.yml's FeePolicy modelling (#4460)
jmg-duarte Jun 1, 2026
a014bed
Detect packed-balance storage layout for balance overrides (#4461)
squadgazzz Jun 3, 2026
49ea92c
Fix Claude review (again) (#4433)
fleupold Jun 3, 2026
c12f0df
Detect false positive reverts (#4465)
MartinquaXD Jun 3, 2026
11ba80c
feat(renovate): add renovatebot config for github actions in .github/…
glokos Jun 3, 2026
1b74cd7
Same token policy buy support (#4463)
extrawurst Jun 3, 2026
a87363c
deps(actions/checkout): update actions/checkout to v6 (#4470)
renovate[bot] Jun 4, 2026
31e0c18
Post-processing improvements (#4459)
MartinquaXD Jun 4, 2026
66d7427
deps(taiki-e/install-action): update taiki-e/install-action to v2.79.…
renovate[bot] Jun 4, 2026
82ece39
Fix order-creation simulation dropping hooks for hash-submitted order…
squadgazzz Jun 4, 2026
e9c7815
deps(actions/checkout): update actions/checkout to df4cb1c (#4474)
renovate[bot] Jun 5, 2026
8463104
deps(actions-rs/toolchain): update actions-rs/toolchain to v1.0.7 (#4…
renovate[bot] Jun 5, 2026
5efd5ce
deps(slackapi/slack-github-action): update slackapi/slack-github-acti…
renovate[bot] Jun 5, 2026
98a5ee0
deps(github/codeql-action): update github/codeql-action to v4 (#4487)
renovate[bot] Jun 5, 2026
16516fb
deps(docker/metadata-action): update docker/metadata-action to v6 (#4…
renovate[bot] Jun 5, 2026
8af98fa
deps(docker/login-action): update docker/login-action to v4 (#4485)
renovate[bot] Jun 5, 2026
2640927
deps(docker/build-push-action): update docker/build-push-action to v7…
renovate[bot] Jun 5, 2026
7a6cb27
deps(actions/upload-artifact): update actions/upload-artifact to v7 (…
renovate[bot] Jun 5, 2026
96214ab
support e2e tests out of the box in devcontainer (#4462)
extrawurst Jun 5, 2026
b0a2a55
ci(playground-check): update slack notification configuration in play…
glokos Jun 5, 2026
7bd40c5
deps(actions/stale): update actions/stale to v10 (#4482)
renovate[bot] Jun 5, 2026
6984857
deps(actions/add-to-project): update actions/add-to-project to v2 (#4…
renovate[bot] Jun 5, 2026
a4507d8
deps(actions/github-script): update actions/github-script to v9 (#4481)
renovate[bot] Jun 5, 2026
b185997
deps(swatinem/rust-cache): update swatinem/rust-cache to v2.9.1 (#4479)
renovate[bot] Jun 5, 2026
d3a4745
deps(aquasecurity/trivy-action): update aquasecurity/trivy-action to …
renovate[bot] Jun 5, 2026
b7d8140
deps(tombi-toml/setup-tombi): update tombi-toml/setup-tombi to v1.0.1…
renovate[bot] Jun 5, 2026
d662c88
deps(foundry-rs/foundry-toolchain): update foundry-rs/foundry-toolcha…
renovate[bot] Jun 5, 2026
c085fcd
Align `/solve` deadline with blockchain (#4457)
MartinquaXD Jun 5, 2026
add8db2
e2e test proving pre hook run on same token trade (#4490)
extrawurst Jun 5, 2026
3dfea2a
[TRIVIAL] Consistent format for logging transmission latency (#4492)
MartinquaXD Jun 5, 2026
65303f4
deps(docker/login-action): update docker/login-action to v4.2.0 (#4497)
renovate[bot] Jun 8, 2026
4e715ab
deps(docker/metadata-action): update docker/metadata-action to v6.1.0…
renovate[bot] Jun 8, 2026
a4bea43
deps(github/codeql-action): update github/codeql-action to v4.36.0 (#…
renovate[bot] Jun 8, 2026
f103b73
deps(anthropics/claude-code-action): update anthropics/claude-code-ac…
renovate[bot] Jun 8, 2026
327a4a5
[balance-overrides] replace cached with moka for caching (#4418)
ashleychandy Jun 8, 2026
06bfb95
feat: update Solver7702Delegate to audited code (#4500)
kaze-cow Jun 8, 2026
79d299e
pure bridging flow e2e test (#4493)
extrawurst Jun 8, 2026
e6f7b0c
fix(token-info): Reduce token-info metadata fetch fan out (#4420)
metalurgical Jun 8, 2026
7704a11
replace AlloyU256 alias with U256 (#4504)
ashleychandy Jun 8, 2026
efe6e5a
introduce the solana-indexer (bare) crate (#4505)
tilacog Jun 8, 2026
8282a44
Fix affiliation check in claude review action (#4491)
fleupold Jun 9, 2026
d3f4045
Stop consuming uniform clearing prices in the autopilot (#4370)
jmg-duarte Jun 9, 2026
03574b1
deps(anthropics/claude-code-action): update anthropics/claude-code-ac…
renovate[bot] Jun 9, 2026
ac430be
feat: add custom solver errors to schema (#4473)
shoom3301 Jun 10, 2026
65b6953
Avoid false-positive settlement cancellations during node receipt lag…
squadgazzz Jun 11, 2026
fdee223
[Trivial] Log decoded settlement tx to simulation log during /solve (…
fleupold Jun 11, 2026
5cd3ad7
fix: account for solver gas fee override in settlement balance check …
squadgazzz Jun 12, 2026
c1a3452
deps(taiki-e/install-action): update taiki-e/install-action to v2.81.…
renovate[bot] Jun 15, 2026
7e9acd2
deps(tombi-toml/setup-tombi): update tombi-toml/setup-tombi to v1.1.1…
renovate[bot] Jun 15, 2026
1ef2ab6
fix(request-sharing): Remove clone and fix gc task lifetime (#4411)
metalurgical Jun 15, 2026
176bc5d
[TRIVIAL] log only cow-amm order uids (#4523)
MartinquaXD Jun 15, 2026
37b4a29
[TRIVIAL] merge score handling loops to avoid allocations (#4522)
MartinquaXD Jun 15, 2026
14875cb
Build auction in new function to avoid unnecessary allocations (#4521)
MartinquaXD Jun 15, 2026
d0957d6
optimize `/solve` body serialization (#4520)
MartinquaXD Jun 15, 2026
7906f5c
Split orders into mutable and ref-counted immutable part (#4524)
MartinquaXD Jun 15, 2026
3a8a486
deps(anthropics/claude-code-action): update anthropics/claude-code-ac…
renovate[bot] Jun 16, 2026
9bb7f8a
Pool Indexer crate for uniswap-v3 liquidity from subgraphs (#4422)
AryanGodara Jun 16, 2026
a777e22
Remove unused code following some UCP removal (#4444)
jmg-duarte Jun 16, 2026
4cc55d1
Avoid duplicate uni v3 maintenance (#4526)
MartinquaXD Jun 16, 2026
0b37291
Reduce uni v3 memory footprint (#4525)
MartinquaXD Jun 16, 2026
f8b2c29
feat: add minimal byos and subsolver
jean-neiverth Jun 16, 2026
81a02a0
fix: use solver-determined fee for BYOS fulfillments
jean-neiverth Jun 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
66 changes: 15 additions & 51 deletions .cargo/audit.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,59 +5,23 @@
[advisories]
# Known vulnerabilities that are tracked in https://github.com/cowprotocol/services/issues/3338
ignore = [
# alloy-dyn-abi - DoS vulnerability (RUSTSEC-2025-0073)
# Needs upgrade to 1.4.1+ (part of alloy migration)
"RUSTSEC-2025-0073",
# rsa - Marvin Attack timing sidechannel (RUSTSEC-2023-0071)
# No patch available yet (cryptography vulnerability)
"RUSTSEC-2023-0071",

# idna - Punycode label vulnerability (RUSTSEC-2024-0421)
# Needs upgrade to 1.0.0+ (transitive dependency)
"RUSTSEC-2024-0421",
# derivative - Unmaintained (RUSTSEC-2024-0388)
# Evaluate alternatives (tracked in #3338)
"RUSTSEC-2024-0388",

# protobuf - Uncontrolled recursion (RUSTSEC-2024-0437)
# Needs upgrade to 3.7.2+ (transitive dependency)
"RUSTSEC-2024-0437",
# instant - Unmaintained (RUSTSEC-2024-0384)
# Use web-time instead (tracked in #3338)
"RUSTSEC-2024-0384",

# rsa - Marvin Attack timing sidechannel (RUSTSEC-2023-0071)
# No patch available yet (cryptography vulnerability)
"RUSTSEC-2023-0071",
# paste - Unmaintained (RUSTSEC-2024-0436)
# Archived upstream (tracked in #3338)
"RUSTSEC-2024-0436",

# sqlx - Binary protocol overflow (RUSTSEC-2024-0363)
# Needs upgrade to 0.8.1+ (breaking changes, tracked in #3338)
"RUSTSEC-2024-0363",

# tracing-subscriber - ANSI escape injection (RUSTSEC-2025-0055)
# Needs upgrade to 0.3.20+ (minimal risk in current usage)
"RUSTSEC-2025-0055",

# atty - Unmaintained (RUSTSEC-2024-0375)
# Migrate to std::io::IsTerminal (tracked in #3338)
"RUSTSEC-2024-0375",

# atty - Unsound potential unaligned read (RUSTSEC-2021-0145)
# Will be removed when migrating to std::io::IsTerminal
"RUSTSEC-2021-0145",

# derivative - Unmaintained (RUSTSEC-2024-0388)
# Evaluate alternatives (tracked in #3338)
"RUSTSEC-2024-0388",

# adler - Unmaintained (RUSTSEC-2025-0056)
# Use adler2 instead (tracked in #3338)
"RUSTSEC-2025-0056",

# instant - Unmaintained (RUSTSEC-2024-0384)
# Use web-time instead (tracked in #3338)
"RUSTSEC-2024-0384",

# paste - Unmaintained (RUSTSEC-2024-0436)
# Archived upstream (tracked in #3338)
"RUSTSEC-2024-0436",

# proc-macro-error - Unmaintained (RUSTSEC-2024-0370)
# Transitive dependency (tracked in #3338)
"RUSTSEC-2024-0370",

# model crate - data race in Shared (RUSTSEC-2020-0140)
# Internal crate issue (tracked in #3338)
"RUSTSEC-2020-0140",
# model crate - data race in Shared (RUSTSEC-2020-0140)
# Internal crate issue (tracked in #3338)
"RUSTSEC-2020-0140",
]
2 changes: 0 additions & 2 deletions .cargo/config.toml

This file was deleted.

28 changes: 28 additions & 0 deletions .claude/commands/debug-order.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
description: Debug why a CoW Protocol order failed to match
---

Debug order: $ARGUMENTS

Read and follow the instructions in ./docs/COW_ORDER_DEBUG_SKILL.md to investigate this order.

Key steps:
1. Parse the order UID and network from arguments (default: mainnet)
2. **Start with the debug endpoint** — fetch the comprehensive debug report first:
```bash
source .env.claude && curl -s -H "X-API-Key: $COW_DEBUG_API_KEY" "https://partners.cow.fi/$NETWORK/restricted/api/v1/debug/order/$ORDER_UID" | jq .
```
This returns order details, lifecycle events, auction participation, proposed solutions, executions, trades, and settlement attempts — all in one call.
3. Analyze the debug report — key event meanings:
- `ready` = order made it into an auction (was sent to solvers)
- `considered` = a solver included this order in a solution but that solution didn't win
- `executing` = order is in the winning solution, being submitted on-chain
- `traded` = order was settled on-chain
- `filtered` / `invalid` = order was excluded (check the `reason` field)
4. Search Victoria Logs for additional context (filter reasons, error details, solver logs)
- For finding discarded solutions where the order UID appears in calldata, use regex: `.*ORDER_UID_WITHOUT_0X.*` plus `discarded`
5. Use DB queries or API calls only if the debug report is missing info or you need deeper investigation
6. Identify root cause and report findings with evidence
7. If you haven't found anything go wild and try all SQL / log searches / codebase searches you can think of

Always show your evidence (log lines, DB results, API responses) when presenting findings.
5 changes: 2 additions & 3 deletions .clippy.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
disallowed-methods = [
{ path = "web3::api::Net::version", reason = "Calling `eth().chain_id().await?.to_string()` is equivalent and is better supported." },
{ path = "alloy::rpc::client::RpcClient::new_batch", reason = "There is no need to manually send batched requests because the alloy transport layer batches requests automatically under the hood." },
{ path = "alloy::rpc::client::BatchRequest::new", reason = "There is no need to manually send batched requests because the alloy transport layer batches requests automatically under the hood." },
{ path = "alloy::rpc::client::RpcClient::new_batch", reason = "There is no need to manually send batched requests because the alloy transport layer batches requests automatically under the hood." },
{ path = "alloy::rpc::client::BatchRequest::new", reason = "There is no need to manually send batched requests because the alloy transport layer batches requests automatically under the hood." },
]
await-holding-invalid-types = [
"tracing::span::Entered",
Expand Down
2 changes: 1 addition & 1 deletion .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM mcr.microsoft.com/devcontainers/base:bullseye
FROM mcr.microsoft.com/devcontainers/base:bookworm

RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
# Remove imagemagick due to https://security-tracker.debian.org/tracker/CVE-2019-10131
Expand Down
18 changes: 16 additions & 2 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
},
"ghcr.io/devcontainers/features/rust:1": {},
"ghcr.io/devcontainers/features/git:1": {},
"ghcr.io/nlordell/features/foundry": {},
"ghcr.io/nlordell/features/foundry": { "version": "v1.7.1" },
"ghcr.io/devcontainers/features/docker-in-docker:2": {
"dockerDashComposeVersion": "v2"
},
Expand All @@ -33,6 +33,17 @@
"seccomp=unconfined"
],

"containerEnv": {
"PGHOST": "localhost",
"PGPORT": "5432",
"PGUSER": "vscode",
"PGDATABASE": "vscode",
// Drop debug info from dev/test builds: the e2e test binary's debug info
// is large enough to get the linker OOM-killed on a stock setup.
"CARGO_PROFILE_DEV_DEBUG": "0",
"CARGO_PROFILE_TEST_DEBUG": "0"
},

"customizations": {
"vscode": {
"settings": {
Expand All @@ -51,7 +62,10 @@

// Use 'postCreateCommand' to run commands after the container is created.
// "postCreateCommand": "rustc --version",
"postCreateCommand": "rustup toolchain install nightly && cargo install flamegraph",
"postCreateCommand": "rustup toolchain install nightly --component rustfmt && cargo install flamegraph && cargo install cargo-nextest --locked && cargo install just --locked && bash .devcontainer/setup-e2e.sh",

// (Re)start the local Postgres cluster on every container start.
"postStartCommand": "bash .devcontainer/start-postgres.sh",

// Set `remoteUser` to `root` to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
"remoteUser": "vscode"
Expand Down
69 changes: 69 additions & 0 deletions .devcontainer/setup-e2e.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
#!/usr/bin/env bash
#
# Provisions the one thing the e2e test suite needs but the base image can't
# provide out of the box:
#
# * Postgres server – we run a native server (rather than the docker-compose
# one) so it survives container restarts and is up before any test
# runs, then apply the flyway migrations the harness expects to
# already exist.
#
# anvil/forge come from the foundry devcontainer feature; their prebuilt binaries
# run directly on the bookworm base image (glibc >= 2.32), so nothing to do here.
#
# Runs as `postCreateCommand` (once, when the container is created).
set -euo pipefail

REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"

# -----------------------------------------------------------------------------
echo "==> postgres"
# Install a server only if no cluster exists yet (fresh container). Reuse whatever
# version is already present otherwise, so this is safe to re-run.
if ! ls -d /etc/postgresql/*/main >/dev/null 2>&1; then
echo " installing postgresql-16..."
sudo apt-get update -qq
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y -qq postgresql-16
fi
PG_VERSION="$(ls /etc/postgresql | sort -n | tail -1)"
echo " using cluster ${PG_VERSION}/main"

# Start the cluster (shared with postStart so the two can't drift).
bash "$REPO_ROOT/.devcontainer/start-postgres.sh"

# Trust auth for local connections (development container only).
HBA="/etc/postgresql/${PG_VERSION}/main/pg_hba.conf"
sudo tee "$HBA" >/dev/null <<'EOF'
local all all trust
host all all 127.0.0.1/32 trust
host all all ::1/128 trust
EOF
sudo pg_ctlcluster "$PG_VERSION" main reload

# The e2e harness connects with the bare url `postgresql://`, which resolves to a
# role and database named after $PGUSER/$PGDATABASE (see containerEnv in
# devcontainer.json and DatabasePoolConfig::test_default).
psql -h 127.0.0.1 -U postgres -d postgres -tAc \
"SELECT 1 FROM pg_roles WHERE rolname='${PGUSER}'" | grep -q 1 \
|| psql -h 127.0.0.1 -U postgres -d postgres -c \
"CREATE ROLE \"${PGUSER}\" LOGIN SUPERUSER;"
psql -h 127.0.0.1 -U postgres -d postgres -tAc \
"SELECT 1 FROM pg_database WHERE datname='${PGDATABASE}'" | grep -q 1 \
|| psql -h 127.0.0.1 -U postgres -d postgres -c \
"CREATE DATABASE \"${PGDATABASE}\" OWNER \"${PGUSER}\";"

# Apply the migrations with the same flyway image the rest of the repo uses
# (see docker-compose.yaml). Flyway tracks what it has already applied, so this is
# incremental and idempotent: re-running only applies new migrations and fails
# loudly if one is incompatible with the current schema. The native server runs
# on the host network namespace, so `--network=host` lets flyway reach it on
# 127.0.0.1:${PGPORT}.
echo " applying flyway migrations..."
docker run --rm --network=host \
-v "$REPO_ROOT/database/sql:/flyway/sql:ro" \
-v "$REPO_ROOT/database/conf:/flyway/conf:ro" \
flyway/flyway:10.7.1 \
-url="jdbc:postgresql://127.0.0.1:${PGPORT}/${PGDATABASE}?user=${PGUSER}&password=" \
migrate

echo "==> e2e environment ready (postgres)"
17 changes: 17 additions & 0 deletions .devcontainer/start-postgres.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/usr/bin/env bash
#
# Starts the local Postgres cluster on every container start. There is no init
# system in the container, so the cluster does not come up on its own after a
# stop/start. Provisioning (install, role, db, migrations) is done once by
# setup-e2e.sh; this only (re)starts what already exists.
#
# Runs as `postStartCommand`.
set -euo pipefail

PG_VERSION="$(ls /etc/postgresql | sort -n | tail -1)"

# `start` errors if the cluster is already running, so only start it when it
# isn't online; a genuine start failure then surfaces instead of being swallowed.
if ! pg_lsclusters -h "$PG_VERSION" main | grep -q online; then
sudo pg_ctlcluster "$PG_VERSION" main start
fi
5 changes: 5 additions & 0 deletions .gemini/config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
code_review:
pull_request_opened:
summary: false
code_review: true
include_drafts: false
15 changes: 15 additions & 0 deletions .gemini/styleguide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Code Review Style Guide: Stricter & Actionable Feedback Only

## 1. Interaction & Noise Reduction
* **No Positive Feedback:** Do not post comments that praise the code, highlight "good solutions," or confirm that a change is a "good improvement."
* **Confirm Clean Reviews:** If no critical issues are found, post a single summary comment stating "No critical issues found" rather than staying silent.
* **Severity Threshold:** Only surface findings that meet the "High" or "Critical" severity criteria. Treat "Medium" findings as "Low" and ignore them unless they represent a direct logic error.
* **Focus on Changed Code:** Only comment on code that was actually modified in the PR. Do not flag issues in unchanged code or code that was simply moved/refactored without logic changes, unless the issue is a severe security vulnerability or critical bug.

## 2. Technical Standards
* **Actionability:** Every comment must include a clear, actionable suggestion for improvement. Do not leave "FYI" or informational comments.
* **Edge Cases & Logic:** Focus exclusively on identifying missing edge cases, potential race conditions, or logic that deviates from the PR's stated goals.
* **Security & Performance:** Prioritize findings related to resource leaks, unnecessary complexity, or potential security vulnerabilities.

## 3. Formatting
* **Conciseness:** Keep comments concise, direct and technical. Skip the introductory and concluding pleasantries.
2 changes: 1 addition & 1 deletion .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
* @cowprotocol/backend

.github/workflows/ @cowprotocol/devops @cowprotocol/backend
4 changes: 4 additions & 0 deletions .github/codeql/codeql-config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
name: "CoW Protocol CodeQL Config"

paths-ignore:
- crates/e2e
6 changes: 3 additions & 3 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
# Changes
<!-- List of detailed changes (how the change is accomplished) -->

- [ ] ...
- [ ] ...
* ...
* ...

## How to test
<!--- Include details of how to test your changes, including any pre-requisites. If no unit tests are included, please explain why and how to test manually
Expand All @@ -18,4 +18,4 @@
## Related Issues

Fixes #
-->
-->
27 changes: 27 additions & 0 deletions .github/renovate.json5
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// This file follows JSON5 syntax, to make it
// easier to maintain.
{
$schema: "https://docs.renovatebot.com/renovate-schema.json",
// Disable every built-in manager (npm, dockerfile, ...) except github-actions.
enabledManagers: ["github-actions"],
// PR titles use Conventional Commits: `deps(<action>): ...`
semanticCommits: "enabled",
semanticCommitType: "deps",
packageRules: [
// GitHub Actions updates: run weekly, skip releases newer than 2 weeks
// to avoid picking up freshly published versions that may be unstable or
// compromised, and pin to full commit SHAs (with the version as a
// trailing comment) rather than mutable tags.
// When both major and minor releases exist, propose only the latest bump
// (typically major) instead of a separate minor PR.
{
matchManagers: ["github-actions"],
schedule: ["on monday"],
minimumReleaseAge: "14 days",
pinDigests: true,
separateMajorMinor: false,
semanticCommitScope: "{{depName}}",
commitMessageTopic: "{{depName}}",
},
],
}
2 changes: 1 addition & 1 deletion .github/workflows/add-to-project.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
name: Add issue to project
runs-on: ubuntu-latest
steps:
- uses: actions/add-to-project@244f685bbc3b7adfa8466e08b698b5577571133e # v1.0.2
- uses: actions/add-to-project@5afcf98fcd03f1c2f92c3c83f58ae24323cc57fd # v2.0.0
with:
project-url: https://github.com/orgs/cowprotocol/projects/8
github-token: ${{ secrets.ADD_TO_PROJECT_PAT }}
Loading
Loading