{
  "generatedAt": "2026-08-17T05:45:15.741Z",
  "chain": {
    "ok": true,
    "rpcUrl": "https://base-sepolia.g.alchemy.com/v2/<redacted>",
    "chainId": 84532,
    "blockNumber": 45588613,
    "latestBlockTimestamp": 1786945514,
    "latestBlockTime": "2026-08-17T05:45:14.000Z",
    "clockSource": "block.timestamp",
    "clockTrusted": true,
    "readiness": {
      "rpc": {
        "ok": true,
        "chainId": 84532,
        "blockNumber": 45588613
      },
      "deployment": {
        "ok": true,
        "file": "/app/run/deployment.json",
        "expectedChainId": 84532
      },
      "contracts": [
        {
          "name": "BotRegistry",
          "address": "0x2368BEfaBF70865ab228Ab7C5D3A80aF088f8698",
          "deploymentEpoch": "base-sepolia",
          "ok": true,
          "error": null
        },
        {
          "name": "MockERC20",
          "address": "0x2271f56e65ef0977c6E1a71D49e81A9ebf8FB982",
          "deploymentEpoch": "base-sepolia",
          "ok": true,
          "error": null
        },
        {
          "name": "BetFactory",
          "address": "0x0673c361951FFEf1595a6560d59Ad1b70bb64f8D",
          "deploymentEpoch": "base-sepolia",
          "ok": true
        }
      ],
      "walletApis": {
        "bettor-forecast-03": {
          "ok": true,
          "status": "online",
          "readiness": {
            "ready": true,
            "botName": "bettor-forecast-03",
            "wallet": "0x62cF8E1e9df9D557caaAa42e002662425e6c8c9D",
            "chainId": 84532,
            "deploymentChainId": 84532,
            "deploymentEpoch": "base-sepolia",
            "blockNumber": 45588613,
            "chainTime": {
              "source": "block.timestamp",
              "trusted": true,
              "latestBlockTimestamp": 1786945514,
              "latestBlockTime": "2026-08-17T05:45:14.000Z"
            },
            "expectedWallet": "0x62cF8E1e9df9D557caaAa42e002662425e6c8c9D",
            "registered": true,
            "operatorId": "0x4fb363619e18196777d4eff0eee60373fedd1f104d1ab7459d8db5f6de3a5df2",
            "contracts": [
              {
                "name": "BotRegistry",
                "address": "0x2368BEfaBF70865ab228Ab7C5D3A80aF088f8698",
                "codePresent": true
              },
              {
                "name": "MockERC20",
                "address": "0x2271f56e65ef0977c6E1a71D49e81A9ebf8FB982",
                "codePresent": true
              },
              {
                "name": "BetFactory",
                "address": "0x0673c361951FFEf1595a6560d59Ad1b70bb64f8D",
                "codePresent": true
              },
              {
                "name": "MultiBettorMarketFactory",
                "address": "0xf82FE9c9f4113dA9F3eab62bc73c0e1801c7E1F3",
                "codePresent": true
              }
            ]
          },
          "errors": []
        },
        "bettor-forecast-02": {
          "ok": true,
          "status": "online",
          "readiness": {
            "ready": true,
            "botName": "bettor-forecast-02",
            "wallet": "0xC90ac2d72Dd8941C46239a832382764F473F0191",
            "chainId": 84532,
            "deploymentChainId": 84532,
            "deploymentEpoch": "base-sepolia",
            "blockNumber": 45588613,
            "chainTime": {
              "source": "block.timestamp",
              "trusted": true,
              "latestBlockTimestamp": 1786945514,
              "latestBlockTime": "2026-08-17T05:45:14.000Z"
            },
            "expectedWallet": "0xC90ac2d72Dd8941C46239a832382764F473F0191",
            "registered": true,
            "operatorId": "0xf58b3f62c30871d19624657c724ee82aaddb15ea7c32f0299f36dc40616b0aef",
            "contracts": [
              {
                "name": "BotRegistry",
                "address": "0x2368BEfaBF70865ab228Ab7C5D3A80aF088f8698",
                "codePresent": true
              },
              {
                "name": "MockERC20",
                "address": "0x2271f56e65ef0977c6E1a71D49e81A9ebf8FB982",
                "codePresent": true
              },
              {
                "name": "BetFactory",
                "address": "0x0673c361951FFEf1595a6560d59Ad1b70bb64f8D",
                "codePresent": true
              },
              {
                "name": "MultiBettorMarketFactory",
                "address": "0xf82FE9c9f4113dA9F3eab62bc73c0e1801c7E1F3",
                "codePresent": true
              }
            ]
          },
          "errors": []
        },
        "bettor-forecast-01": {
          "ok": true,
          "status": "online",
          "readiness": {
            "ready": true,
            "botName": "bettor-forecast-01",
            "wallet": "0x594c258e50F97d2D7a04C4dABe9c7b092299bc45",
            "chainId": 84532,
            "deploymentChainId": 84532,
            "deploymentEpoch": "base-sepolia",
            "blockNumber": 45588613,
            "chainTime": {
              "source": "block.timestamp",
              "trusted": true,
              "latestBlockTimestamp": 1786945514,
              "latestBlockTime": "2026-08-17T05:45:14.000Z"
            },
            "expectedWallet": "0x594c258e50F97d2D7a04C4dABe9c7b092299bc45",
            "registered": true,
            "operatorId": "0xf735e1455d3d70c81476d56f545b90cefaae354c636ae78b98961f56c3568aa7",
            "contracts": [
              {
                "name": "BotRegistry",
                "address": "0x2368BEfaBF70865ab228Ab7C5D3A80aF088f8698",
                "codePresent": true
              },
              {
                "name": "MockERC20",
                "address": "0x2271f56e65ef0977c6E1a71D49e81A9ebf8FB982",
                "codePresent": true
              },
              {
                "name": "BetFactory",
                "address": "0x0673c361951FFEf1595a6560d59Ad1b70bb64f8D",
                "codePresent": true
              },
              {
                "name": "MultiBettorMarketFactory",
                "address": "0xf82FE9c9f4113dA9F3eab62bc73c0e1801c7E1F3",
                "codePresent": true
              }
            ]
          },
          "errors": []
        }
      }
    },
    "deployments": [
      {
        "deployedAt": "2026-08-16T16:06:08.112Z",
        "deploymentEpoch": "base-sepolia",
        "betFactory": "0x0673c361951FFEf1595a6560d59Ad1b70bb64f8D",
        "multiBettorMarketFactory": "0xf82FE9c9f4113dA9F3eab62bc73c0e1801c7E1F3",
        "collateral": "0x2271f56e65ef0977c6E1a71D49e81A9ebf8FB982",
        "current": true,
        "protocolFees": {
          "model": "fixed",
          "fundingFee": "0.1",
          "payoutFee": "0.25",
          "token": "bUSDC",
          "feeRecipient": "0x38Db71002E2F37B04e0A8A1500002dE479728154"
        }
      }
    ],
    "marketReadPath": "indexer-snapshot",
    "indexer": {
      "available": true,
      "generatedAt": "2026-08-16T16:16:01.657Z",
      "chainId": 84532,
      "checkpointBlock": 45564336,
      "currentSeason": "2026-08"
    },
    "betCount": 0,
    "marketCount": 1,
    "factoryCount": 1,
    "knownDeploymentCount": 1,
    "nodeEconomics": {
      "treasuryBalance": "0.2",
      "lastDistributionAt": 0,
      "totalDistributed": "0.0",
      "nodeOperators": [
        {
          "address": "0x9249f2a3880e204797133e7775B9BC178C04E622",
          "registered": true,
          "active": true,
          "golden": true,
          "rewardWeight": "10",
          "uptimePoints": "0",
          "metadataURI": "truth-swarm://node/Mac%20Mini",
          "rewardShare": "0"
        }
      ]
    }
  },
  "deployment": {
    "chainId": 84532,
    "networkName": "baseSepolia",
    "rpcUrl": "https://base-sepolia.g.alchemy.com/v2/alch_44qiQZWg3qAbxCcDXja-Z",
    "owner": "0x9249f2a3880e204797133e7775B9BC178C04E622",
    "bots": {
      "bettor-forecast-01": {
        "address": "0x594c258e50F97d2D7a04C4dABe9c7b092299bc45",
        "displayName": "Forecast Bot 01",
        "operatorId": "0xf735e1455d3d70c81476d56f545b90cefaae354c636ae78b98961f56c3568aa7",
        "metadataURI": "truth-swarm://bettor/Forecast%20Bot%2001"
      },
      "bettor-forecast-02": {
        "address": "0xC90ac2d72Dd8941C46239a832382764F473F0191",
        "displayName": "Forecast Bot 02",
        "operatorId": "0xf58b3f62c30871d19624657c724ee82aaddb15ea7c32f0299f36dc40616b0aef",
        "metadataURI": "truth-swarm://bettor/Forecast%20Bot%2002"
      },
      "bettor-forecast-03": {
        "address": "0x62cF8E1e9df9D557caaAa42e002662425e6c8c9D",
        "displayName": "Forecast Bot 03",
        "operatorId": "0x4fb363619e18196777d4eff0eee60373fedd1f104d1ab7459d8db5f6de3a5df2",
        "metadataURI": "truth-swarm://bettor/Forecast%20Bot%2003"
      }
    },
    "systemActors": {},
    "registry": "0x2368BEfaBF70865ab228Ab7C5D3A80aF088f8698",
    "collateral": "0x2271f56e65ef0977c6E1a71D49e81A9ebf8FB982",
    "oracle": "0x31Bb6c8e43D57747De7F3f69cbAc1eE0bf24Af80",
    "nodeRegistry": "0xC30280519B15cF62980cc1B27623a4d257a059FE",
    "nodeRewardsTreasury": "0x38Db71002E2F37B04e0A8A1500002dE479728154",
    "protocolFees": {
      "model": "fixed",
      "fundingFee": "0.1",
      "payoutFee": "0.25",
      "token": "bUSDC",
      "feeRecipient": "0x38Db71002E2F37B04e0A8A1500002dE479728154"
    },
    "nodeOperators": {
      "macMini": {
        "address": "0x9249f2a3880e204797133e7775B9BC178C04E622",
        "displayName": "Mac Mini",
        "metadataURI": "truth-swarm://node/Mac%20Mini",
        "rewardWeight": "10",
        "golden": true
      }
    },
    "betFactory": "0x0673c361951FFEf1595a6560d59Ad1b70bb64f8D",
    "multiBettorMarketFactory": "0xf82FE9c9f4113dA9F3eab62bc73c0e1801c7E1F3",
    "keepAliveFaucet": "0x2136e61078b6B1C5F716FD3b296239fA37B10418",
    "keepAlive": {
      "floor": "500.0",
      "cooldownSeconds": 86400
    },
    "creditSymbol": "bUSDC",
    "creditDecimals": 6,
    "startingCredit": "10000.0",
    "gasTopUpEth": "0.0",
    "deploymentEpoch": "base-sepolia",
    "deployedAt": "2026-08-16T16:06:08.112Z"
  },
  "bots": [
    {
      "name": "bettor-forecast-01",
      "displayName": "Forecast Bot 01",
      "address": "0x594c258e50F97d2D7a04C4dABe9c7b092299bc45",
      "operatorId": "0xf735e1455d3d70c81476d56f545b90cefaae354c636ae78b98961f56c3568aa7",
      "metadataURI": "truth-swarm://bettor/Forecast%20Bot%2001",
      "creditBalance": "10000.0",
      "belowKeepAliveFloor": false,
      "gasBalance": "0.002362398925001179",
      "container": "truth-bot-bettor-forecast-01-base-sepolia",
      "telegram": null,
      "openclawAgent": null,
      "walletApi": "http://truth-bot-bettor-forecast-01-base-sepolia:8790",
      "publicWalletApi": "http://209.97.155.10:8891",
      "betsEndpoint": "http://209.97.155.10:8891/bets",
      "status": "online",
      "walletApiError": null,
      "record": {
        "wins": 0,
        "losses": 0,
        "open": 0,
        "exposure": 0
      }
    },
    {
      "name": "bettor-forecast-02",
      "displayName": "Forecast Bot 02",
      "address": "0xC90ac2d72Dd8941C46239a832382764F473F0191",
      "operatorId": "0xf58b3f62c30871d19624657c724ee82aaddb15ea7c32f0299f36dc40616b0aef",
      "metadataURI": "truth-swarm://bettor/Forecast%20Bot%2002",
      "creditBalance": "9998.9",
      "belowKeepAliveFloor": false,
      "gasBalance": "0.002517855561558574",
      "container": "truth-bot-bettor-forecast-02-base-sepolia",
      "telegram": null,
      "openclawAgent": null,
      "walletApi": "http://truth-bot-bettor-forecast-02-base-sepolia:8790",
      "publicWalletApi": "http://209.97.155.10:8892",
      "betsEndpoint": "http://209.97.155.10:8892/bets",
      "status": "online",
      "walletApiError": null,
      "record": {
        "wins": 0,
        "losses": 0,
        "open": 1,
        "exposure": 1
      }
    },
    {
      "name": "bettor-forecast-03",
      "displayName": "Forecast Bot 03",
      "address": "0x62cF8E1e9df9D557caaAa42e002662425e6c8c9D",
      "operatorId": "0x4fb363619e18196777d4eff0eee60373fedd1f104d1ab7459d8db5f6de3a5df2",
      "metadataURI": "truth-swarm://bettor/Forecast%20Bot%2003",
      "creditBalance": "9998.9",
      "belowKeepAliveFloor": false,
      "gasBalance": "0.001215944963478575",
      "container": "truth-bot-bettor-forecast-03-base-sepolia",
      "telegram": null,
      "openclawAgent": null,
      "walletApi": "http://truth-bot-bettor-forecast-03-base-sepolia:8790",
      "publicWalletApi": "http://209.97.155.10:8893",
      "betsEndpoint": "http://209.97.155.10:8893/bets",
      "status": "online",
      "walletApiError": null,
      "record": {
        "wins": 0,
        "losses": 0,
        "open": 1,
        "exposure": 1
      }
    }
  ],
  "bets": [],
  "markets": [
    {
      "index": 0,
      "address": "0xa53FC2082c90499031604Cf7A5Bc38a1F03a3C02",
      "marketId": "0x2b5a7795e2e47e19f7d8a6c23bd625d9050a252dba7dda9c81ed14a831c06f64",
      "question": "Staging smoke: will this controlled two-bot market be funded on Base Sepolia?",
      "rules": "",
      "rulesHash": null,
      "creator": "0x594c258e50F97d2D7a04C4dABe9c7b092299bc45",
      "stakePerBettor": "1.0",
      "joinCloseTime": 1786898600,
      "secondsUntilJoinClose": -46914,
      "resolutionTime": 1786900400,
      "secondsUntilResolution": -45114,
      "minFundedBettors": 2,
      "fundedBettorCount": 2,
      "distinctFundedOutcomeCount": 2,
      "needsOpposingSide": false,
      "marketReadyForResolution": true,
      "state": "Locked",
      "lifecycleStatus": "Locked",
      "requestId": null,
      "oracle": null,
      "certifiedOutcome": null,
      "certifiedOutcomeLabel": null,
      "totalEscrow": "2.0",
      "totalPaid": "0.0",
      "outcomes": [
        {
          "id": "0x4e4f000000000000000000000000000000000000000000000000000000000000",
          "label": "NO",
          "pool": "1.0",
          "decimalOdds": 2,
          "impliedProbabilityBps": 5000
        },
        {
          "id": "0x5945530000000000000000000000000000000000000000000000000000000000",
          "label": "YES",
          "pool": "1.0",
          "decimalOdds": 2,
          "impliedProbabilityBps": 5000
        }
      ],
      "bettors": [
        {
          "address": "0xC90ac2d72Dd8941C46239a832382764F473F0191",
          "name": "Forecast Bot 02",
          "outcome": "0x4e4f000000000000000000000000000000000000000000000000000000000000",
          "outcomeLabel": "NO",
          "stake": "1.0",
          "paid": false
        },
        {
          "address": "0x62cF8E1e9df9D557caaAa42e002662425e6c8c9D",
          "name": "Forecast Bot 03",
          "outcome": "0x5945530000000000000000000000000000000000000000000000000000000000",
          "outcomeLabel": "YES",
          "stake": "1.0",
          "paid": false
        }
      ],
      "fundingOpen": false,
      "acceptingJoins": false,
      "joinable": false,
      "expirable": false,
      "claimableBy": [],
      "refundableBy": [],
      "systemActivity": false,
      "systemActivityReason": null,
      "legacy": false,
      "indexed": true,
      "createdSeason": "2026-08",
      "resolvedAt": null,
      "resolvedSeason": null,
      "creatorName": "Forecast Bot 01",
      "readPath": "indexer-snapshot"
    }
  ],
  "walletApi": {
    "bettor-forecast-01": {
      "status": "online",
      "error": null,
      "readiness": {
        "ready": true,
        "botName": "bettor-forecast-01",
        "wallet": "0x594c258e50F97d2D7a04C4dABe9c7b092299bc45",
        "chainId": 84532,
        "deploymentChainId": 84532,
        "deploymentEpoch": "base-sepolia",
        "blockNumber": 45588613,
        "chainTime": {
          "source": "block.timestamp",
          "trusted": true,
          "latestBlockTimestamp": 1786945514,
          "latestBlockTime": "2026-08-17T05:45:14.000Z"
        },
        "expectedWallet": "0x594c258e50F97d2D7a04C4dABe9c7b092299bc45",
        "registered": true,
        "operatorId": "0xf735e1455d3d70c81476d56f545b90cefaae354c636ae78b98961f56c3568aa7",
        "contracts": [
          {
            "name": "BotRegistry",
            "address": "0x2368BEfaBF70865ab228Ab7C5D3A80aF088f8698",
            "codePresent": true
          },
          {
            "name": "MockERC20",
            "address": "0x2271f56e65ef0977c6E1a71D49e81A9ebf8FB982",
            "codePresent": true
          },
          {
            "name": "BetFactory",
            "address": "0x0673c361951FFEf1595a6560d59Ad1b70bb64f8D",
            "codePresent": true
          },
          {
            "name": "MultiBettorMarketFactory",
            "address": "0xf82FE9c9f4113dA9F3eab62bc73c0e1801c7E1F3",
            "codePresent": true
          }
        ]
      },
      "readinessError": null,
      "data": {
        "botName": "bettor-forecast-01",
        "wallet": "0x594c258e50F97d2D7a04C4dABe9c7b092299bc45",
        "chainId": 84532,
        "blockNumber": 45588613,
        "rpcUrl": "https://base-sepolia.g.alchemy.com/v2/alch_44qiQZWg3qAbxCcDXja-Z",
        "chainTime": {
          "source": "block.timestamp",
          "trusted": true,
          "latestBlockTimestamp": 1786945514,
          "latestBlockTime": "2026-08-17T05:45:14.000Z"
        },
        "creditToken": "0x2271f56e65ef0977c6E1a71D49e81A9ebf8FB982",
        "creditSymbol": "bUSDC",
        "creditBalance": "10000.0",
        "gasBalance": "0.002362398925001179",
        "betFactory": "0x0673c361951FFEf1595a6560d59Ad1b70bb64f8D",
        "multiBettorMarketFactory": "0xf82FE9c9f4113dA9F3eab62bc73c0e1801c7E1F3",
        "readiness": {
          "ready": true,
          "botName": "bettor-forecast-01",
          "wallet": "0x594c258e50F97d2D7a04C4dABe9c7b092299bc45",
          "chainId": 84532,
          "deploymentChainId": 84532,
          "deploymentEpoch": "base-sepolia",
          "blockNumber": 45588613,
          "chainTime": {
            "source": "block.timestamp",
            "trusted": true,
            "latestBlockTimestamp": 1786945514,
            "latestBlockTime": "2026-08-17T05:45:14.000Z"
          },
          "expectedWallet": "0x594c258e50F97d2D7a04C4dABe9c7b092299bc45",
          "registered": true,
          "operatorId": "0xf735e1455d3d70c81476d56f545b90cefaae354c636ae78b98961f56c3568aa7",
          "contracts": [
            {
              "name": "BotRegistry",
              "address": "0x2368BEfaBF70865ab228Ab7C5D3A80aF088f8698",
              "codePresent": true
            },
            {
              "name": "MockERC20",
              "address": "0x2271f56e65ef0977c6E1a71D49e81A9ebf8FB982",
              "codePresent": true
            },
            {
              "name": "BetFactory",
              "address": "0x0673c361951FFEf1595a6560d59Ad1b70bb64f8D",
              "codePresent": true
            },
            {
              "name": "MultiBettorMarketFactory",
              "address": "0xf82FE9c9f4113dA9F3eab62bc73c0e1801c7E1F3",
              "codePresent": true
            }
          ]
        }
      },
      "betBoard": {
        "botName": "bettor-forecast-01",
        "wallet": "0x594c258e50F97d2D7a04C4dABe9c7b092299bc45",
        "count": 0,
        "joinableCount": 0,
        "bets": []
      },
      "betBoardError": null,
      "marketBoard": {
        "botName": "bettor-forecast-01",
        "wallet": "0x594c258e50F97d2D7a04C4dABe9c7b092299bc45",
        "chainTime": {
          "source": "block.timestamp",
          "trusted": true,
          "latestBlockTimestamp": 1786945514,
          "latestBlockTime": "2026-08-17T05:45:14.000Z"
        },
        "count": 1,
        "totalCount": 1,
        "hiddenSystemCount": 0,
        "includeSystem": false,
        "joinableCount": 0,
        "markets": [
          {
            "address": "0xa53FC2082c90499031604Cf7A5Bc38a1F03a3C02",
            "marketId": "0x2b5a7795e2e47e19f7d8a6c23bd625d9050a252dba7dda9c81ed14a831c06f64",
            "question": "Staging smoke: will this controlled two-bot market be funded on Base Sepolia?",
            "rules": "Source of truth: Truth Swarm staging dashboard and Base Sepolia transactions created during the 2026-08-16 controlled wallet API smoke test. YES wins if two registered bettor wallets fund this market before the join close time; NO wins otherwise. This is a tiny staging-only test market.",
            "rulesHash": "0xdce7ecc93f35c3bfe184588ec917e1d97ac28be34bb46acae1ba8bb8a5fa8008",
            "stakePerBettor": "1.0",
            "fundingFee": "0.1",
            "payoutFee": "0.25",
            "feeRecipient": "0x38Db71002E2F37B04e0A8A1500002dE479728154",
            "joinCloseTime": 1786898600,
            "secondsUntilJoinClose": -46914,
            "resolutionTime": 1786900400,
            "secondsUntilResolution": -45114,
            "minFundedBettors": 2,
            "fundedBettorCount": 2,
            "distinctFundedOutcomeCount": 2,
            "needsOpposingSide": false,
            "marketReadyForResolution": true,
            "state": "Locked",
            "lifecycleStatus": "Locked",
            "requestId": "0x0000000000000000000000000000000000000000000000000000000000000000",
            "certifiedOutcome": "0x0000000000000000000000000000000000000000000000000000000000000000",
            "certifiedOutcomeLabel": null,
            "totalEscrow": "2.0",
            "totalPaid": "0.0",
            "outcomes": [
              {
                "id": "0x5945530000000000000000000000000000000000000000000000000000000000",
                "label": "YES",
                "pool": "1.0",
                "decimalOdds": 2,
                "impliedProbabilityBps": 5000
              },
              {
                "id": "0x4e4f000000000000000000000000000000000000000000000000000000000000",
                "label": "NO",
                "pool": "1.0",
                "decimalOdds": 2,
                "impliedProbabilityBps": 5000
              }
            ],
            "bettors": [
              {
                "address": "0xC90ac2d72Dd8941C46239a832382764F473F0191",
                "outcome": "0x4e4f000000000000000000000000000000000000000000000000000000000000",
                "outcomeLabel": "NO",
                "stake": "1.0",
                "paid": false,
                "isMe": false
              },
              {
                "address": "0x62cF8E1e9df9D557caaAa42e002662425e6c8c9D",
                "outcome": "0x5945530000000000000000000000000000000000000000000000000000000000",
                "outcomeLabel": "YES",
                "stake": "1.0",
                "paid": false,
                "isMe": false
              }
            ],
            "fundingOpen": false,
            "acceptingJoins": false,
            "joinableByMe": false,
            "expirable": false,
            "claimableByMe": false,
            "refundableByMe": false,
            "systemActivity": false,
            "systemActivityReason": null,
            "myPosition": null
          }
        ]
      },
      "marketBoardError": null
    },
    "bettor-forecast-02": {
      "status": "online",
      "error": null,
      "readiness": {
        "ready": true,
        "botName": "bettor-forecast-02",
        "wallet": "0xC90ac2d72Dd8941C46239a832382764F473F0191",
        "chainId": 84532,
        "deploymentChainId": 84532,
        "deploymentEpoch": "base-sepolia",
        "blockNumber": 45588613,
        "chainTime": {
          "source": "block.timestamp",
          "trusted": true,
          "latestBlockTimestamp": 1786945514,
          "latestBlockTime": "2026-08-17T05:45:14.000Z"
        },
        "expectedWallet": "0xC90ac2d72Dd8941C46239a832382764F473F0191",
        "registered": true,
        "operatorId": "0xf58b3f62c30871d19624657c724ee82aaddb15ea7c32f0299f36dc40616b0aef",
        "contracts": [
          {
            "name": "BotRegistry",
            "address": "0x2368BEfaBF70865ab228Ab7C5D3A80aF088f8698",
            "codePresent": true
          },
          {
            "name": "MockERC20",
            "address": "0x2271f56e65ef0977c6E1a71D49e81A9ebf8FB982",
            "codePresent": true
          },
          {
            "name": "BetFactory",
            "address": "0x0673c361951FFEf1595a6560d59Ad1b70bb64f8D",
            "codePresent": true
          },
          {
            "name": "MultiBettorMarketFactory",
            "address": "0xf82FE9c9f4113dA9F3eab62bc73c0e1801c7E1F3",
            "codePresent": true
          }
        ]
      },
      "readinessError": null,
      "data": {
        "botName": "bettor-forecast-02",
        "wallet": "0xC90ac2d72Dd8941C46239a832382764F473F0191",
        "chainId": 84532,
        "blockNumber": 45588613,
        "rpcUrl": "https://base-sepolia.g.alchemy.com/v2/alch_44qiQZWg3qAbxCcDXja-Z",
        "chainTime": {
          "source": "block.timestamp",
          "trusted": true,
          "latestBlockTimestamp": 1786945514,
          "latestBlockTime": "2026-08-17T05:45:14.000Z"
        },
        "creditToken": "0x2271f56e65ef0977c6E1a71D49e81A9ebf8FB982",
        "creditSymbol": "bUSDC",
        "creditBalance": "9998.9",
        "gasBalance": "0.002517855561558574",
        "betFactory": "0x0673c361951FFEf1595a6560d59Ad1b70bb64f8D",
        "multiBettorMarketFactory": "0xf82FE9c9f4113dA9F3eab62bc73c0e1801c7E1F3",
        "readiness": {
          "ready": true,
          "botName": "bettor-forecast-02",
          "wallet": "0xC90ac2d72Dd8941C46239a832382764F473F0191",
          "chainId": 84532,
          "deploymentChainId": 84532,
          "deploymentEpoch": "base-sepolia",
          "blockNumber": 45588613,
          "chainTime": {
            "source": "block.timestamp",
            "trusted": true,
            "latestBlockTimestamp": 1786945514,
            "latestBlockTime": "2026-08-17T05:45:14.000Z"
          },
          "expectedWallet": "0xC90ac2d72Dd8941C46239a832382764F473F0191",
          "registered": true,
          "operatorId": "0xf58b3f62c30871d19624657c724ee82aaddb15ea7c32f0299f36dc40616b0aef",
          "contracts": [
            {
              "name": "BotRegistry",
              "address": "0x2368BEfaBF70865ab228Ab7C5D3A80aF088f8698",
              "codePresent": true
            },
            {
              "name": "MockERC20",
              "address": "0x2271f56e65ef0977c6E1a71D49e81A9ebf8FB982",
              "codePresent": true
            },
            {
              "name": "BetFactory",
              "address": "0x0673c361951FFEf1595a6560d59Ad1b70bb64f8D",
              "codePresent": true
            },
            {
              "name": "MultiBettorMarketFactory",
              "address": "0xf82FE9c9f4113dA9F3eab62bc73c0e1801c7E1F3",
              "codePresent": true
            }
          ]
        }
      },
      "betBoard": {
        "botName": "bettor-forecast-02",
        "wallet": "0xC90ac2d72Dd8941C46239a832382764F473F0191",
        "count": 0,
        "joinableCount": 0,
        "bets": []
      },
      "betBoardError": null,
      "marketBoard": {
        "botName": "bettor-forecast-02",
        "wallet": "0xC90ac2d72Dd8941C46239a832382764F473F0191",
        "chainTime": {
          "source": "block.timestamp",
          "trusted": true,
          "latestBlockTimestamp": 1786945514,
          "latestBlockTime": "2026-08-17T05:45:14.000Z"
        },
        "count": 1,
        "totalCount": 1,
        "hiddenSystemCount": 0,
        "includeSystem": false,
        "joinableCount": 0,
        "markets": [
          {
            "address": "0xa53FC2082c90499031604Cf7A5Bc38a1F03a3C02",
            "marketId": "0x2b5a7795e2e47e19f7d8a6c23bd625d9050a252dba7dda9c81ed14a831c06f64",
            "question": "Staging smoke: will this controlled two-bot market be funded on Base Sepolia?",
            "rules": "Source of truth: Truth Swarm staging dashboard and Base Sepolia transactions created during the 2026-08-16 controlled wallet API smoke test. YES wins if two registered bettor wallets fund this market before the join close time; NO wins otherwise. This is a tiny staging-only test market.",
            "rulesHash": "0xdce7ecc93f35c3bfe184588ec917e1d97ac28be34bb46acae1ba8bb8a5fa8008",
            "stakePerBettor": "1.0",
            "fundingFee": "0.1",
            "payoutFee": "0.25",
            "feeRecipient": "0x38Db71002E2F37B04e0A8A1500002dE479728154",
            "joinCloseTime": 1786898600,
            "secondsUntilJoinClose": -46914,
            "resolutionTime": 1786900400,
            "secondsUntilResolution": -45114,
            "minFundedBettors": 2,
            "fundedBettorCount": 2,
            "distinctFundedOutcomeCount": 2,
            "needsOpposingSide": false,
            "marketReadyForResolution": true,
            "state": "Locked",
            "lifecycleStatus": "Locked",
            "requestId": "0x0000000000000000000000000000000000000000000000000000000000000000",
            "certifiedOutcome": "0x0000000000000000000000000000000000000000000000000000000000000000",
            "certifiedOutcomeLabel": null,
            "totalEscrow": "2.0",
            "totalPaid": "0.0",
            "outcomes": [
              {
                "id": "0x5945530000000000000000000000000000000000000000000000000000000000",
                "label": "YES",
                "pool": "1.0",
                "decimalOdds": 2,
                "impliedProbabilityBps": 5000
              },
              {
                "id": "0x4e4f000000000000000000000000000000000000000000000000000000000000",
                "label": "NO",
                "pool": "1.0",
                "decimalOdds": 2,
                "impliedProbabilityBps": 5000
              }
            ],
            "bettors": [
              {
                "address": "0xC90ac2d72Dd8941C46239a832382764F473F0191",
                "outcome": "0x4e4f000000000000000000000000000000000000000000000000000000000000",
                "outcomeLabel": "NO",
                "stake": "1.0",
                "paid": false,
                "isMe": true
              },
              {
                "address": "0x62cF8E1e9df9D557caaAa42e002662425e6c8c9D",
                "outcome": "0x5945530000000000000000000000000000000000000000000000000000000000",
                "outcomeLabel": "YES",
                "stake": "1.0",
                "paid": false,
                "isMe": false
              }
            ],
            "fundingOpen": false,
            "acceptingJoins": false,
            "joinableByMe": false,
            "expirable": false,
            "claimableByMe": false,
            "refundableByMe": false,
            "systemActivity": false,
            "systemActivityReason": null,
            "myPosition": {
              "address": "0xC90ac2d72Dd8941C46239a832382764F473F0191",
              "outcome": "0x4e4f000000000000000000000000000000000000000000000000000000000000",
              "outcomeLabel": "NO",
              "stake": "1.0",
              "paid": false,
              "isMe": true
            }
          }
        ]
      },
      "marketBoardError": null
    },
    "bettor-forecast-03": {
      "status": "online",
      "error": null,
      "readiness": {
        "ready": true,
        "botName": "bettor-forecast-03",
        "wallet": "0x62cF8E1e9df9D557caaAa42e002662425e6c8c9D",
        "chainId": 84532,
        "deploymentChainId": 84532,
        "deploymentEpoch": "base-sepolia",
        "blockNumber": 45588613,
        "chainTime": {
          "source": "block.timestamp",
          "trusted": true,
          "latestBlockTimestamp": 1786945514,
          "latestBlockTime": "2026-08-17T05:45:14.000Z"
        },
        "expectedWallet": "0x62cF8E1e9df9D557caaAa42e002662425e6c8c9D",
        "registered": true,
        "operatorId": "0x4fb363619e18196777d4eff0eee60373fedd1f104d1ab7459d8db5f6de3a5df2",
        "contracts": [
          {
            "name": "BotRegistry",
            "address": "0x2368BEfaBF70865ab228Ab7C5D3A80aF088f8698",
            "codePresent": true
          },
          {
            "name": "MockERC20",
            "address": "0x2271f56e65ef0977c6E1a71D49e81A9ebf8FB982",
            "codePresent": true
          },
          {
            "name": "BetFactory",
            "address": "0x0673c361951FFEf1595a6560d59Ad1b70bb64f8D",
            "codePresent": true
          },
          {
            "name": "MultiBettorMarketFactory",
            "address": "0xf82FE9c9f4113dA9F3eab62bc73c0e1801c7E1F3",
            "codePresent": true
          }
        ]
      },
      "readinessError": null,
      "data": {
        "botName": "bettor-forecast-03",
        "wallet": "0x62cF8E1e9df9D557caaAa42e002662425e6c8c9D",
        "chainId": 84532,
        "blockNumber": 45588613,
        "rpcUrl": "https://base-sepolia.g.alchemy.com/v2/alch_44qiQZWg3qAbxCcDXja-Z",
        "chainTime": {
          "source": "block.timestamp",
          "trusted": true,
          "latestBlockTimestamp": 1786945514,
          "latestBlockTime": "2026-08-17T05:45:14.000Z"
        },
        "creditToken": "0x2271f56e65ef0977c6E1a71D49e81A9ebf8FB982",
        "creditSymbol": "bUSDC",
        "creditBalance": "9998.9",
        "gasBalance": "0.001215944963478575",
        "betFactory": "0x0673c361951FFEf1595a6560d59Ad1b70bb64f8D",
        "multiBettorMarketFactory": "0xf82FE9c9f4113dA9F3eab62bc73c0e1801c7E1F3",
        "readiness": {
          "ready": true,
          "botName": "bettor-forecast-03",
          "wallet": "0x62cF8E1e9df9D557caaAa42e002662425e6c8c9D",
          "chainId": 84532,
          "deploymentChainId": 84532,
          "deploymentEpoch": "base-sepolia",
          "blockNumber": 45588613,
          "chainTime": {
            "source": "block.timestamp",
            "trusted": true,
            "latestBlockTimestamp": 1786945514,
            "latestBlockTime": "2026-08-17T05:45:14.000Z"
          },
          "expectedWallet": "0x62cF8E1e9df9D557caaAa42e002662425e6c8c9D",
          "registered": true,
          "operatorId": "0x4fb363619e18196777d4eff0eee60373fedd1f104d1ab7459d8db5f6de3a5df2",
          "contracts": [
            {
              "name": "BotRegistry",
              "address": "0x2368BEfaBF70865ab228Ab7C5D3A80aF088f8698",
              "codePresent": true
            },
            {
              "name": "MockERC20",
              "address": "0x2271f56e65ef0977c6E1a71D49e81A9ebf8FB982",
              "codePresent": true
            },
            {
              "name": "BetFactory",
              "address": "0x0673c361951FFEf1595a6560d59Ad1b70bb64f8D",
              "codePresent": true
            },
            {
              "name": "MultiBettorMarketFactory",
              "address": "0xf82FE9c9f4113dA9F3eab62bc73c0e1801c7E1F3",
              "codePresent": true
            }
          ]
        }
      },
      "betBoard": {
        "botName": "bettor-forecast-03",
        "wallet": "0x62cF8E1e9df9D557caaAa42e002662425e6c8c9D",
        "count": 0,
        "joinableCount": 0,
        "bets": []
      },
      "betBoardError": null,
      "marketBoard": {
        "botName": "bettor-forecast-03",
        "wallet": "0x62cF8E1e9df9D557caaAa42e002662425e6c8c9D",
        "chainTime": {
          "source": "block.timestamp",
          "trusted": true,
          "latestBlockTimestamp": 1786945514,
          "latestBlockTime": "2026-08-17T05:45:14.000Z"
        },
        "count": 1,
        "totalCount": 1,
        "hiddenSystemCount": 0,
        "includeSystem": false,
        "joinableCount": 0,
        "markets": [
          {
            "address": "0xa53FC2082c90499031604Cf7A5Bc38a1F03a3C02",
            "marketId": "0x2b5a7795e2e47e19f7d8a6c23bd625d9050a252dba7dda9c81ed14a831c06f64",
            "question": "Staging smoke: will this controlled two-bot market be funded on Base Sepolia?",
            "rules": "Source of truth: Truth Swarm staging dashboard and Base Sepolia transactions created during the 2026-08-16 controlled wallet API smoke test. YES wins if two registered bettor wallets fund this market before the join close time; NO wins otherwise. This is a tiny staging-only test market.",
            "rulesHash": "0xdce7ecc93f35c3bfe184588ec917e1d97ac28be34bb46acae1ba8bb8a5fa8008",
            "stakePerBettor": "1.0",
            "fundingFee": "0.1",
            "payoutFee": "0.25",
            "feeRecipient": "0x38Db71002E2F37B04e0A8A1500002dE479728154",
            "joinCloseTime": 1786898600,
            "secondsUntilJoinClose": -46914,
            "resolutionTime": 1786900400,
            "secondsUntilResolution": -45114,
            "minFundedBettors": 2,
            "fundedBettorCount": 2,
            "distinctFundedOutcomeCount": 2,
            "needsOpposingSide": false,
            "marketReadyForResolution": true,
            "state": "Locked",
            "lifecycleStatus": "Locked",
            "requestId": "0x0000000000000000000000000000000000000000000000000000000000000000",
            "certifiedOutcome": "0x0000000000000000000000000000000000000000000000000000000000000000",
            "certifiedOutcomeLabel": null,
            "totalEscrow": "2.0",
            "totalPaid": "0.0",
            "outcomes": [
              {
                "id": "0x5945530000000000000000000000000000000000000000000000000000000000",
                "label": "YES",
                "pool": "1.0",
                "decimalOdds": 2,
                "impliedProbabilityBps": 5000
              },
              {
                "id": "0x4e4f000000000000000000000000000000000000000000000000000000000000",
                "label": "NO",
                "pool": "1.0",
                "decimalOdds": 2,
                "impliedProbabilityBps": 5000
              }
            ],
            "bettors": [
              {
                "address": "0xC90ac2d72Dd8941C46239a832382764F473F0191",
                "outcome": "0x4e4f000000000000000000000000000000000000000000000000000000000000",
                "outcomeLabel": "NO",
                "stake": "1.0",
                "paid": false,
                "isMe": false
              },
              {
                "address": "0x62cF8E1e9df9D557caaAa42e002662425e6c8c9D",
                "outcome": "0x5945530000000000000000000000000000000000000000000000000000000000",
                "outcomeLabel": "YES",
                "stake": "1.0",
                "paid": false,
                "isMe": true
              }
            ],
            "fundingOpen": false,
            "acceptingJoins": false,
            "joinableByMe": false,
            "expirable": false,
            "claimableByMe": false,
            "refundableByMe": false,
            "systemActivity": false,
            "systemActivityReason": null,
            "myPosition": {
              "address": "0x62cF8E1e9df9D557caaAa42e002662425e6c8c9D",
              "outcome": "0x5945530000000000000000000000000000000000000000000000000000000000",
              "outcomeLabel": "YES",
              "stake": "1.0",
              "paid": false,
              "isMe": true
            }
          }
        ]
      },
      "marketBoardError": null
    }
  },
  "lastBet": null,
  "hostEconomics": {
    "mode": "Base Sepolia-fixed-fees",
    "host": "Mac Mini",
    "gasToken": "Base Sepolia ETH",
    "creditToken": "bUSDC",
    "feeSource": "fixed funding fee 0.1 + payout fee 0.25",
    "treasuryAddress": "0x38Db71002E2F37B04e0A8A1500002dE479728154",
    "nodeRegistryAddress": "0xC30280519B15cF62980cc1B27623a4d257a059FE",
    "keepAliveFaucet": "0x2136e61078b6B1C5F716FD3b296239fA37B10418",
    "keepAlive": {
      "floor": "500.0",
      "cooldownSeconds": 86400
    },
    "treasuryBalance": "0.2",
    "totalDistributed": "0.0",
    "lastDistributionAt": 0,
    "registeredNodeOperators": [
      {
        "address": "0x9249f2a3880e204797133e7775B9BC178C04E622",
        "registered": true,
        "active": true,
        "golden": true,
        "rewardWeight": "10",
        "uptimePoints": "0",
        "metadataURI": "truth-swarm://node/Mac%20Mini",
        "rewardShare": "0"
      }
    ],
    "feesEnabled": true,
    "note": "Fixed protocol fees are paid into a dedicated NodeRewardsTreasury. Wager collateral remains isolated in each bet escrow.",
    "nextDesign": [
      "Funding and payout fees are fixed and explicit before participation.",
      "Node operators are owner-registered to prevent open Sybil farming.",
      "Rewards distribute by owner-recorded uptime points multiplied by reward weight.",
      "Golden/founder nodes can carry higher protected reward weight while governance is immature."
    ]
  },
  "billing": {
    "available": true,
    "provider": "manual",
    "currency": "USD",
    "webhookMode": "not-configured",
    "publicCheckoutUrl": null,
    "note": "Manual billing ledger. Wire Stripe/USDC/invoice processors here without changing the on-chain training ledger.",
    "plans": {
      "observer": {
        "id": "observer",
        "name": "Observer",
        "monthlyFeeCents": 0,
        "enrollmentFeeCents": 0,
        "includedTrainingCredits": 0,
        "maxBots": 1,
        "maxMarketsPerSeason": 0,
        "features": [
          "read-only commentary and leaderboards"
        ]
      },
      "training-seat": {
        "id": "training-seat",
        "name": "Training Seat",
        "monthlyFeeCents": 9900,
        "enrollmentFeeCents": 4900,
        "includedTrainingCredits": 1000,
        "maxBots": 3,
        "maxMarketsPerSeason": 100,
        "features": [
          "paid bot enrollment",
          "season leaderboard",
          "bot dossier"
        ]
      },
      "arena-pro": {
        "id": "arena-pro",
        "name": "Arena Pro",
        "monthlyFeeCents": 29900,
        "enrollmentFeeCents": 9900,
        "includedTrainingCredits": 5000,
        "maxBots": 20,
        "maxMarketsPerSeason": 1000,
        "features": [
          "priority seasons",
          "webhook/event subscriptions",
          "operator API access"
        ]
      }
    },
    "totals": {
      "operators": 0,
      "paidCents": 0,
      "invoicedCents": 0,
      "refundedCents": 0,
      "trainingCreditsAvailable": 0
    },
    "accounts": [],
    "events": []
  },
  "compliance": {
    "available": true,
    "allowed": true,
    "productMode": "simulation-training-saas",
    "simulationOnly": true,
    "legalApproved": false,
    "posture": "simulation-training",
    "realValueFlags": {
      "realValueEnabled": false,
      "redeemableCredits": false,
      "cashPrizes": false,
      "publicEventContracts": false,
      "custodialFunds": false,
      "externalAutonomousExecution": false
    },
    "blockedReasons": [],
    "allowedLane": [
      "paid software access and bot enrollment",
      "fake non-redeemable training credits",
      "leaderboard reputation and training dossiers",
      "on-chain/testnet training records without cash-out",
      "commentary/event subscriptions for operators"
    ],
    "blockedLane": [
      "real-money or USDC staking on outcomes",
      "cash-out or resale of training credits",
      "cash prizes or redeemable rewards for winning outcomes",
      "public event-contract trading",
      "custody or pooling of user funds",
      "autonomous external real-money execution through TruthSwarm"
    ],
    "requiredBeforeRealValue": [
      "legal/compliance counsel approval",
      "jurisdiction and age gating",
      "KYC/AML/sanctions program if money movement is involved",
      "bonded oracle and dispute window",
      "tax/accounting review",
      "written terms, risk disclosures, refund policy, and no-advice language"
    ],
    "termsUrl": null,
    "supportContact": null
  },
  "eventStore": {
    "ok": true,
    "required": true,
    "serviceName": "truth-swarm-dashboard",
    "startedAt": "2026-08-17T00:05:28.603Z",
    "postgres": {
      "ok": true,
      "url": "postgres://%3Credacted%3E:%3Credacted%3E@truth-swarm-postgres-base-sepolia:5432/truthswarm",
      "tables": [
        "platform_events",
        "chain_write_outbox",
        "chain_receipts",
        "batch_anchors"
      ]
    },
    "redis": {
      "ok": true,
      "url": "redis://truth-swarm-redis-base-sepolia:6379",
      "queues": {
        "botEvents": "truthswarm:bot-events",
        "chainWrites": "truthswarm:chain-writes",
        "oracle": "truthswarm:oracle",
        "fanout": "truthswarm:events"
      }
    },
    "anchorBatchSize": 500,
    "anchorIntervalSeconds": 3600
  },
  "rpcGuardrails": {
    "available": true,
    "mode": "fail-closed",
    "roles": {
      "read": {
        "role": "read",
        "provider": "alchemy",
        "configured": true,
        "url": "https://base-sepolia.g.alchemy.com/v2/<redacted>"
      },
      "indexer": {
        "role": "indexer",
        "provider": "alchemy",
        "configured": true,
        "url": "https://base-sepolia.g.alchemy.com/v2/<redacted>"
      },
      "write": {
        "role": "write",
        "provider": "alchemy",
        "configured": true,
        "url": "https://base-sepolia.g.alchemy.com/v2/<redacted>"
      }
    },
    "limits": {
      "monthlyCu": 100000000,
      "dailyCu": 5000000,
      "perRunCu": 100000,
      "maxIndexerBlocksPerRun": 100,
      "maxIndexerBlockRange": 10,
      "indexerPollMs": 300000
    },
    "policy": {
      "snapshotsFirst": true,
      "manualIndexing": true,
      "failClosedOnQuota": true,
      "allowPublicRpcWrites": false
    },
    "budget": {
      "ok": true,
      "reasons": [],
      "usage": {
        "monthlyCuUsed": 0,
        "dailyCuUsed": 0,
        "runCuUsed": 0
      },
      "remaining": {
        "monthlyCu": 100000000,
        "dailyCu": 5000000,
        "perRunCu": 100000
      }
    },
    "recommendations": [
      "Use snapshots/indexer output for dashboard reads before live RPC.",
      "Keep Base Sepolia indexing manual or observed while using capped providers.",
      "Separate billing revenue from RPC provider spend.",
      "Use WRITE_RPC_URL only for controlled wallet/contract writes."
    ]
  },
  "services": [
    {
      "name": "Base Sepolia",
      "role": "EVM / on-chain record",
      "port": null,
      "status": "online"
    },
    {
      "name": "truth-bot-bettor-forecast-01-base-sepolia",
      "role": "Forecast Bot 01 wallet + market board API",
      "port": 8891,
      "status": "online"
    },
    {
      "name": "truth-bot-bettor-forecast-02-base-sepolia",
      "role": "Forecast Bot 02 wallet + market board API",
      "port": 8892,
      "status": "online"
    },
    {
      "name": "truth-bot-bettor-forecast-03-base-sepolia",
      "role": "Forecast Bot 03 wallet + market board API",
      "port": 8893,
      "status": "online"
    },
    {
      "name": "truth-swarm-dashboard",
      "role": "Truth Swarm dashboard UI",
      "port": 8787,
      "status": "online"
    },
    {
      "name": "truth-swarm-postgres",
      "role": "durable event store",
      "port": null,
      "status": "online"
    },
    {
      "name": "truth-swarm-redis",
      "role": "queue/cache/fanout",
      "port": null,
      "status": "online"
    }
  ]
}