# Distro composition manifest — single source of truth for "what files make a
# deployable distro". Consumed by:
#   - lian-build/build_directives.ncl  (image_only → what the runtime image bakes)
#   - provisioning/content.nu          (content_hot → incremental PV hot-updates)
#   - just distro                      (site_tree + image_only → local tarball)
#
# Two layers, mapping the Build-Time vs Runtime tension (ADR-006):
#
#   site_tree    Capa B — delivered to the PV at /var/www/site/. Identical for
#                both render profiles, independent of the binary, updatable
#                without a rebuild. website.css under public/styles/ must be
#                freshly built (uno) before packing — that is an assembly step,
#                not a Dockerfile concern (the runtime image is content-agnostic).
#
#   image_only   Capa A — baked into the runtime image, per profile. The Leptos
#                WASM pkg/ is version-matched to the binary by construction:
#                baked to /usr/local/share/website/pkg/ and bootstrap-copied
#                into the PV. htmx-ssr ships no WASM, so its image bakes nothing
#                beyond the binary.
#
#   content_hot  Subset of site_tree that content.nu ships to a running pod with
#                no rebuild (markdown / locales / static assets). FTL changes
#                still require a restart; new routes require a full rebuild
#                (build.nu). Equivalent mechanism for both profiles — htmx-ssr
#                simply has a larger hot surface (no hydration tree to keep in
#                sync with the binary).
{
  site_tree = [
    "site/content",
    "site/config",
    "site/i18n",
    "site/templates",
    "site/public",
    "site/rbac.ncl",
  ],

  image_only = {
    "leptos-hydration" = ["target/site/pkg"],
    "htmx-ssr"         = [],
  },

  content_hot = [
    "site/content",
    "site/i18n/locales",
    "site/public",
  ],
}
