Files
club-3090/scripts/lib
noonghunnaandClaude Opus 4.8 639525bd85 c3 Download: registry-driven companion artifacts (DFlash draft / mmproj)
A catalog slug's compose can mount a SEPARATE weight artifact beyond its core
weights — a DFlash draft model or an mmproj vision projector, from a different
subdir.  The cockpit Download fetched only the core, so those 8 slugs (5 DFlash
+ 3 GGUF-vision) would download, read "present", offer Start, then fail to boot
for the missing companion.

The registry is the single source of truth: the cockpit gets every catalog slug
from it, so the slug's required artifacts come from it too.

- compose_registry.py: new per-slug `weights_companions` field — the extra
  weight-variant keys a slug needs beyond `weights_variant`.  Set on the 5 DFlash
  slugs (-> anbeeld-dflash-iq4xs) + 3 vision slugs (-> gguf_mmproj_f16).  Per-slug,
  so a text slug sharing a vision GGUF variant (e.g. llamacpp/default on
  unsloth-q4km) does NOT over-fetch the ~1GB mmproj.
- registry-emit --json: emit `weights_companions` + `drafter` + `vision` (vision
  derived from the vision-coding workload).  drafter/vision also enable a future
  catalog badge.  test-registry-json contract updated.
- setup.sh: read WEIGHT_EXTRA_KEYS (a <model>:<variant> list) and fetch those
  alongside the core via the existing companion-download loop + per-file SHA
  verify.  setup.sh stays the weights-layer puller (model profiles); it does NOT
  depend on the slug registry, so the historical pre-registry "download + test a
  new model before it has a slug" path is untouched.
- cockpit: run_weights_download passes entry.weights_companions as
  WEIGHT_EXTRA_KEYS (model-qualified); weights_state is companion-aware (a slug
  is PARTIAL, Start gated + Download offered, until BOTH core and companions are
  on disk); CatalogEntry gains weights_companions / drafter / vision (attached to
  the row like `source`, no shared-core schema change).

+5 tests (row-attach, companion env injection, companion-aware state, setup.sh
WEIGHT_EXTRA_KEYS, registry-json contract).  Suite: tui-core 66, serve-cockpit
665 (+1 skip), repo gates 56/0.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-06-22 13:41:27 +00:00
..