Every scripted run across the seat backends: scenario specs (the published JSON shape), live status (read off the process table just now), and each scenario's most recent recorded run. Task KATRUN-INDEX1 · spec reference: the scenario shape below and each row's spec link (secret-smelling values redacted). Back to QA home.
| backend | testId | name | net | game | mode | cadence | status | last recorded run | spec |
|---|---|---|---|---|---|---|---|---|---|
| main | brl-usd-delete-repost |
KBRL/USDC — delete resting order then rematch | mainnet | (fresh) |
orderBook | one-shot | not running | no record | view |
| main | brl-usd-partial-fills |
BRL/USD partial fills across multiple takers | mainnet | (fresh) |
orderBook | one-shot | not running | no record | view |
| main | brl-usd-simple-1-1-testnet |
KBRL/KUSD simple 1-1 buy sell match (testnet) | testnet | (fresh) |
orderBook | one-shot | not running | no record | view |
| main | kqa-e2e-brlusd |
KQA continuous e2e — KBRL/KUSD 1-1 match on bravo testnet | testnet | kqa-e2e-1 |
orderBook | every 120s | not running | no record | view |
| main | kqa-zombie-canary |
ZOMBIE-MATCH1 canary — unregistered account must never fill | testnet | kqa-zombie-1 |
orderBook | every 600s | not running | no record | view |
| backend | loop | game | status | watch |
|---|---|---|---|---|
| main | 📺 two-party demo (chicken⇄ℏ replay) board-demo-loop.js | t-kat-demo |
not running | board |
| main | 📺 three-way swap demo trio-demo-loop.js | t-trio |
not running | board |
| main | 🎁 triangle rewards (reward bot) treats-demo-loop.js | t-treats |
not running | board |
| main | 🎁 first swap (reward bot) treats-duo-loop.js | t-duo |
not running | board |
This is the JSON contract a run is scripted in — the thing we'd publish for
community-authored runs. Canonical reference: kbot/katrun/README.md in the backend repo
(git-tracked, so the spec's history rides the same audit trail as the code).
{
"testId": "my-scenario", // trace tag — lands in order memos and the run record name
"name": "human label",
"network": "testnet",
"gameId": "KQA1", // fixed game, or blank = fresh isolated game per run
"tradingMode": "orderBook",
"settleMs": 4000, // wait after the last step before recording the outcome
"loopEveryMs": 120000, // 0 = one-shot; >0 = continuous, fresh state each loop
"assets": { "KUSD": { "id": "0.0.2341021", "decimals": 6 } },
"defaults": { "minFill": {"numerator":1,"denominator":200000}, "timeInForce": "GTC" },
"actors": { "alice": { "accountId": "0.0.4271", "name": "🧪 alice" } },
"steps": [ // the script — each step at its offset
{ "waitMs": 500, "action": "deleteOrders" },
{ "waitMs": 1000, "actor": "alice", "action": "order",
"offer": { "asset": "KUSD", "amount": 1000000 },
"request": { "asset": "KBRL", "amount": 5000000 } }
],
"expect": { "txCount": 1, "fillCount": 1 } // the verdict — checked per run, lands in kflow
}
Audit note: scenario specs and the runner are git-tracked in each backend checkout — their history is inside the commit trail Audrey Hashmore already freezes daily. Run OUTPUT records and this page's live-status reads are ephemeral by design; if/when this index is published externally (alpha release), the published copy should be generated + hashed into Audrey's batch like the other published surfaces, not served live.