Skip to content

dev: Add deposit-address best practice#233

Merged
Y3drk merged 4 commits into
dev/acfrom
dev/ac-deposit-addr
Jun 19, 2026
Merged

dev: Add deposit-address best practice#233
Y3drk merged 4 commits into
dev/acfrom
dev/ac-deposit-addr

Conversation

@Y3drk

@Y3drk Y3drk commented Jun 18, 2026

Copy link
Copy Markdown
Member

Add deposit-address best practice

Summary

  • Branch with initial data (changes to category and a new best practice) for mine and @sevenzing's collaborative work on the new best practice and its acceptance test benchmarks
  • Follows the provided Google Doc spec directly
  • The separate branches with the acceptance test benchmarks are supposed to be merged into this branch first

Why


Testing

  • Ran typecheck, lint, and test commands locally to ensure that the migration didn't break anything, and later confirmed that in our CI workflow
  • Verified that the UI didn't break after introducing changes using a local and Vercel previews.

Pre-Review Checklist (Blocking)

  • This PR was reviewed & accepted separately from the benchmark PRs

Copilot AI review requested due to automatic review settings June 18, 2026 17:44
@Y3drk Y3drk added the ensawards ENSAwards related label Jun 18, 2026
@vercel

vercel Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

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

Project Deployment Actions Updated (UTC)
ensawards.org Ready Ready Preview, Comment Jun 19, 2026 1:19pm

@coderabbitai

coderabbitai Bot commented Jun 18, 2026

Copy link
Copy Markdown

Review Change Stack

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 21b7e5ff-de5b-4949-a1b4-5e8470ddd652

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Renames the ENSv2Readiness best-practice category to ENSResolution (with backward-compatible URL redirects), renames the useCaseSummary field to ensBestPracticeOverview across the type system and all implementations, adds an optional order field to AcceptanceTest for sorted rendering, introduces a full new deposit-addresses best practice with eight acceptance tests, and seeds placeholder benchmark entries across all tracked apps.

Changes

Deposit-Addresses Best Practice + ENS Resolution Category Rename

