rev-share-limit renamed to rev-share-cap#1919
Conversation
🦋 Changeset detectedLatest commit: 549d55b 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 |
|
The latest updates on your projects. Learn more about Vercel for GitHub. 3 Skipped Deployments
|
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (3)
📝 WalkthroughWalkthroughA systematic rename and migration of the rev-share award-model from Changes
Sequence Diagram(s)(omitted) Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Suggested labels
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 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
Renames the referral program award model discriminator from rev-share-limit to rev-share-cap across the @namehash/ens-referrals v1 domain model and the ensapi leaderboard builder, including updated serialization and validation layers.
Changes:
- Replaces the
RevShareLimitaward model constant/type variants withRevShareCapthroughout v1 rules/leaderboard/page/metrics/status flows. - Moves/duplicates the rev-share award-model implementation under
award-models/rev-share-cap/*and updates v1 serialization + Zod schemas accordingly. - Updates
ensapiv1 leaderboard dispatch to build the rev-share leaderboard under the new award model.
Reviewed changes
Copilot reviewed 29 out of 30 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| packages/ens-referrals/src/v1/rules.ts | Updates the ReferralProgramRules union to reference the rev-share-cap rules type. |
| packages/ens-referrals/src/v1/leaderboard.ts | Updates the ReferrerLeaderboard union to use the rev-share-cap variant. |
| packages/ens-referrals/src/v1/leaderboard-page.ts | Switches leaderboard-page building to the RevShareCap award model branch. |
| packages/ens-referrals/src/v1/index.ts | Re-exports rev-share-cap award-model modules (replacing rev-share-limit exports). |
| packages/ens-referrals/src/v1/edition-summary.ts | Switches edition summary building to the RevShareCap branch and types. |
| packages/ens-referrals/src/v1/edition-metrics.ts | Switches edition metrics building to the RevShareCap branch and types. |
| packages/ens-referrals/src/v1/award-models/shared/rules.ts | Renames the award-model constant entry to RevShareCap: "rev-share-cap". |
| packages/ens-referrals/src/v1/award-models/rev-share-limit/leaderboard-page.ts | Removes the rev-share-limit leaderboard-page implementation. |
| packages/ens-referrals/src/v1/award-models/rev-share-limit/api/serialize.ts | Removes the rev-share-limit serialization implementation. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/status.ts | Provides calcReferralProgramEditionStatusRevShareCap and updates docs/types. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/sort-referral-events.ts | Adds helper for deterministic chronological ordering of referral events by id. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/rules.ts | Renames rev-share rules types/builders/validators to the RevShareCap naming. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/referral-event.ts | Updates model documentation to rev-share-cap terminology. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/metrics.ts | Renames rev-share metrics types/builders/validators to the RevShareCap naming. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/leaderboard.ts | Renames the sequential race leaderboard builder/type to RevShareCap. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/leaderboard.test.ts | Updates tests to target buildReferrerLeaderboardRevShareCap and new constants. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/leaderboard-page.ts | Adds the rev-share-cap leaderboard page type + builder. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/edition-summary.ts | Renames rev-share edition summary type/builder/validator to RevShareCap. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/edition-metrics.ts | Renames rev-share edition metrics variant types to RevShareCap. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/api/zod-schemas.ts | Renames rev-share-cap Zod schema builders and updates literals to rev-share-cap. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/api/serialized-types.ts | Renames serialized type interfaces/unions to RevShareCap. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/api/serialize.ts | Adds rev-share-cap serialization functions (rules/metrics/pages/summaries). |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/aggregations.ts | Renames aggregated metrics types/builders/validators to RevShareCap. |
| packages/ens-referrals/src/v1/api/zod-schemas.ts | Wires the v1 API discriminated unions to the rev-share-cap schema builders. |
| packages/ens-referrals/src/v1/api/zod-schemas.test.ts | Updates v1 API schema tests to use ReferralProgramAwardModels.RevShareCap. |
| packages/ens-referrals/src/v1/api/serialized-types.ts | Updates top-level serialized unions to use rev-share-cap variants. |
| packages/ens-referrals/src/v1/api/serialize.ts | Updates top-level v1 serializers’ dispatch to RevShareCap. |
| packages/ens-referrals/README.md | Updates README examples to check for RevShareCap award model. |
| apps/ensapi/src/lib/ensanalytics/referrer-leaderboard/get-referrer-leaderboard-v1.ts | Updates server-side leaderboard builder dispatch to RevShareCap. |
| .changeset/swift-cats-glow.md | Adds a changeset documenting the award-model rename. |
Comments suppressed due to low confidence (3)
packages/ens-referrals/src/v1/award-models/rev-share-cap/leaderboard.test.ts:145
- The test description uses “uncapped pool”, but this award model is explicitly pool-capped; here it looks like the intent is “cap doesn’t bind because the pool is large”. Consider renaming the test case text/comment to something like “large pool” / “non-binding cap” to avoid confusion.
packages/ens-referrals/src/v1/award-models/rev-share-cap/leaderboard.test.ts:189 - Same wording issue as above: “uncapped pool” in the test name reads like the model has no pool cap. Using “large pool” / “non-binding cap” would be clearer and consistent with the rev-share-cap terminology.
packages/ens-referrals/src/v1/award-models/rev-share-cap/leaderboard.test.ts:344 - The comment “Pool = $1000 (uncapped for this test)” is a bit misleading in a pool-capped model; it’s really a large pool where the cap doesn’t constrain results. Consider updating the comment wording to match the rev-share-cap terminology.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
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 (4)
packages/ens-referrals/src/v1/award-models/rev-share-cap/rules.ts (1)
77-118:⚠️ Potential issue | 🟠 MajorReject mismatched
awardModelvalues in the runtime validator.
validateReferralProgramRulesRevShareCapvalidates the cap-specific fields, but it never assertsrules.awardModel === ReferralProgramAwardModels.RevShareCap. At runtime, a structurally similar object with"pie-split"or"unrecognized"can still pass this validator and then be dispatched incorrectly by downstream code that trusts the discriminator.Suggested fix
export const validateReferralProgramRulesRevShareCap = ( rules: ReferralProgramRulesRevShareCap, ): void => { + if (rules.awardModel !== ReferralProgramAwardModels.RevShareCap) { + throw new Error( + `ReferralProgramRulesRevShareCap: awardModel must be "${ReferralProgramAwardModels.RevShareCap}", got ${rules.awardModel}.`, + ); + } + makePriceUsdcSchema("ReferralProgramRulesRevShareCap.awardPool").parse(rules.awardPool); makePriceUsdcSchema("ReferralProgramRulesRevShareCap.minBaseRevenueContribution").parse( rules.minBaseRevenueContribution, );🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@packages/ens-referrals/src/v1/award-models/rev-share-cap/rules.ts` around lines 77 - 118, Add an explicit runtime check in validateReferralProgramRulesRevShareCap to ensure the input is the expected discriminator: verify rules.awardModel === ReferralProgramAwardModels.RevShareCap and throw a descriptive Error if not; place this check near the top of validateReferralProgramRulesRevShareCap (before other field validations) so structurally similar objects with awardModel "pie-split" or "unrecognized" are rejected early.packages/ens-referrals/src/v1/award-models/rev-share-cap/metrics.ts (1)
27-42:⚠️ Potential issue | 🟡 MinorValidate
totalBaseRevenueContributionas aPriceUsdcbefore comparing amounts.This validator only checks
.amountagainst the derived value. A plain object with a matching amount would still pass, unlike the other monetary fields in this module.Suggested fix
export const validateReferrerMetricsRevShareCap = ( metrics: ReferrerMetricsRevShareCap, rules: ReferralProgramRulesRevShareCap, ): void => { validateReferrerMetrics(metrics); + makePriceUsdcSchema("ReferrerMetricsRevShareCap.totalBaseRevenueContribution").parse( + metrics.totalBaseRevenueContribution, + ); const expectedTotalBaseRevenueContribution = priceUsdc( (rules.baseAnnualRevenueContribution.amount * BigInt(metrics.totalIncrementalDuration)) / BigInt(SECONDS_PER_YEAR), );🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@packages/ens-referrals/src/v1/award-models/rev-share-cap/metrics.ts` around lines 27 - 42, The validator validateReferrerMetricsRevShareCap currently compares only totalBaseRevenueContribution.amount to the computed expected amount, which allows non-PriceUsdc-shaped objects to pass; update the check to first validate/construct totalBaseRevenueContribution as a PriceUsdc (like calling priceUsdc on metrics.totalBaseRevenueContribution or otherwise asserting its shape) and then compare the resulting PriceUsdc.amount to expectedTotalBaseRevenueContribution.amount so totalBaseRevenueContribution is enforced to be a proper PriceUsdc before performing the equality check.packages/ens-referrals/src/v1/edition-metrics.ts (1)
36-45: 🛠️ Refactor suggestion | 🟠 MajorDrop the redundant
@returnstag here.It doesn't add anything beyond the summary and signature.
Suggested cleanup
/** * Get the edition metrics for a specific referrer from the leaderboard. * * Returns a {`@link` ReferrerEditionMetricsPieSplit} or {`@link` ReferrerEditionMetricsRevShareCap} * with `type: "ranked"` if the referrer is on the leaderboard, or `type: "unranked"` otherwise. * * `@param` referrer - The referrer address to look up * `@param` leaderboard - The referrer leaderboard to query - * `@returns` The appropriate {`@link` ReferrerEditionMetrics} */As per coding guidelines, "Do not add JSDoc
@returnstags that merely restate the method summary; remove such redundancy during PR review."🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@packages/ens-referrals/src/v1/edition-metrics.ts` around lines 36 - 45, Remove the redundant JSDoc `@returns` tag in the comment block that begins "Get the edition metrics for a specific referrer from the leaderboard" (the JSDoc above the function that returns a ReferrerEditionMetricsPieSplit or ReferrerEditionMetricsRevShareCap); leave the summary, params, and type links intact but delete the `@returns` line so the docblock no longer restates the signature.apps/ensapi/src/lib/ensanalytics/referrer-leaderboard/get-referrer-leaderboard-v1.ts (1)
12-23: 🛠️ Refactor suggestion | 🟠 MajorTrim the redundant
@returnstag in this JSDoc.That line only restates the signature, and while you're touching this block the summary should say
ReferrerLeaderboard, notReferralLeaderboard.Suggested cleanup
/** - * Builds a `ReferralLeaderboard` from the database using the provided referral program rules (V1 API). + * Builds a `ReferrerLeaderboard` from the database using the provided referral program rules (V1 API). * * Dispatches to the appropriate model-specific builder based on `rules.awardModel`: * - PieSplit: uses aggregated referrer metrics (GROUP BY query). * - RevShareCap: uses raw referral events (no GROUP BY) for the sequential race algorithm. * * `@param` rules - The referral program rules for filtering registrar actions * `@param` accurateAsOf - The {`@link` UnixTimestamp} of when the data used to build the {`@link` ReferrerLeaderboard} was accurate as of. - * `@returns` A promise that resolves to a {`@link` ReferrerLeaderboard} * `@throws` Error if the database query fails */As per coding guidelines, "Do not add JSDoc
@returnstags that merely restate the method summary; remove such redundancy during PR review."🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/ensapi/src/lib/ensanalytics/referrer-leaderboard/get-referrer-leaderboard-v1.ts` around lines 12 - 23, Update the JSDoc for the top-level builder in get-referrer-leaderboard-v1.ts: change the summary text from "ReferralLeaderboard" to "ReferrerLeaderboard" and remove the redundant `@returns` tag that merely restates the function signature; keep parameter and throws tags intact for the function that builds the ReferrerLeaderboard (the function documented in this block — the V1 dispatcher for rules.awardModel).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Outside diff comments:
In
`@apps/ensapi/src/lib/ensanalytics/referrer-leaderboard/get-referrer-leaderboard-v1.ts`:
- Around line 12-23: Update the JSDoc for the top-level builder in
get-referrer-leaderboard-v1.ts: change the summary text from
"ReferralLeaderboard" to "ReferrerLeaderboard" and remove the redundant `@returns`
tag that merely restates the function signature; keep parameter and throws tags
intact for the function that builds the ReferrerLeaderboard (the function
documented in this block — the V1 dispatcher for rules.awardModel).
In `@packages/ens-referrals/src/v1/award-models/rev-share-cap/metrics.ts`:
- Around line 27-42: The validator validateReferrerMetricsRevShareCap currently
compares only totalBaseRevenueContribution.amount to the computed expected
amount, which allows non-PriceUsdc-shaped objects to pass; update the check to
first validate/construct totalBaseRevenueContribution as a PriceUsdc (like
calling priceUsdc on metrics.totalBaseRevenueContribution or otherwise asserting
its shape) and then compare the resulting PriceUsdc.amount to
expectedTotalBaseRevenueContribution.amount so totalBaseRevenueContribution is
enforced to be a proper PriceUsdc before performing the equality check.
In `@packages/ens-referrals/src/v1/award-models/rev-share-cap/rules.ts`:
- Around line 77-118: Add an explicit runtime check in
validateReferralProgramRulesRevShareCap to ensure the input is the expected
discriminator: verify rules.awardModel ===
ReferralProgramAwardModels.RevShareCap and throw a descriptive Error if not;
place this check near the top of validateReferralProgramRulesRevShareCap (before
other field validations) so structurally similar objects with awardModel
"pie-split" or "unrecognized" are rejected early.
In `@packages/ens-referrals/src/v1/edition-metrics.ts`:
- Around line 36-45: Remove the redundant JSDoc `@returns` tag in the comment
block that begins "Get the edition metrics for a specific referrer from the
leaderboard" (the JSDoc above the function that returns a
ReferrerEditionMetricsPieSplit or ReferrerEditionMetricsRevShareCap); leave the
summary, params, and type links intact but delete the `@returns` line so the
docblock no longer restates the signature.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: 10058140-6042-423b-9317-949dd3866f04
📒 Files selected for processing (30)
.changeset/swift-cats-glow.mdapps/ensapi/src/lib/ensanalytics/referrer-leaderboard/get-referrer-leaderboard-v1.tspackages/ens-referrals/README.mdpackages/ens-referrals/src/v1/api/serialize.tspackages/ens-referrals/src/v1/api/serialized-types.tspackages/ens-referrals/src/v1/api/zod-schemas.test.tspackages/ens-referrals/src/v1/api/zod-schemas.tspackages/ens-referrals/src/v1/award-models/rev-share-cap/aggregations.tspackages/ens-referrals/src/v1/award-models/rev-share-cap/api/serialize.tspackages/ens-referrals/src/v1/award-models/rev-share-cap/api/serialized-types.tspackages/ens-referrals/src/v1/award-models/rev-share-cap/api/zod-schemas.tspackages/ens-referrals/src/v1/award-models/rev-share-cap/edition-metrics.tspackages/ens-referrals/src/v1/award-models/rev-share-cap/edition-summary.tspackages/ens-referrals/src/v1/award-models/rev-share-cap/leaderboard-page.tspackages/ens-referrals/src/v1/award-models/rev-share-cap/leaderboard.test.tspackages/ens-referrals/src/v1/award-models/rev-share-cap/leaderboard.tspackages/ens-referrals/src/v1/award-models/rev-share-cap/metrics.tspackages/ens-referrals/src/v1/award-models/rev-share-cap/referral-event.tspackages/ens-referrals/src/v1/award-models/rev-share-cap/rules.tspackages/ens-referrals/src/v1/award-models/rev-share-cap/sort-referral-events.tspackages/ens-referrals/src/v1/award-models/rev-share-cap/status.tspackages/ens-referrals/src/v1/award-models/rev-share-limit/api/serialize.tspackages/ens-referrals/src/v1/award-models/rev-share-limit/leaderboard-page.tspackages/ens-referrals/src/v1/award-models/shared/rules.tspackages/ens-referrals/src/v1/edition-metrics.tspackages/ens-referrals/src/v1/edition-summary.tspackages/ens-referrals/src/v1/index.tspackages/ens-referrals/src/v1/leaderboard-page.tspackages/ens-referrals/src/v1/leaderboard.tspackages/ens-referrals/src/v1/rules.ts
💤 Files with no reviewable changes (2)
- packages/ens-referrals/src/v1/award-models/rev-share-limit/leaderboard-page.ts
- packages/ens-referrals/src/v1/award-models/rev-share-limit/api/serialize.ts
Greptile SummaryThis PR renames the The one concern worth addressing is the changeset version bump: Confidence Score: 4/5Safe to merge after addressing the changeset version bump — the rename itself is thorough and correct. The rename is complete and consistent — no stale RevShareLimit identifiers remain, tests are updated, and the old directory is fully removed. The one P1 finding is the .changeset/swift-cats-glow.md — version bump should be Important Files Changed
Reviews (1): Last reviewed commit: "review applied" | Re-trigger Greptile |
There was a problem hiding this comment.
Pull request overview
Renames the referral award model identifier and related types from rev-share-limit to rev-share-cap across the @namehash/ens-referrals v1 API surface and the ensapi v1 leaderboard builder dispatch, aligning terminology with prior “capped/uncapped” language.
Changes:
- Renamed the award model discriminant string to
"rev-share-cap"and updated all v1 unions/switch dispatch to useRevShareCap. - Moved/renamed the rev-share award-model implementation directory/files to
rev-share-capand updated related types, serializers, and zod schemas. - Updated
ensapiv1 leaderboard builder dispatch and added a changeset for versioning.
Reviewed changes
Copilot reviewed 29 out of 30 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| packages/ens-referrals/src/v1/rules.ts | Updates rules union to reference RevShareCap variant. |
| packages/ens-referrals/src/v1/leaderboard.ts | Updates leaderboard union to include RevShareCap variant. |
| packages/ens-referrals/src/v1/leaderboard-page.ts | Switches page builder dispatch to RevShareCap. |
| packages/ens-referrals/src/v1/index.ts | Re-exports rev-share implementation from rev-share-cap/* paths. |
| packages/ens-referrals/src/v1/edition-summary.ts | Switches edition summary dispatch to RevShareCap. |
| packages/ens-referrals/src/v1/edition-metrics.ts | Switches edition metrics dispatch/types to RevShareCap. |
| packages/ens-referrals/src/v1/award-models/shared/rules.ts | Renames award model constant key/value to RevShareCap / "rev-share-cap". |
| packages/ens-referrals/src/v1/award-models/rev-share-limit/leaderboard-page.ts | Removes old rev-share-limit leaderboard page implementation. |
| packages/ens-referrals/src/v1/award-models/rev-share-limit/api/serialize.ts | Removes old rev-share-limit serialization implementation. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/status.ts | Renamed status calculator to rev-share-cap variant. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/sort-referral-events.ts | Adds sorting helper for rev-share-cap event ordering. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/rules.ts | Renames rules interface/builders/validators to RevShareCap. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/referral-event.ts | Updates documentation to rev-share-cap terminology. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/metrics.ts | Renames rev-share metrics types/functions to RevShareCap. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/leaderboard.ts | Renames leaderboard types/builder to RevShareCap and updates imports. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/leaderboard.test.ts | Updates tests to use RevShareCap builder/types. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/leaderboard-page.ts | Adds rev-share-cap leaderboard page implementation. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/edition-summary.ts | Renames edition summary types/builders to RevShareCap. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/edition-metrics.ts | Renames edition metrics types to RevShareCap. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/api/zod-schemas.ts | Renames rev-share zod schema builders to RevShareCap. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/api/serialized-types.ts | Renames serialized types to RevShareCap. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/api/serialize.ts | Adds rev-share-cap serialization implementation. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/aggregations.ts | Renames aggregation types/builders to RevShareCap. |
| packages/ens-referrals/src/v1/api/zod-schemas.ts | Updates top-level discriminated unions to point at RevShareCap schemas. |
| packages/ens-referrals/src/v1/api/zod-schemas.test.ts | Updates schema tests to use RevShareCap discriminant. |
| packages/ens-referrals/src/v1/api/serialized-types.ts | Updates top-level serialized unions to RevShareCap. |
| packages/ens-referrals/src/v1/api/serialize.ts | Updates top-level serializer dispatch to RevShareCap. |
| packages/ens-referrals/README.md | Updates documentation examples to check RevShareCap. |
| apps/ensapi/src/lib/ensanalytics/referrer-leaderboard/get-referrer-leaderboard-v1.ts | Updates v1 leaderboard dispatch to use RevShareCap. |
| .changeset/swift-cats-glow.md | Adds changeset describing the rename and bumps versions. |
💡 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
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
packages/ens-referrals/src/v1/award-models/rev-share-cap/metrics.ts (1)
176-186: 🛠️ Refactor suggestion | 🟠 MajorKeep only the cap-specific invariants in this field doc.
The “valid
PriceUsdcwith amount between 0 and …” wording repeats the generic non-negative invariant that already belongs onPriceUsdc. This field doc should keep only the rev-share-cap-specific constraints, such as theawardPoolupper bound and the zero-when-unqualified/disqualified cases.Based on learnings, prefer placing invariants on type aliases only when the invariant is context-independent or reused across multiple fields.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@packages/ens-referrals/src/v1/award-models/rev-share-cap/metrics.ts` around lines 176 - 186, Edit the doc comment for the field describing "The referrer's (tentative) capped USDC award" to remove the generic non-negative/“valid PriceUsdc” invariant and keep only rev-share-cap-specific constraints: the upper-bound by ReferralProgramRulesRevShareCap.awardPool.amount, the invariant Always <= uncappedAward.amount, and the zero-when conditions (amount equals 0 when isAdminDisqualified is true and when isQualified is false); move the generic non-negative/valid-PriceUsdc wording to the PriceUsdc type alias if not already present.
🤖 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/ens-referrals/src/v1/award-models/rev-share-cap/metrics.ts`:
- Around line 190-240: validateAwardedReferrerMetricsRevShareCap currently does
not enforce that uncappedAward equals the rules-derived formula
(maxBaseRevenueShare × totalBaseRevenueContribution), allowing inconsistent
records; fix by either (A) computing uncappedAward inside
buildAwardedReferrerMetricsRevShareCap instead of accepting it from the caller
(derive using rules.maxBaseRevenueShare and
referrer.totalBaseRevenueContribution and set uncappedAward before calling
validateAwardedReferrerMetricsRevShareCap), or (B) add a check inside
validateAwardedReferrerMetricsRevShareCap that computes the expected uncapped
amount from rules.maxBaseRevenueShare and the referrer fields (e.g., from
RankedReferrerMetricsRevShareCap.totalBaseRevenueContribution) and throws if
metrics.uncappedAward !== expected; update any error messages to include the
expected and actual values.
---
Outside diff comments:
In `@packages/ens-referrals/src/v1/award-models/rev-share-cap/metrics.ts`:
- Around line 176-186: Edit the doc comment for the field describing "The
referrer's (tentative) capped USDC award" to remove the generic
non-negative/“valid PriceUsdc” invariant and keep only rev-share-cap-specific
constraints: the upper-bound by
ReferralProgramRulesRevShareCap.awardPool.amount, the invariant Always <=
uncappedAward.amount, and the zero-when conditions (amount equals 0 when
isAdminDisqualified is true and when isQualified is false); move the generic
non-negative/valid-PriceUsdc wording to the PriceUsdc type alias if not already
present.
🪄 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: def357a3-e889-4e8d-b129-977210dc6b67
📒 Files selected for processing (2)
packages/ens-referrals/src/v1/award-models/rev-share-cap/metrics.tspackages/ens-referrals/src/v1/award-models/rev-share-cap/rules.ts
lightwalker-eth
left a comment
There was a problem hiding this comment.
@Goader Looks good 👍 Shared very small comments please take the lead to merge 👍
|
|
||
| describe("Scenario C — already qualified, claims incremental uncapped award per event", () => { | ||
| it("qualified referrer claims incremental award on subsequent events (unlimited pool)", () => { | ||
| it("qualified referrer claims incremental award on subsequent events (non-binding pool cap)", () => { |
There was a problem hiding this comment.
| it("qualified referrer claims incremental award on subsequent events (non-binding pool cap)", () => { | |
| it("qualified referrer claims incremental award on subsequent events (uncapped)", () => { |
|
|
||
| describe("Scenario B — referrer just qualifies, claims all accumulated uncapped award", () => { | ||
| it("claims all accumulated uncapped award when qualifying (unlimited pool)", () => { | ||
| it("claims all accumulated uncapped award when qualifying (non-binding pool cap)", () => { |
There was a problem hiding this comment.
| it("claims all accumulated uncapped award when qualifying (non-binding pool cap)", () => { | |
| it("claims all accumulated uncapped award when qualifying (uncapped)", () => { |
There was a problem hiding this comment.
Pull request overview
This PR standardizes referral award-model terminology by renaming the rev-share-limit award model to rev-share-cap across the @namehash/ens-referrals v1 API surface and the ensapi integration, keeping types, discriminants, filenames, and related docs/tests aligned.
Changes:
- Renames the award model discriminant from
"rev-share-limit"to"rev-share-cap"and updates all dependent v1 types/unions/switches. - Moves/updates rev-share model implementation modules (rules, leaderboard, metrics, serialization, zod schemas) and removes remaining
rev-share-limitmodules. - Updates
ensapiv1 leaderboard builder dispatch + adds a changeset for versioning.
Reviewed changes
Copilot reviewed 29 out of 30 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| packages/ens-referrals/src/v1/rules.ts | Updates top-level rules union/docs to rev-share-cap. |
| packages/ens-referrals/src/v1/leaderboard.ts | Updates leaderboard union to rev-share-cap. |
| packages/ens-referrals/src/v1/leaderboard-page.ts | Switches leaderboard page builder dispatch to RevShareCap. |
| packages/ens-referrals/src/v1/index.ts | Updates v1 barrel exports to rev-share-cap modules. |
| packages/ens-referrals/src/v1/edition-summary.ts | Switches edition summary builder dispatch to RevShareCap. |
| packages/ens-referrals/src/v1/edition-metrics.ts | Switches edition metrics dispatch/types to RevShareCap. |
| packages/ens-referrals/src/v1/award-models/shared/rules.ts | Renames ReferralProgramAwardModels key/value to RevShareCap. |
| packages/ens-referrals/src/v1/award-models/rev-share-limit/leaderboard-page.ts | Removes old rev-share-limit leaderboard page module. |
| packages/ens-referrals/src/v1/award-models/rev-share-limit/api/serialize.ts | Removes old rev-share-limit serialization module. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/status.ts | Renames status calculator types/docs to rev-share-cap. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/sort-referral-events.ts | Adds event sorting helper for deterministic chronological ordering. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/rules.ts | Renames rev-share rules + builders/validators to RevShareCap. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/referral-event.ts | Updates model docs to rev-share-cap. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/metrics.ts | Renames metrics types/functions to RevShareCap. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/leaderboard.ts | Renames leaderboard builder/types to RevShareCap. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/leaderboard.test.ts | Updates test suite naming/expectations to RevShareCap. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/leaderboard-page.ts | Adds rev-share-cap leaderboard page type + builder. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/edition-summary.ts | Renames edition summary types/builders to RevShareCap. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/edition-metrics.ts | Renames edition metrics types to RevShareCap. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/api/zod-schemas.ts | Renames zod schemas and discriminants to RevShareCap. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/api/serialized-types.ts | Renames serialized type interfaces to RevShareCap. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/api/serialize.ts | Adds rev-share-cap serializers to match renamed types. |
| packages/ens-referrals/src/v1/award-models/rev-share-cap/aggregations.ts | Renames aggregated metrics types/builders to RevShareCap. |
| packages/ens-referrals/src/v1/api/zod-schemas.ts | Wires v1 API parsing to RevShareCap schemas. |
| packages/ens-referrals/src/v1/api/zod-schemas.test.ts | Updates v1 API parsing tests to RevShareCap. |
| packages/ens-referrals/src/v1/api/serialized-types.ts | Updates top-level serialized unions to RevShareCap. |
| packages/ens-referrals/src/v1/api/serialize.ts | Updates top-level serializers dispatch to RevShareCap. |
| packages/ens-referrals/README.md | Updates README usage examples to RevShareCap. |
| apps/ensapi/src/lib/ensanalytics/referrer-leaderboard/get-referrer-leaderboard-v1.ts | Updates ensapi v1 builder dispatch to RevShareCap. |
| .changeset/swift-cats-glow.md | Versions @namehash/ens-referrals (minor) + ensapi (patch) for rename. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
rev-share-limitrenamed torev-share-capcloses: #1900
Summary
rev-share-limitrenamed torev-share-capboth in the filenames, code, and relevant comments/documentationWhy
Testing
Pre-Review Checklist (Blocking)