Live data from Hacker News

Ask HN: Is AI code verification becoming your main bottleneck?

news.ycombinator.com

11–15 of 15 posts

Re: Ask HN: Is AI code verification becoming your main bottleneck?

#11

Have you tried using coderabbit? After code review is done, I once run relayevals.com right before I merge to double check. It gives you a clear PASS/BLOCK verdict to tell you whether the code is merge ready. I know the founders personally, do try if you're curious. Otherwise coderabbit should do the trick for you.

This is super helpful, thank you! I've heard of CodeRabbit but didn't know about RelayEvals. I'll definitely look into them. Since you use both, I have a quick beginner question: Does RelayEvals actually catch those 'silent' logic bugs I'm scared of (like breaking a hidden edge-case), or does it mostly just check if the code is well-written? What is the main thing you still have to manually double-check even after they both give it a PASS

Re: Ask HN: Is AI code verification becoming your main bottleneck?

#15
post #3

Congrats and welcome to the wonderful world of ports. I would say yes, verifying that the code not only does what you expect but also doesn't do anything of the things you do not expect, is the main bottleneck. That is: do-all-the-things, please, and don't-do-all-the-non-things, as well. Ideally, one can reason through their application at a high-level and have a "spec" or specification that the LLM can build from an…

Thanks, this is really helpful. I never thought about the “doesn’t do anything I didn’t expect” part. That actually seems harder to verify than just checking if the feature works. When you say you use specs, tests and LLM reviews before shipping, how do you personally know when you’ve tested enough to actually feel confident shipping? Is there a point where you just have to trust it and ship?

Every app is a state machine. If you have not learned about Finite State Machines (FSMs) I highly recommend you take a weekend or two and watch some videos, read some stuff on them.

Learn to draw your own Finite State Machines.

Essentially, we identify "states" of our "program" and then we move between them via transition lines/arrows. Eventually we encounter an "accepting state" and then the "program" is done. In reality, programs don't ever really get to "done" mode, but algorithms do.

Consider a simple task like eating cereal in the morning:

1) Get bowl

2) Get cereal

3) Get nondairy milk

4) Pour cereal into bowl

5) Pour just enough milk to keep cereal crunchy

6) Use spoon to take a bite

7) Crunch

8) If there is still cereal, go back to bowl with spoon, number 7; otherwise, go to 9

9) Done! Do the dishes, I guess.

Now if you draw that out as circles with arrows, you end up with some state transitions going backwards, some going forwards, and some looping back on themselves.

Reasoning about your app should be the same. There should be a "finite number of states" and well-understood transitions between the states.

When you have tested all the states and all the transitions between them, you have tested 100% of your program. 100% when it's gritty and dirty and connected to the rest of the "real world" [is tough] because it's not existing in isolation, 100% is like the ideal but you can be happy with 80-90% certitude you've covered it "all."

Post reply on HN