Layer / File(s) Summary
BestPracticeTechnicalDetails field rename, AcceptanceTest order field, and shared style constant
ensawards.org/data/ens-best-practices/types.ts, ensawards.org/data/acceptance-tests/types.ts, ensawards.org/data/ens-best-practices/styles.ts, ensawards.org/src/components/molecules/technicalDetails/shared.tsx, ensawards.org/data/shared/test-utils.tsx, CONTRIBUTING.md, ensawards.org/data/ens-best-practices/contract-naming/...
Renames useCaseSummaryensBestPracticeOverview in BestPracticeTechnicalDetails, adds optional order?: number to AcceptanceTest, exports bestPracticeTechnicalDetailsCodeStyles, replaces the UseCaseSummary component with EnsBestPracticeOverview, and propagates the rename into all three contract-naming technicalDetails files, the mock utility, and CONTRIBUTING.md.
Component updates: order-based sorting and EnsBestPracticeOverview render
ensawards.org/src/components/molecules/technicalDetails/benchmark/index.astro, ensawards.org/src/components/molecules/technicalDetails/bestPractice/index.tsx
Both the benchmark Astro component and the bestPractice React component switch to EnsBestPracticeOverview and sort acceptance tests by order ascending (with POSITIVE_INFINITY fallback) then alphabetically by slug; the benchmark component adds getAcceptanceTestBySlug with error-throwing on unresolvable slugs.
ENSv2Readiness → ENSResolution category rename and URL redirects
ensawards.org/data/ens-best-practices/resolution/index.ts, ensawards.org/data/ens-best-practices/resolution/ensv2-ready-resolution/..., ensawards.org/astro.config.mjs
Replaces ENSv2ReadinessCategory (slug ensv2-readiness) with ENSResolutionCategory (slug resolution), updates the ensv2-ready-resolution best practice to reference the new category, migrates inline-code spans to bestPracticeTechnicalDetailsCodeStyles, applies the ensBestPracticeOverview rename, and adds 69 redirect rules forwarding all ensv2-readiness URLs to resolution.
New deposit-addresses best practice: definition and 8 acceptance tests
ensawards.org/data/ens-best-practices/resolution/deposit-addresses/index.ts, ensawards.org/data/ens-best-practices/resolution/deposit-addresses/technicalDetails.tsx
Creates the depositAddresses best-practice entry with metadata and ENSResolution category assignment, and defines a full 725-line technicalDetails.tsx with overview, benefits, implementation recommendations, and eight typed acceptance tests covering direct onchain subname, normalization, CCIP-read (ETH/DNS), EVM cross-chain, Bitcoin, Solana, and invalid-address-formatting scenarios.
deposit-addresses benchmark stubs for all tracked apps
ensawards.org/data/apps/*/benchmarks/index.tsx (32 apps)
Adds a deposit-addresses benchmark category with eight undefined-valued benchmark keys to every tracked wallet, exchange, DeFi, and explorer app's benchmarks object.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • namehash/ensawards#204: Introduces getAcceptanceTestBySlug and the acceptance-test utility layer that this PR now consumes for order-based sorting in the benchmark component.
  • namehash/ensawards#231: Modifies the same bestPractice/index.tsx component to add exampleNotApplicable rendering, directly adjacent to this PR's acceptance-test sort-order changes in the same file.

Poem

🐇 A hop through the fields of resolution,
Where ensv2-readiness found its new name.
Eight acceptance tests for deposit addresses,
ensBestPracticeOverview joins the game!
With order fields sorting the lineup just right,
This bunny has tidied the ENS awards site. ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title 'dev: Add deposit-address best practice' clearly and specifically summarizes the main change: introducing a new deposit-address best practice to the project.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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.
Description check ✅ Passed The PR description clearly explains the purpose (adding a new deposit-address best practice), references the specification and requesting party, documents testing performed, and aligns with the detailed changeset shown in raw_summary.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch dev/ac-deposit-addr

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 and usage tips.

Comment thread ensawards.org/data/ens-best-practices/resolution/index.ts

Copilot AI left a comment

Copy link
Copy Markdown

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 introduces the new deposit-addresses ENS resolution best practice (including technical details + acceptance tests), while also refactoring the “overview” field across the codebase from useCaseSummary to ensBestPracticeOverview and renaming the ENSv2 readiness category to the broader resolution category (with redirects).

Changes:

  • Add the new deposit-addresses best practice under the ENS Resolution category, including 8 acceptance tests and UI-ready technical detail content.
  • Rename useCaseSummaryensBestPracticeOverview across types, UI components, test utils, and existing best practices.
  • Rename the ENSv2 readiness category slug/id to resolution and add Astro redirects for legacy URLs.

Reviewed changes

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

Show a summary per file
File Description
ensawards.org/src/components/molecules/technicalDetails/shared.tsx Renames the rendered “overview” component to use ensBestPracticeOverview.
ensawards.org/src/components/molecules/technicalDetails/bestPractice/index.tsx Updates best-practice details UI to render EnsBestPracticeOverview.
ensawards.org/src/components/molecules/technicalDetails/benchmark/index.astro Updates benchmark details UI to render EnsBestPracticeOverview.
ensawards.org/data/shared/test-utils.tsx Updates mock best practice technical details to use ensBestPracticeOverview.
ensawards.org/data/ens-best-practices/types.ts Renames the technical-details field in the core type definition.
ensawards.org/data/ens-best-practices/styles.ts Adds shared Tailwind styles for inline “code-like” spans in technical details content.
ensawards.org/data/ens-best-practices/ens-resolution/index.ts Renames category from ENSv2 readiness to “ENS Resolution” (id/slug/name/description).
ensawards.org/data/ens-best-practices/ens-resolution/ensv2-ready-resolution/technicalDetails.tsx Updates technical details to new field name and shared code-span styling.
ensawards.org/data/ens-best-practices/ens-resolution/ensv2-ready-resolution/index.ts Switches best practice category reference to ENSResolutionCategory.
ensawards.org/data/ens-best-practices/ens-resolution/ensv2-ready-resolution/images/correctly-resolve-ensv2-test-name-address-not-applicable-example.gif Adds/updates benchmark example media.
ensawards.org/data/ens-best-practices/ens-resolution/ensv2-ready-resolution/images/correctly-resolve-ensv2-test-name-address-fail-example.png Adds/updates benchmark example media.
ensawards.org/data/ens-best-practices/ens-resolution/deposit-addresses/technicalDetails.tsx Adds the new best practice’s overview, recommendations, and 8 acceptance tests (with placeholders).
ensawards.org/data/ens-best-practices/ens-resolution/deposit-addresses/index.ts Registers the new deposit-addresses best practice under ENS Resolution.
ensawards.org/data/ens-best-practices/contract-naming/name-your-smart-contracts/technicalDetails.tsx Renames the technical-details overview field to ensBestPracticeOverview.
ensawards.org/data/ens-best-practices/contract-naming/display-named-smart-contracts-mainnet/technicalDetails.tsx Renames the technical-details overview field to ensBestPracticeOverview.
ensawards.org/data/ens-best-practices/contract-naming/display-named-smart-contracts-l2-chains/technicalDetails.tsx Renames the technical-details overview field to ensBestPracticeOverview.
ensawards.org/data/apps/zerion-wallet/benchmarks/index.tsx Adds deposit-addresses benchmark keys (currently all undefined).
ensawards.org/data/apps/worldapp-wallet/benchmarks/index.tsx Adds deposit-addresses benchmark keys (currently all undefined).
ensawards.org/data/apps/walletchan-wallet/benchmarks/index.tsx Adds deposit-addresses benchmark keys (currently all undefined).
ensawards.org/data/apps/uniswap-defi/benchmarks/index.tsx Adds deposit-addresses benchmark keys (currently all undefined).
ensawards.org/data/apps/trust-wallet/benchmarks/index.tsx Adds deposit-addresses benchmark keys (currently all undefined).
ensawards.org/data/apps/status-wallet/benchmarks/index.tsx Adds deposit-addresses benchmark keys (currently all undefined).
ensawards.org/data/apps/safe-wallet/benchmarks/index.tsx Adds deposit-addresses benchmark keys (currently all undefined).
ensawards.org/data/apps/robinhood-wallet/benchmarks/index.tsx Adds deposit-addresses benchmark keys (currently all undefined).
ensawards.org/data/apps/robinhood-exchange/benchmarks/index.tsx Adds deposit-addresses benchmark keys (currently all undefined).
ensawards.org/data/apps/readyx-wallet/benchmarks/index.tsx Adds deposit-addresses benchmark keys (currently all undefined).
ensawards.org/data/apps/rainbow-wallet/benchmarks/index.tsx Adds deposit-addresses benchmark keys (currently all undefined).
ensawards.org/data/apps/rabby-wallet/benchmarks/index.tsx Adds deposit-addresses benchmark keys (currently all undefined).
ensawards.org/data/apps/phantom-wallet/benchmarks/index.tsx Adds deposit-addresses benchmark keys (currently all undefined).
ensawards.org/data/apps/okx-wallet/benchmarks/index.tsx Adds deposit-addresses benchmark keys (currently all undefined).
ensawards.org/data/apps/okx-exchange/benchmarks/index.tsx Adds deposit-addresses benchmark keys (currently all undefined).
ensawards.org/data/apps/metamask-wallet/benchmarks/index.tsx Adds deposit-addresses benchmark keys (currently all undefined).
ensawards.org/data/apps/lido-defi/benchmarks/index.tsx Adds deposit-addresses benchmark keys (currently all undefined).
ensawards.org/data/apps/kraken-wallet/benchmarks/index.tsx Adds deposit-addresses benchmark keys (currently all undefined).
ensawards.org/data/apps/kraken-exchange/benchmarks/index.tsx Adds deposit-addresses benchmark keys (currently all undefined).
ensawards.org/data/apps/gemini-wallet/benchmarks/index.tsx Adds deposit-addresses benchmark keys (currently all undefined).
ensawards.org/data/apps/frame-wallet/benchmarks/index.tsx Adds deposit-addresses benchmark keys (currently all undefined).
ensawards.org/data/apps/etherscan-explorer/benchmarks/index.tsx Adds deposit-addresses benchmark keys (currently all undefined).
ensawards.org/data/apps/cryptocom-wallet/benchmarks/index.tsx Adds deposit-addresses benchmark keys (currently all undefined).
ensawards.org/data/apps/cryptocom-exchange/benchmarks/index.tsx Adds deposit-addresses benchmark keys (currently all undefined).
ensawards.org/data/apps/coinbase-wallet/benchmarks/index.tsx Adds deposit-addresses benchmark keys (currently all undefined).
ensawards.org/data/apps/coinbase-exchange/benchmarks/index.tsx Adds deposit-addresses benchmark keys (currently all undefined).
ensawards.org/data/apps/blockscout-explorer/benchmarks/index.tsx Adds deposit-addresses benchmark keys (currently all undefined).
ensawards.org/data/apps/binance-wallet/benchmarks/index.tsx Adds deposit-addresses benchmark keys (currently all undefined).
ensawards.org/data/apps/binance-exchange/benchmarks/index.tsx Adds deposit-addresses benchmark keys (currently all undefined).
ensawards.org/data/apps/ambire-wallet/benchmarks/index.tsx Adds deposit-addresses benchmark keys (currently all undefined).
ensawards.org/data/apps/aave-defi/benchmarks/index.tsx Adds deposit-addresses benchmark keys (currently all undefined).
ensawards.org/data/apps/1inch-defi/benchmarks/index.tsx Adds deposit-addresses benchmark keys (currently all undefined).
ensawards.org/astro.config.mjs Adds redirects from legacy ensv2-readiness URLs to the new resolution paths.
CONTRIBUTING.md Updates contributor documentation to reflect ensBestPracticeOverview field name.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +58 to +67
"deposit-addresses": {
"correctly-resolve-direct-onchain-subname-address": undefined,
"correctly-resolve-names-requiring-normalization": undefined,
"correctly-implement-ccip-read-for-eth-subnames": undefined,
"correctly-implement-ccip-read-for-offchain-dns-names": undefined,
"correctly-resolve-names-for-different-evm-chains": undefined,
"correctly-resolve-names-for-bitcoin": undefined,
"correctly-resolve-names-for-solana": undefined,
"correctly-handle-resolution-for-chains-with-invalid-address-formatting": undefined,
},

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 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 `@ensawards.org/data/apps/ambire-wallet/benchmarks/index.tsx`:
- Around line 70-79: The deposit-addresses benchmark object contains multiple
test entries (correctly-resolve-direct-onchain-subname-address,
correctly-resolve-names-requiring-normalization,
correctly-implement-ccip-read-for-eth-subnames,
correctly-implement-ccip-read-for-offchain-dns-names,
correctly-resolve-names-for-different-evm-chains,
correctly-resolve-names-for-bitcoin, correctly-resolve-names-for-solana,
correctly-handle-resolution-for-chains-with-invalid-address-formatting) that are
all set to undefined. Replace each undefined value with the actual benchmark
test implementation or function that performs the respective test, ensuring each
benchmark has executable logic rather than placeholder values.

In
`@ensawards.org/data/ens-best-practices/ens-resolution/deposit-addresses/technicalDetails.tsx`:
- Line 200: Replace all placeholder TODO comments with actual, concrete examples
of applications that pass the acceptance tests being documented. The TODO
comments appear at multiple locations throughout the technicalDetails.tsx file
(lines 200, 220, 272, 293, 360, 380, 446, 466, 534, 554, 619, 639, 703, 723,
792, 813) and each contains the phrase "Insert true example of an app passing
this acceptance test when performing the benchmarks". For each occurrence,
replace the TODO comment with a real-world example or case study that
demonstrates an actual application successfully passing the corresponding
acceptance test, ensuring the benchmark evidence is complete and user-facing
before merge.
🪄 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: f32c59f7-c6e6-42f6-b7db-efeeef7a4514

📥 Commits

Reviewing files that changed from the base of the PR and between b3cb525 and 189b60c.

⛔ Files ignored due to path filters (4)
  • ensawards.org/data/ens-best-practices/ens-resolution/deposit-addresses/images/acceptance-test-example-placeholder.png is excluded by !**/*.png
  • ensawards.org/data/ens-best-practices/ens-resolution/ensv2-ready-resolution/images/correctly-resolve-ensv2-test-name-address-fail-example.png is excluded by !**/*.png
  • ensawards.org/data/ens-best-practices/ens-resolution/ensv2-ready-resolution/images/correctly-resolve-ensv2-test-name-address-not-applicable-example.gif is excluded by !**/*.gif
  • ensawards.org/data/ens-best-practices/ens-resolution/ensv2-ready-resolution/images/correctly-resolve-ensv2-test-name-address-pass-example.gif is excluded by !**/*.gif
📒 Files selected for processing (48)
  • CONTRIBUTING.md
  • ensawards.org/astro.config.mjs
  • ensawards.org/data/apps/1inch-defi/benchmarks/index.tsx
  • ensawards.org/data/apps/aave-defi/benchmarks/index.tsx
  • ensawards.org/data/apps/ambire-wallet/benchmarks/index.tsx
  • ensawards.org/data/apps/binance-exchange/benchmarks/index.tsx
  • ensawards.org/data/apps/binance-wallet/benchmarks/index.tsx
  • ensawards.org/data/apps/blockscout-explorer/benchmarks/index.tsx
  • ensawards.org/data/apps/coinbase-exchange/benchmarks/index.tsx
  • ensawards.org/data/apps/coinbase-wallet/benchmarks/index.tsx
  • ensawards.org/data/apps/cryptocom-exchange/benchmarks/index.tsx
  • ensawards.org/data/apps/cryptocom-wallet/benchmarks/index.tsx
  • ensawards.org/data/apps/etherscan-explorer/benchmarks/index.tsx
  • ensawards.org/data/apps/frame-wallet/benchmarks/index.tsx
  • ensawards.org/data/apps/gemini-wallet/benchmarks/index.tsx
  • ensawards.org/data/apps/kraken-exchange/benchmarks/index.tsx
  • ensawards.org/data/apps/kraken-wallet/benchmarks/index.tsx
  • ensawards.org/data/apps/lido-defi/benchmarks/index.tsx
  • ensawards.org/data/apps/metamask-wallet/benchmarks/index.tsx
  • ensawards.org/data/apps/okx-exchange/benchmarks/index.tsx
  • ensawards.org/data/apps/okx-wallet/benchmarks/index.tsx
  • ensawards.org/data/apps/phantom-wallet/benchmarks/index.tsx
  • ensawards.org/data/apps/rabby-wallet/benchmarks/index.tsx
  • ensawards.org/data/apps/rainbow-wallet/benchmarks/index.tsx
  • ensawards.org/data/apps/readyx-wallet/benchmarks/index.tsx
  • ensawards.org/data/apps/robinhood-exchange/benchmarks/index.tsx
  • ensawards.org/data/apps/robinhood-wallet/benchmarks/index.tsx
  • ensawards.org/data/apps/safe-wallet/benchmarks/index.tsx
  • ensawards.org/data/apps/status-wallet/benchmarks/index.tsx
  • ensawards.org/data/apps/trust-wallet/benchmarks/index.tsx
  • ensawards.org/data/apps/uniswap-defi/benchmarks/index.tsx
  • ensawards.org/data/apps/walletchan-wallet/benchmarks/index.tsx
  • ensawards.org/data/apps/worldapp-wallet/benchmarks/index.tsx
  • ensawards.org/data/apps/zerion-wallet/benchmarks/index.tsx
  • ensawards.org/data/ens-best-practices/contract-naming/display-named-smart-contracts-l2-chains/technicalDetails.tsx
  • ensawards.org/data/ens-best-practices/contract-naming/display-named-smart-contracts-mainnet/technicalDetails.tsx
  • ensawards.org/data/ens-best-practices/contract-naming/name-your-smart-contracts/technicalDetails.tsx
  • ensawards.org/data/ens-best-practices/ens-resolution/deposit-addresses/index.ts
  • ensawards.org/data/ens-best-practices/ens-resolution/deposit-addresses/technicalDetails.tsx
  • ensawards.org/data/ens-best-practices/ens-resolution/ensv2-ready-resolution/index.ts
  • ensawards.org/data/ens-best-practices/ens-resolution/ensv2-ready-resolution/technicalDetails.tsx
  • ensawards.org/data/ens-best-practices/ens-resolution/index.ts
  • ensawards.org/data/ens-best-practices/styles.ts
  • ensawards.org/data/ens-best-practices/types.ts
  • ensawards.org/data/shared/test-utils.tsx
  • ensawards.org/src/components/molecules/technicalDetails/benchmark/index.astro
  • ensawards.org/src/components/molecules/technicalDetails/bestPractice/index.tsx
  • ensawards.org/src/components/molecules/technicalDetails/shared.tsx

Comment on lines +70 to +79
"deposit-addresses": {
"correctly-resolve-direct-onchain-subname-address": undefined,
"correctly-resolve-names-requiring-normalization": undefined,
"correctly-implement-ccip-read-for-eth-subnames": undefined,
"correctly-implement-ccip-read-for-offchain-dns-names": undefined,
"correctly-resolve-names-for-different-evm-chains": undefined,
"correctly-resolve-names-for-bitcoin": undefined,
"correctly-resolve-names-for-solana": undefined,
"correctly-handle-resolution-for-chains-with-invalid-address-formatting": undefined,
},

@coderabbitai coderabbitai Bot Jun 18, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major | 🏗️ Heavy lift

Benchmark stubs are still incomplete for merge readiness.

All deposit-addresses tests are undefined, so this app has no executable benchmark outcomes for the new best practice yet. That conflicts with the stated pre-merge requirement to include all necessary benchmark components.

🤖 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 `@ensawards.org/data/apps/ambire-wallet/benchmarks/index.tsx` around lines 70 -
79, The deposit-addresses benchmark object contains multiple test entries
(correctly-resolve-direct-onchain-subname-address,
correctly-resolve-names-requiring-normalization,
correctly-implement-ccip-read-for-eth-subnames,
correctly-implement-ccip-read-for-offchain-dns-names,
correctly-resolve-names-for-different-evm-chains,
correctly-resolve-names-for-bitcoin, correctly-resolve-names-for-solana,
correctly-handle-resolution-for-chains-with-invalid-address-formatting) that are
all set to undefined. Replace each undefined value with the actual benchmark
test implementation or function that performs the respective test, ensuring each
benchmark has executable logic rather than placeholder values.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

These benchmarks will be filled/performed in the few following days.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

@Y3drk Understood, thanks for the heads-up! Since this is a draft PR and the merge pre-condition explicitly requires all benchmarks to be included before merging, the undefined placeholders are fine for now. Just make sure to flip the PR out of draft once all eight acceptance test benchmarks for deposit-addresses are filled in across all tracked apps. I'll keep this comment open until then.


🧠 Learnings used
Learnt from: Y3drk
Repo: namehash/ensawards PR: 117
File: ensawards.org/src/components/atoms/icons/ens-integrating-entities/apps/CoinbaseWalletIcon.tsx:11-12
Timestamp: 2026-02-04T14:50:19.321Z
Learning: In TSX components, when a component applies inline styles (style={{...}}) and later spreads props ({...props}) after, allow that spread to override the inline styles if this ordering is intentional and consistent with the project’s styling approach (e.g., Tailwind via className). Document and enforce this convention in code reviews to prevent accidental overrides and ensure the behavior is intentional across components.

Learnt from: Y3drk
Repo: namehash/ensawards PR: 204
File: ensawards.org/data/apps/metamask-wallet/benchmarks/index.tsx:25-25
Timestamp: 2026-05-12T06:57:59.413Z
Learning: In benchmark files like `ensawards.org/data/apps/<app>/benchmarks/index.tsx`, don’t flag identical `parseTimestamp(...)` results as copy-paste errors when they appear across multiple benchmark entries for the same contributor. For `lastUpdated` in these benchmarks, only the calendar date is meaningful; exact hour/minute/second precision is not significant. It’s acceptable for entries sharing the same contributor/date to have the same normalized timestamp—only flag if the timestamps differ in a way that indicates an unintended date mismatch (e.g., wrong day for the contributor).

Learnt from: Y3drk
Repo: namehash/ensawards PR: 204
File: ensawards.org/data/apps/rainbow-wallet/benchmarks/index.tsx:19-24
Timestamp: 2026-05-12T06:59:04.010Z
Learning: In `ensawards.org/data/apps/*/benchmarks/index.tsx`, do not treat intentionally preserved, commented-out benchmark blocks (e.g., `

