Skip to content

docs(developer-hub): surface the OIS rewards pause on the OIS docs - #3968

Merged
dourolabs-greenlight[bot] merged 3 commits into
mainfrom
hydra/i-gigwfms/head
Aug 13, 2026
Merged

dourolabs-greenlight[bot] merged 3 commits into
mainfrom
hydra/i-gigwfms/head

Conversation

@aditya520

@aditya520 aditya520 commented Aug 12, 2026 •

Copy link
Copy Markdown
Member

Surfaces the OIS rewards pause on the developer-hub Oracle Integrity Staking docs, which still read as though rewards flow.

Today only mathematical-representation.mdx mentions OP-PIP-103 — a reader landing on any other OIS page gets the full design write-up with no indication that the reward rate has been 0 since 22 April 2026.

Changes

  • Section banner (src/app/(docs)/[section]/layout.tsx) — a fumadocs-ui Banner on the oracle-integrity-staking section, so the pause is visible on every OIS page rather than only the section index. Modelled on the sibling Entropy banner in the same file (same Banner, same changeLayout={false}, same <span> + separator + external-link shape); it carries no id, which is what makes it non-dismissible — Banner renders its close button and its localStorage dismissal script only when an id is present. Styled amber (bg-amber-950 text-amber-100) rather than Entropy's rainbow promo variant or the Core migration banner's violet, following the MigrationBanner precedent of overriding the palette via className.

    OIS rewards are paused. Staking and slashing remain active — stake is still at risk of slashing. | Read the governance update.

    Two deliberate deviations from the Entropy banner, both measured in a real browser (numbers under Verification):

    • height="auto" + min-h-12 py-2 instead of Banner's default fixed height: 3rem. Banner applies height as an inline style on a flex items-center box with no clipping, so copy that wraps past one line at narrow widths spills out of the box and over whatever follows it. This copy wraps to four lines at 320–375px. On desktop the banner is still exactly 48px tall, identical to Entropy's.
    • underline on the link. Banner gives links no colour or decoration of their own, so an undecorated anchor is indistinguishable from the surrounding sentence.
  • oracle-integrity-staking/index.mdx — a warning callout above the design principles stating that the reward rate was set to 0 on 22 April 2026 per OP-PIP-103, that staking and slashing remain active and stake assigned to a publisher is still subject to slashing, that stake can be unstaked and withdrawn at any time, and that governance staking is unaffected. Links to the April 2026 governance update, which is the authoritative post-passage explainer. Kept alongside the banner deliberately: the banner is a single line and can only carry the headline plus the slashing warning, while the callout carries the date, the proposal, the unstake-anytime point, and the governance-unaffected point.

  • oracle-integrity-staking/slashing-rulebook.mdx — the Staking section said additional stake "allows such publisher to earn a delegation fee" with no qualification. The delegation fee is a share of delegator rewards (event.y * ... * computeDelegatorRewardPercentage(delegationFee) in governance/pyth_staking_sdk/src/utils/pool.ts), so at y = 0 no delegation fees accrue either. Added one sentence saying so, and noting slashing continues to apply.

  • oracle-integrity-staking/mathematical-representation.mdx — one-line link fix, see below. Its existing OP-PIP-103 callout is otherwise accurate and left alone.

The "staking and slashing remain active" framing is deliberate throughout, banner included: "OIS is paused" is imprecise and could lead someone to leave stake at risk believing the program is inert.

OP-PIP-103 links now point at the forum

Every OP-PIP-103 link in this directory pointed at https://proposals.pyth.network/proposals/103, which 404s. That host is the xc_admin multisig frontend (governance/xc_admin/packages/xc_admin_frontend) — a pages-router app exposing only / with query params, which is the form the CLI itself prints (xc_admin_cli/src/index.ts:448: https://proposals.pyth.network/?tab=proposals&proposal=<pubkey>). There is no /proposals/<n> route.

Measured, with a control to rule out bot-blocking:

request status
https://proposals.pyth.network/ 200
https://proposals.pyth.network/proposals/103 404
https://forum.pyth.network/t/passed-op-pip-103-pausing-ois-rewards/2471 200 — "[PASSED] OP-PIP-103: Pausing OIS Rewards"

All three occurrences now point at the forum topic, which is the authoritative post-passage record. This includes the pre-existing one at mathematical-representation.mdx:10, folded in because it is the same dead link one directory over and leaving it would ship a page whose sole OP-PIP-103 citation 404s.

Verification

turbo build test:lint test:format test:types test:unit --filter @pythnetwork/developer-hub — 47/47 tasks pass; turbo fix leaves the tree clean.

Rendered against a production build (next build + next start) rather than dev. Banner presence, scoped to the OIS section and to nothing else:

