Historically, Redbol has put a lot of information into the FORM-ing of ERROR!s.
To give an example, this Red program:
Red []
boom: func [] [do make error! "boom"]
e: try [boom]
print ["Your error was:" form e]
Produces the following output:
Your error was: *** User Error: boom
*** Where: do
*** Near : do make error! "boom"
*** Stack: boom
That's awfully prescriptive, in terms of including stars and such. (Ren-C includes optional File and Line components, so there's more information).
I ran into problems with this approach specifically because I want some errors to show up as "PANIC" with others showing as "ERROR" in the console... based on whether it's an exception or a definitional ERROR! as a direct evaluation product.
What If FORM is Just the Message Part?
The only non-trivial behavior of FORM with errors is the knowledge of the arg1: arg2: convention and splicing those into the message template.
The rest of it is just picking fields out if they are there, and molding them.
So what if you FORM an error and that gives you the message, with the rest done by some usermode function?
It seems to me the knowledge of whether you want to use stars or things like that is kind of a console decision. If you build a Rebol without a console then maybe you'd just fall back on MOLD by default?