Skip to content

fix(ops): distinguish the two identical simulation-failure messages #2

Description

@0dillon

Summary

src/ops/extendViaContract.ts throws simulation of extend_all failed: ${sim.error} in two
different places — once in simulateExtendAll, which is the free drift probe that runs every tick,
and once in extendViaContract, which is the paid path just before signing.

An operator reading a log line cannot tell which one failed, and the two mean very different things.
A failure in the first costs nothing and only loses drift reporting. A failure in the second means
maintenance did not happen.

Acceptance Criteria

  • The two messages differ enough to identify the call site from a log line alone.
  • The distinction is meaningful to an operator — which one failed and what it cost — not just a
    different string.
  • The drift simulation failed log line in src/keeper/loop.ts still reads correctly with the
    new message.

Tech Stack

TypeScript 5.7 on Node 22+ (CI runs 22 and 24), ESM with moduleResolution: "NodeNext" — relative
imports need the .js extension. @stellar/stellar-sdk is pinned to an exact version; verify RPC
API shape against the installed copy, not against documentation. Tests are Vitest under test/ and
run without a network. npm run format:check, npm run lint, npm run build and npm test must
all be clean.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: opssrc/ops, the two signing pathscomplexity: lowAn hour or two, no design decisionstype: bugExisting behaviour is wrong

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions