{
  "schemaVersion": 1,
  "experiment": "agent-economics-single-vs-planner-pilot",
  "runId": "ef9d7ade-9f43-47e3-a0b0-896a7bb113be",
  "startedAt": "2026-09-04T10:01:27.477Z",
  "completedAt": "2026-09-04T10:02:14.559Z",
  "model": "z-ai/glm-5.2",
  "billingRoute": "OpenRouter",
  "fixture": {
    "taskSha256": "39491be1c20c4ea4e45248f2c526f8f2ae932edfb6051f897dd7f85c08d5d793",
    "task": "Fix selectFiles while preserving its public API and source order. Include exact-budget files; reject non-finite or negative file sizes and budgets with TypeError; do not mutate input; add validation tests; pass the suite.",
    "initialImplementation": "export function selectFiles(files, maxBytes) {\n  let used = 0;\n  return files.filter((file) => {\n    if (used + file.bytes < maxBytes) {\n      used += file.bytes;\n      return true;\n    }\n    return false;\n  });\n}\n",
    "initialTests": [
      "keeps files in source order without exceeding the byte budget",
      "allows a file that exactly fills the remaining budget"
    ]
  },
  "budget": {
    "maximumPerArmUsd": 0.05,
    "monthlyLabsCapUsd": 100
  },
  "results": [
    {
      "arm": "single-agent-loop",
      "accepted": true,
      "modelCalls": 4,
      "agentTurns": 4,
      "toolCalls": 6,
      "promptTokens": 4865,
      "completionTokens": 946,
      "totalTokens": 5811,
      "billedUsd": 0.006722718,
      "estimatedDirectListUsd": 0.0109734,
      "resultSha256": "f1a1526da26a3ee1d2ada00e8f6257aff052016fc1ee9e38d10eba009ea701b7",
      "calls": [
        { "phase": "agent", "promptTokens": 431, "completionTokens": 50, "billedUsd": 0.00069989 },
        { "phase": "agent", "promptTokens": 847, "completionTokens": 747, "billedUsd": 0.003429614 },
        { "phase": "agent", "promptTokens": 1616, "completionTokens": 5, "billedUsd": 0.001197548 },
        { "phase": "agent", "promptTokens": 1971, "completionTokens": 144, "billedUsd": 0.001395666 }
      ]
    },
    {
      "arm": "planner-plus-agent-loop",
      "accepted": true,
      "modelCalls": 5,
      "agentTurns": 4,
      "toolCalls": 6,
      "promptTokens": 8326,
      "completionTokens": 2464,
      "totalTokens": 10790,
      "billedUsd": 0.013913956,
      "estimatedDirectListUsd": 0.022498,
      "resultSha256": "7e118c7731b57eee9f194f3fd1b064207ea8f771c42988bd370860ff2a4f7717",
      "calls": [
        { "phase": "planner", "promptTokens": 407, "completionTokens": 1630, "billedUsd": 0.00658053 },
        { "phase": "agent", "promptTokens": 1198, "completionTokens": 50, "billedUsd": 0.001240524 },
        { "phase": "agent", "promptTokens": 1614, "completionTokens": 695, "billedUsd": 0.003403672 },
        { "phase": "agent", "promptTokens": 2331, "completionTokens": 5, "billedUsd": 0.001304206 },
        { "phase": "agent", "promptTokens": 2776, "completionTokens": 84, "billedUsd": 0.001385024 }
      ]
    }
  ],
  "observedComparison": {
    "plannerTokenMultiplier": 1.8568232662,
    "plannerBilledCostMultiplier": 2.0696920501
  },
  "limitations": [
    "One deterministic maintenance task and one run per arm; this is a pilot, not a model or harness ranking.",
    "Both arms used the same model. The comparison isolates an explicit planner call, not different coding products.",
    "OpenRouter billed cost and canonical direct-list estimates are stored separately.",
    "The result supports a testable hypothesis for broader runs; it does not establish a universal subagent overhead."
  ]
}
