build with the events coming from a file that ships with the CLI
instead of from a capture — nothing is mocked, and nothing is written to disk.
Arguments and options
All four shipped templates have a fixture set:
x402-buyer, x402-seller,
x402-facilitator and escrow-arc.
Example
op-2 and op-3: the same unclosed
milestone, but op-2 is simply unobserved, while op-3 carries an observed
fault — the server reported that settlement failed.
sample escrow-arc shows a longer operation — and four of them, because an
escrow has two ways to end. Its first two are both FULL: one released to the
provider after the work was delivered and evaluated, one refunded to the client
with the deal called off before either happened.
FULL there means resolved, not succeeded: both closings leave no money in
limbo, so delivery and criteria are optional — the refund path never reaches
them and must not read as incomplete for it. Which closing happened is on the
receipt regardless, in the event that closed disposition.
The third operation is the one that is limbo — funds locked and then nothing:
agreement closed,
deposit never did, and circle.transaction.outbound.failed is on the receipt
as an exception.
Which template you are seeing
The template is resolved exactly asbuild resolves it — your own
.trace/templates/ first, the shipped set second — so a name means the same file
in both commands. Editing .trace/templates/x402-buyer.yaml changes what you
sample, and sample then prints the path it loaded:
--dir and --templates-dir exist here: they have to reach the
same file build would.
Only the events are always built-in. A template with no bundled fixture set —
one of your own, say — has nothing to replay, and says so rather than showing an
empty run: