In any case, this is a problem inherent in the way globbing interprets
"../" -- filename generation does not obey the same rules as "cd" path
resolution.
torch% print ../*(/)
../bar ../foo
torch% print $PWD:h/*(/)
/tmp/cdtest/foo/baz
Completion uses globbing to generate the target file names, so this has
to be fixed up somehow in _cd before _path_files is called.
This patch is a step in the right direction, but has the side-effect of
expanding ".." into $PWD:h which is probably not desirable. There may
be other nuances [particularly with completion in the middle of a word]
that are not handled. So I'm not going to commit it, just presenting it
for purposes of discussion.