As of version 1.4.1, Hatta checks page existence by looking for a corresponding file in the working directory. The file doesn't even need to be tracked by Mercurial – as long as it is ther, the page is considered to exist. This is mostly for performance reasons: this is by far the most common operation in the wiki (may happen dozens of times per page view, on average), and doing the check by looking for the file in the tip's context is about 60 times slower. It would be about 7 times faster instead if that context could be reused between checks – but that would cause trouble when the repository is updated, and is difficult with current structure of code.
It is possible to commit into Mercurial repository using memctx without having to touch the files in the working directory. Hatta currently (as of 1.4.1) doesn't do that, because then merging is problematic. Developing custom merging would make it possible to use that.
As of version 1.4.1, Hatta reads data directly from the files in the working directory. As with page existence, the file doesn't even need to be tracked. This enables fast reading and serving the files directly by the webserver using the file_wrapper WSGI feature.