9.0 KiB
Release Payload Inventory, Deduplication, and Media Sizing
Status: Repository-derived planning baseline; no build authority.
Observed source revision: bea082a2014a3edc31cb006108b952c8adbbc8bc plus the uncommitted
specification changes in this task.
Observed artifact fact: autoinstall/cezen-ai-ubuntu2204.iso is 0 bytes and is not usable as a
release or sizing baseline.
Inventory Rules
Every payload object has one canonical inventory row containing object ID, class, immutable upstream identity, license, architecture, media type, compressed/download bytes, unpacked bytes, on-target bytes, digest, source URL/repository, included artifacts, activation profiles, dedup group, and evidence status. No bytes are counted from model names, tags, estimates, sparse files, or expected upstream size.
The release manifest is generated from the finalized inventory. The inventory is not reconstructed from an ISO after publication except as independent verification.
Four-Artifact Boundary
| Artifact | Embedded boundary | Explicit exclusions | Current sizing state |
|---|---|---|---|
| Online Universal Server | Ubuntu boot/install base, network/preflight/acquisition client, trust roots, signed-index support, local recovery/help | Platform payload, optional/large models and mutable default-branch source | Current checked-in ISO is 0 bytes; no valid measured size |
| Offline Workstation AMD64 | Ubuntu base, universal NVIDIA/CPU-adaptive platform superset, required packages/runtimes/images, local help/recovery, approved small starter models | AMD GPU/ROCm, ARM64 DGX Spark, large optional models, customer license/data | Candidate lists exist; no complete built payload or measured ISO |
| Offline Server S/M AMD64 | Ubuntu base plus superset required for both S and M; selection restricted to starter/basic; small approved starter models only |
Server L/Max selection and large models | No complete inventory/build/size evidence |
| Offline Server L/Max AMD64 | Ubuntu base plus enterprise platform superset for L and Max; selection restricted to pro/max; only approved bootstrap/small validation models |
Large L/Max models, which are separate signed packs | No complete inventory/build/size evidence; current roles do not yet prove a distinct payload |
Architecture is part of artifact identity. Any later Workstation ARM64 media has its own inventory and measurements while remaining the same commercial product category.
Repository-Derived Candidate Inventory
Common source and trust
- Exact platform source revision excluding
.git, ISOs, offline output, user collateral and secrets. - Boot/autoinstall data, first-boot/browser setup, install orchestration and Ansible roles/playbooks.
- Portal, backend, local documentation, recovery and diagnostic tooling.
- License public key, artifact trust roots, manifest schemas, signature/revocation policy and SBOM.
- Ubuntu installer/base identity and boot metadata.
Current Workstation offline lists
- 26 non-comment APT package names.
- 15 non-comment additional Python package requirements plus backend requirements and pinned
chromadb==0.5.23. - Six container image names: Open WebUI, vLLM, DCGM exporter, Prometheus, node exporter and Grafana.
- Miniconda, Ollama runtime, K3s, MinIO and
mcbinaries described by the current offline material. - Ollama
phi3:miniandnomic-embed-textcandidate pins plus the Hugging Face Phi-3 snapshot.
These are candidate inputs, not complete objects: several versions/tags, licenses, transitive packages, architectures and actual byte/digest inventories remain unresolved.
Role matrix
| Role | Workstation adaptive | Server S | Server M | Server L | Server Max |
|---|---|---|---|---|---|
| Base, Docker, Ollama, vLLM, ChromaDB, monitoring, backend, ttyd, Nginx | Profile-dependent | Yes | Yes | Yes | Yes |
| JupyterLab | Optional/profile | Optional | Yes | Yes | Yes |
| K3s, MLflow, MinIO | Not enabled on low profiles; payload decision pending | No | Yes | Yes | Yes |
| NVIDIA driver/runtime | Only on supported NVIDIA profile | Hardware-dependent | Hardware-dependent | Required profile decision | Required profile decision |
| Large default model | Separate pack | Separate/not required | Separate pack | Separate pack | Separate pack |
The existing entry, pro, and max playbooks contain the same role set. Pro/Max differ primarily in
model choice, tensor parallelism, quantization and hardware expectations. Because large models are now
separate packs, current repository evidence does not yet prove that Offline Server L/Max needs a
materially different boot payload from the Server M superset. The agreed separate L/Max artifact may
still be justified by support boundary, validation, driver/runtime, capacity or enterprise policy,
but that distinction must be explicit before implementation.
Deduplication Policy
- Every object is identified by SHA-256 of exact bytes. Identical digests share one dedup group.
- Within one artifact, store identical package/wheel/image/model/runtime objects once; manifests may reference the same object from multiple profiles/tiers.
- Container layers are deduplicated by compressed layer digest, not image tag.
- Python wheels and APT packages are deduplicated by exact file digest and architecture; different builds/architectures are distinct even when package/version text matches.
- Model weights are deduplicated only when exact object digests match. Similar model names or quantizations are distinct.
- Shared source, local help and portal/backend copies use one canonical payload object and explicit install destinations rather than duplicated archives.
- Deduplication across separately distributed ISOs does not reduce each customer's media size and is reported only as build-store efficiency, never as ISO byte reduction.
- Compression savings and filesystem sparse allocation are recorded separately from logical bytes.
Measurement Worksheet
For each build candidate record exact bytes:
| Component class | Unique compressed bytes | ISO/on-media bytes | Unpacked target bytes | Staging bytes | Rollback bytes | Evidence |
|---|---|---|---|---|---|---|
| Ubuntu boot/install base | TBD | TBD | TBD | TBD | N/A | Base ISO digest/signature required |
| Platform source/config/help | TBD | TBD | TBD | TBD | TBD | Exact revision/archive digest |
| APT packages/repository metadata | TBD | TBD | TBD | TBD | TBD | Resolved package manifest |
| Python/Conda environments | TBD | TBD | TBD | TBD | TBD | Wheel/conda explicit lock |
| Runtime binaries | TBD | TBD | TBD | TBD | TBD | Immutable URLs/digests/licenses |
| Container layers | TBD | TBD | TBD | TBD | TBD | Digest/layer inventory |
| Starter model objects | TBD | TBD | TBD | TBD | TBD | Exact model/layer inventory |
| Trust/SBOM/provenance/manifests | TBD | TBD | TBD | TBD | TBD | Signed build output |
| ISO filesystem/boot overhead | N/A | TBD | N/A | N/A | N/A | Final image measurement |
Totals MUST distinguish download/media bytes, target bytes, temporary staging, last-known-good rollback and operational free space. Target disk minimum is not the same as USB capacity.
Media Capacity Rule
After final ISO bytes are measured, compute required_flash_bytes = final_iso_bytes + tool/filesystem overhead, then add at least 20% headroom. Publish the smallest commonly available USB capacity above
that result. Recommend the next larger capacity when field reliability or signed forecast growth
requires it. Record exact arithmetic and artifact digest.
Current 2–4 GB Online and 35–50 GB Workstation numbers remain labelled estimates only. Offline Server S/M and L/Max sizes remain unpublished until their resolved inventories are built and deduplicated. Large-model-pack media is sized independently from boot media.
Evidence Gate
- Resolve every input to immutable version/revision/digest, architecture and redistribution license.
- Produce SBOM and object inventory before assembly; verify every fetched byte.
- Fail the build for missing, extra, duplicate-path/different-digest or mutable-tag objects.
- Build from a clean staging host, record logical and physical bytes, and verify manifest totals.
- Extract the ISO independently and reconcile every embedded object to the signed inventory.
- Complete zero-network install and record actual peak target/staging/rollback disk usage.
- Repeat the build to assess reproducibility; unexplained digest differences block release.
- Product/delivery approve the L/Max split justification after comparing its resolved payload to M.
Open Decisions
- Exact immutable Ubuntu, APT, Python/Conda, runtime, image and binary inputs/licenses.
- Whether K3s/MinIO tooling belongs in Workstation media when disabled for lower profiles.
- Small bootstrap-model boundary for Server S/M and L/Max.
- Concrete platform difference justifying separate Offline Server L/Max media after large models are removed.
- Compression format/level, reproducible timestamps/ordering, SBOM/provenance formats and build host.
- Published USB capacities only after real artifact and flashing measurements.