{
  "version": 1,
  "state": "014-fdc3-intent-interoperability",
  "title": "Pass intent between applications without executing a trade",
  "purpose": "Copying a ticker between trading, charting and news applications breaks the user\u2019s workflow. This chapter is for developers building desktop interoperability: pass instrument context and request a ticket through Sail, while preserving the distinction between preparing an action and executing it.",
  "entryAssumptions": "C3 supports trading within TraderX; users still copy instrument context between applications.",
  "concepts": [
    "Context describes a shared entity such as an instrument. An intent requests an action. Opening a ticket is neither submitting an order nor booking a trade."
  ],
  "runtimePrerequisites": "Use the state quickstart for tool versions, generation, start and stop commands. Run one local state at a time because ports and generated output directories are shared.",
  "entryMode": "combined",
  "transitions": [
    {
      "from": "012-platform-convergence-c3",
      "carriesForward": "Treat C3 as a combined platform and functional checkpoint for subsequent branches.",
      "motivation": "C3 supports trading within TraderX; users still copy instrument context between applications.",
      "increment": "Add FDC3 context and intent handling through Sail so another application can open a prefilled ticket.",
      "objectiveIds": [
        "trace-increment",
        "interpret-evidence"
      ],
      "evidence": "The selected instrument travels between applications and the requested ticket opens. The user must still decide whether to submit; interop success is not execution evidence. Ticket navigation must not silently book a trade. Widget-specific symbol translation is separate from the canonical fdc3.instrument payload."
    }
  ],
  "before": "C3 supports trading within TraderX; users still copy instrument context between applications.",
  "after": "Add FDC3 context and intent handling through Sail so another application can open a prefilled ticket.",
  "objectives": [
    {
      "id": "trace-increment",
      "outcome": "Trace an FDC3 intent and instrument context into a prefilled ticket, and verify that opening it creates no order or trade."
    },
    {
      "id": "interpret-evidence",
      "outcome": "Explain the evidence boundary: Ticket navigation must not silently book a trade. Widget-specific symbol translation is separate from the canonical fdc3.instrument payload."
    }
  ],
  "walkthrough": [
    {
      "id": "observe",
      "objectiveIds": [
        "trace-increment"
      ],
      "availability": "available",
      "action": "Follow the quickstart with --with-sail. Open Sail at http://localhost:8090/html/ and use Create Order Ticket or Create Trade Ticket in tab One. Confirm the matching TraderX ticket opens with the selected ticker. Change the TraderX blotter ticker and inspect chart/news context updates.",
      "expected": "The selected instrument travels between applications and the requested ticket opens. The user must still decide whether to submit; interop success is not execution evidence.",
      "references": [
        "/specs/fdc3-intent-interoperability/quickstart",
        "/specs/fdc3-intent-interoperability/system/architecture",
        "/specs/fdc3-intent-interoperability/system/runtime-topology"
      ]
    },
    {
      "id": "challenge",
      "objectiveIds": [
        "interpret-evidence"
      ],
      "availability": "available",
      "action": "Before submitting anything, compare orders and trades with their prior values. Check that opening a ticket created neither. Inspect the canonical bare ticker payload and the Sail-side exchange qualification used by the chart widget.",
      "expected": "Ticket navigation must not silently book a trade. Widget-specific symbol translation is separate from the canonical fdc3.instrument payload.",
      "references": [
        "/specs/fdc3-intent-interoperability/spec",
        "/specs/fdc3-intent-interoperability/contracts/contract-delta"
      ]
    }
  ],
  "assessments": [
    {
      "objectiveIds": [
        "trace-increment",
        "interpret-evidence"
      ],
      "question": "What does a successful Create Trade Ticket intent establish?",
      "guidance": "It establishes dispatch and ticket preparation with the expected context. Only a later submission and booking evidence establish a trade; neither proves payment or settlement."
    }
  ],
  "limitations": [
    "Ticket navigation must not silently book a trade. Widget-specific symbol translation is separate from the canonical fdc3.instrument payload.",
    "This is an educational local demonstration. Passing its checks does not establish production readiness, financial settlement, or correctness under every failure mode."
  ],
  "coaching": [
    {
      "objectiveIds": [
        "trace-increment",
        "interpret-evidence"
      ],
      "diagnosticQuestion": "What is the difference between describing an instrument and requesting an action on it?",
      "predictionPrompt": "Predict whether opening a prefilled ticket should create an order or trade.",
      "hints": [
        "Inspect the instrument context and the ticket fields before considering submission.",
        "Compare orders/trades before and after opening; distinguish the bare ticker contract from widget-specific symbol translation."
      ],
      "misconception": "A successfully dispatched intent means an order was submitted or a trade was booked.",
      "evidenceToRequest": "Ask for the context/ticker, opened ticket type and unchanged order/trade records before submission; explain what dispatch actually establishes."
    }
  ]
}
