I'm curious if you do anything to control how the code evolves over time. Test suites are often incomplete and it's possible that behavior that is not fully specified may be unintentionally relied on.

If Specific regenerates code from the spec each time (which I'm not sure it does), there's the potential for different code each time even for parts of the spec that haven't changed. This seems like a nightmare for maintainability and debugability.

That's a good question!

> If Specific regenerates code from the spec each time (which I'm not sure it does), there's the potential for different code each time even for parts of the spec that haven't changed

It doesn't. When the spec changes, the coding agent takes the diff and turns it into the equivalent change to the codebase. The tests also run each time so that the coding agent does cause a regression as part of this. Although as you say, test suites are often incomplete. We are aiming to make it easier to build complete test suites in Specific than in regular code though because they are a part of the spec and the agent can you help write them as well.

We haven't done much yet in this area but I'm quite excited about how to evolve the codebase over time. I think we have an advantage in that a system evolving also means the specs are evolving and growing. We can maintain a loose mapping behind the scenes between specs and code for the coding agent, to give it the right context and keep code changes localised even as a system grows large. We can also refactor incrementally as we go as given that it becomes the job of the coding agent, instead of a human that might put it off.

Thanks for the reply! I still worry about debugability. What if the generated code doesn't actually follow the spec? I understand that then generated tests would fail, but I assume there will be cases where Specific will fail. With no access to the code, it seems like there's no way to correct this. Is there any sort of escape hatch for these cases?