Oops. After an error, *to-be-awakened* needs to be cleared in a protected form. That stuff is ugly, and I think Cells: The Next Generation will make that and other ugliness go away.
For now, try this:
(defun to-be (self) (trc "to-be> entry" self (md-state self))
(progn ;;wtrc (0 100 "to-be> entry" self (md-state self) (length *to-be-awakened*)) (when (eql :nascent (md-state self)) ;; formwithview to-be-primary :after => rv-stitch! => side-effects (let ((already *to-be-awakened*)) (setf *to-be-awakened* (nconc *to-be-awakened* (list self))) (unwind-protect (progn (trc nil "to-be deferring awaken" self) (kids self) ;; sick, just for side effect (unless already (trc nil "top to-be awakening deferred" self (length *to-be-awakened*)) (do* ((mds *to-be-awakened* (cdr mds)) (md (car mds) (car mds))) ((null mds)) (if (eql :nascent (md-state md)) (md-awaken md) (trc nil "not md-awakening non-nascent" md))))) (setf *to-be-awakened* nil))))) self)
kt