Jay killed it on purpose.
The first time, Agate was midway through sprint one, implementing the third of five tasks. The CSV parser was done. The JSON formatter was done. The CLI entry point was in progress—half-written, half-compiled, the Go file open in the agent's context. Jay pressed Ctrl+C. The terminal printed a clean shutdown message and returned to the prompt.
Then he typed agate auto and pressed Enter.
The system read the .ai/ directory. Interview: done, the file existed. Design: done, both files existed. Sprint plan: done, the file existed. Tasks one and two: done, their checkboxes were checked. Task three: in progress, the checkbox was unchecked, but the source file existed on disk in a partial state.
Agate picked up task three from the beginning. Not from scratch—it didn't regenerate the interview or the design or the sprint plan. It didn't redo tasks one and two. It simply looked at the state of the world, determined what had been completed and what hadn't, and resumed from the point of interruption.
"It works," Jay said, with the tone of someone who had expected it to work but needed to verify.
He killed it again. This time during the assessment phase. Re-ran agate auto. The system detected that all implementation tasks were complete, skipped straight to assessment, ran the tests, and produced the assessment report.
He killed it a third time, during the design phase. Re-ran. The system found the interview complete but the design missing—the files hadn't been fully written before the kill. It regenerated the design documents from the interview responses and continued.
Navan watched from across the room, alternating between amusement and concern. "How many times are you going to kill it?"
"Until it breaks," Jay said.
He killed it eleven more times over the course of the afternoon, at every possible point in the lifecycle. Between tasks. During tasks. Between phases. During file generation. During test execution. Each time, agate auto resumed correctly. The state was on disk. The state was the files. If a file existed and was complete, the step was done. If a file was missing or incomplete, the step needed to be redone. There was no in-memory state to lose, no transaction log to replay, no recovery procedure to invoke.
"It's like a build system," Jay told Navan. "Make checks if the output file is newer than the input file. Agate checks if the output file exists and is complete. Same principle. Idempotent resumption from filesystem state."
"You seem pleased," Navan observed.
Jay was pleased. He had spent years building systems that needed to be resumable, and the engineering effort was always the same: checkpoint state, persist to durable storage, implement recovery logic, test the recovery paths. Agate's approach was to make the state so simple and so visible that resumption was trivial. No checkpoint mechanism. No recovery code. Just files on disk and the logic to read them.
"Fourteen kills," Jay said, closing his terminal. "Zero data loss. I'm satisfied."
Jay deliberately killing the process fourteen times is the most SRE thing anyone has ever done. "Until it breaks" is not a testing strategy, it's a lifestyle.