The thread I linked to contained the answer I needed. I'll post this here in case it helps someone in the future:
(progv '(*control-srate*) (list *sound-srate*)
(sum s (pwl
0 1
0.5 1
0.5))
)
This sets the control rate equal to the sound sample rate, thereby allowing the pwl function to draw directly to the target level in a single sample.
Also, it appears that statements in Lisp are made sequential by simply putting the next statement as the last parameter to the previous statement. For example, here the statement to call 'sum' is within a block that is the third parameter to progv. Is that correct and general?