Repository navigation
sdk: the transport is toyos::transport, and no crate of its own - #972
Conversation
The owner decided (2026-10-21) that the transport belongs in the SDK and is not published as a separate crate. `toyos-transport` was in `PUBLISHED`, and crates.io's trusted-publishing token cannot create a crate, so every publish run since #905 has been red and the nightly release refuses. - `sdk/transport/src` is now `sdk/toyos/src/transport`, unchanged in logic. The module keeps `#![forbid(unsafe_code)]` and its clippy forbids as inner attributes, makes no syscall and allocates nothing, and is host-tested through `toyos`'s library tests. `toyos::net::stream` stays its syscall adapter. - The loom models are `sdk/toyos/tests/transport_loom.rs`. Their controls are `toyos` features, named `transport-*` beside the SDK's `log-ring-*`, and `build/ci.rs`'s `CONTROLS` runs each under package `toyos`. - `every_model_control_is_run` now reads the guest libraries' manifests as well as the host members', since a host tests both and `toyos` now declares controls. A clippy shape lints `transport_loom`; the workspace shapes already lint `toyos`'s library as a dependency. - blockring depends on `toyos`; netstack and its node drop the extra dependency. - The crate's workspace membership, `PUBLISHED` entry, std sources, manifests and `[patch]` in `build/sysroot.rs` are removed. Three lockfiles drop the package, and the Rust fork's `library/Cargo.lock` drops it in fork commit 11e31a52778, which the `rust` gitlink now names. - `PUBLISHED`'s doc comment says a crate joins only once crates.io holds it. The record of the red publish runs now waits only for green runs after this lands. The issue records naming the crate, its path or its controls are updated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The transport's unit tests and loom models were linted as `toyos-transport`'s targets with warnings denied. As `toyos`'s, no shape reached them: the workspace shapes exclude the SDK and lint its library only as a dependency. `-p toyos --all-targets` takes that shape's place for `transport_loom` alone. The SDK's tests had two findings, both fixed: an array of byte literals (`byte_char_slices`) and `chunks_exact_mut` with a constant size (`chunks_exact_to_as_chunks`). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Orchestrator, T14 at a6d4695 (the image's commit; later commits are clippy and SDK test code only; one |
Review of #972 at eddc6dc (round 1)ArchitectureThe PR does what owner decision L asks. The transport is now The transport stays separate from the syscall adapters. Its files import only Layering: blockring now compiles the SDK and Fork pin: Net size is +218/−246, almost all moved lines. Production behaviour is unchanged. The test code is the same files under new names. FindingsBLOCKER 1. The branch conflicts with main. BLOCKER 2. Two comments on the controls gate's inputs are now stale. Both are one-line fixes.
For the orchestrator: two corrections to the PR description (not blockers).
SUGGESTION. Questions you asked
SEND BACK. Both blockers are small: rebase onto main and re-run the host suite and image builds, then fix the two stale comments. |
#962 rewrote blockring's crate header; it keeps its text with `toyos::transport` for `toyos-transport`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`NOT_A_CONTROL`'s doc names the guest libraries' `ttf` and `host-grant`; `GUEST_LIBRARIES` no longer says the SDK is not clippy-clean, which the `-p toyos --all-targets` shape disproves; the transport header's paragraph is wrapped. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Both send-backs are addressed. Head: bcd97ad. (1) Merged onto main. 7bfdb92 merges
(2) Stale comments, fixed in bcd97ad.
PR body.
|
|
Orchestrator: both review findings resolved at bcd97ad (checked the fix diff 7bfdb92..bcd97ad: the two comments corrected, the header re-wrapped; the merge of main at 7bfdb92 conflicts only in blockring's header comment). Rebuilt on the merged tree: |
The owner decided on 2026-10-21 (question L) that the transport goes into the SDK as
toyos::transport, and thattoyos-transportis not published. That crate was inPUBLISHED, and the trusted-publishing tokenpublish.ymluses cannot create a crate. So everypublishrun since #905 has been red, and the nightlyreleaserefuses (issues/a-crate-new-to-the-published-set-...).What changes
sdk/transport/srcis nowsdk/toyos/src/transport.#![forbid(unsafe_code)]and its clippyforbid/denyset as inner attributes.toyos::net::streamis still its syscall adapter, now importingcrate::transport.toyosfor the rings.toyos_transport::path is nowtoyos::transport::.sdk/toyos/tests/transport_loom.rs.toyosfeatures namedtransport-*, beside the SDK's existinglog-ring-*. The bare names (no-clamp,head-only) would be ambiguous in the SDK's manifest.CONTROLSruns them under packagetoyos, and the unit-test verdicts are nowtransport::…::tests::….every_model_control_is_runread only host members' manifests, and the SDK is a guest library, so it saw none of the moved controls (red in round 1). It now also readshostws::GUEST_LIBRARIES, which a host tests too, andNOT_A_CONTROLgains those crates'ttfandhost-grant.--all-targets -D warnings. The workspace shapes exclude the SDK and lint its library only as a dependency of their members.-p toyos --all-targets, lints the transport's unit tests and loom models again.byte_char_slicesinlog/stdio.rsandchunks_exact_to_as_chunksinrelocate/tests.rs.PUBLISHEDentry[patch]for the crate inbuild/sysroot.rs(plus its tests andtoolchain.rs's fixture)rustc-dep-of-stdhoprust/library/Cargo.lockdropstoyos-transportandtoyos's edge to it in 11e31a52778. It is pushed fast-forward to the fork'smain, and therustgitlink names it. This is the lockfile cargo itself writes: starting from the old lockfile with the build's[patch],cargo metadatawrites a file byte-identical to the edit (fork-lock-oracle.log). Both image builds left it unchanged.PUBLISHED's doc says a crate joins only once crates.io holds it underpublish.yml.publishandreleaseruns after this lands. Every crate inPUBLISHEDis in the crates.io index today, andtoyos-transportanswers 404.Arc, netstack pipes, transport heads and wifi.Checks
cargo run -- --ci hostcargo run -- --build-only --arch <a>cargo test --test toyos-build -- nvme_disk_boots(QEMU x86-64)cargo run -- --ci hostcargo run -- --ci hostcargo run -- --ci hostcargo run -- --build-only --arch <a>cargo test --test toyos-build -- nvme_disk_boots(QEMU x86-64)cargo run -- --clippystd's dep-info for
x86_64-unknown-toyosnames six files undersdk/toyos/src/transport/and none undersdk/transport.The branch merges main at 7bfdb92. The only conflict was blockring's crate header, which #962 rewrote; it keeps main's text with the new path. The merge changes no transport, SDK net, std or fork file.
Negative controls. Each was applied as a checked patch, built, run and restored.
#[allow(unsafe_code)]with anunsafeblock inside the module fails with E0453 (exit 101).+in the module redscargo clippy -p toyos(exit 101).transport-head-only's row redsevery_model_control_is_run.clone_on_copyin the transport's unit tests makes--clippyexit 1.E0308in place ofE0080still passescargo test -p toyos --doc, as the record says.std streams: nothing runs them off metal.
stream_handlesruns only in the shared metal boot. The QEMU suite refuses it as a filter (log). Netstack's server end of a session is host-tested intoyos-net-nodewithin the host suite.T14:
stream_handlespassed at a6d4695 (the orchestrator's run). The merge changes no transport code, so it was not rerun. Its request was onetestcasesboot.What the nightly
releasechecks nowrelease::sdk_at_tipplansPUBLISHED:toyos-abi,toyos-keymap,toyos-font,toyos,toyos-windowandtoyos-osrelease. It refuses if any of them is owed at main's tip. Every crate in that list exists on crates.io, so thepublishrun on this merge can put uptoyos(its key moves with the transport's sources) and its dependents. After that,releasecan name ansdk-alias again. The toolchain it packs no longer readssdk/transport.Risks
publishrun can succeed before landing. The packaging risk is mitigated: main's red publish run 39569722210 packaged and verifiedtoyos-transport, with the sameloom = "0.7"dev-dependency and the same loom test file (thentests/loom.rs). It failed only at the 403 upload (log lines 08:31:24-25Z). That run packagedtoyos-transport's manifest, not the newtoyosmanifest, so the packaging of this exact manifest is still unshown.toyos-abi. The kernel does not depend on blockring.stream_handlesran at a6d4695, before the merge; the merge touches no transport code.🤖 Generated with Claude Code