Skip to content

fix(testing): Rehearsal teardown, monitor start, Base Sepolia log ranges and caps - #592

Open
ebma wants to merge 5 commits into
mainfrom
fix/rehearsal-harness
Open

ebma wants to merge 5 commits into
mainfrom
fix/rehearsal-harness

Conversation

@ebma

@ebma ebma commented Oct 27, 2026

Copy link
Copy Markdown
Member

What changes

  • Teardown. Zombienet starts the relay validators as polkadot from PATH. The teardown now matches their command line, so no validator is left running after a run; their PVF workers exit with them.
  • Monitor start. The rehearsal and the drills start the monitor after the finalized head, with the nonce read at that head, instead of at the best block plus one. This avoids "no verified hash" pages until finality catches up.
  • Base Sepolia log ranges. The rehearsal and the drills pass MAX_BLOCK_RANGE and BASE_MAX_BLOCK_RANGE of 200 unless the shell sets them, matching Base Sepolia's eth_getLogs limit.
  • Caps.
    • The rehearsal's per-release cap defaults to the daily cap (28,800 PEN each by default).
    • Loading the rehearsal environment refuses a per-release cap above the daily cap, before anything is spawned or deployed.
  • Phase 3. The fabricated-approval check accepts the monitor's unverified-approval pages as well as the mismatch pages; the automatic pause stays the assertion. Chopsticks' clock trails Anvil's, so the monitor cannot always prove the approval wrong within the run.

Testing

  • node --check on every changed script.
  • Rehearsal with these changes and the open attestor, releaser, contract and CI changes:
    • Phase 3 on Chopsticks and Anvil, with the monitor: 9/9.
    • Phases 5b, 5 and 6 on a local Pendulum network with Base Sepolia: 10/10, 15/15 and 13/13.
  • After phases 5 and 6, which use only the harness teardown, no polkadot process was left running.

ebma added 5 commits October 27, 2026 12:23
Zombienet starts the relay validators as `polkadot` from PATH, so the
teardown pattern `target/testnet/polkadot` matched only their PVF
workers and left both validators running after a run. Match the
validators' command line instead; the workers exit with them.

Checked on a local network: the old patterns killed 7 processes and left
both validators running, the new ones leave nothing behind.
The rehearsal and the drills started the monitor at the best block plus
one, with the nonce read there. The monitor ingests finalized blocks
only, so until finality caught up it had no verified hash for its start
and paged "no verified hash for Pendulum block N". Start it after the
finalized head instead, with the nonce read at that head.

Checked on a local network with the monitor build: best #3, finalized #1
gave one "no verified hash" page within 20 seconds from the old start and
none from the new one.
Base Sepolia's public RPC refuses eth_getLogs over more than 200 blocks
("eth_getLogs is limited to a 200 range"), and the releaser and the
monitor default to 10,000-block ranges. The rehearsal and the drills now
pass MAX_BLOCK_RANGE and BASE_MAX_BLOCK_RANGE of 200 unless the shell
sets them.
The vault rejects perReleaseCap > dailyCap (CapsInverted), but the
rehearsal found out only when the deploy reverted, after the network was
up. The per-release cap now defaults to the daily cap (28,800 PEN each by
default) instead of a fixed 28,800 that a smaller daily cap would fall
below, and loading the rehearsal environment refuses an inverted pair
with a message naming both values, before anything is spawned or
deployed.
The monitor now reports an approval it cannot check against a finalized
Pendulum burn as unverified and pauses as a precaution, rather than as a
proven mismatch. Chopsticks' clock trails Anvil's, so phase 3 sees that
verdict. Accept either one; the automatic pause stays the assertion.
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