Since version 1.9.1 flatpak uses custom format for repo summaries, in
order to keep the sizes of summary files down, both for transfer and
on-disk storage. The core format is still an OSTree summary file, but
there are some differences both in how it is used and what it
contains.

Flatpak still generates the old summary file for backwards compatibility. However
the summary-arches option in the [flatpak] group of the repo config can limit
which arches has refs put into the compatibility summary.

In addition flatpak generates a set of new summaries for named subsets
of the refs in the repo, as well as a summary index that refers to
these.  By default there are one subset for each architecture (each
architecture subset also includes refs of compat arches, such as i386
for x86-64). In addition, any commit that has a `xa.subsets` key (of
type `as`) will generate extra summaries named `$subset-$arch` in the
index in addition to the normal ones named `$arch`.

The summary index is a GVariant of type `(a{s(ayaaya{sv})}a{sv})`.
The first is an array of information for each sub-summary containing:
the subsummary name, the sha256 checksum and an array of checksums for
previous versions of the subsummary and an extensible metadata dict.
The second part is a toplevel extensible metadata dict, which is used
similarly to the toplevel dict in the summary. In fact, it contains
many of the the same global keys that previously were in the summary
dict (and which no longer are in the sub-summary dicts), such as
repo title, icon, url updates, etc.

The index is stored in the file `summary.idx` and in addition there is
a GPG signature of this in the `summary.idx.sig` file. The
subsummaries are stored in the `summaries` subdirectory and are named
`$digest.gz". These contain gzip-compressed ostree summary files (with
the sha256 checksum being of the *uncompressed* data).

Flatpak stores up to `[flatpak].summary-history-length` (default 16)
old versions of the sub-summaries and generates deltas between these
and the current version, named `$from-$to.delta" which are very simple
binary diffs that clients can use to efficiently update from older
versions of the summaries.

The sub-summary files don't contain any delta information, instead
relying on the delta-index support in OSTree 2020.8. They also don't
contain any timestamps in the per-ref dict, as these are quite large
and not currently used by flatpak. The format of the flatpak metadata
caching in the summary is also different. Instead of using separate
`xa.cache` and `xa.sparse-cache` the same information is now stored
in the regular per-ref metadata dict in the summary.

On the client side flatpak keeps a cache of the current summary index
(named `$remote.idx` and `$remote.idx.sig`), as well as one subsummary
per remote and arch (named $remote-$arch-$digest.sub`). Only the
subsummary with the most recent mtime is kept.
