I enjoyed your write-up, but what about the thief logic?
It's written in ZIL, which has a somewhat Lispy feel (for a bit of background, see another post by Plotkin here: http://blog.zarfhome.com/2019/04/what-is-zil-anyway.html). Infocom's own internal documentation for ZIL is here: https://archive.org/details/Learning_ZIL_Steven_Eric_Meretzk....
As I understand it, the thief doesn’t travel via room exits, but rather warps through the rooms sequentially in the order they’re listed in the code, skipping any that are sacred or non-land.