Skip to content

Hotfix/22f5cb7 - #2349

Closed
tk-o wants to merge 7 commits into
mainfrom
hotfix/22f5cb7
Closed

Hotfix/22f5cb7#2349
tk-o wants to merge 7 commits into
mainfrom
hotfix/22f5cb7

Conversation

@tk-o

@tk-o tk-o commented Jul 9, 2026

Copy link
Copy Markdown
Member

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.

github-actions Bot and others added 3 commits June 30, 2026 10:55
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]
@vercel

vercel Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
admin.ensnode.io Ready Ready Preview, Comment Jul 13, 2026 4:37am
enskit-react-example.ensnode.io Ready Ready Preview, Comment Jul 13, 2026 4:37am
ensnode.io Ready Ready Preview, Comment Jul 13, 2026 4:37am
ensrainbow.io Ready Ready Preview, Comment Jul 13, 2026 4:37am

@changeset-bot

changeset-bot Bot commented Jul 9, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: b8bd32a

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 23 packages
Name Type
@ensnode/ensnode-sdk Patch
ensadmin Patch
ensapi Patch
ensindexer Patch
ensrainbow Patch
fallback-ensapi Patch
@docs/ensnode Patch
@namehash/ens-referrals Patch
enscli Patch
@ensnode/ensdb-sdk Patch
@ensnode/ensrainbow-sdk Patch
ensskills Patch
@ensnode/integration-test-env Patch
@namehash/namehash-ui Patch
@ensnode/ensdb-cli Patch
@docs/ensrainbow Patch
enssdk Patch
enskit Patch
@ensnode/datasources Patch
@ensnode/ponder-sdk Patch
@ensnode/ponder-subgraph Patch
@ensnode/shared-configs Patch
@ensnode/ensindexer-perf-testing Patch

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

@coderabbitai

coderabbitai Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

@tk-o, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 56 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: a99bc914-828f-41e4-8a43-b84dcfb287b5

📥 Commits

Reviewing files that changed from the base of the PR and between 58a1c2c and b8bd32a.

📒 Files selected for processing (1)
  • .changeset/fix-grace-period-boundary.md
📝 Walkthrough

Walkthrough

The 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.

Changes

Version 1.17.0 release rollup

