Milestone 28b implementation record
Milestone 28b is complete under m28b-configurable-peft-training-and-import
and m28b-evaluate-canary-promote-rollback. The selected reference is a private
SmolLM2-135M LoRA workflow on Linux AArch64 NVIDIA with a KVM Queen. Completion
here is a component claim. It does not extend to a Pi 4 image, integrated Release
B, general model formats, or external inference routing.
Task record
Title/ID: m28b-configurable-peft-training-and-import; m28b-evaluate-canary-promote-rollback
Milestone: 28b / Deeper PEFT Lifecycle and Verified Serving
Goal: Complete pinned training and independent import, then measure and reversibly serve a real adapter under the original ticket and signed outcome.
Inputs: accepted M27d phase journal and verifier; M28/M28a authority; configs/cuda_recipe.toml; selected private KVM manifest; local base and disjoint data on Merlin2.
Changes:
- tools/cohesix-py/cohesix/hf_native.py and examples/private_lora_{release,import,client}.py — v2 pinned selection, safe independent import, complete Trainer-state checkpoints, native evaluation and application-facing serving.
- apps/coh/src/peft and apps/host-ticket-agent/src/executors — preserve the existing release transaction, enforce current generation and bind native phases to the admitted operation.
- tools/coh-rtc/src/recipe.rs, configs/cuda_recipe.toml and generated projections — declare the qualified LoRA, safe format, checkpoint and serving capabilities; QLoRA remains disabled.
- tools/cohesix-py/cohesix/model_release.py, SwarmUI projection, provider matrix and operator docs — expose bounded Python plan/submit/inspect/recover, signed verification, comparison and recovery state across the selected surfaces.
Commands: Focused commands and exact live case invocations below.
Checks: Separate genuine train, independent import and full-state resume; fixed held-out refusal; signed canary/promotion and observed application generation; interrupted transition with incumbent restoration.
Deliverables: Versioned reference and selection examples, supported native endpoint, focused tests, m28b-peft-live and m28b-serving-live reports, this record and Build Plan/Status completion.
AI assistance contributed source, focused tests, live probes and this record.
The v2 capability is limited to the selected local base, tokenizer, data,
Transformers/PEFT runtime, LoRA rank and safe adapter format. A full resume
retains adapter, optimizer, scheduler, RNG and Trainer position in immutable CAS
objects; an adapter-only restart cannot satisfy its checkpoint contract. The
independent imported adapter records unknown training provenance. Source and
format validation do not certify its licence or safety. The controller continues
to use the accepted M27d phase journal and shared signed verifier; Python and
SwarmUI project the same operation instead of creating a second evaluator or
outcome ledger. verified_success becomes true only after the shared CLI
verification succeeds for the requested outcome.
The compatibility review covered coh and cohsh, Hive Gateway and
host-ticket-agent, generated provider/recipe inventories, SwarmUI, the Python
SDK, and scripts/rest_perf_harness.py. The M28b request preserves the existing
peft.release host ticket, WorkerLora receipt and bounded phase ABI. The
benchmark harness neither parses native adapter bytes nor supplies a serving
result; no benchmark figure is claimed. No code under releases/ changed.
Selected source and host boundary
Implementation source 8c0147bad1c7dc893bac84d791da0166ec3d2c48 built
the qemu_smp_kvm_production KVM rootserver SHA-256
65bdf95b8fcb8def209a4da11104361f168a0b1cf04890a1a47ce3d5076bad51.
The selected generated manifest SHA-256 was
7e7a27ee02720e147fbf7f8386a689c1c6cb678c11377d574423a9157213bd52;
the payload CPIO SHA-256 was
ffb92871abebf865c75ed0121146c26d27ac2deee313dbf3fd63273cb674f6e0.
The live runner checked the KVM process, embedded source marker, loaded
elfloader/rootserver/CPIO, authenticated target boot, selected generated graph,
host binary digests, original WorkerLora receipt and independently enrolled
gateway/native/Worker signatures. Merlin2 ran the selected Orin GPU UUID
8cc9c407-2cc0-587a-8d93-b7e2754559cb, driver 595.78, and pinned
qualified Python/HF packages.
The subsequent closure commit adds this documentation path to the compiler’s
source-surface inventory and regenerates its graph hash. It does not modify the
selected M28b product logic or the root_task_resolved.json runtime manifest.
The live claims in this record remain bound to implementation source 8c0147b
and its stated image/graph, rather than being relabelled as a new-image run.
The original native profile SHA-256 was
adbec83c81c5285e765be2d93581c61a3b262b7a64bbff0c2d46de6f46cf92b7.
A second private deployment used profile SHA-256
3a2ff4efb37316dab76e8837cba135c349b9e7378707ef37e539d964f99955c5
for the positive checkpoint resume. Both profiles selected base
80521b40281d6ce74e35c9282c22539e75aa0ac8578892b2a59955ef78d55da1,
train set 3889f6bb44e744660eab6f5885752b48cd029035adb85403224ff760807c4dc5,
disjoint held-out set
95db14445cf85817f929b21673fb2c7db127508e1c2fabfa4a761f71fc077182,
seed 41 and 32 maximum steps. The second profile has a fresh local source
attestation and generation-zero base serving state; it does not rewrite the
first deployment’s incumbent or its negative comparison.
Base weights, private train/evaluation rows, prompts, outputs and adapters were
staged and executed on Merlin2. The Mac transferred source and KVM artifacts,
not those native payloads. The reference declares gated downloads and uploads
disabled; native base loading uses local files with remote-code loading disabled.
The selected processes were sampled for sockets every 0.5 seconds during each
case: 954 samples and 2,964 socket rows contained zero observed non-loopback
connections. This observation and declared local paths are narrower than a
network egress guarantee; no absolute no-transfer claim is made. Private input,
CAS and full native logs remain on Merlin2 under
/mnt/nvme/cohesix-dev/m28b-live-20260924/ and
/mnt/nvme/cohesix-dev/m28b-resume-20260924/.
Admitted lifecycle and requested outcomes
Each command below used a fresh operation and private reference. The retained
out/scripts/m28b-admission.py on Merlin2 prepared the immutable request,
enrolled separate producer keys, ran the canonical
scripts/ci/provider_conformance_run.sh matrix command with the case’s
reference.toml and live/ state directory, and retained both the agent and
runner results under out/private/m28b/session/cases/<operation>/. The selected
host profile was jetson-orin-nano-jp7 throughout.
python out/scripts/m28b-admission.py train m28b-train-final
python out/scripts/m28b-admission.py import m28b-import-final
python out/scripts/m28b-admission.py promote m28b-promote-final
python out/scripts/m28b-admission.py reject m28b-reject-final
python out/scripts/m28b-admission.py rollback m28b-rollback-final
M28B_NATIVE_ROOT=/mnt/nvme/cohesix-dev/m28b-resume-20260924 \
python out/scripts/m28b-admission.py resume m28b-resume-final-02
| Original operation | Signed native state and observation | Accepted generation | Signed graph SHA-256 | Live summary SHA-256 |
|---|---|---|---|---|
m28b-train-final |
succeeded; genuine 32-step training, held-out loss 4.92838860 |
4 | 39c6504199614c413803aba1f7fe5494d4e4a5b9d4f8271623205b1d4dddf737 |
2fcb55700e76fb95b9f7972def220d2f2e2fae268ccdf3bb76ad7db0c911ad99 |
m28b-import-final |
succeeded; compatible independent adapter, training provenance unknown |
5 | 94b77cc11b4f4e65c94ba157867028170f099e359d26029ea88956a994724185 |
db0feba2a6aa099bffff61dddebbfcfea169c0a868450c58f1bdb66b0ed395a7 |
m28b-promote-final |
succeeded; canary and separate application request saw adapter 6e32c5a1… |
6 | d59af576722be90605ecb612afd7bec1804f9ee75519136a147d034bd23752d3 |
ce452b0ac30cc939a418a76578c6bf42628820c3123588617c56874fb736e1d4 |
m28b-reject-final |
failed as specified; loss 4.93975401 exceeded incumbent 4.92838860; no load or promote |
6 | 5f08b40167e3bf9f2cc20bc777058ae1a12f8413ed188f0fa10bd62a13f4d029 |
28649181598f43d3a7fe14e98e1e25b84f5950275772464a448d54bd32eb99a8 |
m28b-rollback-final |
recovered_failure; interruption after load, rollback and another incumbent application request |
6 | c843405b06d8f7ae645a31dff5d725d7a24d05e578a0b5b5737ed2ecc154beb1 |
e181678ca50b33f2e753f38bb794fb71b4dd76b68cc5a87f12c5f64df333a098 |
m28b-resume-final-02 |
succeeded; restored source step 8, trained to step 32, loss 4.93017483 against fresh base 4.94147396 |
1 | 804bf56584895f60878b2db8d8aef7b1c587f07cea69996989deaf52b44c4154 |
ca1d6aafe37b9d0f112ed975ea6973cff25ae1b01e533753a3bcc5e59e38197e |
The resume source was a genuinely interrupted Trainer run
m28b-checkpoint-seed-01: it retained full-state checkpoint SHA-256
285d9571849a23472d1f46eafea515746e5a146d2a9b58c3a80e0cf75b1caf74
at step 8 without a source train.json. The admitted resume retained a new
step-32 checkpoint SHA-256
8f8e7a718b844a473eec1e8d60f56ebf78c87254161eccc69a6b01f5275c50e3.
Its output weights differ from the fresh training adapter, as the documented
stochastic setting permits. The original profile also resumed step 8 directly
to evaluation, but its 4.93017483 loss was worse than the existing incumbent’s
4.92838860; the predeclared zero-regression policy barred promotion. That
direct preflight is diagnostic, not an admitted target result.
The first fresh-profile admitted resume, m28b-resume-final, failed validation
because the scratch checkpoint seeding step had omitted its byte-exact source
request from private CAS. The checkpoint manifest already bound that request
digest. The same retained request bytes were added under that digest, the
checkpoint contract was rechecked, and a new target operation
m28b-resume-final-02 completed. The failed identity was not replayed or
relabelled. The private scratch seeding script was corrected; tracked product
logic was unchanged by that staging repair.
The fixed evaluation used 16 held-out rows and the same tokenizer, base,
preprocessing, evaluator and zero-regression policy for each candidate and its
incumbent. The rejected adapter never reached load. The accepted serving
adapter at generation 6 was
6e32c5a1ddfb0fd0ca5a740a9027382b4583332c91344bead8a4653f4b78f137.
The promote application record binds operation, generation, adapter, native
invocation, latency, prompt digest and output digest. The rollback application
record independently observed the same accepted generation and adapter after
the interrupted forward transition. The original serving unit was restored
and observed healthy at generation 6 after the separate resume deployment was
stopped. The private KVM and gateway processes were then stopped; their exact
image/session logs and signed case graphs remain under the private evidence
root.
The 14 bounded session and case reports were copied without model, dataset,
prompt or output bytes into ignored out/audit/m28b-source-8c0/. The verified
bundle SHA-256 is
b4d0d41caec6d1e7470e76833ca47bf1738b0c45dcb3e937d304f51180a60679;
the original signed graphs, native journals and serial transcript remain on
Merlin2 under out/private/m28b/session/.
Focused verification and limits
| Command or check | Result | Proof limit |
|---|---|---|
cargo test --locked -p coh --test peft_import --test peft_release |
PASS | Pure CLI release and import contracts, not target execution. |
cargo test --locked -p host-ticket-agent --lib executors::peft |
PASS, five tests | Host PEFT executor bounds and file handling; the admitted cases cover live release phases. |
cargo test --locked -p host-ticket-agent --lib executors::peft_release |
PASS, zero tests selected by this filter | Compile check only; it does not add a test claim. |
Qualified native PYTHONPATH=tools/cohesix-py python -m unittest discover -s tools/cohesix-py/tests -p test_hf_native.py -v |
PASS, six tests with cryptography | Artifact confinement and source-attestation inputs; no CUDA execution in fixtures. |
.venv/bin/python -m pytest -q tools/cohesix-py/tests/test_model_release.py tools/cohesix-py/tests/test_playbooks.py tests/test_provider_m28b_live.py |
PASS, 35 tests | Python identity/recovery and live-runner refusal logic. |
cargo test --locked -p coh-rtc recipe::; cargo test --locked -p swarmui --test workbench |
PASS, one recipe and nine workbench tests | Generated capability and UI projection, not a packaged app. |
node --test tests/frontend_peft_projection.mjs; scripts/check-generated.sh; scripts/ci/check_test_plan.sh; git diff --check |
PASS | Frontend projection and canonical source/catalog consistency. |
Selected m28b-peft-live and m28b-serving-live operations above |
PASS at their specified positive or negative requested outcomes | Exact-source KVM/Orin component evidence only. |
The qualified native virtual environment has no pytest module, so its six
unittest cases were run directly in that environment. The local Python
environment skipped one cryptography-dependent input test; the qualified run
executed it. Full release, Pi hardware, pressure, repeatability and packaged
desktop gates were not run for this component closure. A workspace-wide
cargo clippy --all-targets -- -D warnings attempt exposed unrelated existing
lint failures in the standing ledger, GPU bridge and compiler; it supplied no
M28b acceptance and was not used to weaken a check.