feat: render proposal expired and partially executed states#3036
feat: render proposal expired and partially executed states#3036mgrabina wants to merge 3 commits into
Conversation
The governance cache now emits 'expired' and 'partially_executed' proposal states and per-payload 'expired'; cacheStateToBadge fell through to 'Created' for unknown states. Map the new states to badges (Expired already existed; add Partially executed), render them in the lifecycle timeline, and show expired payloads as expired.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a34aced832
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
📦 Next.js Bundle Analysis for aave-uiThis analysis was generated by the Next.js Bundle Analysis action. 🤖
|
| Page | Size (compressed) |
|---|---|
global |
1.29 MB (🟡 +2 B) |
Details
The global bundle is the javascript bundle that loads alongside every page. It is in its own category because its impact is much higher - an increase to its size means that every page on your website loads slower, and a decrease means every page loads faster.
Any third party scripts you have added directly to your app using the <script> tag are not accounted for in this analysis
If you want further insight into what is behind the changes, give @next/bundle-analyzer a try!
Three Pages Changed Size
The following pages changed size from the code in this PR compared to its base branch:
| Page | Size (compressed) | First Load |
|---|---|---|
/governance |
90.07 KB (🟡 +61 B) |
1.38 MB |
/governance/ipfs-preview |
101.79 KB (🟡 +36 B) |
1.39 MB |
/governance/v3/proposal |
133.87 KB (🟡 +144 B) |
1.42 MB |
Details
Only the gzipped size is provided here based on an expert tip.
First Load is the size of the global bundle plus the bundle for the individual page. If a user were to show up to your website and land on a given page, the first load size represents the amount of javascript that user would need to download. If next/link is used, subsequent page loads would only need to download that page's bundle (the number in the "Size" column), since the global bundle has already been downloaded.
Any third party scripts you have added directly to your app using the <script> tag are not accounted for in this analysis
Next to the size is how much the size has increased or decreased compared with the base branch of this PR. If this percentage has increased by 20% or more, there will be a red status indicator applied, indicating that special attention should be given to this.
isTerminal included 'executed', forcing the final timeline step completed/inactive even when a payload was still pending. Limit isTerminal to expired/partially_executed so 'executed' keeps its allPayloadsExecuted-driven active state.
|
📦 Next.js Bundle Analysis for aave-uiThis analysis was generated by the Next.js Bundle Analysis action. 🤖
|
| Page | Size (compressed) |
|---|---|
global |
1.29 MB (🟡 +4 B) |
Details
The global bundle is the javascript bundle that loads alongside every page. It is in its own category because its impact is much higher - an increase to its size means that every page on your website loads slower, and a decrease means every page loads faster.
Any third party scripts you have added directly to your app using the <script> tag are not accounted for in this analysis
If you want further insight into what is behind the changes, give @next/bundle-analyzer a try!
Three Pages Changed Size
The following pages changed size from the code in this PR compared to its base branch:
| Page | Size (compressed) | First Load |
|---|---|---|
/governance |
90.07 KB (🟡 +61 B) |
1.38 MB |
/governance/ipfs-preview |
101.79 KB (🟡 +36 B) |
1.39 MB |
/governance/v3/proposal |
133.87 KB (🟡 +143 B) |
1.42 MB |
Details
Only the gzipped size is provided here based on an expert tip.
First Load is the size of the global bundle plus the bundle for the individual page. If a user were to show up to your website and land on a given page, the first load size represents the amount of javascript that user would need to download. If next/link is used, subsequent page loads would only need to download that page's bundle (the number in the "Size" column), since the global bundle has already been downloaded.
Any third party scripts you have added directly to your app using the <script> tag are not accounted for in this analysis
Next to the size is how much the size has increased or decreased compared with the base branch of this PR. If this percentage has increased by 20% or more, there will be a red status indicator applied, indicating that special attention should be given to this.
The finished step used proposal.executedAt (the GovernanceCore dispatch time), which precedes the real on-chain payload execution by the executor timelock. Use the latest payload executedAt so the timeline matches the on-chain completion (e.g. proposal 476: Apr 30 vs the dispatch Apr 29).
|
📦 Next.js Bundle Analysis for aave-uiThis analysis was generated by the Next.js Bundle Analysis action. 🤖
|
| Page | Size (compressed) |
|---|---|
global |
1.29 MB (🟡 +4 B) |
Details
The global bundle is the javascript bundle that loads alongside every page. It is in its own category because its impact is much higher - an increase to its size means that every page on your website loads slower, and a decrease means every page loads faster.
Any third party scripts you have added directly to your app using the <script> tag are not accounted for in this analysis
If you want further insight into what is behind the changes, give @next/bundle-analyzer a try!
Three Pages Changed Size
The following pages changed size from the code in this PR compared to its base branch:
| Page | Size (compressed) | First Load |
|---|---|---|
/governance |
90.07 KB (🟡 +61 B) |
1.38 MB |
/governance/ipfs-preview |
101.79 KB (🟡 +36 B) |
1.39 MB |
/governance/v3/proposal |
133.91 KB (🟡 +189 B) |
1.42 MB |
Details
Only the gzipped size is provided here based on an expert tip.
First Load is the size of the global bundle plus the bundle for the individual page. If a user were to show up to your website and land on a given page, the first load size represents the amount of javascript that user would need to download. If next/link is used, subsequent page loads would only need to download that page's bundle (the number in the "Size" column), since the global bundle has already been downloaded.
Any third party scripts you have added directly to your app using the <script> tag are not accounted for in this analysis
Next to the size is how much the size has increased or decreased compared with the base branch of this PR. If this percentage has increased by 20% or more, there will be a red status indicator applied, indicating that special attention should be given to this.
What
The governance cache now returns two new proposal states —
expiredandpartially_executed— and surfaces per-payloadexpired. This renders them end-to-end and corrects the lifecycle "finished" timestamp.adapters.ts: mapexpired→Expired,partially_executed→PartiallyExecuted.StateBadge.tsx:Expiredalready existed (red); addedPartiallyExecuted(amber) and the label/filter string maps. The proposal-list filter picks up both automatically.ProposalLifecycleCache.tsx:executedAt(the real on-chain completion) instead ofproposal.executedAt(the GovernanceCore dispatch, which precedes it by the executor timelock). For proposal 476 that's Apr 30 vs dispatch Apr 29 — matching vote.onaave.Validation
prettier + eslint clean on the changed files. The
Partially executedlabel and amber colour are placeholders pending design.Requires the governance cache backend PR that emits the new states: https://github.com/aave/governance-v3-cache/pull/114
Audit (app v3 vs vote.onaave, proposals 476/471/479): the only data discrepancies were the partial/expired state and the finished timestamp — both fixed here. Votes, quorum, created/voting times, payloads and metadata all matched.
https://linear.app/aavelabs/issue/AAVEV3-143/partial-executions-state
Closes AAVEV3-143
Closes AAVEV3-87
Closes AAVEV3-91