First, thanks for catching my errors. I appreciate your comments.
As far as identical titles "Headers + Redirect" for defopr and defopr-raw, I'll take your suggestion and change defopr's title to "Redirect", even though the truth is more complex. The way they work:
defop: takes req as argument, body prints HTML
defop-raw: takes (stream req) as arguments, body prints headers, blank line, HTML
defopr: takes req as argument, body prints headers, returns (not prints) redirect path
defopr-raw: takes (stream req) as arguments, body prints headers, returns redirect path
Everything seemed straightforward between the plain and the -raw macros, until I realized that defopr and defopr-raw both let you modify the headers. So the only difference is defopr-raw uses an extra stream argument, which hardly seems worth a separate macro.
So if I were in charge of Arc, I'd get rid of defopr-raw and arformh, and I'd drop the stream argument from defop-raw.
This may be a longer answer than you were looking for :-)
Nope, not too long, the more information the better. Thanks for the reply, I definitely appreciate the extra info. Keep up the good work, the arcfn site is a godsend for anyone learning Arc.