# Trax .NET > An MIT headless web framework for .NET: a GraphQL API with auth, persisted operations and live updates, state machines shared with the browser, and background work on schedules and workers, with every run recorded in Postgres. Logic is written as typed pipelines ("trains") of single-purpose steps ("junctions") in which a failure short-circuits the rest; Core, Effect, Mediator, Scheduler, API and Dashboard are separate NuGet packages, each adding one layer. Every page below links to its raw Markdown: append `.md` to any docs URL (the docs home is https://traxsharp.net/docs/index.md). The HTML pages are at the same path without `.md`. There is no single llms-full.txt, because the whole corpus is too large for most fetch limits; the full text is split into per-section bundles of at most ~90 KB, listed under "Full text". ## Start here - [Quick start](https://traxsharp.net/docs/getting-started.md): A tutorial building one Trax app from an empty folder: a train run in-process, recorded in Postgres, scheduled, served over GraphQL, shown in the console. - [Project Templates](https://traxsharp.net/docs/reference/templates.md): The trax-api, trax-scheduler and trax-hub dotnet new templates: the files each generates, what its Program.cs registers, its URLs and its tests. - [Organize trains in a project](https://traxsharp.net/docs/core/organize-trains.md): Lay out a project's trains one folder each: the input and output, the interface and class, the junctions, the models, and where shared junctions go. - [Invoke a train from a state](https://traxsharp.net/docs/statemachine/invoking-trains.md): Make a state machine state run a train with Invokes: route its outcomes, meet the host's requirements, choose an owner, and retry by entering the state again. ## Overview - [Home](https://traxsharp.net/docs/index.md): Trax .NET documentation home: what Trax is, and where to go to learn it, get a task done, understand how it works, or look something up. - [Quick start](https://traxsharp.net/docs/getting-started.md): (Tutorial) A tutorial building one Trax app from an empty folder: a train run in-process, recorded in Postgres, scheduled, served over GraphQL, shown in the console. ## Tutorials - [The Trax book](https://traxsharp.net/docs/book.md): A tutorial series in chapters that builds one shop with Trax, from its first train to a React storefront over a typed generated client. - [1. An order is a train](https://traxsharp.net/docs/book/an-order-is-a-train.md): (Tutorial) Chapter 1 of the Trax book: start Shopfront and write placing an order as a train of four junctions, run in-process with in-memory storage. - [1.1 Requirements](https://traxsharp.net/docs/book/an-order-is-a-train/requirements.md): (Tutorial) Chapter 1 of the Trax book, section 1: Requirements. - [1.2 Create the project](https://traxsharp.net/docs/book/an-order-is-a-train/create-the-project.md): (Tutorial) Chapter 1 of the Trax book, section 2: Create the project. - [1.3 The shop](https://traxsharp.net/docs/book/an-order-is-a-train/the-shop.md): (Tutorial) Chapter 1 of the Trax book, section 3: The shop. - [1.4 What an order carries](https://traxsharp.net/docs/book/an-order-is-a-train/what-an-order-carries.md): (Tutorial) Chapter 1 of the Trax book, section 4: What an order carries. - [1.5 The junctions](https://traxsharp.net/docs/book/an-order-is-a-train/the-junctions.md): (Tutorial) Chapter 1 of the Trax book, section 5: The junctions. - [1.6 The train](https://traxsharp.net/docs/book/an-order-is-a-train/the-train.md): (Tutorial) Chapter 1 of the Trax book, section 6: The train. - [1.7 Run it](https://traxsharp.net/docs/book/an-order-is-a-train/run-it.md): (Tutorial) Chapter 1 of the Trax book, section 7: Run it. - [1.8 When an order fails](https://traxsharp.net/docs/book/an-order-is-a-train/when-an-order-fails.md): (Tutorial) Chapter 1 of the Trax book, section 8: When an order fails. - [1.9 When the chain does not fit](https://traxsharp.net/docs/book/an-order-is-a-train/when-the-chain-does-not-fit.md): (Tutorial) Chapter 1 of the Trax book, section 9: When the chain does not fit. - [2. Testing PlaceOrder](https://traxsharp.net/docs/book/testing-place-order.md): (Tutorial) Chapter 2 of the Trax book: add a test project to Shopfront and test each junction, the PlaceOrder train and the running host, with the architecture guards. - [2.1 Three kinds of test](https://traxsharp.net/docs/book/testing-place-order/three-kinds-of-test.md): (Tutorial) Chapter 2 of the Trax book, section 1: Three kinds of test. - [2.2 Add a solution and a test project](https://traxsharp.net/docs/book/testing-place-order/add-a-solution-and-a-test-project.md): (Tutorial) Chapter 2 of the Trax book, section 2: Add a solution and a test project. - [2.3 Test a junction](https://traxsharp.net/docs/book/testing-place-order/test-a-junction.md): (Tutorial) Chapter 2 of the Trax book, section 3: Test a junction. - [2.4 Test the train](https://traxsharp.net/docs/book/testing-place-order/test-the-train.md): (Tutorial) Chapter 2 of the Trax book, section 4: Test the train. - [2.5 Test the host](https://traxsharp.net/docs/book/testing-place-order/test-the-host.md): (Tutorial) Chapter 2 of the Trax book, section 5: Test the host. - [2.6 Guard the project's shape](https://traxsharp.net/docs/book/testing-place-order/guard-the-projects-shape.md): (Tutorial) Chapter 2 of the Trax book, section 6: Guard the project's shape. - [2.7 Run them](https://traxsharp.net/docs/book/testing-place-order/run-them.md): (Tutorial) Chapter 2 of the Trax book, section 7: Run them. - [3. Every order is recorded](https://traxsharp.net/docs/book/every-order-is-recorded.md): (Tutorial) Chapter 3 of the Trax book: record every run of PlaceOrder in Postgres, make payments fail, give the stock back, mask a secret and read the failed runs back. - [3.1 Start Postgres](https://traxsharp.net/docs/book/every-order-is-recorded/start-postgres.md): (Tutorial) Chapter 3 of the Trax book, section 1: Start Postgres. - [3.2 Packages](https://traxsharp.net/docs/book/every-order-is-recorded/packages.md): (Tutorial) Chapter 3 of the Trax book, section 2: Packages. - [3.3 Record runs in Postgres](https://traxsharp.net/docs/book/every-order-is-recorded/record-runs-in-postgres.md): (Tutorial) Chapter 3 of the Trax book, section 3: Record runs in Postgres. - [3.4 Watch it fail](https://traxsharp.net/docs/book/every-order-is-recorded/watch-it-fail.md): (Tutorial) Chapter 3 of the Trax book, section 4: Watch it fail. - [3.5 Read the runs back](https://traxsharp.net/docs/book/every-order-is-recorded/read-the-runs-back.md): (Tutorial) Chapter 3 of the Trax book, section 5: Read the runs back. - [3.6 Test it](https://traxsharp.net/docs/book/every-order-is-recorded/test-it.md): (Tutorial) Chapter 3 of the Trax book, section 6: Test it. - [4. The shop's own data](https://traxsharp.net/docs/book/the-shops-own-data.md): (Tutorial) Chapter 4 of the Trax book: give Shopfront its own Postgres schema with a domain data context for products, stock and orders, and test against a real database. - [4.1 One context, one schema](https://traxsharp.net/docs/book/the-shops-own-data/one-context-one-schema.md): (Tutorial) Chapter 4 of the Trax book, section 1: One context, one schema. - [4.2 Packages](https://traxsharp.net/docs/book/the-shops-own-data/packages.md): (Tutorial) Chapter 4 of the Trax book, section 2: Packages. - [4.3 The models](https://traxsharp.net/docs/book/the-shops-own-data/the-models.md): (Tutorial) Chapter 4 of the Trax book, section 3: The models. - [4.4 The context and its interface](https://traxsharp.net/docs/book/the-shops-own-data/the-context-and-its-interface.md): (Tutorial) Chapter 4 of the Trax book, section 4: The context and its interface. - [4.5 The catalogue reads the database](https://traxsharp.net/docs/book/the-shops-own-data/the-catalogue-reads-the-database.md): (Tutorial) Chapter 4 of the Trax book, section 5: The catalogue reads the database. - [4.6 Two orders, one T-shirt](https://traxsharp.net/docs/book/the-shops-own-data/two-orders-one-t-shirt.md): (Tutorial) Chapter 4 of the Trax book, section 6: Two orders, one T-shirt. - [4.7 Register the context and create its schema](https://traxsharp.net/docs/book/the-shops-own-data/register-the-context-and-create-its-schema.md): (Tutorial) Chapter 4 of the Trax book, section 7: Register the context and create its schema. - [4.8 Run it](https://traxsharp.net/docs/book/the-shops-own-data/run-it.md): (Tutorial) Chapter 4 of the Trax book, section 8: Run it. - [4.9 Test against a real database](https://traxsharp.net/docs/book/the-shops-own-data/test-against-a-real-database.md): (Tutorial) Chapter 4 of the Trax book, section 9: Test against a real database. - [5. Does this order look like fraud](https://traxsharp.net/docs/book/does-this-order-look-like-fraud.md): (Tutorial) Chapter 5 of the Trax book: stop an order that looks like fraud with a Gate a rule decider answers, record each decision, and try a stricter rule in shadow. - [5.1 A question, not an if](https://traxsharp.net/docs/book/does-this-order-look-like-fraud/a-question-not-an-if.md): (Tutorial) Chapter 5 of the Trax book, section 1: A question, not an if. - [5.2 The question and what it is asked about](https://traxsharp.net/docs/book/does-this-order-look-like-fraud/the-question-and-what-it-is-asked-about.md): (Tutorial) Chapter 5 of the Trax book, section 2: The question and what it is asked about. - [5.3 The tracks](https://traxsharp.net/docs/book/does-this-order-look-like-fraud/the-tracks.md): (Tutorial) Chapter 5 of the Trax book, section 3: The tracks. - [5.4 Register Shopfront in one place](https://traxsharp.net/docs/book/does-this-order-look-like-fraud/register-shopfront-in-one-place.md): (Tutorial) Chapter 5 of the Trax book, section 4: Register Shopfront in one place. - [5.5 Run it](https://traxsharp.net/docs/book/does-this-order-look-like-fraud/run-it.md): (Tutorial) Chapter 5 of the Trax book, section 5: Run it. - [5.6 Read the decisions](https://traxsharp.net/docs/book/does-this-order-look-like-fraud/read-the-decisions.md): (Tutorial) Chapter 5 of the Trax book, section 6: Read the decisions. - [5.7 Test it](https://traxsharp.net/docs/book/does-this-order-look-like-fraud/test-it.md): (Tutorial) Chapter 5 of the Trax book, section 7: Test it. - [6. Customers and staff](https://traxsharp.net/docs/book/customers-and-staff.md): (Tutorial) Chapter 6 of the Trax book: sign customers and staff in, guard PlaceOrder with TraxAuthorize, and scope each order to the customer who placed it. - [6.1 Fail closed](https://traxsharp.net/docs/book/customers-and-staff/fail-closed.md): (Tutorial) Chapter 6 of the Trax book, section 1: Fail closed. - [6.2 Packages](https://traxsharp.net/docs/book/customers-and-staff/packages.md): (Tutorial) Chapter 6 of the Trax book, section 2: Packages. - [6.3 Roles and a development signing key](https://traxsharp.net/docs/book/customers-and-staff/roles-and-a-development-signing-key.md): (Tutorial) Chapter 6 of the Trax book, section 3: Roles and a development signing key. - [6.4 Who may run PlaceOrder](https://traxsharp.net/docs/book/customers-and-staff/who-may-run-placeorder.md): (Tutorial) Chapter 6 of the Trax book, section 4: Who may run PlaceOrder. - [6.5 A customer reads their own orders](https://traxsharp.net/docs/book/customers-and-staff/a-customer-reads-their-own-orders.md): (Tutorial) Chapter 6 of the Trax book, section 5: A customer reads their own orders. - [6.6 Sign in, and run trains as the caller](https://traxsharp.net/docs/book/customers-and-staff/sign-in-and-run-trains-as-the-caller.md): (Tutorial) Chapter 6 of the Trax book, section 6: Sign in, and run trains as the caller. - [6.7 Try it](https://traxsharp.net/docs/book/customers-and-staff/try-it.md): (Tutorial) Chapter 6 of the Trax book, section 7: Try it. - [6.8 What it refuses](https://traxsharp.net/docs/book/customers-and-staff/what-it-refuses.md): (Tutorial) Chapter 6 of the Trax book, section 8: What it refuses. - [6.9 Test it](https://traxsharp.net/docs/book/customers-and-staff/test-it.md): (Tutorial) Chapter 6 of the Trax book, section 9: Test it. - [7. Serve it over GraphQL](https://traxsharp.net/docs/book/serve-it-over-graphql.md): (Tutorial) Chapter 7 of the Trax book: serve the catalogue, PlaceOrder and each customer's orders over GraphQL, and let a customer follow the run of their order. - [7.1 Packages](https://traxsharp.net/docs/book/serve-it-over-graphql/packages.md): (Tutorial) Chapter 7 of the Trax book, section 1: Packages. - [7.2 PlaceOrder becomes a mutation](https://traxsharp.net/docs/book/serve-it-over-graphql/placeorder-becomes-a-mutation.md): (Tutorial) Chapter 7 of the Trax book, section 2: PlaceOrder becomes a mutation. - [7.3 The catalogue and the orders become queries](https://traxsharp.net/docs/book/serve-it-over-graphql/the-catalogue-and-the-orders-become-queries.md): (Tutorial) Chapter 7 of the Trax book, section 3: The catalogue and the orders become queries. - [7.4 Serve the schema](https://traxsharp.net/docs/book/serve-it-over-graphql/serve-the-schema.md): (Tutorial) Chapter 7 of the Trax book, section 4: Serve the schema. - [7.5 Ask it](https://traxsharp.net/docs/book/serve-it-over-graphql/ask-it.md): (Tutorial) Chapter 7 of the Trax book, section 5: Ask it. - [7.6 Test it](https://traxsharp.net/docs/book/serve-it-over-graphql/test-it.md): (Tutorial) Chapter 7 of the Trax book, section 6: Test it. - [8. The operations console](https://traxsharp.net/docs/book/the-operations-console.md): (Tutorial) Chapter 8 of the Trax book: open the operations console as a member of staff to read every run, its failure and its decisions, behind the operations gate. - [8.1 The console reads through GraphQL](https://traxsharp.net/docs/book/the-operations-console/the-console-reads-through-graphql.md): (Tutorial) Chapter 8 of the Trax book, section 1: The console reads through GraphQL. - [8.2 Packages](https://traxsharp.net/docs/book/the-operations-console/packages.md): (Tutorial) Chapter 8 of the Trax book, section 2: Packages. - [8.3 Open the namespace to staff, and serve the console](https://traxsharp.net/docs/book/the-operations-console/open-the-namespace-to-staff-and-serve-the-console.md): (Tutorial) Chapter 8 of the Trax book, section 3: Open the namespace to staff, and serve the console. - [8.4 Who may load the page](https://traxsharp.net/docs/book/the-operations-console/who-may-load-the-page.md): (Tutorial) Chapter 8 of the Trax book, section 4: Who may load the page. - [8.5 Open it](https://traxsharp.net/docs/book/the-operations-console/open-it.md): (Tutorial) Chapter 8 of the Trax book, section 5: Open it. - [8.6 A customer gets nothing](https://traxsharp.net/docs/book/the-operations-console/a-customer-gets-nothing.md): (Tutorial) Chapter 8 of the Trax book, section 6: A customer gets nothing. - [8.7 Test it](https://traxsharp.net/docs/book/the-operations-console/test-it.md): (Tutorial) Chapter 8 of the Trax book, section 7: Test it. - [9. Scheduled work](https://traxsharp.net/docs/book/scheduled-work.md): (Tutorial) Chapter 9 of the Trax book: schedule a nightly stock report and a low-stock check after it, skip the report on holidays, and run both from the console. - [9.1 A schedule is a manifest](https://traxsharp.net/docs/book/scheduled-work/a-schedule-is-a-manifest.md): (Tutorial) Chapter 9 of the Trax book, section 1: A schedule is a manifest. - [9.2 The stock report](https://traxsharp.net/docs/book/scheduled-work/the-stock-report.md): (Tutorial) Chapter 9 of the Trax book, section 2: The stock report. - [9.3 The low-stock check](https://traxsharp.net/docs/book/scheduled-work/the-low-stock-check.md): (Tutorial) Chapter 9 of the Trax book, section 3: The low-stock check. - [9.4 Schedule them](https://traxsharp.net/docs/book/scheduled-work/schedule-them.md): (Tutorial) Chapter 9 of the Trax book, section 4: Schedule them. - [9.5 Run it now](https://traxsharp.net/docs/book/scheduled-work/run-it-now.md): (Tutorial) Chapter 9 of the Trax book, section 5: Run it now. - [9.6 Test it](https://traxsharp.net/docs/book/scheduled-work/test-it.md): (Tutorial) Chapter 9 of the Trax book, section 6: Test it. - [10. Failures, retries and dead letters](https://traxsharp.net/docs/book/failures-retries-and-dead-letters.md): (Tutorial) Chapter 10 of the Trax book: restock from a supplier that goes down, retry with backoff, and requeue the dead letter once the supplier is back. - [10.1 What is retried](https://traxsharp.net/docs/book/failures-retries-and-dead-letters/what-is-retried.md): (Tutorial) Chapter 10 of the Trax book, section 1: What is retried. - [10.2 The supplier](https://traxsharp.net/docs/book/failures-retries-and-dead-letters/the-supplier.md): (Tutorial) Chapter 10 of the Trax book, section 2: The supplier. - [10.3 The restock](https://traxsharp.net/docs/book/failures-retries-and-dead-letters/the-restock.md): (Tutorial) Chapter 10 of the Trax book, section 3: The restock. - [10.4 Tell staff when scheduled work fails](https://traxsharp.net/docs/book/failures-retries-and-dead-letters/tell-staff-when-scheduled-work-fails.md): (Tutorial) Chapter 10 of the Trax book, section 4: Tell staff when scheduled work fails. - [10.5 Schedule it, with retries](https://traxsharp.net/docs/book/failures-retries-and-dead-letters/schedule-it-with-retries.md): (Tutorial) Chapter 10 of the Trax book, section 5: Schedule it, with retries. - [10.6 Watch it fail](https://traxsharp.net/docs/book/failures-retries-and-dead-letters/watch-it-fail.md): (Tutorial) Chapter 10 of the Trax book, section 6: Watch it fail. - [10.7 Bring it back](https://traxsharp.net/docs/book/failures-retries-and-dead-letters/bring-it-back.md): (Tutorial) Chapter 10 of the Trax book, section 7: Bring it back. - [10.8 Test it](https://traxsharp.net/docs/book/failures-retries-and-dead-letters/test-it.md): (Tutorial) Chapter 10 of the Trax book, section 8: Test it. - [11. A separate worker](https://traxsharp.net/docs/book/a-separate-worker.md): (Tutorial) Chapter 11 of the Trax book: queue fulfilment after each order, move the trains into a library, and run queued and scheduled work on a worker process. - [11.1 One library, two processes](https://traxsharp.net/docs/book/a-separate-worker/one-library-two-processes.md): (Tutorial) Chapter 11 of the Trax book, section 1: One library, two processes. - [11.2 The projects](https://traxsharp.net/docs/book/a-separate-worker/the-projects.md): (Tutorial) Chapter 11 of the Trax book, section 2: The projects. - [11.3 Fulfilment is a train](https://traxsharp.net/docs/book/a-separate-worker/fulfilment-is-a-train.md): (Tutorial) Chapter 11 of the Trax book, section 3: Fulfilment is a train. - [11.4 PlaceOrder queues it](https://traxsharp.net/docs/book/a-separate-worker/placeorder-queues-it.md): (Tutorial) Chapter 11 of the Trax book, section 4: PlaceOrder queues it. - [11.5 The hub](https://traxsharp.net/docs/book/a-separate-worker/the-hub.md): (Tutorial) Chapter 11 of the Trax book, section 5: The hub. - [11.6 The worker](https://traxsharp.net/docs/book/a-separate-worker/the-worker.md): (Tutorial) Chapter 11 of the Trax book, section 6: The worker. - [11.7 Run both](https://traxsharp.net/docs/book/a-separate-worker/run-both.md): (Tutorial) Chapter 11 of the Trax book, section 7: Run both. - [11.8 Kill the worker mid-run](https://traxsharp.net/docs/book/a-separate-worker/kill-the-worker-mid-run.md): (Tutorial) Chapter 11 of the Trax book, section 8: Kill the worker mid-run. - [11.9 Test it](https://traxsharp.net/docs/book/a-separate-worker/test-it.md): (Tutorial) Chapter 11 of the Trax book, section 9: Test it. - [12. Checkout is a state machine](https://traxsharp.net/docs/book/checkout-is-a-state-machine.md): (Tutorial) Chapter 12 of the Trax book: write checkout as a state machine with guards, a timer and a rule on every event, and serve it as a typed GraphQL API. - [12.1 The flow](https://traxsharp.net/docs/book/checkout-is-a-state-machine/the-flow.md): (Tutorial) Chapter 12 of the Trax book, section 1: The flow. - [12.2 Where it lives](https://traxsharp.net/docs/book/checkout-is-a-state-machine/where-it-lives.md): (Tutorial) Chapter 12 of the Trax book, section 2: Where it lives. - [12.3 Packages](https://traxsharp.net/docs/book/checkout-is-a-state-machine/packages.md): (Tutorial) Chapter 12 of the Trax book, section 3: Packages. - [12.4 States, events and context](https://traxsharp.net/docs/book/checkout-is-a-state-machine/states-events-and-context.md): (Tutorial) Chapter 12 of the Trax book, section 4: States, events and context. - [12.5 The machine](https://traxsharp.net/docs/book/checkout-is-a-state-machine/the-machine.md): (Tutorial) Chapter 12 of the Trax book, section 5: The machine. - [12.6 Serve it](https://traxsharp.net/docs/book/checkout-is-a-state-machine/serve-it.md): (Tutorial) Chapter 12 of the Trax book, section 6: Serve it. - [12.7 Check out](https://traxsharp.net/docs/book/checkout-is-a-state-machine/check-out.md): (Tutorial) Chapter 12 of the Trax book, section 7: Check out. - [12.8 Export the definition](https://traxsharp.net/docs/book/checkout-is-a-state-machine/export-the-definition.md): (Tutorial) Chapter 12 of the Trax book, section 8: Export the definition. - [12.9 Test it](https://traxsharp.net/docs/book/checkout-is-a-state-machine/test-it.md): (Tutorial) Chapter 12 of the Trax book, section 9: Test it. - [13. The machine places the order](https://traxsharp.net/docs/book/the-machine-places-the-order.md): (Tutorial) Chapter 13 of the Trax book: have checkout invoke PlaceOrder from a state, charge once however often it retries, and follow the parcel as a child machine. - [13.1 The flow from Placing](https://traxsharp.net/docs/book/the-machine-places-the-order/the-flow-from-placing.md): (Tutorial) Chapter 13 of the Trax book, section 1: The flow from Placing. - [13.2 What an invoked run is](https://traxsharp.net/docs/book/the-machine-places-the-order/what-an-invoked-run-is.md): (Tutorial) Chapter 13 of the Trax book, section 2: What an invoked run is. - [13.3 The parcel](https://traxsharp.net/docs/book/the-machine-places-the-order/the-parcel.md): (Tutorial) Chapter 13 of the Trax book, section 3: The parcel. - [13.4 The checkout invokes and spawns](https://traxsharp.net/docs/book/the-machine-places-the-order/the-checkout-invokes-and-spawns.md): (Tutorial) Chapter 13 of the Trax book, section 4: The checkout invokes and spawns. - [13.5 Place an order through checkout](https://traxsharp.net/docs/book/the-machine-places-the-order/place-an-order-through-checkout.md): (Tutorial) Chapter 13 of the Trax book, section 5: Place an order through checkout. - [13.6 When the order fails](https://traxsharp.net/docs/book/the-machine-places-the-order/when-the-order-fails.md): (Tutorial) Chapter 13 of the Trax book, section 6: When the order fails. - [13.7 Test it](https://traxsharp.net/docs/book/the-machine-places-the-order/test-it.md): (Tutorial) Chapter 13 of the Trax book, section 7: Test it. - [14. Checks in parallel, and resuming](https://traxsharp.net/docs/book/checks-in-parallel-and-resuming.md): (Tutorial) Chapter 14 of the Trax book: look up fulfilment's box and courier rates side by side, and checkpoint the label so a resume never buys another. - [14.1 The new chain](https://traxsharp.net/docs/book/checks-in-parallel-and-resuming/the-new-chain.md): (Tutorial) Chapter 14 of the Trax book, section 1: The new chain. - [14.2 The courier and the warehouse](https://traxsharp.net/docs/book/checks-in-parallel-and-resuming/the-courier-and-the-warehouse.md): (Tutorial) Chapter 14 of the Trax book, section 2: The courier and the warehouse. - [14.3 The train](https://traxsharp.net/docs/book/checks-in-parallel-and-resuming/the-train.md): (Tutorial) Chapter 14 of the Trax book, section 3: The train. - [14.4 Fulfil an order](https://traxsharp.net/docs/book/checks-in-parallel-and-resuming/fulfil-an-order.md): (Tutorial) Chapter 14 of the Trax book, section 4: Fulfil an order. - [14.5 Kill the worker mid-pack, and resume](https://traxsharp.net/docs/book/checks-in-parallel-and-resuming/kill-the-worker-mid-pack-and-resume.md): (Tutorial) Chapter 14 of the Trax book, section 5: Kill the worker mid-pack, and resume. - [14.6 Test it](https://traxsharp.net/docs/book/checks-in-parallel-and-resuming/test-it.md): (Tutorial) Chapter 14 of the Trax book, section 6: Test it. - [15. A generated client](https://traxsharp.net/docs/book/a-generated-client.md): (Tutorial) Chapter 15 of the Trax book: write the storefront's GraphQL documents and generate a typed React client for them with trax client. - [15.1 How it fits together](https://traxsharp.net/docs/book/a-generated-client/how-it-fits-together.md): (Tutorial) Chapter 15 of the Trax book, section 1: How it fits together. - [15.2 The storefront's place](https://traxsharp.net/docs/book/a-generated-client/the-storefronts-place.md): (Tutorial) Chapter 15 of the Trax book, section 2: The storefront's place. - [15.3 The documents](https://traxsharp.net/docs/book/a-generated-client/the-documents.md): (Tutorial) Chapter 15 of the Trax book, section 3: The documents. - [15.4 The hub serves the storefront](https://traxsharp.net/docs/book/a-generated-client/the-hub-serves-the-storefront.md): (Tutorial) Chapter 15 of the Trax book, section 4: The hub serves the storefront. - [15.5 Generate the client](https://traxsharp.net/docs/book/a-generated-client/generate-the-client.md): (Tutorial) Chapter 15 of the Trax book, section 5: Generate the client. - [15.6 The page](https://traxsharp.net/docs/book/a-generated-client/the-page.md): (Tutorial) Chapter 15 of the Trax book, section 6: The page. - [15.7 Run it](https://traxsharp.net/docs/book/a-generated-client/run-it.md): (Tutorial) Chapter 15 of the Trax book, section 7: Run it. - [15.8 Keep it current](https://traxsharp.net/docs/book/a-generated-client/keep-it-current.md): (Tutorial) Chapter 15 of the Trax book, section 8: Keep it current. - [15.9 Test it](https://traxsharp.net/docs/book/a-generated-client/test-it.md): (Tutorial) Chapter 15 of the Trax book, section 9: Test it. - [16. Checkout in the browser](https://traxsharp.net/docs/book/checkout-in-the-browser.md): (Tutorial) Chapter 16 of the Trax book: drive the checkout machine from React with the generated hook, which predicts each move with the machine's twin. - [16.1 The twin and the hook](https://traxsharp.net/docs/book/checkout-in-the-browser/the-twin-and-the-hook.md): (Tutorial) Chapter 16 of the Trax book, section 1: The twin and the hook. - [16.2 The checkout](https://traxsharp.net/docs/book/checkout-in-the-browser/the-checkout.md): (Tutorial) Chapter 16 of the Trax book, section 2: The checkout. - [16.3 Run it](https://traxsharp.net/docs/book/checkout-in-the-browser/run-it.md): (Tutorial) Chapter 16 of the Trax book, section 3: Run it. - [16.4 Test it](https://traxsharp.net/docs/book/checkout-in-the-browser/test-it.md): (Tutorial) Chapter 16 of the Trax book, section 4: Test it. - [17. Require persisted operations](https://traxsharp.net/docs/book/require-persisted-operations.md): (Tutorial) Chapter 17 of the Trax book: turn persisted operations from logging to refusing, so the hub runs only documents it registered. - [17.1 What the hub registers](https://traxsharp.net/docs/book/require-persisted-operations/what-the-hub-registers.md): (Tutorial) Chapter 17 of the Trax book, section 1: What the hub registers. - [17.2 Make the hub refuse](https://traxsharp.net/docs/book/require-persisted-operations/make-the-hub-refuse.md): (Tutorial) Chapter 17 of the Trax book, section 2: Make the hub refuse. - [17.3 What a caller sees](https://traxsharp.net/docs/book/require-persisted-operations/what-a-caller-sees.md): (Tutorial) Chapter 17 of the Trax book, section 3: What a caller sees. - [17.4 What stops working](https://traxsharp.net/docs/book/require-persisted-operations/what-stops-working.md): (Tutorial) Chapter 17 of the Trax book, section 4: What stops working. - [17.5 Test it](https://traxsharp.net/docs/book/require-persisted-operations/test-it.md): (Tutorial) Chapter 17 of the Trax book, section 5: Test it. - [18. Deploy](https://traxsharp.net/docs/book/deploy.md): (Tutorial) Chapter 18 of the Trax book: run the hub and its workers in containers on one Postgres and RabbitMQ, with migrations and health checks. - [18.1 The shape](https://traxsharp.net/docs/book/deploy/the-shape.md): (Tutorial) Chapter 18 of the Trax book, section 1: The shape. - [18.2 Migrate the shop's schema](https://traxsharp.net/docs/book/deploy/migrate-the-shops-schema.md): (Tutorial) Chapter 18 of the Trax book, section 2: Migrate the shop's schema. - [18.3 The hub](https://traxsharp.net/docs/book/deploy/the-hub.md): (Tutorial) Chapter 18 of the Trax book, section 3: The hub. - [18.4 The worker](https://traxsharp.net/docs/book/deploy/the-worker.md): (Tutorial) Chapter 18 of the Trax book, section 4: The worker. - [18.5 The tests migrate too](https://traxsharp.net/docs/book/deploy/the-tests-migrate-too.md): (Tutorial) Chapter 18 of the Trax book, section 5: The tests migrate too. - [18.6 Containers](https://traxsharp.net/docs/book/deploy/containers.md): (Tutorial) Chapter 18 of the Trax book, section 6: Containers. - [18.7 Run it as deployed](https://traxsharp.net/docs/book/deploy/run-it-as-deployed.md): (Tutorial) Chapter 18 of the Trax book, section 7: Run it as deployed. - [18.8 The storefront](https://traxsharp.net/docs/book/deploy/the-storefront.md): (Tutorial) Chapter 18 of the Trax book, section 8: The storefront. - [18.9 The console](https://traxsharp.net/docs/book/deploy/the-console.md): (Tutorial) Chapter 18 of the Trax book, section 9: The console. - [18.10 Before it takes real orders](https://traxsharp.net/docs/book/deploy/before-it-takes-real-orders.md): (Tutorial) Chapter 18 of the Trax book, section 10: Before it takes real orders. ## How-to guides - [Handle errors in trains](https://traxsharp.net/docs/cross-cutting/handle-errors-in-trains.md): (How-to guide) How to raise, translate and react to failures in a train: throwing from a junction, the OnFailed hook, and telling a failure from a cancellation. - [Organize trains in a project](https://traxsharp.net/docs/core/organize-trains.md): (How-to guide) Lay out a project's trains one folder each: the input and output, the interface and class, the junctions, the models, and where shared junctions go. - [Move work around a chain into junctions](https://traxsharp.net/docs/core/move-work-into-the-chain.md): (How-to guide) Where work that sits before, after or beside a train's chain goes once Junctions() is the only declaration: setup, extra Memory values, failures, nested trains. - [Make a junction cancellable](https://traxsharp.net/docs/cross-cutting/make-a-junction-cancellable.md): (How-to guide) How to pass a request's CancellationToken into a train, use it in a junction's async calls and loops, let a run stop from another host, and test it. - [Write a decider](https://traxsharp.net/docs/core/write-a-decider.md): (How-to guide) Implement IDecider, register it, write policy as a RuleDecider, put a slower decider behind a fast one, and refuse questions at startup. - [Try a decider in shadow](https://traxsharp.net/docs/core/try-a-decider-in-shadow.md): (How-to guide) Run a candidate decider beside the live one on real traffic, with its answers recorded and never acted on, before switching a train over to it. - [Choose effect providers](https://traxsharp.net/docs/effect/effect-providers.md): (How-to guide) Pick the effect providers a host registers (persistence, JSON, parameters, junction logger and progress, lifecycle hooks) and combine them. - [Answer decisions with Nimble](https://traxsharp.net/docs/effect/answer-decisions-with-nimble.md): (How-to guide) Point a train's decisions at a Nimble server you run, put it in front of a larger model, and tune its confidence bars from recorded decisions. - [Recover a deciding train without asking the model again](https://traxsharp.net/docs/effect/recover-a-deciding-train.md): (How-to guide) Set up a deciding train so that a retry after a crash replays the answers its model gave, instead of asking again and maybe taking another track. - [Check the run is still live before a side effect](https://traxsharp.net/docs/effect/check-the-run-is-still-live.md): (How-to guide) Re-read a run's own metadata row from inside a junction, by TrainMetadataId, and refuse an irreversible side effect when the run was already failed. - [Broadcast train events across processes](https://traxsharp.net/docs/effect/broadcast-train-events-across-processes.md): (How-to guide) Pair a RabbitMQ transport with a SignalR sink so that runs on worker processes reach browsers connected to a hub host. - [Write a headless event sink](https://traxsharp.net/docs/effect/write-a-headless-event-sink.md): (How-to guide) React to train lifecycle events without a UI, such as storing a train's output elsewhere, with an ITrainEventHandler and optionally a lifecycle hook. - [Write a lifecycle hook](https://traxsharp.net/docs/effect/write-a-lifecycle-hook.md): (How-to guide) How to run code when trains start, complete, fail or are cancelled, with a hook registered for every train or an override on one train. - [Broadcast events between processes](https://traxsharp.net/docs/effect/broadcast-events-between-processes.md): (How-to guide) How to wire a hub process and its workers to one RabbitMQ exchange, so GraphQL subscriptions and SignalR clients see runs that execute on any worker. - [Implement a broadcast transport](https://traxsharp.net/docs/effect/implement-a-broadcast-transport.md): (How-to guide) How to carry Trax lifecycle events over a message bus other than RabbitMQ by implementing ITrainEventBroadcaster and ITrainEventReceiver. - [Push train events to browsers](https://traxsharp.net/docs/effect/push-train-events-to-browsers.md): (How-to guide) How to send train lifecycle events to browser, Blazor and .NET clients through the Trax SignalR hub, authenticate them, and test who the hub admits. - [Add a domain data context](https://traxsharp.net/docs/effect/effect-providers/domain-data-contexts.md): (How-to guide) Add your own EF Core context on DomainDataContext: one schema per context, its companion interface, registration, enum columns and cross-schema reads. - [Move a domain data context to EF migrations](https://traxsharp.net/docs/effect/move-a-domain-data-context-to-ef-migrations.md): (How-to guide) Replace EnsureSchemaCreatedAsync with EF Core migrations for a DomainDataContext, including a database that EnsureSchemaCreatedAsync already created. - [Scope a data context to the caller](https://traxsharp.net/docs/effect/scope-a-data-context-to-the-caller.md): (How-to guide) Register a domain data context whose query filters narrow every query to the calling user, with an unpooled scoped factory and a caller interface. - [Debug across processes with the log table](https://traxsharp.net/docs/effect/debug-across-processes-with-the-log-table.md): (How-to guide) Use the trax.log table written by AddDataContextLogging to debug across processes: what a row holds, how to query and correlate it, and what it drops. - [Repair a partial migration 014](https://traxsharp.net/docs/migration-guides/repair-partial-migration-014.md): (How-to guide) How to recover a Postgres database whose 014_manifest_group migration stopped partway, so the next start can apply it or skip it. - [Install pg_trgm before migration 063](https://traxsharp.net/docs/migration-guides/install-pg-trgm.md): (How-to guide) How to install the pg_trgm extension, or build the trigram indexes ahead of time, when the role Trax migrates with cannot run migration 063 itself. - [Turn off state-machine change notices](https://traxsharp.net/docs/migration-guides/turn-off-snapshot-change-notices.md): (How-to guide) The order to move every Postgres host to polling and then switch off the trax.snapshot_notify trigger that migration 080 added, and how to turn it back on. - [Run migrations outside startup](https://traxsharp.net/docs/effect/run-migrations-outside-startup.md): (How-to guide) How to stop a Trax host migrating the database when it starts, and apply the schema from a deployment step instead, for Lambda, serverless and replica hosts. - [Limit concurrent train runs](https://traxsharp.net/docs/mediator/limit-concurrent-train-runs.md): (How-to guide) Cap concurrent direct train runs per train, per caller or globally, so a backend with fixed capacity such as Lambda reserved concurrency is not throttled. - [Write a principal provider](https://traxsharp.net/docs/mediator/write-a-principal-provider.md): (How-to guide) Write an ICurrentPrincipalProvider so the per-principal concurrency limit applies on a host that is not a Trax GraphQL host, and register it. - [Schedule a train](https://traxsharp.net/docs/scheduler/setup.md): (How-to guide) How to run a train on an interval and a cron schedule from Postgres, read what the scheduler recorded, trigger a job on demand and quiet its logs. - [Run a job once, later](https://traxsharp.net/docs/scheduler/delayed-jobs.md): (How-to guide) How to run work once after a delay: TriggerAsync with a delay on an existing manifest, or ScheduleOnceAsync for a one-off manifest that disables itself. - [Resolve a dead letter](https://traxsharp.net/docs/scheduler/dead-letters-and-cleanup.md): (How-to guide) How to find a dead-lettered manifest, read why it failed, and requeue or acknowledge it from the dashboard, GraphQL or ITraxScheduler, one at a time or in bulk. - [Restart a wedged scheduler with a liveness probe](https://traxsharp.net/docs/scheduler/health-and-liveness.md): (How-to guide) How to wire the scheduler liveness health check into a container or load-balancer probe, so a scheduler that stops dispatching is restarted. - [Schedule manifests in bulk](https://traxsharp.net/docs/scheduler/bulk-scheduling.md): (How-to guide) How to schedule many manifests of one train at startup or at runtime, vary settings per item, group them under shared dispatch limits and prune the stale ones. - [Debug a failed remote run](https://traxsharp.net/docs/scheduler/debug-remote-failures.md): (How-to guide) Where to look, in order, when a job dispatched to a remote runner failed: the run's metadata row, its log, a stale pending run and a requeued dispatch. - [Run trains on AWS Lambda](https://traxsharp.net/docs/scheduler/run-trains-on-lambda.md): (How-to guide) Build a TraxLambdaFunction, point the scheduler's UseLambdaWorkers and UseLambdaRun at it, run it locally, test it, and keep its cold starts short. - [Run trains on SQS workers](https://traxsharp.net/docs/scheduler/run-trains-on-sqs-workers.md): (How-to guide) Send chosen trains' queued runs to an Amazon SQS queue with UseSqsWorkers and run them in a Lambda consumer with SqsJobRunnerHandler. - [Call another GraphQL server](https://traxsharp.net/docs/api/call-another-graphql-server.md): (How-to guide) Call a GraphQL server from .NET with Trax.Api.GraphQL.Client: write a request, register the client, validate queries at startup, run them. - [Turn on persisted operations](https://traxsharp.net/docs/api/turn-on-persisted-operations.md): (How-to guide) Make a Trax GraphQL host run only stored documents: register persisted operations, roll out in shadow mode, upload documents, scale to several nodes. - [Fetch only what a component needs](https://traxsharp.net/docs/api/fetch-only-what-a-component-needs.md): (How-to guide) Write a .graphql document selecting what a component needs from a train, generate its typed function with trax client --documents, and register it. - [Watch a queued run](https://traxsharp.net/docs/api/watch-a-queued-run.md): (How-to guide) Follow a train queued with mode QUEUE from a GraphQL client: subscribe to onTrainStateChanged, match the externalId, stop at a terminal state. - [Add a subscription field](https://traxsharp.net/docs/api/add-a-subscription-field.md): (How-to guide) Add your own GraphQL subscription field to the Trax schema, authorize who may listen to which topic, and publish to it from a lifecycle hook. - [Expose an entity as a query model](https://traxsharp.net/docs/api/expose-an-entity-as-a-query-model.md): (How-to guide) Serve an EF Core entity as a paged, filterable GraphQL query with TraxQueryModel: mark the entity, put it on a DbContext, register the context. - [Check outbound queries against a schema snapshot](https://traxsharp.net/docs/api/check-outbound-queries-against-a-schema-snapshot.md): (How-to guide) Validate every outbound GraphQL query against a checked-in SDL file, in a test and at startup, with no server running. - [Secure a GraphQL host](https://traxsharp.net/docs/security/secure-a-graphql-host.md): (How-to guide) Build a Trax GraphQL host with API-key and JWT authentication, gated trains and query models, an operator-only operations namespace and an audit trail. - [Inject the current principal](https://traxsharp.net/docs/security/inject-the-current-principal.md): (How-to guide) How to read the authenticated caller in junctions and services through TraxPrincipal or TraxCaller, including junctions the scheduler also runs, and in tests. - [Write a JWT principal resolver](https://traxsharp.net/docs/security/write-a-jwt-principal-resolver.md): (How-to guide) How to decide whether a JWT scheme needs its own principal resolver, and how to write and register one that enriches, rejects or remaps a validated token. - [Sign development JWTs](https://traxsharp.net/docs/security/sign-development-jwts.md): (How-to guide) How to run a Trax host locally with a development JWT signing key and mint tokens for it, while keeping that key out of every other environment. - [Test JWT authentication](https://traxsharp.net/docs/security/test-jwt-authentication.md): (How-to guide) How to integration-test a Trax host's JWT authentication with an in-process JWKS server, including rejected tokens, key rotation and Cognito-shaped tokens. - [Tune the audit pipeline](https://traxsharp.net/docs/security/tune-the-audit-pipeline.md): (How-to guide) How to size the GraphQL audit channel, batches and retries for a host's traffic and sink, and what to watch so lost entries do not go unnoticed. - [Author and serve a machine](https://traxsharp.net/docs/statemachine/authoring.md): (How-to guide) Author a declarative state machine with caller rules and an exactly-once effect, wire it into a host, and serve it to clients as its own typed GraphQL API. - [Write guards and reducers as data](https://traxsharp.net/docs/statemachine/declarative-authoring.md): (How-to guide) Author a state machine's guards, reducers and context rules as data from records and the Rules vocabulary, so the machine exports its IR and can be served. - [Invoke a train from a state](https://traxsharp.net/docs/statemachine/invoking-trains.md): (How-to guide) Make a state machine state run a train with Invokes: route its outcomes, meet the host's requirements, choose an owner, and retry by entering the state again. - [Spawn a child machine from a state](https://traxsharp.net/docs/statemachine/spawning-child-machines.md): (How-to guide) Make a state start a child state machine with Spawns, hear how it ends through OnDone, OnFailed and OnCancelled, and find the child from the parent. - [Undo an effect that already ran](https://traxsharp.net/docs/statemachine/undo-an-effect.md): (How-to guide) How to start over before a state machine's effect runs, and how to compensate one that ran (a refund, a void) with a machine of its own. - [Organize machines in a project](https://traxsharp.net/docs/statemachine/organize-machines.md): (How-to guide) Lay out a project's state machines one folder each: the machine, its states and triggers, its context, its event inputs, and the files generated from it. - [Call a machine from TypeScript](https://traxsharp.net/docs/statemachine/call-a-machine-from-typescript.md): (How-to guide) Send a state machine's typed GraphQL operations from TypeScript with createMachineExecutor, by the persisted ids its host registered. - [Drive a machine instance from React](https://traxsharp.net/docs/statemachine/drive-a-machine-instance-from-react.md): (How-to guide) Bind a state machine's typed operations and push stream with createMachineServer, and drive one instance from a component with useServerMachine. - [Drive a form from a machine](https://traxsharp.net/docs/statemachine/drive-a-form-from-a-machine.md): (How-to guide) Ask a machine whether a form's values may move to the next step, and where they land, with createFormView, while the form keeps its own data. - [Add the console to a host](https://traxsharp.net/docs/dashboard/add-the-console-to-a-host.md): (How-to guide) Serve the Trax operations console from a Trax.Api host: the package, the operations namespace and its gate, who may load the page, and common failures. - [Unit-test a junction](https://traxsharp.net/docs/cross-cutting/testing.md): (How-to guide) Set up an NUnit test project for a Trax application and test a junction by constructing it with its dependencies, or with fakes, and calling Run. - [Test a train with in-memory effects](https://traxsharp.net/docs/cross-cutting/test-a-train.md): (How-to guide) Run a train in a test through ITrainBus on a container with the in-memory data provider, assert its output or exception, and read the run's Metadata row. - [Test a host end to end](https://traxsharp.net/docs/cross-cutting/e2e-testing.md): (How-to guide) Start a Trax host in a test with WebApplicationFactory on its own Postgres database, drive the scheduler, read Trax tables and call GraphQL. - [Test a train's decisions](https://traxsharp.net/docs/core/test-train-decisions.md): (How-to guide) Drive a deciding train down each of its tracks in a unit test with ScriptedDecider, and check what a model would have been asked. - [Add your own trains to a template](https://traxsharp.net/docs/reference/add-trains-to-a-template.md): (How-to guide) Add a query train served over GraphQL and a scheduled train with its manifest to a project made from the trax-hub, trax-api or trax-scheduler template. - [Switch a template to Postgres](https://traxsharp.net/docs/reference/switch-a-template-to-postgres.md): (How-to guide) Move a project made from a Trax template off the in-memory provider onto Postgres, so runs survive a restart and queued work runs. - [Prepare a template for deployment](https://traxsharp.net/docs/reference/prepare-a-template-for-deployment.md): (How-to guide) Replace the Development-only demo keys and console posture of a Trax template project before running it anywhere but your machine. - [Adopt the architecture guards](https://traxsharp.net/docs/reference/adopt-the-architecture-guards.md): (How-to guide) Add the Trax architecture guards to a test project: subclass the guard fixtures, configure the owner-scope census, and check the database after each test. - [Upgrading](https://traxsharp.net/docs/migration-guides.md): Upgrade guides for Trax releases that need more than a package bump, newest first, and the database procedures that go with some migrations. - [Adapt to the machine wire changes](https://traxsharp.net/docs/migration-guides/machine-wire-changes.md): (How-to guide) Upgrade steps for the release that made refusal codes one enum, typed each machine's push, spelled machine enums as stored, and let starters follow runs. - [Move to the Trax.StateMachine packages](https://traxsharp.net/docs/migration-guides/trax-statemachine-packages.md): (How-to guide) Upgrade steps for the release that renamed the state-machine packages from Trax.Effect.StateMachine to Trax.StateMachine: swap the ids and namespaces. - [Reach trains through your own documents](https://traxsharp.net/docs/migration-guides/reach-trains-through-your-own-documents.md): (How-to guide) Upgrade steps for the release that stopped generating a document per train: write one per train the frontend calls, register it, regenerate the client. - [Move off the generic state-machine mutations](https://traxsharp.net/docs/migration-guides/generic-state-machine-mutations.md): (How-to guide) The generic stateMachine mutations are now opt-in: what stops working on upgrade, how to move to each machine's typed API, and what opting back in requires. - [Regenerate twins after the trax machine generate defaults changed](https://traxsharp.net/docs/migration-guides/trax-machine-generate-defaults.md): (How-to guide) What changed in trax machine generate's defaults when the engine shipped on npm, and how to regenerate a twin or keep generating it as before. - [Upgrade schedulers from Trax.Effect 1.57.2 or earlier](https://traxsharp.net/docs/migration-guides/scheduler-leader-lock.md): (How-to guide) Why a Postgres scheduler fleet on Trax.Effect 1.57.2 or earlier must stop every host before the first one starts on a newer version, and how to deploy it. - [Migrate to qualified principal ids](https://traxsharp.net/docs/migration-guides/qualified-principal-ids.md): (How-to guide) Why the trax:principal-id claim is now qualified by authentication scheme, what reads it, and how to migrate ids already stored in the bare form. - [Adapt to the enqueue and outcome changes](https://traxsharp.net/docs/migration-guides/enqueue-and-outcome-changes.md): (How-to guide) Upgrade steps for the release that changed enqueueing and outcome recording: QueueAsync, mediator-routed enqueues, WorkQueue.Create and rolling deploys. - [Move trains off RunInternal and Activate](https://traxsharp.net/docs/migration-guides/runinternal-and-activate.md): (How-to guide) Moving trains that overrode RunInternal or called Activate to a Junctions() declaration, the Memory rules the startup check enforces, and the async chain. - [Upgrade to HotChocolate 16](https://traxsharp.net/docs/migration-guides/hotchocolate-16.md): (How-to guide) What a host changes when Trax.Api.GraphQL moves to HotChocolate 16: packages, renamed types, schema services, scalars, projection and auth attributes. - [Migrate from Hangfire](https://traxsharp.net/docs/migration-guides/migrate-from-hangfire.md): (How-to guide) Moving a scheduler host off the Hangfire backend (UseHangfire and Trax.Scheduler.Hangfire) onto the built-in Postgres local workers. ## Explanation - [How these docs are organised](https://traxsharp.net/docs/about-these-docs.md): (Explanation) The four kinds of page in the Trax docs, what each is for, how the sidebar groups them, and which code samples are compiled in CI. - [Trax compared with Quartz.NET and Hangfire](https://traxsharp.net/docs/reference/comparison.md): (Explanation) How Trax compares with Quartz.NET and Hangfire on scheduling, composition, persistence, distribution, retries, dashboards, and when to choose each. - [What Trax does](https://traxsharp.net/docs/what-trax-does.md): (Explanation) A map of everything Trax does, one capability per row, with the book chapter that teaches it, the page that explains it and the package that ships it. - [Structuring your application](https://traxsharp.net/docs/reference/project-layout.md): (Explanation) How the project templates lay out a Trax application, where trains, data and tests go, and when to move trains into a class library. - [Train overhead](https://traxsharp.net/docs/reference/train-overhead.md): (Explanation) What the benchmark numbers mean in practice: the fixed cost of a train, why it vanishes behind I/O, and the work trains are not built for. - [Trains (Trax.Core)](https://traxsharp.net/docs/core.md): (Explanation) Trax.Core overview: trains, junctions, Memory and railway error propagation with no database or DI container, and when to use Core on its own. - [Memory](https://traxsharp.net/docs/core/memory.md): (Explanation) How Memory, the type-keyed store a train carries, passes junction outputs to later junction inputs: storage by type, references, tuples and their limits. - [Trains and junctions](https://traxsharp.net/docs/core/trains-and-junctions.md): (Explanation) What trains and junctions are, why Junctions() is a declaration the host can check, how EffectJunction differs from Junction, and the lifecycle hooks. - [Either and Unit](https://traxsharp.net/docs/cross-cutting/functional-programming.md): (Explanation) Why Trax.Core has its own Either and Unit types, how a train's result travels as an Either, and the null assertion helpers it ships. - [How a chain runs](https://traxsharp.net/docs/core/building-chains.md): (Explanation) What each step of a train's chain (Chain, ShortCircuit, Extract, AddServices, Resolve) does to Memory, and how it behaves once the train is on the left track. - [Decisions](https://traxsharp.net/docs/core/decisions.md): (Explanation) Why a chain declares every track it can take and lets a decider, from a typed decision model to a rule table, choose one per run. - [Checkpoints and branches](https://traxsharp.net/docs/core/checkpoints-and-branches.md): (Explanation) Why a checkpoint stores a declared state rather than Memory, what follows for its contents and placement, and why Parallel branches leave writes to the join. - [How cancellation works](https://traxsharp.net/docs/cross-cutting/cancellation-tokens.md): (Explanation) How a CancellationToken reaches every junction of a train, when a cancelled run stops, and why a ServiceTrain records it as Cancelled rather than Failed. - [Recording runs (Trax.Effect)](https://traxsharp.net/docs/effect.md): (Explanation) How Trax.Effect works: ServiceTrain, the record it writes for every run, junctions resolved from DI, and the effect pattern behind its providers. - [Effect architecture](https://traxsharp.net/docs/effect/architecture.md): (Explanation) How Trax.Effect works inside: the ServiceTrain lifecycle, EffectRunner, canonical train naming, the effect provider interfaces and the DataContext data layer. - [Broadcaster Sinks](https://traxsharp.net/docs/effect/broadcaster-sinks.md): (Explanation) How the train event broadcaster splits transports from sinks, how data-change signals travel with train events, and SignalR against GraphQL subscriptions. - [How junction events withhold a track](https://traxsharp.net/docs/effect/junction-events-withholding.md): (Explanation) Why marking a question sensitive withholds the path a run took after it, not only the answer, and which facts about a withheld track stay visible. - [How event broadcasting works](https://traxsharp.net/docs/effect/how-event-broadcasting-works.md): (Explanation) How Trax carries a run's lifecycle events from the process that ran it to subscribers on other processes, and why a host never delivers its own events twice. - [Failure classification](https://traxsharp.net/docs/effect/failure-classification.md): (Explanation) How a failed run gets a FailureClass: the IFailureClassifier a host registers, where it runs, what it never sees, and how a class travels from a remote worker. - [SQLite and Postgres](https://traxsharp.net/docs/effect/sqlite-and-postgres.md): (Explanation) How Trax's SQLite and Postgres data providers differ: infrastructure, concurrent writes, coordination across processes, and where each one fits. - [Calling a train by its input (Trax.Mediator)](https://traxsharp.net/docs/mediator.md): (Explanation) Trax.Mediator and the train bus: dispatching a train by its input type instead of injecting it, nested trains, and the scope each run gets. - [How queued work stays durable and serialized](https://traxsharp.net/docs/mediator/queued-work.md): (Explanation) Why an OnQueue side effect can outlive its work queue entry, how deferred promotion and subject keys close the gaps, and what bounds each guarantee. - [Scheduling](https://traxsharp.net/docs/scheduler.md): (Explanation) Trax.Scheduler overview: manifests, execution metadata, dead letters, delayed and dependent jobs, manifest groups and how the scheduler is put together. - [Deployment topologies](https://traxsharp.net/docs/reference/deployment-topologies.md): (Explanation) The five ways to split a Trax application across processes, what each process registers, and the sample that runs each one. - [Administrative Trains](https://traxsharp.net/docs/scheduler/admin-trains.md): (Explanation) The internal trains and hosted services AddScheduler registers, which provider each needs, how they meet at the work queue and why they skip MaxActiveJobs. - [How jobs reach workers](https://traxsharp.net/docs/scheduler/job-submission.md): (Explanation) How the JobDispatcher hands a run to a job submitter, which submitter a host gets, how the built-in local workers claim and recover jobs, and custom submitters. - [How retries work](https://traxsharp.net/docs/scheduler/how-retries-work.md): (Explanation) How the scheduler counts a manifest's failures, delays its retries, decides when a retry runs, replays recorded decisions and resumes from checkpoints. - [Multi-Server Concurrency](https://traxsharp.net/docs/scheduler/concurrency.md): (Explanation) How the scheduler stays safe across servers sharing one Postgres database: advisory locks, row-level locking, per-subject serialization and a unique index. - [Dependent Trains](https://traxsharp.net/docs/scheduler/dependent-trains.md): (Explanation) How dependent manifests run when a parent succeeds: Include and ThenInclude, when a dependent is queued, cycle detection and dormant dependents. - [How the scheduler decides when a manifest runs](https://traxsharp.net/docs/scheduler/scheduling-options.md): (Explanation) How the ManifestManager decides a manifest is due: schedule types, what a restart rewrites, group controls, disabling, variance, misfires and timeouts. - [Orphan Manifest Cleanup](https://traxsharp.net/docs/scheduler/orphan-manifest-cleanup.md): (Explanation) How the scheduler deletes manifests at startup whose schedule was removed from code, which manifests a host owns, and how to disable or scope the cleanup. - [Choosing where trains run](https://traxsharp.net/docs/scheduler/remote-execution.md): (Explanation) The models for running trains off the scheduler host (HTTP runners, SQS, direct Lambda, standalone workers), what each costs and how they fail. - [Cancellation and timeouts in the scheduler](https://traxsharp.net/docs/scheduler/cancellation-and-timeouts.md): (Explanation) How the scheduler stops runs: the worker's shutdown grace period, CancelAsync and the dashboard's cancel, job timeouts, and what each records. - [How remote dispatch works](https://traxsharp.net/docs/scheduler/how-remote-dispatch-works.md): (Explanation) What the scheduler's HTTP, SQS and Lambda submitters and run executors do with a run, how a train is routed to one, and the limits of each transport. - [The GraphQL API](https://traxsharp.net/docs/api.md): (Explanation) What Trax.Api.GraphQL is: a GraphQL layer over train execution and the shared database, its queue and run modes, its named schema, and where security fits. - [How the GraphQL client checks queries](https://traxsharp.net/docs/api/graphql-client-validation.md): (Explanation) Why Trax.Api.GraphQL.Client validates hand-written queries against a schema instead of generating code, and how schema loading, caching and HTTP behave. - [Persisted operations](https://traxsharp.net/docs/api/persisted-operations.md): (Explanation) How persisted GraphQL operations work in Trax: the id-to-document contract, what can be hot-fixed, caching across nodes, and what enforcement does not protect. - [How subscriptions work](https://traxsharp.net/docs/api/how-subscriptions-work.md): (Explanation) How Trax publishes train lifecycle events to GraphQL subscribers in one process and across processes, and why clients refetch after a reconnect. - [Query models and query trains](https://traxsharp.net/docs/api/query-models-and-query-trains.md): (Explanation) How a TraxQueryModel entity and a TraxQuery train differ as GraphQL read surfaces: what each resolves through, takes, returns and suits. - [Where Trax checks authorization](https://traxsharp.net/docs/security/where-authorization-is-checked.md): (Explanation) Why Trax uses its own attributes, refuses a host with an undeclared surface, checks a train once at submission and trusts the scheduler and dashboard. - [Supply Chain Security](https://traxsharp.net/docs/security/supply-chain.md): (Explanation) How every Trax package gets from source to nuget.org and npm: pinned dependencies, split release jobs, keyless publishing, provenance and gated releases. - [How the JWT dispatcher routes tokens](https://traxsharp.net/docs/security/jwt-issuer-routing.md): (Explanation) Why AddTraxJwtDispatcher picks a JWT scheme from an unvalidated iss claim, what keeps that safe, and when one scheme or named policies are the simpler choice. - [Cognito tokens in Trax](https://traxsharp.net/docs/security/cognito-tokens.md): (Explanation) How Amazon Cognito's ID and access tokens differ, how federated sign-ins reach a Trax host, and how a local Cognito stand-in fits alongside the real user pool. - [State machines](https://traxsharp.net/docs/statemachine.md): (Explanation) How Trax state machines work: the definition and snapshot documents, the three guarantees, matching C# and TypeScript runtimes, and exactly-once effects. - [Train or machine](https://traxsharp.net/docs/statemachine/train-or-machine.md): (Explanation) When to write a train and when to write a state machine: one operation that runs to its end, or a long-lived process a user moves through, and how they combine. - [The codegen pipeline](https://traxsharp.net/docs/statemachine/codegen-pipeline.md): (Explanation) How a state machine's TypeScript twin is generated from its C# definition through the IR, and how the differential corpus and migration golden prove they agree. - [Delegates and declarative rules](https://traxsharp.net/docs/statemachine/delegates-and-declarative-rules.md): (Explanation) Why a state machine's guards, reducers and validators can be C# delegates or data, what each costs, and where logic the rule vocabulary cannot express goes. - [Architecture Guards](https://traxsharp.net/docs/reference/architecture-guards.md): (Explanation) What the Trax architecture-guard packages check and why: schemas, cross-schema reads, owner scoping, train interfaces, database invariants, test hygiene. ## Reference - [Reference](https://traxsharp.net/docs/reference.md): Index of the reference pages outside the SDK reference: packages, glossary, errors, scheduler trains, effects, tooling and schema migrations. - [Packages](https://traxsharp.net/docs/reference/packages.md): (Reference) Every Trax NuGet package, grouped by layer: what it is for, the namespace to import, the methods it adds and which packages it needs beside it. - [Glossary](https://traxsharp.net/docs/reference/glossary.md): (Reference) Definitions of the names Trax uses for trains, effects, the mediator, scheduling, the API and state machines, each with the namespace that holds it. - [Registration Order](https://traxsharp.net/docs/reference/registration-order.md): (Reference) Which Trax registration calls must come in a set order, the startup error each wrong order raises, and which orderings deliberately do not matter. - [Troubleshooting](https://traxsharp.net/docs/cross-cutting/troubleshooting.md): (Reference) The error messages Trax raises at registration, startup and dispatch, quoted verbatim, each with its causes and fix, plus problems that raise no error. - [Benchmarks](https://traxsharp.net/docs/reference/benchmarks.md): (Reference) BenchmarkDotNet measurements of train overhead against plain code, how it scales with junction count and memory, and how to run the suite. - [Acknowledgments](https://traxsharp.net/docs/reference/acknowledgments.md): (Reference) The third-party open-source packages Trax depends on, grouped by the Trax package that references each one, with its licence. - [Decision replay and state hash rules](https://traxsharp.net/docs/core/decision-replay.md): (Reference) IDecisionObserver, IDecisionReplay and their records, the question fingerprint, the checks a replayed answer passes, and the state hash and StateHashKey. - [Startup chain check](https://traxsharp.net/docs/core/startup-chain-check.md): (Reference) The check AddMediator runs at host start: when it runs, every fault that refuses a start, what it only warns about, and which values count as available. - [Metadata](https://traxsharp.net/docs/effect/metadata.md): (Reference) The Metadata record every train run produces: its TrainState lifecycle, failure fields, host tracking, nested trains and the execution flow that fills it. - [Host tracking](https://traxsharp.net/docs/effect/host-tracking.md): (Reference) How every Metadata row records the host a train ran on: auto-detected Lambda, ECS, Kubernetes, Azure or server identity, the builder calls, columns and queries. - [JSON Effect](https://traxsharp.net/docs/effect/effect-providers/json-effect.md): (Reference) The AddJson effect, a development tool that logs tracked model changes on SaveChanges by comparing JSON snapshots, without persisting anything. - [Parameter Effect](https://traxsharp.net/docs/effect/effect-providers/parameter-effect.md): (Reference) SaveTrainParameters, the effect that stores train inputs and outputs as JSON on Metadata, with size bounds, field masking and runtime configuration. - [Junction Logger](https://traxsharp.net/docs/effect/effect-providers/junction-logger.md): (Reference) The AddJunctionLogger effect that records JunctionMetadata before and after each junction, the serializeJunctionData option and its EffectJunction requirement. - [Junction Progress](https://traxsharp.net/docs/effect/effect-providers/junction-progress.md): (Reference) AddJunctionProgress: the CancellationCheckProvider and JunctionProgressProvider pair that report the running junction and allow cancellation between junctions. - [Junction Events](https://traxsharp.net/docs/effect/junction-events.md): (Reference) AddJunctionEvents: each step of a run published live and stored in trax.junction_run, what a step carries, SignalR, RabbitMQ, GraphQL and the dashboard. - [Decision records](https://traxsharp.net/docs/effect/decisions.md): (Reference) What Trax.Effect records for each decision a run makes, the trax.decision columns, the System One adapter, and how re-queued and retried runs replay answers. - [Data Persistence](https://traxsharp.net/docs/effect/effect-providers/data-persistence.md): (Reference) The data persistence effect that stores a Metadata row per run, on PostgreSQL, SQLite or InMemory, with automatic migrations and DataContext logging. - [Schema migrations](https://traxsharp.net/docs/reference/schema-migrations.md): (Reference) The Postgres and SQLite migrations that change something visible, such as columns, indexes or row behaviour, in number order with both providers paired. - [EnsureSchemaCreatedAsync](https://traxsharp.net/docs/effect/domain-schema-bootstrap.md): (Reference) What EnsureSchemaCreatedAsync does to a domain data context's schema on each start: what it creates, what it skips, what it logs and what stops the host. - [Trax data model](https://traxsharp.net/docs/effect/data-model.md): (Reference) The tables Trax.Effect's data providers create in the trax schema, the entity each maps to, and how manifests, runs, logs and steps relate. - [Train discovery](https://traxsharp.net/docs/mediator/train-discovery.md): (Reference) How the train registry scans assemblies and the train bus routes by input type or name: service type selection, shared input types and discovery rules. - [Enqueue hooks](https://traxsharp.net/docs/mediator/enqueue-hooks.md): (Reference) OnQueue, DeferQueuePromotion and QueueSubjectKey on ServiceTrain: when the mediator's queue path calls each one, what it may do, and what it refuses. - [Dispatch limits](https://traxsharp.net/docs/mediator/dispatch-limits.md): (Reference) The mediator's limits on caller-submitted work: runs per principal, input JSON size and OnQueue hook time, with their defaults and refusals. - [Exclusion Windows](https://traxsharp.net/docs/scheduler/exclusions.md): (Reference) Exclusion windows that skip a manifest on days of the week, dates, date ranges or daily time windows, how they combine and interact with misfire policies. - [ManifestManagerTrain](https://traxsharp.net/docs/scheduler/admin-trains/manifest-manager.md): (Reference) The ManifestManager train that cancels timed-out runs, reaps stale ones, and queues due manifests, with its advisory-lock and state-guard concurrency model. - [JobDispatcherTrain](https://traxsharp.net/docs/scheduler/admin-trains/job-dispatcher.md): (Reference) The JobDispatcher train that moves queued work queue entries to the job submitter, enforcing global and per-group MaxActiveJobs and handling dispatch failures. - [JobRunnerTrain](https://traxsharp.net/docs/scheduler/admin-trains/job-runner.md): (Reference) The JobRunner train that runs a scheduled train on a worker: loading its Metadata, claiming the start, recording success and handling duplicate deliveries. - [MetadataCleanupTrain](https://traxsharp.net/docs/scheduler/admin-trains/metadata-cleanup.md): (Reference) The MetadataCleanup train that deletes old Metadata rows for internal and chosen trains: how it runs, deletion order, safety boundary and per-train retention. - [Startup errors](https://traxsharp.net/docs/scheduler/startup-errors.md): (Reference) The configuration errors that stop a scheduler host, runner or worker from starting, and the message each one starts with. - [Scheduler namespaces](https://traxsharp.net/docs/scheduler/namespaces.md): (Reference) The namespace and package of each public type a scheduler host uses: manifests, schedules, options, ITraxScheduler and the dormant dependent context. - [Runner authorization posture](https://traxsharp.net/docs/scheduler/runner-authorization.md): (Reference) The postures a Trax runner accepts work under (signing key, policy, unsigned), what each transport checks, how refusals look and where nonces are kept. - [Remote error responses](https://traxsharp.net/docs/scheduler/remote-error-responses.md): (Reference) The error fields a Trax runner returns from /trax/execute and /trax/run (RemoteJobResponse, RemoteRunResponse), and how the calling side records and shows them. - [Typed requests](https://traxsharp.net/docs/api/typed-requests.md): (Reference) Reference for TypedRequest and its attributes in Trax.Api.GraphQL.Client.Typed: how a GraphQL query is generated from a request and a response POCO. - [Authorization rules](https://traxsharp.net/docs/security/authorization-rules.md): (Reference) The rules Trax applies to GraphQL authorization: the posture every exposed surface declares, how policies and roles combine, and what gates each surface. - [Security policy](https://traxsharp.net/docs/SECURITY.md): (Reference) How to report a Trax vulnerability privately, which versions receive security fixes, and a summary of the supply-chain controls behind every release. - [Startup refusals](https://traxsharp.net/docs/security/startup-refusals.md): (Reference) Every security posture a Trax host refuses to start with: the cause, when the refusal is raised, how its message begins, and what answers it. - [Canonical wire](https://traxsharp.net/docs/statemachine/canonical-wire.md): (Reference) The byte-exact serialization of a state machine snapshot that the C# and TypeScript engines both emit: envelope order, key order, numbers and string escapes. - [Context and input schemas](https://traxsharp.net/docs/statemachine/context-schemas.md): (Reference) How Context() and WithInput() turn a C# record into a state machine schema: JSON types per CLR type, field names, constraints and refusals. - [Generic state-machine mutations](https://traxsharp.net/docs/statemachine/generic-mutations.md): (Reference) Reference for the six opt-in generic stateMachine mutations: the opt-in, their authorization, input and output fields, request ids and size limits. - [Invoked runs: outcomes and refusals](https://traxsharp.net/docs/statemachine/invoked-runs.md): (Reference) Reference for trains a state machine state invokes: outcome triggers, reserved states, delivery, outcomes, OnFailed reasons, host refusals and operator actions. - [Operations console](https://traxsharp.net/docs/dashboard.md): The Trax operations console, the React app a Trax.Api host serves: how it is organised, the words it uses, and a page per area it covers. - [Overview](https://traxsharp.net/docs/dashboard/overview.md): (Reference) Reference for the operations console's Overview page: the run totals, health, host process and charts it shows, and the panels Preferences can hide. - [Runs](https://traxsharp.net/docs/dashboard/runs.md): (Reference) Reference for the operations console's Runs area: the All, Failed, Queued and Dead letters views, their filters and actions, and their detail pages. - [A run](https://traxsharp.net/docs/dashboard/a-run.md): (Reference) Reference for a run's page in the operations console: its header and actions, the run drawn on its chain, the step panel and the tabs. - [Trains](https://traxsharp.net/docs/dashboard/trains.md): (Reference) Reference for the operations console's Trains list and a train's page: its chain, recent runs by step, manifests, the machines that start it, Run and Queue. - [Machines](https://traxsharp.net/docs/dashboard/machines.md): (Reference) Reference for the operations console's Machines pages: every state machine, a machine's diagram and instances, and one instance's state and runs. - [Schedules](https://traxsharp.net/docs/dashboard/schedules.md): (Reference) Reference for the operations console's Schedules area: manifests and their next runs, a manifest's page, manifest groups and a group's settings. - [System](https://traxsharp.net/docs/dashboard/system.md): (Reference) Reference for the operations console's System area: hosts and heartbeats, the scheduler's switches and settings, log levels, effects, logs, live events. - [Bulk operations](https://traxsharp.net/docs/dashboard/bulk-operations.md): (Reference) Reference for bulk operations in the operations console: one action over every row a list filter matches, the typed-count check, and its page. - [API admin](https://traxsharp.net/docs/dashboard/api-admin.md): (Reference) Reference for the operations console's API admin area: the persisted operations pages, shown to a caller the host lets manage persisted GraphQL documents. - [Preferences](https://traxsharp.net/docs/dashboard/preferences.md): (Reference) Reference for the operations console's Preferences page: theme, credential, notifications, refresh, scheduler trains and Overview panels. - [Search](https://traxsharp.net/docs/dashboard/search.md): (Reference) Reference for the operations console's search: finding a run, manifest, queue entry, dead letter, machine instance or train by an exact id, key or name. - [Trax CLI](https://traxsharp.net/docs/reference/cli.md): (Reference) The trax CLI: generate scaffolds a hub and a trains library from GraphQL SDL or OpenAPI, and machine scaffolds and exports state machines. - [Project Templates](https://traxsharp.net/docs/reference/templates.md): (Reference) The trax-api, trax-scheduler and trax-hub dotnet new templates: the files each generates, what its Program.cs registers, its URLs and its tests. - [Trax.Core.Analyzers](https://traxsharp.net/docs/core/analyzer.md): (Reference) The deprecated Trax.Core.Analyzers package, its CHAIN001 and CHAIN002 diagnostics, and why they no longer fire on any chain. - [IDE extensions](https://traxsharp.net/docs/core/ide-extensions.md): (Reference) The VSCode and Rider/ReSharper extensions that show each Chain and ShortCircuit call's junction input and output types as inlay hints, and how to install them. ## SDK Reference - [SDK Reference](https://traxsharp.net/docs/sdk-reference.md): Index of the Trax SDK reference by package family: trains, attributes, configuration, mediator, scheduler, GraphQL, auth, dashboard, machines and testing. - [Trains and Junctions](https://traxsharp.net/docs/sdk-reference/trains-and-junctions.md): Index of the train and junction base classes, the contracts they implement, the exception a failure carries and the helpers that register them. - [Train](https://traxsharp.net/docs/sdk-reference/trains-and-junctions/train.md): (Reference) Reference for Train, the base class of every train, with no persistence or container: its type parameters, members and run behaviour. - [ServiceTrain](https://traxsharp.net/docs/sdk-reference/trains-and-junctions/service-train.md): (Reference) Reference for ServiceTrain, the train base class applications derive from: metadata per run, effects, lifecycle hooks, registration and disposal. - [Junction](https://traxsharp.net/docs/sdk-reference/trains-and-junctions/junction.md): (Reference) Reference for Junction and IJunction, the base class of one unit of work in a chain: type parameters, members, railway behaviour and an example. - [EffectJunction](https://traxsharp.net/docs/sdk-reference/trains-and-junctions/effect-junction.md): (Reference) Reference for EffectJunction, a Junction that records JunctionMetadata and lets junction effects run around it inside a ServiceTrain. - [IRoute](https://traxsharp.net/docs/sdk-reference/trains-and-junctions/i-route.md): (Reference) Reference for IRoute, the one-method contract every train implements: take an input, return an output or throw. - [MonadTask](https://traxsharp.net/docs/sdk-reference/trains-and-junctions/monad-task.md): (Reference) Reference for MonadTask and Monad, the types each chain step returns so Chain, IChain, ShortCircuit and the other steps continue fluently. - [TrainException](https://traxsharp.net/docs/sdk-reference/trains-and-junctions/train-exception.md): (Reference) Reference for TrainException, TrainExceptionData and FailureClass: the exception Trax raises, the record of a junction failure, and how it is classified. - [Route and Junction Registration](https://traxsharp.net/docs/sdk-reference/trains-and-junctions/route-registration.md): (Reference) Reference for AddScopedTraxRoute, AddTransientTraxRoute, AddSingletonTraxRoute and their TraxJunction aliases, which register a train or junction. - [Either and Unit](https://traxsharp.net/docs/sdk-reference/trains-and-junctions/either.md): (Reference) Reference for Either, EitherStatus and Unit in Trax.Core.Functional: the two-track result Junctions() and RunEither return, and the empty value. - [FunctionalExtensions](https://traxsharp.net/docs/sdk-reference/trains-and-junctions/functional-extensions.md): (Reference) Reference for AssertLoaded and AssertEachLoaded, which throw when a value or a navigation on each element of a collection has not been loaded. - [Attributes](https://traxsharp.net/docs/sdk-reference/attributes.md): Index of every attribute Trax reads, all in Trax.Effect.Attributes, grouped by what they govern: authorization, data, execution and GraphQL exposure. - [TraxAuthorize](https://traxsharp.net/docs/sdk-reference/attributes/trax-authorize.md): (Reference) Reference for TraxAuthorize, which declares who may run a train, read a query model or call a field: how attributes combine, where enforced, startup checks. - [TraxAllowAnonymous](https://traxsharp.net/docs/sdk-reference/attributes/trax-allow-anonymous.md): (Reference) Reference for TraxAllowAnonymous, which declares a GraphQL-exposed train or query model deliberately public, its effect by placement and startup checks. - [TraxSensitive](https://traxsharp.net/docs/sdk-reference/attributes/trax-sensitive.md): (Reference) Reference for TraxSensitive, which masks a member of a train's input or output in stored copies, and withholds a question type's answers from junction events. - [TraxRemote](https://traxsharp.net/docs/sdk-reference/attributes/trax-remote.md): (Reference) Reference for TraxRemote, which sends a train's queued runs to a remote worker, and the order in which the scheduler picks a train's job submitter. - [Inject](https://traxsharp.net/docs/sdk-reference/attributes/inject.md): (Reference) Reference for the Inject attribute, which fills a public property from the container when a train is resolved through a Trax registration helper. - [TraxAuthorization](https://traxsharp.net/docs/sdk-reference/attributes/trax-authorization.md): (Reference) Reference for TraxAuthorization and TraxAuthorizationDeclaration, which read the TraxAuthorize and TraxAllowAnonymous posture off a type or method. - [Train Methods](https://traxsharp.net/docs/sdk-reference/train-methods.md): Index of the members of Train and ServiceTrain that declare, run and read a chain: Junctions, Chain, the decision steps, Run, RunEither and DeclaredChain. - [Junctions](https://traxsharp.net/docs/sdk-reference/train-methods/junctions.md): (Reference) Reference for the Junctions() override that declares a train's chain: its signature, what it returns, and what the startup chain check refuses in it. - [Chain](https://traxsharp.net/docs/sdk-reference/train-methods/chain.md): (Reference) Reference for Chain, which runs a junction with its input from Memory and stores its output back: every overload, its railway behaviour and its failures. - [IChain](https://traxsharp.net/docs/sdk-reference/train-methods/i-chain.md): (Reference) Reference for IChain, which runs a junction resolved by its interface from Memory or the container, Inject properties included. - [ShortCircuit](https://traxsharp.net/docs/sdk-reference/train-methods/short-circuit.md): (Reference) Reference for ShortCircuit, which runs a junction whose successful result becomes the train's return value at Resolve, while its failure is ignored. - [Extract](https://traxsharp.net/docs/sdk-reference/train-methods/extract.md): (Reference) Reference for Extract, which copies a property or field of type TOut from a TIn value in Memory, or a value handed to it, into its own Memory slot. - [AddServices](https://traxsharp.net/docs/sdk-reference/train-methods/add-services.md): (Reference) Reference for AddServices, which stores up to seven services in Memory under the interfaces they are passed as, for the junctions after it. - [Resolve](https://traxsharp.net/docs/sdk-reference/train-methods/resolve.md): (Reference) Reference for Resolve, which ends every chain by taking the train's return value from Memory, in the order exception, short-circuit value, Memory, container. - [Run](https://traxsharp.net/docs/sdk-reference/train-methods/run.md): (Reference) Reference for Run, which executes a train from outside and throws its failure, on Train and the sealed overloads of ServiceTrain. - [DeclaredChain](https://traxsharp.net/docs/sdk-reference/train-methods/declared-chain.md): (Reference) Reference for DeclaredChain, ChainRecorder and ChainVerification.Verify, which read and check a train's declared chain without running any junction. - [RunEither](https://traxsharp.net/docs/sdk-reference/train-methods/run-either.md): (Reference) Reference for RunEither, which executes a train from outside and returns its failure as Left instead of throwing. - [Decide](https://traxsharp.net/docs/sdk-reference/train-methods/decide.md): (Reference) Reference for Decide, which asks a decider several typed questions about one value in Memory in a single call and stores each answer as a typed decision. - [Switch](https://traxsharp.net/docs/sdk-reference/train-methods/switch.md): (Reference) Reference for Switch, which sends the train down one of several declared tracks, one per enum member, chosen by a decision. - [Gate](https://traxsharp.net/docs/sdk-reference/train-methods/gate.md): (Reference) Reference for Gate, which routes on the probability that a yes/no answer is yes, to a Yes, No or Unsure track. - [Scale](https://traxsharp.net/docs/sdk-reference/train-methods/scale.md): (Reference) Reference for Scale, which routes on where the state falls on the ordered levels of an enum. - [ChainGraph](https://traxsharp.net/docs/sdk-reference/train-methods/chain-graph.md): (Reference) Reference for ChainGraph: a train's declared chain as a graph with stable node ids, canonical JSON and a hash, and the id of the running step. - [Parallel](https://traxsharp.net/docs/sdk-reference/train-methods/parallel.md): (Reference) Reference for Parallel, which runs a fixed set of named branches side by side in one run, each on its own copy of Memory, then joins them. - [Checkpoint](https://traxsharp.net/docs/sdk-reference/train-methods/checkpoint.md): (Reference) Reference for Checkpoint, which stores a state the chain declares so a later run of the same input resumes after it instead of running every step again. - [Configuration](https://traxsharp.net/docs/sdk-reference/configuration.md): Index of the configuration reference: AddTrax, AddEffects and AddMediator, the data providers, effects, deciders, broadcasters and data services, by package. - [AddTrax](https://traxsharp.net/docs/sdk-reference/configuration/add-trax.md): (Reference) Reference for AddTrax, the single entry point that registers Trax on an IServiceCollection, the TraxBuilder it hands out, and the services it registers. - [AddEffects](https://traxsharp.net/docs/sdk-reference/configuration/add-effects.md): (Reference) Reference for AddEffects, the TraxEffectBuilder and TraxEffectBuilderWithData it hands out, their properties, and the builder methods each one carries. - [Host Tracking](https://traxsharp.net/docs/sdk-reference/configuration/host-tracking.md): (Reference) Reference for the host identity methods on TraxBuilder: SetHostEnvironment, SetHostInstanceId, AddHostLabel and AddHostLabels, and the TraxHostInfo they build. - [AddMediator](https://traxsharp.net/docs/sdk-reference/configuration/add-mediator.md): (Reference) Reference for AddMediator: its overloads, TraxMediatorBuilder, assembly scanning, train lifetimes, the startup chain check and what it registers. - [UsePostgres](https://traxsharp.net/docs/sdk-reference/configuration/use-postgres.md): (Reference) Reference for UsePostgres, the PostgreSQL data provider: its overloads, the startup migration, the Npgsql data source and the services it registers. - [SkipMigrations](https://traxsharp.net/docs/sdk-reference/configuration/skip-migrations.md): (Reference) Reference for SkipMigrations, which turns off the schema migration UsePostgres and UseSqlite run during service registration. - [DatabaseMigrator](https://traxsharp.net/docs/sdk-reference/configuration/database-migrator.md): (Reference) Reference for DatabaseMigrator, which applies Trax's embedded Postgres schema migrations: Migrate, its advisory lock and lock timeout, and the DbUp engine. - [UseSqlite](https://traxsharp.net/docs/sdk-reference/configuration/use-sqlite.md): (Reference) Reference for UseSqlite, the SQLite data provider: the startup migration, WAL mode, how it stores enums and JSON, and the services it registers. - [UseInMemory](https://traxsharp.net/docs/sdk-reference/configuration/use-in-memory.md): (Reference) Reference for UseInMemory, the in-memory data provider for tests and local development, and InMemoryContextProviderFactory, the factory behind it. - [AddDataContextLogging](https://traxsharp.net/docs/sdk-reference/configuration/add-data-context-logging.md): (Reference) Reference for AddDataContextLogging, which stores the host's ILogger messages in the trax.log table, with its level and category filters. - [AddJson](https://traxsharp.net/docs/sdk-reference/configuration/add-json.md): (Reference) Reference for AddJson and JsonEffectProvider, the effect that logs a tracked model whenever its JSON changes between saves, without storing anything. - [SaveTrainParameters](https://traxsharp.net/docs/sdk-reference/configuration/save-train-parameters.md): (Reference) Reference for SaveTrainParameters, which stores train inputs and outputs as JSON on Metadata, and the ParameterEffectConfiguration that bounds and masks them. - [AddJunctionLogger](https://traxsharp.net/docs/sdk-reference/configuration/add-junction-logger.md): (Reference) Reference for AddJunctionLogger, the junction effect that writes each junction's name, timing and railway state to ILogger before and after it runs. - [AddJunctionProgress](https://traxsharp.net/docs/sdk-reference/configuration/add-junction-progress.md): (Reference) Reference for AddJunctionProgress, the junction effects that record the running junction and stop a run whose cancellation was requested, before each junction. - [SetEffectLogLevel](https://traxsharp.net/docs/sdk-reference/configuration/set-effect-log-level.md): (Reference) Reference for SetEffectLogLevel, which sets the log level at which the junction logger and the JSON effect write every entry. - [AddDecisionRecording](https://traxsharp.net/docs/sdk-reference/configuration/add-decision-recording.md): (Reference) Reference for AddDecisionRecording, which writes every decision a run makes to trax.decision and makes a re-queued or retried run replay them. - [AddJunctionEvents](https://traxsharp.net/docs/sdk-reference/configuration/add-junction-events.md): (Reference) Reference for AddJunctionEvents, which publishes each step of a run live and records it in trax.junction_run, with IJunctionEventHandler and ForRun. - [AddNimbleDecider](https://traxsharp.net/docs/sdk-reference/configuration/add-nimble-decider.md): (Reference) Reference for AddNimbleDecider, which answers train decisions with Nimble, Bespoke Labs' open-weights decision model, on a Nimble server you run. - [AddSystemOneDecider](https://traxsharp.net/docs/sdk-reference/configuration/add-system-one-decider.md): (Reference) Reference for AddSystemOneDecider, which answers train decisions through a typed decision model that speaks the System One format, such as Jev. - [AddEffect / AddJunctionEffect](https://traxsharp.net/docs/sdk-reference/configuration/add-effect.md): (Reference) Reference for AddEffect and AddJunctionEffect, which register train-level and junction-level effect provider factories, including configurable ones. - [AddLifecycleHook](https://traxsharp.net/docs/sdk-reference/configuration/add-lifecycle-hook.md): (Reference) Reference for AddLifecycleHook, ITrainLifecycleHook and ITrainLifecycleHookFactory: when each event fires, the input and output a hook sees, and its errors. - [IFailureClassifier](https://traxsharp.net/docs/sdk-reference/configuration/i-failure-classifier.md): (Reference) Reference for IFailureClassifier, which maps an exception to a FailureClass (Transient, Conflict or Permanent) recorded on each failed run, and registering it. - [IJunctionEffectProvider](https://traxsharp.net/docs/sdk-reference/configuration/i-junction-effect-provider.md): (Reference) Reference for IJunctionEffectProvider, code that runs before and after every EffectJunction: its lifecycle, failure behaviour and registration with a factory. - [IDataContext](https://traxsharp.net/docs/sdk-reference/configuration/i-data-context.md): (Reference) Reference for IDataContext, Trax's EF Core context over the trax tables: its tables and members, how to get one, and committing writes with an enqueue. - [DomainDataContext](https://traxsharp.net/docs/sdk-reference/configuration/domain-data-context.md): (Reference) Reference for DomainDataContext, AddDomainDataContext, EnsureSchemaCreatedAsync and IEntityReference, the helpers for your own one-schema EF Core contexts. - [ISqlDialect](https://traxsharp.net/docs/sdk-reference/configuration/i-sql-dialect.md): (Reference) Reference for ISqlDialect, the SQL that differs between Postgres and SQLite, transient errors, and whether the database takes one writer. - [IQueuedWorkListener](https://traxsharp.net/docs/sdk-reference/configuration/i-queued-work-listener.md): (Reference) Reference for IQueuedWorkListener, the data provider's notice that work queue entries became dispatchable, which wakes the job dispatcher before its next poll. - [LikePattern](https://traxsharp.net/docs/sdk-reference/configuration/like-pattern.md): (Reference) Reference for LikePattern, which turns a caller's search term into an escaped, lowered LIKE pattern that the Postgres trigram indexes serve. - [UseBroadcaster](https://traxsharp.net/docs/sdk-reference/configuration/use-broadcaster.md): (Reference) Reference for UseBroadcaster, which carries train lifecycle events and data-change signals between processes over a transport such as RabbitMQ. - [UseRabbitMq](https://traxsharp.net/docs/sdk-reference/configuration/use-rabbit-mq.md): (Reference) Reference for UseRabbitMq, the RabbitMQ broadcaster transport: its options, exchanges, publisher confirms, queue limits and RabbitMqTrainEventReceiver. - [UseSignalRHub](https://traxsharp.net/docs/sdk-reference/configuration/use-signalr-hub.md): (Reference) Reference for UseSignalRHub, the broadcaster sink that pushes train lifecycle events to SignalR clients: filters, projections, junction events and delivery. - [ITraxTrainEventClient](https://traxsharp.net/docs/sdk-reference/configuration/i-trax-train-event-client.md): (Reference) Reference for ITraxTrainEventClient, the typed client surface of the Trax SignalR hub, its TrainEvent and JunctionEvent methods, and how clients receive them. - [MapTraxTrainEventHub](https://traxsharp.net/docs/sdk-reference/configuration/map-trax-train-event-hub.md): (Reference) Reference for MapTraxTrainEventHub, which maps the Trax SignalR hub behind a required authorization posture, with connection lifetime, send timeout and clients. - [Scheduler API](https://traxsharp.net/docs/sdk-reference/scheduler-api.md): Index of the Trax.Scheduler reference and its Lambda and SQS packages: AddScheduler, ITraxScheduler, scheduling methods, workers, runners and operations. - [ITraxScheduler](https://traxsharp.net/docs/sdk-reference/scheduler-api/i-trax-scheduler.md): (Reference) Reference for ITraxScheduler, the runtime API to create, change, trigger and cancel manifests, trigger groups and resolve dead letters, with its result types. - [AddScheduler](https://traxsharp.net/docs/sdk-reference/scheduler-api/add-scheduler.md): (Reference) Reference for AddScheduler and SchedulerConfigurationBuilder: execution backends, global options and their value ranges, and startup schedules. - [ConfigureLocalWorkers](https://traxsharp.net/docs/sdk-reference/scheduler-api/configure-local-workers.md): (Reference) Reference for ConfigureLocalWorkers, which tunes the built-in local worker pool that a database provider enables by default, with LocalWorkerOptions. - [Schedule / ScheduleAsync](https://traxsharp.net/docs/sdk-reference/scheduler-api/schedule.md): (Reference) Reference for Schedule and ScheduleAsync, which upsert one recurring manifest by external id, with ScheduleOptions, manifest-level and group-level settings. - [ScheduleMany / ScheduleManyAsync](https://traxsharp.net/docs/sdk-reference/scheduler-api/schedule-many.md): (Reference) Reference for ScheduleMany and ScheduleManyAsync, which schedule many instances of a train in one transaction from ManifestItems, with prefix pruning. - [Dependent scheduling](https://traxsharp.net/docs/sdk-reference/scheduler-api/dependent-scheduling.md): (Reference) Reference for ThenInclude, Include, IncludeMany, ThenIncludeMany, ScheduleDependentAsync and ScheduleManyDependentAsync, which schedule dependent manifests. - [Manifest management](https://traxsharp.net/docs/sdk-reference/scheduler-api/manifest-management.md): (Reference) Reference for the ITraxScheduler methods that control scheduled jobs at runtime: DisableAsync, EnableAsync, TriggerAsync, ScheduleOnceAsync and CancelAsync. - [Scheduling helpers](https://traxsharp.net/docs/sdk-reference/scheduler-api/scheduling-helpers.md): (Reference) Reference for the Every and Cron schedule factories, the Schedule record, the ScheduleType, MisfirePolicy and ExclusionType enums, and ManifestOptions. - [AddMetadataCleanup](https://traxsharp.net/docs/sdk-reference/scheduler-api/add-metadata-cleanup.md): (Reference) Reference for AddMetadataCleanup, which purges old Metadata rows for the internal scheduler trains and any trains you add, with per-train retention. - [UseRemoteWorkers](https://traxsharp.net/docs/sdk-reference/scheduler-api/use-remote-workers.md): (Reference) Reference for UseRemoteWorkers, which routes chosen trains' queued runs to a remote HTTP endpoint, with RemoteWorkerOptions, HttpRetryOptions and routing. - [UseRemoteRun](https://traxsharp.net/docs/sdk-reference/scheduler-api/use-remote-run.md): (Reference) Reference for UseRemoteRun, which sends synchronous run requests to a remote HTTP runner, with RemoteRunOptions and what it registers. - [AddTraxJobRunner](https://traxsharp.net/docs/sdk-reference/scheduler-api/add-trax-job-runner.md): (Reference) Reference for AddTraxJobRunner, UseTraxJobRunner and UseTraxRunEndpoint, which set up a remote process that executes trains a scheduler dispatches to it. - [UseSqsWorkers](https://traxsharp.net/docs/sdk-reference/scheduler-api/use-sqs-workers.md): (Reference) Reference for UseSqsWorkers and SqsJobRunnerHandler, which route chosen trains' queued runs to an Amazon SQS queue and run them in a Lambda consumer. - [UseLambdaWorkers](https://traxsharp.net/docs/sdk-reference/scheduler-api/use-lambda-workers.md): (Reference) Reference for UseLambdaWorkers, which routes chosen trains' queued runs to an AWS Lambda function by direct invocation, with retry and routing options. - [UseLambdaRun](https://traxsharp.net/docs/sdk-reference/scheduler-api/use-lambda-run.md): (Reference) Reference for UseLambdaRun, which sends synchronous run requests to an AWS Lambda function by direct SDK invocation, with LambdaRunOptions. - [AddTraxWorker](https://traxsharp.net/docs/sdk-reference/scheduler-api/add-trax-worker.md): (Reference) Reference for AddTraxWorker, which runs a standalone worker process that polls the background_job table and executes trains, with LocalWorkerOptions. - [TraxLambdaFunction](https://traxsharp.net/docs/sdk-reference/scheduler-api/trax-lambda-function.md): (Reference) Reference for TraxLambdaFunction, the base class for AWS Lambda functions that run Trax trains from a LambdaEnvelope, and its RunLocalAsync server. - [AddTraxSchedulerLiveness](https://traxsharp.net/docs/sdk-reference/scheduler-api/add-trax-scheduler-liveness.md): (Reference) Reference for AddTraxSchedulerLiveness, the health check that reports unhealthy when the JobDispatcher has not completed a polling cycle within a threshold. - [IWorkQueuePromotion](https://traxsharp.net/docs/sdk-reference/scheduler-api/i-work-queue-promotion.md): (Reference) Reference for IWorkQueuePromotion, which confirms work queue entries staged by a two-phase enqueue and resolves ones a crash left unconfirmed. - [IOperationsService](https://traxsharp.net/docs/sdk-reference/scheduler-api/i-operations-service.md): (Reference) Reference for IOperationsService, the operations the dashboard and the GraphQL operations namespace share: queueing, running, batch actions and read models. - [IEffectSettingsService](https://traxsharp.net/docs/sdk-reference/scheduler-api/i-effect-settings-service.md): (Reference) Reference for IEffectSettingsService, which lists this process's effects, turns them on and off, and edits a configurable effect's settings. - [ILogLevelService](https://traxsharp.net/docs/sdk-reference/scheduler-api/i-log-level-service.md): (Reference) Reference for ILogLevelService, which reads and sets the log level of each category configured under Logging:LogLevel at runtime, in this process. - [IDeadLetterRequeueJobs](https://traxsharp.net/docs/sdk-reference/scheduler-api/i-dead-letter-requeue-jobs.md): (Reference) Reference for IDeadLetterRequeueJobs, which requeues every dead letter awaiting intervention as a background job on this node and reads the job back by id. - [IDormantDependentContext](https://traxsharp.net/docs/sdk-reference/scheduler-api/i-dormant-dependent-context.md): (Reference) Reference for IDormantDependentContext, which a running parent train uses to activate its dormant dependent manifests with input chosen at runtime. - [Mediator API](https://traxsharp.net/docs/sdk-reference/mediator-api.md): Index of the Trax.Mediator reference: ITrainBus dispatch by input type, registration, train discovery and execution, concurrency limits and trusted scopes. - [ITrainBus](https://traxsharp.net/docs/sdk-reference/mediator-api/i-train-bus.md): (Reference) Reference for ITrainBus: RunAsync, RunByNameAsync and InitializeTrain, which run a train in process by its input type or its name, each in its own DI scope. - [ITrainDiscoveryService](https://traxsharp.net/docs/sdk-reference/mediator-api/i-train-discovery-service.md): (Reference) Reference for ITrainDiscoveryService and TrainRegistration, which list every registered service train for the dashboard, the API and train lookup by name. - [ITrainExecutionService](https://traxsharp.net/docs/sdk-reference/mediator-api/i-train-execution-service.md): (Reference) Reference for ITrainExecutionService: QueueAsync, RunAsync and PrepareAsync, which queue or run a train by name from JSON input after authorizing the caller. - [TrainInputReader](https://traxsharp.net/docs/sdk-reference/mediator-api/train-input-reader.md): (Reference) Reference for TrainInputReader: Read, Write and ResolveSavedInput, the rules every Trax surface reads and writes train input JSON by. - [Mediator exceptions](https://traxsharp.net/docs/sdk-reference/mediator-api/exceptions.md): (Reference) Reference for the exceptions in Trax.Mediator.Exceptions: what throws each one, the properties it carries, and what its message contains. - [Concurrency limits](https://traxsharp.net/docs/sdk-reference/mediator-api/concurrency-limiting.md): (Reference) Reference for ConcurrentRunLimit, PerPrincipalMaxConcurrentRun, GlobalConcurrentRunLimit and [TraxConcurrencyLimit], which cap concurrent direct train runs. - [IConcurrencyLimiter](https://traxsharp.net/docs/sdk-reference/mediator-api/i-concurrency-limiter.md): (Reference) Reference for IConcurrencyLimiter, which gates direct runs per train, per principal and globally, waiting rather than rejecting when a limit is reached. - [ICurrentPrincipalProvider](https://traxsharp.net/docs/sdk-reference/mediator-api/i-current-principal-provider.md): (Reference) Reference for ICurrentPrincipalProvider, which gives the mediator the current caller's stable id for the per-principal concurrency limit on direct runs. - [ITrustedExecutionScope](https://traxsharp.net/docs/sdk-reference/mediator-api/i-trusted-execution-scope.md): (Reference) Reference for ITrustedExecutionScope, which marks an async flow as trusted infrastructure and switches off per-train authorization until disposed. - [MediatorConfiguration](https://traxsharp.net/docs/sdk-reference/mediator-api/mediator-configuration.md): (Reference) Reference for MediatorConfiguration, the read-only singleton holding the settings AddMediator resolved from its builder. - [IEnqueueContextAccessor](https://traxsharp.net/docs/sdk-reference/mediator-api/i-enqueue-context-accessor.md): (Reference) Reference for IEnqueueContextAccessor, which exposes the data context an enqueue commits on so an OnQueue hook can write in the same transaction. - [AddMediator](https://traxsharp.net/docs/sdk-reference/mediator-api/add-mediator.md): (Reference) Where AddMediator is documented: its full reference page under Configuration, and the lower-level AddServiceTrainBus registration it performs. - [AddServiceTrainBus](https://traxsharp.net/docs/sdk-reference/mediator-api/add-service-train-bus.md): (Reference) Reference for AddServiceTrainBus and RegisterServiceTrains, the IServiceCollection registration AddMediator performs, and what it registers on its own. - [API Dashboard](https://traxsharp.net/docs/sdk-reference/api-dashboard.md): Index of the Trax.Api.Dashboard reference: the React operations dashboard a Trax.Api host serves with UseTraxApiDashboard, and its options. - [UseTraxApiDashboard](https://traxsharp.net/docs/sdk-reference/api-dashboard/use-trax-api-dashboard.md): (Reference) Reference for UseTraxApiDashboard, which serves the React operations dashboard from a Trax.Api host behind a required authorization posture. - [API Auth](https://traxsharp.net/docs/sdk-reference/api-auth.md): Index of the Trax auth reference: the principal abstraction, the API-key, JWT, Cognito and OIDC schemes, Cognito token minting and the JWT test fixtures. - [AddTraxApiKeyAuth](https://traxsharp.net/docs/sdk-reference/api-auth/add-trax-api-key-auth.md): (Reference) Reference for AddTraxApiKeyAuth: static key sets and DI-scoped resolvers, ApiKeyBuilder methods, hashed key comparison, demo keys and the policies it registers. - [AddTraxJwtAuth](https://traxsharp.net/docs/sdk-reference/api-auth/add-trax-jwt-auth.md): (Reference) Reference for AddTraxJwtAuth: JWKS authority or explicit signing key, named schemes for several issuers, JwtBuilder methods, the default resolver and demo keys. - [JwtProviderExtensions](https://traxsharp.net/docs/sdk-reference/api-auth/jwt-provider-extensions.md): (Reference) Reference for AddTraxGoogleJwtAuth, AddTraxAuth0JwtAuth, AddTraxEntraJwtAuth and AddTraxCognitoJwtAuth, shortcuts that build a provider's authority. - [AddTraxJwtDispatcher](https://traxsharp.net/docs/sdk-reference/api-auth/add-trax-jwt-dispatcher.md): (Reference) Reference for AddTraxJwtDispatcher, which routes a Bearer token to the JWT scheme its iss claim maps to, JwtDispatcherBuilder and JwtDispatcherRuntime. - [AddTraxOidcAuth](https://traxsharp.net/docs/sdk-reference/api-auth/add-trax-oidc-auth.md): (Reference) Reference for AddTraxOidcAuth, the OpenID Connect code-flow scheme: OidcBuilder methods, the default claim mapping, the session cookie and policies. - [ApiKeyAuthenticationOptions](https://traxsharp.net/docs/sdk-reference/api-auth/api-key-authentication-options.md): (Reference) Reference for ApiKeyAuthenticationOptions, the options AddTraxApiKeyAuth passes to the API-key authentication scheme, such as the header it reads. - [HashedApiKeyResolver](https://traxsharp.net/docs/sdk-reference/api-auth/hashed-api-key-resolver.md): (Reference) Reference for HashedApiKeyResolver, the constant-time resolver over salted SHA-256 API-key hashes that AddTraxApiKeyAuth builds from a static key set. - [ApiKeyDefaults](https://traxsharp.net/docs/sdk-reference/api-auth/api-key-defaults.md): (Reference) Reference for ApiKeyDefaults, the constants of the Trax API-key authentication scheme, its scheme name, policy name and the default X-Api-Key header. - [CognitoTokenIssuer](https://traxsharp.net/docs/sdk-reference/api-auth/cognito-token-issuer.md): (Reference) Reference for Trax.Api.Auth.Jwt.Cognito.Issuer: CognitoTokenIssuer, its access and ID token requests and FederatedIdentity, which mint Cognito-shaped tokens. - [IRefreshTokenStore](https://traxsharp.net/docs/sdk-reference/api-auth/i-refresh-token-store.md): (Reference) Reference for IRefreshTokenStore, the Cognito-style refresh token contract with rotation chains and reuse detection, and InMemoryRefreshTokenStore. - [ITraxPrincipalResolver](https://traxsharp.net/docs/sdk-reference/api-auth/i-trax-principal-resolver.md): (Reference) Reference for ITraxPrincipalResolver, which maps a verified API key, JWT or OIDC sign-in to a TraxPrincipal, with its return semantics and lifetime. - [TestJwksServer](https://traxsharp.net/docs/sdk-reference/api-auth/test-jwks-server.md): (Reference) Reference for Trax.Api.Auth.Jwt.Testing's TestJwksServer and TestJwksServerOptions: an in-process OIDC discovery and JWKS host for JWT tests, with key rotation. - [TestTokenIssuer](https://traxsharp.net/docs/sdk-reference/api-auth/test-token-issuer.md): (Reference) Reference for TestTokenIssuer and TestTokenBuilder in Trax.Api.Auth.Jwt.Testing, which mint RS256 or HS256 test JWTs with chosen claims and lifetime. - [JwtDefaults](https://traxsharp.net/docs/sdk-reference/api-auth/jwt-defaults.md): (Reference) Reference for JwtDefaults, the constants of the Trax JWT bearer scheme and its dispatcher, and how a named scheme derives its authorization policy name. - [OidcDefaults](https://traxsharp.net/docs/sdk-reference/api-auth/oidc-defaults.md): (Reference) Reference for OidcDefaults, the constants of the Trax OpenID Connect scheme, its scheme, cookie and policy names, callback paths and principal type. - [TraxAuthClaimTypes](https://traxsharp.net/docs/sdk-reference/api-auth/trax-auth-claim-types.md): (Reference) Reference for TraxAuthClaimTypes, the claim types every Trax authentication scheme writes, the scheme-qualified principal id, and the combined policy. - [AddTraxPrincipalAccessor](https://traxsharp.net/docs/sdk-reference/api-auth/add-trax-principal-accessor.md): (Reference) Reference for AddTraxPrincipalAccessor, which registers the injectable TraxPrincipal and TraxCaller, and TraxPrincipalNotAvailableException. - [TraxCaller](https://traxsharp.net/docs/sdk-reference/api-auth/trax-caller.md): (Reference) Reference for TraxCaller, the caller context that never throws: Principal, IsAuthenticated and IsTrusted, how each is read, and where it is registered. - [TraxPrincipal](https://traxsharp.net/docs/sdk-reference/api-auth/trax-principal.md): (Reference) Reference for TraxPrincipal, the identity record a resolver returns: its properties, the ClaimsPrincipal round trip and TraxPrincipalId. - [UseCognito](https://traxsharp.net/docs/sdk-reference/api-auth/use-cognito.md): (Reference) Reference for UseCognito, which configures a JwtBuilder for an Amazon Cognito user pool, and CognitoJwtPrincipalResolver for groups and federation. - [CognitoDefaults](https://traxsharp.net/docs/sdk-reference/api-auth/cognito-defaults.md): (Reference) Reference for CognitoDefaults, the Amazon Cognito claim names and values UseCognito, CognitoJwtPrincipalResolver and CognitoTokenIssuer read and write. - [API Audit](https://traxsharp.net/docs/sdk-reference/api-audit.md): Index of the Trax.Api.GraphQL.Audit reference: AddAudit, TraxAuditEntry, TraxAuditOptions, TraxAuditChannel, ITraxAuditSink and ITraxAuditRedactor. - [AddAudit](https://traxsharp.net/docs/sdk-reference/api-audit/add-audit.md): (Reference) Reference for AddAudit, which wires the GraphQL audit pipeline on TraxGraphQLBuilder: channel, background writer, diagnostic listener, sink and redactor. - [ITraxAuditRedactor](https://traxsharp.net/docs/sdk-reference/api-audit/i-trax-audit-redactor.md): (Reference) Reference for ITraxAuditRedactor, which decides which GraphQL variables an audit entry records, and DefaultAuditRedactor, which records none. - [ITraxAuditSink](https://traxsharp.net/docs/sdk-reference/api-audit/i-trax-audit-sink.md): (Reference) Reference for ITraxAuditSink, the destination you implement for audit entries, and how the writer calls it on batching, threading, retries and drops. - [TraxAuditEntry](https://traxsharp.net/docs/sdk-reference/api-audit/trax-audit-entry.md): (Reference) Reference for TraxAuditEntry, the immutable record describing one audited GraphQL request, including refused ones, and each of its fields. - [TraxAuditOptions](https://traxsharp.net/docs/sdk-reference/api-audit/trax-audit-options.md): (Reference) Reference for TraxAuditOptions, the options of the GraphQL audit pipeline such as ChannelCapacity, BatchSize and FlushInterval, their defaults and validation. - [TraxAuditChannel](https://traxsharp.net/docs/sdk-reference/api-audit/trax-audit-channel.md): (Reference) Reference for TraxAuditChannel, the bounded queue between the audit listener and writer, its Trax.Audit meter and the trax.audit.dropped counter. - [GraphQL API](https://traxsharp.net/docs/sdk-reference/graphql-api.md): Index of the Trax GraphQL API reference: registration, the query, mutation and subscription types, the machines root, attributes and error codes. - [AddTraxGraphQL](https://traxsharp.net/docs/sdk-reference/graphql-api/add-trax-graphql.md): (Reference) Reference for AddTraxGraphQL and UseTraxGraphQL: builder methods, registered services, the operations gate, prerequisites and registration order. - [Queries](https://traxsharp.net/docs/sdk-reference/graphql-api/queries.md): (Reference) Reference for the Trax GraphQL query type: the discover and operations namespaces, every operations field and the page that documents it. - [discover queries](https://traxsharp.net/docs/sdk-reference/graphql-api/queries/discover.md): (Reference) Reference for the discover query namespace: the typed fields Trax generates for trains marked TraxQuery, their names, input and output. - [operations: system queries](https://traxsharp.net/docs/sdk-reference/graphql-api/queries/operations.md): (Reference) Reference for the operations queries about the host: health, registered trains, admin train names, hosts, per-train stats and effects. - [operations: manifest queries](https://traxsharp.net/docs/sdk-reference/graphql-api/queries/manifests.md): (Reference) Reference for the operations queries over scheduler manifests: the paged list, one manifest's detail, its run stats and its exclusions. - [operations: execution queries](https://traxsharp.net/docs/sdk-reference/graphql-api/queries/executions.md): (Reference) Reference for the operations queries over runs: executions, an execution's detail and children, junction steps, the run graph and decisions. - [operations: machine queries](https://traxsharp.net/docs/sdk-reference/graphql-api/queries/machine-instances.md): (Reference) Reference for the operations queries over state machines: registered machines and their graphs, instances, one instance with its runs, and counts by state. - [operations.deadLetters queries](https://traxsharp.net/docs/sdk-reference/graphql-api/queries/dead-letters.md): (Reference) Reference for the operations.deadLetters query namespace: the paged dead-letter list, one dead letter, and the requeue-all job. - [operations.config queries](https://traxsharp.net/docs/sdk-reference/graphql-api/queries/config.md): (Reference) Reference for the operations.config query namespace: the live scheduler settings, the host's environment name, Trax version and log levels. - [operations.metrics queries](https://traxsharp.net/docs/sdk-reference/graphql-api/queries/metrics.md): (Reference) Reference for operations.metrics: the dashboard's KPIs and charts, run series per train, manifest or group, the process snapshot and the CPU sampler. - [operations.logs queries](https://traxsharp.net/docs/sdk-reference/graphql-api/queries/logs.md): (Reference) Reference for the operations.logs query namespace: paged, filtered reads of the trax.log table. - [operations.manifestGroups queries](https://traxsharp.net/docs/sdk-reference/graphql-api/queries/manifest-groups.md): (Reference) Reference for the operations.manifestGroups query namespace: the paged group list, one group, group stats and the cross-group dependency graphs. - [operations.workQueue queries](https://traxsharp.net/docs/sdk-reference/graphql-api/queries/work-queue.md): (Reference) Reference for the operations.workQueue query namespace: the paged work queue and one entry's detail with its input. - [PagedResult](https://traxsharp.net/docs/sdk-reference/graphql-api/queries/paged-result.md): (Reference) Reference for PagedResult, the page type every paged operations query returns, and its offset and keyset pagination, page size limits and estimated counts. - [Mutations](https://traxsharp.net/docs/sdk-reference/graphql-api/mutations.md): (Reference) Reference for the Trax GraphQL mutation type: the dispatch and operations namespaces, every operations field and the page that documents it. - [dispatch mutations](https://traxsharp.net/docs/sdk-reference/graphql-api/mutations/dispatch.md): (Reference) Reference for the dispatch mutation namespace: the typed mutations Trax generates for trains marked TraxMutation, their modes and response type. - [operations: manifest mutations](https://traxsharp.net/docs/sdk-reference/graphql-api/mutations/manifests.md): (Reference) Reference for the operations mutations on manifests and groups: trigger, delay, enable, disable, cancel, batch variants and updateManifest. - [operations: execution mutations](https://traxsharp.net/docs/sdk-reference/graphql-api/mutations/executions.md): (Reference) Reference for the operations mutations on runs: cancelExecution, cancelExecutions, requeueExecution and resumeExecution. - [operations: machine instance mutations](https://traxsharp.net/docs/sdk-reference/graphql-api/mutations/machine-instances.md): (Reference) Reference for cancelMachineInstance, the operations mutation that cancels a system-owned state machine instance's live train run. - [operations: effect mutations](https://traxsharp.net/docs/sdk-reference/graphql-api/mutations/effects.md): (Reference) Reference for setEffectEnabled and configureEffect, the operations mutations that toggle and configure effects in the API process. - [operations.config mutations](https://traxsharp.net/docs/sdk-reference/graphql-api/mutations/config.md): (Reference) Reference for the operations.config mutation namespace: updateScheduler, setLogLevels, and how saved scheduler settings are stored and applied. - [operations.manifestGroups mutations](https://traxsharp.net/docs/sdk-reference/graphql-api/mutations/manifest-groups.md): (Reference) Reference for the operations.manifestGroups mutation namespace: updateManifestGroup, setManifestGroupsEnabled and setAllManifestGroupsEnabled. - [operations.workQueue mutations](https://traxsharp.net/docs/sdk-reference/graphql-api/mutations/work-queue.md): (Reference) Reference for the operations.workQueue mutation namespace: queueTrain, runTrain, cancelWorkQueueEntry and cancelWorkQueueEntries. - [operations.deadLetters mutations](https://traxsharp.net/docs/sdk-reference/graphql-api/mutations/dead-letters.md): (Reference) Reference for the operations.deadLetters mutation namespace: requeue and acknowledge one, many or all dead letters, and the requeue-all job. - [OperationResponse](https://traxsharp.net/docs/sdk-reference/graphql-api/mutations/operation-response.md): (Reference) Reference for OperationResponse, the result type most operations mutations return: success, count, id and message. - [operations: bulk operations](https://traxsharp.net/docs/sdk-reference/graphql-api/mutations/bulk-operations.md): (Reference) Reference for startBulkOperation, bulkOperations and bulkOperation: one action over every row a list filter matches, run in batches and tracked. - [TraxQuery and TraxMutation](https://traxsharp.net/docs/sdk-reference/graphql-api/trax-graphql-attribute.md): (Reference) Reference for the TraxQuery and TraxMutation attributes that expose a train in the GraphQL schema, with properties, operation modes, naming and namespaces. - [Subscriptions](https://traxsharp.net/docs/sdk-reference/graphql-api/subscriptions.md): (Reference) Reference for Trax GraphQL subscriptions: train lifecycle events, junction events, machine instance changes, onDataChanged, WebSocket and authentication. - [TraxQueryModel](https://traxsharp.net/docs/sdk-reference/graphql-api/query-models.md): (Reference) Reference for TraxQueryModel, which exposes an EF Core entity as a GraphQL query field with paging, filtering, sorting and projection. - [TraxBroadcast](https://traxsharp.net/docs/sdk-reference/graphql-api/trax-broadcast-attribute.md): (Reference) Reference for the TraxBroadcast attribute, which opts a train into GraphQL lifecycle subscription events, locally and through UseBroadcaster. - [ConfigureFiltering](https://traxsharp.net/docs/sdk-reference/graphql-api/configure-filtering.md): (Reference) Reference for ConfigureFiltering and TraxFilterBuilder, which add opt-in filter operators such as case-insensitive string matching on query models. - [Cross-schema data loaders](https://traxsharp.net/docs/sdk-reference/graphql-api/cross-schema-data-loaders.md): (Reference) Reference for CrossSchemaLoader, CrossSchemaEdge and AddCrossSchemaLoader, which batch GraphQL lookups of entities owned by another DbContext into one query. - [AddTraxHealthCheck](https://traxsharp.net/docs/sdk-reference/graphql-api/add-trax-health-check.md): (Reference) Reference for AddTraxHealthCheck, an ASP.NET Core health check reporting queued work, running executions, recent failures and dead letters. - [Error codes](https://traxsharp.net/docs/sdk-reference/graphql-api/error-codes.md): (Reference) Every TRAX_* and PERSISTED_OPERATION_* code the Trax GraphQL endpoint returns in extensions.code, and what raises it. - [Machines root](https://traxsharp.net/docs/sdk-reference/graphql-api/machines.md): (Reference) Reference for the machines GraphQL root: each exposed state machine served as its own typed start, events, discard and get, and its push. - [Run progress](https://traxsharp.net/docs/sdk-reference/graphql-api/run-progress.md): (Reference) Reference for TraxRunProgress and the runProgress query and subscription, which let the caller who started a run follow it step by step. - [Persisted Operations](https://traxsharp.net/docs/sdk-reference/persisted-operations.md): Index of the Trax.Api.GraphQL.PersistedOperations reference: registration, builders, store, service, caching, broadcasting and management fields. - [UsePersistedOperations](https://traxsharp.net/docs/sdk-reference/persisted-operations/use-persisted-operations.md): (Reference) Reference for UsePersistedOperations, which wires persisted-operation storage, enforcement, caching, cross-node invalidation and the management fields. - [PersistedOperationsBuilder](https://traxsharp.net/docs/sdk-reference/persisted-operations/persisted-operations-builder.md): (Reference) Reference for PersistedOperationsBuilder: enforcement, the allowlist, node invalidation, caching, the management gate and machine document retention. - [PersistedOperationsOptions](https://traxsharp.net/docs/sdk-reference/persisted-operations/persisted-operations-options.md): (Reference) Reference for PersistedOperationsOptions, the resolved persisted-operation configuration that PersistedOperationsBuilder produces and registers. - [AddPersistedOperationStore](https://traxsharp.net/docs/sdk-reference/persisted-operations/add-persisted-operation-store.md): (Reference) Reference for AddPersistedOperationStore and PersistedOperationStoreBuilder, which register the persisted-operation store on a host with no GraphQL server. - [Management mutations and queries](https://traxsharp.net/docs/sdk-reference/persisted-operations/management-mutations.md): (Reference) Reference for the persistedOperations GraphQL fields that upload, deactivate, restore and list persisted operations, and the gate in front of them. - [IPersistedOperationsService](https://traxsharp.net/docs/sdk-reference/persisted-operations/i-persisted-operations-service.md): (Reference) Reference for IPersistedOperationsService, the management surface shared by the GraphQL fields and the dashboard, returning refusals as payload errors. - [IPersistedOperationStore](https://traxsharp.net/docs/sdk-reference/persisted-operations/i-persisted-operation-store.md): (Reference) Reference for IPersistedOperationStore, programmatic reads and writes of persisted operations for CI uploaders, admin tooling and tests, and UpsertOptions. - [IPersistedOperationValidator](https://traxsharp.net/docs/sdk-reference/persisted-operations/i-persisted-operation-validator.md): (Reference) Reference for IPersistedOperationValidator and its HotChocolate and no-op implementations, which validate a document before it is stored. - [IPersistedOperationCache](https://traxsharp.net/docs/sdk-reference/persisted-operations/i-persisted-operation-cache.md): (Reference) Reference for IPersistedOperationCache, the optional in-memory lookup cache over the persisted-operation store. - [IPersistedOperationBroadcaster](https://traxsharp.net/docs/sdk-reference/persisted-operations/i-persisted-operation-broadcaster.md): (Reference) Reference for IPersistedOperationBroadcaster, PersistedOperationChangedMessage and PersistedOperationChangeType, which tell other nodes of a change. - [PersistedOperation](https://traxsharp.net/docs/sdk-reference/persisted-operations/persisted-operation.md): (Reference) Reference for PersistedOperation and PersistedOperationHistory, the rows of the trax.persisted_operation tables, with their properties and columns. - [ShapeFingerprintComputer](https://traxsharp.net/docs/sdk-reference/persisted-operations/shape-fingerprint-computer.md): (Reference) Reference for ShapeFingerprintComputer, the response-shape hash the store compares to refuse persisted-operation edits that change a response's shape. - [PersistedOperationException](https://traxsharp.net/docs/sdk-reference/persisted-operations/persisted-operation-exceptions.md): (Reference) Reference for PersistedOperationException and its parse, validation, shape-diff, input and broadcast subclasses, each with a stable error code. - [UsePersistedOperationsEnforcement](https://traxsharp.net/docs/sdk-reference/persisted-operations/use-persisted-operations-enforcement.md): (Reference) Reference for UsePersistedOperationsEnforcement, kept only for compatibility, and where persisted-operation enforcement actually runs and in what order. - [GraphQL Client](https://traxsharp.net/docs/sdk-reference/graphql-client.md): Index of the outbound GraphQL client reference: registration, the builder, request types, the executor, schema providers and startup validation. - [AddTraxGraphQLClient](https://traxsharp.net/docs/sdk-reference/graphql-client/add-trax-graphql-client.md): (Reference) Reference for AddTraxGraphQLClient, which registers a GraphQL client for one endpoint, the services it adds and its defaults. - [AddKeyedTraxGraphQLClient](https://traxsharp.net/docs/sdk-reference/graphql-client/add-keyed-trax-graphql-client.md): (Reference) Reference for AddKeyedTraxGraphQLClient, which registers a GraphQL client under a DI key so clients for several servers live in one container. - [TraxGraphQLClientBuilder](https://traxsharp.net/docs/sdk-reference/graphql-client/trax-graphql-client-builder.md): (Reference) Reference for TraxGraphQLClientBuilder: schema source, response strictness, the HTTP client, JSON options and direct access to the client's options. - [UseAssemblySchema](https://traxsharp.net/docs/sdk-reference/graphql-client/use-assembly-schema.md): (Reference) Reference for UseAssemblySchema, which validates a client's queries against the server's HotChocolate schema built in the calling process. - [UseStartupValidation](https://traxsharp.net/docs/sdk-reference/graphql-client/use-startup-validation.md): (Reference) Reference for UseStartupValidation, a hosted service that validates a client's request types when the host starts and stops it on failure. - [ValidateGraphQLClientAssembliesAsync](https://traxsharp.net/docs/sdk-reference/graphql-client/validate-graphql-client-assemblies.md): (Reference) Reference for ValidateGraphQLClientAssembliesAsync, which checks every request type a client owns against its schema after the app is built. - [IGraphQLClientRequest](https://traxsharp.net/docs/sdk-reference/graphql-client/i-graphql-client-request.md): (Reference) Reference for IGraphQLClientRequest and IGenericGraphQLClientRequest, an outbound GraphQL request typed by its response, and their default members. - [GraphQLResourceRequest](https://traxsharp.net/docs/sdk-reference/graphql-client/graphql-resource-request.md): (Reference) Reference for GraphQLResourceRequest, the base class for a request whose query lives in an embedded .graphql file, and how the resource is found. - [TypedRequest](https://traxsharp.net/docs/sdk-reference/graphql-client/typed-request.md): (Reference) Reference for TypedRequest and the GraphQLOperation, GraphQLType, GraphQLArgument and GraphQLField attributes that generate a query from C# types. - [IGraphQLClientExecutor](https://traxsharp.net/docs/sdk-reference/graphql-client/i-graphql-client-executor.md): (Reference) Reference for IGraphQLClientExecutor and GraphQLClientExecutor: how Run validates, sends and reads a request, and what it throws. - [IGraphQLClientValidator](https://traxsharp.net/docs/sdk-reference/graphql-client/i-graphql-client-validator.md): (Reference) Reference for IGraphQLClientValidator, which validates an outbound query against the client's schema, and the ValidateAssembliesAsync extension. - [ISchemaProvider](https://traxsharp.net/docs/sdk-reference/graphql-client/i-schema-provider.md): (Reference) Reference for ISchemaProvider and its implementations: IntrospectingSchemaProvider, FileSchemaProvider and AssemblySchemaProvider. - [IGraphQLClientConfiguration](https://traxsharp.net/docs/sdk-reference/graphql-client/graphql-client-configuration.md): (Reference) Reference for IGraphQLClientConfiguration, the settings a GraphQL client runs with, and GraphQLClientConfigurationBuilder, the options it is built from. - [GraphQLClientAttribute](https://traxsharp.net/docs/sdk-reference/graphql-client/graphql-client-attribute.md): (Reference) Reference for GraphQLClientAttribute, which marks the keyed GraphQL client a request type belongs to for validation. - [ResponseStrictness](https://traxsharp.net/docs/sdk-reference/graphql-client/response-strictness.md): (Reference) Reference for ResponseStrictness, which decides how the client treats response fields that differ from the response type's properties. - [Client exceptions](https://traxsharp.net/docs/sdk-reference/graphql-client/graphql-client-exceptions.md): (Reference) Reference for the exceptions the Trax GraphQL client throws: execution, validation, response shape and schema introspection failures. - [TraxOutboundQueryAttribute](https://traxsharp.net/docs/sdk-reference/graphql-client/trax-outbound-query-attribute.md): (Reference) Reference for TraxOutboundQueryAttribute, which names the external endpoint a request calls, and OutboundQueryDiscovery, which lists the marked requests. - [State Machine API](https://traxsharp.net/docs/sdk-reference/statemachine-api.md): Index of the State Machine API reference: registration, authoring, the declarative data model, IR format, effects, migrations, persistence and result codes. - [AddStateMachines](https://traxsharp.net/docs/sdk-reference/statemachine-api/add-state-machines.md): (Reference) Reference for AddStateMachines, which discovers every Machine in the given assemblies and registers the snapshot store, effect claims and mutation trains. - [Machine](https://traxsharp.net/docs/sdk-reference/statemachine-api/machine.md): (Reference) Reference for Machine and its builders: IMachineBuilder, IStateBuilder, IInvokeBuilder, ITransitionBuilder, rules and IR export. - [Rules](https://traxsharp.net/docs/sdk-reference/statemachine-api/rules.md): (Reference) Reference for the Rules vocabulary: field selectors, guard predicates, combinators and reductions that author declarative state machine logic as data. - [Declarative data model](https://traxsharp.net/docs/sdk-reference/statemachine-api/declarative-data-model.md): (Reference) Reference for the data types behind declarative state machines: Rule, Reduction, SetStep, ValueSource, the context schema and DeclarativeModel. - [IR format](https://traxsharp.net/docs/sdk-reference/statemachine-api/ir-format.md): (Reference) Reference for the state machine IR, the canonical JSON that IrExporter.Export writes from a declarative machine: top-level fields, transitions and an example. - [Migrations](https://traxsharp.net/docs/sdk-reference/statemachine-api/migrations.md): (Reference) Reference for MigrateFrom, which registers a forward migration so an older stored state machine draft is upgraded on rehydrate instead of rejected. - [ISnapshotEffect](https://traxsharp.net/docs/sdk-reference/statemachine-api/i-snapshot-effect.md): (Reference) Reference for ISnapshotEffect, the side effect a state machine transition runs exactly once, and the receipt it records on the draft. - [Persistence ports](https://traxsharp.net/docs/sdk-reference/statemachine-api/persistence-ports.md): (Reference) Reference for the state machine persistence ports: ISnapshotPrincipal, ISnapshotStore, StoredSnapshot, ISnapshotDraftService, the claim store, EF stores. - [Result codes](https://traxsharp.net/docs/sdk-reference/statemachine-api/result-codes.md): (Reference) Every refusal code a machine advance, rehydrate or snapshot mutation can return, as RefusalCode members, and the order refusals are checked in. - [Runtime integrity](https://traxsharp.net/docs/sdk-reference/statemachine-api/runtime-integrity.md): (Reference) Reference for the runtime checks that catch drift between a C# machine and its TypeScript twin: schema-hash handshake, divergence detection and self-check. - [InvokedRun](https://traxsharp.net/docs/sdk-reference/statemachine-api/invoked-run.md): (Reference) Reference for InvokedRun, which a junction of a train a machine invokes injects to learn the instance that queued the run and the user who owns it. - [AddTraxStateMachineSelfCheck](https://traxsharp.net/docs/sdk-reference/statemachine-api/add-trax-state-machine-self-check.md): (Reference) Reference for AddTraxStateMachineSelfCheck, a health check that replays each machine's committed differential corpus against the deployed engine. - [IMachineInstances](https://traxsharp.net/docs/sdk-reference/statemachine-api/machine-instances.md): (Reference) Reference for IMachineInstances, which creates and advances system-owned machine instances from code, and for how their ids are derived from a MachineKey. - [TypeScript package](https://traxsharp.net/docs/sdk-reference/statemachine-api/typescript-package.md): (Reference) Reference for @traxsharp/state-machine: the engine twin, the typed view, the React hooks, the server clients and the rule interpreter, by entry point. - [MachineConformance](https://traxsharp.net/docs/sdk-reference/statemachine-api/machine-conformance.md): (Reference) Reference for MachineConformance and DifferentialCorpus, the test helpers that check a machine against its committed IR and its differential corpus. - [Client manifest](https://traxsharp.net/docs/sdk-reference/statemachine-api/client-manifest.md): (Reference) Reference for the client manifest a host exports for trax client: RunTraxAsync, --trax-export-client, ClientManifest and its startup checks. - [Testing](https://traxsharp.net/docs/sdk-reference/testing.md): Index of the test-support packages Trax ships for your own test projects: the architecture guards, database invariants and machine conformance checks. - [Trax.Core.Testing](https://traxsharp.net/docs/sdk-reference/testing/core-testing.md): (Reference) Reference for Trax.Core.Testing, the base architecture-guard package: ArchitectureGuardOptions, GuardResult, file helpers and the hygiene and convention guards. - [Trax.Effect.Data.Testing](https://traxsharp.net/docs/sdk-reference/testing/effect-data-testing.md): (Reference) Reference for Trax.Effect.Data.Testing: the data-layer guards and their NUnit fixture, the owner-scope census options, and the TraxInvariants database checks. - [Trax.Mediator.Testing](https://traxsharp.net/docs/sdk-reference/testing/mediator-testing.md): (Reference) Reference for Trax.Mediator.Testing: the train guard that requires every train to have its own train interface, as a checker and as an NUnit fixture. - [Trax.Api.GraphQL.Testing](https://traxsharp.net/docs/sdk-reference/testing/graphql-testing.md): (Reference) Reference for Trax.Api.GraphQL.Testing: the cross-schema GraphQL guards, which check the edge manifest, batched loaders and declared parent reads. - [Trax.StateMachine.Testing](https://traxsharp.net/docs/sdk-reference/testing/effect-statemachine-testing.md): (Reference) Reference for Trax.StateMachine.Testing: MachineConformance, which checks a machine against its committed IR and corpus, and DifferentialCorpus replay. ## Samples - [Samples](https://traxsharp.net/docs/samples.md): The book first, then the samples worth reading on their own: the ones you can watch run and the shapes the book does not build, with what they need to run. - [Chat Service](https://traxsharp.net/docs/samples/chat-service.md): (Explanation) The ChatService sample: a custom GraphQL subscription fed by a lifecycle hook, socket authentication, per-subscriber checks and caller identity. - [Recovery](https://traxsharp.net/docs/samples/recovery.md): (Explanation) The Recovery sample: a crashed run resumes without asking its model twice, a topic map runs signals in parallel, and state machines run trains. - [Recovery state machines](https://traxsharp.net/docs/samples/recovery/state-machines.md): (Explanation) The three state machines in the Recovery sample that run trains: index partitions, the topic map wizard and the food order. - [How the Recovery page works](https://traxsharp.net/docs/samples/recovery/the-page.md): (Explanation) What the Recovery sample's React page reads from the host over GraphQL and how it draws the Food order and Workflows views. - [Recovery tests](https://traxsharp.net/docs/samples/recovery/tests.md): (Explanation) What the Recovery sample's E2E and browser test suites prove, test by test, and what each suite needs to run. - [Bookworm](https://traxsharp.net/docs/samples/bookworm.md): (Explanation) The Bookworm sample: two domain contexts, a batched cross-schema GraphQL edge, owner-scoped rows, and the architecture guards adopted by a consumer. - [GraphQL Client](https://traxsharp.net/docs/samples/graphql-client.md): (Explanation) The GraphQLClient sample: Trax servers called through keyed Trax GraphQL clients, schema validation before any request, and the three query modes. - [Persisted Operations](https://traxsharp.net/docs/samples/persisted-operations.md): (Explanation) The PersistedOperations sample: an app calls by id, an operator changes the answer without a new app, and a breaking fix is refused. - [Content Shield](https://traxsharp.net/docs/samples/content-shield.md): (Explanation) The ContentShield sample: an API that executes nothing, an AWS Lambda style runner signed with a shared key, and how to test the runner without AWS. - [SignalR Broadcaster](https://traxsharp.net/docs/samples/signalr-broadcaster.md): (Explanation) The SignalRBroadcaster sample: live train events in a browser through the SignalR sink, a hub only signed-in operators may join, and a projected failure reason. ## Contributing - [Repository layout](https://traxsharp.net/docs/contributing/repository-layout.md): (Reference) Where things live in the Trax repository: data models and their persistent pairs, migrations, builders, sample applications and tests. - [API conventions](https://traxsharp.net/docs/contributing/api-conventions.md): (Reference) Conventions for Trax's public API: the builder pattern and state markers, Add and Use extension naming, and reading the service collection safely. - [Test Conventions](https://traxsharp.net/docs/contributing/test-conventions.md): (Reference) Trax test conventions: layout, fixtures, naming, assertions, determinism, skipping, red tests, dashboard and Postgres query tests, and the IDE extensions. - [Write a migration](https://traxsharp.net/docs/contributing/writing-migrations.md): (How-to guide) How to write a migration for Trax's own tables: embedded SQL scripts that rerun safely, Postgres and SQLite dialects, feature packages and test databases. - [Cut a release](https://traxsharp.net/docs/contributing/releases.md): (How-to guide) How Trax releases with semantic-release: commit types and the bump each cuts, running the release workflow by hand, the one shared version and unreleased work. - [Writing docs](https://traxsharp.net/docs/contributing/writing-docs.md): (Reference) The conventions for Trax docs pages and the tests that check them: front matter, page types, code fence markers, SDK reference pages, links and redirects. ## Full text - [Overview](https://traxsharp.net/llms-full/overview.txt): Home through Quick start (2 pages, 24 KB) - [Tutorials (part 1 of 8)](https://traxsharp.net/llms-full/tutorials-1.txt): The Trax book through 3.5 Read the runs back (25 pages, 89 KB) - [Tutorials (part 2 of 8)](https://traxsharp.net/llms-full/tutorials-2.txt): 3.6 Test it through 5.6 Read the decisions (18 pages, 86 KB) - [Tutorials (part 3 of 8)](https://traxsharp.net/llms-full/tutorials-3.txt): 5.7 Test it through 7.4 Serve the schema (16 pages, 88 KB) - [Tutorials (part 4 of 8)](https://traxsharp.net/llms-full/tutorials-4.txt): 7.5 Ask it through 11.1 One library, two processes (28 pages, 90 KB) - [Tutorials (part 5 of 8)](https://traxsharp.net/llms-full/tutorials-5.txt): 11.2 The projects through 13.1 The flow from Placing (20 pages, 84 KB) - [Tutorials (part 6 of 8)](https://traxsharp.net/llms-full/tutorials-6.txt): 13.2 What an invoked run is through 15.3 The documents (17 pages, 84 KB) - [Tutorials (part 7 of 8)](https://traxsharp.net/llms-full/tutorials-7.txt): 15.4 The hub serves the storefront through 18.4 The worker (22 pages, 90 KB) - [Tutorials (part 8 of 8)](https://traxsharp.net/llms-full/tutorials-8.txt): 18.5 The tests migrate too through 18.10 Before it takes real orders (6 pages, 18 KB) - [How-to guides (part 1 of 5)](https://traxsharp.net/llms-full/how-to-guides-1.txt): Handle errors in trains through Move a domain data context to EF migrations (18 pages, 87 KB) - [How-to guides (part 2 of 5)](https://traxsharp.net/llms-full/how-to-guides-2.txt): Scope a data context to the caller through Run trains on SQS workers (16 pages, 86 KB) - [How-to guides (part 3 of 5)](https://traxsharp.net/llms-full/how-to-guides-3.txt): Call another GraphQL server through Author and serve a machine (14 pages, 87 KB) - [How-to guides (part 4 of 5)](https://traxsharp.net/llms-full/how-to-guides-4.txt): Write guards and reducers as data through Switch a template to Postgres (15 pages, 89 KB) - [How-to guides (part 5 of 5)](https://traxsharp.net/llms-full/how-to-guides-5.txt): Prepare a template for deployment through Migrate from Hangfire (14 pages, 78 KB) - [Explanation (part 1 of 5)](https://traxsharp.net/llms-full/explanation-1.txt): How these docs are organised through How a chain runs (10 pages, 72 KB) - [Explanation (part 2 of 5)](https://traxsharp.net/llms-full/explanation-2.txt): Decisions through Scheduling (13 pages, 83 KB) - [Explanation (part 3 of 5)](https://traxsharp.net/llms-full/explanation-3.txt): Deployment topologies through How the scheduler decides when a manifest runs (7 pages, 86 KB) - [Explanation (part 4 of 5)](https://traxsharp.net/llms-full/explanation-4.txt): Orphan Manifest Cleanup through Where Trax checks authorization (10 pages, 87 KB) - [Explanation (part 5 of 5)](https://traxsharp.net/llms-full/explanation-5.txt): Supply Chain Security through Architecture Guards (8 pages, 60 KB) - [Reference (part 1 of 6)](https://traxsharp.net/llms-full/reference-1.txt): Reference through Decision replay and state hash rules (8 pages, 86 KB) - [Reference (part 2 of 6)](https://traxsharp.net/llms-full/reference-2.txt): Startup chain check through Decision records (9 pages, 87 KB) - [Reference (part 3 of 6)](https://traxsharp.net/llms-full/reference-3.txt): Data Persistence through Dispatch limits (7 pages, 87 KB) - [Reference (part 4 of 6)](https://traxsharp.net/llms-full/reference-4.txt): Exclusion Windows through Typed requests (10 pages, 79 KB) - [Reference (part 5 of 6)](https://traxsharp.net/llms-full/reference-5.txt): Authorization rules through A run (11 pages, 89 KB) - [Reference (part 6 of 6)](https://traxsharp.net/llms-full/reference-6.txt): Trains through IDE extensions (12 pages, 82 KB) - [SDK Reference (part 1 of 20)](https://traxsharp.net/llms-full/sdk-reference-1.txt): SDK Reference through Train Methods (20 pages, 86 KB) - [SDK Reference (part 2 of 20)](https://traxsharp.net/llms-full/sdk-reference-2.txt): Junctions through Configuration (18 pages, 88 KB) - [SDK Reference (part 3 of 20)](https://traxsharp.net/llms-full/sdk-reference-3.txt): AddTrax through AddJunctionEvents (17 pages, 90 KB) - [SDK Reference (part 4 of 20)](https://traxsharp.net/llms-full/sdk-reference-4.txt): AddNimbleDecider through UseRabbitMq (13 pages, 80 KB) - [SDK Reference (part 5 of 20)](https://traxsharp.net/llms-full/sdk-reference-5.txt): UseSignalRHub through Schedule / ScheduleAsync (8 pages, 81 KB) - [SDK Reference (part 6 of 20)](https://traxsharp.net/llms-full/sdk-reference-6.txt): ScheduleMany / ScheduleManyAsync through AddTraxJobRunner (8 pages, 85 KB) - [SDK Reference (part 7 of 20)](https://traxsharp.net/llms-full/sdk-reference-7.txt): UseSqsWorkers through IWorkQueuePromotion (7 pages, 41 KB) - [SDK Reference (part 8 of 20)](https://traxsharp.net/llms-full/sdk-reference-8.txt): IOperationsService through Mediator API (6 pages, 90 KB) - [SDK Reference (part 9 of 20)](https://traxsharp.net/llms-full/sdk-reference-9.txt): ITrainBus through API Dashboard (14 pages, 84 KB) - [SDK Reference (part 10 of 20)](https://traxsharp.net/llms-full/sdk-reference-10.txt): UseTraxApiDashboard through OidcDefaults (17 pages, 89 KB) - [SDK Reference (part 11 of 20)](https://traxsharp.net/llms-full/sdk-reference-11.txt): TraxAuthClaimTypes through discover queries (17 pages, 89 KB) - [SDK Reference (part 12 of 20)](https://traxsharp.net/llms-full/sdk-reference-12.txt): operations: system queries through operations.config queries (6 pages, 84 KB) - [SDK Reference (part 13 of 20)](https://traxsharp.net/llms-full/sdk-reference-13.txt): operations.metrics queries through operations: effect mutations (11 pages, 86 KB) - [SDK Reference (part 14 of 20)](https://traxsharp.net/llms-full/sdk-reference-14.txt): operations.config mutations through Subscriptions (8 pages, 82 KB) - [SDK Reference (part 15 of 20)](https://traxsharp.net/llms-full/sdk-reference-15.txt): TraxQueryModel through Persisted Operations (9 pages, 86 KB) - [SDK Reference (part 16 of 20)](https://traxsharp.net/llms-full/sdk-reference-16.txt): UsePersistedOperations through AddKeyedTraxGraphQLClient (17 pages, 83 KB) - [SDK Reference (part 17 of 20)](https://traxsharp.net/llms-full/sdk-reference-17.txt): TraxGraphQLClientBuilder through AddStateMachines (17 pages, 82 KB) - [SDK Reference (part 18 of 20)](https://traxsharp.net/llms-full/sdk-reference-18.txt): Machine through ISnapshotEffect (6 pages, 73 KB) - [SDK Reference (part 19 of 20)](https://traxsharp.net/llms-full/sdk-reference-19.txt): Persistence ports through TypeScript package (7 pages, 88 KB) - [SDK Reference (part 20 of 20)](https://traxsharp.net/llms-full/sdk-reference-20.txt): MachineConformance through Trax.StateMachine.Testing (8 pages, 47 KB) - [Samples (part 1 of 2)](https://traxsharp.net/llms-full/samples-1.txt): Samples through How the Recovery page works (5 pages, 87 KB) - [Samples (part 2 of 2)](https://traxsharp.net/llms-full/samples-2.txt): Recovery tests through SignalR Broadcaster (6 pages, 78 KB) - [Contributing](https://traxsharp.net/llms-full/contributing.txt): Repository layout through Writing docs (6 pages, 63 KB)