Hotfix/22f5cb7 - #2349
Conversation
Releases: @ensnode/datasources@1.17.0 @ensnode/ensdb-sdk@1.17.0 ensindexer@1.17.0 enskit@1.17.0 @ensnode/ensnode-sdk@1.17.0 ensapi@1.17.0 enssdk@1.17.0 ensskills@1.17.0 ensadmin@1.17.0 fallback-ensapi@1.17.0 enscli@1.17.0 @ensnode/integration-test-env@1.17.0 @namehash/namehash-ui@1.17.0 @ensnode/ensdb-cli@1.16.1 @docs/ensnode@1.17.0 ensrainbow@1.17.0 @namehash/ens-referrals@1.17.0 @ensnode/ensrainbow-sdk@1.17.0 @docs/ensrainbow@1.17.0 @ensnode/ponder-sdk@1.17.0 @ensnode/ponder-subgraph@1.17.0 @ensnode/shared-configs@1.17.0 @ensnode/ensindexer-perf-testing@1.17.0 [skip ci]
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
🦋 Changeset detectedLatest commit: b8bd32a The changes in this PR will be included in the next version bump. This PR includes changesets to release 23 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 Review limit reached
Next review available in: 56 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughThe release metadata advances applications and packages to version 1.17.0, documents EFP and per-chain indexing changes, updates container defaults, and adjusts registration expiration and reverse-name validation behavior with tests. ChangesVersion 1.17.0 release rollup
Registration behavior fixes
Estimated code review effort: 3 (Moderate) | ~20 minutes Suggested labels: Poem
🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (3 passed)
✨ 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. Comment |
There was a problem hiding this comment.
Pull request overview
This PR updates ENSNode/service and package versioning metadata (and Docker compose default image tags) while applying the isRegistrationFullyExpired boundary hotfix in @ensnode/ensnode-sdk and adding unit coverage for registration-expiration helpers.
Changes:
- Adjust
isRegistrationFullyExpiredto treatnow == expiry + gracePeriodas not fully expired, and add Vitest coverage for expiration helpers. - Bump many workspace package/app/doc versions to
1.17.0(and add corresponding changelog sections / OpenAPI version). - Remove multiple
.changeset/*entries (as if they were consumed by a versioning step).
Reviewed changes
Copilot reviewed 66 out of 66 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/shared-configs/package.json | Bump package version to 1.17.0. |
| packages/shared-configs/CHANGELOG.md | Add 1.17.0 changelog header. |
| packages/ponder-subgraph/package.json | Bump package version to 1.17.0. |
| packages/ponder-subgraph/CHANGELOG.md | Add 1.17.0 changelog header. |
| packages/ponder-sdk/package.json | Bump package version to 1.17.0. |
| packages/ponder-sdk/CHANGELOG.md | Add 1.17.0 changelog header. |
| packages/namehash-ui/package.json | Bump package version to 1.17.0. |
| packages/namehash-ui/CHANGELOG.md | Add 1.17.0 changelog entry with dependency bumps. |
| packages/integration-test-env/package.json | Bump package version to 1.17.0. |
| packages/integration-test-env/CHANGELOG.md | Add 1.17.0 changelog entry with dependency bumps. |
| packages/ensskills/package.json | Bump package version to 1.17.0. |
| packages/ensskills/CHANGELOG.md | Add 1.17.0 changelog entry. |
| packages/enssdk/package.json | Bump package version to 1.17.0. |
| packages/enssdk/CHANGELOG.md | Add 1.17.0 changelog entry. |
| packages/ensrainbow-sdk/package.json | Bump package version to 1.17.0. |
| packages/ensrainbow-sdk/CHANGELOG.md | Add 1.17.0 changelog entry with dependency bumps. |
| packages/ensnode-sdk/src/registrars/registration-expiration.ts | Fix fully-expired boundary comparison (>= → >). |
| packages/ensnode-sdk/src/registrars/registration-expiration.test.ts | Add Vitest coverage for registration-expiration helpers. |
| packages/ensnode-sdk/package.json | Bump package version to 1.17.0. |
| packages/ensnode-sdk/CHANGELOG.md | Add 1.17.0 changelog section. |
| packages/enskit/package.json | Bump package version to 1.17.0. |
| packages/enskit/CHANGELOG.md | Add 1.17.0 changelog entry. |
| packages/ensindexer-perf-testing/package.json | Bump package version to 1.17.0. |
| packages/ensindexer-perf-testing/CHANGELOG.md | Add 1.17.0 changelog header. |
| packages/ensdb-sdk/package.json | Bump package version to 1.17.0. |
| packages/ensdb-sdk/CHANGELOG.md | Add 1.17.0 changelog entry. |
| packages/ensdb-cli/package.json | Bump package version to 1.16.1. |
| packages/ensdb-cli/CHANGELOG.md | Add new changelog file for 1.16.1. |
| packages/enscli/package.json | Bump package version to 1.17.0. |
| packages/enscli/CHANGELOG.md | Add 1.17.0 changelog entry with dependency bumps. |
| packages/ens-referrals/package.json | Bump package version to 1.17.0. |
| packages/ens-referrals/CHANGELOG.md | Add 1.17.0 changelog entry with dependency bumps. |
| packages/datasources/package.json | Bump package version to 1.17.0. |
| packages/datasources/CHANGELOG.md | Add 1.17.0 changelog entry. |
| docs/ensrainbow.io/package.json | Bump docs package version to 1.17.0. |
| docs/ensrainbow.io/CHANGELOG.md | Add 1.17.0 changelog entry. |
| docs/ensnode.io/package.json | Bump docs package version to 1.17.0. |
| docs/ensnode.io/ensapi-openapi.json | Bump OpenAPI info.version to 1.17.0. |
| docs/ensnode.io/CHANGELOG.md | Add 1.17.0 changelog entry with dependency bumps. |
| docker/services/ensrainbow.yml | Update default Docker image tag to 1.17.0. |
| docker/services/ensindexer.yml | Update default Docker image tag to 1.17.0. |
| docker/services/ensapi.yml | Update default Docker image tag to 1.17.0. |
| docker/services/ensadmin.yml | Update default Docker image tag to 1.17.0. |
| apps/fallback-ensapi/package.json | Bump app version to 1.17.0. |
| apps/fallback-ensapi/CHANGELOG.md | Add 1.17.0 changelog entry with dependency bumps. |
| apps/ensrainbow/package.json | Bump app version to 1.17.0. |
| apps/ensrainbow/CHANGELOG.md | Add 1.17.0 changelog entry with dependency bumps. |
| apps/ensindexer/package.json | Bump app version to 1.17.0. |
| apps/ensindexer/CHANGELOG.md | Add 1.17.0 changelog entry. |
| apps/ensapi/package.json | Bump app version to 1.17.0. |
| apps/ensapi/CHANGELOG.md | Add 1.17.0 changelog entry. |
| apps/ensadmin/package.json | Bump app version to 1.17.0. |
| apps/ensadmin/CHANGELOG.md | Add 1.17.0 changelog entry with dependency bumps. |
| .changeset/sepolia-v2-latest-addresses.md | Remove changeset entry. |
| .changeset/moody-wasps-flow.md | Remove changeset entry. |
| .changeset/fix-label-heal-cascade.md | Remove changeset entry. |
| .changeset/ensindexer-sdk-indexed-blockranges.md | Remove changeset entry. |
| .changeset/ensindexer-per-chain-end-blocks.md | Remove changeset entry. |
| .changeset/ensdb-sdk-schema-metadata-helpers.md | Remove changeset entry. |
| .changeset/efp-protocol-skill.md | Remove changeset entry. |
| .changeset/efp-omnigraph.md | Remove changeset entry. |
| .changeset/efp-ensnode-sdk.md | Remove changeset entry. |
| .changeset/efp-enskit.md | Remove changeset entry. |
| .changeset/efp-ensindexer.md | Remove changeset entry. |
| .changeset/efp-ensdb-sdk.md | Remove changeset entry. |
| .changeset/efp-datasources.md | Remove changeset entry. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
🚀 Preview Packages -
|
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@packages/ensnode-sdk/src/registrars/registration-expiration.ts`:
- Around line 26-27: The expiration check in isRegistrationFullyExpired leaves a
boundary gap at expiry + gracePeriod, so make that upper bound inclusive by
changing the comparison there (and keep isRegistrationInGracePeriod
complementary) so the two helpers cover the exact transition point without
overlap or gap.
🪄 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: 5221cb64-74ab-4277-8cd1-fb3fa7e10f43
📒 Files selected for processing (66)
.changeset/efp-datasources.md.changeset/efp-ensdb-sdk.md.changeset/efp-ensindexer.md.changeset/efp-enskit.md.changeset/efp-ensnode-sdk.md.changeset/efp-omnigraph.md.changeset/efp-protocol-skill.md.changeset/ensdb-sdk-schema-metadata-helpers.md.changeset/ensindexer-per-chain-end-blocks.md.changeset/ensindexer-sdk-indexed-blockranges.md.changeset/fix-label-heal-cascade.md.changeset/moody-wasps-flow.md.changeset/sepolia-v2-latest-addresses.mdapps/ensadmin/CHANGELOG.mdapps/ensadmin/package.jsonapps/ensapi/CHANGELOG.mdapps/ensapi/package.jsonapps/ensindexer/CHANGELOG.mdapps/ensindexer/package.jsonapps/ensrainbow/CHANGELOG.mdapps/ensrainbow/package.jsonapps/fallback-ensapi/CHANGELOG.mdapps/fallback-ensapi/package.jsondocker/services/ensadmin.ymldocker/services/ensapi.ymldocker/services/ensindexer.ymldocker/services/ensrainbow.ymldocs/ensnode.io/CHANGELOG.mddocs/ensnode.io/ensapi-openapi.jsondocs/ensnode.io/package.jsondocs/ensrainbow.io/CHANGELOG.mddocs/ensrainbow.io/package.jsonpackages/datasources/CHANGELOG.mdpackages/datasources/package.jsonpackages/ens-referrals/CHANGELOG.mdpackages/ens-referrals/package.jsonpackages/enscli/CHANGELOG.mdpackages/enscli/package.jsonpackages/ensdb-cli/CHANGELOG.mdpackages/ensdb-cli/package.jsonpackages/ensdb-sdk/CHANGELOG.mdpackages/ensdb-sdk/package.jsonpackages/ensindexer-perf-testing/CHANGELOG.mdpackages/ensindexer-perf-testing/package.jsonpackages/enskit/CHANGELOG.mdpackages/enskit/package.jsonpackages/ensnode-sdk/CHANGELOG.mdpackages/ensnode-sdk/package.jsonpackages/ensnode-sdk/src/registrars/registration-expiration.test.tspackages/ensnode-sdk/src/registrars/registration-expiration.tspackages/ensrainbow-sdk/CHANGELOG.mdpackages/ensrainbow-sdk/package.jsonpackages/enssdk/CHANGELOG.mdpackages/enssdk/package.jsonpackages/ensskills/CHANGELOG.mdpackages/ensskills/package.jsonpackages/integration-test-env/CHANGELOG.mdpackages/integration-test-env/package.jsonpackages/namehash-ui/CHANGELOG.mdpackages/namehash-ui/package.jsonpackages/ponder-sdk/CHANGELOG.mdpackages/ponder-sdk/package.jsonpackages/ponder-subgraph/CHANGELOG.mdpackages/ponder-subgraph/package.jsonpackages/shared-configs/CHANGELOG.mdpackages/shared-configs/package.json
💤 Files with no reviewable changes (13)
- .changeset/fix-label-heal-cascade.md
- .changeset/efp-datasources.md
- .changeset/efp-ensindexer.md
- .changeset/ensindexer-per-chain-end-blocks.md
- .changeset/efp-ensnode-sdk.md
- .changeset/sepolia-v2-latest-addresses.md
- .changeset/moody-wasps-flow.md
- .changeset/efp-omnigraph.md
- .changeset/efp-enskit.md
- .changeset/efp-protocol-skill.md
- .changeset/ensindexer-sdk-indexed-blockranges.md
- .changeset/ensdb-sdk-schema-metadata-helpers.md
- .changeset/efp-ensdb-sdk.md
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
apps/ensindexer/src/plugins/unigraph/handlers/ensv2/ENSv2Registry.ts (1)
106-120: 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick winGuard reverse-name detection by label shape
registrantIdis a normalized0x-prefixed address and reverse labels are 40 hex chars, butendsWith(label)still accepts any shorter matching suffix. Add alabel.length === 40/hex check before skipping the expiration invariant.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@apps/ensindexer/src/plugins/unigraph/handlers/ensv2/ENSv2Registry.ts` around lines 106 - 120, Update the isReverseNameRegistration calculation in ENSv2Registry handling to require that label is exactly 40 hexadecimal characters before checking registrantId.endsWith(label); only then may the expiration invariant be skipped.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Outside diff comments:
In `@apps/ensindexer/src/plugins/unigraph/handlers/ensv2/ENSv2Registry.ts`:
- Around line 106-120: Update the isReverseNameRegistration calculation in
ENSv2Registry handling to require that label is exactly 40 hexadecimal
characters before checking registrantId.endsWith(label); only then may the
expiration invariant be skipped.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: f2e8170d-3c48-4894-b84d-1b761b7d3450
📒 Files selected for processing (1)
apps/ensindexer/src/plugins/unigraph/handlers/ensv2/ENSv2Registry.ts
Update invariant logic to meet the relevant smart contract implementation.
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@apps/ensindexer/src/plugins/unigraph/handlers/ensv2/ENSv2Registry.ts`:
- Around line 109-110: Update isReverseNameRegistration in the else-if
(registration) branch to remove redundant optional chaining and the registrantId
&& guard, coercing the equality check with !! so the value is always boolean
while preserving the existing label comparison.
🪄 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: 7270260e-3e52-4031-962b-37904a65b934
📒 Files selected for processing (8)
.changeset/fix-grace-period-boundary.mdapps/ensindexer/src/plugins/unigraph/handlers/ensv2/ENSv2Registry.tsdocker/services/ensapi.ymldocker/services/ensindexer.ymldocker/services/ensrainbow.ymldocs/ensnode.io/ensapi-openapi.jsonpackages/ensnode-sdk/src/registrars/registration-expiration.test.tspackages/ensnode-sdk/src/registrars/registration-expiration.ts
| const isReverseNameRegistration = | ||
| registration?.registrantId && registration.registrantId === `0x${label}`; |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value
Optional: simplify isReverseNameRegistration type.
Since registration is already truthy in the else if (registration) branch, the optional chaining registration?.registrantId is redundant. Additionally, the && short-circuit gives isReverseNameRegistration a union type (NormalizedAddress | null | boolean) rather than strictly boolean. Coercing with !! would make the intent and type clearer:
- const isReverseNameRegistration =
- registration?.registrantId && registration.registrantId === `0x${label}`;
+ const isReverseNameRegistration =
+ registration.registrantId === `0x${label}`;registrantId being null would cause === \0x${label}`to evaluate tofalse, so the &&` guard is unnecessary for correctness.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| const isReverseNameRegistration = | |
| registration?.registrantId && registration.registrantId === `0x${label}`; | |
| const isReverseNameRegistration = | |
| registration.registrantId === `0x${label}`; |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@apps/ensindexer/src/plugins/unigraph/handlers/ensv2/ENSv2Registry.ts` around
lines 109 - 110, Update isReverseNameRegistration in the else-if (registration)
branch to remove redundant optional chaining and the registrantId && guard,
coercing the equality check with !! so the value is always boolean while
preserving the existing label comparison.
| // There's an existing Registration, so we need to handle it carefully. | ||
| // For a reverse name registration, the registrant ID value is guaranteed to end with the label value. | ||
| const isReverseNameRegistration = | ||
| registration?.registrantId && registration.registrantId === `0x${label}`; | ||
|
|
| ### Patch Changes | ||
|
|
||
| - Updated dependencies [[`6542c89`](https://github.com/namehash/ensnode/commit/6542c89569add9fd315bb1f10a9263f59d52da20), [`6542c89`](https://github.com/namehash/ensnode/commit/6542c89569add9fd315bb1f10a9263f59d52da20), [`eaab1bf`](https://github.com/namehash/ensnode/commit/eaab1bffdc0db0f61ccdd06efe0f63aaddf709e3)]: |
| --- | ||
| "@ensnode/ensnode-sdk": patch | ||
| --- | ||
|
|
||
| Fix grace-period boundary handling in registration expiration helpers: `isRegistrationInGracePeriod` upper bound is now inclusive (`>=`) so it is complementary with `isRegistrationFullyExpired` at `now == expiry + gracePeriod`. |
This is a hotfix PR for ENSNode v1.17.0. It aligns indexing logic and invariants logic to match the reality of implementation details for the indexed smart contracts.