The filesystem layout is a convention.

The essential form of a Catalog is just a series of IPLD objects. We project them into a filesystem layout based on some of their properties, for convenience and ease-of-splunking.

Everything is also linked by hash, and the filesystem paths shown here have nothing to do with that merkle tree. (That a git merkle tree can be computed over the filesystem projection is true, but generally considered incidental.)

Filesystem Outline

Example catalog filesystem outline:

{catalogroot}/{moduleName}/_module.json
{catalogroot}/{moduleName}/_releases/{releasename}.json
{catalogroot}/{moduleName}/_mirrors.json
{catalogroot}/{moduleName}/_replays/{HASH}

Why like this?