{
  "artifact_type": "controlled_dispatcher_unit_test",
  "executed_at": "2026-09-17T00:16:27.987Z",
  "source_commit": "71dd3628af0e67554b39afb943359204bae85980",
  "description": "Existing unit tests execute the actual dispatcher with synthetic registry, account, database and provider fixtures. No real account, purchase or ledger is accessed.",
  "result": {
    "passed": 5,
    "failed": 0,
    "skipped": 15,
    "success": true
  },
  "command": "node node_modules/vitest/vitest.mjs run lib/services/__tests__/dispatch.test.ts lib/services/__tests__/dispatch.result.test.ts -t 'rejects with credits_required|enforces max_cost_cents|does not debit when upstream|returns the job view|balance is irrelevant' --reporter=json --outputFile=dispatch-test-report.json",
  "working_directory": "apps/web",
  "assertions": [
    {
      "name": "vaaya/result returns the job view with no ledger movement and no transaction row",
      "status": "passed",
      "duration_ms": 2.3325409999997646
    },
    {
      "name": "vaaya/result still answers while the job is running (balance is irrelevant to a poll)",
      "status": "passed",
      "duration_ms": 0.15875000000005457
    },
    {
      "name": "dispatchService — REST rail rejects with credits_required when balance < price (prepaid — no overdraft)",
      "status": "passed",
      "duration_ms": 2.287833999999748
    },
    {
      "name": "dispatchService — REST rail enforces max_cost_cents ceiling before upstream call",
      "status": "passed",
      "duration_ms": 0.7935000000002219
    },
    {
      "name": "dispatchService — REST rail does not debit when upstream returns 4xx",
      "status": "passed",
      "duration_ms": 1.0857499999997344
    }
  ]
}
