Polytraders Dev Guide
internal
v3 spine Phase 1 · Shared contracts 9 demo-wired · 0 shadow-ready · 0 production-live · 100 pending · 109 total 15/33 infra tasks the plan status board

Execution template

Copy templates/execution-bot/ into the implementation repo. Fill in decide(). Run the fixtures.

Files

templates/execution-bot/
  README.md
  bot.ts
  config.schema.json
  default.config.json
  input.fixture.json
  expected.output.json
  tests.spec.ts

Bot interface bound

This template implements Bot<OrderIntent, ExecutionPlan>. The contract is the canonical bot interface.

The only function you write

async decide(input: OrderIntent, ctx: BotContext): Promise<ExecutionPlan> {
  const book = ctx.signal<OrderBookSnapshot>("order_book") || throwStale();
  const steps = this.shape(input, book, this.config);
  const fees = this.estimateFees(steps);
  const slip = this.estimateSlippage(steps, book);

  return {
    schemaVersion: "1.0.0",
    planId: ctx.correlationId + ":plan",
    intentId: input.intentId,
    steps,
    estimatedFeesPusd: fees,
    estimatedSlippageBps: slip,
    expiresAt: input.expiresAt,
  };
}

What's already wired for you

Promotion checklist

  1. Implement decide().
  2. Run npm test — all four test classes must pass.
  3. Open a PR with the bot's spec page linked in the description.
  4. Promote through the modes ladder: stub → shadow → advisory → enforced.