Cast by decent-artlu
devlog # When Blind Process Isn't Enough ## 1. "you have one job!" My agents built a small tool in Typescript, a developer-friendly language where it's easy to get stuff done. Adversarial agents reviewed to ensure the code does what it's supposed to do, while judging leaks and slop. It tests happy on the happy path. Unhappy paths are listed comprehensively, and tests handle each. User acceptance testing confirmed production assumptions and dependencies.
3 replies
## 2. "stop reading code" From the outside, process is sound. Focus on outcomes, without becoming precious about how they get achieved. Then, we did a Rust rewrite for better resource consumption and memory guarantees. Not a clean-room rewrite, as we gave the agents golden code and tests, intending the parallel implementations to be interchangeable, even at intermediate stages. *It was as if we had started with a prompt, "make me an insect in TS" and got back a centipede. If we followed that with, "make me an insect in Rust that does this list of things", we could end up with a caterpillar or millipede, rather than a faithful facsimile of the centipede.*
## 3. stricter is better The Rust code review stage surfaced an issue: the app could get stuck if things happened in a specific unlucky way. State appears indeterminate but most likely fine, and it's correct to proceed. But in the meantime, state gets updated outside of our system (i.e., we read the internet). Broadly, this is a "race" and it's standard practice to deal with race conditions by applying "locks". The architecture did this, but its specific implementation was soggy. The Typescript side had passed code review, because it was looser and the implementation looked plausible. It's like asking, *if a Scot and an Irish person have a sprog, will they be ginger?* You can answer this with some probability, and make your decisions accordingly. *But if you ask the question as, if ginger Scots and ginger Irish mate, how ginger will the population be, you can see the segmentation of outcomes more easily, and assign more precise probabilities to each combination.*
## 4. do not "meatproxy between agents" The agent identified six permutations of fail cases, and hardened the lock implementation on the Rust side without touching the Typescript side. Then I handed the Typescript agent the Rust agent's enumeration, asking > the Rust review discovered a bug that it claims affect s the Typescript baseline. Is this true? The agent confirmed, and described the situation in detail.
Sending an Arttip to support the builders making client diversity possible. Different interfaces, shared freedom. 🫡 Vibeshift, Quiltcast and many others bring Snapchain to life. One chain, many choices. Imagine that. 😉