Layer / File(s) Summary
Release versions and changelogs
apps/*, packages/*, docs/*, docker/services/*
Adds 1.17.0 changelog entries, bumps package and container versions, and updates OpenAPI version metadata. EFP, per-chain indexing, and related release notes are recorded.
Changeset cleanup
.changeset/*
Removes superseded release entries and retains the grace-period boundary patch changeset.

Registration behavior fixes

Layer / File(s) Summary
Expiration boundary and tests
packages/ensnode-sdk/src/registrars/registration-expiration.*
Makes the grace-period boundary inclusive for grace-period checks and strict for full expiration, with table-driven boundary and null-value tests.
Reverse-name registration handling
apps/ensindexer/src/plugins/unigraph/handlers/ensv2/ENSv2Registry.ts
Detects reverse-name registrations and bypasses the existing unexpired-registration invariant for those registrations.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Suggested labels: ensnode-sdk

Poem

I’m a bunny with a release-carrot bright,
Hopping through versions to 1.17 tonight.
EFP leaves tracks, grace boundaries bend,
Reverse names find a gentler end.
Changelogs bloom in a tidy row—
Hop, hop, ship the flow!

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description is missing the required Summary, Why, Testing, and checklist sections from the template. Fill in the template sections with summary bullets, rationale, testing details, optional notes, and the blocking checklist.
Title check ❓ Inconclusive The title is too generic and does not describe the actual hotfix changes. Rename it to a concise summary of the hotfix, e.g. align ENSNode indexing and invariant logic with indexed smart-contract behavior.
✅ Passed checks (3 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch hotfix/22f5cb7

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@vercel vercel Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Additional Suggestion:

At now == expiry + gracePeriod, a registration is reported as neither in grace period nor fully expired, creating an inconsistent one-timestamp gap.

Fix on Vercel

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 isRegistrationFullyExpired to treat now == expiry + gracePeriod as 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.

Comment thread docker/services/ensapi.yml
Comment thread packages/ensnode-sdk/package.json
Comment thread packages/ensnode-sdk/CHANGELOG.md
@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

🚀 Preview Packages - hotfix/22f5cb7

NPM Packages:

# Install latest preview for this branch
pnpm add @ensnode/datasources@preview-hotfix-22f5cb7
pnpm add @ensnode/ensrainbow-sdk@preview-hotfix-22f5cb7
pnpm add @ensnode/ensdb-sdk@preview-hotfix-22f5cb7
pnpm add @ensnode/ensnode-sdk@preview-hotfix-22f5cb7
pnpm add @ensnode/ponder-sdk@preview-hotfix-22f5cb7
pnpm add @ensnode/ponder-subgraph@preview-hotfix-22f5cb7
pnpm add @ensnode/ens-referrals@preview-hotfix-22f5cb7
pnpm add @ensnode/namehash-ui@preview-hotfix-22f5cb7

# Or install specific version
pnpm add @ensnode/ensnode-sdk@0.0.0-preview-hotfix-22f5cb7-20260710184712

Docker Images:

docker pull ghcr.io/namehash/ensnode/ensindexer:preview-hotfix-22f5cb7-4c1d4c55
docker pull ghcr.io/namehash/ensnode/ensadmin:preview-hotfix-22f5cb7-4c1d4c55
docker pull ghcr.io/namehash/ensnode/ensapi:preview-hotfix-22f5cb7-4c1d4c55
docker pull ghcr.io/namehash/ensnode/ensrainbow:preview-hotfix-22f5cb7-4c1d4c55

Build Info:

  • 🎯 Target: 📦 NPM packages + 🐳 Docker images
  • 📦 Version: 0.0.0-preview-hotfix-22f5cb7-20260710184712
  • 📝 Commit: 4c1d4c55
  • 🌿 Branch: hotfix/22f5cb7
  • ⏰ Built: 2026-07-10 18:56:52 UTC
  • 🔗 Workflow Run

🤖 This comment will be updated on subsequent publishing of release previews from the branch associated with this PR

Note: Preview packages are managed by changesets. NPM dist-tags can be cleaned up manually using npm dist-tag rm @ensnode/ensnode-sdk preview-hotfix-22f5cb7

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between af444c3 and 5eef0cd.

📒 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.md
  • apps/ensadmin/CHANGELOG.md
  • apps/ensadmin/package.json
  • apps/ensapi/CHANGELOG.md
  • apps/ensapi/package.json
  • apps/ensindexer/CHANGELOG.md
  • apps/ensindexer/package.json
  • apps/ensrainbow/CHANGELOG.md
  • apps/ensrainbow/package.json
  • apps/fallback-ensapi/CHANGELOG.md
  • apps/fallback-ensapi/package.json
  • docker/services/ensadmin.yml
  • docker/services/ensapi.yml
  • docker/services/ensindexer.yml
  • docker/services/ensrainbow.yml
  • docs/ensnode.io/CHANGELOG.md
  • docs/ensnode.io/ensapi-openapi.json
  • docs/ensnode.io/package.json
  • docs/ensrainbow.io/CHANGELOG.md
  • docs/ensrainbow.io/package.json
  • packages/datasources/CHANGELOG.md
  • packages/datasources/package.json
  • packages/ens-referrals/CHANGELOG.md
  • packages/ens-referrals/package.json
  • packages/enscli/CHANGELOG.md
  • packages/enscli/package.json
  • packages/ensdb-cli/CHANGELOG.md
  • packages/ensdb-cli/package.json
  • packages/ensdb-sdk/CHANGELOG.md
  • packages/ensdb-sdk/package.json
  • packages/ensindexer-perf-testing/CHANGELOG.md
  • packages/ensindexer-perf-testing/package.json
  • packages/enskit/CHANGELOG.md
  • packages/enskit/package.json
  • packages/ensnode-sdk/CHANGELOG.md
  • packages/ensnode-sdk/package.json
  • packages/ensnode-sdk/src/registrars/registration-expiration.test.ts
  • packages/ensnode-sdk/src/registrars/registration-expiration.ts
  • packages/ensrainbow-sdk/CHANGELOG.md
  • packages/ensrainbow-sdk/package.json
  • packages/enssdk/CHANGELOG.md
  • packages/enssdk/package.json
  • packages/ensskills/CHANGELOG.md
  • packages/ensskills/package.json
  • packages/integration-test-env/CHANGELOG.md
  • packages/integration-test-env/package.json
  • packages/namehash-ui/CHANGELOG.md
  • packages/namehash-ui/package.json
  • packages/ponder-sdk/CHANGELOG.md
  • packages/ponder-sdk/package.json
  • packages/ponder-subgraph/CHANGELOG.md
  • packages/ponder-subgraph/package.json
  • packages/shared-configs/CHANGELOG.md
  • packages/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

Comment thread packages/ensnode-sdk/src/registrars/registration-expiration.ts
Copilot AI review requested due to automatic review settings July 10, 2026 18:34
@vercel
vercel Bot temporarily deployed to Preview – ensrainbow.io July 10, 2026 18:34 Inactive
@vercel
vercel Bot temporarily deployed to Preview – admin.ensnode.io July 10, 2026 18:34 Inactive
@vercel
vercel Bot temporarily deployed to Preview – ensnode.io July 10, 2026 18:34 Inactive
Comment thread apps/ensindexer/src/plugins/unigraph/handlers/ensv2/ENSv2Registry.ts Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 win

Guard reverse-name detection by label shape registrantId is a normalized 0x-prefixed address and reverse labels are 40 hex chars, but endsWith(label) still accepts any shorter matching suffix. Add a label.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

📥 Commits

Reviewing files that changed from the base of the PR and between 5eef0cd and 8f8a37f.

📒 Files selected for processing (1)
  • apps/ensindexer/src/plugins/unigraph/handlers/ensv2/ENSv2Registry.ts

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 67 out of 67 changed files in this pull request and generated 7 comments.

Comment thread packages/ensnode-sdk/src/registrars/registration-expiration.ts
Comment thread packages/ensnode-sdk/src/registrars/registration-expiration.test.ts Outdated
Comment thread docker/services/ensapi.yml
Comment thread docker/services/ensindexer.yml
Comment thread docker/services/ensadmin.yml
Comment thread docker/services/ensrainbow.yml
tk-o added 2 commits July 10, 2026 20:43
Update invariant logic to meet the relevant smart contract implementation.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 68 out of 68 changed files in this pull request and generated 2 comments.

Comment thread .changeset/fix-grace-period-boundary.md Outdated
Copilot AI review requested due to automatic review settings July 10, 2026 18:48

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 68 out of 68 changed files in this pull request and generated 1 comment.

Comment thread .changeset/fix-grace-period-boundary.md Outdated
@tk-o tk-o mentioned this pull request Jul 13, 2026
2 tasks

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between 8f8a37f and 58a1c2c.

📒 Files selected for processing (8)
  • .changeset/fix-grace-period-boundary.md
  • apps/ensindexer/src/plugins/unigraph/handlers/ensv2/ENSv2Registry.ts
  • docker/services/ensapi.yml
  • docker/services/ensindexer.yml
  • docker/services/ensrainbow.yml
  • docs/ensnode.io/ensapi-openapi.json
  • packages/ensnode-sdk/src/registrars/registration-expiration.test.ts
  • packages/ensnode-sdk/src/registrars/registration-expiration.ts

Comment on lines +109 to +110
const isReverseNameRegistration =
registration?.registrantId && registration.registrantId === `0x${label}`;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 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.

Suggested change
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.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 67 out of 67 changed files in this pull request and generated 3 comments.

Comment on lines +107 to +111
// 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}`;

Comment on lines +11 to +13
### 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)]:
Comment on lines +1 to +5
---
"@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`.
@tk-o tk-o closed this Jul 13, 2026
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.

2 participants