+The source of parent-child relations between ``Books`` is
+the ``dc:relation.hasPart`` metadata field, exposed by
+:py:class:`librarian.dcparser.BookInfo` as ``parts``. This relation
+and the order of children of one parent is expressed with the child
+book's ``parent`` and ``parent_number`` fields.
+
+But aside from that, Tags are used for managing those relationships, too.
+
+Every ``Book`` has a matching `l-tag`. It's a ``Tag`` of category
+``book`` and matching slug with an added 'l-' prefix (the prefix
+is superfluous and we should remove it as some point, as it was only
+needed when tag slugs had to be unique).
+
+The `l-tag` of a ``Book`` is used on:
+
+* all of the book's fragments,
+* all of the book's descendants,
+* all of the book's descendants' fragments.
+
+This is used for:
+
+* finding fragments of a given theme in books with a given user label,
+* on a filtered book list (i.e., author's page), for eliminating
+ descendants, if an ancestor is already on the list,
+* when calculating tag book counts, for eliminating descendants as above,