Distribute verified image archives through direct fabric - #148
Closed
FujitsuPolycom wants to merge 2 commits into
Closed
Distribute verified image archives through direct fabric#148FujitsuPolycom wants to merge 2 commits into
FujitsuPolycom wants to merge 2 commits into
Conversation
Plan one four-rank direct-link chain without remote work, verify SHA-256 on every rank, resume bounded partial transfers, and optionally import only the expected image ID. Conflicting final files remain unchanged and interrupted operations retain resumable evidence. This adds no runtime-profile, cache-identity, or serving behavior.
State that C4 and C8 were capacity-limited and remain omitted from the research-only throughput row. The FP8 KV and NVMe capacity descriptions remain unchanged.
This was referenced Aug 30, 2026
Owner
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Resulting behavior
scripts/fanout_image_archive.pydistributes one immutable image archive across a validated four-rank direct-link cycle without downloading the archive independently on every rank.The command has four explicit operating modes:
sparkring-image-archive-fabric-plan/v1;--verifyreads final-file type, SHA-256, and byte count on every rank and emitssparkring-image-archive-fabric-verification/v1;--execute --create-onlydownloads, transfers, and verifies the archive without importing it;--executeverifies all four archives, imports the image in rank order, and proves the requested tag resolves to the expected local image ID.Execution requires
--confirmation FANOUT_IMAGE_ARCHIVE. Management SSH starts and inspects work. Each rsync process binds to the source rank's address on the selected direct edge and connects to the adjacent rank's address on that edge. The default path starts with the seed's lowest-numbered neighbour;--first-hop-rankselects the opposite direction.Archive identity and bounded interruption behavior
The operator supplies one 64-character lowercase archive SHA-256. The seed verifies that digest after a resumable
curl --continue-at -download. Every direct hop writes a bounded.<archive-name>.partialfile throughrsync --partial --append-verify, verifies SHA-256, synchronizes the file, and creates the final path with a hard link that refuses an existing destination.An exact final archive is reused. A different digest or non-regular object at the final path stops the operation without overwriting it. A command error or timeout stops later actions and retains exact finals and bounded partials already created. There is no distributed rollback; a retry reuses exact finals and resumes eligible partials.
Image import begins only after all four archives verify. An archive saved by image ID may lack a repository tag, so the command proves the expected image ID exists before applying the requested tag. An existing tag mapped to another image remains a conflict. If import stops partway through, imported images remain and a retry accepts only the expected image ID.
Interface and safety
The target directory must be an absolute normalized path with at least three components below
/. The archive name is one bounded filename without path separators. Source URLs must use HTTP or HTTPS and cannot contain credentials, query parameters, or fragments.--timeoutbounds each remote operation and--connect-timeoutbounds SSH and rsync connection setup. Defaults are 7,200 and 45 seconds.--outputwrites the same JSON evidence printed to standard output. The operator guide isdocs/DIRECT_FABRIC_IMAGE_ARCHIVE_FANOUT.md.Planning is offline. Verification is read-only remote work. Both execution forms mutate configured hosts. The command does not publish an image, create an archive, bootstrap host keys, install remote tools, or alter a serving deployment.
Compatibility
This change adds no model profile, runtime source pin, cache identity, storage schema, transport backend, or serving default. It consumes the sanitized SparkRing site schema and supports exactly ranks 0 through 3 when their direct edges form one cycle.
The selected three-hop path executes sequentially. The command does not broadcast, stripe one archive across links, or use both cycle directions concurrently.
Status and limitations
Status: implemented with GPU-free command and state-transition coverage.
Direct-fabric throughput is research-only. Live four-rank image import is unsupported by retained repository evidence. Archive SHA-256 and optional image-ID evidence do not qualify model serving, collective transport, SparkCache behavior, available disk capacity, source-server throughput, or achieved link throughput.
Validation
0→1→2→3, with no management address in transfer commands;git diff --check: passed.Repository consistency note
SparkRing
maindescribed the GLM-5.3 C1 research observation but omitted the bounded statementC4 and C8 were capacity-limitedrequired byscripts/test_glm53_flash_profile.py::test_public_glm53_benchmark_is_sanitized_and_bounded. Authoritativemainworkflow run33298915434reported the same mismatch. This review restores that factual sentence and keeps C4/C8 omitted from the throughput row. The corrected FP8 KV and NVMe capacity descriptions remain unchanged.Historical review note
This main-based draft extracts the direct-fabric archive guide, command, tests, and configuration-index entry from draft pull request #135. Pull request #135 remains open and unchanged until reviewers accept this independent diff.