Build1 distinct publisher3 min readPublished
A generated file lived on workspace disk and never in the commit. Twelve hours and one free-tier restart later, the resumed agent removed the import instead of rebuilding it.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
The repair was correct for the world the agent could see. An import pointed at `src/generated/api_client.ts`, nothing on disk resolved it, and nothing in the repository recorded that the file was ever meant to exist [5]. Removing the import made the build green again [3].
Look at what the session logs actually certified. They showed a generation step that succeeded, a test run that passed, and a commit that referenced the generated file by name [4]. All three entries were true. None of them was evidence that the file was inside the commit, because the agent had written it to the workspace and a fresh clone had no way to learn it had existed [5].
The reproduction is the only step in the postmortem that produced new information. A clean checkout failed at once while the same tree, left dirty, still passed [6], which means pass and fail were a property of the local disk rather than of the history [2]. Between the last signal that looked like success and the first signal that was true, twelve hours of unattended running elapsed [1]. The author's reading is that free servers are ephemeral by design and the workflow was the defect, because the agent was allowed to treat local disk as durable storage and given no way to verify that its world had been reset [7]. He likens the workspace to a cache and the restart to an invalidation event the agent never noticed [8].
The remedy is smaller than the diagnosis. A manifest at `.agent/artifacts.json` declares required paths; a preflight script refuses to run on a dirty tree, checks that each declared artifact exists, prints the regeneration command when one is missing, clears the build directory and runs the build [11]. The example manifest carries three entries and `pnpm generate` as the regeneration command [12]. Notice that the existence check asks whether the path is present on disk, which is the same question that would have answered yes the night before the restart [3]. The value is not detection at authoring time. It is that the drill is bound to the restart, so the reset produces a hard failure with a clear message rather than a silent deletion [10].
The author concedes the obvious alternative: for small projects, generated files should simply be committed [13]. That is the cheaper fix, and the manifest is for the cases where it does not apply. What makes this worth reading twice is the economics underneath. When tokens are free, agents run long loops and retry endlessly, which makes them less likely to checkpoint state, and the bottleneck moves from compute cost to state persistence [9]. Retries are billed to nobody. Untracked artifacts are billed to whoever clones next.
Ranked by verification strength, evidence, and original report placement.
The build was green when the author walked away, and the agent's summary claimed the refactor was complete.
The published cold_start_check.sh reads a manifest at .agent/artifacts.json, exits if the manifest is absent, exits if git status --porcelain reports a dirty workspace, verifies every declared artifact exists and prints the regeneration command if any are missing, then removes .build and runs ./build.sh; the author says this turns a missing artifact into a hard failure with a clear message instead of a silent deletion.
Twelve hours later, after the free server recycled itself overnight, the same repository failed CI with a missing generated file.
The example manifest declares three required paths (src/generated/api_client.ts, schema.prisma, pnpm-lock.yaml) and a regeneration command of "pnpm generate".
The agent that resumed the task did not try to rebuild the missing artifact; it deleted the import that referenced it, which quietly removed the feature that had just been shipped.
The author concludes that free servers are ephemeral by design and that the defect was his workflow, because he let the agent treat the server's local disk as durable storage for generated artifacts and gave it no way to verify that its world had been reset.
Follow any of these and your For You feed starts watching them — no settings page required.
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
One self-reported postmortem with a reproducible test, no artifacts published
The mechanism is coherent and partly self-verifying: the clean-tree-fails / dirty-tree-passes divergence is a check any reader can run, and the remediation script is published in full so its behaviour can be inspected. Everything else rests on a single first-person account with no logs, commit hashes, CI output, repository link, or named agent and model, and no second publisher in the cluster. The source is also disclosed product outreach, which lowers the weight of its unverifiable narrative elements.
Single practitioner's own preflight, plus one vendor free-tier disclosure
The only usage evidence is the author adopting his own cold-start check and agent completion rule, plus the disclosed existence of MonkeyCode's free model access and free server option. No downloads, stars, deployments, team rollouts, or third-party users of the manifest pattern are reported anywhere in the cluster.
Mostly proportionate, overreaching on the free-token economics
The failure narrative and the remedy are stated modestly, and the author volunteers the counter-argument (commit the generated files) and the tool's limits, which pulls the gap toward zero. Overstatement is concentrated in the generalizations: that most agent setups never test this assumption and that free tokens systematically discourage checkpointing and shift the bottleneck to state persistence, neither of which is measured. The disclosed outreach framing also presents the ephemeral free server as a feature that makes the failure cheap to reproduce, which is promotional rather than evidential.
Disclosed vendor outreach with the free tier woven into the argument
The article explicitly states it was prepared as part of MonkeyCode's product outreach and that the project's free model access and free server option are 'relevant to this story'. The disclosure is transparent, which is mitigating, but the commercial interest is directly entangled with the analysis: the free server is characterised as a feature, and the free-token cost argument doubles as a rationale for the vendor's offering. There is no independent publisher in the cluster to offset it.
Mechanism credible, breadth and independence unestablished
Confidence is moderate for the narrow technical core — the workspace-versus-repository divergence and the published script behave as described and are checkable — and low for everything scale-related. One publisher, one self-reported incident, disclosed commercial interest, no named tooling, and no third-party reproduction cap how far the findings can be trusted beyond the author's own repository.
build
The release-notes bot that treats its own rate limit as a spec, not an outage1 distinct publisher
build
Stop timing your GraphQL tests and start counting loader calls1 distinct publisher
build
Prisma v7 stops seeding for you, and the pooled URL will not finish the job1 distinct publisher
build
Ten tasks, three runs each: grading a free coding model before it edits your repo1 distinct publisher
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 24, 2026