fix: bump ens-test-env devnet, refresh sepolia-v2 namespace, isolate orchestrator stack#2036
fix: bump ens-test-env devnet, refresh sepolia-v2 namespace, isolate orchestrator stack#2036
Conversation
…ent Sepolia V2 deployment on the virtual Sepolia chain.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
🦋 Changeset detectedLatest commit: 0969378 The changes in this PR will be included in the next version bump. This PR includes changesets to release 24 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
|
Warning Rate limit exceeded
To keep reviews running without waiting, you can enable usage-based add-on for your organization. This allows additional reviews beyond the hourly cap. Account admins can enable it under billing. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughThis PR consolidates infrastructure and configuration updates: refactors devnet account constants into a structured Changes
Estimated code review effort🎯 4 (Complex) | ⏱️ ~50 minutes Possibly related PRs
Suggested labels
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Review rate limit: 0/1 reviews remaining, refill in 52 minutes and 22 seconds.Comment |
Greptile SummaryThis PR bundles several interconnected infrastructure fixes: bumping the ens-test-env devnet image and reverting its chain id to Confidence Score: 5/5Safe to merge; the only finding is a P2 comment inaccuracy in the orchestrator compose file. All changes are mechanical and well-scoped: address refreshes, schema widening with no JS precision risk, a clean API refactor, and a compose restructuring verified end-to-end. The single P2 finding does not affect runtime behaviour. docker/docker-compose.orchestrator.yml — comment overstates isolation guarantees for parallel orchestrator runs. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
B[services/devnet.yml
container_name: devnet]
C[services/ensdb.yml
no ports]
A1[docker-compose.yml] -->|inherits devnet name
adds 5432:5432| C
A2[docker-compose.devnet.yml] -->|inherits devnet name
adds 5432:5432| C
A3[docker-compose.orchestrator.yml] -->|container_name: devnet-orchestrator
binds 5433:5432| C
A3 --> B
A3 -->|withWaitStrategy devnet-orchestrator| D[orchestrator.ts
ENSDB_PORT=5433
asserts chainId===31337]
style A3 fill:#f9f,stroke:#333
style D fill:#bbf,stroke:#333
Reviews (9): Last reviewed commit: "nit: disable ponder telemetry" | Re-trigger Greptile |
…tions CLAUDE.md was gitignored; now committed as a symlink to the canonical AGENTS.md so every agent session loads the repo's conventions instead of relying on the @-import resolving in CLAUDE.md. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Updates ENSNode’s devnet + sepolia-v2 configuration to accommodate a new (int4-overflowing) chain id, refresh sepolia-v2 deployments, and avoid Docker/Testcontainers collisions in integration orchestration.
Changes:
- Introduce
sepoliaV2Chain(id99911155111) and repoint the sepolia-v2 namespace to new virtual Sepolia addresses/start block. - Widen
chainIdcolumns fromint4→int8across ensdb-sdk schemas. - Refactor devnet account constants into
DevnetAccountsand adjust docker compose files to isolate orchestrator stacks (nocontainer_name, ephemeral ensdb port).
Reviewed changes
Copilot reviewed 27 out of 29 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/namehash-ui/src/utils/chains.ts | Imports sepoliaV2Chain and adds a custom display name for it. |
| packages/integration-test-env/src/orchestrator.ts | Renames log prefixes and updates Testcontainers wait strategies for non-container_name compose services. |
| packages/ensnode-sdk/src/shared/devnet-accounts.ts | Replaces flat DEVNET_* constants with structured DevnetAccounts. |
| packages/ensnode-sdk/src/shared/config/rpc-configs-from-env.ts | Adds special-casing to auto-provide an RPC URL for sepoliaV2Chain. |
| packages/ensnode-sdk/src/omnigraph-api/example-queries.ts | Switches example query variables to use DevnetAccounts. |
| packages/ensdb-sdk/src/ensindexer-abstract/tokenscope.schema.ts | Widen chainId columns to int8({ mode: "number" }). |
| packages/ensdb-sdk/src/ensindexer-abstract/protocol-acceleration.schema.ts | Widen chainId columns to int8({ mode: "number" }). |
| packages/ensdb-sdk/src/ensindexer-abstract/ensv2.schema.ts | Widen chainId columns to int8({ mode: "number" }). |
| packages/datasources/src/sepolia-v2.ts | Repoints sepolia-v2 namespace to sepoliaV2Chain and refreshes contract addresses + start block. |
| packages/datasources/src/lib/chains.ts | Reverts devnet chain id to 31337 and defines sepoliaV2Chain + RPC URL. |
| docker/services/ensrainbow.yml | Removes container_name; reformats healthcheck array. |
| docker/services/ensindexer.yml | Removes container_name; reformats healthcheck array. |
| docker/services/ensdb.yml | Removes container_name and fixed port mapping; reformats healthcheck array. |
| docker/services/ensapi.yml | Removes container_name; reformats healthcheck array. |
| docker/services/ensadmin.yml | Removes container_name. |
| docker/services/devnet.yml | Bumps devnet image; removes container_name; adds TODO re chain id; reformats healthcheck array. |
| docker/docker-compose.yml | Restores friendly container_names at the consumer compose layer; restores ensdb 5432:5432. |
| docker/docker-compose.orchestrator.yml | Uses no container_name and uses ephemeral host port for ensdb via extends. |
| docker/docker-compose.devnet.yml | Restores friendly container_names and ensdb 5432:5432 for manual devnet stack. |
| docker/README.md | Minor markdown whitespace tweak. |
| apps/ensindexer/src/lib/ponder-helpers.ts | Narrows cache-disable condition to ensTestEnvChain.id. |
| apps/ensapi/src/omnigraph-api/schema/account.integration.test.ts | Updates tests to use DevnetAccounts. |
| apps/ensapi/src/handlers/api/resolution/resolve-records.integration.test.ts | Updates tests to use DevnetAccounts. |
| apps/ensapi/src/handlers/api/resolution/resolve-primary-names.integration.test.ts | Updates tests to use DevnetAccounts. |
| apps/ensapi/src/handlers/api/resolution/resolve-primary-name.integration.test.ts | Updates tests to use DevnetAccounts. |
| .changeset/tame-clowns-tell.md | Adds a changeset for @ensnode/datasources sepolia-v2 refresh. |
| .changeset/cool-friends-share.md | Adds a changeset for ensindexer devnet commit bump. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…ify chain id Bumps the ens-test-env devnet image to main-580c60a (which natively defaults to chain id 31337) and updates 7 contract addresses in ens-test-env.ts that shifted in the new deterministic deployment: LegacyEthRegistrarController, UnwrappedEthRegistrarController, UniversalResolver (V1), UniversalResolverV2, ETHRegistrar (v2), DefaultPublicResolver4, DefaultPublicResolver5. Replaces the orchestrator's anvil_setChainId override with a getChainId() check that fails fast on mismatch, since the new image already defaults to 31337. Verified with 10 consecutive `pnpm test:integration:ci` runs, all green. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Actionable comments posted: 7
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
apps/ensapi/src/handlers/api/resolution/resolve-primary-names.integration.test.ts (1)
16-34:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winUpdate chainIds and expected response keys to devnet
31337.The cases around Lines 19/22 and 30/33 still use chain
"1". With devnet now on31337, these assertions are stale and may miss regressions on the active chain.Suggested patch
- "resolves primary names for owner address on chain 1 (no primary name set in devnet)", + "resolves primary names for owner address on chain 31337 (no primary name set in devnet)", address: DevnetAccounts.owner.address, - query: "chainIds=1", + query: "chainIds=31337", @@ - names: { "1": null }, + names: { "31337": null }, @@ description: "resolves all primary names", address: DevnetAccounts.owner.address, @@ - names: { "1": null }, + names: { "31337": null },🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/ensapi/src/handlers/api/resolution/resolve-primary-names.integration.test.ts` around lines 16 - 34, Update the test assertions in resolve-primary-names.integration.test.ts so they target the devnet chain id 31337 instead of "1": change the query string "chainIds=1" to "chainIds=31337" and update the expectedBody.names keys from "1" to "31337" in both affected test cases (the case with query "chainIds=1" and the "resolves all primary names" case that currently expects names { "1": null }). Ensure the string keys and any related comparisons use "31337" consistently.apps/ensapi/src/handlers/api/resolution/resolve-primary-name.integration.test.ts (1)
16-39:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winUse current devnet chain id in test cases (31337), not
"1".Lines 19, 28, and 36 still target
"1"while devnet is now31337. This can make the suite pass without asserting behavior on the active devnet chain.Suggested patch
- "resolves primary name for owner address on chain 1 (no primary name set in devnet)", + "resolves primary name for owner address on chain 31337 (no primary name set in devnet)", address: DevnetAccounts.owner.address, - chainId: "1", + chainId: "31337", @@ - "resolves primary name for user address on chain 1 (no primary name set in devnet)", + "resolves primary name for user address on chain 31337 (no primary name set in devnet)", address: DevnetAccounts.user.address, - chainId: "1", + chainId: "31337", @@ description: "owner address with accelerate=true returns accelerationRequested: true", address: DevnetAccounts.owner.address, - chainId: "1", + chainId: "31337",🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/ensapi/src/handlers/api/resolution/resolve-primary-name.integration.test.ts` around lines 16 - 39, The test cases in resolve-primary-name.integration.test.ts are using chainId "1" instead of the devnet chain id 31337; update the three test objects that set chainId to "1" (the cases referencing DevnetAccounts.owner.address and DevnetAccounts.user.address and the accelerate=true case) to use "31337" so they run against the active devnet chain; modify the chainId fields in those test entries to "31337" and run the integration tests to confirm behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.changeset/cool-friends-share.md:
- Line 5: Update the changeset note in .changeset/cool-friends-share.md so the
devnet commit reference matches the actual image tag used in this PR: replace
the old commit string "53f1482" with the current devnet image tag "main-580c60a"
(ensure the line that currently reads "Updates ens-test-env devnet commit to
`53f1482`." becomes "Updates ens-test-env devnet commit to `main-580c60a`.").
In `@docker/services/devnet.yml`:
- Line 11: The inline YAML array for the healthcheck command under the test key
contains extra spaces inside the brackets; update the test array (the "test" key
containing "CMD" and "curl") to use compact bracket syntax with no spaces after
'[' or before ']' (e.g., change the current spaced form to a compact inline
list) so YAMLlint no longer flags the bracket spacing.
In `@docker/services/ensapi.yml`:
- Line 10: Remove the extra spaces inside the inline YAML list for the docker
Compose healthcheck; update the test value (currently `test: [ "CMD", "curl",
"--fail", "-s", "http://localhost:4334/health" ]`) to use no spaces directly
after `[` and before `]` (e.g., `test:
["CMD","curl","--fail","-s","http://localhost:4334/health"]`) so it complies
with YAMLlint and standard inline-list formatting.
In `@docker/services/ensdb.yml`:
- Line 7: The YAML inline-list for the test key contains extra spaces inside the
square brackets (the value of test:), which triggers YAMLlint; fix by
normalizing the inline sequence to remove the internal spacing so the test
mapping uses a compact inline list (update the test value associated with the
test key in docker/services/ensdb.yml).
In `@docker/services/ensindexer.yml`:
- Line 10: The YAML inline list for the healthcheck "test" entry has extra
spaces inside the brackets; update the "test" value (the healthcheck test list)
to use standard YAML inline list spacing by removing the inner spaces so it
becomes a compact list (e.g.,
["CMD","curl","--fail","-s","http://localhost:42069/health"]) ensuring the key
name "test" and its list remain unchanged semantically.
In `@docker/services/ensrainbow.yml`:
- Line 12: The YAML inline list for the healthcheck "test" key contains extra
spaces inside the square brackets; update the list in
docker/services/ensrainbow.yml (the test entry containing "CMD", "wget", "-q",
"--spider", "http://localhost:3223/health") so there are no spaces directly
inside the brackets (e.g. change from [ "CMD", ... ] to ["CMD", ...]) to satisfy
YAMLlint.
In `@packages/ensdb-sdk/src/ensindexer-abstract/ensv2.schema.ts`:
- Around line 104-106: The schema introduced a widening to int8 for chainId but
left other chain-id fields as t.integer(), causing overflow on large chain IDs;
locate fields named registrarChainId (and any other chain id fields still using
t.integer() in the registration/ensv2 schema) and replace t.integer() with
t.int8({ mode: "number" }).notNull().$type<ChainId>() (or the exact int8 pattern
used for chainId) so the column and TypeScript type match the widened chainId;
ensure you update all occurrences (e.g., registration.registrarChainId and any
similar fields referenced elsewhere in the file) to the same int8 definition.
---
Outside diff comments:
In
`@apps/ensapi/src/handlers/api/resolution/resolve-primary-name.integration.test.ts`:
- Around line 16-39: The test cases in resolve-primary-name.integration.test.ts
are using chainId "1" instead of the devnet chain id 31337; update the three
test objects that set chainId to "1" (the cases referencing
DevnetAccounts.owner.address and DevnetAccounts.user.address and the
accelerate=true case) to use "31337" so they run against the active devnet
chain; modify the chainId fields in those test entries to "31337" and run the
integration tests to confirm behavior.
In
`@apps/ensapi/src/handlers/api/resolution/resolve-primary-names.integration.test.ts`:
- Around line 16-34: Update the test assertions in
resolve-primary-names.integration.test.ts so they target the devnet chain id
31337 instead of "1": change the query string "chainIds=1" to "chainIds=31337"
and update the expectedBody.names keys from "1" to "31337" in both affected test
cases (the case with query "chainIds=1" and the "resolves all primary names"
case that currently expects names { "1": null }). Ensure the string keys and any
related comparisons use "31337" consistently.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: e320de08-05aa-4f7e-87c1-77945bfe3d2d
📒 Files selected for processing (30)
.changeset/cool-friends-share.md.changeset/tame-clowns-tell.md.gitignoreCLAUDE.mdapps/ensapi/src/handlers/api/resolution/resolve-primary-name.integration.test.tsapps/ensapi/src/handlers/api/resolution/resolve-primary-names.integration.test.tsapps/ensapi/src/handlers/api/resolution/resolve-records.integration.test.tsapps/ensapi/src/omnigraph-api/schema/account.integration.test.tsapps/ensindexer/src/lib/ponder-helpers.tsdocker/README.mddocker/docker-compose.devnet.ymldocker/docker-compose.orchestrator.ymldocker/docker-compose.ymldocker/services/devnet.ymldocker/services/ensadmin.ymldocker/services/ensapi.ymldocker/services/ensdb.ymldocker/services/ensindexer.ymldocker/services/ensrainbow.ymlpackages/datasources/src/ens-test-env.tspackages/datasources/src/lib/chains.tspackages/datasources/src/sepolia-v2.tspackages/ensdb-sdk/src/ensindexer-abstract/ensv2.schema.tspackages/ensdb-sdk/src/ensindexer-abstract/protocol-acceleration.schema.tspackages/ensdb-sdk/src/ensindexer-abstract/tokenscope.schema.tspackages/ensnode-sdk/src/omnigraph-api/example-queries.tspackages/ensnode-sdk/src/shared/config/rpc-configs-from-env.tspackages/ensnode-sdk/src/shared/devnet-accounts.tspackages/integration-test-env/src/orchestrator.tspackages/namehash-ui/src/utils/chains.ts
💤 Files with no reviewable changes (2)
- docker/services/ensadmin.yml
- .gitignore
…V2Chain sepoliaV2Chain (Tenderly virtual chain id 99911155111) bypasses Alchemy / QuickNode / dRPC URL builders the same way ensTestEnvChain does. Update the two affected unit tests to skip provider assertions for that chain id, mirroring the existing lineaSepolia exception for QuickNode. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
… the Tenderly URL - chains.ts: drop the hardcoded `rpcUrls.default` overrides on `ensTestEnvChain` and `sepoliaV2Chain`. Consumers must now provide RPC_URL_99911155111 to index sepolia-v2. - rpc-configs-from-env.ts: remove the `if (chain.id === sepoliaV2Chain.id)` fallback — there's no project-specific URL to fall back to anymore. - rpc-configs-from-env.test.ts: extend the existing namespace filter to also exclude sepolia-v2 (no provider supports chainId 99911155111). - build-rpc-urls.test.ts: rename `LOCAL_CHAIN_IDS` to `CHAINS_WITHOUT_AUTO_RPC_SUPPORT` and include sepoliaV2Chain.id. - devnet.yml: pin chain id via `--chain 31337` so the devnet image's default drift can't break us. - .env.docker.devnet: update RPC_URL_15658733 → RPC_URL_31337 to match the ensTestEnvChain id revert. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 31 out of 33 changed files in this pull request and generated 4 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…chestrator + fixed port 5433 Per @sevenzing's review feedback: - services/*.yml regain `container_name:` so they're the source of truth. - docker-compose.yml and docker-compose.devnet.yml drop their `container_name:` overrides (now inherited). - docker-compose.orchestrator.yml overrides container_name to `devnet-orchestrator` and `ensdb-orchestrator` so its containers never collide with the manual stacks. - ensdb-orchestrator binds host port `5433:5432` (was ephemeral `0:5432`), giving developers a well-known port for `psql -h localhost -p 5433` after a test run. - orchestrator.ts: wait strategies use the new names; ENSDB_URL is now a fixed `localhost:5433` constant — drops the testcontainers `getMappedPort()` dance. - services/devnet.yml: fix typo `--chain 31337` → `--chainId 31337` (the flag the contracts-v2 image actually accepts). Verified end-to-end with `pnpm test:integration:ci` (12 files / 227 tests). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
@greptile review |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 28 out of 30 changed files in this pull request and generated 5 comments.
Comments suppressed due to low confidence (1)
CLAUDE.md:1
- The PR description states
CLAUDE.mdis a symlink toAGENTS.md, but this diff shows it as a regular file containing the textAGENTS.md. If the intent is a symlink, ensure it is committed as a Git symlink (mode120000) so tools resolve it correctly and it stays a true single source of truth.
# ENSNode
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (2)
docker/services/devnet.yml (2)
4-5: 🛠️ Refactor suggestion | 🟠 Major | ⚡ Quick winRe-add an explicit
--chainId 31337pin in the devnet command.This currently relies on upstream default behavior; an image bump can silently drift chain ID and break assumptions tied to
RPC_URL_31337.Suggested patch
- command: ./script/runDevnet.ts --testNames + command: ./script/runDevnet.ts --testNames --chainId 31337🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docker/services/devnet.yml` around lines 4 - 5, The devnet service command currently runs "./script/runDevnet.ts --testNames" without an explicit chain id; update the command string for the devnet container to include "--chainId 31337" (i.e., "./script/runDevnet.ts --testNames --chainId 31337") so the runtime no longer relies on upstream defaults and keeps RPC_URL_31337 assumptions stable.
12-12:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winFix YAML inline-list spacing for
healthcheck.test.The extra spaces inside
[]will keep YAMLlint failing.Suggested patch
- test: [ "CMD", "curl", "--fail", "-s", "http://localhost:8000/health" ] + test: ["CMD", "curl", "--fail", "-s", "http://localhost:8000/health"]🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docker/services/devnet.yml` at line 12, The inline list for the healthcheck key (healthcheck.test) has extra spaces inside the square brackets causing YAMLlint failures; edit the devnet.yml healthcheck test entry (the line containing test: [ "CMD", "curl", "--fail", "-s", "http://localhost:8000/health" ]) to remove the interior spacing so the inline list is compact (e.g. test: ["CMD","curl","--fail","-s","http://localhost:8000/health"] or equivalent properly spaced YAML list).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@packages/ensnode-sdk/src/shared/config/rpc-configs-from-env.test.ts`:
- Around line 10-12: You removed SepoliaV2 from the shared test matrix
(allPublicEnsNamespaceIds) but still need a dedicated test that asserts the
intended RPC URL behavior for SepoliaV2 (RPC_URL_99911155111); add a standalone
test that targets ENSNamespaceIds.SepoliaV2 and verifies the environment-derived
RPC URL value (or resolution logic) matches RPC_URL_99911155111, mirroring
assertions used in the auto-generated-provider tests but scoped only to
SepoliaV2 so the excluded constant remains covered.
---
Duplicate comments:
In `@docker/services/devnet.yml`:
- Around line 4-5: The devnet service command currently runs
"./script/runDevnet.ts --testNames" without an explicit chain id; update the
command string for the devnet container to include "--chainId 31337" (i.e.,
"./script/runDevnet.ts --testNames --chainId 31337") so the runtime no longer
relies on upstream defaults and keeps RPC_URL_31337 assumptions stable.
- Line 12: The inline list for the healthcheck key (healthcheck.test) has extra
spaces inside the square brackets causing YAMLlint failures; edit the devnet.yml
healthcheck test entry (the line containing test: [ "CMD", "curl", "--fail",
"-s", "http://localhost:8000/health" ]) to remove the interior spacing so the
inline list is compact (e.g. test:
["CMD","curl","--fail","-s","http://localhost:8000/health"] or equivalent
properly spaced YAML list).
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: d681a8f5-c559-4830-9826-4b26289d6dce
📒 Files selected for processing (11)
docker/docker-compose.devnet.ymldocker/docker-compose.orchestrator.ymldocker/docker-compose.ymldocker/envs/.env.docker.devnetdocker/services/devnet.ymldocker/services/ensdb.ymlpackages/datasources/src/lib/chains.tspackages/datasources/src/sepolia-v2.tspackages/ensnode-sdk/src/shared/config/build-rpc-urls.test.tspackages/ensnode-sdk/src/shared/config/rpc-configs-from-env.test.tspackages/integration-test-env/src/orchestrator.ts
💤 Files with no reviewable changes (1)
- docker/services/ensdb.yml
Reviewer Focus (Read This First)
chainIdcolumns widened fromint4→int8across all ensdb-sdk schemas. forced by sepolia-v2's new chain id (99911155111).sepoliaV2Chain(id99911155111) on tenderly virtual sepolia.0xeeeeed→31337to dodge mainnet.id=1 collision introduced by the upstream devnet bump.Problem & Motivation
main-e8696c6→main-53f1482).int4.services/devnet.yml's hardcodedcontainer_name: devnetcollides with the integration-test orchestrator any time a developer runs the manual devnet stack.@AGENTS.mdimport never reliably loaded for agents — symlinking it makes AGENTS.md the single source of truth across humans and AI tools.What Changed (Concrete)
main-53f1482; chain id reverted to31337.chainIdcolumns:t.integer()→t.int8({ mode: "number" })acrossensv2,protocol-acceleration,tokenscopeschemas.DevnetAccounts.{deployer,owner,user,user2}.{address,resolver}replaces flatDEVNET_*constants; tests migrated.container_nameand ensdb host port5432:5432hoisted out ofservices/*.ymlinto the consumer compose files.docker-compose.orchestrator.ymlsets neither → project-prefixed, fully isolated names; ephemeral postgres port. orchestrator wait strategy updated to match.rpc-configs-from-envandponder-helpersupdated to know aboutsepoliaV2Chain.CLAUDE.mdis now a symlink toAGENTS.md; corresponding line removed from.gitignore.Design & Planning
lightweight; no design doc. each step was tactical, surfaced while chasing the devnet bump. devnet host port left at
8545:8545— making it ephemeral would require threadingRPC_URL_<chainId>into the spawned ENSIndexer; deferred.Self-Review
int8(branch) +NormalizedAddress(main) inensv2.schema.ts; resolvedevent.sender(main, HCA-aware) +DevnetAccounts.deployer.address(branch) inaccount.integration.test.ts.disableCachecheck, orchestrator yml (no more inlined ensdb).DevnetAccountsgroups address/resolver per account.Cross-Codebase Alignment
container_name,DEVNET_DEPLOYER,ensTestEnvChain,chainId: t.integer,8545.AddressvsNormalizedAddressin non-chainIdcolumns ofprotocol-accelerationandtokenscopeschemas — pre-existing, out of scope.Downstream & Consumer Impact
@ensnode/ensnode-sdk/internal:DEVNET_*removed → useDevnetAccounts.@ensnode/datasources:sepoliaV2Chainnewly exported; sepolia-v2 namespace addresses fully replaced.docker users on
docker-compose.yml/docker-compose.devnet.yml: container names preserved, no behavior change.orchestrator container names now project-prefixed; any external tooling expecting literal
devnet/ensdbagainst the orchestrator will need updating.agents picking up the repo will now load AGENTS.md automatically via the CLAUDE.md symlink.
Public APIs affected:
@ensnode/ensnode-sdk/internal,@ensnode/datasourcesDocs updated: none required
Naming decisions worth calling out:
DevnetAccounts,sepoliaV2ChainTesting Evidence
pnpm -Ftypecheck passes for@ensnode/ensdb-sdk,ensapi,@ensnode/integration-test-envpost-merge.docker compose configclean for orchestrator + devnet compose files.@shrugs ran integration tests manually end-to-end after the docker compose refactor — green.
Testing performed: typecheck, compose-config validation, manual end-to-end integration test
Known gaps: orchestrator still collides on host port 8545 with a concurrent manual devnet
What reviewers have to reason about manually: int8 widening is invisible at the TS layer (still
number) — confirm no drizzle/postgresbigintedges are exposedScope Reductions
RPC_URL_<chainId>to ENSIndexer).Address→NormalizedAddresscleanup inprotocol-acceleration/tokenscopeschemas.each is independent of the devnet/sepolia-v2 bump.
Risk Analysis
sepolia-v2 namespace addresses changed: standard re-index on next deploy.
devnet chain id flip
0xeeeeed→31337: stale ponder caches harmless (disableCacheshort-circuits onensTestEnvChain.id).compose hoisting: only
docker-compose.orchestrator.ymlchanges behavior; manual stacks preserve friendly names.CLAUDE.md gitignore removal: anyone with their own personal
CLAUDE.mdwill hit a checkout conflict and need to delete or re-symlink locally.Risk areas: namespace address change, local CLAUDE.md conflicts on pull
Mitigations or rollback: revertable
Named owner if this causes problems: @shrugs
Pre-Review Checklist (Blocking)