Skip to content

chore: remove deprecated perspectives from the SDK - #93

Merged
Seranged merged 7 commits into
mainfrom
chore/remove-deprecated-perspectives
Aug 11, 2026
Merged

Seranged merged 7 commits into
mainfrom
chore/remove-deprecated-perspectives

Conversation

@kasperpawlowski

@kasperpawlowski kasperpawlowski commented Aug 10, 2026

Copy link
Copy Markdown
Collaborator

Summary

euler-interfaces is removing the deprecated perspective, registry and eUSD address keys (euler-xyz/euler-interfaces#226); everything except escrowedCollateralPerspective, evkFactoryPerspective and eulerEarnFactoryPerspective goes. Align the SDK — two concerns:

1. Remove dead perspective enum members

  • StandardEVaultPerspectives: drop GOVERNED and EDGE — their address keys disappear from EulerChains.json, so resolution would always throw
  • StandardEulerEarnPerspectives: drop GOVERNED, keep FACTORY
  • prune removed keys from the Deployment type (feeFlowControllerUtil and the governor keys stay — still published and consumed by FeeFlowService)

2. Stop presenting factory perspectives as a trust signal

governedPerspective was the curated on-chain whitelist; the factory perspectives only prove deployment provenance and anyone can deploy through the factories. The SDK never fell back to GOVERNED internally (enum-only, callers opt in), but the first commit had substituted GOVERNEDFACTORY in examples/docs, relabeling the permissionless factory set as "verified". Fixed:

  • examples enumerate the universe via the factory perspectives and derive trust from euler-labels (product-listed vaults / earn entries) plus the escrow perspective; the FeeFlow example restricts its buy universe accordingly (the plan calls convertFees on selected vaults)
  • docs get an explicit "verified" is not "trusted" note with a trusted-subset recipe; enums get provenance-only doc comments

Naming: fetchVerifiedVault* stays

An earlier revision of this PR renamed the methods to fetchPerspectiveVault* on the grounds that "verified" implies trust. That rename is reverted: verified is the perspectives' own on-chain vocabulary (BasePerspective.isVerified() / verifiedArray()), so the names accurately describe perspective verification — the trust caveat belongs in the docs (point 2), not in a breaking rename. The public method surface is now byte-identical to master.

Release sequencing

Publish before euler-xyz/euler-interfaces#226 merges (the SDK fetches EulerChains.json from master at runtime; the removed enum members would become guaranteed runtime throws the moment it merges). Still a breaking release — the enum members and Deployment keys vanish from the public types, a compile-time break for anyone referencing them. Consumers that only use the surviving surface compile unchanged (euler-lite's three fetchVerifiedVaultAddresses(ESCROW) call sites need no migration).

Test plan

  • tsc --noEmit clean
  • vitest: 513 passed, type tests clean
  • no fetchPerspectiveVault* occurrences left anywhere; per-file fetchVerifiedVault* usage identical to the pre-rename baseline

Summary by CodeRabbit

  • New Features

    • Added escrow-based vault discovery alongside factory-based discovery.
    • Vault filtering now supports non-deprecated products and verified labels.
    • Discovery examples distinguish provenance from trust and include Euler Earn filtering.
  • Documentation

    • Updated usage guidance and examples for factory, escrow, and label-based discovery.
    • Clarified verification, trust, and escrow behavior.
  • Breaking Changes

    • Retired governed and edge perspective options.
    • Removed several legacy deployment address fields.

euler-interfaces is removing the deprecated perspective, registry and
eUSD address keys (everything except escrowedCollateralPerspective,
evkFactoryPerspective and eulerEarnFactoryPerspective). Align the SDK:

- StandardEVaultPerspectives: drop GOVERNED and EDGE (their address
  keys disappear from EulerChains.json, resolution would always throw)
- StandardEulerEarnPerspectives: drop GOVERNED, keep FACTORY
- prune removed keys from the Deployment type (feeFlowControllerUtil
  and the governor keys stay - still published and consumed)
- update examples, docs and tests accordingly
@coderabbitai

coderabbitai Bot commented Aug 10, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The SDK replaces retired governed and edge perspective usage with factory and escrow discovery. Examples and documentation apply label, deprecation, and escrow filters. Deployment address types and read-path tests now reflect the updated perspective APIs.

Changes

Perspective-based vault discovery

Layer / File(s) Summary
Perspective contracts and standard definitions
packages/euler-v2-sdk/src/services/vaults/..., packages/euler-v2-sdk/src/services/deploymentService/deploymentService.ts
Standard EVault perspectives retain factory discovery and add escrow discovery. Retired governed and edge perspectives and legacy deployment address fields are removed.
Perspective discovery and filtering
packages/euler-v2-sdk/examples/..., packages/euler-v2-sdk/docs/basic-usage.md
Examples and documentation use factory and escrow perspectives. Vault results are filtered by deprecation status, Euler labels, and escrow membership.
Perspective discovery test updates
packages/euler-v2-sdk/test/readPathServices.test.ts
Mocks and assertions use perspective-address APIs. Tests cover perspective resolution, empty results, errors, filtering, and escrow and factory addresses.

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

Sequence Diagram(s)

sequenceDiagram
  participant DiscoveryExample
  participant EVaultService
  participant EulerEarnService
  DiscoveryExample->>EVaultService: Fetch factory and escrow perspective addresses
  DiscoveryExample->>EulerEarnService: Fetch factory perspective addresses
  EVaultService-->>DiscoveryExample: Return EVault addresses and metadata
  EulerEarnService-->>DiscoveryExample: Return Euler Earn addresses and metadata
  DiscoveryExample->>DiscoveryExample: Apply label, deprecation, and escrow filters
Loading

Suggested reviewers: dglowinski, seranged

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
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 Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: removing deprecated perspectives from the SDK.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/remove-deprecated-perspectives

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

The removed governedPerspective was the curated on-chain whitelist; the
factory perspectives only prove deployment provenance and anyone can
deploy through the factories. The previous commit substituted GOVERNED
with FACTORY in examples and docs, silently relabeling the
permissionless factory set as 'verified'.

- examples now enumerate the universe via the factory perspectives and
  derive trust from euler-labels (product-listed vaults / earn entries)
  plus the escrow perspective; the FeeFlow example restricts the buy
  universe accordingly since the plan interacts with selected vaults
- docs gain an explicit 'verified is not trusted' note and a trusted
  subset recipe
- enum doc comments spell out provenance-only semantics
'Verified' in the perspective methods meant 'passed the perspective's
on-chain checks', which reads as a trust claim it never was - for the
factory perspectives it is provenance only. With the curated governed
perspectives retired there is no on-chain trusted list left, so the
naming is actively misleading.

- fetchVerifiedVaultAddresses -> fetchPerspectiveVaultAddresses
- fetchVerifiedVaults -> fetchPerspectiveVaults
- adapter fetchVerifiedVaultsAddresses -> fetchPerspectiveVaultsAddresses

Applied across services (EVault, EulerEarn, Securitize, vault meta),
adapters, buildSDK wiring, tests, examples and docs.
@kasperpawlowski
kasperpawlowski marked this pull request as ready for review August 10, 2026 14:45

@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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
packages/euler-v2-sdk/src/services/vaults/vaultMetaService/vaultMetaService.ts (1)

353-384: 🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

Partition standard perspectives before service fan-out.

Line 360 sends every perspective to every registered service. EVaultService and EulerEarnService throw when a perspective key is absent from their local deployment addresses. The documented mixed EVault and EulerEarn request therefore rejects before it can return addresses.

Route each standard perspective enum only to its owning service. Preserve explicit address perspectives for applicable services. Add a regression test with mixed EVault and EulerEarn perspectives.

🤖 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
`@packages/euler-v2-sdk/src/services/vaults/vaultMetaService/vaultMetaService.ts`
around lines 353 - 384, Update fetchPerspectiveVaultAddresses to partition
standard VaultMetaPerspective values by their owning service before calling
vaultServices, while continuing to pass explicit address perspectives to
applicable services. Ensure EVaultService and EulerEarnService only receive
supported perspective keys, merge and deduplicate returned addresses as before,
and add a regression test covering a mixed EVault and EulerEarn request.
packages/euler-v2-sdk/src/services/vaults/securitizeVaultService/securitizeVaultService.ts (1)

285-302: 🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift

Implement or explicitly reject Securitize perspective discovery. The public service and adapter both discard the supplied perspectives and return an empty list. Callers cannot distinguish “no matching vaults” from an unsupported operation.

  • packages/euler-v2-sdk/src/services/vaults/securitizeVaultService/securitizeVaultService.ts#L285-L302: resolve supported perspectives through the adapter, or throw an explicit unsupported error.
  • packages/euler-v2-sdk/src/services/vaults/securitizeVaultService/adapters/securitizeVaultOnchainAdapter.ts#L196-L201: implement the on-chain perspective query, or throw the same explicit unsupported error.
🤖 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
`@packages/euler-v2-sdk/src/services/vaults/securitizeVaultService/securitizeVaultService.ts`
around lines 285 - 302, Implement perspective discovery instead of silently
returning an empty list: update
SecuritizeVaultService.fetchPerspectiveVaultAddresses to resolve the supplied
perspectives through its adapter and return the resulting addresses, and update
SecuritizeVaultOnchainAdapter’s corresponding perspective-query method to
perform the on-chain lookup. If unsupported, both sites must throw the same
explicit unsupported-operation error rather than returning an empty result;
apply the service change in
packages/euler-v2-sdk/src/services/vaults/securitizeVaultService/securitizeVaultService.ts:285-302
and the adapter change in
packages/euler-v2-sdk/src/services/vaults/securitizeVaultService/adapters/securitizeVaultOnchainAdapter.ts:196-201.
🧹 Nitpick comments (1)
packages/euler-v2-sdk/test/readPathServices.test.ts (1)

746-748: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Rename the remaining verified* locals.

The renamed API still uses verifiedAddresses, verifiedVaults, verified, and verifiedErrors. Rename these locals to perspective-based names so the tests do not imply that a perspective establishes trust.

As per path instructions, factory perspectives establish deployment provenance, not trust.

Also applies to: 1240-1240, 1323-1323

🤖 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 `@packages/euler-v2-sdk/test/readPathServices.test.ts` around lines 746 - 748,
Rename the remaining trust-implying locals in the affected tests:
verifiedAddresses, verifiedVaults, verified, and verifiedErrors. Use
perspective-based names consistently at the referenced locations and update all
corresponding assertions and usages, while leaving the renamed API calls
unchanged.

Source: Path instructions

🤖 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/euler-v2-sdk/docs/basic-usage.md`:
- Around line 250-255: Update the trusted-subset example around
StandardEVaultPerspectives.FACTORY to also fetch the ESCROW perspective and
retain its vault addresses separately. Change the trusted filter so a vault is
included when it has a non-deprecated product label or its address belongs to
the fetched escrow set, while preserving the existing universe query and label
validation behavior.

In `@packages/euler-v2-sdk/test/readPathServices.test.ts`:
- Around line 1236-1238: Update the rejection test around
directPerspectiveService.fetchPerspectiveVaultAddresses to pass a genuinely
unsupported perspective name, so it covers unknown-name handling rather than
missing deployment configuration. Add a separate successful assertion verifying
the supported evkFactoryPerspective mapping and its factory deployment
provenance without treating it as trusted.

---

Outside diff comments:
In
`@packages/euler-v2-sdk/src/services/vaults/securitizeVaultService/securitizeVaultService.ts`:
- Around line 285-302: Implement perspective discovery instead of silently
returning an empty list: update
SecuritizeVaultService.fetchPerspectiveVaultAddresses to resolve the supplied
perspectives through its adapter and return the resulting addresses, and update
SecuritizeVaultOnchainAdapter’s corresponding perspective-query method to
perform the on-chain lookup. If unsupported, both sites must throw the same
explicit unsupported-operation error rather than returning an empty result;
apply the service change in
packages/euler-v2-sdk/src/services/vaults/securitizeVaultService/securitizeVaultService.ts:285-302
and the adapter change in
packages/euler-v2-sdk/src/services/vaults/securitizeVaultService/adapters/securitizeVaultOnchainAdapter.ts:196-201.

In
`@packages/euler-v2-sdk/src/services/vaults/vaultMetaService/vaultMetaService.ts`:
- Around line 353-384: Update fetchPerspectiveVaultAddresses to partition
standard VaultMetaPerspective values by their owning service before calling
vaultServices, while continuing to pass explicit address perspectives to
applicable services. Ensure EVaultService and EulerEarnService only receive
supported perspective keys, merge and deduplicate returned addresses as before,
and add a regression test covering a mixed EVault and EulerEarn request.

---

Nitpick comments:
In `@packages/euler-v2-sdk/test/readPathServices.test.ts`:
- Around line 746-748: Rename the remaining trust-implying locals in the
affected tests: verifiedAddresses, verifiedVaults, verified, and verifiedErrors.
Use perspective-based names consistently at the referenced locations and update
all corresponding assertions and usages, while leaving the renamed API calls
unchanged.
🪄 Autofix

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: Repository: euler-xyz/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 06faccaa-28a6-4d61-8206-2496a9cde45e

📥 Commits

Reviewing files that changed from the base of the PR and between 1a4d6f9 and feb3013.

📒 Files selected for processing (19)
  • packages/euler-v2-sdk/docs/basic-usage.md
  • packages/euler-v2-sdk/docs/entity-diagnostics.md
  • packages/euler-v2-sdk/examples/execution/fee-flow-example.ts
  • packages/euler-v2-sdk/examples/react-sdk-example/src/queries/sdkQueries.ts
  • packages/euler-v2-sdk/examples/vaults/fetch-apys-example.ts
  • packages/euler-v2-sdk/examples/vaults/fetch-top-verified-vaults-example.ts
  • packages/euler-v2-sdk/src/sdk/buildSDK.ts
  • packages/euler-v2-sdk/src/services/deploymentService/deploymentService.ts
  • packages/euler-v2-sdk/src/services/vaults/IVaultService.ts
  • packages/euler-v2-sdk/src/services/vaults/eVaultService/adapters/eVaultOnchainAdapter/eVaultOnchainAdapter.ts
  • packages/euler-v2-sdk/src/services/vaults/eVaultService/adapters/eVaultV3Adapter/eVaultV3Adapter.ts
  • packages/euler-v2-sdk/src/services/vaults/eVaultService/eVaultService.ts
  • packages/euler-v2-sdk/src/services/vaults/eulerEarnService/adapters/eulerEarnOnchainAdapter.ts
  • packages/euler-v2-sdk/src/services/vaults/eulerEarnService/adapters/eulerEarnV3Adapter.ts
  • packages/euler-v2-sdk/src/services/vaults/eulerEarnService/eulerEarnService.ts
  • packages/euler-v2-sdk/src/services/vaults/securitizeVaultService/adapters/securitizeVaultOnchainAdapter.ts
  • packages/euler-v2-sdk/src/services/vaults/securitizeVaultService/securitizeVaultService.ts
  • packages/euler-v2-sdk/src/services/vaults/vaultMetaService/vaultMetaService.ts
  • packages/euler-v2-sdk/test/readPathServices.test.ts
💤 Files with no reviewable changes (1)
  • packages/euler-v2-sdk/src/services/deploymentService/deploymentService.ts

Comment thread packages/euler-v2-sdk/docs/basic-usage.md
Comment thread packages/euler-v2-sdk/test/readPathServices.test.ts

@LeonardEulerXYZ LeonardEulerXYZ 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.

Reviewed exact head feb301360bc5a5b7ffe68d0513d76d012060e57b against main@1a4d6f96d6735e2906a66f19fc4cab2965fe599b.

Verdict

Non-blocking review. The breaking rename and deployment-type pruning are internally consistent, the trust/provenance distinction is materially improved, and I found no correctness or security blocker.

Two non-blocking documentation inconsistencies remain in docs/basic-usage.md:

  1. Lines 250-255: the comment says the trusted subset includes label-listed or escrow vaults, but the snippet queries only FACTORY and filters only on product labels, so an unlabelled escrow vault is omitted. CodeRabbit already anchored the precise fix at #93 (comment); I am not duplicating the thread.
  2. Lines 302-313: “Across all vault types” queries only the EVault FACTORY and ESCROW perspectives. It never includes StandardEulerEarnPerspectives.FACTORY, so the result cannot contain EulerEarn vaults despite the section’s claim and union return comment. A live mainnet probe returned 876 addresses from the documented query and omitted all 46 addresses from the EulerEarn factory perspective.

Checks

  • pnpm --filter @eulerxyz/euler-v2-sdk test — 34 files, 513 tests, type tests clean
  • pnpm --filter @eulerxyz/euler-v2-sdk typecheck — passed
  • pnpm --filter @eulerxyz/euler-v2-sdk build — passed
  • pnpm --filter @eulerxyz/euler-v2-sdk lint — exit 0; only pre-existing warnings/infos outside the diff
  • pnpm --filter react-sdk-example build — passed
  • git diff --check origin/main...HEAD — passed
  • whole-diff dependency/workflow/secret/executable-surface sweep — no relevant changes or indicators

Runtime and sequencing evidence

  • Mainnet retained perspectives are live: EVK factory 876 addresses, EulerEarn factory 46, escrow 57.
  • The exact-head SDK successfully executed the documented mixed vaultMetaService.fetchPerspectiveVaultAddresses request and returned 922 unique addresses. This disproves the automated claim that mixed standard perspectives necessarily throw: both services resolve the retained keys from the shared deployment address map and call the common verifiedArray() interface.
  • euler-interfaces#226 is still open/draft and retains evkFactoryPerspective, eulerEarnFactoryPerspective, and escrowedCollateralPerspective while removing the enum/type keys pruned here.
  • Euler Lite master and development are pinned to SDK 1.2.5 and still use the old method name. That is not an immediate runtime break because the package is locked and Lite only queries retained ESCROW; it is a required mechanical migration when Lite takes this breaking SDK release.
  • No committed package-version change is missing: this repository derives the npm version from the release tag and temporarily writes it during publish.

The Securitize perspective methods still return an empty result, but that behavior predates this PR and the service explicitly has no standard perspectives; the patch only renames that existing surface. I would not make this migration PR carry an unrelated API-behavior change.

Comment thread packages/euler-v2-sdk/docs/basic-usage.md
- basic-usage: the trusted-subset recipe now includes unlabelled escrow
  vaults, matching the surrounding prose (fetch the escrow set and allow
  product label OR escrow membership)
- basic-usage: the 'across all vault types' recipe includes
  StandardEulerEarnPerspectives.FACTORY - the meta service only
  discovers addresses the given perspectives return, so EulerEarn
  vaults were missing from the result
- test: the unknown-perspective rejection uses a genuinely unsupported
  name instead of a supported member with a missing address, and the
  factory perspective gains a positive resolution assertion
@kasperpawlowski

Copy link
Copy Markdown
Collaborator Author

Both review findings (plus the test nit) addressed in b7fa1e7:

  • docs/basic-usage.md trusted-subset recipe — now fetches the escrow set separately and keeps vaults with a non-deprecated product label or escrow membership, so unlabelled escrow vaults are no longer excluded (matches the CodeRabbit inline suggestion).
  • docs/basic-usage.md "Across all vault types" — adds StandardEulerEarnPerspectives.FACTORY to the recipe (and a note that the meta service only discovers what the given perspectives return), so the 46 mainnet EulerEarn factory vaults are included.
  • test/readPathServices.test.ts — the unknown-perspective rejection now uses a genuinely unsupported name (unknownPerspective), and evkFactoryPerspective gains a positive resolution assertion against a fixture address.

Typecheck clean, 513/513 tests pass including type tests.

@LeonardEulerXYZ LeonardEulerXYZ 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.

Reviewed exact head b7fa1e745a5b315bff1143d3ef20c955d124ca4a, superseding my review of feb3013.

Finding

P2 — shipped euler-sdk agent guidance still calls the removed API

skills/euler-sdk/AGENTS.md:62 still says:

For batch vault reads (`fetchVaults`, `fetchVerifiedVaults`) ...

This head removes fetchVerifiedVaults; the replacement is fetchPerspectiveVaults. The repository advertises this as an installable euler-sdk skill from the root README, and SKILL.md points users to AGENTS.md as the full compiled guide. Agents following the shipped guidance after the breaking SDK release will therefore generate a call that no longer typechecks or exists at runtime.

Please update the method name and apply the skill's versioning procedure in skills/euler-sdk/VERSIONING.md (version fields/header plus changelog). A whole-repository search found no other old fetchVerifiedVault* API reference outside test-local variable names.

Recheck of b7fa1e7

The new commit correctly resolves the earlier review findings:

  • the trusted-subset recipe now unions factory and escrow discovery and retains active label-listed or escrow vaults;
  • the all-vault-types recipe now includes StandardEulerEarnPerspectives.FACTORY;
  • the perspective test now positively resolves evkFactoryPerspective and uses a genuinely unknown name for the rejection path.

Validation at the exact head:

  • SDK tests: 34 files, 513 tests, 2 type tests — passed;
  • SDK typecheck and build — passed;
  • SDK lint — exit 0, only pre-existing warnings/infos outside the diff;
  • React example build — passed;
  • git diff --check feb3013..b7fa1e7 — passed;
  • checkout remained clean.

Release-order gate

Separate from this PR's code: do not merge euler-interfaces#226 until this breaking SDK is merged and published and direct-manifest consumers are ready. euler-data-v3#475 remains an open prerequisite; npm latest is still SDK 1.2.5. Euler Lite's removed-address-key preparation has landed, but its eventual SDK bump must rename four source locations plus corresponding mocks, not merely three call sites.

…ods (1.3.1)

skills/euler-sdk/AGENTS.md still instructed agents to call the removed
fetchVerifiedVaults; agents following the shipped guidance would
generate code that no longer compiles against this release. Renamed to
fetchPerspectiveVaults and bumped the skill to 1.3.1 in all four
locations mandated by VERSIONING.md (SKILL.md frontmatter,
metadata.json, AGENTS.md header, CHANGELOG.md).
@kasperpawlowski

Copy link
Copy Markdown
Collaborator Author

Remaining P2 addressed in 54718ac: skills/euler-sdk/AGENTS.md:62 now recommends fetchPerspectiveVaults, and the skill is bumped to 1.3.1 in all four locations required by VERSIONING.md (SKILL.md frontmatter, metadata.json, AGENTS.md header, CHANGELOG.md — entry notes the rename tracks the SDK's breaking release).

Repo-wide grep confirms zero remaining fetchVerifiedVault* references outside the changelog entry describing the rename. My earlier sweep only covered src test docs examples — thanks for catching the skills/ gap.

@LeonardEulerXYZ LeonardEulerXYZ 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.

Verified exact head 54718ac64009cd19cd67b70891932ca732ef5ba2.

The remaining P2 is resolved:

  • skills/euler-sdk/AGENTS.md now uses fetchPerspectiveVaults;
  • skill version 1.3.1 is consistent across SKILL.md, metadata.json, and the AGENTS.md header;
  • the changelog has the dated breaking-rename entry;
  • the metadata/header date is August 2026;
  • a repository-wide stale-name sweep finds only the intentional changelog reference.

PATCH is consistent with VERSIONING.md: this corrects existing guidance without adding sections or materially expanding workflow. JSON parsing, version-consistency assertions, git diff --check, and clean-tree verification passed. The prior exact-head SDK tests, typecheck, build, lint, React example build, and live perspective checks remain applicable because 54718ac changes only these four skill files.

Approved. The separate release-order gate remains: publish the SDK and land consumer readiness before merging euler-interfaces#226.

@kasperpawlowski

Copy link
Copy Markdown
Collaborator Author

Heads-up from preparing euler-lite's migration for this PR (euler-lite#800): the deployment-type diff removes more than the perspective surface — eusdOFTAdapter, seusdOFTAdapter, eUSDAdminTimelockController, edgeFactory, externalVaultRegistry, feeCollector, irmRegistry, oracleAdapterRegistry, eUSD, and seUSD all leave the types alongside the five perspective fields.

If that's intentional (pruning fields absent from euler-interfaces data), all good — euler-lite's usages of eUSD/seUSD/externalVaultRegistry/irmRegistry/oracleAdapterRegistry turned out to be dead mappings and #800 drops them. But if it's collateral from a rebase, worth restoring before this ships: these fields exist in the published 1.2.5 types, so their removal is part of the breaking surface either way and should be named in the release notes.

The perspective contracts themselves expose isVerified()/verifiedArray(),
so "verified" is the perspective vocabulary, not a trust claim; the
rename added a breaking change without changing semantics. The docs and
enum comments keep the 'verified is provenance, not trust' guidance.
@kasperpawlowski

Copy link
Copy Markdown
Collaborator Author

Reverted the fetchPerspectiveVault* rename in 72d4439 + 389a711 — the perspectives' own on-chain API is isVerified()/verifiedArray(), so "verified" is the correct provenance vocabulary and the rename was a breaking change with no semantic gain. The public method surface is now byte-identical to master; the verified ≠ trusted guidance stays in docs/JSDoc and the examples' labels+escrow trust derivation is unchanged.

This also moots the remaining P2: the skill guidance at skills/euler-sdk/AGENTS.md:62 correctly names fetchVerifiedVaults again, and the 1.3.1 skill bump (which only tracked the rename) is reverted back to 1.3.0.

Validation on head 389a711: vitest 513/513 with type tests clean; zero fetchPerspectiveVault* occurrences repo-wide; per-file fetchVerifiedVault* counts identical to the pre-rename baseline. PR description updated.

@Seranged
Seranged merged commit 2ea5f9d into main Aug 11, 2026
1 check passed
@kasperpawlowski

kasperpawlowski commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator Author

Post-publish observation retractedCorrection: I misread a grep result. main does not contain the method renames; the rename portion of this PR was deliberately reverted before merge to avoid breaking changes, and the published 2.0.0 matches main exactly. There is no divergence and no pending breaking rename. Apologies for the noise.

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.

3 participants