path status OIS banner close button
/oracle-integrity-staking 200 yes none
/oracle-integrity-staking/mathematical-representation 200 yes none
/oracle-integrity-staking/slashing-rulebook 200 yes none
/oracle-integrity-staking/publisher-quality-ranking 200 yes none
/entropy 200 no (its own banner, dismissible) —
/price-feeds, /price-feeds/core, /, /changelog 200 no —

Those four are every page in the section (content/docs/oracle-integrity-staking/meta.json), and both the section index ([section]/page.tsx) and its sub-pages ([section]/[...slug]/page.tsx) sit under the edited layout. Emitted markup:

<div class="sticky top-0 z-40 flex flex-row items-center justify-center px-4 text-center text-sm font-medium min-h-12 bg-amber-950 py-2 text-amber-100" style="height:auto">
  <span><strong>OIS rewards are paused.</strong> Staking and slashing remain active — stake is still at risk of slashing.  | <a class="underline" href="https://forum.pyth.network/t/ois-rewards-update-april-2026/2479" rel="noopener noreferrer" target="_blank">Read the governance update.</a></span>
</div>

Measured in headless Chromium at five viewport widths, comparing the banner box against its text and against the element that follows it (the changelog bar). Negative = clearance:

viewport box text spill above / below overlap with next element
320px 96px 80px −8px / −8px −8px
375px 96px 80px −8px / −8px −8px
414px 76px 60px −8px / −8px −8px
768px 56px 40px −8px / −8px −8px
1280px 48px 20px −14px / −14px −14px

With the default fixed 3rem the same measurement gave +32px of spill and +16px of overlap at 320–375px, which is what height="auto" fixes. The link computes to text-decoration-line: underline in both light and dark colour schemes, with target="_blank" and rel="noopener noreferrer".

Both forum links re-fetched: …/ois-rewards-update-april-2026/2479 → 200 "OIS Rewards Update (April 2026)"; …/passed-op-pip-103-pausing-ois-rewards/2471 → 200 "[PASSED] OP-PIP-103: Pausing OIS Rewards". The index callout still resolves to the warning variant (--color-fd-warning).

@aditya520
aditya520 requested a review from a team as a code owner August 12, 2026 13:44
@vercel
vercel Bot temporarily deployed to Preview – component-library August 12, 2026 13:44 Inactive
@vercel

vercel Bot commented Aug 12, 2026 •

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
component-library Ready Ready Preview Aug 12, 2026 8:40pm
developer-hub Ready Ready Preview Aug 12, 2026 8:40pm
5 Skipped Deployments
Project Deployment Actions Updated (UTC)
api-reference Skipped Skipped Aug 12, 2026 8:40pm
entropy-explorer Skipped Skipped Aug 12, 2026 8:40pm
insights Skipped Skipped Aug 12, 2026 8:40pm
proposals Skipped Skipped Aug 12, 2026 8:40pm
staking Skipped Skipped Aug 12, 2026 8:40pm

Request Review

@vercel
vercel Bot temporarily deployed to Preview – proposals August 12, 2026 13:44 Inactive
@vercel
vercel Bot temporarily deployed to Preview – developer-hub August 12, 2026 13:44 Inactive
@vercel
vercel Bot temporarily deployed to Preview – insights August 12, 2026 13:44 Inactive
@vercel
vercel Bot temporarily deployed to Preview – entropy-explorer August 12, 2026 13:44 Inactive
@vercel
vercel Bot temporarily deployed to Preview – api-reference August 12, 2026 13:44 Inactive
@dourolabs-greenlight

Copy link
Copy Markdown

Greenlight — 🚫 Blocked — see reasons below (f537933)

Blocking reasons:

  • path not auto-approvable: apps/staking/src/components/Changelog/index.tsx (+4 more)

Open in Greenlight →

@dourolabs-greenlight

dourolabs-greenlight Bot commented Aug 12, 2026 •

Copy link
Copy Markdown

Greenlight — ✅ Ready — merging shortly (f8de0c1)

Open in Greenlight →

@devin-ai-integration devin-ai-integration Bot 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.

Devin Review found 1 potential issue.

Open in Devin Review

Comment on lines +11 to +12
export const OIS_GOVERNANCE_UPDATE_URL =
"https://forum.pyth.network/t/ois-rewards-update-april-2026/2479";

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.

🔍 Forum URL and effective date should be verified against the actual governance post

