ds4-winhip / docs /rust-migration /SPLIT_READINESS.md
staccs's picture
ds4-winhip: Windows/HIP 7.2 build tree, launcher, supervisor, bench + notes (part 6)
5396c20 verified
|
Raw History Blame Contribute Delete
9.05 kB
# ds4-dfm-rs split readiness
Historical decision: **GREEN for guarded repository seeding**. The split
completed at genesis `fe7733fb4f7e18204b6ea0a00fe3b136d2029b17`. This record
preserves the original decision and evidence; seeding is not a pending task.
Use the [v0.1.0 ledger](../releases/v0.1.0.md) for current qualification.
Decision date: 2026-08-31 KST
This document closes the pre-split Rust-host campaign. It does not authorize a
CUDA/MMQ rewrite: the independent repository keeps the Rust host over the same
native backend.
## Immutable identities
| Item | Identity |
|---|---|
| Release baseline | annotated `v0.6.5-dfm` tag object `07a7fc7a5d68e32170cb320b7a4d69042c85bb3a`, peeling to `d02e2a4777a34a9f52fd987453b3ea1801fac52e` |
| Qwen C behavior cut | `4d40d97f1e575400237a6e5cef21d7f74404a38d` |
| Rust live-family freeze | `eb4ba7790da11f037cacc199a2d48d769956347b` |
| Rust host implementation freeze | `d126e56877390e9522dde333a34f0d582c3e246c` |
| Recommended split ref | annotated tag `ds4-dfm-rs-genesis`, created on the commit that first contains this green document |
| Destination scaffold | `b01d1fa4172a5c957fe1232774629a192493efe4` |
| Destination | `https://github.com/Baekpica/ds4-dfm-rs`, public non-fork, default branch `main` |
| License SHA-256 | `c4c2d4cef8d91b06bf07911b49edd662c3fbcad027acb135c816ec0281d17247` |
The baseline and Qwen cut are ancestors of the implementation freeze. A commit
cannot contain its own SHA, so the literal genesis SHA is resolved by
`git rev-parse ds4-dfm-rs-genesis^{}` after this document is committed. The
annotated tag and the target repository lineage document are the immutable
record of that SHA.
## Gate result
```text
Baseline: v0.6.5-dfm
Rust host parity: PASS
CUDA backend: unchanged / native
Model families: PASS
API surfaces: PASS
KV: PASS
Performance: PASS
Known Rust regressions: NONE
C-shared gate gaps: E-2, E-3, E-6
Long soak: Qwen Q5+Sidecar only, PASS
```
The current 60-cell host matrix is PASS 57 + PASS* 3, FAIL 0, BLOCKED 0.
Every PASS* cell was re-run against a C control; no C-pass/Rust-fail cell was
accepted or removed.
| Group | Result |
|---|---|
| G0 host, parity, shared kernels | 13 PASS at `d126e56` |
| G1 DeepSeek KV, API, proof | 23 PASS; no repeated long soak |
| G2 Motif family, bank shutdown, barrier, ABBA | 9 PASS; E-4 and E-5 fixed and re-run |
| G3 Solar | 8 PASS + 1 PASS*(E-3) |
| G4 K-EXAONE | 2 PASS + 1 PASS*(E-2) |
| G5 dots3-note | 2 PASS + 1 PASS*(E-6) |
E-2 and E-6 were reproduced by exact `v0.6.5-dfm` sm_121a controls. E-3 was
reproduced by the frozen C server. E-1 remains an older C-shared Motif stats
backlog entry, not a Rust-only failure or a current matrix exception. The full
ledger is [ENGINE_GAPS.md](ENGINE_GAPS.md).
## Qwen release scope
Only the requested primary deployment was loaded: three Q5 main shards and
four shared BF16 SSD-PLE sidecars. Q6, original safetensors, and resident BF16
GGUF validation were intentionally out of scope.
```text
b8c8633f475351008d68981f4b37b409669b3dabd1620d6ead12584e648fe523 Qwen3.8-Flash-Next-MQ-Q5-SSD-PLE-BF16-00001-of-00003.gguf
14a3514bbf080266d501b07aa9da73ee1e0bfcf5ffd6bf0669034ed4b3fd35c9 Qwen3.8-Flash-Next-MQ-Q5-SSD-PLE-BF16-00002-of-00003.gguf
92dfbce1fcc6f722ac0ef7ec100bda02fbeb7b1b5cfecd1b57e51e18f82df111 Qwen3.8-Flash-Next-MQ-Q5-SSD-PLE-BF16-00003-of-00003.gguf
c13cfa3065b2343de314d31c0061fdb4471505e385d98549be7772d60ae684db ple/ple-bf16-00001-of-00004.bin
9e957bfeafe75e779c209b1447c7d728cf6acb6e3f809ba0a89df30bba675c3c ple/ple-bf16-00002-of-00004.bin
4aac201fd0dc517a14608f5721b1d05933c2d4deb092ddf215492ecdb7c7a383 ple/ple-bf16-00003-of-00004.bin
1e55bf840e6f37d76df4ec4274e13bf04e62ba823d989966b1a7c251cedff3b3 ple/ple-bf16-00004-of-00004.bin
```
Qwen passed text and image serving, three image API surfaces, all four text
surfaces, image-aware live/disk KV, C↔Rust four-way restore, width-2 barriers,
forced static routing, MTP off/on target parity, configured 262K, exact 262K,
196K production smoke, and C→Rust→Rust→C ABBA. The exact 262K gate produced
248,320 finite logits, argmax 198 in both hosts, zero packed-f32 mismatches,
and 99.64% Rust/C prefill. The Qwen-only soak ran 7,202.3 seconds with
3,610/3,610 successful requests, 158 barriers, 79 image requests, zero
request/census/governor failures, and zero process swap.
Qwen measurement binaries:
```text
b13a093b9232f61185a4e47fdbb5b3ca3babed0cb0a2d8f8eeae074da2b1aa2a C server
2bdbbc044216705bb1077feba279b48efa9028cba42207cd03ef4e7d1416635f soak/live Rust server
bd021db126e7add9fd700d3a720c4e339915cd37279dac1cce356b826ca8e385 focused Rust server
e7d344dcebf008530436bf7b4a07f8a9eef175a075a72c6b4b59c721dbd9212d exact-262K C bench
62844f312b521cf3503bc719690b1135d9392e5e8a0dec15149d3812d9a1f431 exact-262K Rust bench
```
## Genesis build identity
The final host-only compatibility fix makes Rust honor
`DS4_SERVER_CLIENT_SNDBUF` through a safe `ds4-sys` socket adapter. Its real
socket test, full server C-parity suite, workspace tests/checks, clippy, and all
13 G0 cells pass at `d126e56`.
```text
8d4c014adce67db8257f29044db9e047635a10a3080720e636ffd6b192d1370e ds4
68c812b21f299f675f10c31d94b5084d0c3683bc032049fcb11b2dc4c3d6b615 ds4-server
1bfbca83d159eb867480fa1e66fd0167f30f003dce9dc08b9be1f0f6710e14a5 ds4-bench
5e3c2177d35dd58d2316fd20f0ca0905484a20fac829b759e1d3bf91158ba51c ds4-agent
106cf79a1e9dfea6b52c927aa1d9b69c31f5a03362d8c32d00432ffc55872730 ds4-c
e6faa67aa6273c0ec0e14d93d53099b6f610eacb376b0ee73ac41aa2f1696530 ds4-server-c
47998eec17da65516ce5ba1a9f4c880fa1edc2c5aa7c3ac312ef755ae5cf19c4 ds4-bench-c
127d8a26b9cdc018ad9ed46a17e44ae5f0805ca942f240277813ec7f1dd3d635 ds4-agent-c
48ff2698a72f403d8a4189fab6da9e7d188897d7c306bf6cb92bfae55eab532d ds4-eval
8a491b7ed1038ab5a11f0f4e45923d325cde8bce3e199978dcfd3c51a89d6b00 ds4_weight_server
```
Each default Rust binary and its `*-c` oracle have distinct hashes and inodes.
The CUDA build config SHA-256 is
`2c15fe72b58438bfc80cc4e1f0b90596a1443847e126971b6ee33d1ae506c0ec`
(`CUDA_ARCH=sm_121`, sm_121a SASS path).
## Architecture audit
- Rust owns HTTP/API, admission and routing, scheduler orchestration,
model/session handles and lifecycle policy, KV metadata/persistence policy,
memory policy, agent/web host behavior, and distributed orchestration.
- Native C/CUDA retains VMM, CUDA Graph, CUDA/MMQ/fused attention/MoE/vision
kernels, weight upload, opaque GPU session execution, and layer evaluation.
- The bridge exposes 68 functions through `native/bridge/ds4_bridge.h`; CUDA
handles, device pointers, and raw native structs do not enter safe Rust.
- `rg -n 'unsafe \{' crates/` reports 97 sites: 61 reviewed core native/mmap
adapters, 27 localized CLI POSIX/linenoise adapters, 7 `ds4-sys` sites, and
2 test-only raw-FD fixtures. Production server/KV/dist/web crates have zero.
- C/Rust KVC payloads, EXT_TOOL_MAP, KTM trailer, recurrent payload, image
replay key, and explicit distributed codecs remain wire-compatible.
## Evidence index
| Evidence | Workspace path |
|---|---|
| Classified full-family ledger | `scratch/rust-host-live/v065-full-restamp-20260831-184200/gates-results.txt` |
| Final 13-cell host audit | `scratch/rust-host-live/v065-full-restamp-20260831-184200/final-audit-d126e56/` |
| Qwen evidence root | `scratch/rust-host-live/qwen-v065-restamp-20260831/` |
| Qwen hard gate | `scratch/rust-host-live/qwen-v065-restamp-20260831/hard-gate-20260831-154010/` |
| Qwen exact 262K | `scratch/rust-host-live/qwen-v065-restamp-20260831/direct-ab-262144-20260831-181624/` |
| Qwen focused MTP/static | `scratch/rust-host-live/qwen-v065-restamp-20260831/focused-20260831-183929/` |
The host was NVIDIA GB10, driver 610.43.02, CUDA 13.3.73, Linux
6.17.0-1031-nvidia, rustc/cargo 1.98.0. Production models were loaded one at a
time. Each C/Rust ABBA cell used fresh owner/worker processes; teardown checked
PIDs and CUDA compute before `/usr/local/bin/clear_cache`. `nvtop` and `htop`
monitors remained active.
## Guarded split procedure
1. Create and push annotated tag `pre-genesis-scaffold-b01d1fa` on the target
scaffold.
2. Re-read remote `main`; require exact
`b01d1fa4172a5c957fe1232774629a192493efe4`.
3. Create annotated source tag `ds4-dfm-rs-genesis` on this green document's
commit.
4. Seed target `main` with
`--force-with-lease=refs/heads/main:b01d1fa4172a5c957fe1232774629a192493efe4`.
5. Push the `v0.6.5-dfm` provenance tag and `ds4-dfm-rs-genesis` tag.
6. Re-run the same build/parity suite and a Qwen Q5+Sidecar release smoke in
the target clone before adding repository identity and `v0.1.0-rc.1` only.
No filter, squash, rebase, golden refresh, or automatic merge back to `dfm` is
permitted. The scaffold archival tag makes the guarded branch replacement
recoverable.
## Decision
The pre-split gate is GREEN. `Baekpica/ds4-dfm-rs` may be seeded using the
guarded procedure above.