I've made a test for this. I have, however, not been able to fix it myself. The commit with the test is here: rbgrouleff@7f0450c
The gist of it is basically that the base_dir seems to be reset to '.' when child2.js calls require('./child3'); which means it tries to find child3.js instead of lib/child3.js.
Fixes issue #1 (see github).
Thanks for reporting :)
A new version of Hercules has been released with this fix :)