After some research I've found that it can be done, but it is counter-intuitive. Fossil doesn't really care what happens to directories; all it cares about is the location of the files within them.
When renaming a directory, Fossil appears to:
- loop through the repository's list of files for the old directory;
- locate the file in the new directory on the filesystem;
- update the files' metadata so that they are listed as being part of the new directory.
If the new directory does not exist, this fails. There are no files in the new location so Fossil cannot match up the old with the new, so no changes are made.
In short: You must rename the folder via the filesystem before you try to make the change to Fossil. If you don't, Fossil ignores you.
Now that I think about it, this makes sense, though I'd prefer it if Fossil would just update the filesystem itself instead of forcing a two-step process on its users.
As an addendum, it appears to be impossible to add an empty directory to Fossil. I assume that internally it stores just files; folders are considered to be metadata. An empty folder is metadata describing nothing, so adding them makes no sense.