Skip to content

Expose simulator pinned base block for Parallax live acceptance #172

Description

@jzhao0

Context

Parallax is integrating Moss for a live Kuru MON → USDC pre-sign simulation flow.

The previous live path halted while parsing a legitimate FlipOrderUpdated
event. Moss PR #138 has now been merged and addresses that receipt parsing
boundary:

We verified the merged implementation locally through build, lint, typecheck,
offline tests, and focused Kuru receipt tests.

The implementation now:

  • represents FlipOrderUpdated and FlippedOrderCreated as structured
    Receipt changes;
  • preserves the original Change identity and ordering;
  • requires an immediately following same-market Trade whose taker is the
    Kuru Router;
  • continues to reject unsupported OrderBook events fail-closed.

Our local verification was offline. We are not claiming a locally reproduced
Live SUCCESS in this Issue.

Remaining blocker

The simulator resolves and reuses one base block internally for a simulation
run, but that pinned base block is not exposed through the public Simulator
API or through SimulateOutcome.

Parallax requires an explicit simulatorPinnedBlock value for its Live
Acceptance Gate.

A stage RPC blockNumber cannot be substituted for this value because it
describes a stage observation, not the base block pinned and reused by the
simulator for the complete simulation.

Without an authoritative simulator-pinned block, Parallax intentionally
remains fail-closed and returns UNKNOWN rather than claiming Live SUCCESS.

Requested confirmation

Could you please confirm the following two points?

1. Approved immutable revision

May Parallax pin this immutable Moss revision?

0c11b5ee672672d1b381afbabb587ae165805aa1

This is the merged commit for PR #138 and is currently our technical
candidate. We are not treating the merge itself as explicit approval for the
Parallax runtime pin.

2. Public simulator pinned-block API

Could Moss expose the simulator's pinned base block through a minimal public
API?

One compatible option would be:

interface Simulator {
  simulate(root: CapabilityNode): Promise<SimulateOutcome>;
  getPinnedBlockNumber(): Promise<string>;
}

An alternative would be to include the value directly in the simulation
result:

type SimulateOutcome = {
  simulatorPinnedBlock: string;
  // existing fields
};

The returned value only needs to identify, without log parsing or inference,
the same base block used throughout the simulation.

The Parallax adapter already probes an optional getPinnedBlockNumber()
method, so that API shape could be consumed without changing the current
adapter boundary.

Alternative

If adding this API to Moss is not preferred, please confirm whether Parallax
may vendor a minimal immutable change that only exposes the block already
resolved internally.

Scope and safety

This request does not involve:

  • private keys or seed phrases;
  • transaction signing;
  • transaction broadcasting;
  • custody or automatic execution;
  • weakening receipt validation;
  • replacing the pinned block with a stage RPC block number.

Until the immutable revision and pinned-block API are confirmed, Parallax will
use its Recorded Replay / fixture path for the demo and will not claim Live
SUCCESS.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions