{
  "name": "accrete",
  "state": "notebook",
  "iteration": 3,
  "northStar": "Agents on Durable Objects build the tools they need once, so container-seconds per task fall toward zero as the registry grows.",
  "constraint": "A built tool must run in a Worker isolate with no network and no secrets, and must match the native tool's output before it is registered.",
  "falsifiable": "After a tool is in the registry, a repeat of the same task uses 0 container-seconds. Disproved if any repeat run uses the container.",
  "proven": [
    {
      "claim": "A repeat run with the same tools uses 0 container-seconds.",
      "experiment": "02-builder-cold-tool",
      "receipt": "receipts/02-run-3.json",
      "observed": "Run 3: 6/6 tasks, 0 container calls, 0 container-seconds, 3 tools from the registry."
    },
    {
      "claim": "A missing npm tool is built once in a container, checked against native output, then reused.",
      "experiment": "02-builder-cold-tool",
      "receipt": "receipts/02-run-1.json",
      "observed": "Run 1 built json5 cold in the container. Runs 2 and 3 used the registry copy."
    },
    {
      "claim": "A built tool whose output differs from the native tool is rejected.",
      "experiment": "02-builder-cold-tool",
      "receipt": "receipts/02-gate.json",
      "observed": "Recipe json5-bad got HTTP 500 and was not listed."
    },
    {
      "claim": "tsc from the registry type-checks accrete's own src/ in an isolate.",
      "experiment": "02-builder-cold-tool",
      "receipt": "receipts/02-self-check.json",
      "observed": "8 files, clean, placement built-tool, 0 container-seconds, 811 ms."
    },
    {
      "claim": "Repeat runs use 0 container-seconds across the whole bench, not just the demo.",
      "experiment": "bench hillclimb",
      "receipt": "bench/score.json",
      "observed": "10 tools, train 4/4, held-out 6/7. Repeat container-seconds per task: 0.00."
    },
    {
      "claim": "The 4 falsification tests pass.",
      "experiment": "bench hillclimb",
      "receipt": "receipts/falsify.json",
      "observed": "Repeat uses no container. Tampered bundle refused. Network tool fails. Bad recipe rejected."
    }
  ],
  "unproven": [
    {
      "claim": "Total container cost falls toward zero over a long run.",
      "why": "Bench is 11 tools. No long mixed-task run yet."
    },
    {
      "claim": "The Worker log measures builder cost correctly.",
      "why": "GraphQL billed about 62 s of uptime where the Worker logged 6.4 s. Cold start is the likely cause, not confirmed."
    }
  ],
  "disproven": [
    {
      "claim": "GraphQL containerUptime or allocatedCpu measures each build.",
      "receipt": "experiments/02-builder-cold-tool/README.md",
      "observed": "A json5 build with 7.3 s in the Worker log showed 0 uptime and 0 allocated vCPU in GraphQL for that minute."
    },
    {
      "claim": "Any npm tool can be bundled for an isolate.",
      "receipt": "experiments/02-builder-cold-tool/README.md",
      "observed": "TypeScript 7 ships a native binary. The tsc tool uses TypeScript 5.9.3."
    },
    {
      "claim": "Every held-out tool builds without code generation.",
      "receipt": "bench/score.json",
      "observed": "prettier loads its CLI through new Function. It fails in the isolate."
    }
  ],
  "openQuestions": [
    "What is the real cost of one cold build, including container start and stop?",
    "Which tool kinds other than esm (wasi, container-only) are worth the next experiment?",
    "Does the registry need a time limit or a size limit?"
  ]
}
