Skip to content

feat: render proposal expired and partially executed states#3036

Open
mgrabina wants to merge 3 commits into
mainfrom
gov-expired-partial-states
Open

feat: render proposal expired and partially executed states#3036
mgrabina wants to merge 3 commits into
mainfrom
gov-expired-partial-states

Conversation

@mgrabina

@mgrabina mgrabina commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

What

The governance cache now returns two new proposal states — expired and partially_executed — and surfaces per-payload expired. This renders them end-to-end and corrects the lifecycle "finished" timestamp.

  • adapters.ts: map expiredExpired, partially_executedPartiallyExecuted.
  • StateBadge.tsx: Expired already existed (red); added PartiallyExecuted (amber) and the label/filter string maps. The proposal-list filter picks up both automatically.
  • ProposalLifecycleCache.tsx:
    • timeline terminal step for the two new states, plus per-payload "expired" rendering;
    • the finished step now uses the latest payload executedAt (the real on-chain completion) instead of proposal.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 executed label 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

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

vercel Bot commented Jun 19, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
interface Ready Ready Preview, Comment Jun 19, 2026 6:31pm

Request Review

@linear-code

linear-code Bot commented Jun 19, 2026

Copy link
Copy Markdown

@mgrabina mgrabina marked this pull request as ready for review June 19, 2026 17:40

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 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".

Comment thread src/modules/governance/proposal/ProposalLifecycleCache.tsx Outdated
@github-actions

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown

📦 Next.js Bundle Analysis for aave-ui

This analysis was generated by the Next.js Bundle Analysis action. 🤖

⚠️ Global Bundle Size Increased

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.
@github-actions

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown

📦 Next.js Bundle Analysis for aave-ui

This analysis was generated by the Next.js Bundle Analysis action. 🤖

⚠️ Global Bundle Size Increased

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).
@github-actions

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown

📦 Next.js Bundle Analysis for aave-ui

This analysis was generated by the Next.js Bundle Analysis action. 🤖

⚠️ Global Bundle Size Increased

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants