That's certainly strange behavior. I'm wondering if the uhttpd configuration kept somehow getting messed up. /luci is a virtual path that's handled with the config lines
        option lua_prefix '/luci'
        option lua_handler '/usr/lib/lua/luci/sgi/uhttpd.lua'
So it seems like it wasn't invoking the call via the lua engine for some reason. It is added during the firstboot process which would mean it could fail if for some reason the SD card stays read-only. I just looked over the code and I don't see anything that stands out as something that could cause this to happen, but I will definitely keep my eyes open and see if I can reproduce this.