Wrong answer. Now what?
Trying again is how students learn. We want to give them something useful to work with on their next attempt: visualizations, hints, and feedback that help explain what the code actually did without solving the problem for them.

Keep the problem connected to what students submit
Forge knows how the problem is put together. Keeping that information attached when the problem reaches a course gives us more to work with than a verdict alone.
Okay, so why build another problem editor?
Most problem development tools leave you with a statement, a validator, a generator, some test data, and several scripts. Each one knows a slightly different piece of the same problem.
Forge asks you to describe the problem itself. If the input contains a graph, you say that it is a graph, how large it can be, and what properties it has. Forge can then use that same description in more than one place.
Validators and basic generators are the obvious uses. The more interesting use is understanding the test data and, eventually, which kinds of cases students get wrong.
This does mean doing things the Forge way. Forge has opinions. That is mostly the point.
…and other possibilities
That is the plan, anyway.
Build decent tools for programming courses, keep the student experience pleasant, and make wrong answers a little less useless.