{
  "format": "siebly-conformance-pack/v1",
  "id": "order-intent-chaser",
  "title": "Order Intent Chaser Conformance Pack",
  "lastReviewed": "2026-05-12",
  "canonicalArtifacts": {
    "guide": "https://siebly.io/ai/order-intent-chaser",
    "recipe": "https://siebly.io/.well-known/recipes/order-intent-chaser.json",
    "schema": "https://siebly.io/.well-known/conformance/order-intent-chaser/v1/schema.json",
    "fixtures": "https://siebly.io/.well-known/conformance/order-intent-chaser/v1/fixtures.json",
    "runner": "https://siebly.io/.well-known/conformance/order-intent-chaser/v1/runner.ts",
    "patternLibrary": "https://siebly.io/ai/patterns"
  },
  "executionChain": [
    "parent intent",
    "risk approval",
    "product/symbol scope",
    "filter trust",
    "market-data trust",
    "child order candidate",
    "opaque child order ID",
    "exchange request",
    "REST acceptance",
    "private order/fill event or scoped recovery",
    "remaining quantity",
    "replace, terminal, paused, or abandoned state"
  ],
  "trustRules": [
    "Risk approval proves the parent intent may be attempted; it does not prove market data is fresh, filters are hydrated, or child order state is known.",
    "REST acceptance proves only that the exchange accepted the request. The child order remains pending until private order/fill evidence or scoped recovery confirms active, filled, rejected, cancelled, or absent state.",
    "Market-data trust is independent from child-order trust. A reconnect, sequence gap, stale book, or crossed book pauses new place/replace decisions even if the child order is known.",
    "Durable child-order context is separate from child-order trust. For demo/live-capable adapters, store parent intent, local generation, scope, and request context before submission; if an app-owned child order has no context, the adapter refuses mutation unless explicit adoption is configured and tested.",
    "Partial fills update remaining quantity before any amend, cancel, replace, timeout, or abandonment decision."
  ],
  "completionGate": "Do not mark a chaser capable of demo or live submission complete until three consecutive full intent-to-child-order review passes produce no code, tests, fixtures, or documentation changes.",
  "runnerContract": {
    "language": "typescript",
    "version": "order-intent-chaser.workflow.v1",
    "fixtureSource": "JSON fixture set with a TypeScript runner contract for local execution tests",
    "entrypoint": "https://siebly.io/.well-known/conformance/order-intent-chaser/v1/runner.ts",
    "exportedTypes": [
      "OrderIntentChaserFixture",
      "OrderIntentChaserFixtureStep",
      "OrderIntentChaserFixtureExpectation",
      "OrderIntentChaserHarness",
      "OrderIntentChaserFixtureReport",
      "runOrderIntentChaserFixtures"
    ],
    "requiredFixtureFields": [
      "name",
      "intent",
      "scope",
      "initial",
      "steps",
      "expect",
      "forbid"
    ],
    "harnessMethods": [
      "reset(initial, fixture)",
      "applyStep(step, fixture)",
      "snapshot(fixture)"
    ],
    "expectationSemantics": [
      "Object expectations are partial matches.",
      "Array expectations are containment matches that consume one observed item per expected item; an empty expected array requires an empty observed array.",
      "Primitive expectations are exact matches after stable JSON normalization.",
      "Forbidden actions are read from observed.forbiddenObserved and matched against fixture.forbid."
    ],
    "requiredObservedState": "parentIntent, marketDataTrust, childOrderTrust, remainingQuantity, state, actions, blocks, logs, and forbiddenObserved markers."
  },
  "requiredChecks": [
    "chaser_dry_run_buy_candidate_respects_limit_and_filters",
    "chaser_dry_run_sell_exit_preserves_reduce_or_close_semantics",
    "chaser_rest_acceptance_does_not_confirm_child_order_state",
    "chaser_private_fill_before_rest_acceptance_updates_remaining_quantity_once",
    "chaser_cancel_replace_waits_for_terminal_or_recovered_child_state",
    "chaser_stale_market_data_blocks_place_and_replace",
    "chaser_reconnect_requires_market_resync_before_replace",
    "chaser_partial_fill_below_minimum_abandons_or_pauses_by_policy",
    "chaser_duplicate_child_generation_is_blocked_before_exchange_call",
    "chaser_active_app_child_without_parent_context_refuses_mutation",
    "chaser_timeout_cleanup_follows_explicit_policy"
  ],
  "liveGate": [
    "Default execution is dry-run or paper records.",
    "Demo/live submission requires explicit config, scoped credentials, source verification, durable child-order context, and passing conformance fixtures.",
    "REST acceptance is pending evidence only; private order/fill events or scoped recovery confirm active, filled, rejected, cancelled, or absent child-order state.",
    "Market-data trust is independent from child-order trust and is required before every place, amend, cancel, or replace decision.",
    "Do not mark a chaser capable of demo or live submission complete until three consecutive full intent-to-child-order review passes produce no code, tests, fixtures, or documentation changes."
  ]
}