Learnt from: Y3drk
Repo: namehash/ensawards PR: 204
File: ensawards.org/src/components/molecules/technicalDetails/benchmark/acceptanceTestResultDetails.tsx:19-24
Timestamp: 2026-05-12T16:07:54.248Z
Learning: In this TypeScript/React codebase, if a contributions-like field is typed as a non-empty tuple (e.g., `[Contribution, ...Contribution[]]`), it is guaranteed at compile time to have at least one element. In code reviews, do not flag potential empty-array risks for that field, and rely on the non-empty tuple type (and any existing unit tests that assert the runtime invariant) instead.

@lightwalker-eth lightwalker-eth left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Great to see the updates here! This is a great foundation 👍 @Y3drk @sevenzing Please see some suggestions for next steps 👍

benefitFromUsingEns,
implementationRecommendations,
acceptanceTests: [
acceptanceTest1,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Something is causing the acceptance tests to render in the UI in a different order then they are defined here. Suggest to prioritize updating this as soon as possible as otherwise it may complicate the next steps to populate this content.

@Y3drk Y3drk Jun 19, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

This happens due to the fact that we're currently sorting acceptance tests and their benchmarks based on the alphabetical order of their slugs to ensure that, no matter how the user defines the order of benchmarks in the apps/x/benchmarks/index file the order will always be the same.

I'll remove the current sorting and try to replace it with something better. If it doesn't work, we can still ensure the order manually, which isn't great, but it's not terrible either.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

UPDATE: Added an optional order field to the AcceptanceTest type. This guides the sorting process and will ensure the correct order

@Y3drk Y3drk marked this pull request as ready for review June 19, 2026 09:50
@Y3drk Y3drk requested a review from a team as a code owner June 19, 2026 09:50
Copilot AI review requested due to automatic review settings June 19, 2026 09:50
@Y3drk Y3drk changed the base branch from main to dev/ac June 19, 2026 09:54
@greptile-apps

greptile-apps Bot commented Jun 19, 2026

Copy link
Copy Markdown

Greptile Summary

This PR introduces the deposit-addresses best practice (8 acceptance tests covering onchain names, normalization, CCIP-read, multi-chain EVM, Bitcoin, Solana, and graceful error handling), renames the ensv2-readiness category to resolution, renames the useCaseSummary field to ensBestPracticeOverview across all best practices and components, and adds an order field to AcceptanceTest so tests display in a deterministic authored sequence rather than alphabetically.

  • Adds deposit-addresses best practice with 8 acceptance tests and stub benchmark entries for all 35 tracked apps; adds redirect rules to preserve old ensv2-readiness URLs.
  • Renames useCaseSummaryensBestPracticeOverview in the shared type, all technicalDetails files, UI components, and mock test utilities.
  • Upgrades acceptance-test sort logic in both the Astro benchmark component and the React best-practice component from alphabetical slug ordering to order-then-slug, with invariant guards.

Confidence Score: 4/5

Safe to merge once the expected address for lightkeeper.eth on Base in acceptance test 5 is confirmed correct.

The structural changes (category rename, field rename, sort logic, redirects, stub benchmarks) are all consistent and well-tested. The one concern is that lightkeeperAddressSpan in deposit-addresses/technicalDetails.tsx is identical to vitalikAddressSpan — the same well-known Vitalik address used in test 1 reappears as the expected Base-chain address for lightkeeper.eth in test 5, which looks like a copy-paste error. If wrong, every benchmark evaluated against that test will silently produce incorrect outcomes.

ensawards.org/data/ens-best-practices/resolution/deposit-addresses/technicalDetails.tsx — confirm the expected address for lightkeeper.eth on Base (lines 442-446).

Important Files Changed

Filename Overview
ensawards.org/data/ens-best-practices/resolution/deposit-addresses/technicalDetails.tsx New 726-line file defining 8 acceptance tests for the deposit-address best practice. lightkeeperAddressSpan (test 5) duplicates the same hex string as vitalikAddressSpan (test 1), likely a copy-paste error that would yield wrong benchmark results for that test.
ensawards.org/data/ens-best-practices/resolution/deposit-addresses/index.ts New best practice definition for 'Correctly Resolve Deposit Addresses', correctly wired up with the resolution category and contributor entries.
ensawards.org/data/ens-best-practices/types.ts Renames the useCaseSummary field to ensBestPracticeOverview in BestPracticeTechnicalDetails; propagated consistently across all call sites.
ensawards.org/data/acceptance-tests/types.ts Adds optional order field to AcceptanceTest for deterministic sort ordering; well-documented JSDoc and consistent with the implementation in sorting logic.
ensawards.org/src/components/molecules/technicalDetails/benchmark/index.astro Upgrades sort from alphabetical-by-slug to order-then-slug, using getAcceptanceTestBySlug with invariant-throwing guards; renames UseCaseSummary to EnsBestPracticeOverview.
ensawards.org/src/components/molecules/technicalDetails/bestPractice/index.tsx Mirrors the same order-then-slug sort logic as the Astro benchmark component and adopts the renamed EnsBestPracticeOverview component.
ensawards.org/astro.config.mjs Adds redirect rules for all 35 apps from the old /ensv2-readiness/ensv2-ready-resolution path to /resolution/ensv2-ready-resolution, preserving external links after the category rename.
ensawards.org/data/shared/test-utils.tsx Updates mock object to use the renamed ensBestPracticeOverview field, keeping tests in sync.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[AcceptanceTest definition\noptional order field] --> B{Has order?}
    B -- Yes --> C[Sort by order ascending]
    B -- No --> D[Sort last\norder = +Infinity]
    C --> E{Tie on order?}
    D --> E
    E -- Yes --> F[Tiebreak: localeCompare slug]
    E -- No --> G[Use numeric order]
    F --> H[Sorted acceptance tests list]
    G --> H

    subgraph deposit-addresses [deposit-addresses best practice]
        T1[test 1: direct onchain\norder=0]
        T2[test 2: normalization\norder=1]
        T3[test 3: CCIP-read .eth\norder=2]
        T4[test 4: CCIP-read DNS\norder=3]
        T5[test 5: EVM multi-chain\norder=4]
        T6[test 6: Bitcoin\norder=5]
        T7[test 7: Solana\norder=6]
        T8[test 8: invalid address\norder=7]
    end

    deposit-addresses --> A
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
    A[AcceptanceTest definition\noptional order field] --> B{Has order?}
    B -- Yes --> C[Sort by order ascending]
    B -- No --> D[Sort last\norder = +Infinity]
    C --> E{Tie on order?}
    D --> E
    E -- Yes --> F[Tiebreak: localeCompare slug]
    E -- No --> G[Use numeric order]
    F --> H[Sorted acceptance tests list]
    G --> H

    subgraph deposit-addresses [deposit-addresses best practice]
        T1[test 1: direct onchain\norder=0]
        T2[test 2: normalization\norder=1]
        T3[test 3: CCIP-read .eth\norder=2]
        T4[test 4: CCIP-read DNS\norder=3]
        T5[test 5: EVM multi-chain\norder=4]
        T6[test 6: Bitcoin\norder=5]
        T7[test 7: Solana\norder=6]
        T8[test 8: invalid address\norder=7]
    end

    deposit-addresses --> A
Loading

Reviews (3): Last reviewed commit: "Apply AI agents' suggestions, pt.2" | Re-trigger Greptile

Comment thread ensawards.org/data/ens-best-practices/styles.ts Outdated

Copilot AI left a comment

Copy link
Copy Markdown

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 49 out of 53 changed files in this pull request and generated 3 comments.

Comment thread ensawards.org/data/acceptance-tests/types.ts Outdated
Comment thread CONTRIBUTING.md Outdated
// Sort acceptance tests by order (ascending) to ensure consistent display order
// across best practice details and benchmark details pages.
// The tiebreaker is the alphabetical order of the acceptance test slug.
const sortedAcceptanceTestBenchmarks = [...Object.entries(acceptanceTestBenchmarks)].sort(

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

do we really need to sort it here? maybe we just keep the same order as defined during creation of BestPracticeTechnicalDetails ? looks like we always either have 1 test or the order field is same as order in array acceptanceTests

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

@sevenzing In my opinion, this is necessary because when external contributors contribute benchmarks, we have no guarantee that they will keep the same order as we do, and we want to keep the display consistent between the best practice details page and the benchmark report page

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

let's just follow order from like

const technicalDetails = {
  useCaseSummary,
  benefitFromUsingEns,
  implementationRecommendations,
  acceptanceTests: [acceptanceTest1],
} as const satisfies BestPracticeTechnicalDetails;

@Y3drk

Y3drk commented Jun 19, 2026

Copy link
Copy Markdown
Member Author

@greptileai

@Y3drk Y3drk merged commit 8297535 into dev/ac Jun 19, 2026
7 checks passed
@Y3drk Y3drk deleted the dev/ac-deposit-addr branch June 19, 2026 13:25
sevenzing added a commit that referenced this pull request Jun 22, 2026
* dev: Add `deposit-address` best practice (#233)

* Action Item 1

* Action Item 2

* Apply 06/18/26 GitHub review feedback & AI agents' suggestions, pt.1

* Apply AI agents' suggestions, pt.2

* feat: etherscan acceptance test (#234)

* Action Item 1

* Action Item 2

* Apply 06/18/26 GitHub review feedback & AI agents' suggestions, pt.1

* Add etherscan acceptance test for deposit address

* revert mockedExampleBenchmark

* delete file

* oops

* add not-applicable

---------

Co-authored-by: y3drk <ziebura.jedrzej@gmail.com>

* feat: ATs for blockscout and 1inch  (#235)

* add skill to rearrange app benchmark

* rearrange blockscout-explorer to new structure

* add blockscout-explorer case

* p lint

* rearrange 1inch-defi benchmark to new structure

* update skill to use values from technicalDetails

* generate benchmark for 1inch

* p lint

* update benchmark of blockscout and etherscan accordingly

* apply fixes for AI review

* feat: Benchmark wallets on `deposit-addresses` best practice (#236)

* Action Item 1

* Action Item 2

* Apply 06/18/26 GitHub review feedback & AI agents' suggestions, pt.1

* Add benchmarks for ambire + example pass for AT1 and example fail for AT4

* Add benchmarks for binance wallet + example fail for AT1

* Add benchmarks for coinbase wallet

* Add benchmarks for readyx

* Add benchmarks for world app wallet

* Add benchmarks for robinhood wallet

* Adjust benchmarked apps to the newly established structure

* Add benchmarks for zerion

* Add benchmarks for walletchan

* unify code with my PR

* p lint

* add more images or at-2 in  zerion

---------

Co-authored-by: sevenzing <lymarenko.lev@gmail.com>

* feat: add builders for notes to decrease boilerplate (#237)

* rename ATs and use notes.tsx to remove boilerplate

* rename images

* add indexed key

* apply greptile feedback

* feat: rearrange benchmarks folders for all apps (#238)

* rearrange to new structure

* remove useless skill

* p lint

* feat: add benchmarks for aave, uniswap and lido (#239)

* add aave and uniswap

* fix uniswap case

* add lido

* yeah i forgot at7 and 8

* just rename deposit-address -> deposit-addresses

* feat: Benchmark wallets on `deposit-addresses` best practice, batch 2 (#241)

* Add benchmarks for okx wallet & crypto.com wallet + add bitcoin benchmark for coinbase wallet + add example passes for ATs 5-8

* Add benchmarks for phantom & rabby + add example pass for AT2 and example fails for ATs 3 & 5

* Update method context notes for AT5 pass/fail template

* Add benchmarks for safe{wallet} + add extra explanations for failed benchmarks + add example pass for AT3

* Add benchmarks for gemini wallet & metamask + update CONTRIBUTING.md + add example fails for ATs 2 & 8

* Apply AI agents' suggestions, pt.1

* feat: add benchmarks for `binance`, `bybit` and `okx` (#240)

* benchmark binance,bybit,okx

* add ensv2 for bybit

* reexport icon for bybit

* add benchmarks for raibow-wallet,status-wallet,trust-wallet (#243)

* add benchmarks for raibow-wallet,status-wallet,trust-wallet

* rename to deposit-addresses

* Add benchmarks for exchanges: coinbase, crypto.com and robinhood + add example fails for ATs 6 & 7 (#242)

* add explain why AT8 is failed in example (#245)

* small fix

---------

Co-authored-by: Jędrzej Ziebura <ziebura.jedrzej@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ensawards ENSAwards related

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants