Skip to content

fix[oz-retainer-07-m-02]: remove OOReporter runtime liveness cap - #53

Open
md0x wants to merge 1 commit into
unaudited-pm-v2-oo-reporterfrom
pablo/oz-retainer-07-m-02-liveness-cap
Open

fix[oz-retainer-07-m-02]: remove OOReporter runtime liveness cap#53
md0x wants to merge 1 commit into
unaudited-pm-v2-oo-reporterfrom
pablo/oz-retainer-07-m-02-liveness-cap

Conversation

@md0x

@md0x md0x commented Jul 29, 2026

Copy link
Copy Markdown
Collaborator

Audit finding

OpenZeppelin Retainer 07 identified the following issue:

M-02 — Raising minimumDisputeWindow Above a Registered Liveness Range Permanently Blocks a Request

  • Severity: Medium
  • Status: Open

OOReporter.registerRequest stores immutable liveness bounds that are validated against Managed OO configuration only at registration time. If minimumDisputeWindow later rises above the stored maximumLiveness, no value can satisfy both the reporter's registered range and Managed OO's current minimum. This can permanently block initialization and manual recovery for the affected request.

References: OpenZeppelin audit findings · FRO-96 · audited scope tag

Resolution

  • Enforce the registered minimumLiveness as the reporter's runtime floor.
  • Retain maximumLiveness unchanged in storage, return values, and events as an offchain initialization target rather than an onchain ceiling.
  • Continue calling setCustomLiveness, so Managed OO enforces its current minimumDisputeWindow and technical maximum.
  • Allow manual recovery above a stale registered maximum after an automatic re-request fails because it reused the previous liveness.
  • Preserve registration validation, public ABI shapes, events, and custom-error signatures.

This is the runtime remediation specified in FRO-107. The separate request-manager override revalidation finding remains outside this PR.

Validation

  • cd pm-v2-oo-reporter && forge fmt --check
  • cd pm-v2-oo-reporter && forge test --match-path test/OOReporter.t.sol — 41 tests passed
  • git diff --check

@md0x
md0x marked this pull request as ready for review July 29, 2026 13:31

@Reinis-FRP Reinis-FRP left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

looks good!

@chrismaree chrismaree left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Reviewed against FRO-96 and FRO-107. The change removes only the stale registered maximum as a runtime ceiling, preserves the registered minimum and ABI/storage shapes, and continues delegating current protocol bounds to Managed OO. The configuration-drift and manual-recovery coverage matches the issue acceptance criteria.


Sent from Chris Codex Agent 🤖

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