Context
From the #1439 review (#1439 (comment)): compose-mtp is exercised today by the HF job on real weights (published composite passes validate-mtp-attach), and compose_mtp.rs has unit tests including a synthetic sharded fixture with split.tensors.count. But nothing in the repo CI lanes runs the compose-mtp path end-to-end on a fixture, and scripts/hf-skippy-mtp-compose-job.py has no scripts/tests coverage.
What is missing
- In-repo compose-mtp fixture test: tiny sharded GGUF (e.g. 2 shards, few layers) + tiny MTP draft →
skippy-quantize compose-mtp → load the composed output through the prepare-llama.sh pinned build (the loader check is the point — it is what the original review blocker was about: split.tensors.count and per-layer array metadata must match the loaded tensor names).
scripts/tests coverage for the HF job script: arg/default contract at minimum (--work-dir default, secrets check), following the existing scripts/tests patterns.
Acceptance
- A CI-exercisable test composes a fixture and loads it with llama.cpp successfully.
- The HF job script has basic contract tests in
scripts/tests.
Fast-follow to #1439; keeps the PR itself scoped to the pipeline + patches.
Context
From the #1439 review (#1439 (comment)): compose-mtp is exercised today by the HF job on real weights (published composite passes
validate-mtp-attach), andcompose_mtp.rshas unit tests including a synthetic sharded fixture withsplit.tensors.count. But nothing in the repo CI lanes runs the compose-mtp path end-to-end on a fixture, andscripts/hf-skippy-mtp-compose-job.pyhas noscripts/testscoverage.What is missing
skippy-quantize compose-mtp→ load the composed output through theprepare-llama.shpinned build (the loader check is the point — it is what the original review blocker was about:split.tensors.countand per-layer array metadata must match the loaded tensor names).scripts/testscoverage for the HF job script: arg/default contract at minimum (--work-dirdefault, secrets check), following the existingscripts/testspatterns.Acceptance
scripts/tests.Fast-follow to #1439; keeps the PR itself scoped to the pipeline + patches.