The banner hard-codes both a forum link (https://forum.pyth.network/t/ois-rewards-update-april-2026/2479) and a specific date ("the OIS reward rate was set to 0 on 22 April 2026"). The modal this replaces pointed at a different thread (.../coming-soon-op-pip-103-pausing-ois-rewards/2471). Neither the slug/topic id nor the date can be verified from the repository, and a wrong link in a persistent, non-dismissible banner is user-visible. Worth confirming the topic id resolves and that the stated effective date matches OP-PIP-103 before merging.

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

@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: f537933f68

ℹ️ 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 on lines +18 to +21
export const OisPausedBanner = ({ isEnabled }: Props) => {
const segment = useSelectedLayoutSegment();
const isRestrictedMode =
segment === GEO_BLOCKED_SEGMENT || segment === GOVERNANCE_ONLY_SEGMENT;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Add coverage for the banner gating behavior

This introduces environment- and route-dependent rendering without adding a component test; the staking package still only has the unrelated tokens.test.ts. Add tests covering enabled, disabled, and restricted-segment states so changes to the environment default or segment predicate cannot silently expose or hide this production notice.

AGENTS.md reference: standards/AGENTS.md:L9-L12

Useful? React with 👍 / 👎.

Comment on lines +20 to +21
const isRestrictedMode =
segment === GEO_BLOCKED_SEGMENT || segment === GOVERNANCE_ONLY_SEGMENT;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Suppress the banner on the VPN-blocked route

When middleware rewrites a detected proxy to /vpn-blocked, useSelectedLayoutSegment() returns vpn-blocked, which this predicate does not recognize as restricted. The OIS notice therefore appears above the app-unavailable screen and tells these users they can unstake and withdraw even though that route exposes no staking functionality; include VPN_BLOCKED_SEGMENT in the restricted-mode check.

Useful? React with 👍 / 👎.

@vercel
vercel Bot temporarily deployed to Preview – proposals August 12, 2026 14:06 Inactive
@vercel
vercel Bot temporarily deployed to Preview – entropy-explorer August 12, 2026 14:06 Inactive
@vercel
vercel Bot temporarily deployed to Preview – developer-hub August 12, 2026 14:06 Inactive
@vercel
vercel Bot temporarily deployed to Preview – insights August 12, 2026 14:06 Inactive
@vercel
vercel Bot temporarily deployed to Preview – component-library August 12, 2026 14:06 Inactive
@vercel
vercel Bot temporarily deployed to Preview – api-reference August 12, 2026 14:06 Inactive
@vercel
vercel Bot temporarily deployed to Preview – developer-hub August 12, 2026 14:13 Inactive
@vercel
vercel Bot temporarily deployed to Preview – api-reference August 12, 2026 14:13 Inactive
@vercel
vercel Bot temporarily deployed to Preview – entropy-explorer August 12, 2026 14:13 Inactive
@vercel
vercel Bot temporarily deployed to Preview – component-library August 12, 2026 14:13 Inactive
@vercel
vercel Bot temporarily deployed to Preview – insights August 12, 2026 14:13 Inactive
@vercel
vercel Bot temporarily deployed to Preview – proposals August 12, 2026 14:13 Inactive
@aditya520 aditya520 changed the title feat(staking): persistent OIS rewards paused banner docs(developer-hub): surface the OIS rewards pause on the OIS docs Aug 12, 2026
@aditya520
aditya520 force-pushed the hydra/i-gigwfms/head branch from a0e8f75 to a363e37 Compare August 12, 2026 19:21
@vercel
vercel Bot temporarily deployed to Preview – staking August 12, 2026 19:21 Inactive
proposals.pyth.network is the xc_admin multisig frontend and has no
/proposals/<n> route, so every OP-PIP-103 link 404s. Point them at the
forum topic instead, which is the authoritative post-passage record.
Render a non-dismissible fumadocs Banner for the
oracle-integrity-staking section, matching the entropy section's
banner, so the pause is visible on every OIS page rather than only
the section index.

@dourolabs-greenlight dourolabs-greenlight 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.

Approved by greenlight after WebAuthn authorization.

@dourolabs-greenlight
dourolabs-greenlight Bot merged commit c2ae75e into main Aug 13, 2026
14 checks passed
@dourolabs-greenlight
dourolabs-greenlight Bot deleted the hydra/i-gigwfms/head branch August 13, 2026 13:58

This branch was successfully deployed

2 active and 5 inactive deployments
Preview – developer-hub — f8de0c12 Deployed Aug 12, 2026 by vercel[bot]
Preview – component-library — f8de0c12 Deployed Aug 12, 2026 by vercel[bot]
Preview – staking — f8de0c12 Deployed Aug 12, 2026 by vercel[bot]
Preview – proposals — f8de0c12 Deployed Aug 12, 2026 by vercel[bot]
Preview – entropy-explorer — f8de0c12 Deployed Aug 12, 2026 by vercel[bot]
Preview – insights — f8de0c12 Deployed Aug 12, 2026 by vercel[bot]
Preview – api-reference — f8de0c12 Deployed Aug 12, 2026 by vercel[bot]
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.

1 participant