Skip to content

netring: a session region replaces the pipes between netstack and its clients (design, and the track that stages it) - #863

Draft
Japabu wants to merge 19 commits into
mainfrom
wt/toyos-netring
Draft

Japabu wants to merge 19 commits into
mainfrom
wt/toyos-netring

Conversation

@Japabu

@Japabu Japabu commented Oct 11, 2026 •

Copy link
Copy Markdown
Collaborator

What this lands

A design round, built on nothing: three issue files and this body, which is the design as accepted and amended, and its roast. No source, test or manifest changes.

  • issues/netstack-moves-every-byte-through-two-kernel-pipes.md (kind: track): the pipe copies and the lock as a present-state weakness, with round 3's T14 rows and the scout's reading as evidence, the owner's constraint, the owner, the stages with their pull requests, 0 to 2 done, the exits of stages 3 and 4, and the track's exit, which two searches and those exits read.
  • issues/a-pipe-is-a-two-mebibyte-page-for-a-mapping-nothing-makes.md (kind: defect): the one thing the pipe section below found to fix, with its owner and an exit two searches read. Not fixed here.
  • issues/a-stream-cannot-move-between-processes.md (kind: defect): the regression amendment E brings, a stream's handle that reads and writes the stream through a File or a child's stdio today and is refused loudly after stage 3, with its owner and E's exit.

Amendments A to E, and the rulings on rounds 4 and 5 and on the second triage, were each accepted by the orchestrator, in the comments the next section links; the bullets each changed say "(amendment A)" to "(amendment E)", or "(ruling 1)" to "(ruling 7)".

Stages 1 and 2 landed before this branch: #878 as 4ca63a6 and #867 as 867ec23. This body describes both as they stand on main. Stages 3 and 4 are not opened.

The owner's rulings, as the orchestrator relayed them

  1. The session-region design is a go: "pipes aren't meant for a lot of data transfer, especially not network".
  2. True zero copy is dropped unless the design shows a useful benefit; if it brings security issues and too much complexity for a small gain, one section says so and drops it, with no hooks left for it.
  3. Accepted, after the scout's reading (netring: a session region replaces the pipes between netstack and its clients (design, and the track that stages it) #863 (comment)). His answer to "Build it?", verbatim: "i agree but explain why an abi change shouldnt that be completely userland? isnt this why we have userland drivers?" The orchestrator recorded the constraint it sets on every stage: the data path is userland's; a kernel change lands only where the kernel is the sole authority able to answer; a stage that adds anything else to the kernel says why userland cannot do it. The section "Why the kernel changes at all" answers his question.

He also asked whether the pipe design itself has a problem: its own section, from the code.

  1. Published practice. Relayed as the owner's standing ruling: each amendment follows published practice where it exists. A design follows what its hardware's manufacturers or the published state of the art back, and a bench verdict never blocks it #885 (36aff86, merged here) made it the role prompts' rule: a design the published state of the art backs follows and cites it.
  2. ToyOS does not follow Linux and references it nowhere in the tree, relayed by the orchestrator in round 6's brief. Each Linux citation the record carried gives way to the RFC or POSIX text it stood for, or, where none backs the behaviour, to a defence on the choice's own terms.

What was amended since, and where it was ruled

The starting facts, each read again at 06788fc

By 1acaa36, the main this branch merges, stage 2 gave toyos-transport its byte ring, and #861 (ab655a1) alone moved the other paths they cite: git diff --stat 06788fc53 1acaa362f -- system/netstack kernel/src/pipe.rs kernel/src/sync.rs kernel/src/inbox kernel/src/syscall/ipc.rs kernel/src/pcidev sdk/std sdk/libc sdk/toyos/src/net.rs sdk/toyos/src/wake.rs issues/toyos-has-its-own-network-stack.md issues/the-global-pipe-lock-spans-a-user-copy.md names netstack's watches, its receive budget, the I219's ring and a pipe end's leaving watch. Each fact below was read again at 97f07c3, which differs from 1acaa36 only in .claude/agents/, and holds.

  • netstack copies each frame into a heap TCP ring. True: Ring::write_at copies into a Vec<u8> that grows by doubling (system/netstack/shard/tcp/src/ring.rs). Round 3 times it as cy_ring_write.
  • That ring goes through a kernel pipe, copied in and out under the one global PIPES lock with preemption off. True, and wider: Node::pass hands tcp_recv's bytes to ToClient::write, which is Pipe::write_nonblock (system/netstack/src/pipes.rs); pipe::try_write and try_read run Ring::write/read with the user copy inside with_pipes_mut (kernel/src/pipe.rs), and Lock::lock disables preemption (kernel/src/sync.rs). The send direction is worse: the client's bytes go into a pipe, out into netstack's CHUNK stack buffer (streams.rs), into the send ring by tcp_send, and into the frame, which main.rs copies again into the card's slot.
  • No issue recorded these copies as a weakness; the network track says "pipe ABI unchanged" and names "netring (blocked on the owner's ABI ruling)". True of issues/toyos-has-its-own-network-stack.md. The nearest is issues/the-global-pipe-lock-spans-a-user-copy.md, which records the lock and not the copies. The new track records them.
  • lib/blockring/transport has nothing block-specific in it. True: toyos-transport is entry queues with clamped peer cursors (queue.rs), an arena of slot runs (arena.rs) and a tag table (inflight.rs), all over Words an adapter hands in, forbid(unsafe_code), loom-modelled. It had no byte ring at 06788fc. A TCP stream needs one, the one addition below, and stage 2 (toyos-transport: a byte stream between two ends that do not trust each other, and its wake handshake (netring stage 2) #878) landed it as stream.rs.
  • The I219 DMAs every flow into one shared receive ring; its driver models no RSS, header split or offloads. True of the driver (system/netstack/i219/): one receive ring, no queue, split or offload register is written. What the part itself has is not read here; the zero-copy section does not rest on it.

The session-region design

A TCP stream is one shared region and one IPC connection. The client makes both: the region with SYS_SHM_CREATE, the connection by connecting to netstack. The connect request carries the region's handle. The connection carries that request and its answer, then nothing but one-byte doorbells each way and its own hang-up (amendment E), and netstack rings a writer waiting for send room on a bell of the stream's own (amendment A). A stream belongs to the process that connected or accepted it (amendment E).

The region

8 MiB, four 2 MiB pages, physically contiguous as every SYS_SHM_CREATE region is today:

bytes what written by
the first 4 KiB the header: each word below on a cache line of its own as named
the next 4 MiB the receive ring: netstack's TCP receive buffer itself netstack
the last 4 MiB less 4 KiB the send ring: netstack's TCP send buffer itself the client

The header's words: the receive ring's tail (netstack) and head (client); the send ring's tail (client) and head (netstack: what the peer acknowledged); four want words, one per wait, each set by exchange by the side that will sleep and cleared by exchange by the side that rings (rx_data and tx_room set by the client, rx_room and tx_data set by netstack); the receive ring's end (netstack, written once, after the last tail: 0 open, then FIN, reset, timed out, unreachable, prohibited); the send ring's end (client: shut down for writing); and nodelay (client).

The rings are the TCP buffers, not a copy of them, for a passive child from its accept on (amendment C). [tcp]'s Ring today stores into a Vec; it becomes a ring over the region's words through the same adapter toyos-transport uses, so write_at places an out-of-order segment's payload at its offset in the receive ring and commit is the published tail. The window is the receive ring's room. On the send side tcp_send's copy goes: the bytes the client published are what [tcp] segments from, and the head moves only as the peer acknowledges. One copy of every received byte is gone (heap ring to pipe), and two of every sent byte (pipe to chunk, chunk to send ring).

A passive child's bytes wait in netstack until its accept (amendment C). Its SYN-ACK offers a window before any region exists, so what arrives first stays in [tcp]'s heap storage: at most 65,535 bytes a child, its first window, and LISTEN_READY, 128, children a listener. The accept copies them into the region's receive ring at their offsets, with any out-of-order range and a FIN, frees that storage, and only then answers, as mTCP keeps a child's payload until mtcp_accept. An active open's region exists before its SYN.

The addition to toyos-transport (stage 2, #878, landed): a single-producer byte ring, stream.rs, beside queue.rs.

  • A producer and a consumer keep their own cursors, store the shared one once a batch with Release, load the peer's with Acquire only when asked for room or what is ready, and hand the adapter Spans to copy through.
  • A cursor counts modulo twice the ring, so a full ring and an empty one differ and a ring may be any size; a free-running u32 under a mask would be right only for a power of two, and the send ring is not one. The peer's cursor is believed only as a position at most the ring away from this end's: a word at or past the lap names no position, and either is Violation::TailPastDepth / HeadPastTail, as queue.rs names them.
  • The want handshake, written once, is two exchanges on one word. The sleeper exchanges 1 into its want (Acquire), then reads the peer's cursor again, and sleeps only if that look finds nothing. The waker publishes its cursor, then exchanges the want for 0 (Release), and rings only if it was set. Either the sleeper's exchange reads the waker's clear and sees the cursor stored before it, or the clear follows and finds the want set. A sleeper drains its doorbell before it looks, never between arming and sleeping.

Nothing in it is network-specific: a third byte stream between two processes would take it as it is.

Why the kernel changes at all

The owner's question. The data path is userland's: the stream's bytes, cursors, wants and end words live in a region two processes share, and the kernel neither copies nor reads one of them. The kernel's part is what it already does: make and map the region (SYS_SHM_CREATE, SYS_SHM_MAP), and carry the doorbells and the hang-up on the connection and on the bell, both pipes.

Most of what changes is not the kernel's ABI. The netstack message set below is a userland protocol between netstack and toyos::net, as any server's is.

The kernel's syscall ABI changes twice, and the first has landed:

  • It gained one answer (stage 1, SYS_FSTAT answers whether a region is memory the kernel allocated, and a lent region is judged by it before it is mapped #867): SYS_FSTAT answers DeviceMemory for a region that is not memory the kernel allocated, where before it answered every region SharedMemory (fstat's SharedMem arm, kernel/src/object/ops.rs). Only the kernel knows what memory backs a region. Without the answer, a client holding a device's BAR or the GOP framebuffer could lend it to netstack as its stream, and netstack would write received bytes into device memory.
  • It loses one syscall (stage 4): SYS_CONNECTION_JOIN, whose only caller outside the abuse tests is std's make_socket_fd.

The protocol, and what the kernel answers about a lent region

  • MsgType::TcpConnect { addr, port, timeout_ms } with one handle, the region; answered TcpConnectResponse { local_port } with one handle, the stream's bell (amendment A), or an error, on the same connection, which is then the stream's.
  • MsgType::TcpListen { addr, port, nodelay } on a connection that is then the listener's, on which netstack writes one wake for each child that waits, as listeners.rs's Wake is written today. An accept takes a wake first (ruling 5): a nonblocking one with none answers WouldBlock, and a blocking one waits on the connection for one, so no region or connection is made until a child is there. POSIX's accept gives the same two answers to an empty queue: it "shall block until a connection is present", or, with O_NONBLOCK set, "shall fail and set errno to [EAGAIN] or [EWOULDBLOCK]". That nothing is made first is the design's own: a tokio accept loop calls accept until WouldBlock on every event, and would make 8 MiB of contiguous memory per event to hear it, or, on a fragmented machine, ResourceExhausted in its place. A process makes a connection to netstack only by connecting, so the accept is then MsgType::TcpAccept { listener } on a new connection with a fresh region, answered once the child's bytes are in it (amendment C) with the stream's bell and TcpAcceptResponse { remote_addr, remote_port, local_port, nodelay } (ruling 6): the peer, and the nodelay the child inherited from its listener, which netstack has also written into the region's header before it answers. POSIX leaves "implementation-defined which socket options, if any, on the accepted socket will have a default value determined by a value previously customized by setsockopt() on socket"; the child takes nodelay, as it does today through TcpAcceptPipedResponse's options (sdk/toyos/src/net.rs), since a program that set it on its listener set it for the streams it accepts. An accept that took a wake and failed before netstack had its request rings the listener's connection, and netstack writes the wake again, which is issues/an-accept-that-never-reaches-netstack-strands-its-listener.md's exit. The listener id stays the number issues/netstack-socket-ids-are-ambient.md records.
  • MsgType::UdpBind { addr, port } with a 2 MiB region whose two rings carry records, a record being len, port, addr and the payload padded to a word: a send is a record and at most a doorbell, where today it is a pipe write and a request on a new connection. netstack drops and counts a received datagram its client's ring has no room for, which is UDP's answer, where today a datagram that does not fit ends the socket. netstack judges each record's words (ruling 4) as the hostile-client section says.
  • TcpShutdown, TcpSetOption, TcpClose, UdpSendTo, UdpRecvFrom, UdpClose and the three *Piped messages go: shutdown and nodelay are header words, close is the hang-up, a datagram is a record.
  • netstack judges a lent region before it maps it, through what stage 1 (SYS_FSTAT answers whether a region is memory the kernel allocated, and a lent region is judged by it before it is mapped #867) landed. SYS_SHM_MAP of a handle that is no region is HandleError::WrongType, which ends the caller, and SharedMemory::adopt maps what it is handed and believes the size it is told, so it is only for a region the kernel itself handed the process (sdk/toyos/src/shm.rs). SYS_FSTAT resolves a handle of any kind and needs no right: only a region of memory the kernel allocated answers SharedMemory, and it answers the region's size. netstack takes a lent region through SharedMemory::lent, which refuses by name a handle that is no region, a region that is not memory the kernel allocated, and one that is not exactly 8 MiB (2 MiB for a datagram socket), each before anything is mapped; netstack closes the connection on the refusal. SYS_HANDLE_RECV and SYS_SHM_MAP are unchanged. fileserver and diskserver take their lent regions through SharedMemory::lent already. issues/a-received-handle-has-no-knowable-type.md stays open for the kinds fstat does not settle, none of which this design has netstack use.

std, poll, libc and mio

The session's client end is toyos::net::Stream in sdk/toyos/src/net.rs, one implementation that std (sdk/std/sys/net/connection.rs), libc (sdk/libc/src/socket.rs) and the mio and socket2 forks call, as they all call toyos::net now.

  • The stream's handle is the connection. as_raw_fd answers it, and the hang-up comes once no process holds a handle of it.
  • Every handle of a stream in one process shares its one client end: one mapping of the region, one set of cursors, one count of waiters per direction (amendment B). toyos::net keeps the process's ends by handle. std's try_clone and libc's dup make a handle of the same connection and enter it against the end they duplicate, as TcpStream::duplicate shares its Arcs today (sdk/std/sys/net/connection.rs); so does BorrowedFd::try_clone_to_owned, which OwnedFd::try_clone calls, once stage 3 routes its ToyOS arm, the bare dup today (the rust/ fork's os/fd/owned.rs:159-165), through toyos::net. Stage 3 adds std's FromRawFd, IntoRawFd, From<OwnedFd> and From<TcpStream> for OwnedFd for TcpStream, which the rust/ fork's os/fd compiles out for toyos today (mod.rs:16-17, owned.rs:378-418), so a program that turns a stream into its handle and back builds unchanged. Taken back, a handle the process holds an end for shares that end. A handle the process holds no end for, one moved in from another process or duplicated past toyos::net by the bare dup syscall, is no stream in it: toyos::net refuses it by name and writes nothing on its connection, so two processes never share a region (amendment E), and std's from_raw_fd, which cannot fail, panics with that refusal (issues/a-stream-cannot-move-between-processes.md). A handle given out stays entered against its end, and OwnedFd's ToyOS drop, which closes by the raw syscall today (owned.rs:241-244), lets a handle go through toyos::net as try_clone_to_owned's arm enters one, so no entry outlives its handle's number. The end goes with the process's last handle of the stream.
  • A stream's handle is no file and no child's stdio (ruling 7). Today File::from_raw_fd takes any handle (sdk/std/os/io.rs) and reads and writes it with the same syscall::read and write as TcpStream (sdk/std/sys/fs.rs), and Stdio::from(File) hands it to a child (sdk/std/sys/process.rs), so a stream's handle serves the stream through either. Over the region it is the doorbell connection. So File::from_raw_fd, the one way a raw handle becomes a File on ToyOS (From<OwnedFd> for File is compiled out, owned.rs:358-359), asks toyos::net whether the handle is entered against a stream end, and panics with the refusal if it is, as TcpStream::from_raw_fd panics on a foreign handle. A spawn asks the same of each handle it would put in a child's stdio slot, by Stdio::inherit() or CommandExt::inherit_handle, and answers the refusal with no child started. No File then holds a stream's handle, and File's drop, a raw close (sys/fs.rs), never lets one go past toyos::net.
  • read copies from the receive ring into the caller's buffer, a userland copy of the bytes the kernel copies today. Empty: it drains the connection's doorbell, sets rx_data by exchange, reads the tail again, and only then lets its end go and waits on the connection. write first reads the receive ring's end with Acquire: a fatal one, any but a FIN, is its error, and it copies nothing (ruling 3). RFC 9293 has a reset in a synchronized state flush "All segment queues" and delete the TCB (§3.10.7.4), as a user timeout does (§3.10.8), and answers a SEND that finds no TCB "error: connection does not exist" (§3.10.2); POSIX's send fails [ECONNRESET], "A connection was forcibly closed by a peer". Otherwise it copies into the send ring and rings if tx_data was set; full, it drains the stream's bell, sets tx_room by exchange, reads the head again, and only then lets its end go and waits on the bell (amendment A). Each direction's end is behind its own mutex, held to drain, arm, look and copy and never across a wait, so any number of threads, through any of the process's handles of the stream, may wait on one direction, each counted on its one end, and a call under a timeout waits on nothing but its doorbell and its deadline (amendment B).
  • Readiness is the rings', and the kernel's readiness is only a wake. The connection is readable when netstack has rung it for received bytes, and the bell when netstack has rung it for send room (amendment A); each says "look", never "there are bytes". mio reads until WouldBlock, and WouldBlock is answered only after the want is set and the cursor read again, so the wake that follows reaches the doorbell that direction's sleeper waits on. mio also waits for an event after it registers, before any I/O, as tokio's connect_mio and poll_io do, and would wait for ever on a direction already ready whose registration reported nothing. So register and reregister take each named direction's end, arm its want, look, let the end go, and ring netstack if the direction is ready, and netstack rings back by amendment B's rule; a registration drains nothing and counts nothing (amendment D). The mio fork registers the connection for its READABLE interest and the bell for its WRITABLE interest, each watched for reading. libc's poll of a socket asks the rings first, so a level-triggered poll on a ring that holds bytes answers at once; for a direction that is not ready it takes that direction's end as any waiter does, counts itself in, drains, arms and looks again, lets the end go, and waits on the connection for POLLIN and on the bell for POLLOUT. A doorbell is drained only under its direction's end, before the drainer arms and looks, and a thread that took a doorbell while another waits on its direction passes the take on (amendment B). The mio fork counts nothing: a source is read to WouldBlock, which leaves the want armed, so the next publish rings its watch. A program that polls the raw handle with toyos::poller and does not read to WouldBlock sees edges, not levels: the module header says so.
  • End of stream is the receive ring empty and its end word set, read with Acquire after the tail: a FIN is Ok(0), a reset ConnectionReset, a timeout TimedOut, an ICMP failure its own word. What rests on pipe ordering today, that the send pipe closes before the receive pipe so a client probing an empty write learns reset from FIN (TcpStream::ended, Node::pass), is deleted, and a failure says which failure it was (issues/a-streams-failure-reaches-its-client-as-a-reset-whatever-it-was.md). shutdown(Write) stores the send ring's end after its last tail and rings; netstack sends the FIN once it has segmented to that tail. A fatal end makes the send direction ready to every look (ruling 2), a write's, a registration's, a poll's and netstack's ring back. A write then answers the error without waiting, and POSIX's select counts a descriptor "ready for writing when a call to an output function with O_NONBLOCK clear would not block, whether or not the function would transfer data successfully". A writer or a WRITABLE registration that arms after a reset over a full send ring does not sleep. A FIN is not fatal, so half-close keeps the send direction.
  • The client leaving is the connection's hang-up, which the kernel reports to netstack's watch as OTHER_END_GONE. Today the node cannot learn it once the peer's FIN has been read through (the OWNERLESS_LIFE paragraph in streams.rs). The peer-side bounds on an ownerless stream stay [tcp]'s; the half that exists only because a pipe cannot say its reader left goes.

What it deletes

  • netstack: src/pipes.rs; in the node, ToClient, FromClient, ReadRefusal, WriteRefusal, Pipes, PipeEnd, pipe_gone, pipe_broken, the end-ordering of the two ends, the CHUNK read, the drained bookkeeping that the rx_room/tx_data wants replace, and the listener's Wake pipe; in serve.rs, data_pipes, the datagram socket's pipes and its request per datagram, and two watches a stream (issues/netstack-spends-two-poller-slots-per-piped-connection.md, issues/netstack-watches-both-pipes-of-every-connection-on-every-pass.md). [tcp]'s Vec storage under Ring stays, for a passive child before its accept alone (amendment C).
  • toyos::net: the *Piped messages, DATA_HANDLES, NOTIFY_HANDLES and the pipe ends in every answer type.
  • std: make_socket_fd, TcpStream::ended's empty-write probe, UdpSocket's two pipe handles.
  • kernel: SYS_CONNECTION_JOIN and ConnectionEnd::joined.
  • PLACE_BYTES falls from 12 MiB (two 2 MiB pipes and two 4 MiB buffers) to the 8 MiB region, plus its doorbells' three pipe pages until issues/a-pipe-is-a-two-mebibyte-page-for-a-mapping-nothing-makes.md closes; until then it is 14 MiB, where the bell's page is allocated by a stream whose writer once waited for room (amendment A) or that is registered for WRITABLE (amendment D).

What a hostile client can do to a region it shares with netstack

netstack reads four kinds of word the client writes. A datagram record's len, port and addr are copied out of the region once and judged on the copy (ruling 4): a len past the bytes the record holds is a Violation that ends that socket alone, as udp_send_to refuses a len naming bytes never written today (system/netstack/src/serve.rs), and no toyos::net writes one. That is the one bound netstack's serving code judges: the payload, port and address go to [udp], whose submit refuses a payload past limits::MAX_PAYLOAD (Counter::ExceedsMtu), port 0 and an address it cannot send to, each by its counter, as it does today (system/netstack/udp/src/lib.rs; s_udp_us_023_payload_sizes, each_refusal_is_answered_in_the_pipes_word_for_it). A program names any of these through send_to, so each refuses that datagram, and the socket serves on. The send ring's tail and the receive ring's head are each believed only as a position at most the ring away, and otherwise are a Violation that resets that stream alone. The want, end and nodelay words are each a bit whose worst value costs netstack one doorbell or one pass (any want but 0 is set). The send ring's bytes netstack copies into a frame before it checksums them, so a client that rewrites a byte after publishing it, or between a send and its retransmission, corrupts only its own stream. netstack never reads back a byte it wrote into the receive ring, so out-of-order payload the client can see and overwrite before it is committed is the client's own. A doorbell storm is bounded by the pass: doorbells coalesce, and a stream rung with nothing new published costs one look, and a ring back for each want the client set on a direction that is ready (amendment B). A client that unmaps or closes its handle takes nothing from netstack, which holds its own handle and mapping until it lets the stream go.

Amendments A and B, accepted

Each is set out in full, with the alternatives it weighed and refused and its model, in #863 (comment), as this body carried it through round 4.

Amendment A: a writer waiting for send room has a doorbell of its own. Accepted by the orchestrator: #863 (comment).

  • The defect (netring: a session region replaces the pipes between netstack and its clients (design, and the track that stages it) #863 (comment), BLOCKER 6). netstack rang rx_data and tx_room on the connection's one netstack→client pipe, and a pipe's byte goes to one reader: the reader could take the byte rung for tx_room, and the writer sleep on with room in its send ring.
  • The amendment. rx_data rings the connection; tx_room rings the stream's bell, a pipe netstack makes at connect and accept and holds the write end of alone (amendment E). When netstack writes the receive ring's end, it exchanges both client wants for 0 and rings each one that was set, so a writer asleep on a stream that ended wakes and reads why; one that arms after a fatal end finds it at its look (ruling 2). The bell's write end gone reads as the stream gone, as the connection's hang-up does. netstack's own wants, rx_room and tx_data, share the connection's client→netstack pipe, since its one thread is their only sleeper. A reader, a READABLE registration and a POLLIN wait read only the connection; a writer, WRITABLE and POLLOUT only the bell.
  • The cost. No kernel change. A handle more in the client and two in netstack, a PIPES entry more per stream, and the bell's page, allocated on its first ring: once the stream's writer finds its send ring full, or once it is registered for WRITABLE (amendment D). Until issues/a-pipe-is-a-two-mebibyte-page-for-a-mapping-nothing-makes.md closes, PLACE_BYTES is 14 MiB where it is 12 today.
  • The evidence: a scratch loom model over toyos-transport: a byte stream between two ends that do not trust each other, and its wake handshake (netring stage 2) #878's ends at 7ea0ff9, netstack's thread releasing room and publishing data in either order. One doorbell for both deadlocks in both orders, EXIT=101; one per direction passes in both, EXIT=0, and is red under want-relaxed, EXIT=101 (the model, its log).
  • The track: stage 3's exit carries the model over the code stage 3 lands, its control one doorbell for both.

Amendment B: within a direction no end is held across a wait, and a take is passed on. Accepted by the orchestrator: #863 (comment).

  • The defect (netring: a session region replaces the pipes between netstack and its clients (design, and the track that stages it) #863 (comment), BLOCKER 1). A blocking call's wait took the doorbell's byte while a poll of the same direction watched it. The kernel answers that watch by the pipe's level when its submitter looks after the post, and arms it again if the pipe is empty (kernel/src/inbox/polls.rs; look in kernel/src/inbox/mod.rs; read_posts_are_readiness is false for a pipe and a connection), so a level-triggered poll slept over a readable socket.
  • The amendment. No end is held across a wait: a direction's end is held to drain, arm, look and copy. A waiter, a blocking call about to wait or a poll whose interest names the direction, counts itself in under the end before it drains, arms and looks, and out when it returns. A thread that takes the direction's doorbell, by a wait or a drain, and leaves the end with another waiter counted sets the want by exchange again and looks, and rings netstack if the direction is ready (bytes or the end in the receive ring, room or a fatal end for the send ring). netstack, rung by a client, exchanges each client want whose direction is ready for 0 and rings the one that was set; stage 3 adds this exchange to each of stream.rs's ends.
  • Why it holds. The count is a plain field under the end's mutex, which every waiter and every taker holds: either the taker finds the waiter counted and passes the take on, or the waiter's drain, arm and look come after it and see what the taken byte announced. The amendment adds no memory order.
  • The cost. No kernel change, and no pipe, handle or watch past amendment A's. A count under each end; a blocking call takes its end twice per wait; while two threads of one process wait on one direction, a take costs a round trip through netstack; netstack looks at both client wants on every client ring.
  • The evidence: a scratch loom model over toyos-transport: a byte stream between two ends that do not trust each other, and its wake handshake (netring stage 2) #878's ends at 7ea0ff9 of a blocking call and a poll of one direction, the blocking call leaving a byte, the end or room, at most five preemptions as the kernel's own models bound theirs. The rule as written, B less the pass and B under want-relaxed are each red in all three cases, EXIT=101; B passes all three, EXIT=0 (the model, its log).
  • The track: stage 3's exit carries the model over the code stage 3 lands, its control B less the pass.

Amendments C, D and E, accepted

Accepted by the orchestrator: #863 (comment). Each is set out in full, with the alternatives it weighed and refused, in the comment that proposed it: #863 (comment). They answer the triage's three BLOCKERs (#863 (comment)), each read again at e7e1179, and each follows published practice, per #885's rule.

Amendment C: a passive child's bytes wait in netstack until its accept.

  • The defect. [tcp]'s SYN-ACK offers 65,535 bytes of window (stack.rs:418), and the ACK that ends the handshake runs the segment's text as ESTABLISHED (stack.rs:852-864). As first written, the design made the region only at the accept and deleted [tcp]'s heap storage, so that text had nowhere to go.
  • The amendment follows mTCP, which keeps a child's payload in a buffer from the stack's own pool and hands it over at mtcp_accept (tcp_in.c:617-630, api.c:582), and RFC 9293 §3.8.6, under which the SYN-ACK's window "indicates the range of sequence numbers the sender of the window (the data receiver) is currently prepared to accept": the design's paragraph of that name.
  • The cost: one copy, per accepted stream, of the at most 65,535 bytes that came before its accept.
  • The evidence. listeners.rs's a_listener_answers_a_syn_and_wakes_its_owner_when_the_handshake_ends (listeners.rs:455) is green at e7e1179 and red, EXIT=101, with the child's bytes dropped at its accept, as the design first written dropped them (pre-accept.log). Ruling 1's case, a child holding text in order, text past a hole and its FIN behind that before its accept, the hole filled after it, ran as a scratch test against today's node tests at 04ff95b: green, EXIT=0, and red, EXIT=101, under each control dropping one of the three at the accept. The in-order bytes read [0, 0, 108, 108, 111] and red the first case too, the out-of-order range [104, 101, 108, 0, 0], and the FIN leaves an end never reached (pre-accept.log).
  • The track: stage 3 keeps [tcp]'s heap storage; stage 4's exit carries the first case and ruling 1's, red under those controls.

Amendment D: a registration arms its wants.

  • The defect. mio registers and then waits for an event (mio stream.rs:73-74), as tokio's connect_mio and first I/O do (tokio stream.rs:155, registration.rs:169). As first written no registration armed a want, so TcpStream::connect and sshserver's first I/O would wait forever.
  • The amendment, in the readiness bullet: a registration arms each named want and rings netstack for a ready direction, and netstack rings back by amendment B's rule.
  • The cost: a round trip through netstack per registration of a ready direction, once per tokio stream, and the bell's page for every stream registered for WRITABLE.
  • The evidence: a scratch loom model at 386c341, unbounded, of bytes, the end, room, and a reset over a full send ring (ruling 2), each made ready before the registration or racing it (registered-ready.log). The design as first written is red in all eight cases, EXIT=101; D passes all eight, EXIT=0; D less the arm and D less the ring are each red in all eight; want-relaxed reds D in the four racing cases; head-only, whose looks read only the send ring's head as the record stood at 148d265, reds D in the two reset cases alone. Each of the 30 reds is loom's deadlock, both threads blocked.
  • The track: stage 3's exit carries a third loom model of the client end's registration and netstack's ringing code: red without D, red with either half removed, red under want-relaxed, and, with a fatal end, red where a look reads only the head.

Amendment E: the connection carries one request, then only doorbells.

  • The defect. MsgType::Region travelled on a connection where every byte after the answer is a doorbell: netstack would drain the request's 8-byte IpcHeader (ipc.rs:93-99) as rings, and the answer would land in the pipe the stream's readers drain.
  • The amendment follows virtio 1.2 (§2.9; the control virtqueue, §5.1.6.5) and TAS (conn.c:89-112), where a doorbell carries no request, and TAS, where a socket stays with the process that opened it. MsgType::Region goes, and toyos::net refuses by name a handle the process holds no end for (the handle bullet).
  • The cost, a regression from today's ToyOS (ruling 7). Today a stream's handle, its joined data pipes (make_socket_fd, sdk/std/sys/net/connection.rs), serves the stream through a File or a child's stdio. Over the region it is the doorbell connection: a child would wait for ever or read doorbells as data, and netstack would drain its writes as doorbells, with no error. Stage 3 refuses both loudly instead (the handle bullets). A stream cannot move between processes: issues/a-stream-cannot-move-between-processes.md.
  • The track: stage 3's exit carries a test of the refusal, red under the design as first written, which wrote Region on the connection, with its boundary: a stream's own handle given out and taken back shares its one end, red when giving it out lets the entry go (round 5's BLOCKER 3). And a test that File::from_raw_fd and a spawn's stdio refuse a stream's handle, each red when it takes the handle silently (ruling 7).

True zero copy: dropped

Received bytes straight from the card into the application's region would remove cy_ring_write, the one copy the session design keeps, and nothing else: read still copies from the region into the caller's buffer, because std::io::Read hands in the buffer. Round 3 measured that copy at 0.225 ms per MB of 5.447 ms of C0 at K = 32, 4.1%, and the scout read the same share (0.2185 of 5.310). To get it:

  • Steering. The card must put one connection's payload only in buffers posted from that connection's region: an exact-match filter and a queue per connection. RSS hashes many flows to one queue and is not enough. A connection past the card's filters has none.
  • Header split. The headers must land in netstack's memory and only the payload in the region, or netstack parses headers the client can rewrite while it reads them (TOCTOU on every field [tcp] trusts).
  • The IOMMU. Every region lent into the card's domain (pcidev::dma_map), which spends MAX_GRANT_TOTAL, 32 MiB a claim (kernel/src/pcidev/mod.rs): four 8 MiB sessions.
  • Lifetime. A buffer posted from a client's region belongs to the card until it completes; a client that never reads holds buffers the card would otherwise refill for every other flow on that queue, and a region taken back with buffers posted must wait out the card.
  • Reassembly. Segments land in arrival order: an out-of-order or retransmitted segment is in the wrong place in the ring, and putting it right is a copy, the one this was to remove.

For a 4% gain the design would trade [tcp] parsing what the client cannot touch for per-flow hardware state, per-client IOMMU windows and a reassembly that copies in exactly the case loss makes common. Dropped under the owner's condition: he ruled zero copy out unless the design showed a useful benefit, and this reading of the gain, the design's and not his, finds none worth that trade. The session layout above carries no field for it.

Does the pipe design itself have a problem?

What pipes are for once netstack leaves them. Three users, from the code: every IPC connection, which is two pipes (connect_through, kernel/src/syscall/ipc.rs) carrying frames of at most ipc::MAX_FRAME_LEN, 8 KiB; a process's stdio and the pipelines between programs (sdk/std/sys/pipe.rs, sdk/std/sys/process.rs), the one user whose volume is unbounded, a POSIX byte stream between two processes; and one-byte wakes (toyos::wake, the mio fork's waker, the supervisor's alive and service-end pipes) and logkeeper's stream to each log reader. Bulk data elsewhere already moves through regions: a file server's window (toyos::fs::WINDOW_BYTES), a block session (lib/blockring), sound and the compositor's buffers.

Are two copies inherent? For a kernel-buffered byte stream whose reader and writer each hand in their own buffer, yes: the writer's buffer cannot be the reader's, and the kernel holds the bytes between the two calls, so each byte is copied in and copied out. The defect was not the pipe's: it was netstack keeping every byte in its own TCP ring and in the pipe, two buffers of one stream, which is the third copy and the 12 MiB a place. The session design makes the ring the buffer.

What SYS_PIPE_MAP is for. Nothing, today. Its last caller, netd, mapped its clients' rings only to read the closed flags, and stopped in a237346 when those were found forgeable; since then only guest tests call it. It is the reason a pipe's ring is a whole 2 MiB page, the only page this kernel maps, and why publish_ends still writes flags into it: filed as issues/a-pipe-is-a-two-mebibyte-page-for-a-mapping-nothing-makes.md, not fixed here.

Is the global PIPES lock a flaw beyond its issue? issues/the-global-pipe-lock-spans-a-user-copy.md already names the whole of it: one table lock is also every ring's serialization, so a copy of a length the caller chooses, and a first write's allocation and 2 MiB zeroing, run under the lock every connection, readiness poll, clone and close in the machine takes. Its fix direction, a per-pipe lock under the table lock and the allocation out from under both, answers it. Nothing found here is outside that issue, so nothing new is filed. Round 3 is the first measurement of it, 0.281 ms held and 0.047 ms spun per MB, and the scout split the hold: the two copies are 73% of it.

What it buys, measured and not guessed

Round 3's rows. Round 3's B at K = 32, medians of the six runs per MB downloaded, from the judge logs b 1a b 2a b 3a and their halves posted on #861:

per MB, TSC time runs 3 and 4 of boots 1, 2, 3 median
system C0 5.543 5.137 5.225 5.412 5.497 5.483 5.447 ms
kernel pipe_lock_hold_cycles 0.286 0.265 0.293 0.293 0.276 0.270 0.281 ms
kernel pipe_lock_spin_cycles 0.052 0.044 0.047 0.051 0.046 0.043 0.047 ms
netstack cy_ring_write 0.226 0.223 0.228 0.202 0.204 0.231 0.225 ms
netstack cy_pipe_w 0.145 0.137 0.141 0.158 0.132 0.130 0.139 ms
kernel pipe_copy_bytes 2.00 per byte downloaded in every run

The lock and its copies are 0.328 ms of 5.447, 6.0%. These rows cannot say how much of the hold is the two copies and how much is everything else the lock covers, and so which part the session design removes and which part the per-pipe lock of the lock's own issue would.

The scout (stage 0). One T14 boot of internet_download, round 3's B with three kernel counters more and every run told K = 32: pipe_lock_takes, and the stamp ticks of try_read's and try_write's copy alone (pipe_read_copy_cycles R, pipe_write_copy_cycles W), each timed around the write_run/read_run the ring hands its run to. Patch: the comment; branch wt/toyos-netring-scout 2f9e090, measurement only, never landing.

The rule, stated before the boot. What the session design removes of the pipe lock on the receive path is S = H − R + P per MB (H the hold, P the spin): the write copy and every non-copy hold and spin, while R stays as the client's own copy out of the region. S ≥ 0.10 ms per MB (about 2% of round 3's C0): the build may claim a CPU saving, and its own T14 boot is judged against the scout's rows. S < 0.10: the design is built on the owner's ruling for what pipes cannot say and the 4 MiB a place, and claims no saving. H − R − W > W: most of the hold is not a copy, and the per-pipe lock takes most of the gain without this design, so that issue goes first. The instrument is sound only if R + W ≤ H in every run and pipe_copy_bytes is 2.00.

The reading (judged; the judge, cargo test --test toyos-build -- --metal --metal-readback <scratchpad>/netring/scout internet_download on 2f9e090, EXIT=0, its log whole and masked in part 1 and part 2; the flash, toyos-metal's lines and the boot). toyos-metal exited 0, and all six runs read the whole 170,439,044-byte file with the right sha256. R + W ≤ H in all six; pipe_copy_bytes 2.0028 in all six. Medians per MB: R 0.1197 ms, W 0.0806, H 0.2728, P 0.0397, 185 takes, C0 5.310 ms, 785.95 Mb/s.

  • S = 0.192 ms per MB ≥ 0.10, the median of the per-run S: the build may claim a CPU saving, and its own boot is judged against these rows.
  • H − R − W = 0.072 ≤ W = 0.081: the third rule does not fire (it fired in one run of six, the slowest), so the per-pipe lock does not go first on this evidence. The copies are 73% of the hold.
  • S bounds the lock's share, not the saving. Of the hold and the spin, the design removes the write copy for certain and at most S: it keeps the doorbells and every IPC connection on PIPES, and the takes, 185 per MB against about 20 data writes, are mostly not the stream's copies. So the lock's share it removes lies between W = 0.081 and S = 0.192 ms per MB. netstack's pipe-write syscalls and the client's read syscalls go too, and their entry, lookup and return run outside the hold, in neither number; the doorbells' syscalls come in. Stage 3's boot reads the whole, which may be more than S, and its pull request claims no more than that boot reads.
  • One boot, where round 3 used three; the send path is not on it, since the download sends only ACKs.

The roast

Cost. By the files it rewrites, not a measurement: netstack's serve.rs, client.rs and the node's streams.rs, listeners.rs and datagram.rs with their tests (2,866 lines of tests in node/tests/streams.rs, listeners.rs and datagram.rs alone, 1,440, 1,106 and 320 by wc -l, most of which assert pipe behaviour and are rewritten, not kept); toyos::net; std's connection.rs; libc's socket.rs and streamend.rs; [tcp]'s Ring over the region. The byte ring and its loom model in toyos-transport are paid: stage 2 (#878) landed them. Production should shrink: pipes.rs, the end-ordering, the per-datagram request, SYS_CONNECTION_JOIN and the doubled buffers go, but for a passive child before its accept (amendment C); the client end is new.

ABI churn. In the kernel: SYS_FSTAT answers DeviceMemory, a new FileType, which every reader of a region's file type sees (stage 1, landed), and SYS_CONNECTION_JOIN goes (stage 4); SYS_HANDLE_RECV and SYS_SHM_MAP keep their shape. In userland: the netstack message set is replaced. Three forks move in stage 3's pull request: mio (its toyos_stream.rs and toyos_listener.rs) and socket2 (src/sys/toyos.rs), each a commit on its toyos branch and a lockfile bump, and rust/, a commit on its branch and a gitlink bump: its library/std/src/os/fd/owned.rs holds the ToyOS arms of OwnedFd's drop and BorrowedFd::try_clone_to_owned that stage 3 routes through toyos::net, and its os/fd compiles out for toyos the conversions stage 3 adds.

Risk.

  • A new shared-memory protocol between a server and every client, which is where the defects are: orders and a hostile peer. toyos-transport's discipline and loom model carry over to the byte ring, and its CONTROLS features (publish-relaxed, no-clamp, and toyos-transport: a byte stream between two ends that do not trust each other, and its wake handshake (netring stage 2) #878's head-relaxed and want-relaxed) give the negative controls.
  • Memory is committed at connect: 8 MiB of contiguous pages before a byte moves, where today the pipes allocate on first write and the rings grow as text is held. A program that opens many short connections pays more, and a fragmented machine can refuse a connect that a pipe would have taken. Not measured.
  • The doorbells still go through PIPES, one byte per sleep rather than per batch, and a stream holds three pipes where it held two (amendment A).
  • A socket watched both ways is two kernel watches (amendment A): the connection for READABLE and POLLIN, and the bell for WRITABLE and POLLOUT. So two limits serve half the sockets watched both ways that they serve today. libc's poll takes nfds up to Poller::MAX_HANDLES, 256 (sdk/libc/src/posix_io.rs). A mio ring holds MAX_PENDING_WATCHES, 1024 (kernel/src/inbox/mod.rs). A socket watched one way costs what it does today.
  • Amendment B's own cost comes on top, and adds no watch. A blocking call takes its end twice per wait. While two threads of one process wait on one direction, a take costs a round trip through netstack.
  • Amendments C and D cost a copy, per accepted stream, of what came before its accept, and a round trip through netstack per registration of a ready direction.
  • std's raw-handle paths each cost a lookup (the handle bullets): each OwnedFd drop and try_clone_to_owned in every ToyOS program, each File::from_raw_fd, and each handle a spawn puts in a child's stdio looks in toyos::net's table of the process's stream ends, under its lock. In std on ToyOS only sdk/std/sys/net/connection.rs's sockets hold an OwnedFd (rg -n OwnedFd sdk/std); another crate's pays at its drop. Not measured: nothing is built.

Known limit, a regression from today's ToyOS: a stream does not move between processes (amendment E, ruling 7). A program that hands a stream to another process through a File or a child's stdio, as an inetd-style server does, works today and fails loudly after stage 3; one that takes a moved stream back as a TcpStream, as socket activation does, is refused. CommandExt::inherit_handle past the stdio slots and CommandExt::endow still hand one over unrefused (What I am unsure of). Filed as issues/a-stream-cannot-move-between-processes.md, owned by the orchestrator, with E's exit: a stream moved by its handle reads and writes in the receiving process, and the process that moved it holds no end.

What it saves. On the receive path, of the pipe lock, between the write copy, 0.081 ms per MB, and S = 0.192, 3.6% of C0, by the scout, and beside it the pipe syscalls' work outside the hold, which no row reads apart; on the send path two copies of every byte and a pipe; the request and connection per datagram; the PIPES traffic of every stream; and the structural debts above, three of them filed issues it closes.

The alternative it is measured against is to keep the pipes and take the per-pipe lock: no ABI change, the lock's convoy gone, every copy kept. The scout's third rule is where that would have won, and it did not fire.

Staging

The track's stages, each a pull request, built in this order:

  • Stage 0, done: the scout boot, judged above.
  • Stage 1, done: SYS_FSTAT answers whether a region is memory the kernel allocated, and a lent region is judged by it before it is mapped #867, landed as 867ec23: fstat's DeviceMemory, and SharedMemory::lent judging a lent region before it maps it. Useful alone: fileserver and diskserver judge their lent regions through it.
  • Stage 2, done: toyos-transport: a byte stream between two ends that do not trust each other, and its wake handshake (netring stage 2) #878, landed as 4ca63a6: the byte ring and its want handshake in toyos-transport.
  • Stage 3, not opened: TCP streams over the region, [tcp]'s heap storage kept beside it (amendment C); std, libc, mio and socket2 through toyos::net, std's raw-handle conversions for TcpStream, and its refusal of a stream's handle as a File or a child's stdio. Its exit is the track's:
    • three loom models, each driving the client end and netstack's ringing code that stage 3 lands: amendment A's and amendment B's, each red under a control that reverts its decision, and amendment D's, red without D, red with either half removed, red under want-relaxed, and, with a fatal end, red where a look reads only the head (ruling 2);
    • a test that toyos::net, handed a stream handle the process holds no end for, refuses it by name and writes nothing on its connection, and that a stream's own handle, given out by into_raw_fd or From<TcpStream> for OwnedFd or made by try_clone_to_owned, and taken back, shares the one end, red when giving the handle out lets its entry go (amendment E, round 5's BLOCKER 3);
    • a test that File::from_raw_fd of a stream's handle panics with that refusal and a spawn whose stdio slot holds one answers it with no child started, each red when it takes the handle silently (ruling 7);
    • a test that a write with room after a reset answers ConnectionReset and copies nothing, red when write copies before it reads the end (ruling 3);
    • the T14 boot of round 3's download, with the scout's instrument, git diff 777c96b2b 2f9e090b8, carried onto its head, reading pipe_copy_bytes under 0.01 per byte downloaded beside the scout's rows.
  • Stage 4, not opened: listeners and datagram sockets, and the pipe ABI's deletion, SYS_CONNECTION_JOIN with it. Its exit is the track's: over the region, a_listener_answers_a_syn_and_wakes_its_owner_when_the_handshake_ends and ruling 1's case pass, the case red under each of its three controls; and a datagram record whose len is past the bytes it holds is refused while netstack serves on, red when netstack takes that len as written (ruling 4).

Stages 3 and 4 change the ABI with the work that needs it, as root CLAUDE.md asks, and each says why userland cannot do what it adds to the kernel, if it adds anything.

Checks

This branch changes no production code, source, test or manifest: three issue files, and the merges of main. Net lines (git diff --shortstat origin/main...0831ca65f, origin/main at 1acaa36): 3 files changed, 219 insertions(+), all under issues/; production 0, tests 0. Each stage names its own negative control and oracle in its pull request.

  • Each amendment's and ruling's claim rests on its section's model, mutation or reading, and its negative controls are its red cases: A's one doorbell; B's rule as written and B less the pass; C's and ruling 1's drops at the accept; D's design as first written, D less the arm and D less the ring, and head-only for ruling 2; and stage 2's want-relaxed for A, B and D. E, its cost and rulings 3 to 7 rest on readings, and the exits carry their tests. The independent oracles are RFC 9293, POSIX.1-2024 (IEEE Std 1003.1-2024: accept, select, send, sendto), mTCP's and TAS's sources, mio's and tokio's sources, and virtio 1.2, each at the version cited.

Gates

What I am unsure of

  • Whether 8 MiB committed at connect is acceptable before demand-allocated regions exist; the alternative, a client-chosen size with the window following it, makes std choose a number.
  • Whether toyos::net taking toyos-transport as a dependency moves the sysroot's identity in a way build/identity.rs charges every build for; read before stage 3.
  • Whether five preemptions reach every interleaving amendment B must survive. The rule as written, B less the pass and want-relaxed all red within the bound. Unbounded, one case gave no verdict in ten minutes.
  • Whether mio's exemption from the count is right. It rests on mio's contract that a source is read to WouldBlock after its event. A mio program that reads a socket from a thread mio did not wake, and stops short of WouldBlock, can miss its next event, as mio documents.
  • D: whether a reregister that changes only the token should ring netstack too. As written, D's does.
  • Ruling 7 names a spawn's stdio. ToyOS's own CommandExt::inherit_handle past the stdio slots and CommandExt::endow hand a child a stream's handle too, which reads doorbells there, and an endow moves the handle out of this process's table while toyos::net keeps its entry. The spawn's check costs the same lookup for every handle it hands over; whether it covers them is the orchestrator's to rule.
  • A datagram [udp] refuses is the program's send_to error today (udp_send_to, system/netstack/src/serve.rs; each_refusal_is_answered_in_the_pipes_word_for_it). Over records a send has no answer: send_to returns Ok and the refusal is only a counter, a payload past MAX_PAYLOAD included, which POSIX's sendto fails [EMSGSIZE], "The message is too large to be sent all at once, as the socket requires". Whether toyos::net refuses what it can judge before it writes a record is the orchestrator's to rule.

🤖 Generated with Claude Code

https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy

Japabu and others added 2 commits October 11, 2026 23:39
The session-region design that replaces the pipes between netstack and its
clients, and its roast, are this pull request's body.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017cSFvbD35xJ2kGANVdm23C
…e for a mapping nothing makes

The track records the copies and the lock as a present-state weakness, with
round 3's T14 rows as evidence and the stages the design in PR #863's body
names. The defect is the pipe-section finding of that design: SYS_PIPE_MAP
has had no caller outside the guest tests since a237346, and it is why
every pipe and every connection direction costs a 2 MiB page.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017cSFvbD35xJ2kGANVdm23C
@Japabu

Japabu commented Oct 11, 2026

Copy link
Copy Markdown
Collaborator Author

The netring scout patch: applies with git apply on 52fea69 (round 3's B); committed as wt/toyos-netring-scout 2f9e090. Measurement only, never lands.

diff --git a/kernel/src/counters.rs b/kernel/src/counters.rs
index df5f87d3b..9d2144048 100644
--- a/kernel/src/counters.rs
+++ b/kernel/src/counters.rs
@@ -133,7 +133,10 @@ fn sample(me: usize) -> [u64; WORDS] {
             | Counter::InboxRearms
             | Counter::PipeLockSpinCycles
             | Counter::PipeLockHoldCycles
-            | Counter::PipeCopyBytes => Some(soft::get(me, counter)),
+            | Counter::PipeCopyBytes
+            | Counter::PipeLockTakes
+            | Counter::PipeReadCopyCycles
+            | Counter::PipeWriteCopyCycles => Some(soft::get(me, counter)),
         };
         if let Some(value) = value {
             words[1] |= 1 << counter as usize;
diff --git a/kernel/src/pipe.rs b/kernel/src/pipe.rs
index 6bd53207e..e46d1e9af 100644
--- a/kernel/src/pipe.rs
+++ b/kernel/src/pipe.rs
@@ -184,6 +184,7 @@ fn with_pipes<R>(f: impl FnOnce(&IdMap<PipeId, Pipe>) -> R) -> R {
     let guard = PIPES.lock();
     let t1 = soft::now();
     soft::add(Counter::PipeLockSpinCycles, t1.wrapping_sub(t0));
+    soft::add(Counter::PipeLockTakes, 1);
     let r = f(guard.as_ref().expect("pipes not initialized"));
     soft::since(Counter::PipeLockHoldCycles, t1);
     r
@@ -196,6 +197,7 @@ fn with_pipes_mut<R>(f: impl FnOnce(&mut IdMap<PipeId, Pipe>) -> R) -> R {
     let mut guard = PIPES.lock();
     let t1 = soft::now();
     soft::add(Counter::PipeLockSpinCycles, t1.wrapping_sub(t0));
+    soft::add(Counter::PipeLockTakes, 1);
     let r = f(guard.as_mut().expect("pipes not initialized"));
     soft::since(Counter::PipeLockHoldCycles, t1);
     r
@@ -235,7 +237,12 @@ pub fn try_read(pipe_id: PipeId, buf: &mut UserBytesMut) -> Option<usize> {
                 .as_mut()
                 .expect("available() > 0 implies a ring")
                 .ring
-                .read(len, |off, src| buf.write_run(off, &src));
+                .read(len, |off, src| {
+                    let t = crate::counters::soft::now();
+                    let r = buf.write_run(off, &src);
+                    crate::counters::soft::since(toyos_abi::counters::Counter::PipeReadCopyCycles, t);
+                    r
+                });
             crate::counters::soft::add(toyos_abi::counters::Counter::PipeCopyBytes, n as u64);
             let boost = pipe.rt_boost_pending;
             pipe.rt_boost_pending = false;
@@ -270,7 +277,12 @@ pub fn try_write(pipe_id: PipeId, buf: &UserBytes) -> Option<PipeWrite> {
             return Some(PipeWrite::NoMemory);
         };
         if backing.ring.space() > 0 {
-            let n = backing.ring.write(buf.len(), |off, mut dst| buf.read_run(off, &mut dst));
+            let n = backing.ring.write(buf.len(), |off, mut dst| {
+                let t = crate::counters::soft::now();
+                let r = buf.read_run(off, &mut dst);
+                crate::counters::soft::since(toyos_abi::counters::Counter::PipeWriteCopyCycles, t);
+                r
+            });
             crate::counters::soft::add(toyos_abi::counters::Counter::PipeCopyBytes, n as u64);
             Some(PipeWrite::Wrote(n))
         } else {
diff --git a/sdk/abi/src/counters.rs b/sdk/abi/src/counters.rs
index 090907631..686d189bf 100644
--- a/sdk/abi/src/counters.rs
+++ b/sdk/abi/src/counters.rs
@@ -73,10 +73,16 @@ pub enum Counter {
     PipeLockHoldCycles,
     /// Bytes pipe reads and writes copied.
     PipeCopyBytes,
+    /// Takes of the pipe table's lock.
+    PipeLockTakes,
+    /// Stamp ticks of a pipe read's copy out of the ring, under the lock.
+    PipeReadCopyCycles,
+    /// Stamp ticks of a pipe write's copy into the ring, under the lock.
+    PipeWriteCopyCycles,
 }
 
 impl Counter {
-    pub const COUNT: usize = 21;
+    pub const COUNT: usize = 24;
     pub const ALL: [Counter; Self::COUNT] = [
         Self::Stamp,
         Self::Smi,
@@ -99,6 +105,9 @@ impl Counter {
         Self::PipeLockSpinCycles,
         Self::PipeLockHoldCycles,
         Self::PipeCopyBytes,
+        Self::PipeLockTakes,
+        Self::PipeReadCopyCycles,
+        Self::PipeWriteCopyCycles,
     ];
 
     pub const fn name(self) -> &'static str {
@@ -124,6 +133,9 @@ impl Counter {
             Self::PipeLockSpinCycles => "pipe_lock_spin_cycles",
             Self::PipeLockHoldCycles => "pipe_lock_hold_cycles",
             Self::PipeCopyBytes => "pipe_copy_bytes",
+            Self::PipeLockTakes => "pipe_lock_takes",
+            Self::PipeReadCopyCycles => "pipe_read_copy_cycles",
+            Self::PipeWriteCopyCycles => "pipe_write_copy_cycles",
         }
     }
 
@@ -147,7 +159,10 @@ impl Counter {
             | Self::InboxRearms
             | Self::PipeLockSpinCycles
             | Self::PipeLockHoldCycles
-            | Self::PipeCopyBytes => Rights::COUNTERS.union(Rights::TRACE),
+            | Self::PipeCopyBytes
+            | Self::PipeLockTakes
+            | Self::PipeReadCopyCycles
+            | Self::PipeWriteCopyCycles => Rights::COUNTERS.union(Rights::TRACE),
         }
     }
 }
diff --git a/tests/guest/rust-tests/src/bin/https_download.rs b/tests/guest/rust-tests/src/bin/https_download.rs
index b1885732a..1dd8f7d61 100644
--- a/tests/guest/rust-tests/src/bin/https_download.rs
+++ b/tests/guest/rust-tests/src/bin/https_download.rs
@@ -58,7 +58,7 @@ const PROBES: usize = 5;
 /// cadence's `K` netstack is told before it: a palindrome, so drift across the
 /// boot weighs every `K` alike. A netstack with no cadence refuses the word, and
 /// the label is then the run's place in the order.
-const K_ORDER: [u32; 6] = [8, 16, 32, 32, 16, 8];
+const K_ORDER: [u32; 6] = [32; 6];
 
 /// MEASUREMENT ONLY: the word that sets netstack's `K`: `K=` and the value.
 fn set_k(k: u32) {

@Japabu

Japabu commented Oct 11, 2026

Copy link
Copy Markdown
Collaborator Author

cargo run -- --ci host on 148c3de, EXIT=0, part 1 of 10

   Compiling libc v0.2.190
   Compiling cfg-if v1.0.4
   Compiling proc-macro2 v1.0.106
   Compiling version_check v0.9.5
   Compiling unicode-ident v1.0.24
   Compiling find-msvc-tools v0.1.9
   Compiling quote v1.0.45
   Compiling shlex v1.3.0
   Compiling serde_core v1.0.228
   Compiling typenum v1.20.1
   Compiling serde v1.0.228
   Compiling semver v1.0.28
   Compiling zeroize v1.9.0
   Compiling untrusted v0.9.0
   Compiling equivalent v1.0.2
   Compiling subtle v2.6.1
   Compiling itoa v1.0.17
   Compiling cc v1.2.56
   Compiling rustls-pki-types v1.15.1
   Compiling httparse v1.10.1
   Compiling rustc_version v0.4.1
   Compiling toyos-abi v0.16.0 (/Users/jan/Dev/jan/toyos-netring/sdk/abi)
   Compiling generic-array v0.14.7
   Compiling rustls v0.23.45
   Compiling signature v2.2.0
   Compiling log v0.4.29
   Compiling bytes v1.12.1
   Compiling zmij v1.0.21
   Compiling crc32fast v1.5.0
   Compiling curve25519-dalek v4.1.3
   Compiling base64 v0.23.1
   Compiling toyos-sha2 v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/sha2)
   Compiling hashbrown v0.16.1
   Compiling toyos-sha2-hw v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/sha2-hw)
   Compiling ed25519 v2.2.3
   Compiling libm v0.2.16
   Compiling serde_json v1.0.149
   Compiling simd-adler32 v0.3.10
   Compiling http v1.5.0
   Compiling syn v2.0.117
   Compiling foldhash v0.1.5
   Compiling allocator-api2 v0.2.21
   Compiling winnow v0.7.15
   Compiling adler2 v2.0.1
   Compiling toyos-wallclock v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/wallclock)
   Compiling once_cell v1.21.4
   Compiling getrandom v0.3.4 (https://github.com/ToyOSOrg/getrandom?branch=toyos-0.3-sdk-0.12#67c17e0a)
   Compiling getrandom v0.2.17 (https://github.com/ToyOSOrg/getrandom?branch=toyos-0.2-sdk-0.12#2092d1cc)
   Compiling cpufeatures v0.2.17
   Compiling toml_write v0.1.2
   Compiling indexmap v2.13.0
   Compiling hashbrown v0.15.5
   Compiling filetime v0.2.29
   Compiling miniz_oxide v0.9.1
   Compiling toyos-manifest v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/manifest)
   Compiling ring v0.17.14 (https://github.com/ToyOSOrg/ring?branch=toyos-0.17.14#34818c45)
   Compiling webpki-roots v1.0.9
   Compiling memchr v2.8.0
   Compiling rustc-demangle v0.1.27
   Compiling crypto-common v0.1.7
   Compiling block-buffer v0.10.4
   Compiling ureq-proto v0.6.4
   Compiling digest v0.10.7
   Compiling toyos-elf v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/elf)
   Compiling sha2 v0.10.9
   Compiling toyos-elide v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/elide)
   Compiling utf8-zero v0.8.1
   Compiling ttf-parser v0.21.1
   Compiling percent-encoding v2.3.2
   Compiling ed25519-dalek v2.2.0
   Compiling toyos-symbols v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/symbols)
   Compiling toyos-update v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/update)
   Compiling toyos-swap v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/swap)
   Compiling flate2 v1.1.10
   Compiling serde_derive v1.0.228
   Compiling tar v0.4.46
   Compiling toyos-fat32 v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/fat32)
   Compiling toyos-logstream v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/logstream)
   Compiling pem v4.0.0
   Compiling webpki-root-certs v1.0.9
   Compiling toyos-osrelease v0.1.0 (/Users/jan/Dev/jan/toyos-netring/sdk/osrelease)
   Compiling toyos-keymap v0.1.0 (/Users/jan/Dev/jan/toyos-netring/sdk/keymap)
   Compiling toyos-tco v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/tco)
   Compiling bcachefs v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/bcachefs)
   Compiling toyos-gpt v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/gpt)
   Compiling toyos-tmpdir v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/tmpdir)
   Compiling toyos-blackbox v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/blackbox)
   Compiling toyos-fat32-check v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/fat32/check)
   Compiling fontdue v0.9.3
   Compiling rustls-webpki v0.103.15
   Compiling toyos-ssh v0.1.0 (/Users/jan/Dev/jan/toyos-netring/build/ssh)
   Compiling serde_spanned v0.6.9
   Compiling toml_datetime v0.6.11
   Compiling toml_edit v0.22.27
   Compiling toml v0.8.23
   Compiling ureq v3.4.2
   Compiling toyos-build v0.1.0 (/Users/jan/Dev/jan/toyos-netring)
    Finished `dev` profile [optimized + debuginfo] target(s) in 43.35s
     Running `target/debug/toyos-build --ci host`

21:42:01 === [ci] the build system
   Compiling autocfg v1.5.1
   Compiling getrandom v0.4.2 (https://github.com/ToyOSOrg/getrandom?branch=toyos-0.4#f0286c8b)
   Compiling powerfmt v0.2.1
   Compiling deranged v0.5.8
   Compiling num-conv v0.2.2
   Compiling time-core v0.1.9
   Compiling core-foundation-sys v0.8.7
   Compiling toyos-bootmap v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/bootmap)
   Compiling crc-catalog v2.4.0
   Compiling bitflags v2.11.0
   Compiling toyos-quiesce v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/quiesce)
   Compiling bitflags v1.3.2
   Compiling byteorder v1.5.0
   Compiling kernel v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel)
   Compiling iana-time-zone v0.1.65
   Compiling crc v3.4.0
   Compiling toyos-metal v0.1.0 (/Users/jan/Dev/jan/toyos-netring/tests/metal)
   Compiling toyos-desktop v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/compositor/desktop)
   Compiling toyos-xhci v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/xhci)
   Compiling acpiserver-api v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/acpiserver-api)
   Compiling num-traits v0.2.19
   Compiling toyos-acpi v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/acpi)
   Compiling uuid v1.22.0
   Compiling gpt v3.1.0
   Compiling toyos-userbound v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/userbound)
   Compiling time v0.3.55
   Compiling chrono v0.4.44
   Compiling yasna v0.6.0
   Compiling rcgen v0.14.10
   Compiling fatfs v0.3.6
   Compiling toyos-build v0.1.0 (/Users/jan/Dev/jan/toyos-netring)
    Finished `test` profile [optimized + debuginfo] target(s) in 38.25s
     Running unittests build/lib.rs (target/debug/deps/toyos_build-4605f31a1540608c)

running 330 tests
test arch::tests::a_guest_of_another_architecture_is_emulated ... ok
test arch::tests::every_target_names_its_own_architecture ... ok
test bootlog::tests::a_boot_record_without_the_supervisors_stop_is_not_a_pass ... ok
test bootlog::tests::a_part_whose_rotation_the_log_does_not_hold_is_a_hole ... ok
test bootlog::tests::a_boot_that_lost_parts_of_its_own_log_is_told_from_one_that_is_whole ... ok
test arch::tests::every_name_parses_back_to_its_arch_and_nothing_else_does ... ok
test bootlog::record_time_tests::a_records_elapsed_field_is_read_past_whatever_tag_precedes_it ... ok
test bootlog::tests::a_boot_is_handed_back_by_its_done_and_its_last_word ... ok
test bootlog::record_time_tests::the_last_record_is_the_last_line_that_carries_a_time ... ok
test bootlog::record_time_tests::the_panel_census_is_read_off_either_channel ... ok
test bootlog::tests::a_long_binarys_record_is_the_prefix_the_kernel_keeps ... ok
test bootlog::tests::a_power_off_is_the_supervisors_stop_naming_a_shutdown ... ok
test bootlog::tests::a_programs_line_is_never_the_kernels ... ok
test bootlog::tests::only_a_declaration_of_the_whole_value_counts ... ok
test bootlog::tests::the_boot_record_is_the_kernels_own_line ... ok
test build::tests::a_bin_entry_no_name_reaches_is_refused ... ok
test bootlog::tests::the_loaders_file_is_told_from_logkeepers_however_a_driver_spelled_it ... ok
test bootlog::tests::the_loader_writes_the_lines_the_host_reads ... ok
test build::tests::a_hold_in_front_of_the_save_is_an_entry_the_judge_refuses_to_read ... ok
test build::tests::a_clean_entry_is_the_shipping_kernels ... ok
test build::tests::a_boot_that_asks_for_no_feature_gets_the_shipping_kernel ... ok
test bootlog::tests::the_kernel_writes_the_records_the_host_reads ... ok
test build::tests::a_hold_is_refused_in_a_shipping_entry_however_its_labels_are_spelled ... ok
test build::tests::a_kernel_of_any_other_feature_set_is_not_judged ... ok
test build::tests::a_kernel_that_does_not_name_exactly_one_entry_is_refused ... ok
test build::tests::a_case_plan_carries_the_config_and_the_parameters ... ok
test build::tests::an_artifact_build_is_not_part_of_a_test_execution_price ... ok
test build::tests::a_valued_parameter_is_one_the_kernel_claims_by_prefix ... ok
test build::tests::debug_mode_declares_only_its_debug_kernel ... ok
test build::tests::a_boot_config_that_is_not_a_case_is_refused ... ok
test build::tests::a_stamp_that_cannot_be_written_panics ... ok
test build::tests::a_program_resolves_in_exactly_one_root ... ok
test build::tests::a_provides_name_is_never_also_a_serves_name ... ok
test build::tests::an_installed_app_receives_only_names_the_supervisor_holds ... ok
test build::tests::a_row_starts_only_what_a_launch_can_start ... ok
test assets::tests::the_console_font_covers_the_swiss_german_altgr_layer ... ok
test build::tests::every_device_class_has_at_most_one_claimant ... ok
test build::tests::every_config_renders_its_manifest ... ok
test build::tests::every_boot_config_runs_logkeeper ... ok
test build::tests::every_declared_capability_is_one_the_abi_has ... ok
test build::tests::every_shipped_boot_config_is_covered ... ok
test build::tests::every_modes_crates_and_the_supervisor_ship ... ok
test build::tests::every_receives_names_a_provider ... ok
test build::tests::only_the_consent_server_holds_the_prompt_and_serves_consent ... ok
test build::tests::no_diag_program_claims_the_screen ... ok
test build::tests::no_actuator_is_also_a_cargo_feature ... ok
test build::tests::params_read_the_kernels_own_list ... ok
test build::tests::no_shipped_boot_config_starts_sshserver ... ok
test build::tests::every_started_program_is_declared ... ok
test build::tests::the_apps_folder_ceiling_is_one_of_two_spellings ... ok
test build::tests::the_check_does_not_reach_a_spawner_that_never_spawns ... ok
test build::tests::the_actuator_umbrella_is_a_leaf ... ok
test build::tests::the_kernel_declares_only_the_builds_that_earned_one ... ok
test build::tests::the_pre_flash_gate_clears_a_valued_parameter_and_refuses_an_actuator ... ok
test build::tests::only_their_holders_may_hold_the_swap_port_and_the_slots ... ok
test build::tests::every_model_control_is_run ... ok
test build::tests::the_log_right_doc_names_exactly_the_manifests_holders ... ok
test buildlock::tests::child_role ... ignored, the competing process for the tests below; never runs on its own

running 1 test

running 1 test

running 1 test

running 1 test

running 1 test
21:42:39 [build-lock] waiting for the build lock (exclusive, queued exclusive phase) — held by other builds in this tree

running 1 test
test build::tests::moved_libraries_take_what_was_built_for_them_and_a_moved_compiler_all ... ok

running 1 test
21:42:39 [build-lock] waiting for the build lock (shared, child) — an exclusive phase is queued ahead of it
test buildlock::tests::child_role ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 329 filtered out; finished in 0.01s

test buildlock::tests::child_role ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 329 filtered out; finished in 0.01s


running 1 test
test buildlock::tests::child_role ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 329 filtered out; finished in 0.02s


running 1 test
21:42:39 [build-lock] waiting for the sysroot lock (using sysroot 6ab9f1eb8f7d3388) — held by pid 90649 (building sysroot 6ab9f1eb8f7d3388), 0s so far

running 1 test

running 1 test
test buildlock::tests::a_released_holder_is_gone ... ok
test buildlock::tests::exclusive_excludes_every_other_acquirer ... ok
test buildlock::tests::killed_holder_releases_the_lock ... ok
test ci::tests::a_carried_jobs_step ... ignored, the driver of the test above; never runs on its own
test ci::tests::a_hung_step ... ignored, the step of the driver above; never runs on its own
test ci::tests::a_hung_steps_child ... ignored, what the step above spawns; never runs on its own
test ci::tests::a_hung_steps_driver ... ignored, the driver of the tests around it; never runs on its own
test ci::tests::a_control_is_judged_by_its_verdict_and_not_its_exit_alone ... ok
test ci::tests::a_job_is_named_and_takes_nothing_after_it ... ok
test buildlock::tests::shared_admits_shared ... ok
test ci::tests::a_steps_cargo ... ignored, the driver of the test above; never runs on its own
21:42:39 [build-lock] waiting for the build lock (exclusive, clean the crate target) — held by other builds in this tree
test assets::tests::the_system_fonts_ship_with_their_licence ... ok
test ci::tests::an_app_is_judged_for_every_host_its_fails_does_not_name ... ok
test ci::tests::an_interrupt_of_the_driver_ends_the_group_its_step_runs_in ... ok
test ci::tests::an_interrupted_drivers_judge ... ignored, the judge of the test above; never runs on its own
test ci::tests::left_behind_refuses_a_tmpdir_that_never_saw_the_lock ... ok
test ci::tests::only_mains_tip_publishes ... ok
test ci::tests::the_declared_version_is_a_version ... ok
test ci::tests::the_host_job_names_what_its_tests_left_behind ... ok
test assets::tests::only_its_reader_opens_an_owned_file ... ok
test ci::tests::the_required_check_is_a_job_on_every_pull_request ... ok
test ci::tests::the_summary_keeps_the_count_and_the_verdicts ... ok
test ci::tests::the_version_parser_takes_what_qemu_prints_and_refuses_the_rest ... ok
test assets::tests::a_system_font_ships_as_it_is_and_the_console_font_as_its_raster ... ok
test ci::tests::the_job_names_a_short_root_a_step_left_when_it_died ... ok
test ci::tests::workflows_run_against_main_on_hosted_runners ... ok
test assets::tests::root_carries_what_the_repository_declares ... ok
test assets::tests::an_owned_asset_ships_only_where_its_reader_does ... ok
21:42:40 [build-lock] still waiting for the build lock (exclusive, queued exclusive phase), 306ms so far — the holder left no readable note
21:42:40 [build-lock] acquired (exclusive, queued exclusive phase) after 306.6ms
21:42:40 [build-lock] acquired (shared, child) after 298.4ms
test buildlock::tests::child_role ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 329 filtered out; finished in 0.31s

test buildlock::tests::child_role ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 329 filtered out; finished in 0.30s

test buildlock::tests::a_queued_exclusive_phase_goes_first ... ok
test buildlock::tests::child_role ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 329 filtered out; finished in 0.31s

test buildlock::tests::child_role ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 329 filtered out; finished in 0.30s


running 1 test
test buildlock::tests::child_role ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 329 filtered out; finished in 0.01s

21:42:40 [build-lock] still waiting for the build lock (exclusive, clean the crate target), 305ms so far — the holder left no readable note
test buildlock::tests::a_key_being_built_is_waited_for_and_another_key_is_not ... ok
test cicache::tests::a_reader_whose_clock_is_not_after_the_entry_is_refused ... ok
test cicache::tests::every_spelling_of_code_run_at_build_time_is_found ... ok
test cicache::tests::only_a_driver_built_in_its_own_target_carries_the_cache ... ok
test cicache::tests::a_seal_dates_every_target_and_refuses_a_written_source ... ok
test cicache::tests::a_seal_refuses_what_its_save_would_store_above_the_bound ... ok
test clippy::tests::the_adopted_set_expands_into_the_shapes_that_name_it ... ok
test clang::tests::a_toolchain_carries_the_clang_of_its_llvm_or_is_refused ... ok
test cicache::tests::targets_restored_without_a_manifest_are_refused ... ok
test ci::tests::a_step_of_a_job_that_carries_the_cache_builds_in_its_own_target ... ok
test buildlock::tests::a_lasting_wait_keeps_saying_so ... ok
21:42:40 [build-lock] still waiting for the build lock (exclusive, clean the crate target), 608ms so far — the holder left no readable note
21:42:40 [build-lock] acquired (exclusive, clean the crate target) after 701.9ms
test buildlock::tests::child_role ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 329 filtered out; finished in 0.71s

test buildlock::tests::a_clean_cannot_land_inside_a_build ... ok
test compiler::tests::child_role ... ignored, the competing process for the test above; never runs on its own
test compiler::tests::every_compiler_is_built_lean_against_the_host_s_llvm ... ok
test ci::tests::a_steps_cargo_finds_fresh_what_the_jobs_cargo_built ... ok
test build::tests::a_tree_records_its_commit_its_commit_time_and_whether_it_is_dirty ... ok
test disk::tests::a_node_is_a_whole_scsi_or_nvme_disk_and_nothing_else ... ok
test fatformat::tests::an_empty_volume_mounts_free_and_checks_clean ... ok
test cicache::tests::an_entry_built_on_another_runner_is_deleted ... ok
test firmware::tests::a_descriptor_that_does_not_parse_is_refused_by_name ... ok
test firmware::tests::a_glob_matches_a_trailing_star_as_a_prefix_and_refuses_anything_else ... ok
test firmware::tests::a_read_only_templates_copy_is_still_writable ... ok
test firmware::tests::an_earlier_directory_hides_a_later_ones_name_and_a_missing_one_holds_nothing ... ok
test firmware::tests::nothing_fitting_is_refused_naming_what_was_read ... ok
test build::tests::the_kernel_resolves_no_libc_for_either_target ... ok
test firmware::tests::the_first_non_secure_uefi_flash_descriptor_for_the_machine_wins ... ok
test firmware::tests::the_machine_is_the_versioned_type_its_alias_resolves_to ... ok
test firmware::tests::the_users_and_the_systems_directories_come_before_qemus_own ... ok
test flags::tests::a_declared_flags_value_is_never_read_as_a_flag ... ok
test flags::tests::a_flag_left_without_its_value_is_refused ... ok
test flags::tests::a_flag_that_reads_one_value_is_refused_when_it_is_written_twice ... ok
test flags::tests::a_repeatable_flag_keeps_every_value_it_was_given ... ok
test flags::tests::an_argument_the_declaration_does_not_expect_is_refused_by_name ... ok
test flags::tests::an_inline_value_is_refused_exactly_where_it_would_be_dropped ... ok
test flags::tests::help_is_the_whole_declared_list ... ok
test flash::tests::a_descriptor_reaching_another_disk_writes_nothing ... ok
test flash::tests::a_disk_on_no_usb_device_is_no_candidate_even_when_named ... ok
test flash::tests::a_port_the_kernel_describes_in_another_word_is_refused ... ok
test flash::tests::a_usb_disk_on_a_fixed_or_unknown_port_is_no_candidate ... ok
test flash::tests::the_disk_under_the_name_after_the_prompt_must_be_the_candidate_shown ... ok
test flash::tests::the_image_is_the_one_named_and_only_one ... ok
test flash::tests::the_stick_on_a_removable_usb_port_is_chosen_beside_the_internal_disk ... ok
test flash::tests::the_usb_device_is_the_deepest_one_on_the_disks_path ... ok
test flash::tests::two_sticks_are_refused_until_one_is_named ... ok
test gptwrite::tests::a_random_guid_is_version_4_of_the_rfc_variant ... ok
test flash::tests::the_image_lands_whole_from_its_first_byte_after_its_check ... ok
test gptwrite::tests::toyos_gpt_reads_it_from_either_copy ... ok
test hostedclang::tests::a_product_without_a_binary_or_its_headers_is_not_whole ... ok
test hostedclang::tests::the_key_moves_with_the_llvm_the_sysroot_and_the_options ... ok
test hostedclang::tests::the_suffix_is_what_follows_the_version ... ok
test hostws::tests::every_crate_in_the_tree_joined_the_workspace_or_was_excluded_by_name ... ok
test hostws::tests::every_member_and_every_exclusion_still_names_a_directory ... ok
test hostws::tests::nothing_that_runs_names_a_target_directory_a_member_does_not_have ... ok
test hostws::tests::the_dead_path_scan_names_the_member_and_ignores_an_excluded_crate ... ok
test hostws::tests::the_dead_path_scan_reads_code_and_not_the_comment_beside_it ... ok
test hostws::tests::the_gate_refuses_a_crate_that_joined_neither_list ... ok
test hostws::tests::the_root_package_is_the_only_default_member ... ok
test cicache::tests::a_file_cargo_was_never_told_about_rebuilds_its_package ... ok
test icons::tests::a_disc_and_a_ring_cover_their_areas ... ok
test icons::tests::a_fill_is_nonzero ... ok
test icons::tests::a_group_is_refused - should panic ... ok
test icons::tests::a_literal_colour_is_refused - should panic ... ok
test icons::tests::a_square_cap_is_refused - should panic ... ok
test icons::tests::a_square_covers_its_samples ... ok
test icons::tests::an_unpainted_shape_is_refused - should panic ... ok
test icons::tests::an_unread_attribute_is_refused - should panic ... ok
test icons::tests::an_unread_command_is_refused - should panic ... ok
test icons::tests::the_icons_are_the_pixels_compared_with_resvg ... ok
test identity::tests::a_file_that_is_not_rust_is_its_bytes ... ok
test identity::tests::a_literal_is_never_read_as_a_comment ... ok
test identity::tests::a_signature_or_a_value_is_a_change ... ok
test identity::tests::every_doc_comment_in_the_sysroot_crates_is_invisible ... ok
test identity::tests::the_doc_fix_that_cost_a_version_and_a_sysroot_is_neither ... ok
test hostws::tests::the_walk_reaches_the_tree_and_descends_into_it ... ok
test image::tests::a_damaged_image_is_refused_by_the_reader_that_caught_it ... ok
test image::tests::an_image_s_marked_slot_is_signed_over_exactly_what_it_carries ... ok
test image::tests::a_second_build_at_the_boundary_does_not_run_out ... ok
test image::tests::every_declared_path_resolves_inside_the_root_partition ... ok
test image::tests::one_ordering_of_one_set_is_one_image ... ok
test image::tests::an_install_makes_its_disk_and_refuses_one_that_exists ... ok
test image::tests::the_esp_and_a_slot_carry_what_the_bootloader_looks_for ... ok
test image::tests::the_root_partition_reads_back_as_the_files_the_build_put_in_it ... ok
test image::tests::the_volumes_this_build_writes_break_no_format_rule ... ok
test kernelconsole::tests::a_console_that_ends_mid_line_shows_its_last_line ... ok
test kernelconsole::tests::a_port_the_firmware_left_alone_passes_whole ... ok
test image::tests::root_carries_less_than_an_alignment_unit_of_free_blocks ... ok
test kernelconsole::tests::a_terminal_is_shown_the_firmware_as_it_came_and_the_kernel_in_colour ... ok
test kernelconsole::tests::nothing_before_the_kernel_passes ... ok
test kernelconsole::tests::the_fused_line_is_the_kernels_first_record_wherever_the_chunks_fall ... ok
test kernelkeys::tests::every_declared_row_names_the_minter_of_its_keys ... ok
test kernelkeys::tests::every_hashed_kernel_container_is_declared_with_a_kernel_minted_key ... ok
test kernelkeys::tests::the_scan_reads_a_nested_generic_to_its_balanced_close ... ok
test kernelkeys::tests::the_scan_walks_past_four_measured_forms ... ok

running 1 test
test buildlock::tests::child_role ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 329 filtered out; finished in 0.01s

test keystore::tests::a_product_used_again_is_kept ... ok
test keystore::tests::a_stopped_retire_leaves_nothing_at_its_name ... ok
test keystore::tests::a_sweep_leaves_hidden_names_and_refuses_names_no_key_owns ... ok

running 1 test
test buildlock::tests::child_role ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 329 filtered out; finished in 0.01s

test keystore::tests::a_sweep_removes_what_nobody_used_for_the_keep_time_and_nobody_uses ... ok
test keystore::tests::only_what_key_of_gives_is_a_key ... ok
test libc::tests::the_c_sysroot_names_the_empty_libraries ... ok
test licence::tests::a_cfg_edge_is_walked_and_excepted_only_while_every_edge_in_is_under_it ... ok
test licence::tests::a_committed_file_is_judged_by_its_row_when_it_ships ... ok
test licence::tests::a_disallowed_licence_is_refused_by_name ... ok
test licence::tests::a_font_licence_does_not_reach_a_row_that_is_no_font ... ok
test licence::tests::a_git_dependency_is_judged_like_any_other ... ok
test licence::tests::a_graph_is_walked_over_normal_edges_from_the_shipped_root ... ok
test licence::tests::a_malformed_expression_is_refused_not_guessed ... ok
test licence::tests::a_nested_package_s_files_ship_only_with_it ... ok
test licence::tests::a_notice_section_is_judged_when_what_no_row_names_ships ... ok
test licence::tests::a_notice_section_that_disagrees_with_a_row_is_refused ... ok
test licence::tests::a_notice_section_without_one_spdx_line_or_without_files_is_refused ... ok
test licence::tests::a_root_the_metadata_does_not_hold_is_refused ... ok
test licence::tests::an_and_passes_only_when_every_part_does ... ok
test licence::tests::an_embed_is_what_a_build_script_or_an_include_names ... ok
test licence::tests::an_exception_matches_by_name_and_licence_and_a_stale_one_reds ... ok
test licence::tests::an_or_passes_when_any_branch_does ... ok
test licence::tests::every_pending_exception_cites_an_issue_that_exists ... ok
test licence::tests::metadata_is_given_the_features_the_build_gives ... ok
test licence::tests::mpl_passes_and_is_named ... ok
test licence::tests::no_guest_target_satisfies_an_only_under_cfg ... ok
test licence::tests::only_a_workspace_member_is_a_documents_own ... ok
test licence::tests::the_trust_roots_pass_only_with_their_crates_licence_text ... ok
test llvm::tests::a_build_directory_keeps_no_llvm_of_its_own ... ok
test compiler::tests::a_compiler_is_keyed_by_its_whole_build ... ok
test compiler::tests::a_compiler_whose_sources_moved_while_it_was_built_is_not_stored ... ok
test compiler::tests::an_uncommitted_llvm_edit_is_refused ... ok
test gptwrite::tests::the_gpt_crate_writes_the_same_table ... ok
test compiler::tests::a_compiler_s_build_directory_keeps_no_llvm_of_its_own ... ok
test compiler::tests::a_build_directory_another_llvm_filled_starts_from_nothing ... ok
test cicache::tests::an_entry_serves_exactly_the_sources_it_was_built_from ... ok
test llvm::tests::a_staged_llvm_gitlink_is_refused ... ok

running 1 test

running 1 test
21:42:45 Building compiler a364b40fdca86752 in /private/var/folders/gr/mr4_fg4n34jb417sx1g5cgxc0000gp/T/toyos-tmp-73099-0/ci-host-0/toyos-tmp-89266-0/compiler-49/a/rust: nobody on this host has
21:42:45 Building LLVM b35e868eaefa0691 in /private/var/folders/gr/mr4_fg4n34jb417sx1g5cgxc0000gp/T/toyos-tmp-73099-0/ci-host-0/toyos-tmp-89266-0/llvm-sweep-stopped-69/a/rust: nobody on this host has
test llvm::tests::an_llvm_is_stamped_with_what_its_fork_s_commit_names ... ok

running 1 test
test compiler::tests::child_role ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 329 filtered out; finished in 0.70s

21:42:46 Building LLVM b35e868eaefa0691 in /private/var/folders/gr/mr4_fg4n34jb417sx1g5cgxc0000gp/T/toyos-tmp-73099-0/ci-host-0/toyos-tmp-89266-0/llvm-made-elsewhere-71/b/rust: nobody on this host has

running 1 test
test llvm::tests::a_placed_llvm_is_read_only ... ok
test llvm::tests::child_role ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 329 filtered out; finished in 0.90s

21:42:46 Building compiler 6321218378aecae7 in /private/var/folders/gr/mr4_fg4n34jb417sx1g5cgxc0000gp/T/toyos-tmp-73099-0/ci-host-0/toyos-tmp-89266-0/compiler-49/a/rust: nobody on this host has
test cicache::tests::code_run_at_build_time_runs_again_on_every_read ... ok
test llvm::tests::child_role ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 329 filtered out; finished in 1.07s

test compiler::tests::child_role ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 329 filtered out; finished in 0.79s

test llvm::tests::a_stopped_sweep_leaves_no_llvm_that_passes_for_whole ... ok
test llvm::tests::child_role ... ignored, the competing process for the tests below; never runs on its own
test llvm::tests::keyed_and_built ... ignored, the process the environment test runs; never runs on its own

running 1 test
test fatformat::tests::differs_from_the_fatfs_format_only_in_the_bios_stub ... ok

running 1 test
test llvm::tests::a_checkout_behind_its_gitlink_is_built_at_the_gitlink ... ok
test llvm::tests::a_sweep_after_the_llvm_is_found_whole_fails_no_build ... ok
test llvm::tests::the_key_names_the_host_s_tools ... ok
test llvm::tests::the_llvm_config_turns_every_host_library_off ... ok
test buildlock::tests::child_role ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 329 filtered out; finished in 0.39s

21:42:47 Building LLVM b35e868eaefa0691 in /private/var/folders/gr/mr4_fg4n34jb417sx1g5cgxc0000gp/T/toyos-tmp-73099-0/ci-host-0/toyos-tmp-89266-0/llvm-sweep-74/a/rust: nobody on this host has
test llvm::tests::an_llvm_being_made_elsewhere_is_not_made_again ... ok
test compiler::tests::one_compiler_per_key_whichever_checkout_names_it ... ok
test llvm::tests::an_llvm_is_made_only_with_the_worktree_lock_exclusive ... ok
test miscompile::tests::an_endless_caller_is_not_one_that_returns_true ... ok
test n2::tests::an_installed_n2_is_not_installed_again ... ok
test kernelconsole::tests::a_relay_waits_out_a_pty_that_would_block ... ok
test publish::tests::a_first_publish_mints_root_one_and_a_machine_accepts_it ... ok
test publish::tests::a_publish_moves_forward_and_renews_a_root_near_its_expiry ... ok
test publish::tests::a_publish_that_would_move_anything_back_is_refused_by_name ... ok
test publish::tests::a_timestamp_naming_the_last_targets_version_is_refused ... ok
test release::tests::a_job_is_told_each_layer_s_entry_and_path ... ok
test publish::tests::two_rows_naming_one_archive_with_other_bytes_are_refused ... ok
test release::tests::a_job_saves_only_what_it_built ... ok
test release::tests::a_landing_during_the_nightly_puts_nothing_up_and_is_no_failure ... ok
test release::tests::a_layer_that_is_not_whole_is_refused ... ok
test release::tests::a_release_is_made_to_carry_these_bytes_and_no_other ... ok
test release::tests::one_sysroot_packs_to_one_digest_and_unpacks_whole ... ok
test release::tests::only_mains_publisher_publishes ... ok
test release::tests::the_glibc_scan_takes_the_newest_version_and_nothing_else ... ok
test release::tests::a_job_lays_out_the_one_sysroot_it_restored ... ok
test sdkversion::tests::a_changed_crate_takes_the_minor_after_the_newest_and_an_unchanged_one_keeps_it ... ok
test sdkversion::tests::a_dependent_whose_newest_names_a_stale_dependency_goes_up_again ... ok
test ci::tests::a_step_that_goes_quiet_is_ended_with_what_it_spawned_and_names_its_last_line ... ok
test sdkversion::tests::every_lockfile_resolves_the_published_crates_from_the_tree ... ok
test sdkversion::tests::every_row_is_a_crate_the_tree_holds_in_dependency_order ... ok
test compiler::tests::every_source_of_a_compiler_moves_its_key ... ok
test llvm::tests::child_role ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 329 filtered out; finished in 3.31s

test signing::tests::a_checkouts_throwaway_key_is_minted_once_and_read_back ... ok
test signing::tests::an_owner_key_reads_back_and_signs_what_the_loader_verifies ... ok
test signing::tests::an_owner_key_wider_than_0600_is_refused ... ok
test soundfont::tests::doom1_wads_music_selects_the_instruments_it_selects ... ok
test soundfont::tests::the_shipped_bank_carries_nothing_doom_does_not_select ... ok
test soundfont::tests::the_shipped_bank_sounds_every_instrument_the_shipped_wad_selects ... ok
test soundfont::tests::the_shipped_bank_still_carries_its_source_licence ... ok
test sourcegate::tests::a_capability_closing_ends_no_log_poll ... ok
test sourcegate::tests::a_value_is_refused_by_its_shape_and_what_resembles_one_is_not ... ok
test sourcegate::tests::bus_mastering_is_armed_at_exactly_the_declared_sites ... ok
test sdkversion::tests::the_published_manifests_resolve_as_the_forks_name_them ... ok
test sourcegate::tests::every_hand_written_auto_trait_impl_is_declared ... ok
test llvm::tests::an_llvm_is_swept_once_nothing_used_it_for_the_keep_time ... ok
test sourcegate::tests::every_host_scratch_is_the_guard ... ok
test sourcegate::tests::no_slice_or_exclusive_reference_is_built_over_a_mapped_page ... ok
test sourcegate::tests::nmi_does_not_log ... ok
test sourcegate::tests::the_scan_reaches_the_tree_it_claims_to ... ok
test llvm::tests::the_caller_s_environment_reaches_neither_the_build_nor_the_key ... ok
test sourcegate::tests::every_committed_binary_file_is_declared ... ok
test sysroot::tests::a_compiler_made_again_under_its_key_leaves_all_of_a_crate_stale ... ok
test sdkversion::tests::a_key_moves_with_the_crate_and_its_published_dependencies ... ok
test sysroot::tests::a_std_build_downloads_no_llvm_and_asks_for_no_ninja ... ok
test llvm::tests::an_llvm_keeps_what_builds_read_and_nothing_else ... ok
test llvm::tests::two_sdk_versions_are_two_keys ... ok
test sysroot::tests::a_std_build_under_the_same_compiler_keeps_no_llvm ... ok
test sysroot::tests::a_submodule_named_otherwise_than_by_its_path_is_refused ... ok
test sysroot::tests::a_switch_that_cannot_remove_records_nothing_and_the_next_one_removes ... ok
test sysroot::tests::a_sysroot_records_the_witness_it_was_built_from ... ok
test sysroot::tests::a_sysroot_that_cannot_be_made_whole_is_made_once_and_refused ... ok
test sysroot::tests::a_sysroot_is_whole_or_it_is_made_again ... ok
test sysroot::tests::another_compiler_s_std_build_goes_and_the_same_one_s_stays ... ok
test release::tests::the_layers_are_the_stores_the_build_makes ... ok
test sysroot::tests::std_s_patch_names_the_worktree_s_crates_or_refuses_its_path ... ok
test llvm::tests::the_key_moves_with_the_llvm_and_only_with_it ... ok
test sysroot::tests::the_libraries_placed_are_the_ones_the_stamp_names ... ok
test llvm::tests::an_uncommitted_bootstrap_names_no_llvm ... ok
test tether::tests::a_tethered_child_dies_with_its_owner ... ok
test tether::tests::owner ... ignored, the owner `a_tethered_child_dies_with_its_owner` kills; never runs on its own
test tether::tests::parked ... ignored, the tethered child of `owner`; never runs on its own
test toolchain::tests::a_bootstrap_run_leaves_both_lockfiles_as_they_were ... ok
test toolchain::tests::a_bootstrap_run_sees_no_ci_variables ... ok
test toolchain::tests::a_compiler_build_finds_the_llvm_s_objcopy_where_rustc_strips_with_it ... ok
test toolchain::tests::a_fake_bootstrap ... ignored, the bootstrap `a_bootstrap_run_leaves_both_lockfiles_as_they_were` runs; never runs on its own
test toolchain::tests::a_fake_bootstrap_that_reads_ci ... ignored, the bootstrap `a_bootstrap_run_sees_no_ci_variables` runs; never runs on its own
test toolchain::tests::a_fake_bootstrap_that_strips ... ignored, the bootstrap `a_compiler_build_finds_the_llvm_s_objcopy_where_rustc_strips_with_it` runs; never runs on its own
test toolchain::tests::a_link_failure_is_not_a_compile_error ... ok
test toolchain::tests::a_restore_that_cannot_write_leaves_the_file_whole ... ok
Preparing worktree (detached HEAD f49ab8d)
test toolchain::tests::a_std_built_from_a_registry_s_copy_of_either_crate_is_refused ... ok
Preparing worktree (detached HEAD b6767ff)
test toolchain::tests::a_toolchain_bin_without_cargo_is_one_rustup_narrates ... ok
test toolchain::tests::dep_info_names_the_checkout_std_was_really_built_from ... ok
test toolchain::tests::dep_info_that_cannot_be_read_is_refused ... ok
HEAD is now at b6767ff C2
test toolchain::tests::freestanding_libraries_that_read_the_worktree_are_refused ... ok
test toolchain::tests::the_first_real_error_is_the_one_reported ... ok
test userlandhost::tests::a_host_declaration_is_read_whole_and_refused_by_name ... ok
test userlandhost::tests::a_manifest_that_switches_tests_off_is_named ... ok
test userlandhost::tests::a_test_attribute_is_a_word_and_not_a_substring ... ok
test userlandhost::tests::every_program_the_images_ship_declares_what_it_is_to_a_host ... ok
HEAD is now at f49ab8d C2
Preparing worktree (detached HEAD f319a74)
test userlandhost::tests::every_userland_test_is_in_the_gate ... ok
Preparing worktree (detached HEAD f319a74)
HEAD is now at f319a74 backtrace, later
test userlandhost::tests::the_survey_gates_what_cargo_test_runs_and_names_the_rest ... ok
test userlandhost::tests::what_could_hide_a_test_is_a_condition ... ok
HEAD is now at f319a74 backtrace, later
test sysroot::tests::a_submodule_is_the_commit_its_gitlink_records_checked_out_or_not ... ok
test llvm::tests::the_kept_sources_are_the_commit_s ... ok
Preparing worktree (detached HEAD fad0aec)
HEAD is now at fad0aec C2
Preparing worktree (detached HEAD ae17b33)
HEAD is now at ae17b33 backtrace, later
test sysroot::tests::ensure_shallow_fork_initialises_no_submodule_in_a_linked_worktree ... ok
test sysroot::tests::a_comment_is_the_same_sysroot_and_a_signature_is_another ... ok
test llvm::tests::two_compilers_of_one_llvm_make_it_once ... ok
Preparing worktree (detached HEAD 2071ec9)
HEAD is now at 2071ec9 C2
Preparing worktree (detached HEAD fd3cb0a)
HEAD is now at fd3cb0a backtrace, later
test sysroot::tests::a_linked_worktree_lacking_a_nested_commit_is_refused_and_the_primary_s_is_not_written ... ok
test sysroot::tests::a_linked_refusal_s_command_leaves_no_commit_of_the_agent_s ... ok
test llvm::tests::an_llvm_that_is_not_whole_is_made_again ... ok
test sysroot::tests::twelve_builds_at_once_make_one_fork_checkout ... ok
test llvm::tests::what_the_key_does_not_name_is_never_stored ... ok
test wallpaper::tests::the_wallpaper_is_the_same_on_every_host ... ok
test wallpaper::tests::the_wallpaper_does_not_band ... ok
test sysroot::tests::a_worktree_pinning_another_fork_commit_gets_its_own_checkout ... ok
Synchronizing submodule url for 'rust'
From /private/var/folders/gr/mr4_fg4n34jb417sx1g5cgxc0000gp/T/toyos-tmp-73099-0/ci-host-0/toyos-tmp-89266-0/fork-primary-133/fork-moved
   d7cf54e..5aa8b8f  main       -> origin/main
Submodule path 'rust': checked out '5aa8b8f12c4774fc4d0a4fed5022a27e7cfaa0c6'
test sourcegate::tests::no_tracked_file_identifies_a_machine_or_its_network ... ok
Synchronizing submodule url for 'rust'
From /private/var/folders/gr/mr4_fg4n34jb417sx1g5cgxc0000gp/T/toyos-tmp-73099-0/ci-host-0/toyos-tmp-89266-0/fork-primary-133/fork-moved
   5aa8b8f..6b555d0  main       -> origin/main
Submodule path 'rust': checked out '6b555d06225315ac510001af8dd736a606685a83'
Synchronizing submodule url for 'library/backtrace'
From /private/var/folders/gr/mr4_fg4n34jb417sx1g5cgxc0000gp/T/toyos-tmp-73099-0/ci-host-0/toyos-tmp-89266-0/fork-primary-133/backtrace-moved
 + fd3cb0a...2f71eba main       -> origin/main  (forced update)
Submodule path 'library/backtrace': checked out '2f71eba74a434cf82cfe9a25a0df3276d69d7a7c'
test sysroot::tests::the_primary_s_fork_checkout_is_moved_to_its_pin ... ok

test result: ok. 315 passed; 0 failed; 15 ignored; 0 measured; 0 filtered out; finished in 19.80s

21:42:59 [ci] the build system: cargo test --lib

21:42:59 === [ci] the harness's own checks
   Compiling toyos-build v0.1.0 (/Users/jan/Dev/jan/toyos-netring)
    Finished `test` profile [optimized + debuginfo] target(s) in 9.46s
     Running tests/checks.rs (target/debug/deps/toyos_checks-ff8cc9dbea288b37)

running 41 tests
test checks::a_name_registered_twice_is_refused ... ok
test checks::a_shared_chunk_stages_every_binary_its_members_name ... ok
test checks::a_stall_stays_red ... ok
test checks::metal_boots_last_job_is_behind_every_other ... ok
test checks::metal_domains_end_below_the_host_bridges ... ok
test checks::metal_claim_spends_one_remapping_entry ... ok
test checks::metal_bench_reaches_the_loop_as_its_host ... ok
test checks::control_regs_verdict ... ok
test checks::irq_census_verdict ... ok
test checks::metal_list_from_parse_reaches_run_without_the_machine ... ok
test checks::a_run_selects_by_filter ... ok
test checks::mask_windows_verdict ... ok
test checks::metal_rows_run_before_members_under_a_bound_the_members_widen ... ok
test checks::metal_audio_judges ... ok
test checks::metal_judges_read_the_page_for_what_only_the_page_carries ... ok
test checks::metal_usb_judge ... ok
test checks::metal_words_take_rows_members_and_whole_boots ... ok
test checks::nvme_image_is_held_by_one_guest ... ok
test checks::psci_power_off_judge ... ok
test checks::nested_nmi_verdict ... ok
test checks::run_exit_status ... ok
test checks::screen_decoder ... ok
test checks::serial_vocabulary ... ok
test checks::metal_name_measured_twice_is_refused ... ok
test checks::suite_split ... ok
test checks::suspend_invalidates_a_verdict ... ok
test checks::the_c_corpus_stages_the_expectation_the_host_compares ... ok
test checks::the_foreign_record_judge_demands_the_stop_sealed_done ... ok
test checks::the_xecp_judge_reads_the_t14s_handoff ... ok
test checks::metal_boot_that_lost_parts_of_its_log_judges_no_row ... ok
test checks::suspend_detector ... ok
test checks::metal_name_two_owners_measured_is_refused ... ok
test checks::metal_readbacks_of_a_machine_with_no_record_are_red ... ok
test checks::metal_cleared_page_owes_no_panel ... ok
test checks::metal_failing_shared_member_fails_itself_alone ... ok
test checks::metal_reading_past_its_record_fails_and_moves_nothing ... ok
test checks::metal_run_under_another_bios_fails_and_records_nothing ... ok
test checks::metal_stop_owes_its_record_and_leaves_no_operation_open ... ok
test checks::metal_number_fails_with_its_owner_alone ... ok
test checks::metal_loader_kernel_and_program_count_from_one_zero ... ok
test checks::metal_bound_fires_within_one_period_of_itself ... ok

test result: ok. 41 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s

21:43:09 [ci] the harness's own checks: cargo test --test toyos-checks

21:43:09 === [ci] the workspace's host members
   Compiling toyos-net-wire v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/netstack/wire)
   Compiling log v0.4.29
   Compiling once_cell v1.21.4
   Compiling rustversion v1.0.22
   Compiling regex-syntax v0.8.11
   Compiling pin-project-lite v0.2.17
   Compiling lazy_static v1.5.0
   Compiling nu-ansi-term v0.50.3
   Compiling smallvec v1.15.1
   Compiling scoped-tls v1.0.1
   Compiling thread_local v1.1.10
   Compiling getrandom v0.3.4 (https://github.com/ToyOSOrg/getrandom?branch=toyos-0.3-sdk-0.12#67c17e0a)
   Compiling proc-macro2 v1.0.106
   Compiling zerocopy v0.8.47
   Compiling sharded-slab v0.1.7
   Compiling quote v1.0.45
   Compiling crypto-common v0.1.7
   Compiling tracing-core v0.1.36
   Compiling object v0.38.1
   Compiling byteorder v1.5.0
   Compiling digest v0.10.7
   Compiling toyos-dns v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/netstack/dns)
   Compiling toyos-net-ip v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/netstack/ip)
   Compiling toyos-net-tcp v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/netstack/shard/tcp)
   Compiling toyos-dhcp v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/netstack/dhcp)
   Compiling tracing v0.1.44
   Compiling tracing-log v0.2.0
   Compiling rand_core v0.9.5
   Compiling sha2 v0.10.9
   Compiling arrayvec v0.7.8
   Compiling generator v0.8.9
   Compiling toyos-untrusted v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/untrusted)
   Compiling curve25519-dalek v4.1.3
   Compiling etherparse v0.21.0
   Compiling toyos-mdns v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/netstack/mdns)
   Compiling toyos-phys v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/phys)
   Compiling toyos-net-udp v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/netstack/udp)
   Compiling regex-automata v0.4.18
   Compiling ed25519-dalek v2.2.0
   Compiling toyos-net-shard v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/netstack/shard)
   Compiling syn v2.0.117
   Compiling toyos-net-testnet v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/netstack/shard/testnet)
   Compiling toyos-xhci v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/xhci)
   Compiling socket2 v0.6.3 (https://github.com/ToyOSOrg/socket2?branch=toyos#1d902509)
   Compiling mio v1.2.0 (https://github.com/ToyOSOrg/mio?branch=toyos#d1edcaad)
   Compiling toyos-net-node v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/netstack/node)
   Compiling toyos-update v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/update)
   Compiling kernel v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel)
   Compiling toyos-device-memory v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/device-memory)
   Compiling fatfs v0.3.6
   Compiling syn v1.0.109
   Compiling matchers v0.2.0
   Compiling tracing-subscriber v0.3.23
   Compiling serde_derive v1.0.228
   Compiling rustls v0.23.45
   Compiling ppv-lite86 v0.2.21
   Compiling ureq-proto v0.6.4
   Compiling rand_chacha v0.9.0
   Compiling loom v0.7.2 (https://github.com/ToyOSOrg/loom?branch=toyos#dfe37972)
   Compiling rand v0.9.5
   Compiling toyos-aml v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/acpiserver/aml)
   Compiling thiserror v1.0.69
   Compiling serde v1.0.228
   Compiling gpt v3.1.0
   Compiling toyos-xhci-sim v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/xhci/sim)
   Compiling kernel-sim v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/sim)
   Compiling serde_spanned v0.6.9
   Compiling toml_datetime v0.6.11
   Compiling kernel-loom v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/loom)
   Compiling toml_edit v0.22.27
   Compiling thiserror-impl v1.0.69
   Compiling toyos-transport v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/blockring/transport)
   Compiling byteorder_slice v3.0.0
   Compiling toyos-blockhold v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/blockhold)
   Compiling toyos-rootimage v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/rootimage)
   Compiling toyos-ps2 v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/ps2)
   Compiling toyos-virtio v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/virtio)
   Compiling toyos-smmu v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/smmu)
   Compiling toyos-its v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/its)
   Compiling toyos-gicv3 v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/gicv3)
   Compiling toyos-blockring v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/blockring)
   Compiling derive-into-owned v0.2.0
   Compiling toyos-i219 v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/netstack/i219)
   Compiling toyos-trace v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/trace)
   Compiling toyos-pci v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/pci)
   Compiling toyos-inspect v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/inspect)
   Compiling pcap-file v2.0.0
   Compiling toyos-microcode v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/microcode)
   Compiling toyos-hda v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/hda)
   Compiling ureq v3.4.2
   Compiling toml v0.8.23
   Compiling toyos-libc-copies v0.1.0 (/Users/jan/Dev/jan/toyos-netring/sdk/libc/arch)
   Compiling toyos-dma v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/dma)
   Compiling toyos-usbhid v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/usbhid)
   Compiling toyos-cpuvuln v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/cpuvuln)
   Compiling toyos-random v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/random)
   Compiling toyos-tsc v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/tsc)
   Compiling toyos-gpt v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/gpt)
   Compiling toyos-build v0.1.0 (/Users/jan/Dev/jan/toyos-netring)
   Compiling toyos-metal v0.1.0 (/Users/jan/Dev/jan/toyos-netring/tests/metal)
   Compiling toyos-userbound v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/userbound)
   Compiling toyos-virtio-sound v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/soundserver/virtio-sound)
   Compiling toyos-fat32 v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/fat32)
   Compiling toyos-tco v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/tco)
   Compiling bcachefs v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/bcachefs)
   Compiling toyos-swap v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/swap)
   Compiling toyos-elf v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/elf)
   Compiling toyos-symbols v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/symbols)
   Compiling toyos-keymap v0.1.0 (/Users/jan/Dev/jan/toyos-netring/sdk/keymap)
   Compiling toyos-sha2 v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/sha2)
   Compiling toyos-ssh v0.1.0 (/Users/jan/Dev/jan/toyos-netring/build/ssh)
   Compiling toyos-fat32-check v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/fat32/check)
   Compiling toyos-tmpdir v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/tmpdir)
   Compiling toyos-sha2-hw v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/sha2-hw)
   Compiling toyos-acpi v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/acpi)
   Compiling toyos-bootmap v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/bootmap)
   Compiling toyos-desktop v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/compositor/desktop)
   Compiling toyos-logstream v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/logstream)
   Compiling toyos-manifest v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/manifest)
   Compiling toyos-blackbox v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/blackbox)
   Compiling toyos-osrelease v0.1.0 (/Users/jan/Dev/jan/toyos-netring/sdk/osrelease)
   Compiling toyos-wallclock v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/wallclock)
   Compiling toyos-mixer v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/soundserver/mixer)
   Compiling toyos-abi v0.16.0 (/Users/jan/Dev/jan/toyos-netring/sdk/abi)
   Compiling toyos-quiesce v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/quiesce)
   Compiling toyos-elide v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/elide)
   Compiling acpiserver-api v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/acpiserver-api)
    Finished `test` profile [optimized + debuginfo] target(s) in 1m 27s
     Running unittests src/lib.rs (target/debug/deps/acpiserver_api-eeee87440ac13989)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/bcachefs-a1e55aa4edf7a107)

running 72 tests
test block_io::image_bounds::a_block_past_the_end_is_refused_rather_than_read ... ok
test block_io::image_bounds::a_block_number_whose_byte_offset_wraps_is_refused_and_does_not_panic ... ok
test block_io::image_bounds::a_block_that_starts_inside_and_ends_outside_is_refused ... ok
test block_io::image_bounds::an_empty_image_holds_no_block_at_all ... ok
test block_io::image_bounds::every_block_the_image_holds_is_served_whole ... ok
test btree::tests::a_descent_gives_up_before_it_runs_out_of_stack ... ok
test btree::tests::a_crafted_entry_count_never_reaches_the_allocator ... ok
test btree::tests::a_child_pointer_off_the_device_is_refused ... ok
test btree::tests::an_entry_larger_than_the_payload_is_refused ... ok
test btree::tests::an_interior_child_shorter_than_a_block_number_is_refused ... ok
test btree::tests::write_to_refuses_an_overfull_node_instead_of_underflowing ... ok
test btree::tests::pack_fills_each_node_in_order_and_none_past_a_block ... ok
test btree::tests::a_split_short_of_a_sibling_gives_back_the_ones_it_took ... ok
test btree::tests::an_interior_node_with_no_children_is_refused ... ok
test crc32c::tests::known_vectors ... ok
test crc32c::tests::zeroes ... ok
test fs::tests::a_block_allocated_to_bridge_a_gap_reads_as_zeros ... ok
test fs::tests::a_bitmap_outside_the_volume_is_refused ... ok
test fs::tests::a_delete_of_a_name_that_is_not_here_destroys_nothing ... ok
test fs::tests::a_bitmap_too_small_to_cover_the_volume_is_refused ... ok
test fs::tests::a_file_ending_in_a_hole_still_reads_as_zeros ... ok
test fs::tests::a_child_pointer_past_the_end_of_the_device_is_refused ... ok
test fs::tests::a_file_naming_more_blocks_than_the_volume_has_is_refused ... ok
test fs::tests::a_page_resolved_against_an_extent_at_the_end_of_the_address_space_is_total ... ok
test fs::tests::a_run_ending_on_the_volumes_last_block_is_accepted ... ok
test fs::tests::a_size_inside_the_volume_but_over_the_ceiling_never_reaches_the_allocator ... ok
test fs::tests::a_shortened_record_gives_its_tail_back ... ok
test fs::tests::a_size_longer_than_the_volume_never_reaches_the_allocator ... ok
test fs::tests::a_superblock_claiming_more_blocks_than_the_device_has_is_refused ... ok
test fs::tests::a_volume_copied_onto_a_larger_device_does_not_mount ... ok
test fs::tests::an_extent_outside_the_volume_is_refused_before_the_bitmap_is_touched ... ok
test fs::tests::an_extent_past_the_end_of_the_volume_is_refused ... ok
test fs::tests::an_interior_value_too_short_for_a_block_number_is_refused ... ok
test fs::tests::a_root_that_points_at_itself_is_refused_not_followed ... ok
test fs::tests::an_untampered_volume_still_mounts_and_reads ... ok
test upstream::bkey::tests::a_field_past_its_unpacked_width_is_refused_not_truncated ... ok
test upstream::bkey::tests::a_field_wider_than_the_one_it_fills_is_refused ... ok
test fs::tests::is_dir_over_a_corrupt_node_is_refused ... ok
test upstream::bkey::tests::a_truncated_format_is_refused ... ok
test upstream::bkey::tests::a_key_that_does_not_fit_is_refused ... ok
test upstream::bkey::tests::field_fit_vectors ... ok
test upstream::bkey::tests::format_vectors ... ok
test upstream::bkey::tests::the_identity_format_is_the_unpacked_one ... ok
test upstream::bkey::tests::the_identity_format_round_trips_a_position ... ok
test upstream::csum::tests::encryption_csum_types_are_refused_by_name ... ok
test upstream::csum::tests::published_check_values ... ok
test upstream::csum::tests::xxh64_covers_every_tail ... ok
test upstream::fs::tests::a_crc_entry_states_the_extent_it_covers ... ok
test upstream::bkey::tests::unpack_vectors ... ok
test upstream::fs::tests::a_file_longer_than_its_device_is_refused_without_allocating_it ... ok
test upstream::fs::tests::an_entry_before_the_checksum_does_not_move_the_pointer ... ok
test upstream::fs::tests::an_entry_this_volume_cannot_size_is_refused ... ok
test upstream::fs::tests::dirent_vectors ... ok
test fs::tests::is_dir_is_a_name_beneath ... ok
test upstream::raw::tests::a_short_window_refuses_by_name ... ok
test upstream::raw::tests::an_offset_that_would_wrap_refuses ... ok
test upstream::node::tests::a_key_longer_than_its_bset_is_refused ... ok
test upstream::raw::tests::bitmask_matches_upstreams_accessor ... ok
test upstream::node::tests::a_bset_this_filesystem_did_not_write_is_refused ... ok
test upstream::node::tests::a_node_that_is_not_the_one_asked_for_is_refused ... ok
test upstream::node::tests::the_crafted_node_is_accepted ... ok
test upstream::sb::fixture::a_clean_section_shorter_than_its_header_is_refused ... ok
test upstream::sb::fixture::a_volume_without_a_clean_section_is_refused_by_name ... ok
test upstream::sb::fixture::a_member_bigger_than_its_device_is_refused ... ok
test upstream::sb::fixture::a_superblock_that_is_not_this_ones_is_refused ... ok
test upstream::sb::fixture::a_huge_u64s_is_refused_without_allocating_it ... ok
test upstream::sb::fixture::the_crafted_superblock_is_accepted ... ok
test upstream::sb::fixture::the_interim_reader_rejects_bcachefs_s_magic ... ok
test upstream::node::tests::a_bset_longer_than_its_node_is_refused ... ok
test upstream::sb::fixture::every_unsupported_format_feature_is_refused_by_name ... ok
test fs::tests::is_dir_over_a_split_root_finds_every_directory ... ok
test fs::tests::a_tree_past_the_ceiling_is_refused_before_it_materialises ... ok

test result: ok. 72 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 11.34s

     Running tests/crash.rs (target/debug/deps/crash-0d72622ac4dd42d1)

running 2 tests
test a_directory_rename_is_whole_under_one_name_whichever_write_is_refused ... ok
test a_directory_rename_is_whole_under_one_name_wherever_the_device_stops ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 27.83s

     Running tests/integration.rs (target/debug/deps/integration-a79094c55d0a6c3a)

running 57 tests
test a_filesystems_name_round_trips_through_its_superblock ... ok
test a_data_block_the_device_refuses_is_not_a_page_of_zeros ... ok
test a_file_renamed_onto_a_symlink_leaves_one_entry ... ok
test a_create_that_runs_out_of_space_leaves_the_old_file_where_it_was ... ok
test a_btree_node_the_device_refuses_is_not_a_node_of_zeros ... ok
test a_rename_carries_the_file_to_the_new_name ... ok
test a_block_zero_the_device_refuses_does_not_fall_through_to_the_backup ... ok
test a_refused_sync_stays_refused_through_the_filesystem ... ok
test a_file_grown_past_what_the_volume_spares_leaves_the_reserve ... ok
test a_file_past_the_old_extent_cap_round_trips ... ok
test a_rename_of_a_symlink_stays_a_symlink ... ok
test a_value_too_large_for_any_node_is_an_error_not_a_panic ... ok
test a_sparse_write_resolves_inside_the_blocks_it_reserved ... ok
test a_rename_with_no_source_touches_nothing ... ok
test a_renamed_file_keeps_every_extent_it_had ... ok
test bad_magic_alone_disowns_the_volume ... ok
test a_rename_onto_itself_keeps_the_file ... ok
test bad_magic_means_no_copy_claims_the_volume ... ok
test corrupt_data_block_returns_raw_bytes ... ok
test crc_verification_on_nodes ... ok
test a_write_the_device_refuses_is_reported_and_gives_its_blocks_back ... ok
test create_single_small_file ... ok
test create_multiple_files ... ok
test empty_file ... ok
test duplicate_filename_overwrites ... ok
test every_page_of_a_fragmented_file_owns_a_distinct_block ... ok
test file_mtime_nonexistent ... ok
test dangling_symlink_allowed ... ok
test file_not_found ... ok
test a_rename_onto_an_existing_name_frees_that_file_and_only_it ... ok
test format_and_mount_empty ... ok
test a_sequential_file_needs_one_extent ... ok
test large_file_crosses_block_boundary ... ok
test format_mount_unmount_create_mount_roundtrip ... ok
test filesystem_full_returns_no_space ... ok
test large_file_exact_block_boundary ... ok
test long_filename_near_entry_limit ... ok
test list_includes_symlinks ... ok
test large_file_single_extent ... ok
test mounted_readwrite_create_and_read ... ok
test mounted_readwrite_delete ... ok
test mounted_readwrite_double_roundtrip ... ok
test mounted_readwrite_overwrite_with_smaller_data ... ok
test mounted_readwrite_overwrite_file ... ok
test mounted_readwrite_sync_and_reopen ... ok
test mounted_readwrite_symlink ... ok
test rename_bounds_the_new_name ... ok
test read_link ... ok
test zero_length_filename_rejected ... ok
test superblock_backup_recovery ... ok
test a_metadata_update_that_cannot_be_reinserted_leaves_the_entry_alone ... ok
test a_write_that_runs_out_of_space_gives_back_what_it_took ... ok
test many_files_with_large_data ... ok
test entries_of_mixed_size_survive_node_splits ... ok
test a_mount_after_a_stop_counts_the_blocks_its_bitmap_holds ... ok
test a_volume_full_of_empty_names_still_deletes_and_frees ... ok
test incremental_insert_and_read ... ok

test result: ok. 57 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.09s

     Running tests/upstream_fixture.rs (target/debug/deps/upstream_fixture-84faf1142ce3bffa)

running 2 tests
test a_path_the_volume_does_not_hold_reads_back_as_absent ... ok
test the_upstream_volume_reads_back_as_what_upstream_wrote ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

     Running tests/console_handoff.rs (target/debug/deps/console_handoff-a3362cb442e7b6fc)

running 1 test
test the_stop_finds_the_wire_free_or_klogd_sees_the_ask ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/counters_round.rs (target/debug/deps/counters_round-080a6b99a373e9e3)

running 1 test
test a_cpu_read_as_answered_is_read_with_its_answer ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/device_irq.rs (target/debug/deps/device_irq-297251886428e321)

running 3 tests
test an_idle_record_answers_nothing ... ok
test every_message_is_counted_once ... ok
test a_reads_times_are_its_own_messages ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

     Running tests/i8042_tally.rs (target/debug/deps/i8042_tally-7b5209d82cf60b3d)

running 3 tests
test an_empty_interrupt_is_never_counted_as_one_that_carried ... ok
test a_counted_interrupt_carries_its_bytes_with_it ... ok
test the_split_counters_this_replaced_are_read_torn ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

@Japabu

Japabu commented Oct 11, 2026

Copy link
Copy Markdown
Collaborator Author

cargo run -- --ci host on 148c3de, EXIT=0, part 2 of 10

     Running tests/inbox_answer.rs (target/debug/deps/inbox_answer-5c656d99a1802058)

running 16 tests
test a_submitter_parks_only_with_nothing_it_could_answer ... ok
test a_post_that_lands_after_its_bytes_were_read_answers_nothing ... ok
test a_ring_keeps_its_cap_of_polls_and_no_more ... ok
test a_full_ring_leaves_a_fired_poll_for_the_next_look ... ok
test a_ring_torn_down_withdraws_every_poll ... ok
test a_handle_closed_since_its_watch_is_answered_with_the_refusal ... ok
test a_poll_armed_again_does_not_end_the_look ... ok
test a_post_answers_for_an_object_with_nothing_to_look_at ... ok
test a_watch_during_a_look_that_finds_bytes_answers_alone ... ok
test a_poll_fired_as_it_is_renewed_waits_for_the_next_look ... ok
test a_poll_left_standing_still_answers ... ok
test a_post_with_nothing_to_read_answers_nothing ... ok
test a_replaced_poll_is_withdrawn_from_its_watch ... ok
test a_watch_during_a_look_that_finds_nothing_is_the_handles_one_poll ... ok
test a_watch_replaces_a_poll_a_post_already_fired ... ok
test an_ended_source_is_answered_gone_without_a_look ... ok

test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/log_body_words.rs (target/debug/deps/log_body_words-a438245c6a48c9f2)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/log_cursor.rs (target/debug/deps/log_cursor-3458eb68b9ecb6b5)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/log_publish.rs (target/debug/deps/log_publish-22107dd3bad0b181)

running 2 tests
test an_unpublished_slot_answers_for_nothing ... ok
test a_reader_that_finds_a_shard_finds_it_built ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/log_record.rs (target/debug/deps/log_record-9d6af93f752c5471)

running 7 tests
test a_recycled_slot_does_not_answer_for_the_record_it_replaced ... ok
test a_shard_nothing_has_written_answers_for_nothing ... ok
test the_readable_window_is_exactly_the_last_shard_records ... ok
test a_concurrent_reader_sees_head_grow_and_never_shrink ... ok
test a_committed_record_is_whole_or_absent ... ok
test a_key_and_the_record_it_names_come_from_one_generation ... ok
test a_reader_racing_a_recycle_gets_nothing_rather_than_a_mixture ... ok

test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 32.10s

     Running tests/log_ring.rs (target/debug/deps/log_ring-5ed560b40b64d97e)

running 3 tests
test a_slot_is_reused_only_after_its_record_was_read ... ok
test a_lane_publishes_whole_and_reuses_only_after_a_read ... ok
test a_published_record_is_whole_and_read_once ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.38s

     Running tests/log_wake.rs (target/debug/deps/log_wake-6b3543a004c8628b)

running 2 tests
test exactly_one_producer_owns_a_park ... ok
test a_commit_and_an_arm_cannot_both_miss ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

     Running tests/log_zeroed_init.rs (target/debug/deps/log_zeroed_init-a084b40296581737)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/loom_exploration.rs (target/debug/deps/loom_exploration-84b9ad7c924e0975)

running 2 tests
test loom_runs_a_store_ahead_of_an_earlier_load ... ok
test loom_runs_a_read_modify_write_ahead_of_an_earlier_load ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/loom_mailbox.rs (target/debug/deps/loom_mailbox-d908296c1b7800e0)

running 2 tests
test steal_probe_node_is_never_double_linked ... ok
test preempt_disabled_push_keeps_the_queue_drainable ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.59s

     Running tests/loom_park.rs (target/debug/deps/loom_park-ccbd062ee97f85f1)

running 3 tests
test cancel_and_notify_agree_on_who_won ... ok
test a_pre_park_claim_never_posts_a_message ... ok
test a_notify_ends_exactly_one_iteration ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

     Running tests/loom_push.rs (target/debug/deps/loom_push-fa74d25641c82248)

running 2 tests
test a_push_rings_nobody_when_nobody_is_asleep ... ok
test a_cpu_that_halts_without_seeing_the_surplus_was_pushed ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

     Running tests/loom_retire.rs (target/debug/deps/loom_retire-3111a561fcec9400)

running 6 tests
test the_retire_chase_reuses_one_node_under_a_racing_migration ... ok
test an_adopting_cpu_always_observes_the_kill_bit ... ok
test a_retire_racing_the_park_commit_always_leaves_someone_to_reap ... ok
test a_wake_and_a_retire_ride_distinct_nodes ... ok
test a_retire_and_a_wake_never_both_claim_a_parked_task ... ok
test the_retire_arm_never_loses_a_parked_task_to_a_racing_wake ... ok

test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s

     Running tests/loom_sleep.rs (target/debug/deps/loom_sleep-1b3ca675b5ea2de6)

running 2 tests
test a_halted_cpu_with_queued_work_was_kicked ... ok
test a_kicked_cpu_comes_back_and_drains_everything ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.43s

     Running tests/loom_watch.rs (target/debug/deps/loom_watch-4b920df52a92cc39)

running 12 tests
test an_end_racing_a_post_answers_a_poll_once ... ok
test an_end_racing_a_post_in_place_answers_a_poll_once ... ok
test a_bounded_post_racing_a_timeout_reaches_a_live_waiter ... ok
test a_poll_registered_racing_a_post_completes_exactly_once ... ok
test a_poll_registered_racing_a_post_in_place_completes_exactly_once ... ok
test a_revoke_racing_the_wait_loop_ends_it_in_every_arm ... ok
test a_post_racing_a_registration_leaves_nobody_parked ... ok
test a_transition_racing_an_opening_gate_is_never_missed ... ok
test a_poll_on_two_watches_racing_both_posts_completes_exactly_once ... ok
test a_second_post_is_not_lost_to_a_flag_the_waiter_consumed ... ok
test a_fire_racing_a_submitters_park_is_never_lost ... ok
test an_answer_wakes_the_submitter_its_look_hid_the_poll_from has been running for over 60 seconds
test an_answer_wakes_the_submitter_its_look_hid_the_poll_from ... ok

test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 84.19s

     Running tests/owed_lock.rs (target/debug/deps/owed_lock-0807b6e32f416572)

running 1 test
test a_turned_away_cpu_holds_the_lock_or_is_answered ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/panic_capture.rs (target/debug/deps/panic_capture-c289897a9ea5e05d)

running 5 tests
test a_released_latch_hands_the_snapshot_to_the_next_captor ... ok
test the_owner_refreshes_and_a_second_captor_stays_out ... ok
test two_panicking_cpus_write_one_snapshot ... ok
test the_unlatched_capture_this_replaced_interleaves_two_reports ... ok
test a_reader_and_refresh_never_overlap_on_the_snapshot ... ok

test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s

     Running tests/panic_console_publish.rs (target/debug/deps/panic_console_publish-e46f106d1695375a)

running 1 test
test a_snapshot_is_one_publication_whole ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.13s

     Running tests/poll_once.rs (target/debug/deps/poll_once-f56cc4b6814d8ef2)

running 2 tests
test a_withdrawal_and_a_post_never_both_take_a_poll ... ok
test a_post_and_a_recheck_answer_a_poll_once ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

     Running tests/reap_gate.rs (target/debug/deps/reap_gate-8fd275ca2d18df84)

running 4 tests
test an_unraised_gate_claims_nothing ... ok
test a_claim_sees_the_enrolled_work ... ok
test a_raise_is_never_dropped ... ok
test one_raise_is_claimed_once ... ok

test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/serial_lock.rs (target/debug/deps/serial_lock-63261fe279253723)

running 9 tests
test a_seize_and_a_burst_never_overlap ... ok
test a_lost_try_lock_leaves_the_lock_held ... ok
test within_asks_a_silent_attempt_exactly_its_tries ... ok
test a_seize_gives_up_on_a_holder_that_never_lets_go ... ok
test a_seize_reenters_its_own_cpus_hold ... ok
test a_burst_beneath_its_own_cpus_fatal_path_is_refused - should panic ... ok
test a_seize_takes_a_burst_let_go_inside_the_bound ... ok
test a_burst_waits_out_another_cpus_fatal_path ... ok
test two_writers_never_overlap ... ok

test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/sleep_lock.rs (target/debug/deps/sleep_lock-c9ed61150016ac10)

running 4 tests
test try_lock_observes_the_previous_holders_writes ... ok
test a_queued_contender_is_served_and_named ... ok
test a_parking_contender_observes_the_holders_writes ... ok
test two_holders_never_overlap ... ok

test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s

     Running tests/smp_bringup.rs (target/debug/deps/smp_bringup-23481c9368ee0ee3)

running 3 tests
test an_ap_that_reads_another_id_is_refused - should panic ... ok
test a_released_machine_is_answering ... ok
test a_committed_count_never_outruns_its_slot ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

     Running tests/ticket_lock.rs (target/debug/deps/ticket_lock-fd7900886dbca66d)

running 3 tests
test try_lock_at_the_wrap_boundary_does_not_panic ... ok
test two_try_locks_do_not_both_succeed ... ok
test try_lock_observes_the_previous_owners_writes ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/tlb_shootdown.rs (target/debug/deps/tlb_shootdown-e81ad23158713781)

running 4 tests
test an_initiator_answers_while_it_waits ... ok
test a_nested_serve_is_not_undone_by_the_one_it_interrupted ... ok
test an_acknowledged_flush_postdates_the_page_table_write ... ok
test one_serve_answers_two_concurrent_shootdowns ... ok

test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.22s

     Running unittests src/lib.rs (target/debug/deps/kernel_sim-a2859a9b99bac577)

running 15 tests
test choice::tests::bytes_are_the_decisions ... ok
test choice::tests::bytes_wide_draw_uses_two_bytes ... ok
test choice::tests::pct_never_starves_a_lone_step ... ok
test choice::tests::pct_prefers_the_highest_priority_actor_and_is_stable ... ok
test choice::tests::replay_reproduces_a_recording ... ok
test choice::tests::bytes_full_range_reachable ... ok
test choice::tests::seeds_differ ... ok
test choice::tests::seeded_is_deterministic ... ok
test latency::tests::a_losing_maximum_becomes_the_runner_up ... ok
test latency::tests::an_empty_distribution_measures_nothing ... ok
test latency::tests::causes_are_kept_apart ... ok
test latency::tests::merging_is_exactly_the_union ... ok
test latency::tests::one_sample_has_no_runner_up ... ok
test choice::tests::zero_options_is_a_bug - should panic ... ok
test latency::tests::the_runner_up_is_the_second_largest_sample ... ok

test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/main.rs (target/debug/deps/kernel_sim-1a83c78a7bc14b6f)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/deadline_claim_race.rs (target/debug/deps/deadline_claim_race-72e9a1cea71b85bd)

running 1 test
test a_claim_between_the_drain_and_the_fire_leaves_the_timer_armed_for_what_is_parked ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/policy.rs (target/debug/deps/policy-29fdca2f2073d010)

running 12 tests
test a_stopped_cpu_stops_taking_work ... ok
test per_thread_shares_lose_the_floor ... ok
test the_share_deficit_is_an_offset_and_not_a_drift ... ok
test a_wakeup_storm_drains_without_serializing ... ok
test an_interactive_wake_waits_out_at_most_the_band_it_is_queued_behind ... ok
test a_process_cannot_buy_cpu_by_forking ... ok
test the_two_cures_are_priced_against_the_pull_path ... ok
test a_runnable_task_waits_at_most_one_dispatch_per_rival ... ok
test without_the_balance_path_a_lopsided_machine_stays_lopsided ... ok
test the_balance_path_drains_the_cpu_an_adversary_loaded ... ok
test a_push_on_surplus_reaches_every_cpu_the_pull_path_left_asleep ... ok
test a_bounded_re_arm_reaches_every_cpu_the_pull_path_left_asleep ... ok

test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 14.29s

     Running tests/scenarios.rs (target/debug/deps/scenarios-640496bbf522668e)

running 25 tests
test a_pass_that_overruns_its_budget_is_recorded ... ok
test corpus_traces_still_do_what_they_were_committed_for ... ok
test a_run_replays_exactly ... ok
test old_commit_before_pass_is_caught ... ok
test a_retire_inside_the_registration_window_is_honoured_by_the_core ... ok
test blind_spot_needed_the_step_split ... ok
test old_steal_port_is_caught ... ok
test shrinking_keeps_the_failure_and_loses_the_noise ... ok
test a_pass_inside_the_registration_window_is_caught ... ok
test the_new_protocol_survives_the_schedule_that_breaks_the_old_one ... ok
test per_thread_fair_shares_are_caught ... ok
test rt_starving_the_corpse_is_caught ... ok
test the_park_sees_claims_that_landed_after_its_commit ... ok
test the_audio_pipeline_holds_on_one_cpu ... ok
test double_charging_a_share_is_caught ... ok
test old_park_keeping_the_lend_is_caught ... ok
test a_retire_completes_inside_its_derived_bound ... ok
test old_migrate_keeping_the_corpse_is_caught ... ok
test the_unwind_gate_lasts_one_chunk_and_not_one_unwind ... ok
test the_fairness_storm_is_measured_and_holds ... ok
test identity_ordering_within_a_share_is_caught ... ok
test invariant_i13_is_measured_and_holds ... ok
test an_identity_tiebreak_changes_the_schedule_and_not_the_sibling_split ... ok
test every_scenario_survives_raw_fuzz_bytes ... ok
test every_scenario_survives_a_seed_sweep ... ok

test result: ok. 25 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.93s

     Running unittests src/lib.rs (target/debug/deps/toyos_abi-e2dc6b3b596dfe4b)

running 53 tests
test boot::tests::a_window_holds_an_extent_and_not_merely_its_first_address ... ok
test boot::tests::the_kernel_is_handed_the_windows_firmware_named_and_none_of_the_array_behind_them ... ok
test boot::tests::the_two_readings_of_a_boot_parameter_partition_it ... ok
test clock::tests::the_page_is_four_words ... ok
test clock::tests::the_formula_is_the_kernels ... ok
test counters::tests::a_flag_no_counter_names_is_refused ... ok
test boot::tests::a_count_past_the_array_is_refused_rather_than_clamped - should panic ... ok
test counters::tests::a_present_zero_is_not_an_absent_counter ... ok
test counters::tests::a_word_under_an_absent_counter_is_refused ... ok
test counters::tests::counters_are_indexed_by_their_place_and_named_once ... ok
test counters::tests::every_shape_of_record_reads_back_as_written ... ok
test counters::tests::what_times_a_program_or_is_power_needs_the_trace_right ... ok
test handle::tests::a_bit_no_right_uses_is_not_a_rights_set ... ok
test handle::tests::a_generation_past_the_field_is_generation_zero_again ... ok
test handle::tests::a_handle_answers_the_slot_and_generation_it_was_made_from ... ok
test handle::tests::every_right_in_all_has_a_name_and_every_name_is_in_all ... ok
test handle::tests::generation_zero_is_the_bare_index ... ok
test handle::tests::nothing_below_the_retirement_generation_can_be_the_invalid_handle ... ok
test handle::tests::rights_only_shrink ... ok
test inbox::tests::the_ring_layout_is_what_both_ends_index_by ... ok
test inventory::tests::a_byte_that_names_nothing_is_refused_by_name ... ok
test inventory::tests::a_record_is_one_fixed_width ... ok
test inventory::tests::every_record_round_trips ... ok
test log::tests::a_fresh_cursor_has_read_nothing ... ok
test log::tests::a_length_past_the_bound_is_clamped_and_not_a_panic ... ok
test log::tests::a_non_utf8_body_renders_what_decoded ... ok
test log::tests::a_record_renders_the_same_line_for_every_consumer ... ok
test log::tests::a_wall_clock_goes_through_the_bracket_and_an_empty_one_changes_nothing ... ok
test log::tests::an_undeclared_severity_byte_decodes_to_nothing ... ok
test log::tests::every_sayer_gets_the_one_head ... ok
test log::tests::its_bytes_are_the_fields_and_nothing_between_them ... ok
test log::tests::severities_are_ordered_from_info_to_alert ... ok
test log::tests::the_record_is_the_size_and_shape_both_sides_assume ... ok
test log::tests::untimed_severity_and_elided_are_in_the_line_rather_than_in_a_convention ... ok
test part::tests::a_guid_is_the_uppercase_registry_form_and_nothing_else ... ok
test part::tests::a_guid_survives_the_wire ... ok
test part::tests::the_esp_type_guid_is_the_specification_s_bytes ... ok
test ring::tests::a_scribbled_header_leaves_the_stream_exact ... ok
test ring::tests::a_read_split_across_the_cursor_wrap_returns_what_was_written ... ok
test ring::tests::the_pipe_capacity_does_not_divide_the_u32_cursor_space ... ok
test syscall::tests::a_devices_entry_is_a_class_or_one_named_function ... ok
test syscall::tests::every_dirent_is_read_back_whatever_its_node_holds ... ok
test syscall::tests::a_dirent_of_another_kind_is_a_broken_kernel - should panic ... ok
test syscall::tests::module_info_s_bytes_are_the_fields_and_nothing_between_them ... ok
test syscall::tests::a_partition_entry_carries_its_guid_in_both_selector_words ... ok
test syscall::tests::modules_decodes_every_record_and_its_path ... ok
test syscall::tests::a_pci_id_is_four_lowercase_hex_digits_each_and_nothing_else ... ok
test syscall::tests::a_request_writes_back_the_name_it_parsed ... ok
test syscall::tests::the_selector_survives_the_wire ... ok
test syscall::tests::a_short_dirent_is_a_broken_kernel - should panic ... ok
test syscall::tests::modules_refuses_a_path_past_the_answer - should panic ... ok
test syscall::tests::an_isa_entry_survives_the_wire_and_nothing_else_decodes ... ok
test ring::tests::a_stream_survives_the_cursor_reaching_two_to_the_thirty_two ... ok

test result: ok. 53 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.36s

     Running unittests src/lib.rs (target/debug/deps/toyos_acpi-511dbd81c5fb131e)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/amd_laptop.rs (target/debug/deps/amd_laptop-81b87e7c384f71dc)

running 2 tests
test the_fadt_names_a_control_method_power_button ... ok
test the_reset_register_is_smi_cmd_and_its_value_is_one_the_tables_name ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/corpus.rs (target/debug/deps/corpus-13c5d64a436f685b)

running 36 tests
test a_dsdt_that_cannot_be_found_is_the_first_block_refused ... ok
test a_century_register_outside_cmos_ram_is_told_apart_from_none ... ok
test a_fadt_of_the_acpi_1_0_length_is_read_without_its_x_fields ... ok
test a_fadt_that_ends_before_arm_boot_arch_is_short ... ok
test a_fadt_too_short_for_the_boot_architecture_flags_is_refused ... ok
test a_length_over_the_ceiling_is_refused_without_walking_it ... ok
test a_length_longer_than_the_mapping_is_refused_before_a_byte_is_read ... ok
test a_length_shorter_than_the_fixed_part_is_refused_with_both_numbers ... ok
test a_length_under_the_header_is_refused_even_when_the_caller_needs_nothing ... ok
test a_dsdt_whose_fadt_could_not_be_read_is_refused_as_unread_and_not_as_absent ... ok
test a_madt_entry_of_zero_length_halts_the_walk_instead_of_looping ... ok
test a_fadt_before_acpi_5_1_says_nothing_about_psci ... ok
test a_madt_entry_running_past_the_list_halts_the_walk ... ok
test a_madt_entry_too_short_for_its_own_type_is_not_decoded_as_that_type ... ok
test a_reset_register_this_kernel_cannot_write_is_refused_by_the_field_that_refused_it ... ok
test a_revision_1_fadt_is_read_at_its_32_bit_fields_alone ... ok
test a_revision_1_fadt_long_enough_to_hold_x_dsdt_is_still_read_at_its_32_bit_field ... ok
test a_revision_that_promises_x_dsdt_over_a_table_that_cannot_hold_it_falls_back ... ok
test a_table_that_does_not_sum_to_zero_is_refused ... ok
test a_trailing_byte_that_cannot_be_an_entry_header_ends_the_walk_quietly ... ok
test an_rsdp_address_the_reader_cannot_reach_is_refused ... ok
test an_xsdt_entry_pointing_at_nothing_is_skipped_and_the_next_one_is_read ... ok
test fixed_hardware_reads_whichever_form_names_a_block ... ok
test fixed_hardware_this_kernel_does_not_serve_is_refused_by_name ... ok
test reset_fields_are_read_only_from_a_revision_that_defines_them ... ok
test the_crafted_fixed_hardware_decodes_before_any_field_is_broken ... ok
test the_definition_blocks_are_the_dsdt_and_then_each_ssdt_in_the_xsdts_order ... ok
test the_psci_conduit_is_read_off_a_fadt_that_defines_it ... ok
test the_root_pointer_is_refused_one_reason_at_a_time ... ok
test the_sci_defaults_to_level_and_active_low_where_nothing_says_otherwise ... ok
test the_shared_reader_refuses_what_it_does_not_hold ... ok
test the_values_the_fadt_names_for_smi_cmd_are_each_read_from_their_own_byte ... ok
test the_xsdt_walk_answers_with_its_first_match_and_tries_no_second ... ok
test two_edits_that_cancel_pass_the_checksum_and_decode_to_the_lie ... ok
test no_single_byte_mutation_of_a_firmwares_descriptor_list_panics_or_runs_away ... ok
test no_single_byte_mutation_of_a_real_table_panics_or_runs_away ... ok

test result: ok. 36 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.24s

     Running tests/facs.rs (target/debug/deps/facs-a15007ab0e958668)

running 5 tests
test a_structure_that_is_no_facs_is_refused_by_name ... ok
test a_facs_off_its_sixty_four_byte_boundary_is_refused ... ok
test both_transitions_are_the_specifications_own_sequences ... ok
test s4bios_f_is_bit_zero_of_the_flags ... ok
test the_wide_address_wins_where_it_is_not_zero_and_the_narrow_one_serves_where_it_is ... ok

test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/fixtures.rs (target/debug/deps/fixtures-4a6afb68b94b918b)

running 14 tests
test the_boot_architecture_flags_come_off_a_revision_that_defines_them ... ok
test the_fadt_names_the_century_register_the_wall_clock_read ... ok
test a_second_firmwares_bytes_decode_to_that_machines_own_windows ... ok
test the_fadt_names_the_power_block_and_the_dsdt ... ok
test the_fadt_names_the_reset_register_qemu_acts_on ... ok
test the_hpet_table_names_the_window_the_timer_driver_mapped ... ok
test the_definition_blocks_of_qemu_are_its_dsdt_alone ... ok
test the_mcfg_names_the_ecam_window_the_pci_walk_used ... ok
test the_madt_names_the_two_cpus_that_boot_and_the_chip_that_interrupts_them ... ok
test the_q35_fadt_names_the_fixed_hardware_its_sci_is_served_through ... ok
test the_q35_fadt_predates_arm_boot_arch ... ok
test the_q35_madt_names_its_sci_level_and_active_high ... ok
test the_windows_a_boot_printed_are_what_that_firmwares_own_bytes_say ... ok
test the_xsdt_walk_reaches_every_entry ... ok

test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/iort.rs (target/debug/deps/iort-313a1d0c9c9609b9)

running 31 tests
test a_mapping_carries_an_id_by_its_offset_from_the_input_base_and_ends_at_its_last_id ... ok
test a_mapping_whose_range_leaves_the_id_space_is_refused ... ok
test a_node_array_inside_the_header_is_refused ... ok
test a_node_array_past_the_table_is_refused_as_its_first_node ... ok
test a_node_count_that_overruns_the_table_is_refused_where_the_bytes_end ... ok
test a_node_longer_than_the_table_or_shorter_than_its_type_is_refused ... ok
test a_node_revision_whose_layout_was_not_read_is_refused ... ok
test a_node_type_not_decoded_is_answered_by_its_type_and_refuses_nothing ... ok
test a_revision_4_smmu_indexes_its_own_mapping_whenever_a_control_interrupt_is_not_wired ... ok
test a_revision_whose_layout_was_not_read_is_refused ... ok
test a_root_complex_has_no_mapping_of_its_own ... ok
test a_route_through_an_output_reference_that_names_no_node_is_refused ... ok
test a_route_through_an_output_reference_to_a_node_its_source_may_not_reach_is_refused ... ok
test a_single_mapping_that_is_not_its_smmus_own_is_refused ... ok
test a_stream_another_mapping_puts_out_to_the_same_smmu_is_refused ... ok
test a_stream_the_smmu_maps_nowhere_has_no_its ... ok
test a_table_too_short_for_its_own_header_fields_is_refused ... ok
test a_stream_is_not_judged_alone_past_an_id_array_out_of_its_node ... ok
test an_id_array_lying_over_its_nodes_own_fields_is_refused ... ok
test an_id_two_mappings_claim_is_refused_when_it_is_asked_for ... ok
test an_id_array_running_past_its_node_is_refused ... ok
test an_its_node_declaring_an_id_array_is_refused ... ok
test an_its_group_of_other_than_one_its_is_refused ... ok
test an_smmus_own_mapping_index_at_or_past_its_id_array_is_refused ... ok
test the_hardware_gic_boot_routes_bus_zero_through_the_smmu_and_nothing_to_an_its ... ok
test the_hardware_gic_boots_madt_names_no_its ... ok
test the_its_boot_routes_bus_zero_through_the_smmu_to_the_its_and_the_rest_past_it ... ok
test the_its_boots_madt_names_the_its_the_iort_routes_to ... ok
test the_mapping_a_revision_5_smmu_indexes_is_the_units_own_and_routes_no_stream ... ok
test opening_a_table_and_routing_a_requester_each_read_it_a_bounded_number_of_times ... ok
test no_corruption_of_a_published_iort_panics_or_hangs_the_decoder ... ok

test result: ok. 31 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.85s

     Running tests/ivrs.rs (target/debug/deps/ivrs-8e617589e7e366d5)

running 13 tests
test a_table_too_short_for_its_first_block_is_refused_by_length ... ok
test a_refused_list_refuses_its_walk_and_not_the_table ... ok
test an_ivmd_range_running_backwards_or_past_the_address_space_is_refused ... ok
test a_block_shorter_than_its_header_or_longer_than_the_table_is_refused ... ok
test an_entry_the_block_cannot_hold_is_refused_not_read_past ... ok
test every_block_type_decodes_and_a_unit_is_answered_once_at_its_highest_type ... ok
test a_walk_that_meets_a_bad_entry_ends_on_its_refusal ... ok
test qemus_table_is_one_unit_described_twice_and_answered_once_at_its_higher_type ... ok
test every_device_entry_decodes_with_its_range_paired_and_its_padding_dropped ... ok
test qemus_unit_serves_every_function_of_bus_zero_by_one_select_each ... ok
test two_ivhds_of_one_type_naming_one_unit_are_refused_and_two_units_are_not ... ok
test more_ivhds_than_the_bound_are_refused ... ok
test no_corruption_of_an_ivrs_panics_or_runs_away ... ok

test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s

     Running tests/mapped.rs (target/debug/deps/mapped-175b222895ddf99f)

running 3 tests
test a_table_past_the_direct_map_is_refused_before_a_byte_is_read ... ok
test address_zero_and_a_range_past_every_address_are_refused ... ok
test an_xsdt_entry_past_the_direct_map_is_skipped ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/mcfg.rs (target/debug/deps/mcfg-9d4177dea32206f1)

running 10 tests
test a_table_ending_inside_a_structure_refuses_the_part ... ok
test a_malformed_structure_is_refused_and_the_next_is_still_read ... ok
test a_window_ending_on_the_last_byte_is_accepted_and_one_bus_more_wraps ... ok
test a_window_of_sixty_four_buses_decodes_sixty_four_megabytes ... ok
test a_window_off_the_grain_is_refused_and_on_it_is_mapped ... ok
test a_window_over_another_windows_bytes_is_refused ... ok
test a_window_over_memory_is_refused ... ok
test a_window_reaching_the_limit_is_refused ... ok
test a_window_starting_at_bus_0x10_counts_its_functions_from_bus_0x10 ... ok
test another_segment_and_an_overlap_are_refused ... ok

test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/resource.rs (target/debug/deps/resource-be6592a446664922)

running 13 tests
test a_list_that_runs_off_the_end_of_what_can_be_read_is_refused ... ok
test a_descriptor_this_decoder_does_not_read_is_refused_by_its_tag ... ok
test a_list_with_no_end_tag_stops_at_the_bound ... ok
test a_maximum_that_is_not_the_minimum_plus_the_length_is_refused ... ok
test a_range_the_bridge_consumes_is_not_a_window_it_forwards ... ok
test a_resource_type_this_decoder_does_not_read_is_refused_by_its_kind ... ok
test a_short_descriptor_is_refused_rather_than_read_past ... ok
test a_translated_window_is_refused_rather_than_taken_at_its_minimum ... ok
test a_window_of_no_length_is_not_carried ... ok
test an_amd_laptops_controller_is_two_fixed_ports_in_the_lists_order ... ok
test an_io_run_that_is_no_fixed_port_is_refused_by_name ... ok
test more_windows_than_there_is_room_for_is_refused_whole ... ok
test only_the_memory_ranges_of_a_root_bridge_become_windows ... ok

test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/thinkpad_t14.rs (target/debug/deps/thinkpad_t14-7294cc439c2f4313)

running 2 tests
test the_t14s_madt_names_its_sci_level_and_active_high ... ok
test the_t14s_fadt_names_the_blocks_linux_served_its_sci_through ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_aml-724b8c9133286c5e)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/evaluate.rs (target/debug/deps/evaluate-32643eb9ec1156d0)

running 28 tests
test events_count_signals_and_a_wait_without_one_times_out ... ok
test break_and_continue_outside_a_while_are_refused ... ok
test bcd_converts_both_ways_and_refuses_what_is_not_bcd ... ok
test a_method_without_return_returns_nothing_usable ... ok
test an_acquire_of_the_global_lock_waits_as_its_timeout_says ... ok
test buffers_and_packages_are_sized_as_declared ... ok
test divide_stores_remainder_and_quotient_and_refuses_zero ... ok
test an_arg_holding_a_reference_stores_through_it ... ok
test concatenate_takes_the_first_operands_type ... ok
test comparisons_follow_the_first_operands_type ... ok
test logical_operators_answer_ones_or_zero ... ok
test methods_take_their_declared_arguments_and_return_a_copy ... ok
test index_reaches_into_buffers_strings_and_packages ... ok
test if_else_and_while_with_break_and_continue ... ok
test notify_sleep_stall_and_fatal_reach_the_host ... ok
test mid_takes_what_lies_within ... ok
test explicit_conversions_follow_their_definitions ... ok
test references_are_made_followed_and_asked_about ... ok
test mutexes_follow_sync_levels_and_are_released_by_the_end ... ok
test resource_templates_join_under_one_end_tag ... ok
test match_finds_the_first_element_both_tests_accept ... ok
test s5_evaluates_to_its_sleep_types ... ok
test recursion_runs_until_its_bound ... ok
test osi_answers_like_windows ... ok
test the_debug_object_takes_writes_and_refuses_reads ... ok
test store_converts_to_the_named_type_and_copy_object_does_not ... ok
test source_operands_convert_by_the_conversion_rules ... ok
test integer_arithmetic_wraps_at_the_integer_width ... ok

test result: ok. 28 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/heap.rs (target/debug/deps/heap-160502af4986f591)

running 19 tests
test a_nest_of_concatenates_holds_one_buffers_copy ... ok
test a_nest_of_mids_holds_one_copy ... ok
test a_nest_of_to_strings_holds_one_copy ... ok
test buffers_of_a_mebibyte_fill_it_to_the_bound ... ok
test a_nest_of_concatenates_holds_one_strings_copy ... ok
test a_returned_value_of_buffers_is_held_while_it_is_built ... ok
test fields_read_through_each_other_are_held_while_they_are_read ... ok
test a_returned_value_is_given_back_when_it_is_the_callers ... ok
test a_refused_load_gives_back_what_it_took ... ok
test a_returned_value_of_packages_is_held_while_it_is_built ... ok
test field_units_fill_it_to_the_bound ... ok
test a_nest_of_packages_is_held_while_it_is_read ... ok
test package_elements_naming_nothing_yet_fill_it_to_the_bound ... ok
test a_walk_is_held_against_the_bound_while_it_lasts ... ok
test a_parent_whose_last_child_is_unwound_holds_no_map ... ok
test empty_buffers_fill_it_to_the_bound ... ok
test a_full_interpreter_reads_a_field_that_fits_an_integer ... ok
test references_into_a_buffer_fill_it_to_the_bound ... ok
test devices_of_one_child_each_fill_it_to_the_bound ... ok

test result: ok. 19 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.11s

     Running tests/hostile.rs (target/debug/deps/hostile-0a6992a10e6b673c)

running 24 tests
test a_caller_value_is_refused_where_it_is_malformed ... ok
test a_loop_that_sleeps_is_bounded_in_time_asked ... ok
test a_package_length_that_leaves_its_package_is_refused ... ok
test an_alias_goes_with_what_created_it ... ok
test a_reference_outliving_its_object_names_nothing ... ok
test a_field_beyond_what_is_held_is_refused ... ok
test a_reference_to_a_local_ends_with_its_method ... ok
test a_reference_chain_cannot_form ... ok
test a_resource_template_join_is_bounded ... ok
test a_conversion_is_bounded_in_what_it_constructs ... ok
test names_and_strings_hold_only_what_their_encoding_allows ... ok
test objects_are_bounded_in_size ... ok
test every_truncation_yields_a_value_or_a_refusal ... ok
test the_wait_limit_is_exact_and_a_loads_too ... ok
test a_loop_without_end_is_bounded_in_steps ... ok
test waits_and_stalls_are_bounded_in_time_asked ... ok
test what_is_held_live_is_bounded_in_sum ... ok
test usage_is_each_calls_own_and_a_refusals_too ... ok
test a_string_stored_to_a_field_is_bounded_as_it_is_written ... ok
test tables_and_names_are_held_against_the_live_bound ... ok
test work_in_one_step_is_charged_in_proportion ... ok
test nesting_is_bounded_before_the_stack ... ok
test mutated_tables_yield_a_value_or_a_refusal ... ok
test a_walk_or_a_read_a_table_sizes_is_charged_for_all_of_it ... ok

test result: ok. 24 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.37s

     Running tests/namespace.rs (target/debug/deps/namespace-8324236958b8931a)

running 18 tests
test a_dsdt_loads_first_and_then_ssdts ... ok
test a_definition_needs_every_segment_but_its_last ... ok
test a_collision_refuses_the_table_and_leaves_none_of_it ... ok
test a_dsdt_below_revision_2_makes_every_integer_32_bits ... ok
test a_caller_names_only_absolute_paths_and_passes_the_declared_arguments ... ok
test a_lone_name_is_searched_for_toward_the_root_and_a_path_is_not ... ok
test a_prefix_above_the_root_finds_nothing ... ok
test a_processor_parses_opens_a_scope_and_takes_notify ... ok
test a_package_names_its_elements ... ok
test a_scope_opens_only_what_has_one ... ok
test an_alias_acts_exactly_as_its_source ... ok
test an_external_defines_nothing ... ok
test definition_block_level_code_runs_at_load ... ok
test names_a_method_creates_go_when_it_exits ... ok
test parent_prefixes_climb_one_scope_each ... ok
test the_predefined_objects_are_there_before_any_table ... ok
test qemus_dsdt_loads_and_its_s5_is_what_its_boot_logged ... ok
test qemus_methods_run_against_the_registers_they_read ... ok

test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/regions.rs (target/debug/deps/regions-5b41387f69d5f39a)

running 18 tests
test a_bank_field_selects_its_bank_first ... ok
test a_buffer_field_over_a_conversion_and_a_conversion_into_one ... ok
test a_field_is_read_shifted_and_masked_from_its_units ... ok
test a_field_store_writes_its_source_as_it_was_when_firmware_changes_it ... ok
test a_field_wider_than_an_integer_is_a_buffer ... ok
test a_lock_field_holds_the_global_lock_across_its_access ... ok
test a_host_refusal_and_a_space_not_carried_are_refused_by_name ... ok
test an_access_past_its_region_is_refused ... ok
test a_pci_config_region_addresses_its_devices_function ... ok
test an_index_field_writes_its_offset_then_reaches_the_data ... ok
test an_access_type_sets_the_unit_and_anyacc_takes_the_narrowest_natural_one ... ok
test an_address_out_of_its_form_is_refused ... ok
test buffer_fields_read_and_write_their_buffer ... ok
test copy_object_into_a_field_writes_an_integer_or_buffer_alone ... ok
test a_pci_config_region_below_bridges_is_on_the_nearest_ones_secondary_bus ... ok
test system_io_and_the_embedded_controller_are_addressed_by_offset ... ok
test the_update_rule_completes_a_unit_the_field_covers_in_part ... ok
test a_pci_config_region_below_more_bridges_than_buses_is_refused ... ok

test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/walk.rs (target/debug/deps/walk-abd0da6cbf7575cf)

running 6 tests
test an_alias_is_not_walked ... ok
test every_object_is_walked_as_what_it_is ... ok
test siblings_are_read_in_the_order_they_were_declared ... ok
test a_parent_of_thousands_is_walked_in_their_order ... ok
test a_walk_takes_its_links_and_its_deepest_path_from_the_bound ... ok
test a_namespace_nested_deep_is_walked_whole ... ok

test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s

     Running unittests src/lib.rs (target/debug/deps/toyos_blackbox-9643aeda15b7b32d)

running 36 tests
test fault_tests::a_fault_round_trips_word_for_word ... ok
test fault_tests::a_fault_survives_the_page_it_is_sealed_into ... ok
test fault_tests::only_a_record_of_the_declared_width_decodes ... ok
test stamp_tests::a_records_date_cannot_be_changed_under_it ... ok
test stamp_tests::an_unstamped_page_reads_as_no_date ... ok
test stamp_tests::a_record_belongs_to_the_stick_that_wrote_it ... ok
test tests::a_boot_with_no_break_says_so_in_one_line ... ok
test tests::a_cleared_page_is_not_harvested_twice ... ok
test tests::a_break_is_told_by_what_the_driver_says_and_by_who_said_it ... ok
test tests::a_length_past_the_page_is_refused ... ok
test tests::a_page_nobody_wrote_carries_nothing ... ok
test tests::a_multi_line_record_is_never_entered_part_way ... ok
test tests::a_report_that_fits_carries_no_drop_line ... ok
test tests::a_ring_that_moved_between_the_walks_leaves_no_line_out_of_place ... ok
test tests::a_sealed_page_comes_back_as_what_went_in ... ok
test tests::a_cut_report_says_how_many_records_it_dropped ... ok
test tests::a_window_with_no_boundary_keeps_none_of_it ... ok
test tests::an_account_cut_off_mid_line_is_readable_to_the_last_whole_line ... ok
test tests::an_armed_page_with_nothing_in_it_is_still_a_state ... ok
test tests::every_line_is_covered_once_its_last_fragment_arrives ... ok
test tests::every_state_has_a_word_of_its_own ... ok
test tests::a_report_that_fills_the_page_still_leaves_the_account_its_room ... ok
test tests::lines_that_fit_their_room_are_kept_and_nothing_is_said ... ok
test tests::no_state_can_be_read_as_another ... ok
test tests::an_over_long_run_of_records_is_cut_at_a_boundary ... ok
test tests::one_flipped_bit_anywhere_refuses_the_whole_page ... ok
test tests::the_address_is_found_in_a_raw_parameter_buffer ... ok
test tests::the_first_line_that_does_not_fit_drops_itself_and_every_later_one ... ok
test tests::a_storm_keeps_the_first_break_and_counts_what_it_dropped ... ok
test tests::the_head_is_kept_and_the_tail_fills_what_is_left ... ok
test tests::the_parameter_round_trips_the_address_it_names ... ok
test tests::the_section_is_the_usb_stacks_records_from_the_first_break_on_oldest_first ... ok
test tests::the_section_under_a_sealed_report_leaves_the_account_its_reserve ... ok
test tests::the_driver_says_a_break_the_way_the_section_finds_one ... ok
test tests::saying_what_was_dropped_never_runs_the_page_over ... ok
test tests::the_line_that_counts_the_dropped_fits_the_room_it_was_given ... ok

test result: ok. 36 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s

     Running unittests src/lib.rs (target/debug/deps/toyos_blockhold-e5428604ab30e6b9)

running 9 tests
test tests::a_clean_release_leaves_nothing ... ok
test tests::a_block_has_one_holder ... ok
test tests::a_holder_is_the_hold_of_exactly_that_span ... ok
test tests::a_loss_outlives_the_hold_that_wrote_it ... ok
test tests::a_write_after_the_loss_finds_it ... ok
test tests::a_write_released_unflushed_is_lost_to_the_next_holder ... ok
test tests::a_writer_silent_since_the_loss_is_told_when_another_flushes_first ... ok
test tests::writes_an_earlier_flush_made_durable_are_not_lost ... ok
test tests::every_interleaving_tells_each_loss_to_the_blocks_it_touched ... ok

test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s

     Running unittests src/lib.rs (target/debug/deps/toyos_blockring-f36e5fd8883e9af3)

running 23 tests
test client::tests::a_second_answer_for_one_tag_is_a_violation ... ok
test client::tests::nothing_goes_out_before_a_session ... ok
test client::tests::overlapping_writes_go_out_again_in_order ... ok
test client::tests::a_lost_flush_reissues_then_asks_again ... ok
test client::tests::a_write_given_up_poisons_every_later_flush ... ok
test client::tests::read_only_answers_a_write_alone ... ok
test entry::tests::a_completion_survives_its_words_and_refuses_what_it_does_not_define ... ok
test client::tests::what_was_on_the_wire_at_the_end_is_refused_and_what_was_not_waits ... ok
test entry::tests::a_request_outside_its_bounds_is_refused_by_tag ... ok
test entry::tests::a_request_survives_its_words ... ok
test model::tests::a_used_page_reads_fresh_once_a_servers_ends_are_made_over_it ... ok
test model::tests::states_named_alike_act_alike ... ok
test server::tests::a_flush_after_a_loss_answers_lost_once ... ok
test server::tests::a_read_only_session_refuses_a_write_unissued ... ok
test server::tests::a_reset_answers_in_the_order_taken ... ok
test server::tests::a_reset_answers_once_and_the_late_device_answer_is_dropped ... ok
test server::tests::a_tag_in_flight_twice_is_refused_unissued ... ok
test wire::tests::a_grant_reaches_its_own_partitions_and_decodes_only_whole ... ok
test wire::tests::opened_and_refusal_survive_their_bytes_and_nothing_else_decodes ... ok
test model::tests::the_model_reaches_the_end_it_should ... ok
test model::tests::the_model_reaches_a_write_given_up ... ok
test model::tests::what_a_flush_calls_durable_is_on_the_medium ... ok
test model::tests::every_request_is_answered_exactly_once ... ok

test result: ok. 23 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 15.56s

     Running unittests src/lib.rs (target/debug/deps/toyos_bootmap-114787c5b91e3fae)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/aarch64_direct_map.rs (target/debug/deps/aarch64_direct_map-c1c364a004939ee0)

running 9 tests
test a_map_with_no_memory_ends_at_zero ... ok
test a_reserved_page_inside_ram_is_left_out_of_its_block ... ok
test a_page_wholly_memory_is_one_block ... ok
test an_end_below_its_start_is_refused ... ok
test a_start_off_a_page_is_refused ... ok
test memory_is_mapped_and_a_register_is_not ... ok
test off_a_page_is_refused ... ok
test past_the_window_is_refused ... ok
test runtime_services_data_is_left_out_and_acpi_tables_are_not ... ok

test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/direct_map.rs (target/debug/deps/direct_map-f0a25675dcf7071d)

running 11 tests
test a_range_past_the_window_that_is_not_memory_is_not_refused ... ok
test acpi_tables_above_the_last_ram_are_mapped ... ok
test an_empty_map_is_the_boot_map ... ok
test an_unsorted_map_is_read_whole ... ok
test every_type_the_pmm_hands_out_is_mapped ... ok
test memory_above_4_gib_is_mapped_to_its_end_in_whole_pages ... ok
test no_other_type_reaches_past_the_boot_map ... ok
test memory_past_the_window_is_refused_by_name ... ok
test the_captured_map_is_usable_where_its_boot_said ... ok
test the_pmm_hands_out_exactly_the_types_uefi_gives_the_os ... ok
test the_reserved_hole_below_1_tib_is_not_mapped ... ok

test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/plan.rs (target/debug/deps/plan-7af5e4360404cd64)

running 26 tests
test a_base_off_the_page_is_refused_rather_than_rounded_down ... ok
test a_framebuffer_across_512_gib_names_both_second_level_tables ... ok
test a_framebuffer_above_the_low_map_adds_its_own_directory ... ok
test a_framebuffer_inside_the_low_map_adds_no_directory ... ok
test a_framebuffer_past_512_gib_adds_its_own_second_level_table ... ok
test a_framebuffer_at_the_boundary_is_outside_the_low_map ... ok
test a_framebuffer_that_straddles_the_low_maps_end_is_mapped_from_both_arms ... ok
test a_loader_inside_the_low_map_adds_nothing ... ok
test a_framebuffer_that_straddles_a_gib_claims_both ... ok
test a_loader_above_the_low_map_adds_its_own_directory_of_plain_memory ... ok
test a_loader_across_a_page_is_both_pages ... ok
test a_loader_beside_the_scanout_shares_its_directory ... ok
test a_machine_with_no_framebuffer_is_the_low_map_and_nothing_else ... ok
test a_map_typed_loader_is_memory ... ok
test a_map_typed_scanout_off_a_small_page_is_refused ... ok
test a_page_that_is_part_memory_is_refused_by_address ... ok
test a_range_no_map_can_hold_is_refused_by_name ... ok
test a_loader_no_map_can_hold_is_refused_by_name ... ok
test a_map_typed_plan_is_memory_where_firmware_says_write_back_and_a_device_elsewhere ... ok
test a_range_past_the_window_is_refused_by_name ... ok
test the_aarch64_descriptors_carry_the_attribute_index_the_mair_names ... ok
test the_high_half_slot_is_the_top_nine_bits_of_phys_offset ... ok
test uncacheable_is_pat_entry_three_and_plain_memory_is_entry_zero ... ok
test every_second_level_table_the_budget_has_fits_the_pool ... ok
test a_scanout_inside_memory_is_typed_as_the_scanout ... ok
test a_scanout_carved_out_of_ram_splits_the_pages_it_shares ... ok

test result: ok. 26 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

     Running tests/walk.rs (target/debug/deps/walk-5b85d7a00d82f753)

running 3 tests
test a_split_page_translates_through_its_table_of_small_leaves ... ok
test the_laptops_scanout_at_1010_gib_translates_in_both_views ... ok
test every_second_level_table_is_reached_from_its_own_root_slots ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_cpuvuln-636b1ca755e05ddc)

running 63 tests
test counters::tests::an_amd_with_leaf_6_has_aperf_and_mperf_and_no_smi_count ... ok
test counters::tests::a_guest_counts_no_smis ... ok
test counters::tests::the_tcg_model_has_none ... ok
test counters::tests::an_intel_model_off_the_list_counts_no_smis ... ok
test counters::tests::the_t14_has_what_linux_counted_on_it ... ok
test hwp::tests::the_request_is_the_minimum_ratio_the_highest_level_and_the_preference ... ok
test hwp::tests::a_cpu_outside_family_6_is_refused_by_name ... ok
test hwp::tests::the_tcg_model_is_refused ... ok
test hwp::tests::the_t14_is_declared_with_its_notification ... ok
test tests::a_bad_microcode_row_is_its_model_and_its_stepping ... ok
test tests::a_blacklist_row_for_stepping_zero_stands_before_its_any_stepping_row ... ok
test hwp::tests::a_missing_register_refuses_the_whole_request_by_name ... ok
test tests::a_comet_lake_guest_cannot_know_its_hosts_smt ... ok
test tests::a_blacklist_row_matches_only_its_steppings ... ok
test tests::a_guest_cannot_know_its_gds_mitigation ... ok
test tests::a_guest_with_verw_clear_mitigates_tsa ... ok
test tests::a_milan_kvm_guest_gives_the_tags_lines ... ok
test tests::a_retpoline_guest_leaves_bhi_to_retpolines_only_with_rrsba_disabled ... ok
test tests::a_retpoline_guest_without_rrsba_leaves_bhi_to_retpolines ... ok
test tests::a_tsa_row_keyed_by_a_model_nibble_of_8_or_more_is_read ... ok
test tests::a_turin_kvm_guest_gives_the_tags_lines ... ok
test tests::a_hygon_cpu_without_its_ls_cfg_probe_is_a_contradiction - should panic ... ok
test tests::a_zen2_guest_has_no_ibpb_brtype ... ok
test tests::a_native_zen3_without_its_probe_is_a_contradiction - should panic ... ok
test tests::alder_lake_mitigates_bhi_in_hardware ... ok
test tests::amd_0x15_to_0x17_take_ssbd_from_the_ls_cfg_probe ... ok
test tests::amd_stibp_always_on_is_strict_without_the_untrained_return_thunk ... ok
test tests::an_intel_guest_cannot_know_its_mitigations_or_its_hosts_smt ... ok
test tests::an_amd_cpu_with_feat_ctl_is_a_contradiction - should panic ... ok
test tests::an_msbds_only_cpu_reports_its_smt_as_mitigated ... ok
test tests::an_unknown_vendors_retbleed_is_unmitigated ... ok
test tests::autoibrs_leaves_stibp_to_select ... ok
test tests::bad_microcode_drops_the_controls_only_beside_one_of_them ... ok
test tests::bad_microcode_is_intel_family_6s ... ok
test tests::centaur_family_5_has_only_itlb_multihit ... ok
test tests::comet_lake_clears_cpu_buffers_by_mds_no_and_fb_clear ... ok
test tests::family_and_model_are_derived_as_arch_x86_lib_derives_them ... ok
test tests::comet_lake_varies_one_fact_at_a_time ... ok
test tests::firmware_can_lock_the_gds_mitigation ... ok
test tests::hygon_decides_as_linux_does ... ok
test tests::hygon_without_smt_and_with_ibpb_brtype_has_srso_smt_disabled ... ok
test tests::itlb_multihit_reads_what_feat_ctl_left_of_vmx ... ok
test tests::rfds_is_cleared_only_with_rfds_clear ... ok
test tests::only_amd_and_hygon_are_probed ... ok
test tests::rtm_absent_from_cpuid_is_rtm_off ... ok
test tests::rtm_always_abort_decides_tsx_first ... ok
test tests::spectre_bad_microcode_includes_its_bound ... ok
test tests::srbds_is_tsx_disabled_only_without_rtm_and_mmio ... ok
test tests::srso_user_kernel_no_mitigates_only_the_vm_exit ... ok
test tests::the_first_matching_blacklist_row_decides ... ok
test tests::the_t14_with_arch_capabilities_read_as_zero ... ok
test tests::the_t14s_facts_give_its_lines_and_its_spec_ctrl ... ok
test tests::the_t14s_no_bits_each_rule_out_their_bug ... ok
test tests::the_t14s_facts_are_linuxs_reading_of_it ... ok
test tests::tsa_is_ruled_out_only_by_both_its_no_bits ... ok
test tests::zen1_by_btc_no_ssb_no_and_ibpb ... ok
test tests::zen1_forces_stibp_from_the_untrained_return_thunk ... ok
test tests::zen2_selects_by_smt ... ok
test tests::zen3_by_srso_no_and_an_enumerated_ibpb_brtype ... ok
test tests::zen3_native_reads_its_probe_and_its_tsa_microcode ... ok
test tests::the_tcg_models_signature_gives_its_lines ... ok
test tests::zen4_reads_its_row_of_the_tsa_microcode_table ... ok
test tests::zhaoxin_without_spectre_v2_sets_up_no_ibpb ... ok

test result: ok. 63 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_desktop-da483a6873554fed)

running 104 tests
test budget::tests::a_client_that_names_no_size_is_never_too_large ... ok
test budget::tests::a_bigger_screen_affords_fewer_windows ... ok
test budget::tests::a_window_costs_whole_pages ... ok
test budget::tests::a_window_larger_than_the_screen_is_refused_by_name ... ok
test budget::tests::capacity_is_checked_before_size ... ok
test budget::tests::a_machine_with_almost_no_memory_still_gets_one_window ... ok
test budget::tests::the_poller_ceiling_binds_before_memory_does ... ok
test damage::tests::a_contained_rect_changes_nothing ... ok
test budget::tests::the_prompt_is_admitted_past_every_client_ceiling ... ok
test damage::tests::a_bridging_rect_collapses_both_it_joins ... ok
test damage::tests::an_empty_rect_is_not_damage ... ok
test damage::tests::take_clips_to_the_screen_and_drops_what_falls_outside ... ok
test damage::tests::two_distant_rects_stay_two ... ok
test damage::tests::the_bound_holds_and_the_list_stays_disjoint ... ok
test hit::tests::a_hit_outside_the_prompt_s_content_is_swallowed ... ok
test hit::tests::an_open_launcher_covers_the_window_beneath_it ... ok
test hit::tests::each_button_answers_for_exactly_the_rect_it_is_drawn_in ... ok
test hit::tests::nothing_under_the_pointer_is_the_desktop ... ok
test hit::tests::the_bar_past_its_own_buttons_is_desktop ... ok
test hit::tests::the_front_window_wins_an_overlap_and_a_minimized_one_never_does ... ok
test hit::tests::the_launcher_is_only_hit_while_it_is_open ... ok
test hit::tests::the_resize_corner_belongs_to_normal_windows_only ... ok
test input::tests::a_batch_folds_to_its_transitions_and_its_last_position ... ok
test input::tests::a_button_already_down_is_not_a_press ... ok
test hit::tests::the_taskbar_takes_precedence_over_a_window_reaching_into_it ... ok
test input::tests::a_click_on_a_maximized_title_bar_does_not_unmaximize_it ... ok
test input::tests::a_press_before_the_prompt_was_presented_never_reaches_it ... ok
test input::tests::a_press_on_a_normal_title_bar_drags_at_once ... ok
test input::tests::a_prompt_gets_every_key_and_no_chord_or_paste_acts ... ok
test input::tests::a_release_is_always_the_window_s ... ok
test input::tests::a_resize_grab_changes_the_size_and_not_the_origin ... ok
test input::tests::a_resize_in_progress_keeps_the_resize_cursor_wherever_the_pointer_went ... ok
test input::tests::a_tab_click_reveals_minimizes_or_raises ... ok
test input::tests::a_truncated_report_is_not_decoded_from_what_follows_it ... ok
test input::tests::a_window_closed_mid_drag_ends_the_grab_instead_of_panicking_or_moving_another ... ok
test input::tests::alt_tab_cycles_even_with_nothing_focused_and_ctrl_n_spawns ... ok
test input::tests::an_unclaimed_super_chord_reaches_the_window ... ok
test input::tests::dragging_reports_both_the_rect_it_left_and_the_one_it_took ... ok
test input::tests::dragging_survives_a_lower_window_closing_and_still_moves_the_right_one ... ok
test input::tests::escape_closes_the_launcher_only_while_it_is_open ... ok
test input::tests::no_window_means_no_super_chord_does_anything ... ok
test input::tests::releasing_a_drag_at_an_edge_snaps_and_anywhere_else_does_not ... ok
test input::tests::the_cursor_belongs_to_the_window_under_it_and_not_to_the_focused_one ... ok
test input::tests::releasing_a_resize_asks_for_the_buffer_and_never_snaps ... ok
test input::tests::the_release_of_a_key_that_answered_the_prompt_reaches_no_window ... ok
test input::tests::the_tablet_range_maps_onto_the_screen_and_never_off_it ... ok
test input::tests::the_super_chords_toggle_against_the_mode_the_window_is_in ... ok
test input::tests::travelling_past_the_threshold_restores_the_window_under_the_pointer ... ok
test layout::tests::a_drag_cannot_put_a_title_bar_off_the_top ... ok
test layout::tests::a_maximized_frame_is_exactly_the_work_area ... ok
test layout::tests::a_normal_window_has_no_mode_frame ... ok
test layout::tests::a_requested_window_is_centred_in_the_work_area ... ok
test layout::tests::a_resize_floors_at_the_minimum_and_never_moves_the_origin ... ok
test layout::tests::an_unmaximized_window_keeps_the_pointer_at_the_same_fraction_of_its_title ... ok
test layout::tests::buttons_sit_inside_the_title_bar_and_do_not_overlap ... ok
test layout::tests::frame_and_content_are_inverses ... ok
test layout::tests::reflow_keeps_the_size_and_brings_the_frame_back_on_screen ... ok
test layout::tests::reflow_leaves_a_window_that_already_fits_where_it_is ... ok
test layout::tests::restoring_under_a_pointer_at_the_left_edge_keeps_the_title_bar_reachable ... ok
test layout::tests::snapped_halves_never_overlap_and_never_reach_the_taskbar ... ok
test layout::tests::successive_unsized_windows_cascade_and_wrap ... ok
test plan::tests::a_blit_never_reads_outside_the_buffer ... ok
test layout::tests::the_layout_follows_the_metrics_it_is_given ... ok
test plan::tests::a_clip_that_misses_the_window_blits_nothing ... ok
test plan::tests::a_minimized_window_is_not_drawn_and_does_not_hide_the_wallpaper ... ok
test plan::tests::a_prompt_is_drawn_over_the_taskbar_the_launcher_and_every_window ... ok
test plan::tests::a_region_wholly_inside_the_taskbar_plans_only_the_bar ... ok
test plan::tests::a_window_mid_resize_does_not_cover_the_wallpaper_it_cannot_paint ... ok
test plan::tests::an_empty_desktop_is_wallpaper_and_the_bar ... ok
test plan::tests::an_opaque_window_covering_the_region_costs_no_wallpaper ... ok
test plan::tests::no_region_is_left_with_nothing_to_draw_in_it ... ok
test plan::tests::the_launcher_is_planned_over_every_window ... ok
test plan::tests::the_wallpaper_never_reaches_under_the_taskbar ... ok
test plan::tests::windows_are_planned_bottom_to_top_and_only_where_they_reach ... ok
test rect::tests::a_point_on_the_far_edge_is_outside ... ok
test rect::tests::a_wire_rect_cannot_wrap_into_the_whole_screen ... ok
test rect::tests::confine_brings_a_window_back_onto_a_smaller_screen ... ok
test rect::tests::extents_never_go_negative ... ok
test rect::tests::containment_and_overlap_agree_on_touching_edges ... ok
test rect::tests::union_ignores_an_empty_operand ... ok
test stack::tests::a_prompt_sits_above_every_topmost_window_and_has_the_keyboard ... ok
test stack::tests::a_second_prompt_is_refused_while_one_is_up ... ok
test stack::tests::a_topmost_window_raises_above_every_other_topmost_one ... ok
test stack::tests::an_ordinary_window_opened_after_a_topmost_one_goes_under_it ... ok
test stack::tests::cycling_leaves_a_topmost_window_on_top ... ok
test stack::tests::cycling_needs_two_ordinary_windows ... ok
test stack::tests::cycling_never_moves_a_prompt ... ok
test stack::tests::cycling_sends_the_top_window_to_the_bottom_and_reveals_the_next ... ok
test stack::tests::focus_is_the_topmost_window_that_is_not_minimized ... ok
test stack::tests::raising_an_ordinary_window_cannot_lift_it_over_a_topmost_one ... ok
test stack::tests::raising_the_window_already_on_top_leaves_it_there ... ok
test taskbar::tests::a_crowded_bar_has_no_gap_rather_than_a_backwards_one ... ok
test taskbar::tests::a_narrow_screen_keeps_the_status_box_on_it ... ok
test taskbar::tests::a_tab_face_stays_inside_its_tab ... ok
test taskbar::tests::tabs_are_adjacent_and_the_new_button_follows_the_last ... ok
test taskbar::tests::the_gap_is_exactly_what_the_tabs_and_the_status_box_leave ... ok
test taskbar::tests::the_launcher_sits_on_the_bar_and_grows_upward ... ok
test taskbar::tests::the_strip_is_the_bottom_of_the_screen_and_nothing_else ... ok
test window::tests::a_client_cannot_damage_more_than_its_own_window ... ok
test window::tests::a_minimized_window_is_never_opaque ... ok
test window::tests::a_window_mid_resize_is_not_opaque_and_its_backing_is_the_buffer ... ok
test window::tests::a_window_shrunk_below_its_buffer_is_still_opaque ... ok
test window::tests::only_the_first_departure_from_normal_is_saved ... ok
test damage::tests::coverage_survives_a_random_stream ... ok

test result: ok. 104 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_device_memory-a3bc89caab6cdd52)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_dhcp-85835547501f8462)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/ack.rs (target/debug/deps/ack-6e01edb908e730ca)

running 8 tests
test s_dhcp_dh_011_an_ack_is_probed_first ... ok
test s_dhcp_dh_012_verified_configures ... ok
test s_dhcp_dh_015_rapid_commit ... ok
test s_dhcp_dh_016_an_ack_without_rapid_commit_while_selecting ... ok

@Japabu

Japabu commented Oct 11, 2026

Copy link
Copy Markdown
Collaborator Author

cargo run -- --ci host on 148c3de, EXIT=0, part 3 of 10

test s_dhcp_dh_017_a_rapid_ack_answers_a_request_too ... ok
test s_dhcp_dh_014_every_decline_waits_ten_seconds ... ok
test s_dhcp_dh_018_the_lease_runs_from_the_first_request ... ok
test s_dhcp_dh_013_a_conflict_declines ... ok

test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/lease.rs (target/debug/deps/lease-7cbd855d8b77e1c1)

running 19 tests
test s_dhcp_dh_020_renew_rebind_expire ... ok
test s_dhcp_dh_019_the_first_renew ... ok
test s_dhcp_dh_021_t2_alone_means_rebinding_at_t1 ... ok
test s_dhcp_dh_022_extended ... ok
test s_dhcp_dh_023_reconfigured ... ok
test s_dhcp_dh_024_an_ack_for_another_address ... ok
test s_dhcp_dh_025_an_ack_from_another_server ... ok
test s_dhcp_dh_027_a_nak_while_renewing ... ok
test s_dhcp_dh_026_rebinding_takes_any_server ... ok
test s_dhcp_dh_029_a_nak_while_requesting ... ok
test s_dhcp_dh_028_a_nak_from_another_server ... ok
test s_dhcp_dh_031_a_late_timer_rebinds_once ... ok
test s_dhcp_dh_030_a_nak_loop_is_slowed ... ok
test s_dhcp_dh_032_a_later_timer_expires ... ok
test s_dhcp_dh_033_timer_options ... ok
test s_dhcp_dh_034_an_infinite_lease ... ok
test s_dhcp_dh_035_a_ten_second_lease ... ok
test s_dhcp_dh_036_a_lease_that_expired_while_probed ... ok
test s_dhcp_dh_037_each_renewal_has_its_own_xid ... ok

test result: ok. 19 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/link.rs (target/debug/deps/link-90672856539ea9f7)

running 10 tests
test s_dhcp_dh_065_the_reboot_is_acknowledged ... ok
test s_dhcp_dh_067_an_unanswered_reboot_keeps_the_lease ... ok
test s_dhcp_dh_068_the_lease_expires_while_rebooting ... ok
test s_dhcp_dh_069_a_reboot_ack_for_another_address ... ok
test s_dhcp_dh_070_link_up_while_selecting ... ok
test s_dhcp_dh_064_link_up_with_a_lease ... ok
test s_dhcp_dh_071_link_up_while_probing ... ok
test s_dhcp_dh_072_an_address_lost_in_use ... ok
test s_dhcp_dh_076_the_link_went_down_while_probing ... ok
test s_dhcp_dh_066_the_reboot_is_refused ... ok

test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/parse.rs (target/debug/deps/parse-873e665e562bd195)

running 26 tests
test s_dhcp_dh_039_not_a_reply ... ok
test s_dhcp_dh_040_the_hardware_type ... ok
test s_dhcp_dh_042_another_transaction ... ok
test s_dhcp_dh_041_another_clients_reply ... ok
test s_dhcp_dh_043_bootp_is_refused ... ok
test s_dhcp_dh_044_past_end_and_padding ... ok
test s_dhcp_dh_045_an_option_past_its_field ... ok
test s_dhcp_dh_047_a_repeated_message_type ... ok
test s_dhcp_dh_046_no_end ... ok
test s_dhcp_dh_049_split_options_are_joined ... ok
test s_dhcp_dh_048_option_lengths ... ok
test s_dhcp_dh_051_overload_misused ... ok
test s_dhcp_dh_050_an_overloaded_file_field ... ok
test s_dhcp_dh_053_a_foreign_client_identifier ... ok
test s_dhcp_dh_052_message_types ... ok
test s_dhcp_dh_054_the_server_identifier ... ok
test s_dhcp_dh_055_yiaddr_must_be_a_host ... ok
test s_dhcp_dh_056_the_lease_time ... ok
test s_dhcp_dh_057_the_mask ... ok
test s_dhcp_dh_058_network_and_broadcast_yiaddr ... ok
test s_dhcp_dh_060_at_most_three_resolvers ... ok
test s_dhcp_dh_063_a_refused_offer_then_another ... ok
test s_dhcp_dh_062_offers_nobody_asked_for ... ok
test s_dhcp_dh_061_identity_while_requesting ... ok
test s_dhcp_dh_059_the_first_usable_router ... ok
test s_dhcp_dh_038_truncated ... ok

test result: ok. 26 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/props.rs (target/debug/deps/props-597624497ab57e74)

running 2 tests
test s_dhcp_dh_074_prop_every_message_is_built_one_way ... ok
test s_dhcp_dh_073_prop_invariants ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s

     Running tests/stack.rs (target/debug/deps/stack-cbb0d4384d4d4a66)

running 2 tests
test s_dhcp_dh_007_either_framing_of_the_offer ... ok
test s_dhcp_dh_075_the_acquisition_exception_ends_with_an_address ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/tx.rs (target/debug/deps/tx-a857e2a22a278afe)

running 9 tests
test s_dhcp_dh_002_the_host_name ... ok
test s_dhcp_dh_003_the_discover_schedule ... ok
test s_dhcp_dh_004_jitter_offsets ... ok
test s_dhcp_dh_005_secs_saturates ... ok
test s_dhcp_dh_001_the_first_discover ... ok
test s_dhcp_dh_006_the_request ... ok
test s_dhcp_dh_008_the_request_repeats_the_discovers_secs ... ok
test s_dhcp_dh_009_four_requests_then_start_over ... ok
test s_dhcp_dh_010_a_slow_offer_still_counts ... ok

test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_dma-54049e6a6738179b)

running 17 tests
test tests::a_natural_offset_from_a_natural_base_is_aligned ... ok
test tests::a_refusal_names_its_numbers ... ok
test tests::a_refused_register_names_its_numbers ... ok
test tests::a_u32_at_size_minus_four_is_allowed ... ok
test tests::a_u32_at_size_minus_one_is_refused ... ok
test tests::a_zero_length_access_lands_at_the_end_and_no_further ... ok
test tests::an_access_of_no_width_is_refused ... ok
test tests::an_access_that_straddles_two_registers_is_refused ... ok
test tests::an_empty_region_admits_only_an_empty_access ... ok
test tests::an_empty_window_admits_no_register ... ok
test tests::an_offset_inside_the_region_does_not_make_the_access_inside_it ... ok
test tests::an_offset_plus_length_that_wraps_is_refused ... ok
test tests::an_offset_that_wraps_its_own_width_is_refused ... ok
test tests::an_unaligned_volatile_access_is_refused ... ok
test tests::the_base_is_part_of_the_question ... ok
test tests::the_last_whole_register_is_inside_the_window ... ok
test tests::the_whole_region_is_inside_itself ... ok

test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_dns-77a86f60db349884)

running 62 tests
test tests::a_lookup_whose_every_server_failed_says_how ... ok
test tests::a_lookup_whose_last_query_reached_nobody_waits_for_the_answers_still_read ... ok
test tests::a_lookup_that_then_reached_neither_server_waits_for_an_older_querys_answer ... ok
test tests::a_late_answer_to_an_earlier_query_still_ends_the_lookup ... ok
test tests::a_lookup_with_no_server_does_not_start ... ok
test tests::a_lookup_whose_newest_query_reached_nobody_waits_for_an_older_querys_answer ... ok
test tests::a_lookup_whose_newest_query_is_not_waited_for_wakes_at_the_next_servers_turn ... ok
test tests::a_chain_exactly_at_the_bound_is_followed ... ok
test tests::a_loop_of_aliases_ends_at_the_bound ... ok
test tests::a_real_reply_with_two_addresses_gives_both_in_order ... ok
test tests::a_reported_query_the_caller_then_knows_reached_nobody_is_let_go ... ok
test tests::a_server_failure_asks_the_next_server_at_once ... ok
test tests::a_server_failure_before_an_alias_is_not_the_aliases_failure ... ok
test tests::a_server_known_unreached_is_asked_again_a_wait_after_that_and_the_lookup_waits_for_its_turn ... ok
test tests::a_server_named_twice_is_one_server_and_is_asked_once_a_wait_whatever_is_reported ... ok
test tests::a_server_not_reached_is_not_asked_again_at_once_because_another_failed ... ok
test tests::a_server_that_answered_with_a_failure_is_what_a_lookup_that_then_reached_nobody_reports ... ok
test tests::a_truncated_reply_ends_the_lookup_by_name ... ok
test tests::aliases_are_counted_across_the_names_a_lookup_asks ... ok
test tests::an_older_query_that_reached_nobody_asks_nobody_and_ends_nothing ... ok
test tests::an_older_query_that_reached_nobody_does_not_hurry_the_next_server ... ok
test tests::every_prefix_of_a_real_reply_is_dropped_or_reads_as_the_whole ... ok
test tests::records_of_another_class_or_type_are_passed_over ... ok
test tests::reports_and_another_servers_failures_hurry_no_server_that_has_not_answered_and_end_no_lookup_early ... ok
test tests::rfc1034_3_6_2_a_chain_is_followed_in_any_order ... ok
test tests::rfc1034_3_6_2_a_real_chain_of_aliases_is_followed_to_its_address ... ok
test tests::rfc1034_5_3_3_a_chain_that_ends_without_an_address_is_asked_again_at_its_end ... ok
test tests::rfc1035_2_3_4_a_label_is_63_bytes_and_a_name_255 ... ok
test tests::rfc1035_2_3_4_a_name_built_past_255_bytes_by_pointers_is_refused ... ok
test tests::rfc1035_2_3_4_an_owner_of_255_bytes_is_read_and_one_of_256_is_refused ... ok
test tests::rfc1035_3_3_1_an_alias_record_is_one_name ... ok
test tests::rfc1035_3_4_1_an_address_record_is_four_bytes ... ok
test tests::rfc1035_4_1_1_a_query_is_one_header_and_one_question_for_a_in_in ... ok
test tests::rfc1035_4_1_1_a_query_or_another_opcode_is_no_reply ... ok
test tests::rfc1035_4_1_1_every_rcode_is_named ... ok
test tests::rfc1035_4_1_3_a_record_or_a_count_past_the_end_is_malformed ... ok
test tests::rfc1035_4_1_4_a_pointer_that_does_not_point_back_is_refused ... ok
test tests::rfc1035_4_1_4_a_pointer_to_a_prior_name_is_read ... ok
test tests::rfc1035_4_1_4_the_two_reserved_label_types_are_refused ... ok
test tests::rfc1035_4_2_1_a_query_that_reached_nobody_is_not_waited_for_and_the_next_server_is_asked_at_once ... ok
test tests::rfc1035_4_2_1_a_server_not_reached_is_asked_again_in_its_turn_a_wait_later ... ok
test tests::rfc1035_4_2_1_every_server_is_asked_before_any_again_and_the_lookup_ends_after_its_rounds ... ok
test tests::rfc1035_4_2_1_no_server_is_asked_again_at_once_a_lookup_that_reached_none_ends ... ok
test tests::rfc1035_5_1_a_name_off_the_wire_is_written_with_every_odd_byte_escaped ... ok
test tests::rfc1123_2_1_a_name_is_letters_digits_hyphens_and_nothing_else ... ok
test tests::rfc2181_10_1_two_aliases_for_one_name_are_malformed ... ok
test tests::rfc2181_5_4_1_an_address_for_a_name_not_asked_is_not_read ... ok
test tests::rfc2181_9_a_truncated_reply_is_refused_whatever_it_carries ... ok
test tests::rfc2308_2_2_a_name_with_no_address_is_an_empty_answer ... ok
test tests::rfc2308_nxdomain_and_nodata_end_the_lookup_apart ... ok
test tests::rfc4343_names_compare_without_regard_to_case ... ok
test tests::rfc5452_9_1_a_reply_is_read_only_for_its_id_and_its_question ... ok
test tests::rfc5452_9_1_only_the_asked_server_port_and_id_are_read ... ok
test tests::rfc5452_9_2_an_id_is_drawn_for_a_query_that_is_sent_and_for_nothing_else ... ok
test tests::rfc6761_6_4_a_real_invalid_name_does_not_exist ... ok
test tests::rfc8085_5_2_a_report_of_an_older_query_asks_nobody ... ok
test tests::rfc8085_5_2_a_reported_query_is_still_read_and_the_next_server_is_asked_at_once ... ok
test tests::rfc8085_5_2_reports_alone_end_no_lookup_and_ask_no_server_twice_inside_a_wait ... ok
test tests::every_pair_of_bytes_in_the_header_and_question_is_read_soundly ... ok
test tests::random_bytes_are_never_an_answer_to_an_id_they_do_not_carry ... ok
test tests::random_answer_sections_behind_a_valid_question_are_read_soundly ... ok
test tests::every_byte_of_a_real_reply_set_to_every_value_is_read_soundly ... ok

test result: ok. 62 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.20s

     Running unittests src/lib.rs (target/debug/deps/toyos_elf-5043e2fefda140b2)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/crafted.rs (target/debug/deps/crafted-dc6ee17f407d4923)

running 30 tests
test a_file_extent_that_overflows_is_refused ... ok
test a_file_with_no_load_segment_is_refused ... ok
test a_header_naming_a_vaddr_outside_the_image_is_refused_by_name ... ok
test a_header_one_byte_short_is_too_small ... ok
test a_program_header_count_past_the_buffer_is_refused ... ok
test a_program_header_offset_that_overflows_is_refused ... ok
test a_program_header_offset_inside_the_file_header_is_refused_by_name ... ok
test a_program_header_size_that_is_not_56_is_refused ... ok
test a_segment_extent_that_overflows_is_refused ... ok
test a_section_table_the_loader_cannot_index_is_dropped_not_refused ... ok
test a_tls_template_starting_in_bss_has_no_file_offset ... ok
test a_table_no_segment_holds_whole_is_absent ... ok
test a_zero_size_tls_segment_is_present_not_absent ... ok
test an_empty_file_is_too_small ... ok
test an_entry_point_outside_the_image_is_refused ... ok
test an_image_for_the_other_machine_is_refused_and_one_for_this_machine_is_not ... ok
test filesz_above_memsz_is_refused_for_load_and_for_tls ... ok
test class_endianness_version_type_and_machine_are_each_refused_by_name ... ok
test no_program_headers_is_refused ... ok
test only_a_segments_file_bytes_have_a_file_offset ... ok
test only_a_tls_segment_with_bytes_is_occupied ... ok
test segment_flags_survive_the_parse ... ok
test segments_that_share_a_page_are_an_overlap ... ok
test the_load_segment_count_is_bounded_and_the_bound_is_generous ... ok
test the_magic_is_checked ... ok
test the_program_header_table_is_where_its_segment_places_it ... ok
test the_stack_after_an_image_is_aligned_wherever_the_image_ends ... ok
test the_writable_window_spans_every_writable_segment ... ok
test tls_alignment_is_a_power_of_two_within_a_page_or_it_is_refused ... ok
test tls_bss_may_extend_past_the_image ... ok

test result: ok. 30 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/fuzz.rs (target/debug/deps/fuzz-34e6e2a3135c22d2)

running 2 tests
test no_note_segment_panics_the_build_id_read ... ok
test every_derived_address_lies_inside_the_image_or_the_image_is_refused ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.08s

     Running tests/note.rs (target/debug/deps/note-bfeae73fe178cc5c)

running 13 tests
test a_build_id_of_the_wrong_type_is_none ... ok
test a_descriptor_of_0_or_past_32_bytes_is_no_build_id ... ok
test a_header_with_no_readable_table_lists_no_note ... ok
test a_lone_build_id_is_read ... ok
test a_build_id_under_another_name_is_none ... ok
test a_note_running_past_its_segment_names_none ... ok
test an_alignment_no_note_section_has_names_none ... ok
test no_build_id_note_names_none ... ok
test an_eight_aligned_segment_pads_to_eight ... ok
test every_pt_note_is_listed_wherever_its_bytes_are ... ok
test the_build_id_after_an_unpadded_name_is_found ... ok
test the_constant_is_the_gabis ... ok
test the_first_of_two_build_ids_is_the_answer ... ok

test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/real.rs (target/debug/deps/real-5c61bb2e874d4313)

running 2 tests
test an_lld_binarys_build_id_is_what_object_and_readelf_read ... ok
test a_linked_binary_parses_to_what_readelf_says ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/tables.rs (target/debug/deps/tables-7575dc960ff753d4)

running 39 tests
test a_bucket_below_the_symbol_offset_is_the_symbol_offset ... ok
test a_chain_index_below_the_symbol_offset_ends_the_lookup ... ok
test a_chain_naming_a_symbol_the_table_does_not_hold_resolves_to_nothing ... ok
test a_bucket_pointing_past_the_chain_array_yields_no_symbol_count ... ok
test a_consistent_table_finds_its_symbol_and_counts_it ... ok
test a_chain_that_never_terminates_yields_no_symbol_count ... ok
test a_hash_header_that_cannot_be_used_is_refused ... ok
test a_name_offset_past_the_string_table_is_empty ... ok
test a_dynamic_table_with_no_null_terminator_stops_at_the_buffer ... ok
test a_name_that_is_not_utf8_matches_nothing ... ok
test a_read_table_inside_the_write_window_is_refused_by_name ... ok
test a_read_table_on_a_page_of_the_write_window_is_refused ... ok
test a_symbol_index_at_the_edge_of_the_bytes_reads_nothing ... ok
test a_relocation_form_a_rela_loader_would_not_apply_is_refused ... ok
test a_symbol_index_is_bounded_by_the_whole_entries_of_its_table ... ok
test a_symbol_index_past_the_table_is_refused_except_for_relative ... ok
test a_symbol_section_whose_link_names_nothing_is_no_symbol_section ... ok
test a_symbol_table_that_cannot_be_read_names_nothing ... ok
test a_symbol_with_no_size_owns_everything_above_it ... ok
test a_table_needs_both_of_its_tags_and_a_non_zero_size ... ok
test a_tag_is_absent_or_present_never_zero_meaning_absent ... ok
test a_trailing_partial_relocation_is_not_a_relocation ... ok
test a_truncated_section_table_names_the_sections_it_covers ... ok
test an_aarch64_tls_descriptor_is_refused_by_name ... ok
test an_address_resolves_to_the_function_that_contains_it ... ok
test an_alias_pair_resolves_to_the_one_that_carries_a_size ... ok
test an_empty_symbol_table_answers_every_question_with_nothing ... ok
test an_unterminated_name_is_the_rest_of_the_string_table ... ok
test counts_are_per_kind_over_every_table ... ok
test data_symbols_and_zero_valued_ones_name_no_frame ... ok
test dladdr_names_the_symbol_glibc_names ... ok
test each_machine_reads_its_own_relocation_numbers ... ok
test everything_after_dt_null_is_ignored ... ok
test every_written_type_is_validated_and_no_other_is ... ok
test one_byte_past_a_sized_symbol_is_not_that_symbol ... ok
test lookups_skip_undefined_symbols_and_the_null_entry ... ok
test relocation_types_map_to_the_width_the_writers_use ... ok
test the_symbol_count_is_the_hash_tables_or_the_gap ... ok
test validation_refuses_a_write_outside_the_window_by_name ... ok

test result: ok. 39 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/tls.rs (target/debug/deps/tls-763839c31beb5dfc)

running 9 tests
test a_size_no_allocation_can_hold_has_no_plan ... ok
test an_alignment_that_is_not_a_power_of_two_has_no_plan ... ok
test a_tpoff_no_segment_or_word_holds_is_refused ... ok
test the_dtv_is_never_overwritten_by_tls_data ... ok
test each_machine_has_its_own_variant ... ok
test the_executables_extent_is_its_size_rounded_to_its_alignment ... ok
test variant_i_agrees_with_what_lld_linked ... ok
test tpoff_carries_the_addend ... ok
test variant_i_puts_the_module_where_its_linker_put_it ... ok

test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_elide-64edf3abaa24923e)

running 12 tests
test limit::tests::a_quiet_site_is_never_limited ... ok
test tests::a_head_cut_inside_a_character_stops_before_it ... ok
test limit::tests::a_storm_is_said_to_its_burst_counted_after_and_reported_once ... ok
test tests::a_tail_cut_inside_a_character_drops_its_remainder ... ok
test tests::a_tail_wider_than_the_value_keeps_all_of_it ... ok
test tests::a_value_that_fits_is_untouched ... ok
test tests::both_ends_survive_and_the_count_is_exact ... ok
test limit::tests::racing_sites_count_exactly ... ok
test tests::one_byte_past_what_is_kept_elides ... ok
test tests::no_length_and_no_width_produces_invalid_utf8 ... ok
test tests::nothing_renders_wider_than_widest ... ok
test tests::the_chunking_a_value_arrives_in_does_not_change_it ... ok

test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_fat32-ca70c36909449a17)

running 18 tests
test dir::tests::a_write_time_keeps_the_even_second ... ok
test name::tests::basis_truncates_and_uppercases ... ok
test name::tests::anything_else_needs_one ... ok
test name::tests::exact_multiple_of_thirteen_has_no_terminator ... ok
test name::tests::candidates_are_distinct_and_well_formed ... ok
test name::tests::checksum_rotates_and_is_not_constant ... ok
test name::tests::groups_pad_with_terminator_then_filler ... ok
test name::tests::lone_surrogates_decode_to_a_name_rather_than_failing ... ok
test name::tests::plain_uppercase_names_need_no_long_entry ... ok
test name::tests::long_name_comparison_is_ascii_case_insensitive ... ok
test name::tests::rejects_names_past_the_format_limit ... ok
test name::tests::rejects_what_fat_cannot_store ... ok
test time::tests::clamps_instead_of_wrapping ... ok
test name::tests::hash_tails_differ_between_long_names ... ok
test time::tests::seconds_round_down_to_two ... ok
test time::tests::zero_entry_has_a_time ... ok
test time::tests::every_representable_day_round_trips ... ok
test time::tests::every_bit_pattern_decodes ... ok

test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/host_read.rs (target/debug/deps/host_read-17b178e40f5f7b7a)

running 10 tests
test a_four_kib_cluster_volume_reads_the_same ... ok
test lookup_ignores_case ... ok
test every_file_reads_back_byte_for_byte ... ok
test lowercase_short_names_survive ... ok
test missing_paths_are_not_found_rather_than_anything_else ... ok
test subdirectories_list_independently ... ok
test walk_sees_exactly_what_the_host_wrote ... ok
test the_volume_label_is_not_a_file ... ok
test extents_cover_the_file_and_point_at_its_bytes ... ok
test reads_land_correctly_at_every_offset_and_length ... ok

test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

     Running tests/host_write.rs (target/debug/deps/host_write-00aed74c8e8a3e9b)

running 21 tests
test empty_directories_are_removable_and_full_ones_are_not ... ok
test files_crossing_cluster_boundaries_are_intact ... ok
test our_own_reader_agrees_with_the_host_on_our_own_volume ... ok
test colliding_short_names_stay_unique ... ok
test a_log_file_written_a_line_at_a_time ... ok
test creating_an_existing_name_in_another_case_is_refused ... ok
test appending_extends_the_chain ... ok
test same_entry_is_case_insensitive_identity ... ok
test rename_moves_a_file_between_directories ... ok
test rename_repoints_a_moved_directorys_parent ... ok
test a_chain_that_outran_its_entry_is_reconciled ... ok
test the_host_sees_the_timestamp_we_stamped ... ok
test a_directory_grows_into_further_clusters ... ok
test the_host_accepts_a_volume_we_populated ... ok
test truncation_releases_clusters_and_the_host_agrees ... ok
test every_fat_copy_stays_in_step ... ok
test sparse_writes_zero_the_gap ... ok
test four_kib_clusters_write_correctly ... ok
test a_chain_no_entry_reaches_is_reconciled ... ok
test deleted_clusters_come_back ... ok
test a_full_volume_refuses_cleanly ... ok

test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 22.78s

     Running tests/hostile.rs (target/debug/deps/hostile-a2e9a28f9e88e097)

running 33 tests
test a_bad_signature_is_not_a_volume ... ok
test a_refused_flush_is_io ... ok
test a_long_name_with_a_wrong_checksum_falls_back_to_the_short_one ... ok
test a_directory_tree_cycle_terminates ... ok
test a_longer_cycle_is_bounded_rather_than_endless ... ok
test a_directory_entry_pointing_outside_the_volume_is_refused ... ok
test a_device_that_fails_mid_read_reports_it ... ok
test a_crafted_entry_can_still_be_deleted ... ok
test a_crafted_zero_size_entry_cannot_write_outside_the_volume ... ok
test a_cluster_that_links_to_itself_is_refused ... ok
test a_fat_too_small_for_its_clusters_is_refused ... ok
test a_chain_link_outside_the_volume_is_refused ... ok
test a_stale_handle_over_a_reused_empty_slot_is_refused ... ok
test a_volume_too_small_for_fat32_is_refused ... ok
test a_stale_handle_is_refused ... ok
test a_write_through_a_dead_handle_allocates_nothing ... ok
test a_cyclic_directory_chain_terminates ... ok
test lone_surrogates_in_a_long_name_produce_a_name ... ok
test a_volume_larger_than_its_device_is_truncated ... ok
test impossible_names_are_refused_not_mangled ... ok
test nonsense_long_name_ordinals_do_not_break_the_scan ... ok
test every_illegal_bpb_field_is_refused ... ok
test the_caller_limit_is_the_named_directorys_and_not_the_volumes ... ok
test the_caller_limit_refuses_rather_than_truncates ... ok
test the_corpus_is_a_volume_we_can_read ... ok
test writes_past_the_format_limit_are_refused ... ok
test a_directory_longer_than_the_entry_bound_is_refused ... ok
test removing_a_cyclic_chain_never_leaves_an_entry_naming_free_clusters ... ok
test an_empty_file_is_not_a_corrupt_directory ... ok
test truncating_a_cyclic_chain_does_not_free_the_clusters_it_keeps ... ok
test random_damage_to_directory_entries_never_panics ... ok
test random_damage_to_the_metadata_never_panics ... ok
test every_boot_sector_byte_can_be_anything ... ok

test result: ok. 33 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.51s

     Running tests/refused_writes.rs (target/debug/deps/refused_writes-72360d34c47c96ef)

running 20 tests
test a_remove_reports_a_corrupt_chain_under_the_name_it_erased ... ok
test a_remove_whose_free_the_device_fails_answers_ok_and_the_next_call_the_failure ... ok
test a_stop_that_refuses_every_retry_for_a_while_leaks_nothing ... ok
test every_refused_write_of_a_long_name_create_is_undone ... ok
test a_call_that_refused_nothing_keeps_the_free_count ... ok
test every_refused_read_of_a_truncation_is_retried_to_the_same_end ... ok
test every_refused_write_of_a_remove_dir_leaves_nothing_behind ... ok
test every_refused_write_of_a_rename_is_undone ... ok
test the_deepest_repair_reaches_its_bound_and_no_further ... ok
test every_refused_write_of_a_truncation_is_carried_through ... ok
test an_unlanded_rollback_is_the_answer ... ok
test every_refused_read_of_a_truncation_to_zero_is_retried_to_the_same_end ... ok
test every_refused_write_of_an_append_and_its_sync_converges ... ok
test every_refused_write_of_a_truncation_to_zero_is_carried_through ... ok
test every_refused_write_of_an_append_is_undone ... ok
test every_refused_write_of_a_directory_growth_is_undone ... ok
test every_refused_write_of_a_first_allocation_is_undone ... ok
test every_refused_write_of_a_remove_leaves_nothing_behind ... ok
test every_refused_write_of_a_nested_create_dir_is_undone ... ok
test a_stop_at_any_write_leaves_only_the_named_windows ... ok

test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.71s

     Running tests/replace_rename.rs (target/debug/deps/replace_rename-fa665dca9347c7bc)

running 2 tests
test a_failed_rollback_names_where_the_destination_went ... ok
test source_move_failure_restores_destination_before_any_free ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_fat32_check-c11677dcbf871170)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/teeth.rs (target/debug/deps/teeth-59ac0ba4e5cdea03)

running 66 tests
test a_boot_sector_without_its_signature ... ok
test a_boot_sector_that_does_not_jump ... ok
test a_chain_link_into_the_bad_cluster_mark ... ok
test a_chain_link_that_is_not_a_cluster ... ok
test a_chain_that_links_back_into_itself ... ok
test a_dot_entry_in_the_root_directory ... ok
test a_fat32_volume_claiming_a_fixed_root_directory ... ok
test a_directory_entry_carrying_a_size ... ok
test a_cluster_past_the_formats_ceiling ... ok
test a_dot_dot_naming_the_root_cluster_instead_of_zero ... ok
test a_cluster_that_is_not_a_power_of_two_sectors ... ok
test a_free_count_the_writer_left_unknown ... ok
test a_free_count_that_is_not_the_free_count ... ok
test a_fat_copy_left_behind_by_a_write ... ok
test a_fat32_volume_sizing_its_fat_in_the_sixteen_bit_field ... ok
test a_fat_too_small_for_the_clusters_it_must_describe ... ok
test a_fat_zero_that_does_not_carry_the_media_byte ... ok
test a_file_holding_more_clusters_than_its_size_needs ... ok
test a_directory_entry_naming_no_cluster ... ok
test a_file_whose_size_needs_more_clusters_than_it_holds ... ok
test a_file_system_version_this_specification_does_not_define ... ok
test a_long_name_entry_ahead_of_the_dot_entries ... ok
test a_long_name_entry_naming_a_cluster ... ok
test a_fat32_volume_counting_sectors_in_the_sixteen_bit_field ... ok
test a_long_name_entry_with_a_type_the_format_reserves ... ok
test a_dot_entry_naming_someone_elses_cluster ... ok
test a_next_free_hint_that_is_not_a_cluster ... ok
test a_long_name_run_that_does_not_begin_with_the_last_entry_flag ... ok
test a_fat_one_that_is_not_an_end_of_chain_mark ... ok
test a_long_name_run_no_short_entry_follows ... ok
test a_long_name_run_of_more_entries_than_a_long_name_has ... ok
test a_reserved_entry_byte_carrying_something_nothing_defines ... ok
test a_long_name_run_whose_ordinals_do_not_count_down ... ok
test a_media_byte_the_format_does_not_define ... ok
test a_long_name_run_whose_checksum_is_not_its_short_names ... ok
test a_long_name_run_that_does_not_reach_ordinal_one ... ok
test a_root_cluster_that_is_not_a_cluster ... ok
test a_report_that_stops_enumerating_says_it_stopped ... ok
test a_sector_size_the_format_does_not_define ... ok
test a_second_volume_label_in_the_root ... ok
test a_fat_of_no_sectors ... ok
test a_subdirectory_that_does_not_begin_with_dot ... ok
test a_tree_deeper_than_the_walk_follows ... ok
test a_volume_flagged_as_having_met_a_disk_error ... ok
test a_volume_of_no_sectors ... ok
test a_volume_label_outside_the_root_directory ... ok
test a_volume_flagged_as_not_cleanly_unmounted ... ok
test an_active_fat_the_volume_does_not_have ... ok
test a_volume_with_too_few_clusters_to_be_fat32 ... ok
test a_volume_that_is_all_metadata ... ok
test a_volume_shorter_than_its_boot_sector_says ... ok
test an_entry_naming_a_cluster_outside_the_volume ... ok
test an_fsinfo_sector_outside_the_reserved_region ... ok
test an_fsinfo_without_its_lead_signature ... ok
test an_fsinfo_without_its_struct_signature ... ok
test fewer_bytes_than_a_boot_sector ... ok
test no_fat_at_all ... ok
test no_reserved_sectors_at_all ... ok
test an_orphaned_ring_of_clusters ... ok
test the_fixture_is_clean ... ok
test clusters_allocated_and_reachable_from_nothing ... ok
test an_unfinished_fixture_is_not_clean ... ok
test an_fsinfo_without_its_trail_signature ... ok
test the_lowercase_name_bits_are_not_a_complaint ... ok
test two_entries_in_one_directory_with_the_same_short_name ... ok
test two_files_holding_one_cluster ... ok

test result: ok. 66 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s

     Running unittests src/lib.rs (target/debug/deps/toyos_gicv3-85668e2fdba4881c)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/gicv3.rs (target/debug/deps/gicv3-a7593114838353de)

running 9 tests
test unpacking_puts_each_field_back_and_no_flag ... ok
test sgi_to_cpu_zero_is_bit_zero_of_range_zero ... ok
test affinity_drops_mpidr_flags_between_aff2_and_aff3 ... ok
test sgi_to_every_other_cpu_is_irm_and_the_intid_alone ... ok
test walk_steps_over_virtual_lpi_frames ... ok
test walk_steps_two_frames_without_them ... ok
test walk_stops_at_the_last ... ok
test walk_stops_at_the_region_end ... ok
test sgi_names_aff0_by_range_and_bit ... ok

test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_gpt-11b281c700a01347)

running 6 tests
test crc32::tests::not_castagnoli ... ok
test crc32::tests::catalogue_check_value ... ok
test crc32::tests::streaming_matches_one_shot ... ok
test guid::tests::esp_type_guid_round_trips ... ok
test guid::tests::zero_is_zero ... ok
test tests::the_block_sizes_parsed_are_the_declared_range ... ok

test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/mutate.rs (target/debug/deps/mutate-b7b2a58e6c450625)

running 1 test
test a_resealed_table_with_any_value_bent_never_panics_and_hands_back_only_partitions ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.11s

     Running tests/oracle.rs (target/debug/deps/oracle-9e7e1a056fbd49fd)

running 3 tests
test both_readers_spell_the_types_alike ... ok
test on_tables_uefi_lays_out_both_readers_agree_entry_for_entry ... ok
test on_bent_tables_every_disagreement_is_a_named_difference ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.51s

     Running tests/parse.rs (target/debug/deps/parse-56b47f77ce0495ce)

running 43 tests
test a_backwards_partition_is_refused ... ok
test a_backup_retry_leaves_no_slot_of_the_primary ... ok
test a_device_with_no_room_for_a_table ... ok
test a_damaged_primary_falls_back_to_a_good_backup ... ok
test a_list_is_every_used_entry_in_order ... ok
test a_four_kibibyte_block_device_parses ... ok
test a_billion_entries_is_refused_not_read ... ok
test a_list_leaves_no_slot_it_did_not_fill ... ok
test a_partition_outside_the_disk_is_refused ... ok
test a_tiny_entry_array_cannot_buy_the_backup_header ... ok
test a_partition_over_the_table_is_refused ... ok
test a_read_that_does_not_happen_is_an_error ... ok
test a_type_scan_over_a_damaged_array_is_refused ... ok
test a_type_scan_lists_every_entry_of_that_type ... ok
test a_type_scan_says_how_many_it_could_not_hand_back ... ok
test a_zero_guid_matches_nothing ... ok
test a_valid_primary_that_lacks_the_guid_is_not_retried_against_the_backup ... ok
test a_usable_range_reaching_the_backup_gpt_is_refused ... ok
test an_array_lba_near_the_top_of_the_range_does_not_wrap ... ok
test absent_guid_is_not_found_and_says_how_many_there_were ... ok
test an_honest_table_on_a_floored_device_view_parses ... ok
test both_copies_damaged_is_refused_by_name ... ok
test an_overlapping_neighbour_is_refused ... ok
test block_sizes_outside_the_supported_range ... ok
test finds_the_partition_by_unique_guid ... ok
test header_reserved_word ... ok
test header_must_claim_lba_one ... ok
test header_signature ... ok
test header_revision ... ok
test hybrid_mbr_is_refused ... ok
test entry_size_must_be_a_power_of_two_multiple_of_128_that_fits_a_block ... ok
test no_protective_mbr ... ok
test the_array_ends_where_the_header_says ... ok
test one_flipped_bit_in_the_header ... ok
test header_size_bounds ... ok
test one_flipped_bit_in_the_entry_array ... ok
test zero_entries_is_refused ... ok
test each_guid_finds_its_own_entry ... ok
test usable_range_must_be_a_range_inside_the_device ... ok
test two_entries_claiming_the_target_guid_are_refused ... ok
test the_array_may_not_sit_on_the_header_or_past_the_usable_range ... ok
test the_array_ceiling_is_where_it_says_it_is ... ok
test no_byte_of_the_table_can_panic_the_parser ... ok

test result: ok. 43 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.04s

     Running unittests src/lib.rs (target/debug/deps/toyos_hda-dc03db3488d65788)

running 88 tests
test caps::tests::a_widget_type_keeps_the_nibble_it_was_decoded_from ... ok
test caps::tests::an_unsoldered_pin_still_calls_itself_a_speaker ... ok
test caps::tests::both_laptop_output_pins_can_power_an_external_amplifier ... ok
test caps::tests::qemu_s_converter_offers_it_too ... ok
test caps::tests::the_converter_amp_has_gain_and_cannot_mute ... ok
test caps::tests::eight_channel_display_audio_decodes_its_channel_count ... ok
test caps::tests::the_internal_speaker_is_fixed_and_the_jack_is_a_jack ... ok
test caps::tests::the_laptop_s_speaker_dac_decodes_as_a_stereo_converter ... ok
test caps::tests::the_laptop_s_speaker_pin_has_a_connection_list_and_an_output_amp ... ok
test caps::tests::the_laptop_s_converter_offers_what_this_pipeline_plays ... ok
test caps::tests::the_laptop_s_vendor_widget_is_the_one_with_processing_coefficients ... ok
test caps::tests::the_pin_amp_can_mute_and_has_no_gain ... ok
test config::tests::a_hop_shared_by_two_pins_is_powered_once ... ok
test config::tests::a_converter_that_does_not_offer_the_rate_is_a_refusal_and_not_a_substitution ... ok
test config::tests::qemus_path_writes_its_amplifier_on_the_converter_and_none_on_the_pin ... ok
test config::tests::both_machines_offer_the_one_rate_this_driver_asks_for ... ok
test config::tests::nothing_in_the_sequence_ever_sets_the_mute_bit ... ok
test config::tests::every_widget_on_the_path_that_has_a_power_state_is_told_d0 ... ok
test config::tests::the_converter_learns_the_format_and_the_tag_last ... ok
test config::tests::the_jack_is_told_to_drive_headphones_and_the_speaker_is_not ... ok
test config::tests::the_laptop_s_speaker_is_told_to_power_its_external_amplifier ... ok
test config::tests::the_two_halves_of_the_laptop_s_volume_control_are_written_where_they_exist ... ok
test fixture::tests::every_pin_in_the_fixture_has_a_configuration_default ... ok
test graph::tests::a_function_type_keeps_the_byte_it_was_decoded_from ... ok
test fixture::tests::the_converters_keep_their_rates ... ok
test graph::tests::a_list_shorter_than_it_declared_is_refused ... ok
test graph::tests::a_long_form_entry_carries_sixteen_bits ... ok
test graph::tests::a_long_form_node_past_the_node_space_is_refused ... ok
test fixture::tests::the_laptop_fixture_carries_both_codecs_and_every_widget ... ok
test fixture::tests::the_speaker_pin_round_trips_through_the_log_format ... ok
test graph::tests::a_range_entry_expands_from_the_entry_before_it ... ok
test graph::tests::a_range_longer_than_the_bound_is_refused_rather_than_truncated ... ok
test graph::tests::a_range_that_runs_backwards_is_not_a_range ... ok
test graph::tests::a_range_with_nothing_before_it_is_refused ... ok
test graph::tests::a_six_entry_mixer_list_spans_two_responses ... ok
test graph::tests::the_laptop_s_speaker_pin_names_one ... ok
test path::tests::a_connection_naming_a_node_outside_the_group_is_refused_by_name ... ok
test graph::tests::the_laptop_s_headphone_pin_names_two_converters ... ok
test path::tests::a_cycle_is_a_refusal_and_not_a_hang ... ok
test path::tests::a_selector_on_the_way_is_told_which_input_to_take ... ok
test path::tests::a_speaker_outranks_a_line_out_whatever_order_the_nodes_are_in ... ok
test path::tests::a_speaker_pin_with_no_converter_behind_it_is_refused ... ok
test path::tests::an_unwired_speaker_pin_does_not_win_by_coming_first ... ok
test path::tests::qemu_has_no_speaker_and_binds_its_line_out ... ok
test path::tests::display_audio_alone_is_a_refusal_naming_it ... ok
test path::tests::only_one_of_the_laptop_s_five_speaker_labelled_pins_is_a_candidate ... ok
test path::tests::the_display_codec_does_not_win_when_it_comes_first ... ok
test probe::tests::a_group_that_is_not_audio_is_kept_and_not_walked ... ok
test probe::tests::a_subordinate_range_running_off_the_node_space_is_refused_by_name ... ok
test path::tests::the_laptop_picks_its_internal_speaker_and_the_jack_that_shares_a_converter ... ok
test probe::tests::a_widget_count_past_the_bound_costs_the_widgets_past_it_and_nothing_else ... ok
test probe::tests::walking_qemus_two_codecs_binds_the_line_out ... ok
test path::tests::the_pin_amp_the_laptop_offers_is_the_one_that_can_mute ... ok
test stream::tests::a_buffer_that_would_wrap_the_address_space_is_refused ... ok
test stream::tests::a_built_format_decodes_back_to_the_rate_it_was_asked_for ... ok
test stream::tests::a_divided_rate_uses_the_divisor_field ... ok
test probe::tests::a_codec_statests_named_and_the_link_does_not_carry_is_named_not_skipped ... ok
test stream::tests::a_driver_that_slept_a_whole_lap_is_told_the_mask_cannot_place_the_engine ... ok
test stream::tests::a_last_index_outside_the_ring_is_refused ... ok
test stream::tests::a_mask_names_the_period_the_engine_returns_to_first ... ok
test stream::tests::a_mask_that_is_not_one_run_is_refused_rather_than_placed ... ok
test stream::tests::a_multiplied_rate_uses_the_multiplier_field ... ok
test stream::tests::a_period_count_past_the_mask_is_refused_rather_than_masked_short ... ok
test stream::tests::a_position_inside_the_period_still_being_played_marks_nothing_new ... ok
test probe::tests::the_walked_laptop_binds_the_same_speaker_the_parsed_one_does ... ok
test stream::tests::a_position_past_the_buffer_is_not_an_index ... ok
test stream::tests::a_rate_the_field_cannot_express_is_refused_and_not_rounded ... ok
test stream::tests::a_ring_with_nothing_to_wrap_to_is_refused ... ok
test stream::tests::a_run_that_wraps_does_not_start_at_its_lowest_bit ... ok
test stream::tests::an_unrepresentable_width_or_channel_count_is_refused ... ok
test stream::tests::completion_marks_every_period_between_two_positions ... ok
test stream::tests::completion_wraps_the_ring ... ok
test stream::tests::every_rate_linux_tabulates_encodes_to_the_number_linux_tabulates ... ok
test stream::tests::forty_eight_kilohertz_is_the_other_base ... ok
test stream::tests::the_pipeline_s_own_shape_builds_a_ring ... ok
test stream::tests::the_rate_this_pipeline_plays_encodes_as_the_forty_four_one_base ... ok
test stream::tests::widths_and_channel_counts_land_in_their_own_fields ... ok
test verb::tests::a_range_running_past_the_node_space_is_refused ... ok
test verb::tests::all_ones_is_not_a_response ... ok
test verb::tests::an_address_and_a_node_print_the_way_a_dump_names_them ... ok
test verb::tests::long_verb_puts_its_payload_under_a_four_bit_verb ... ok
test probe::tests::walking_the_laptop_reaches_the_graph_its_own_log_describes ... ok
test verb::tests::present_reports_every_codec_and_not_the_first ... ok
test verb::tests::short_verb_is_the_probe_s_encoding ... ok
test verb::tests::the_laptop_s_widget_range_decodes_to_its_own_nodes ... ok
test verb::tests::statests_bit_15_is_not_an_address ... ok
test verb::tests::zero_subordinates_is_no_range_at_all ... ok
test stream::tests::every_position_completed_can_report_reads_back_as_the_run_it_walked ... ok

test result: ok. 88 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_i219-379447150fe3f49f)

running 89 tests
test tests::a_claim_that_stops_answering_is_handed_up_and_not_read_as_quiet ... ok
test tests::a_buffer_given_back_out_of_turn_does_not_carry_the_tail_over_an_older_one ... ok
test tests::a_flag_another_agent_holds_is_neither_asked_over_nor_cleared ... ok
test tests::a_flag_the_part_already_let_go_is_not_written_again ... ok
test tests::a_flag_that_never_comes_does_not_stop_the_reset ... ok
test tests::a_frame_arrives_whole ... ok
test tests::a_frame_goes_out_whole ... ok
test tests::a_frame_longer_than_a_transmit_buffer_is_refused_and_not_truncated ... ok
test tests::a_grant_that_never_comes_is_refused_by_name_and_the_request_withdrawn ... ok
test tests::a_link_drop_does_not_lose_the_ring ... ok
test tests::a_lying_length_is_refused_and_the_frames_behind_it_still_arrive ... ok
test tests::a_part_is_told_which_vector_each_cause_uses ... ok
test tests::a_part_that_does_not_take_ivar_is_refused ... ok
test tests::a_grant_that_comes_late_inside_the_bound_is_taken ... ok
test tests::a_full_transmit_ring_answers_room_0 ... ok
test tests::a_ladder_stopped_on_smbus_leaves_the_mac_off_it ... ok
test tests::a_part_that_does_not_take_rctl_is_refused ... ok
test tests::a_part_with_no_station_address_is_refused ... ok
test tests::a_partner_on_an_unconfigured_phy_raises_no_link ... ok
test tests::a_phy_in_reach_is_asked_once_and_left_powered ... ok
test tests::a_phy_left_in_loopback_or_configured_by_hand_raises_no_link ... ok
test tests::a_link_that_is_down_has_no_room ... ok
test tests::a_master_that_never_goes_quiet_does_not_stop_the_bring_up ... ok
test tests::a_multicast_group_sets_the_one_table_bit_its_address_hashes_to ... ok
test tests::a_part_that_grants_over_the_engines_standing_bit_is_brought_up ... ok
test tests::a_phy_that_is_not_the_one_this_map_describes_is_refused_by_its_identifier ... ok
test tests::a_phy_reset_restores_the_defaults_and_not_the_state_the_claim_inherited ... ok
test tests::a_refused_descriptor_does_not_carry_the_tail_over_a_frame_still_held ... ok
test tests::a_register_nothing_decodes_is_refused_and_never_written ... ok
test tests::a_phy_left_out_of_reach_is_climbed_to_before_the_reset ... ok
test tests::a_phy_left_in_low_power_link_up_links_at_a_gigabit ... ok
test tests::a_platform_that_asks_for_low_power_link_up_in_d0a_gets_it ... ok
test tests::a_phy_reset_the_firmware_blocks_is_never_issued ... ok
test tests::a_reset_that_never_finishes_is_refused ... ok
test tests::a_release_over_a_window_of_ones_writes_nothing ... ok
test tests::a_spurious_interrupt_costs_a_pass_and_nothing_else ... ok
test tests::a_window_or_grant_too_small_is_refused ... ok
test tests::a_window_that_reads_ones_is_refused ... ok
test tests::a_part_that_takes_none_of_the_datasheets_latitudes_is_brought_up_the_same_way ... ok
test tests::a_seeded_workload_loses_nothing_and_invents_nothing ... ok
test tests::a_ring_never_written_back_is_refused ... ok
test tests::an_mdi_read_the_part_could_not_complete_is_refused_by_name ... ok
test tests::a_written_back_descriptor_returns_room ... ok
test tests::bring_up_programs_what_the_initialization_sections_name ... ok
test tests::causes_are_acknowledged_by_writing_them_back ... ok
test tests::every_reading_of_the_other_two_ownership_bits_names_who_stands_beside_the_flag ... ok
test tests::a_phy_no_rung_reaches_is_refused_after_the_reset ... ok
test tests::frames_come_up_in_order_under_batched_and_reordered_write_back ... ok
test tests::null_descriptor_padding_is_not_a_frame ... ok
test tests::ones_inside_the_grant_wait_do_not_leave_the_request_standing ... ok
test tests::a_request_registered_while_the_engine_holds_it_is_still_granted ... ok
test tests::a_ring_a_link_change_left_full_stays_the_parts ... ok
test tests::ones_on_the_way_out_do_not_leave_the_flag_standing ... ok
test tests::ones_through_the_whole_release_bound_write_nothing ... ok
test tests::quiesce_stops_what_a_previous_holder_left_running ... ok
test tests::refusals::a_descriptor_with_nothing_in_it_is_refused ... ok
test tests::refusals::a_descriptor_without_end_of_packet_is_refused ... ok
test tests::refusals::a_frame_the_hardware_reported_an_error_on_is_refused ... ok
test tests::refusals::more_bytes_than_the_buffer_holds_is_refused ... ok
test tests::the_82574s_own_phy_register_map_is_refused_by_name ... ok
test tests::the_driver_and_the_macs_statistics_count_the_same_frames ... ok
test tests::a_mac_that_keeps_its_phy_down_is_a_phy_no_cycle_reaches ... ok
test tests::the_head_register_does_run_ahead_of_memory ... ok
test tests::an_interconnect_in_transition_is_waited_out_and_never_written_over ... ok
test tests::the_link_going_away_and_coming_back_is_seen ... ok
test tests::the_oem_bits_carry_the_platforms_d0a_policy_and_nothing_else ... ok
test tests::host_wake_up_left_armed_is_cleared_behind_the_reset ... ok
test tests::every_ask_carries_the_parts_own_word_and_keeps_the_pace ... ok
test tests::an_mdi_transaction_that_never_reports_ready_is_refused_by_name ... ok
test tests::the_receiver_reporting_on_itself_is_counted ... ok
test tests::the_refusal_names_each_agent_standing_beside_the_flag ... ok
test tests::the_ownership_claim_leaves_the_rest_of_the_register_standing ... ok
test tests::the_refusal_names_the_last_reading_before_the_deadline ... ok
test tests::transmit_descriptors_are_reclaimed_under_batched_write_back ... ok
test tests::what_one_power_reading_decides ... ok
test tests::what_the_wake_and_the_full_reset_write ... ok
test tests::the_phy_is_brought_up_and_the_mac_sees_the_link_it_raises ... ok
test tests::the_oem_bits_restart_follows_the_control_restart_where_a_phy_reset_is_allowed ... ok
test tests::the_phy_is_found_at_whichever_address_answers_its_identifier ... ok
test tests::the_transmit_cause_is_armed_only_when_asked ... ok
test tests::the_pchs_mac_gets_its_three_registers_and_the_82574_none ... ok
test tests::the_power_step_is_what_lets_an_mdi_cycle_run_at_all ... ok
test tests::the_word_to_the_firmware_goes_with_the_driver ... ok
test tests::a_descriptors_fields_are_read_only_after_an_observe_that_follows_the_load_that_found_dd ... ok
test tests::no_two_accesses_to_the_arbitration_are_nearer_than_the_pace ... ok
test tests::a_tail_register_is_written_only_after_a_publish_that_follows_the_last_descriptor_store ... ok
test tests::the_advertised_abilities_are_what_the_link_resolves_to ... ok
test tests::the_interface_is_given_back_on_every_path_that_took_it ... ok
test tests::a_burst_past_the_ring_leaves_whole_on_the_room_it_is_told ... ok

test result: ok. 89 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.39s

     Running unittests src/lib.rs (target/debug/deps/toyos_inspect-6114aa0074bc8e2b)

running 25 tests
test dev::tests::the_header_is_read_at_the_kernels_offsets ... ok
test dev::tests::every_record_renders_to_paths_the_grammar_accepts ... ok
test invocation::tests::a_command_line_is_one_optional_selector_and_one_optional_flag ... ok
test dev::tests::a_path_two_records_render_to_is_refused_by_name ... ok
test kernel::tests::a_cpu_two_records_name_is_refused_by_its_path ... ok
test dev::tests::a_star_never_lines_up_the_parts_of_an_address ... ok
test kernel::tests::an_absent_counter_has_no_path ... ok
test kernel::tests::a_stale_cpu_says_so_and_an_unread_one_says_only_that ... ok
test path::tests::a_path_is_refused_by_name ... ok
test render::tests::a_line_is_path_equals_value ... ok
test render::tests::json_is_one_flat_object_with_typed_values ... ok
test selector::tests::a_malformed_selector_is_refused_by_name ... ok
test kernel::tests::every_counter_a_record_carries_is_a_path_the_grammar_accepts ... ok
test selector::tests::a_pathological_selector_is_answered_in_polynomial_time ... ok
test selector::tests::a_selector_reaches_only_the_owners_it_can_name ... ok
test tests::every_owner_root_is_one_valid_segment_and_distinct ... ok
test selector::tests::a_star_is_one_or_more_whole_segments ... ok
test wire::tests::a_malformed_answer_is_refused_by_name ... ok
test wire::tests::a_snapshot_round_trips ... ok
test wire::tests::an_answer_for_another_owner_is_refused ... ok
test wire::tests::an_owner_cannot_put_a_path_outside_the_grammar - should panic ... ok
test wire::tests::an_owner_cannot_put_a_second_line_in_a_value - should panic ... ok
test wire::tests::an_owner_cannot_answer_one_path_twice - should panic ... ok
test wire::tests::every_truncation_is_refused ... ok
test wire::tests::an_owner_that_answers_past_one_frame_is_told_so ... ok

test result: ok. 25 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_its-ab5bc29bd4070342)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/encodings.rs (target/debug/deps/encodings-b982a68bdda873ad)

running 21 tests
test a_devices_events_are_at_least_two_and_no_more_than_the_its_has_bits_for ... ok
test a_collection_is_one_the_its_holds_or_its_table_does ... ok
test a_redistributor_is_named_as_the_its_asks_by_number_or_by_address ... ok
test a_redistributor_that_reads_other_bits_back_has_no_lpis_of_the_layout ... ok
test a_table_is_sized_in_its_own_pages_for_the_entries_it_must_hold ... ok
test a_table_is_given_flat_valid_and_counted_in_its_own_pages ... ok
test a_table_register_says_what_it_backs_and_how_it_is_read ... ok
test an_event_is_one_its_devices_table_holds ... ok
test an_its_without_physical_lpis_is_refused ... ok
test an_lpi_is_an_intid_from_8192_that_the_tables_and_the_distributor_both_count ... ok
test an_lpi_layout_is_inside_the_distributors_intids ... ok
test an_lpis_configuration_is_its_priority_a_set_bit_and_its_enable ... ok
test an_offset_register_names_a_command_by_its_offset_field_alone ... ok
test each_command_holds_its_number_and_parameters_where_its_figure_has_them ... ok
test inv_and_discard_hold_a_device_and_an_event_and_nothing_else ... ok
test the_command_queue_is_counted_in_4_kib_pages_and_holds_one_command_fewer ... ok
test the_configuration_table_starts_at_intid_8192_and_the_pending_table_at_zero ... ok
test the_its_registers_sit_where_tables_12_33_and_12_34_have_them ... ok
test the_redistributors_base_registers_name_the_two_tables ... ok
test the_redistributors_lpi_registers_sit_where_table_12_27_has_them ... ok
test the_type_register_says_how_wide_an_its_is ... ok

test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_keymap-9ac63fb978d6c29b)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/compose.rs (target/debug/deps/compose-18b2ac75a40148e9)

running 17 tests
test altgr_layer ... ok
test iso_key ... ok
test modifiers_do_not_break_composition ... ok
test composition ... ok
test only_swiss_german_has_dead_keys ... ok
test german_is_unchanged_by_the_dead_key_work ... ok
test dead_keys_emit_nothing_when_pressed ... ok
test qwertz ... ok
test swiss_german_mac_is_untouched ... ok
test dead_then_other_dead ... ok
test reset_drops_pending ... ok
test dead_then_space_and_doubled ... ok
test unknown_layout_is_named_as_unknown ... ok
test dedicated_umlauts ... ok
test us_is_the_default_and_still_types_ascii ... ok
test fallthrough ... ok
test worst_case_fallthrough_fits_max_emit ... ok

test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/detect.rs (target/debug/deps/detect-059d564afe96252a)

running 9 tests
test candidates_narrow ... ok
test every_layout_is_reachable ... ok
test inconsistent_first_press_is_unrecognized ... ok
test legends_are_renderable ... ok
test inconsistent_second_press_is_unrecognized ... ok
test question_table_is_well_formed ... ok
test the_qwertz_three_take_two ... ok
test us_takes_one_press ... ok
test never_confident_without_evidence ... ok

test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/tables.rs (target/debug/deps/tables-57c151ce5ffa851f)

running 1 test
test golden ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/translate.rs (target/debug/deps/translate-2edee3436339a57d)

running 10 tests
test a_control_code_is_the_key_position_not_the_letter ... ok
test an_escape_sequence_does_not_depend_on_the_layout ... ok
test an_undefined_key_does_not_consume_a_pending_diacritic ... ok
test an_unknown_name_leaves_the_layout_alone ... ok
test changing_layout_drops_a_pending_diacritic ... ok
test arrows_and_page_keys_send_escape_sequences ... ok
test ctrl_makes_control_codes_of_the_letter_row ... ok
test the_default_layout_is_us ... ok
test two_translators_do_not_share_a_pending_diacritic ... ok
test the_swiss_german_gates_own_sequence ... ok

test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_libc_copies-85e35ae8604e5377)

running 67 tests
test alarm_requests::a_due_alarm_ends_the_process_unless_sigalrm_is_ignored ... ok
test alarm_requests::sigalrm_is_the_number_signal_h_gives_it ... ok
test alarm_requests::an_alarm_is_due_its_seconds_after_it_is_armed_and_zero_arms_none ... ok
test alarm_requests::the_seconds_left_round_up_and_end_at_zero ... ok
test descriptor_requests::each_descriptor_keeps_its_own_close_on_exec_mark ... ok
test descriptor_requests::fcntl_reads_an_int_argument_from_the_lower_half_of_its_register ... ok
test dladdr_symbols::an_image_holds_its_load_segment_and_starts_at_its_page ... ok
test dladdr_symbols::either_count_reaches_the_symbol_at_its_address ... ok
test errno_codes::every_code_libc_answers_with_is_errno_h_s ... ok
test exact_hex::tests::the_formats_corners_and_ties_round_to_their_bits ... ok
test fparts_differential::logb_is_the_host_libraries_and_a_zero_its_pole ... ok
test fparts_differential::lround_is_the_host_libraries_and_out_of_range_its_domain_error ... ok
test descriptor_requests::f_dupfd_meets_its_floor_holding_one_duplicate_at_most ... ok
test fparts_differential::round_is_the_host_libraries ... ok
test fparts_differential::modf_is_the_host_libraries ... ok
test internet_addresses::a_buffer_too_short_for_the_text_is_refused_as_the_host_refuses_it ... ok
test internet_addresses::a_number_past_32_bits_or_without_digits_is_no_address ... ok
test internet_addresses::a_number_with_a_zero_before_another_digit_is_no_dotted_quad ... ok
test internet_addresses::a_sockaddr_holds_its_port_and_address_in_network_order ... ok
test internet_addresses::an_address_is_truncated_to_the_callers_buffer_as_the_host_truncates_it ... ok
test internet_addresses::another_family_is_refused_as_the_host_refuses_it ... ok
test internet_addresses::an_address_is_written_as_the_host_writes_it ... ok
test link_requests::readlink_refuses_an_empty_buffer_and_one_no_ssize_t_counts ... ok
test listing_reader::a_name_fits_d_name_with_its_nul_or_is_refused ... ok
test listing_reader::an_answer_is_asked_again_until_it_fits ... ok
test memory_refusals::madvise_takes_linuxs_hints_and_refuses_its_discard ... ok
test memory_refusals::a_length_names_the_pages_it_reaches_into ... ok
test memory_refusals::mmap_refuses_what_the_kernel_cannot_map_and_nothing_else ... ok
test memory_refusals::posix_madvise_takes_its_five_and_only_them ... ok
test path_resolution::a_chain_of_max_links_is_followed_and_one_more_is_eloop ... ok
test path_resolution::a_file_passed_through_as_a_directory_is_enotdir ... ok
test path_resolution::a_name_that_is_not_there_is_enoent ... ok
test path_resolution::a_link_before_the_last_name_is_not_followed ... ok
test path_resolution::a_kernel_refusal_is_its_errno ... ok
test path_resolution::a_path_or_an_answer_past_path_max_is_enametoolong ... ok
test path_resolution::a_link_target_that_fills_the_buffer_is_enametoolong ... ok
test path_resolution::a_relative_link_is_read_against_its_mount_not_its_directory ... ok
test path_resolution::a_loop_of_links_is_eloop ... ok
test path_resolution::a_relative_path_is_read_against_the_working_directory ... ok
test path_resolution::dot_dot_is_read_off_the_text_before_any_name_is_looked_up ... ok
test path_resolution::path_max_is_limits_h_s ... ok
test path_resolution::the_last_names_links_are_followed_to_the_file ... ok
test poll_requests::a_descriptor_named_twice_is_watched_once_for_both_interests ... ok
test poll_requests::each_descriptor_named_once_has_its_own_watch ... ok
test signal_masks::each_how_changes_the_mask_as_posix_says ... ok
test signal_masks::sigaddset_adds_its_signal_alone ... ok
test signal_masks::the_full_set_holds_every_signal ... ok
test stream_ends::a_read_of_zero_is_the_peers_fin_only_while_the_send_pipe_is_read ... ok
test stream_ends::a_write_the_send_pipe_refuses_for_its_reader_is_a_reset ... ok
test socket_options::an_options_value_crosses_as_the_hosts_does ... ok
test strtonum_differential::the_grammar_s_corners_read_as_judged ... ok
test tests::a_disjoint_copy_agrees_either_way ... ok
test tests::the_square_roots_are_the_correctly_rounded_ones ... ok
test text_differential::every_signal_signal_h_numbers_has_glibcs_text ... ok
test text_differential::strnlen_is_the_host_libraries ... ok
test utf8_differential::a_refusal_starts_the_next_character_afresh ... ok
test tests::every_fill_agrees_with_fill ... ok
test long_double::strtold_widens_as_compiler_builtins_does ... ok
test prototypes::every_prototype_is_a_definition_and_every_definition_is_declared ... ok
test tests::every_copy_agrees_with_copy_within ... ok
test strtonum_differential::random_integers_read_as_the_host_s ... ok
test strtonum_differential::random_decimal_numbers_round_as_the_host_s ... ok
test utf8_differential::every_sequence_to_four_bytes_agrees_with_from_utf8 ... ok
test internet_addresses::a_dotted_quad_reads_as_the_host_reads_it ... ok
test exact_hex::tests::it_rounds_as_the_machine_does ... ok
test internet_addresses::numbers_and_dots_read_as_the_host_reads_them ... ok
test strtonum_differential::random_hexadecimal_numbers_round_as_ieee_754_rounds_them ... ok

test result: ok. 67 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.95s

     Running unittests src/lib.rs (target/debug/deps/toyos_logstream-994458e062230787)

running 19 tests
test tests::a_control_byte_is_written_and_never_passed ... ok

@Japabu

Japabu commented Oct 11, 2026

Copy link
Copy Markdown
Collaborator Author

cargo run -- --ci host on 148c3de, EXIT=0, part 4 of 10

test tests::a_kernel_record_and_its_continuation_are_no_programs ... ok
test tests::a_continuation_wears_its_kernel_records_severity_across_a_programs_line ... ok
test tests::a_head_names_severity_thread_and_process_and_reads_back ... ok
test tests::a_program_line_reads_back_as_it_was_written ... ok
test tests::a_records_time_is_read_inside_its_bracket_and_nowhere_else ... ok
test tests::a_reader_is_never_left_inside_a_line_even_by_an_eviction ... ok
test tests::a_line_past_the_bound_is_let_go_in_pieces_and_nothing_is_lost ... ok
test tests::a_program_lines_time_is_read_inside_its_head_and_nowhere_else ... ok
test tests::a_registration_round_trips_and_a_malformed_one_is_refused ... ok
test tests::a_tag_is_one_word_of_the_names_charset_and_no_other_sayers ... ok
test tests::every_sayers_head_reads_back_and_nothing_else_does ... ok
test tests::lines_are_whole_however_the_writes_split_them ... ok
test tests::a_screen_shows_the_consoles_line_from_either_form ... ok
test tests::no_text_makes_a_line_another_writers ... ok
test tests::a_reader_at_any_offset_gets_the_bytes_after_it_in_order ... ok
test tests::the_colour_is_the_heads_and_the_text_never_acts ... ok
test tests::the_kernels_first_record_is_found_after_whatever_came_before ... ok
test tests::what_is_let_go_is_whole_lines_and_is_counted ... ok

test result: ok. 19 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_manifest-02eb219a06fa1e45)

running 41 tests
test consent::tests::only_always_and_deny_are_kept ... ok
test consent::tests::a_hang_up_withdraws_the_launch_before_any_answer ... ok
test consent::tests::an_answer_is_judged_as_a_grant_the_image_could_give ... ok
test consent::tests::the_question_says_what_the_package_may_do_in_plain_words ... ok
test consent::tests::an_ask_and_a_reply_read_back_as_written_and_nothing_else_reads ... ok
test grants::tests::a_launch_starts_in_the_callers_directory_inside_the_folder_or_at_its_root ... ok
test grants::tests::a_launch_gets_the_answer_for_its_exact_binary_and_is_asked_only_at_the_screen ... ok
test grants::tests::a_folder_outside_the_home_or_of_the_apps_is_refused_by_name ... ok
test grants::tests::a_request_reads_back_as_written_and_nothing_else_reads ... ok
test grants::tests::a_revoke_takes_one_grant_and_says_whether_it_did ... ok
test launch::tests::a_sessions_launches_spend_its_one_share ... ok
test launch::tests::an_authority_reads_back_as_written ... ok
test grants::tests::a_store_render_cannot_have_written_is_refused ... ok
test launch::tests::a_caller_starts_what_its_row_lists_and_swap_and_update_only_in_a_login_session ... ok
test launch::tests::nothing_listed_is_nothing_started_and_apps_names_no_row ... ok
test launch::tests::what_encode_cannot_have_written_is_refused ... ok
test package::tests::a_field_that_is_not_one_is_refused_by_name ... ok
test package::tests::a_launch_path_names_one_package_or_none ... ok
test package::tests::a_manifest_cannot_name_a_binary_outside_its_own_directory ... ok
test package::tests::a_path_the_normalizer_would_change_is_not_canonical_and_classifies_as_nothing ... ok
test package::tests::a_listing_shows_only_what_the_supervisor_would_start_and_never_more_than_the_bound ... ok
test package::tests::what_the_installer_writes_is_what_the_supervisor_reads ... ok
test package::tests::what_a_shell_resolves_is_what_the_launcher_accepts ... ok
test tests::a_device_class_name_is_the_abi_s ... ok
test grants::tests::the_store_reads_back_as_written_at_every_bound ... ok
test tests::a_name_that_would_not_survive_the_round_trip_is_refused ... ok
test tests::a_package_granted_a_folder_sees_it_beside_its_own ... ok
test tests::a_package_row_is_connectors_and_nothing_else ... ok
test tests::a_package_named_after_a_declared_row_is_refused ... ok
test tests::a_package_s_home_is_its_own_folder ... ok
test tests::a_package_s_view_is_its_own_directory_read_only_and_its_own_folder ... ok
test tests::a_role_is_one_of_the_three_and_its_directories_are_fixed ... ok
test tests::a_row_that_serves_a_port_and_is_no_service_is_refused ... ok
test tests::a_service_s_home_is_its_state_and_every_other_row_s_the_session_s ... ok
test tests::a_syscap_set_always_carries_transfer_and_never_an_invented_right ... ok
test tests::every_declared_row_sees_the_whole_tree_read_write ... ok
test tests::logread_carries_both_halves_of_reading_a_stream_that_never_blocks ... ok
test tests::records_attach_to_the_program_above_them ... ok
test tests::the_process_roster_is_its_own_name_and_its_own_bit ... ok
test tests::the_same_manifest_renders_to_the_same_bytes ... ok
test tests::what_the_build_writes_is_what_the_supervisor_reads ... ok

test result: ok. 41 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_mdns-90219e01d32fcbf0)

running 36 tests
test tests::a_name_under_probe_is_answered_to_nobody ... ok
test tests::a_legacy_resolver_gets_its_id_its_question_and_a_short_ttl ... ok
test tests::a_query_for_this_name_is_answered_to_the_group ... ok
test tests::a_links_return_under_a_lost_name_probes_at_once_in_place_of_the_retry ... ok
test tests::a_name_is_matched_whatever_its_case_and_any_asks_for_it_too ... ok
test tests::a_question_spelled_by_a_pointer_is_read ... ok
test tests::a_host_name_is_one_label ... ok
test tests::a_retry_no_host_answers_claims_and_announces_the_name ... ok
test tests::a_retry_the_holder_answers_loses_again_and_the_next_is_a_minute_after_it ... ok
test tests::a_question_that_is_not_this_hosts_is_not_answered ... ok
test tests::a_query_from_off_the_link_is_not_answered ... ok
test tests::a_malformed_message_is_no_question ... ok
test tests::an_address_after_none_is_probed_for_and_a_new_one_under_a_held_name_is_announced ... ok
test tests::a_flapping_link_restarts_the_probe_and_nothing_is_announced_until_one_runs_whole ... ok
test tests::rfc6762_6_a_probe_for_a_held_name_is_answered_at_once_by_unicast_or_250_ms_after_the_records_last_multicast ... ok
test tests::rfc6762_8_1_a_conflicting_response_received_as_the_last_250_ms_end_takes_the_name ... ok
test tests::a_lost_name_is_probed_for_again_a_minute_after_the_loss_and_not_before ... ok
test tests::no_cut_of_a_conflicting_response_or_of_a_winning_probe_is_one ... ok
test tests::rfc6762_8_1_a_probe_asks_any_for_the_name_with_the_unicast_bit_and_proposes_its_record_in_the_authority_section ... ok
test tests::rfc6762_8_1_nothing_heard_before_the_first_probe_is_sent_is_a_conflict ... ok
test tests::rfc6762_8_1_a_probe_attempt_within_ten_seconds_of_a_conflict_waits_five_seconds_first ... ok
test tests::rfc6762_8_1_three_probes_250_ms_apart_follow_the_drawn_delay_and_the_name_is_announced_250_ms_after_the_third ... ok
test tests::rfc6762_8_2_the_lexicographically_later_data_wins_a_simultaneous_probe_and_the_earlier_waits_a_second ... ok
test tests::rfc6762_8_a_link_that_returns_is_probed_on_before_the_name_is_announced_or_answered_with_again ... ok
test tests::rfc6762_8_2_a_probe_is_compared_by_class_then_type_then_data_and_a_longer_list_wins ... ok
test tests::rfc6762_9_a_held_name_another_host_answers_for_under_the_new_probe_is_lost ... ok
test tests::the_group_address_maps_to_its_ethernet_address ... ok
test tests::the_record_is_multicast_at_most_once_a_second_and_a_query_inside_it_waits ... ok
test tests::the_unicast_bit_sends_the_answer_back_to_the_asker ... ok
test tests::rfc6762_9_a_conflicting_response_resets_a_held_name_to_probing_and_nothing_else_does ... ok
test tests::rfc6762_8_1_a_conflicting_response_under_the_probe_takes_the_name_and_nothing_else_does ... ok
test tests::forged_probes_that_win_every_tiebreak_cost_one_probe_in_five_seconds_and_the_name_is_claimed_when_they_stop ... ok
test tests::a_storm_of_forged_answers_costs_one_probe_and_the_name ... ok
test tests::forged_probes_that_win_every_tiebreak_at_a_lost_name_cost_one_probe_a_minute ... ok
test tests::forged_answers_that_spare_every_probe_cost_one_probing_in_five_seconds_and_the_name_is_held_when_they_stop ... ok
test tests::a_storm_of_forged_conflicts_at_a_lost_name_costs_one_probe_a_minute ... ok

test result: ok. 36 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

     Running unittests src/lib.rs (target/debug/deps/toyos_metal-60026d71d035c0a4)

running 75 tests
test devices::tests::a_needle_that_only_appears_in_a_comment_is_not_found ... ok
test devices::tests::the_shutdowns_own_account_is_read_out_of_the_loaders_file ... ok
test testargs::tests::a_boot_word_names_a_metal_boot_and_nothing_else ... ok
test testargs::tests::a_flag_written_twice_is_refused_by_name ... ok
test testargs::tests::a_flags_value_is_not_the_filter ... ok
test testargs::tests::a_flag_left_without_its_value_is_refused_by_name ... ok
test testargs::tests::a_deleted_flag_is_refused_rather_than_becoming_the_filter ... ok
test testargs::tests::a_readback_directory_alone_selects_no_tier ... ok
test testargs::tests::a_readback_flag_with_no_directory_never_reaches_the_metal_driver ... ok
test testargs::tests::a_metal_host_is_metals_and_is_checked_before_any_build ... ok
test testargs::tests::an_inline_value_on_a_flag_that_has_none_is_refused ... ok
test testargs::tests::an_unknown_flag_is_refused_before_metal_decides_a_mode ... ok
test testargs::tests::every_word_that_is_nobodys_value_is_a_filter ... ok
test testargs::tests::metal_and_list_never_drives ... ok
test testargs::tests::metal_list_beside_a_readback_directory_is_refused ... ok
test testargs::tests::metal_refuses_a_filter_that_is_a_flags_name_or_empty ... ok
test testargs::tests::metal_refuses_the_flags_it_reads_nothing_of_by_name ... ok
test testargs::tests::metal_resolves_to_a_mode_that_reaches_the_machine_only_when_asked ... ok
test image::tests::a_config_with_no_runner_is_refused_by_name ... ok
test testargs::tests::the_documented_command_lines_parse ... ok
test testargs::tests::the_filter_is_the_word_that_is_nobodys_value ... ok
test tests::a_boot_entry_is_matched_on_the_partition_its_path_names ... ok
test tests::a_failed_boot_and_a_loop_that_could_not_run_are_different_answers ... ok
test tests::a_command_line_that_names_no_image_flashes_none ... ok
test tests::a_create_that_moved_the_boot_order_is_refused ... ok
test tests::a_boot_entry_the_firmware_did_not_name_cannot_be_filled_in ... ok
test tests::a_pass_that_reported_and_booted_nothing_is_named_as_that ... ok
test tests::a_host_is_a_user_and_a_machine_that_ssh_reads_as_no_flag ... ok
test tests::a_refusal_is_read_back_off_the_drivers_stderr ... ok
test tests::a_sudoers_word_escapes_what_sudoers_reads ... ok
test tests::an_arm_with_no_ruling_never_reaches_the_stick ... ok
test tests::an_account_name_that_would_widen_the_rule_is_refused ... ok
test tests::an_image_armed_to_stop_itself_owes_a_record_and_no_reboot ... ok
test tests::an_image_with_no_bound_on_its_own_boot_is_refused ... ok
test tests::dd_is_believed_only_where_it_states_a_count ... ok
test devices::tests::the_kernel_writes_the_quiesce_lines_the_host_reads ... ok
test tests::every_arm_that_stops_this_machine_is_cleared_and_judged_as_one ... ok
test tests::either_bounds_record_is_a_wedged_boots_pass ... ok
test tests::installing_the_rule_is_not_also_a_boot ... ok
test tests::one_table_feeds_the_rule_and_the_argv ... ok
test tests::the_bound_the_gate_demands_is_a_bound_the_gate_clears ... ok
test tests::the_arguments_name_the_t14_by_default ... ok
test image::tests::nothing_the_config_declared_is_dropped ... ok
test tests::the_deadlines_lateness_is_counted_from_its_arm ... ok
test tests::the_foreign_record_arm_reaches_its_judge_through_the_hang_it_stages ... ok
test tests::every_ruling_names_a_parameter_the_kernel_declares ... ok
test tests::a_capture_says_the_disk_it_recorded_and_every_run_will_write ... ok
test tests::the_host_clock_crosses_in_the_boot_file ... ok
test tests::the_lid_policy_is_systemds_effective_one ... ok
test tests::the_loops_verdict_crosses_in_the_readback ... ok
test tests::the_machine_crosses_in_the_boot_file ... ok
test tests::the_mount_and_the_staged_rule_are_under_the_home_the_machine_named ... ok
test tests::the_outside_judges_read_can_write_nothing ... ok
test tests::the_phases_cross_in_the_boot_file ... ok
test tests::the_ssh_line_carries_the_key_and_nothing_interactive ... ok
test tests::the_wait_outlasts_every_watchdog_a_boot_runs_under ... ok
test tests::the_rule_is_the_command_table_rendered ... ok
test timings::tests::a_failing_owners_reading_is_judged_and_not_recorded ... ok
test timings::tests::a_known_machine_within_its_record_passes ... ok
test timings::tests::a_known_machine_outside_its_record_fails_and_keeps_its_record ... ok
test tests::a_machine_is_recorded_once_and_then_checked_against_its_record ... ok
test timings::tests::a_machine_is_three_non_empty_lines ... ok
test tests::the_identity_is_the_recorded_stick_or_it_is_refused ... ok
test timings::tests::a_machine_recorded_with_no_number_is_recorded_and_not_judged ... ok
test image::tests::every_derived_config_ends_its_own_boot ... ok
test timings::tests::a_new_name_on_a_known_machine_is_recorded_and_not_failed ... ok
test timings::tests::another_bios_fails_naming_both_and_records_nothing ... ok
test timings::tests::a_recorded_name_nothing_measured_is_named ... ok
test timings::tests::a_name_recorded_twice_is_refused ... ok
test timings::tests::a_record_survives_the_file_it_is_written_to ... ok
test timings::tests::two_machines_sharing_a_file_name_are_refused ... ok
test tests::a_readback_directory_holds_nothing_the_last_run_left ... ok
test tests::the_readback_carries_the_verdict_the_loop_returns ... ok
test tests::an_image_admits_only_the_table_the_installed_rule_names ... ok
test tests::coming_back_is_ssh_answering_and_not_its_port ... ok

test result: ok. 75 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.00s

     Running unittests src/main.rs (target/debug/deps/toyos_metal-cb47848159931830)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_microcode-be3af64905cd2302)

running 16 tests
test tests::a_damaged_extended_table_is_refused ... ok
test tests::a_file_cut_short_is_refused ... ok
test tests::a_header_or_loader_version_other_than_1_is_refused ... ok
test tests::a_revision_is_signed ... ok
test tests::a_size_zero_off_its_granule_or_inside_out_is_refused ... ok
test tests::an_empty_file_is_refused ... ok
test tests::a_t14_below_it_loads_its_data_which_follows_the_header ... ok
test tests::an_extended_signature_names_a_cpu_the_header_does_not ... ok
test tests::a_malformed_update_after_a_good_one_refuses_the_file ... ok
test tests::another_platform_or_stepping_is_not_named ... ok
test tests::any_multiple_of_1024_is_a_total_size ... ok
test tests::the_msrs_are_read_where_the_sdm_puts_them ... ok
test tests::the_t14_runs_intels_newest_update_for_its_cpu ... ok
test tests::a_flipped_bit_anywhere_in_header_or_data_is_refused ... ok
test tests::the_newest_update_naming_the_cpu_is_chosen_wherever_it_sits ... ok
test tests::an_extended_signature_in_intels_file_names_its_cpu ... ok

test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_mixer-3f780b09cb158492)

running 55 tests
test channel::tests::a_mono_client_is_the_same_sample_in_both_channels ... ok
test channel::tests::an_append_lands_after_what_is_already_there ... ok
test channel::tests::planar_and_interleaved_convert_alike ... ok
test channel::tests::the_downmix_averages_rather_than_sums ... ok
test channel::tests::the_interleave_reads_only_the_frames_produced ... ok
test corpus::tests::the_crate_agrees_with_the_captured_shell ... ok
test dll::tests::a_batch_is_measured_against_its_last_grid_point ... ok
test dll::tests::a_grid_that_runs_fast_is_followed ... ok
test dll::tests::a_reset_forgets_the_grid_and_the_drift ... ok
test dll::tests::a_wild_timestamp_cannot_collapse_or_run_away_the_period ... ok
test dll::tests::the_first_record_anchors_and_decides_nothing ... ok
test channel::tests::an_append_past_the_reserved_capacity_is_refused - should panic ... ok
test format::tests::a_half_rounds_away_from_zero ... ok
test format::tests::a_period_quantizes_as_its_samples_do ... ok
test format::tests::full_scale_clamps_instead_of_wrapping ... ok
test format::tests::passthrough_is_bit_exact_for_every_i16 ... ok
test format::tests::the_generator_cannot_be_seeded_into_silence ... ok
test gain::tests::a_fade_stays_between_its_endpoints ... ok
test gain::tests::a_ramp_lands_exactly_on_its_target ... ok
test gain::tests::a_ramp_to_its_own_level_is_a_ramp_to_nowhere ... ok
test format::tests::the_draw_stays_inside_half_an_lsb ... ok
test mix::tests::clients_sum_and_the_bus_is_not_clamped ... ok
test mix::tests::the_composite_is_the_conversion_and_the_sum ... ok
test shape::tests::a_client_at_the_device_s_own_rate_gets_the_device_s_period ... ok
test shape::tests::a_pipeline_with_nothing_to_reserve_disables_deferral ... ok
test shape::tests::a_rate_too_low_for_the_ramp_or_the_grid_is_refused ... ok
test shape::tests::a_shape_the_mixer_cannot_render_is_refused_and_nothing_divides_by_zero ... ok
test shape::tests::no_accepted_rate_overruns_the_shipped_scratch ... ok
test corpus::tests::the_corpus_is_reproduced_bit_for_bit ... ok
test corpus::tests::a_one_lsb_change_anywhere_moves_the_transcript ... ok
test gain::tests::a_retarget_starts_from_the_level_reached ... ok
test gain::tests::a_settled_ramp_holds_its_level ... ok
test gain::tests::a_volume_that_is_not_a_number_is_refused_and_the_rest_is_clamped ... ok
test gain::tests::advancing_past_the_end_settles ... ok
test mix::tests::a_client_at_unity_is_added_unscaled ... ok
test mix::tests::a_period_of_the_wrong_width_is_refused - should panic ... ok
test mix::tests::a_silent_client_leaves_the_bus_untouched ... ok
test mix::tests::both_channels_of_a_frame_get_one_gain ... ok
test format::tests::the_dither_is_a_triangular_distribution_and_not_merely_shaped_like_one ... ok
test shape::tests::the_scratch_covers_every_rate_a_client_may_ask_for ... ok
test shape::tests::the_shipped_device_shape_is_served ... ok
test shape::tests::the_shipped_grid_and_ramp ... ok
test shape::tests::the_shipped_pipeline_keeps_five_periods_in_reserve ... ok
test stats::tests::a_late_wake_is_one_past_a_whole_period ... ok
test stats::tests::a_later_shorter_run_does_not_lower_the_worst ... ok
test stats::tests::a_software_grid_blames_only_itself ... ok
test stats::tests::empty_wakes_belong_to_the_wake_that_ends_them ... ok
test stats::tests::one_covered_period_ends_a_run ... ok
test stats::tests::only_the_wake_nothing_asked_for_is_named ... ok
test stats::tests::silence_outside_a_stream_costs_nothing ... ok
test stats::tests::the_halves_come_from_one_wake ... ok
test stats::tests::the_halves_sum_to_the_whole ... ok
test stats::tests::the_run_length_separates_a_gap_from_scattered_misses ... ok
test format::tests::a_signal_under_one_lsb_survives_the_quantizer ... ok
test format::tests::the_rounding_is_std_s_over_every_float_there_is ... ok

test result: ok. 55 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.52s

     Running unittests src/lib.rs (target/debug/deps/toyos_net_ip-a438d5dcfa426321)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/acd.rs (target/debug/deps/acd-7030ab3e4791b9a8)

running 18 tests
test s_ip_acd_005_a_simultaneous_prober ... ok
test s_ip_acd_004_an_announcement_of_our_candidate ... ok
test s_ip_acd_002_a_tentative_address_is_no_source ... ok
test s_ip_acd_007_the_conflict_window_ends_with_announce_wait ... ok
test s_ip_acd_006_our_own_probe_reflected ... ok
test s_ip_acd_001_the_ruled_schedule ... ok
test s_ip_acd_013_an_announcing_address_answers_probes ... ok
test s_ip_acd_010_one_defence ... ok
test s_ip_acd_011_a_second_conflict_inside_the_interval_loses ... ok
test s_ip_acd_003_an_answer_to_our_probe ... ok
test s_ip_acd_012_a_second_conflict_after_the_interval_is_defended ... ok
test s_ip_acd_009_ten_quiet_minutes_lift_the_limit ... ok
test s_ip_acd_008_ten_conflicts_rate_limit_new_candidates ... ok
test s_ip_acd_015_link_down_abandons_probing ... ok
test s_ip_acd_014_a_renewal_is_not_probed ... ok
test s_ip_acd_016_link_up_announces_without_probing ... ok
test s_ip_acd_017_detection_starts_at_the_first_announcement ... ok
test s_ip_acd_018_a_full_control_queue_holds_probes_and_announcements ... ok

test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/addr.rs (target/debug/deps/addr-ac02b102beb5b888)

running 38 tests
test rfc_3927_2_6_2_a_link_local_source_still_sends_by_the_router_or_nowhere ... ok
test rfc_3927_a_link_local_address_is_no_gateway_of_a_routable_interface ... ok
test rfc_3927_2_6_2_a_datagram_to_a_link_local_host_is_resolved_and_sent_to_it ... ok
test rfc_3927_2_6_2_a_link_local_destination_is_on_the_link ... ok
test rfc_3927_2_6_2_the_edges_of_the_link_local_prefix_are_no_destination ... ok
test s_ip_addr_002_prefix_lengths_0_and_33 ... ok
test s_ip_addr_005_one_address_one_interface ... ok
test s_ip_addr_004_network_and_broadcast_forms ... ok
test s_ip_addr_008_slash_31_and_32 ... ok
test s_ip_addr_001_an_added_address_becomes_a_connected_route ... ok
test s_ip_addr_006_eight_addresses ... ok
test s_ip_addr_003_not_unicast ... ok
test rfc_3927_the_edges_of_the_link_local_prefix_are_no_source ... ok
test s_ip_addr_009_the_strong_model ... ok
test s_ip_addr_010_limited_broadcast_needs_no_address ... ok
test s_ip_addr_007_what_is_for_us ... ok
test s_ip_addr_012_no_classful_broadcast ... ok
test s_ip_addr_011_a_tentative_address_is_not_ours_yet ... ok
test s_ip_addr_014_removal_withdraws_route_and_gateway ... ok
test s_ip_rte_001_a_connected_destination ... ok
test s_ip_addr_013_announcing_is_usable ... ok
test s_ip_rte_002_the_default_gateway ... ok
test s_ip_rte_003_no_gateway ... ok
test s_ip_rte_004_longest_prefix ... ok
test s_ip_rte_005_gateways_are_on_link_unicast_hosts ... ok
test s_ip_rte_006_invalid_and_local_destinations ... ok
test s_ip_rte_007_limited_broadcast_needs_one_interface ... ok
test s_ip_rte_008_multicast_ttl_is_the_callers ... ok
test s_ip_rte_009_subnet_broadcast_needs_no_arp ... ok
test s_ip_rte_010_the_source_of_the_next_hops_prefix ... ok
test s_ip_rte_011_a_bound_source_picks_its_interface ... ok
test s_ip_rte_012_only_the_acquiring_source_is_unspecified ... ok
test s_ip_rte_013_a_failed_gateway_is_passed_over ... ok
test s_ip_rte_014_with_no_good_gateway ... ok
test s_ip_rte_015_what_moves_the_generation ... ok
test s_ip_rte_016_no_forwarding ... ok
test s_ip_rte_017_lookups_send_nothing ... ok
test s_udp_us_021_ip_no_link_broadcast_without_the_datagrams_permission ... ok

test result: ok. 38 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/clk.rs (target/debug/deps/clk-4377c495ccd5ee7a)

running 10 tests
test s_ip_clk_001_a_send_arms_the_retransmission ... ok
test s_ip_clk_002_nothing_fires_before_its_deadline ... ok
test s_ip_clk_004_a_jump_fires_a_reachable_entry_once ... ok
test s_ip_clk_005_a_jump_owes_one_request ... ok
test s_ip_clk_007_a_regressed_clock_is_the_latest ... ok
test s_ip_clk_008_announce_wait_counts_from_the_hand_off ... ok
test s_ip_clk_003_firing_more_often_changes_nothing ... ok
test s_ip_clk_010_a_deadline_saturates ... ok
test s_ip_clk_009_a_jump_refills_a_bucket_to_its_cap ... ok
test s_ip_clk_006_prop_one_secret_one_run ... ok

test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/icmp.rs (target/debug/deps/icmp-b8161da467f10870)

running 54 tests
test s_icmp_026_a_timestamp_reply_is_unsupported ... ok
test s_icmp_032_b_answers_a ... ok
test s_icmp_023_a_redirect_is_refused ... ok
test an_error_whose_next_hop_became_a_broadcast_is_refused_and_counted ... ok
test s_icmp_024_a_timestamp_request_is_refused ... ok
test s_icmp_036_a_quote_from_someone_else ... ok
test s_icmp_034_no_answer_to_a_group ... ok
test s_icmp_037_a_quote_of_a_later_fragment ... ok
test s_icmp_035_record_route_is_not_returned ... ok
test s_icmp_033_all_the_data_comes_back ... ok
test s_icmp_038_each_error_goes_to_its_transport ... ok
test s_icmp_039_the_generated_port_unreachable ... ok
test s_icmp_040_576_bytes_at_most ... ok
test s_icmp_041_the_quote_is_as_received ... ok
test s_icmp_042_an_error_for_no_socket_is_not_answered ... ok
test s_icmp_043_no_error_about_a_broadcast ... ok
test s_icmp_044_no_error_about_a_link_broadcast ... ok
test s_icmp_045_no_error_about_a_fragment ... ok
test s_icmp_046_no_error_to_a_source_that_is_no_host ... ok
test s_ip_echo_001_the_mirror_of_the_request ... ok
test s_ip_echo_002_dscp_copied_ecn_cleared ... ok
test s_ip_echo_003_an_off_link_requester_is_answered_through_the_gateway ... ok
test s_ip_echo_004_the_reply_carries_no_options ... ok
test s_ip_echo_006_an_echo_reply_is_counted ... ok
test s_ip_echo_007_a_tentative_address_does_not_answer ... ok
test s_ip_echo_005_sixteen_replies_wait ... ok
test s_ip_icd_001_a_port_unreachable_for_udp ... ok
test s_ip_echo_008_echo_is_not_rate_limited ... ok
test s_ip_icd_002_fragmentation_needed_for_tcp ... ok
test s_ip_icd_004_a_quote_from_a_tentative_address ... ok
test s_ip_icd_003_an_error_to_a_broadcast ... ok
test s_ip_icd_005_a_quote_of_icmp ... ok
test s_ip_icd_007_time_exceeded ... ok
test s_ip_icd_006_quotes_of_igmp_and_others ... ok
test s_ip_icd_009_an_unassigned_code ... ok
test s_ip_icd_008_parameter_problem ... ok
test s_ip_icd_010_a_redirect_moves_no_route ... ok
test s_ip_icd_012_a_resolution_failure_is_local ... ok
test s_ip_icg_001_protocol_unreachable ... ok
test s_ip_icg_002_port_unreachable ... ok
test s_ip_icg_004_refusals_are_silent ... ok
test s_ip_icg_003_suppression_takes_no_token ... ok
test s_ip_icd_011_prop_the_shared_classification ... ok
test s_ip_icg_007_short_datagrams_are_quoted_whole ... ok
test s_ip_icg_008_a_malformed_router_alert_is_dropped_silently ... ok
test s_ip_icg_006_an_unknown_protocol_to_a_broadcast ... ok
test s_ip_rl_001_ten_then_limited ... ok
test s_ip_rl_003_another_destination_has_its_own_bucket ... ok
test s_ip_rl_002_one_token_per_100_ms ... ok
test s_ip_rl_006_prop_colliding_destinations_share_a_bucket ... ok
test s_ip_rl_007_suppressed_requests_spend_nothing ... ok
test s_ip_icg_005_prop_only_echo_replies_and_unreachables ... ok
test s_ip_rl_005_the_global_bucket_refills_at_100_a_second ... ok
test s_ip_rl_004_the_global_burst_is_drawn ... ok

test result: ok. 54 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/igmp.rs (target/debug/deps/igmp-7bd5d69687443504)

running 35 tests
test s_igmp_029_joining_all_hosts_sends_nothing ... ok
test s_igmp_023_no_router_alert_is_refused ... ok
test s_igmp_025_a_general_query_to_our_address ... ok
test s_ip_frg_001_a_fragment_is_refused_and_logged ... ok
test s_igmp_024_ttl_2_is_accepted ... ok
test s_ip_igm_001_a_join_is_reported_twice ... ok
test s_ip_igm_002_joins_before_and_after_the_first_address ... ok
test s_ip_igm_004_a_leave_replaces_the_join ... ok
test s_ip_igm_003_a_leave_is_reported_twice ... ok
test s_ip_igm_005_membership_is_counted ... ok
test s_ip_igm_006_all_hosts_is_never_reported ... ok
test s_ip_igm_007_a_general_query_is_answered_later ... ok
test s_ip_igm_009_a_group_query ... ok
test s_ip_igm_008_a_sooner_general_response_suffices ... ok
test s_ip_igm_010_a_query_for_a_group_not_joined ... ok
test s_ip_igm_011_a_group_and_source_query ... ok
test s_ip_igm_012_too_many_sources_make_a_group_response ... ok
test s_ip_igm_014_general_query_destinations ... ok
test s_ip_igm_015_a_group_query_to_another_group ... ok
test s_ip_igm_013_queries_need_router_alert ... ok
test s_ip_igm_016_the_robustness_is_learned ... ok
test s_ip_igm_017_a_v2_querier ... ok
test s_ip_igm_018_a_join_in_v2_mode ... ok
test s_ip_igm_019_another_hosts_report_suppresses_ours ... ok
test s_ip_igm_020_a_v1_query_is_refused ... ok
test s_ip_igm_021_v2_mode_ends ... ok
test s_ip_igm_022_a_v2_group_query_in_v3_mode ... ok
test s_ip_igm_023_the_last_reporter_leaves ... ok
test s_ip_igm_024_other_hosts_reports_are_ignored_in_v3 ... ok
test s_ip_igm_025_thirty_two_groups ... ok
test s_ip_igm_026_link_flap ... ok
test s_ip_igm_027_one_report_for_every_group ... ok
test s_ip_igm_028_the_join_byte_for_byte ... ok
test s_ip_mod_001_one_line_per_rule_per_10_s ... ok
test s_ip_mod_002_ordinary_refusals_are_not_logged ... ok

test result: ok. 35 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/io.rs (target/debug/deps/io-48986b1d6b8ac585)

running 52 tests
test s_eth_014_a_priority_tag_is_untagged ... ok
test s_eth_011_ipv6 ... ok
test s_eth_010_type_0600_is_unknown ... ok
test s_eth_012_lldp ... ok
test s_eth_022_another_hosts_mac ... ok
test s_eth_019_9100_is_not_a_tag ... ok
test s_eth_023_group_macs_follow_membership ... ok
test s_eth_024_vlans_are_refused ... ok
test s_eth_032_broadcast_destinations_go_to_the_broadcast_mac ... ok
test s_eth_025_our_own_source ... ok
test s_eth_033_a_unicast_destination_is_never_link_broadcast ... ok
test s_ip_021_first_fragment ... ok
test s_ip_002_minimal_datagram_is_an_unknown_protocol ... ok
test s_ip_020_df_and_mf_is_a_fragment ... ok
test s_ip_022_last_fragment ... ok
test s_ip_023_largest_offset ... ok
test s_ip_025_ttl_zero_is_delivered ... ok
test s_ip_026_ttl_one_is_delivered ... ok
test s_ip_029_other_protocols ... ok
test s_ip_035_the_mtu_bounds_a_send ... ok
test s_ip_in_001_frame_before_destination ... ok
test s_ip_in_002_unicast_in_a_group_frame ... ok
test s_ip_in_003_a_group_destination_in_our_frame ... ok
test s_ip_in_004_martian_destinations ... ok
test s_ip_in_005_invalid_sources ... ok
test s_ip_in_006_destination_before_source ... ok
test s_ip_in_007_our_own_source_on_any_interface ... ok
test s_ip_in_008_fragments_before_options ... ok
test s_ip_in_009_what_a_transport_is_handed ... ok
test s_ip_out_002_ttl ... ok
test s_ip_out_003_tos ... ok
test s_ip_out_004_the_mtu ... ok
test s_ip_out_005_link_destinations ... ok
test s_ip_out_006_the_control_queue_is_bounded ... ok
test s_ipo_015_stream_id_is_delivered ... ok
test s_ipo_016_security_option_is_delivered ... ok
test s_ip_out_001_prop_every_datagram_is_atomic ... ok
test s_ip_out_008_released_datagrams_wait_at_the_head_of_their_queue ... ok
test s_ipp_001_loose_source_route ... ok
test s_ipp_002_strict_source_route ... ok
test s_ipp_004_our_address_and_another ... ok
test s_ipp_003_record_route_is_ignored ... ok
test s_ipp_005_broadcast_forms ... ok
test s_ipp_006_joined_groups ... ok
test s_ipp_007_invalid_sources ... ok
test s_ipp_009_our_own_source ... ok
test s_ipp_008_unspecified_only_for_igmp ... ok
test s_ipp_011_unicast_in_a_broadcast_frame ... ok
test s_ipp_010_loopback_destination ... ok
test s_ipp_012_an_unknown_protocol_to_us ... ok
test s_ipp_013_an_unknown_protocol_to_all ... ok
test s_udp_022_the_mtu_refuses_1473_bytes ... ok

test result: ok. 52 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/nbr.rs (target/debug/deps/nbr-b7960ddbdb5ef635)

running 23 tests
test s_arp_016_the_sender_mac_is_what_is_learned ... ok
test s_ip_nbr_001_our_own_mac_as_sender ... ok
test s_ip_nbr_002_prefix_edges_are_no_senders ... ok
test rfc_3927_2_6_2_a_link_local_sender_is_a_neighbour ... ok
test s_arp_017_a_group_sender_mac ... ok
test s_arp_018_invalid_sender_addresses ... ok
test s_ip_nbr_003_a_request_for_us ... ok
test s_ip_nbr_004_a_request_for_another_host ... ok
test s_ip_nbr_005_a_known_host_asking_for_another ... ok
test rfc_3927_the_edges_of_the_link_local_prefix_are_no_senders ... ok
test s_ip_nbr_006_an_unsolicited_reply ... ok
test s_ip_nbr_007_an_unknown_router_moving ... ok
test s_ip_nbr_009_locktime ... ok
test s_ip_nbr_010_a_second_answer_is_locked_out ... ok
test s_ip_nbr_012_an_off_link_sender_is_answered_not_cached ... ok
test s_ip_nbr_011_an_unsolicited_same_mac_extends_nothing ... ok
test s_ip_nbr_013_a_probe_is_answered_and_not_cached ... ok
test s_ip_nbr_014_a_reply_for_another_target_asserts ... ok
test s_ip_nbr_015_a_broadcast_reply_is_still_solicited ... ok
test s_ip_nbr_016_the_strong_model_for_arp ... ok
test s_ip_nbr_017_a_tentative_address_is_not_answered ... ok
test s_ip_nbr_008_a_known_router_moving ... ok
test s_ip_nbr_018_fifty_mac_changes_one_line ... ok

test result: ok. 23 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/nud.rs (target/debug/deps/nud-1c483f6d63c85c6a)

running 35 tests
test s_ip_nud_009_advice_ends_delay ... ok
test s_ip_nud_008_delay_probe_unreachable ... ok
test s_ip_nud_010_a_reply_confirms_probe ... ok
test s_ip_nud_001_resolution_releases_the_datagram ... ok
test s_ip_nud_002_three_requests_then_failed ... ok
test s_ip_nud_003_release_keeps_arrival_order ... ok
test s_ip_nud_007_positive_advice_moves_the_confirmation ... ok
test s_ip_nud_004_overflow_drops_the_oldest ... ok
test rfc_4861_7_2_2_a_silent_next_hop_holds_up_no_other ... ok
test s_ip_nud_006_reachable_goes_stale_silently ... ok
test s_ip_nud_005_the_interface_holds_at_most_64 ... ok
test s_ip_nud_012_unreachable_is_quiet_without_traffic ... ok
test s_ip_nud_013_a_moved_router_answers ... ok
test s_ip_nud_014_failed_is_held_down ... ok
test s_ip_nud_015_an_assertion_revives_failed ... ok
test s_ip_nud_016_requests_are_spaced ... ok
test s_ip_nud_017_negative_advice_probes ... ok
test s_ip_nud_018_negative_advice_leaves_probe_incomplete_and_failed ... ok
test s_ip_nud_020_advice_lands_on_the_gateway ... ok
test s_ip_nud_019_positive_advice_needs_a_mac ... ok
test s_ip_nud_021_stale_is_deleted_when_idle ... ok
test s_ip_nud_023_link_down_drops_the_table ... ok
test s_ip_nud_011_unreachable_backs_off_while_traffic_flows ... ok
test s_ip_nud_024_requests_speak_from_the_prompting_source ... ok
test s_ip_nud_025_a_flow_waits_outside ... ok
test s_ip_nud_026_a_flow_moves_stale_to_delay ... ok
test s_ip_nud_030_an_entry_whose_lifetime_runs_stays_as_it_drains ... ok
test s_ip_nud_030_released_datagrams_keep_their_entry ... ok
test s_ip_nud_027_prop_reachable_time_is_drawn_every_two_hours ... ok
test s_ip_nud_031_a_request_queued_after_the_lifetime_is_not_idle ... ok
test s_ip_nud_031_a_request_queued_before_the_lifetime_is_not_idle ... ok
test s_ip_nud_031_a_request_queued_at_the_backoff_deadline_is_not_idle ... ok
test s_ip_nud_022_a_full_table_evicts_in_order ... ok
test s_ip_nud_029_released_datagrams_are_evicted_last ... ok
test s_ip_nud_022_a_send_a_full_table_refused_is_told_of_room ... ok

test result: ok. 35 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_net_node-2b95146f38a67713)

running 1 test
test lease::tests::the_log_lines_are_taken_and_the_report_before_them_keeps_its_turn ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/datagram.rs (target/debug/deps/datagram-8251e62d26a34e85)

running 9 tests
test a_broadcast_needs_its_permission ... ok
test a_refusal_is_logged_by_the_call_that_met_it ... ok
test a_datagram_for_a_bound_port_is_handed_over_with_where_it_came_from ... ok
test a_datagram_leaves_as_the_call_named_it ... ok
test a_socket_holds_the_port_it_named_or_the_one_its_draw_picked ... ok
test a_closed_socket_frees_its_port_and_what_it_accepted_still_leaves ... ok
test each_refusal_is_answered_in_the_pipes_word_for_it ... ok
test a_datagram_accepted_for_a_host_is_no_broadcast_after_the_server_renews_a_narrower_prefix ... ok
test a_clients_datagram_for_a_host_nobody_answers_for_is_dropped_and_the_client_is_told_nothing ... ok

test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/host.rs (target/debug/deps/host-9e13c0508c1ac768)

running 1 test
test a_host_gives_a_connection_the_nodelay_its_listener_had_when_it_began ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/lease.rs (target/debug/deps/lease-18117ae55a152eba)

running 21 tests
test a_message_with_no_link_is_counted_and_not_sent ... ok
test a_reply_without_the_cookie_is_refused_by_name ... ok
test a_link_that_returns_with_no_lease_starts_discovery_over_at_once ... ok
test a_renewal_without_a_router_takes_the_route_and_keeps_the_address ... ok
test a_renewal_for_a_server_nobody_answers_for_waits_and_is_dropped_and_the_client_is_told_nothing ... ok
test a_router_ip_refuses_is_no_router ... ok
test a_conflict_under_the_probe_declines_and_holds_nothing ... ok
test a_lease_that_runs_out_under_the_probe_leaves_no_address ... ok
test a_nak_takes_address_route_and_resolvers_in_one_step ... ok
test a_probe_the_link_drops_under_is_abandoned ... ok
test a_hundred_refused_replies_are_one_line_and_a_count ... ok
test a_renewed_prefix_reaches_ip_before_its_router ... ok
test a_link_that_returns_keeps_a_held_lease_and_announces_it ... ok
test a_listener_stands_while_its_address_is_lost_and_answers_when_it_is_back ... ok
test a_second_conflict_takes_a_held_lease_and_declines_it ... ok
test expiry_takes_address_route_and_resolvers_in_one_step ... ok
test next_deadline_is_the_earliest_of_the_clients_and_the_stacks ... ok
test no_frame_is_from_the_address_before_it_is_verified ... ok
test no_cut_of_the_ack_is_an_ack ... ok
test the_lease_end_to_end ... ok
test no_flipped_bit_of_the_ack_yields_another_lease ... ok

test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s

     Running tests/listeners.rs (target/debug/deps/listeners-7baa2866acd09bc3)

running 31 tests
test a_connect_past_the_places_is_refused_and_sends_nothing ... ok
test a_datagram_socket_holds_a_place_and_a_bind_without_one_makes_nothing ... ok
test a_connect_between_two_accepts_is_queued_not_reset ... ok
test a_listen_on_a_taken_port_is_refused_and_a_drawn_port_listens ... ok
test a_listener_ended_for_its_wake_gives_its_place_to_another_in_the_same_pass ... ok
test a_listener_answers_a_syn_and_wakes_its_owner_when_the_handshake_ends ... ok
test a_departed_clients_connection_holds_its_place_until_it_is_cut ... ok
test a_listen_at_the_machines_address_takes_no_port_held_at_every_address ... ok
test a_listener_holds_a_place_and_a_listen_without_one_makes_nothing ... ok
test a_listener_holds_the_option_its_listen_named_from_its_first_connection ... ok
test a_listener_is_at_the_address_it_named_and_only_one_the_machine_holds ... ok
test a_handshake_nobody_finishes_leaves_the_port_open_and_is_given_up ... ok
test a_listen_at_every_address_takes_no_port_held_at_the_machines_address ... ok
test a_second_listen_at_the_machines_address_takes_no_port_held_there ... ok
test a_handshake_reset_before_it_ends_leaves_the_next_connection_its_listeners_option ... ok
test a_stream_reset_for_its_pipe_gives_its_place_to_a_connection_that_waits ... ok
test a_stream_starts_with_the_options_its_connection_took_from_its_listener ... ok
test a_wake_is_owed_only_for_a_connection_there_is_a_place_for ... ok
test a_wake_left_by_a_connection_its_peer_reset_stands_for_the_next ... ok
test an_accept_answers_the_option_of_a_stream_its_own_pass_let_go ... ok
test an_accept_spends_a_wake_whatever_it_answers ... ok
test a_request_for_a_stream_that_was_cut_names_nothing ... ok
test a_wake_the_owners_pipe_refuses_ends_the_listener ... ok
test closing_a_connect_gives_its_place_to_a_connection_that_waits ... ok
test closing_a_listener_gives_its_place_to_a_connection_that_waits_at_another ... ok
test closing_a_listener_resets_what_waits_and_frees_its_port ... ok
test more_places_wake_the_owner_of_a_connection_that_waits ... ok
test no_cut_of_a_syn_is_a_syn ... ok
test peers_at_more_addresses_than_there_are_places_hold_no_stream_past_them ... ok
test an_accepted_stream_is_one_of_its_peers_addresss_sixteen ... ok
test no_flipped_bit_of_a_syn_wakes_an_owner_or_ends_a_listener ... ok

test result: ok. 31 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

     Running tests/name.rs (target/debug/deps/name-51b15d9b5901b03e)

running 21 tests
test a_conflicting_response_received_as_the_probing_ends_takes_the_name ... ok
test a_links_return_under_a_lost_name_is_probed_on_at_once_and_no_retry_follows_it ... ok
test a_name_has_no_link_while_the_link_is_down_and_the_links_return_is_probed_on ... ok
test a_held_name_is_probed_for_again_when_the_link_returns_and_announced_only_then ... ok
test a_held_lease_is_probed_for_three_times_and_its_name_announced_only_then ... ok
test a_query_in_a_frame_to_the_groups_address_reaches_the_responder ... ok
test a_second_query_inside_a_second_waits_for_the_second_to_end ... ok
test a_lost_name_is_probed_for_again_a_minute_after_each_loss_and_claimed_once_no_host_answers ... ok
test an_answer_to_a_link_local_asker_goes_to_its_own_link_address ... ok
test a_later_probe_of_another_hosts_makes_the_node_wait_a_second_and_probe_again ... ok
test an_answer_goes_to_the_group_or_to_the_asker_as_the_query_asked ... ok
test a_query_from_off_the_link_is_not_answered ... ok
test an_answer_udp_refuses_is_counted_and_dropped ... ok
test a_held_name_is_defended_and_probed_for_again_when_another_host_answers_for_it ... ok
test every_message_leaves_with_ttl_255 ... ok
test another_hosts_answer_under_the_probe_takes_the_name_and_the_node_says_so ... ok
test the_group_is_joined_and_its_membership_reported ... ok
test the_first_probe_follows_the_delay_the_callers_draw_gives ... ok
test no_cut_of_a_query_is_answered ... ok
test the_names_port_is_held_by_one_socket ... ok
test the_name_is_answered_only_while_its_lease_is_held ... ok

test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/resolve.rs (target/debug/deps/resolve-2d19ff19690b7bb8)

running 33 tests
test a_forged_report_of_the_querys_own_addresses_and_ports_ends_nothing_and_the_answer_behind_it_is_taken ... ok
test a_lookup_ends_when_its_lease_is_lost ... ok
test a_lookup_let_go_after_it_ended_takes_its_answer_with_it ... ok
test a_lookup_ends_when_its_leases_resolvers_change ... ok
test a_lookup_is_not_carried_by_a_later_ones_schedule ... ok
test a_burst_at_a_resolver_not_yet_resolved_is_on_the_wire_once_the_resolver_answers_arp ... ok
test a_lookup_outlives_a_renewal_that_names_the_same_resolvers ... ok
test a_clients_datagrams_behind_the_burst_wait_in_their_own_socket_and_take_no_querys_place ... ok
test a_lookup_udp_refuses_every_resolver_of_ends_in_the_call_that_started_it ... ok
test a_lookup_let_go_frees_its_ports_and_its_place_at_once ... ok
test a_query_for_a_resolver_ip_has_given_up_ends_its_lookup_in_the_opportunity_that_would_have_carried_it ... ok
test a_lookup_with_no_resolver_to_ask_is_refused_as_not_connected ... ok
test a_query_is_rfc_1035s_octets_from_a_port_and_with_an_id_of_its_own_draws ... ok
test a_query_holds_its_port_while_its_answer_is_read_and_an_ended_lookup_holds_none ... ok
test a_query_its_resolver_refuses_by_icmp_is_counted_and_the_next_resolver_is_asked_at_once ... ok
test a_query_udp_refuses_is_counted_holds_no_port_and_the_next_resolver_is_asked_at_once ... ok
test a_query_the_network_reports_unreachable_is_counted_and_ends_a_lookup_with_no_other_resolver ... ok
test a_recorded_reply_of_a_public_resolver_answers_the_nodes_query ... ok
test a_reply_from_port_0_is_not_read ... ok
test a_reply_is_read_only_from_port_53 ... ok
test a_reply_is_read_only_from_the_resolver_its_query_went_to ... ok
test a_reply_is_read_only_at_the_address_its_query_left_from ... ok
test a_reply_on_another_querys_port_is_not_read ... ok
test a_resolver_that_never_answers_is_asked_at_each_waits_end ... ok
test a_report_that_is_not_about_the_query_or_is_a_hint_ends_no_wait ... ok
test an_alias_answered_late_restarts_the_lookup_and_lets_the_old_names_queries_go ... ok
test a_resolver_the_lease_names_twice_is_asked_once_a_wait_whatever_it_reports ... ok
test forged_reports_and_another_resolvers_failures_end_nothing_and_the_answer_behind_them_is_taken ... ok
test reports_alone_end_no_lookup_and_ask_no_resolver_twice_inside_a_wait ... ok
test the_lookup_past_the_cap_is_refused_until_an_answer_is_taken ... ok
test the_query_asked_in_a_dropped_querys_place_leaves_in_the_same_opportunity ... ok
test nothing_but_its_answer_ends_a_lookup ... ok
test a_query_with_no_port_to_leave_from_ends_its_lookup_by_name ... ok

test result: ok. 33 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/slirp.rs (target/debug/deps/slirp-a697bf33841a066d)

running 3 tests
test slirps_offer_is_answered_with_a_request_for_what_it_offered ... ok
test the_lease_is_read_from_the_acks_own_mask ... ok
test slirps_ack_is_the_lease_its_bytes_name ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/streams.rs (target/debug/deps/streams-9ba02cbf42626176)

running 44 tests
test a_connect_before_the_lease_is_refused_and_sends_nothing ... ok
test a_connect_nobody_answers_arp_for_fails_when_tcp_knows ... ok
test a_connect_is_a_handshake_and_its_answer_names_the_port ... ok
test a_connect_past_its_deadline_is_timed_out_at_the_deadline ... ok
test a_close_with_text_unread_resets ... ok
test a_close_sends_what_the_pipe_held_and_then_the_fin ... ok
test a_connect_closed_before_its_answer_is_answered_closed ... ok
test a_batch_stops_at_its_bound_and_says_a_pass_is_owed ... ok
test a_client_that_left_is_finished_by_the_stack ... ok
test a_batch_of_frames_moves_an_established_stream_once_with_no_opportunity_after_it ... ok
test a_client_done_writing_after_the_peers_fin_has_100_seconds_without_progress ... ok
test a_deadline_moves_an_established_stream_with_no_opportunity_after_it ... ok
test a_full_pipe_keeps_the_rest_in_the_stack_and_is_watched_for_room ... ok
test a_finished_send_pipe_goes_with_its_reader ... ok
test a_live_client_that_is_done_writing_is_not_timed ... ok
test a_departed_clients_unsent_bytes_have_100_seconds ... ok
test a_pipe_that_is_no_pipe_resets_its_connection ... ok
test a_reader_that_left_is_not_written_to_again ... ok
test a_refused_connect_is_answered_with_the_refusal ... ok
test a_refused_watch_resets_only_a_stream_that_holds_the_end ... ok
test a_reset_after_the_clients_shutdown_lets_the_send_pipe_go_first ... ok
test a_reset_after_the_peers_fin_ends_the_send_pipe ... ok
test a_reset_ends_both_pipes_and_the_stream ... ok
test a_reset_in_the_batch_of_the_text_before_it_ends_the_pipes_after_the_text ... ok
test a_send_pipe_found_empty_is_read_again_only_once_the_kernel_says_it_holds_bytes ... ok
test a_shutdown_after_the_peers_fin_keeps_the_send_pipe_past_the_connections_end ... ok
test a_shutdown_sends_what_the_pipe_held_and_then_the_fin ... ok
test a_writer_that_leaves_after_the_shutdown_leaves_the_stream_to_its_reader ... ok
test an_established_streams_connect_deadline_is_gone ... ok
test no_cut_of_a_segment_is_a_segment ... ok
test nodelay_reaches_the_stack ... ok
test the_peers_fin_ends_the_clients_reading_and_not_its_writing ... ok
test nothing_leaves_the_pipe_that_the_stack_will_not_take ... ok
test nothing_leaves_the_stack_that_the_pipe_did_not_take ... ok
test room_in_the_pipe_opens_the_window_at_the_next_opportunity ... ok
test text_the_pipe_had_no_room_for_outlives_both_fins ... ok
test text_the_pipe_had_no_room_for_outlives_the_reset ... ok
test the_end_of_the_clients_writing_is_a_fin_and_the_peer_still_sends ... ok
test the_peers_fin_after_the_clients_shutdown_leaves_the_send_pipe_to_its_writer ... ok
test a_departed_clients_tail_arrives_whole_while_its_peer_takes_it ... ok
test a_peer_at_another_address_keeps_its_own_sixteen ... ok
test no_flipped_bit_of_a_segment_delivers_other_bytes ... ok
test a_departed_clients_connection_past_the_sixteen_is_one_of_them_once_one_is_done ... ok
test a_peer_keeps_sixteen_departed_clients_connections_alive_and_no_more ... ok

test result: ok. 44 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s

     Running unittests src/lib.rs (target/debug/deps/toyos_net_shard-769f79dfda99ab28)

running 3 tests
test tests::the_head_freed_in_its_turn_ends_the_turn ... ok
test tests::a_resolved_next_hop_wakes_the_senders_that_waited_for_it_and_no_other ... ok
test tests::a_connection_freed_in_the_round_leaves_it ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/acquisition.rs (target/debug/deps/acquisition-639884de33297727)

running 5 tests
test the_acquisition_socket_hears_a_datagram_to_an_address_not_yet_held ... ok
test the_acquisition_socket_sends_from_no_address_to_the_limited_broadcast ... ok
test a_second_acquisition_socket_is_refused_its_port ... ok
test only_the_acquisition_socket_names_its_source ... ok
test a_removed_address_takes_its_gateway_and_answers_nothing ... ok

test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/drr.rs (target/debug/deps/drr-787eaef11b89919c)

running 6 tests
test a_sender_leaves_the_round_with_its_last_datagram ... ok
test a_connection_that_takes_a_freed_slot_takes_one_turn ... ok
test s_shard_drr_001_a_negative_deficit_is_repaid ... ok
test s_shard_drr_001_a_turn_spans_opportunities_on_one_quantum ... ok
test s_shard_drr_003_ip_and_owed_resets_go_first_and_the_round_resumes ... ok
test s_shard_drr_002_a_bulk_flow_starves_no_other_beyond_its_quantum ... ok

test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/egress.rs (target/debug/deps/egress-86d8624966b74209)

running 19 tests
test s_ip_nud_024_shard_a_segments_request_prefers_its_source ... ok
test s_ip_out_007_an_arp_request_goes_before_a_ready_segment ... ok
test s_hs_034_shard_a_child_whose_peer_never_answers_gives_up ... ok
test s_ip_nud_009_shard_an_acknowledgment_ends_delay ... ok
test s_pl_012_shard_a_connect_waits_for_its_next_hop_and_then_leaves ... ok
test s_pl_014_shard_an_established_flow_with_no_route_records_host_unreachable ... ok
test s_pl_014_shard_an_established_flow_records_host_unreachable ... ok
test s_pl_013_shard_a_connect_with_no_route_fails_at_once ... ok
test s_ip_nud_026_shard_a_segment_to_a_stale_neighbour_moves_it_to_delay ... ok
test s_pl_013_shard_a_connect_to_no_one_fails_at_once_as_host_unreachable ... ok
test s_hs_035_shard_a_directed_broadcast_is_not_a_unicast_remote ... ok
test s_ip_nud_020_shard_a_stalled_connect_reverifies_the_gateway ... ok
test s_pl_014_shard_a_failed_flow_is_asked_once_while_another_sends ... ok
test s_pl_015_shard_a_reset_for_no_socket_waits_for_its_next_hop ... ok
test s_pl_015_shard_a_reset_to_a_peer_that_never_answers_is_dropped ... ok
test s_pl_015_shard_a_reset_with_no_route_is_dropped ... ok
test s_pl_015_shard_an_owed_reset_waits_for_its_next_hop ... ok
test s_pl_015_shard_a_time_wait_ack_waits_for_its_next_hop ... ok
test s_ip_nud_022_shard_a_flow_refused_by_a_full_table_asks_again_once_an_entry_may_go ... ok

test result: ok. 19 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/icmp.rs (target/debug/deps/icmp-612e73bf98b2c65b)

running 4 tests
test s_ic_001_shard_port_unreachable_refuses_a_connect ... ok
test s_ic_008_shard_time_exceeded_is_soft ... ok
test s_ic_009_shard_parameter_problem_is_soft ... ok
test s_ic_012_shard_fragmentation_needed_without_an_mtu_is_ignored ... ok

test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/log.rs (target/debug/deps/log-e4c80cb16ba8ab70)

running 3 tests
test s_udp_us_020_shard_sending_to_this_host_is_logged ... ok
test s_ip_mod_001_shard_one_line_per_rule_per_10_s ... ok
test s_mod_005_shard_one_line_per_rule_per_10_s ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/net.rs (target/debug/deps/net-216fa200435eee83)

running 5 tests
test s_net_006_a_dark_link ... ok
test s_net_001_sack_repairs_every_50th ... ok
test s_net_003_reordering_below_the_threshold ... ok
test s_net_004_duplicates_are_reported_by_dsack ... ok
test s_pl_011_many_up ... ok

test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 11.14s

     Running tests/udp.rs (target/debug/deps/udp-3b0642e4a03fa550)

running 12 tests
test s_udp_us_024_shard_a_waiting_datagram_whose_route_goes_is_dropped ... ok
test a_waiting_datagram_whose_link_returns_before_an_opportunity_waits_anew_and_leaves ... ok
test s_udp_us_046_shard_a_port_unreachable_refuses_the_connected_socket_once ... ok
test s_ip_icd_012_shard_a_resolution_failure_reaches_the_connected_socket ... ok
test s_udp_us_021_shard_a_datagram_accepted_for_a_host_is_no_broadcast_after_a_renewal_narrows_the_prefix ... ok
test s_udp_us_025_shard_what_waits_for_a_next_hop_is_bounded_by_its_sockets_queue ... ok
test s_udp_us_021_shard_a_datagram_accepted_for_the_router_is_no_broadcast_after_a_renewal_widens_the_prefix ... ok
test s_udp_us_021_shard_a_datagram_that_waited_for_a_host_is_asked_its_route_again_and_keeps_its_permission ... ok
test s_udp_us_026_shard_a_datagram_waits_in_its_socket_for_its_next_hop_and_holds_back_no_other ... ok
test s_udp_us_027_shard_a_failed_next_hop_drops_what_waited_for_it_and_tells_no_unconnected_socket ... ok
test s_udp_us_021_shard_a_datagram_carries_the_permission_of_its_call ... ok
test s_udp_us_035_shard_no_socket_is_a_port_unreachable ... ok

test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_net_tcp-5b6577f967261928)

running 30 tests
test cc::tests::s_cc_007_slow_start_stops_at_ssthresh ... ok
test cc::tests::s_cc_008_the_epoch_after_a_timeout ... ok
test cc::tests::s_cc_009_cubic_values ... ok
test cc::tests::s_cc_010_congestion_events ... ok
test cc::tests::s_cc_011_reno_friendly_region ... ok
test cc::tests::s_cc_013_application_limited_time_is_skipped ... ok
test cc::tests::s_cc_014_flight_not_cwnd_at_a_timeout ... ok
test cc::tests::s_cc_015_prop_avoidance_growth_is_bounded ... ok
test rtt::tests::s_rt_001_first_sample ... ok
test rtt::tests::s_rt_002_later_sample ... ok
test rtt::tests::s_rt_003_the_200_ms_floor ... ok
test rtt::tests::s_rt_004_the_60_s_ceiling ... ok
test rtt::tests::s_rt_012_appendix_g_weights ... ok
test rx::tests::an_echo_aged_by_the_peers_silence_moves_the_estimate_an_eighth ... ok
test rx::tests::full_sized_is_learned_from_what_arrives ... ok
test rx::tests::without_timestamps_the_least_fill_time_is_kept ... ok
test tx::tests::s_lr_015_the_scoreboard_keeps_the_lowest_64 ... ok
test props::s_op_025_prop_timestamps_on_every_segment ... ok
test props::s_rx_026_prop_sacked_bytes_are_delivered ... ok
test props::s_rt_017_prop_no_retransmission_before_an_rto ... ok
test props::s_prop_008_nothing_happens_before_a_deadline ... ok
test props::s_prop_005_the_scoreboard_stays_above_snd_una ... ok
test props::s_prop_001_snd_una_at_or_before_snd_nxt ... ok
test props::s_prop_004_the_right_edge_never_retreats ... ok
test props::s_prop_001_snd_una_at_or_before_snd_nxt_whatever_the_next_hop_answers ... ok
test props::s_mod_004_prop_urgent_is_never_sent ... ok
test props::s_prop_002_delivered_data_is_a_prefix ... ok
test props::s_prop_007_pipe_is_bounded ... ok
test props::s_prop_006_totality_against_an_adversary ... ok
test props::s_prop_003_end_of_stream_after_every_byte ... ok

test result: ok. 30 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.20s

     Running tests/acceptability.rs (target/debug/deps/acceptability-4cb22485c5f487a6)

running 27 tests
test s_ac_001_in_order_text_is_acknowledged_late ... ok
test s_ac_002_at_the_right_edge ... ok
test s_ac_007_front_trim ... ok
test s_ac_006_empty_segment_beyond_the_window ... ok
test s_ac_009_exact_rst ... ok
test s_ac_010_inexact_rst_is_challenged ... ok
test s_ac_011_rst_outside_the_window ... ok
test s_ac_005_zero_window_rst ... ok
test s_ac_003_zero_window_probe ... ok
test s_ac_012_challenge_acks_are_limited ... ok
test s_ac_008_back_trim ... ok
test s_ac_013_syn_is_challenged ... ok
test s_ac_014_syn_beyond_the_window ... ok
test s_ac_015_retransmitted_synack ... ok
test s_ac_016_ack_of_unsent_data ... ok
test s_ac_017_rfc5961_lower_bound ... ok
test s_ac_004_zero_window_pure_ack ... ok
test s_ac_019_text_without_ack ... ok
test s_ac_018_data_with_the_old_ack_is_no_duplicate ... ok
test s_ac_021_a_window_may_shrink ... ok
test s_ac_020_old_segments_do_not_update_the_window ... ok
test s_ac_022_max_snd_wnd ... ok
test s_ac_023_one_ack_per_receive_pass ... ok
test s_ac_024_text_after_the_peer_fin ... ok
test s_ac_025_ack_half_the_space_away ... ok
test s_ac_026_rst_with_fin ... ok
test s_ac_027_rst_payload_is_ignored ... ok

test result: ok. 27 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/close.rs (target/debug/deps/close-0fe6956e8432a73a)

running 32 tests
test s_cl_006_the_fin_is_retransmitted ... ok
test s_cl_002_passive_close ... ok
test s_cl_012_the_orphan_bound ... ok
test s_cl_011_an_orphan_in_fin_wait_2 ... ok
test s_cl_004_fin_acknowledging_ours ... ok
test s_cl_010_a_retransmitted_fin_restarts_time_wait ... ok
test s_cl_009_a_retransmitted_fin_in_close_wait ... ok
test s_cl_007_half_close ... ok
test s_cl_005_the_fin_rides_on_data ... ok
test s_cl_013_an_orphan_behind_a_shut_window ... ok
test s_cl_008_sending_in_close_wait ... ok
test s_cl_003_simultaneous_close ... ok
test s_cl_001_active_close ... ok
test s_cl_015_data_for_an_orphan ... ok
test s_cl_016_close_with_unread_data ... ok
test s_cl_017_time_wait_is_60_s ... ok
test s_cl_018_reopening_from_time_wait_by_timestamp ... ok
test s_cl_019_reopening_by_sequence_number ... ok
test s_cl_020_rst_in_time_wait_is_ignored ... ok
test s_cl_022_syn_in_time_wait_without_a_listener ... ok
test s_cl_026_no_time_wait_after_a_reset ... ok
test s_cl_028_close_in_syn_sent ... ok
test s_cl_027_the_reset_stub ... ok
test s_cl_014_a_user_keeps_a_shut_window_open ... ok
test s_cl_029_shutdown_read ... ok
test s_cl_030_last_ack_waits_for_the_fin ... ok
test s_cl_031_rst_in_close_wait ... ok
test s_cl_032_rst_in_last_ack_and_closing ... ok
test s_cl_024_abort ... ok
test s_cl_025_abort_without_rst ... ok
test s_cl_021_a_failed_reopening_returns_to_time_wait ... ok
test s_cl_023_time_wait_is_bounded ... ok

test result: ok. 32 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.09s

     Running tests/congestion.rs (target/debug/deps/congestion-f23887113613d251)

running 7 tests
test s_cc_005_slow_start ... ok
test s_cc_006_no_growth_when_not_cwnd_limited ... ok
test s_cc_001_ten_segments ... ok
test s_cc_003_ten_segments_of_536 ... ok
test s_cc_002_ten_segments_with_timestamps ... ok
test s_cc_004_one_segment_after_two_syn_retransmissions ... ok
test s_cc_012_restart_after_idle ... ok

test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/egress.rs (target/debug/deps/egress-910b6b5164b0aca6)

running 25 tests
test s_pl_003_unsent_is_not_in_flight ... ok
test s_pl_006_a_segment_carries_the_state_of_its_moment ... ok
test s_pl_007_credit_bounds_an_opportunity ... ok
test s_pl_002_no_expiry_for_a_retransmission_that_never_left ... ok
test s_ka_003_probes_that_cannot_leave_still_give_up ... ok
test s_pl_009_a_handshake_gives_up_without_credit ... ok
test s_pl_001_the_timer_starts_at_hand_off ... ok
test s_pl_008_resets_go_first ... ok
test s_ka_002_a_segment_cancels_a_probe_still_owed ... ok
test s_pl_009_give_up_without_credit ... ok

@Japabu

Japabu commented Oct 11, 2026

Copy link
Copy Markdown
Collaborator Author

cargo run -- --ci host on 148c3de, EXIT=0, part 5 of 10

test s_hs_034_a_child_whose_synack_cannot_leave_gives_up ... ok
test s_pl_005_at_most_three_duplicate_acks_are_held ... ok
test s_pl_012_a_connection_freed_while_waiting_leaves_no_turn_behind ... ok
test s_pl_004_owed_acks_collapse ... ok
test s_pl_010_give_up_before_retransmission ... ok
test s_pl_012_a_window_update_offers_nothing_until_it_leaves ... ok
test s_pl_012_a_flow_builds_nothing_while_its_next_hop_is_pending ... ok
test s_pl_012_an_ack_owed_in_syn_received_waits_for_its_next_hop ... ok
test s_pl_012_an_owed_ack_waits_for_its_next_hop ... ok
test s_pl_013_a_local_host_unreachable_fails_a_connect_at_once ... ok
test s_pl_014_an_owed_ack_outlasts_an_unreachable_next_hop ... ok
test s_pl_014_a_synchronized_connection_records_host_unreachable_soft ... ok
test a_freed_connection_leaves_no_turn_behind ... ok
test s_pl_015_what_is_owed_outside_a_connection_waits_for_its_next_hop ... ok
test s_pl_015_resets_waiting_for_their_next_hop_stay_bounded ... ok

test result: ok. 25 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/handshake.rs (target/debug/deps/handshake-8c2894fb999c9928)

running 42 tests
test s_hs_010_synsent_rst_without_ack ... ok
test s_hs_004_passive_open_full_peer ... ok
test s_hs_012_synsent_ack_without_syn ... ok
test s_hs_009_synsent_refused ... ok
test s_hs_011_synsent_rst_with_a_bad_ack ... ok
test s_hs_008_synsent_ack_past_snd_nxt ... ok
test s_hs_003_passive_open_bare_peer ... ok
test s_hs_013_synsent_bad_ack_without_syn ... ok
test s_hs_014_synsent_fin ... ok
test s_hs_002_active_open_full_peer ... ok
test s_hs_001_active_open_bare_peer ... ok
test s_hs_005_simultaneous_open ... ok
test s_hs_007_synsent_ack_at_iss ... ok
test s_hs_006_simultaneous_open_synack_lost ... ok
test s_hs_015_syn_give_up ... ok
test s_hs_016_one_syn_retransmission ... ok
test s_hs_017_two_syn_retransmissions ... ok
test s_hs_021_listen_ack ... ok
test s_hs_018_syn_payload_is_discarded ... ok
test s_hs_020_listen_rst ... ok
test s_hs_019_synack_payload_is_discarded ... ok
test s_hs_022_listen_synack ... ok
test s_hs_023_listen_without_syn ... ok
test s_hs_024_duplicate_syn_in_syn_received ... ok
test s_hs_025_new_syn_in_syn_received ... ok
test s_hs_028_active_syn_received_rst ... ok
test s_hs_026_child_bad_ack ... ok
test s_hs_027_child_rst ... ok
test s_hs_029_child_fin ... ok
test s_hs_031_child_text_without_ack ... ok
test s_hs_030_fin_waits_for_established ... ok
test s_hs_032_child_inexact_rst ... ok
test s_hs_033_child_completes_with_data ... ok
test s_hs_034_synack_give_up ... ok
test s_hs_035_connect_needs_a_unicast_remote ... ok
test s_hs_037_the_initial_window_is_ten_smss ... ok
test s_hs_038_data_queued_in_syn_sent ... ok
test s_hs_041_no_socket ... ok
test s_hs_040_synack_retransmitted ... ok
test s_hs_039_active_syn_received_bad_ack ... ok
test s_hs_042_no_socket_reset_limit ... ok
test s_hs_043_calls_in_the_wrong_state ... ok

test result: ok. 42 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/held.rs (target/debug/deps/held-51fe6445d79b8314)

running 6 tests
test ready_counts_the_connections_accept_has_yet_to_return ... ok
test options_are_the_ones_the_connection_has ... ok
test a_close_that_resets_leaves_no_orphan ... ok
test an_orphan_is_counted_until_its_idle_reset ... ok
test a_close_before_the_handshake_ends_leaves_an_orphan_until_it_gives_up ... ok
test an_orphan_is_counted_until_both_fins ... ok

test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/icmp.rs (target/debug/deps/icmp-82922194800c1dc4)

running 21 tests
test s_ic_002_a_stale_quote ... ok
test s_ic_001_port_unreachable_refuses_a_connect ... ok
test s_ic_004_administratively_prohibited ... ok
test s_ic_003_host_unreachable_is_soft ... ok
test s_ic_005_soft_in_a_synchronized_state ... ok
test s_ic_007_quotes_outside_the_flight ... ok
test s_ic_008_time_exceeded_is_soft ... ok
test s_ic_006_port_unreachable_is_soft_when_synchronized ... ok
test s_ic_009_parameter_problem_is_soft ... ok
test s_ic_010_an_unassigned_code_is_soft ... ok
test s_ic_012_no_next_hop_mtu ... ok
test s_ic_013_an_mtu_that_is_no_smaller ... ok
test s_ic_011_path_mtu_lowered ... ok
test s_ic_014_the_mtu_floor ... ok
test s_ic_015_an_mtu_not_below_the_refused_datagram ... ok
test s_ic_016_one_retransmission_per_lowering ... ok
test s_ic_017_time_wait_is_stale ... ok
test s_ic_018_a_listener_is_never_addressed ... ok
test s_ic_019_a_pending_child_is_deleted ... ok
test s_ic_021_path_mtu_with_timestamps ... ok
test s_ic_020_progress_clears_a_soft_error ... ok

test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/isn.rs (target/debug/deps/isn-fc249f327683cf0d)

running 9 tests
test s_isn_001_siphash_reference_vectors ... ok
test s_isn_004_every_field_of_the_tuple_counts ... ok
test s_isn_006_clock_wrap ... ok
test s_isn_005_the_key_counts ... ok
test s_isn_003_the_4us_clock ... ok
test s_isn_008_timestamp_offset ... ok
test s_isn_002_isn_at_clock_zero ... ok
test s_isn_009_incarnations_share_the_offset ... ok
test s_isn_007_prop_unpredictable ... ok

test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/listen.rs (target/debug/deps/listen-b3f053b3e7f87abe)

running 11 tests
test s_ls_001_one_listener_per_endpoint ... ok
test s_ls_002_connections_do_not_hold_the_port ... ok
test s_ls_007_a_reset_child_is_never_returned ... ok
test s_ls_010_children_inherit_options ... ok
test s_ls_006_a_closed_child_is_accepted ... ok
test s_ls_009_the_specific_address_first ... ok
test s_ls_008_closing_a_listener_resets_its_children ... ok
test s_ls_011_a_bound_port_without_a_listener ... ok
test s_ls_005_first_in_first_out ... ok
test s_ls_004_the_ready_bound ... ok
test s_ls_003_the_pending_bound ... ok

test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/modern.rs (target/debug/deps/modern-2888834a8622dc03)

running 14 tests
test s_mod_001_syn_with_fin ... ok
test s_div_003_rst_at_snd_nxt_inside_the_window ... ok
test s_mod_003_urgent_data_inline ... ok
test s_div_001_rst_never_below_snd_una ... ok
test s_mod_002_syn_with_rst ... ok
test s_div_002_rst_at_a_shrunk_edge ... ok
test s_div_002_rst_below_the_offered_edge_behind_snd_una ... ok
test s_mod_006_tcp_md5 ... ok
test s_mod_007_fast_open ... ok
test s_mod_009_out_of_range_acks_are_logged_per_10_s ... ok
test s_mod_008_challenges_are_logged_once ... ok
test s_div_001_rst_at_the_right_edge ... ok
test s_mod_005_one_line_per_rule_per_10_s ... ok
test s_mod_005_a_bulk_peer_leaves_room_for_refusals ... ok

test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/net.rs (target/debug/deps/net-8fa0f1d30a404d98)

running 19 tests
test s_net_011_the_fin_overtakes_the_last_data ... ok
test s_net_012_a_slow_reader ... ok
test s_ls_012_a_syn_flood ... ok
test s_net_014_an_abort_is_a_reset ... ok
test s_net_002_newreno_when_one_side_has_no_sack ... ok
test s_net_009_the_last_segment_of_each_burst ... ok
test s_net_010_a_lost_retransmission ... ok
test s_net_008_timestamps_wrap ... ok
test s_net_007_sequence_numbers_wrap ... ok
test s_net_016_a_peer_without_options ... ok
test s_net_005_lost_acks ... ok
test rfc_8985_7_3_no_probe_without_an_rtt_sample_since_the_last ... ok
test rfc_7323_2_2_no_scaling_unless_both_syns_offer_it ... ok
test s_net_015_nagle_and_the_delayed_ack ... ok
test a_receive_buffer_nobody_reads_never_grows ... ok
test the_receive_window_grows_by_what_is_read_per_round_trip ... ok
test a_peer_sending_segments_shorter_than_our_send_mss_still_grows_the_window ... ok
test s_net_013_a_hundred_connections ... ok
test rfc_7323_2_a_scaled_window_carries_more_than_64_kib_in_flight_each_way ... ok

test result: ok. 19 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.15s

     Running tests/options.rs (target/debug/deps/options-ff93577fb27af65a)

running 30 tests
test s_op_002_synack_to_a_bare_syn ... ok
test s_op_001_the_active_syn ... ok
test s_op_010_shift_above_14_is_clamped ... ok
test s_op_013_a_synack_window_is_never_scaled ... ok
test s_op_012_window_scale_outside_a_syn_is_ignored ... ok
test s_op_004_mss_zero_is_raised ... ok
test s_op_005_mss_100_is_raised ... ok
test s_op_003_synack_to_a_full_syn ... ok
test s_op_009_window_scaling ... ok
test s_op_007_the_interface_bounds_the_mss ... ok
test s_op_006_no_mss_option ... ok
test s_op_011_unscaled_when_the_peer_offers_none ... ok
test s_op_008_timestamps_take_twelve_bytes ... ok
test s_op_015_timestamps_unnegotiated ... ok
test s_op_014_sack_unnegotiated ... ok
test s_op_016_timestamps_on_an_unnegotiated_connection ... ok
test s_op_017_ts_recent_needs_seq_at_or_before_last_ack_sent ... ok
test s_op_019_ts_across_a_hole ... ok
test s_op_018_delayed_ack_echoes_the_earliest ... ok
test s_op_022_no_paws_on_an_rst ... ok
test s_op_020_paws ... ok
test s_op_021_missing_timestamps_are_dropped ... ok
test s_op_023_ts_recent_expires_after_24_days ... ok
test s_op_024_rst_for_no_socket_echoes_the_timestamp ... ok
test s_op_026_mss_outside_a_syn_is_ignored ... ok
test s_op_028_sack_blocks_in_a_syn_are_ignored ... ok
test s_op_027_ecn_is_not_negotiated ... ok
test s_op_031_the_shift_fits_the_buffer ... ok
test s_op_032_tsecr_without_ack_is_ignored ... ok
test s_op_029_the_last_mss_wins ... ok

test result: ok. 30 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/port.rs (target/debug/deps/port-0470eb25ad97d3ea)

running 8 tests
test s_port_003_a_listening_port_is_skipped ... ok
test s_port_001_algorithm_4 ... ok
test s_port_007_never_a_self_connection ... ok
test s_port_002_another_destination_another_counter ... ok
test s_port_004_time_wait_holds_its_4_tuple ... ok
test s_port_006_algorithm_2_for_a_listener ... ok
test s_port_005_exhaustion ... ok
test s_port_008_prop_ports ... ok

test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

     Running tests/receive.rs (target/debug/deps/receive-5741ef1f226d10ec)

running 27 tests
test s_rx_002_the_delayed_ack_is_40_ms ... ok
test s_rx_001_every_second_segment ... ok
test s_rx_003_out_of_order_is_acknowledged_at_once ... ok
test s_rx_005_a_filled_hole_is_acknowledged_at_once ... ok
test s_rx_007_stored_bytes_win ... ok
test s_rx_004_duplicate_acks_are_not_coalesced ... ok
test a_sub_unit_window_rounds_up_only_into_free_room ... ok
test s_rx_009_a_fin_beyond_a_hole ... ok
test s_rx_011_unread_bytes_close_the_window ... ok
test s_rx_006_a_later_range_remains ... ok
test s_rx_012_receiver_silly_window_avoidance ... ok
test s_rx_010_nothing_after_a_remembered_fin ... ok
test s_rx_008_at_most_32_ranges ... ok
test s_rx_014_the_edge_holds_while_a_hole_is_open ... ok
test s_rx_016_the_ack_rides_on_data ... ok
test s_rx_018_the_triggering_range_first ... ok
test s_rx_015_the_offered_edge_is_honoured_under_scaling ... ok
test s_rx_020_dsack_below_rcv_nxt ... ok
test s_rx_017_sack_blocks ... ok
test s_rx_021_dsack_inside_a_range ... ok
test s_rx_023_a_reset_comes_after_the_text_before_it ... ok
test s_rx_019_three_blocks_with_timestamps ... ok
test s_rx_022_no_sack_unnegotiated ... ok
test s_rx_024_data_then_end ... ok
test s_rx_013_a_window_update_when_the_window_was_small ... ok
test s_rx_025_push_is_not_a_boundary ... ok
test s_rx_027_half_close_keeps_receiving ... ok

test result: ok. 27 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/recovery.rs (target/debug/deps/recovery-9cbae2d9e2ba8186)

running 33 tests
test a_probe_due_when_the_window_shuts_gives_way_to_persist ... ok
test rfc_8985_7_4_a_resent_probe_reported_as_a_duplicate_infers_no_loss ... ok
test rfc_8985_7_4_a_resent_probe_acknowledged_past_its_end_without_a_dsack_repaired_a_loss ... ok
test rfc_8985_7_2_no_probe_in_rto_recovery ... ok
test s_lr_002_limited_transmit_and_inflation ... ok
test s_lr_001_newreno_one_loss ... ok
test s_lr_003_newreno_partial_ack ... ok
test rfc_8985_7_1_fast_recovery_ends_the_probes_episode ... ok
test rfc_8985_7_4_a_duplicate_without_sack_at_the_probes_end_infers_no_loss ... ok
test rfc_8985_7_4_a_dsack_of_another_segment_still_infers_the_loss ... ok
test rfc_8985_7_4_a_dsack_after_the_ack_at_the_probes_end_infers_no_loss ... ok
test rfc_8985_7_3_the_probe_is_new_data_where_the_window_takes_a_segment ... ok
test rfc_8985_7_2_with_one_segment_out_the_probe_stands_in_for_the_first_rto ... ok
test rfc_8985_7_4_an_ack_that_infers_the_probes_loss_and_enters_recovery_cuts_twice ... ok
test s_lr_006_no_fast_retransmit_after_a_timeout ... ok
test s_lr_005_what_is_not_a_duplicate ... ok
test s_lr_004_full_ack_after_limited_transmit ... ok
test s_lr_008_sack_recovery ... ok
test s_lr_010_a_second_hole ... ok
test s_lr_009_is_lost_on_the_first_ack ... ok
test s_lr_013_the_recovery_point ... ok
test s_lr_007_inflation_is_capped ... ok
test s_lr_011_new_data_during_sack_recovery ... ok
test s_lr_012_rescue_retransmission ... ok
test s_lr_014_invalid_blocks_and_dsack ... ok
test s_lr_017_a_second_timeout ... ok
test s_lr_016_timeout ... ok
test s_lr_018_no_sack_recovery_before_the_timeout_point ... ok
test s_lr_019_sacks_after_a_timeout_skip_held_ranges ... ok
test s_lr_021_pure_duplicates_without_blocks ... ok
test s_lr_022_limited_transmit_by_pipe ... ok
test s_lr_023_a_lost_fast_retransmission ... ok
test s_lr_020_sacked_bytes_stay_queued ... ok

test result: ok. 33 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/rtt.rs (target/debug/deps/rtt-c51bdcf3043b33aa)

running 11 tests
test s_rt_005_the_minimum_is_200_ms ... ok
test s_rt_016_no_timer_when_all_is_acknowledged ... ok
test s_rt_006_three_seconds_after_a_lost_syn ... ok
test s_rt_011_an_echo_from_the_future ... ok
test s_rt_013_backoff_doubles ... ok
test s_rt_007_karn ... ok
test s_rt_008_one_segment_timed ... ok
test s_rt_015_the_timer_restarts_on_new_acks ... ok
test s_rt_010_a_retransmission_echoed ... ok
test s_rt_009_timestamp_samples ... ok
test s_rt_014_three_expiries_forget_the_estimate ... ok

test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/send.rs (target/debug/deps/send-01c8c2db5e914763)

running 21 tests
test s_tx_006_silly_window_override ... ok
test s_tx_003_nodelay ... ok
test s_tx_002_nagle ... ok
test s_tx_004_full_segments_then_wait ... ok
test s_tx_012_no_send_after_shutdown ... ok
test s_tx_001_one_segment_with_push ... ok
test s_tx_011_the_send_buffer_is_bounded ... ok
test s_tx_005_push_only_where_the_queue_empties ... ok
test s_tx_007_an_opened_window_cancels_the_override ... ok
test s_tx_013_persist_backs_off ... ok
test s_tx_014_an_opened_window_ends_persist ... ok
test s_tx_008_half_the_largest_window ... ok
test s_tx_009_a_shrunk_window ... ok
test s_tx_010_the_initial_window_bounds_a_burst ... ok
test s_tx_015_the_probe_byte_taken ... ok
test s_tx_018_the_fin_as_probe ... ok
test s_tx_021_close_pushes ... ok
test s_tx_019_a_shut_window_stops_the_retransmission_timer ... ok
test s_tx_020_cwnd_does_not_arm_the_override ... ok
test s_tx_017_an_unanswered_persist_gives_up ... ok
test s_tx_016_an_answered_persist_lives ... ok

test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/seq.rs (target/debug/deps/seq-5d60ccf787bf84fb)

running 8 tests
test s_seq_002_ordering_across_the_wrap ... ok
test s_seq_003_half_the_space_is_unordered ... ok
test s_seq_001_offsets ... ok
test s_seq_004_ack_range_check ... ok
test s_seq_007_timestamps_compare_modularly ... ok
test s_seq_006_acceptability_across_the_wrap ... ok
test s_seq_008_sending_across_the_wrap ... ok
test s_seq_005_segment_length ... ok

test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/take.rs (target/debug/deps/take-0a77fdffbf8d568a)

running 5 tests
test what_the_reader_did_not_take_stays_held_in_order ... ok
test with_nothing_held_the_reader_is_not_asked ... ok
test text_unread_when_both_fins_ended_the_connection_is_still_taken ... ok
test a_take_owes_the_window_update_a_read_does ... ok
test text_across_the_rings_wrap_is_shown_in_two_pieces_and_none_is_lost ... ok

test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/timers.rs (target/debug/deps/timers-766f9a5854182b74)

running 15 tests
test s_ka_001_off_by_default ... ok
test s_gu_006_progress_confirms_the_next_hop ... ok
test s_gu_001_three_expiries_raise_advice ... ok
test s_gu_006_a_confirmation_after_a_reverify_is_kept ... ok
test s_ka_004_no_keepalive_with_data_outstanding ... ok
test s_gu_003_progress_restarts_the_give_up_clock ... ok
test s_ka_002_a_probe_after_two_hours ... ok
test s_gu_005_user_timeout_ends_an_answered_persist ... ok
test s_ka_005_the_peer_keepalive_is_answered ... ok
test s_gu_006_b_advice_is_kept_per_address ... ok
test s_ka_006_the_idle_time_is_settable ... ok
test s_gu_004_user_timeout ... ok
test s_ka_003_nine_unanswered_probes ... ok
test s_gu_002_give_up ... ok
test s_ka_007_close_wait_and_fin_wait_2 ... ok

test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_net_testnet-215d203d8d5e5e88)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/testnet.rs (target/debug/deps/testnet-2ce2d72aeb143e61)

running 2 tests
test a_run_repeats_exactly ... ok
test a_published_reader_decodes_the_capture_as_the_wire_carried_it ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_net_udp-48f698b07022b790)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/bind.rs (target/debug/deps/bind-a0e5aaae33f53589)

running 12 tests
test s_udp_us_004_any_needs_no_address ... ok
test s_udp_us_003_only_an_assigned_address_binds ... ok
test s_udp_us_001_one_socket_per_port ... ok
test s_udp_us_005_algorithm_1 ... ok
test s_udp_us_002_whatever_the_address ... ok
test s_udp_us_006_the_candidates_wrap ... ok
test s_udp_us_010_no_privileged_ports ... ok
test s_udp_us_007_the_draw_is_reduced ... ok
test s_udp_us_009_a_numbered_bind_is_skipped ... ok
test s_udp_us_011_close_frees_the_port_at_once ... ok
test closing_leaves_no_turn_behind ... ok
test s_udp_us_008_exhaustion_spends_one_draw ... ok

test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/recv.rs (target/debug/deps/recv-3e3a0590d8639146)

running 29 tests
test s_udp_us_034_no_socket_for_a_group_is_no_error ... ok
test s_udp_017_a_closed_port_is_answered ... ok
test s_udp_us_030_a_bound_any_socket_receives ... ok
test s_udp_us_038_no_checksum_is_delivered ... ok
test s_udp_us_033_mdns_arrives_with_its_group ... ok
test s_udp_us_031_a_specific_socket_hears_no_broadcast ... ok
test s_udp_us_035_no_socket_is_a_port_unreachable ... ok
test s_udp_018_the_limited_broadcast_reaches_port_68 ... ok
test s_udp_us_037_source_port_zero ... ok
test s_udp_us_039_a_bad_checksum_is_malformed ... ok
test s_udp_us_032_bound_any_hears_both_broadcasts ... ok
test s_udp_us_040_a_full_queue_drops_and_says_nothing ... ok
test s_udp_us_036_an_empty_datagram ... ok
test s_udp_us_041_arrival_order ... ok
test s_udp_us_042_a_short_buffer_truncates ... ok
test s_udp_us_043_a_group_not_joined_never_reaches_udp ... ok
test s_udp_us_045_what_a_datagram_carries ... ok
test s_udp_us_046_refused_once ... ok
test s_udp_us_044_the_acquisition_exception ... ok
test s_udp_us_047_an_unconnected_socket_hears_no_error ... ok
test s_udp_us_048_an_error_for_no_socket ... ok
test s_udp_us_049_hard_and_soft ... ok
test s_udp_us_050_the_latest_error_wins ... ok
test s_udp_us_051_a_send_takes_the_error ... ok
test s_udp_us_052_the_whole_4_tuple_must_match ... ok
test s_udp_us_054_close_discards_what_was_received ... ok
test s_udp_us_056_prop_ip_options_never_surface ... ok
test s_udp_us_053_accepted_datagrams_outlive_close ... ok
test s_udp_us_055_prop_the_demultiplexer ... ok

test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

     Running tests/send.rs (target/debug/deps/send-04086f982ee2d793)

running 25 tests
test s_udp_us_014_connect_needs_a_source ... ok
test s_udp_us_013_what_connect_refuses ... ok
test s_udp_us_012_connect_fixes_the_local_address ... ok
test s_udp_us_016_connect_purges_strangers ... ok
test s_udp_us_015_a_connected_socket_hears_its_peer_alone ... ok
test s_udp_us_017_a_connected_socket_sends_to_its_peer ... ok
test s_udp_us_018_reconnect ... ok
test s_udp_us_019_a_bound_socket_sends ... ok
test s_udp_us_020_what_send_refuses ... ok
test s_udp_us_021_broadcast_needs_permission ... ok
test s_udp_us_022_multicast_ttl ... ok
test s_udp_us_023_payload_sizes ... ok
test s_udp_us_024_a_waiting_datagram_whose_route_goes_is_dropped ... ok
test s_udp_us_024_the_source_address_must_be_ours ... ok
test s_udp_us_025_a_full_queue_refuses ... ok
test s_udp_us_025_what_waits_for_a_next_hop_is_bounded_by_its_sockets_queue ... ok
test s_udp_us_026_a_datagram_waits_for_its_next_hop_in_its_socket_and_never_in_ip ... ok
test s_udp_us_026_datagrams_to_one_next_hop_leave_in_the_order_they_were_accepted ... ok
test s_udp_us_026_no_head_of_line_blocking ... ok
test s_udp_us_027_a_datagram_for_a_hop_ip_has_given_up_is_ips_refusal_at_its_turn ... ok
test s_udp_us_027_a_failed_next_hop_is_reported_once ... ok
test s_udp_us_027_an_unconnected_socket_is_told_nothing_and_nothing_is_kept_for_another_try ... ok
test s_udp_us_028_only_the_acquisition_socket_sends_from_nowhere ... ok
test s_udp_us_029_the_discover_byte_for_byte ... ok
test s_udp_us_053_a_closed_sockets_datagram_waits_for_its_next_hop_and_holds_back_no_other ... ok

test result: ok. 25 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_net_wire-f032108c85c6be85)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/checksum.rs (target/debug/deps/checksum-26c1ab95e6f630fb)

running 15 tests
test s_ck_001_rfc1071_worked_example ... ok
test s_ck_002_empty_input ... ok
test s_ck_005_streaming_is_split_independent ... ok
test s_ck_003_zeros ... ok
test s_ck_006_carry_of_a_carry ... ok
test s_ck_004_odd_length_pads_with_zero ... ok
test s_ck_008_long_pattern_even_and_odd ... ok
test s_ck_009_verification_by_summing ... ok
test s_ck_010_negative_zero_verifies ... ok
test s_ck_007_many_words_of_ones ... ok
test s_ck_017_pseudo_header ... ok
test s_ck_019_udp_zero_is_sent_as_ffff ... ok
test s_ck_018_tcp_length_is_the_transport_length ... ok
test s_ck_021_every_header_bit_flip_is_caught ... ok
test native_order_sum_matches_the_oracle_at_every_length_and_split ... ok

test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/icmp.rs (target/debug/deps/icmp-6f083cdf9b1bbc39)

running 35 tests
test s_icmp_002_echo_reply ... ok
test quote_total_length_below_its_header_is_refused ... ok
test s_icmp_001_echo_request ... ok
test an_error_with_options_still_fits_576_bytes ... ok
test s_icmp_003_seven_bytes ... ok
test s_icmp_004_echo_without_data ... ok
test s_icmp_005_checksum_changed ... ok
test s_icmp_006_data_changed ... ok
test s_icmp_007_odd_data_length ... ok
test s_icmp_008_echo_code_1 ... ok
test s_icmp_009_port_unreachable ... ok
test s_icmp_010_fragmentation_needed ... ok
test s_icmp_011_fragmentation_needed_without_mtu ... ok
test s_icmp_012_rfc4884_length_byte ... ok
test s_icmp_013_unreachable_codes ... ok
test s_icmp_014_quote_of_19_bytes ... ok
test s_icmp_015_quote_short_of_8_payload_bytes ... ok
test s_icmp_016_quote_with_options ... ok
test s_icmp_017_quote_with_options_short ... ok
test s_icmp_018_quote_not_ipv4 ... ok
test s_icmp_019_quoted_checksum_not_verified ... ok
test s_icmp_020_rfc4884_padding_beyond_the_quoted_length ... ok
test s_icmp_021_time_exceeded ... ok
test s_icmp_022_parameter_problem ... ok
test s_icmp_023_redirect ... ok
test s_icmp_024_timestamp_request_refused_by_type ... ok
test s_icmp_026_timestamp_reply_refused_by_type ... ok
test s_icmp_025_timestamp_fields_are_never_read ... ok
test s_icmp_027_source_quench ... ok
test s_icmp_028_deprecated_types ... ok
test s_icmp_029_router_discovery ... ok
test s_icmp_030_unknown_types ... ok
test s_icmp_047_echo_reply_to_odd_data ... ok
test s_icmp_031_checksum_before_type ... ok
test s_icmp_048_unreachable_zeroes_unused_bytes ... ok

test result: ok. 35 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/igmp.rs (target/debug/deps/igmp-8ff315b0c325e885)

running 29 tests
test igmp3_join_frame ... ok
test igmp3_is_include_lists_its_sources ... ok
test igmp3_leave_current_and_unspecified_source ... ok
test igmp3_records_layout ... ok
test s_igmp_002_v2_general_query ... ok
test s_igmp_001_v2_report ... ok
test s_igmp_004_v3_general_query ... ok
test s_igmp_003_v1_query ... ok
test s_igmp_005_v3_exponential_code ... ok
test s_igmp_006_v2_codes_are_linear ... ok
test s_igmp_007_v3_largest_code ... ok
test s_igmp_009_sources_overrun ... ok
test s_igmp_008_group_and_source_query ... ok
test s_igmp_010_bytes_after_sources_ignored ... ok
test s_igmp_011_query_of_9_to_11_bytes ... ok
test s_igmp_012_seven_bytes ... ok
test s_igmp_013_checksum_changed ... ok
test s_igmp_014_trailing_bytes_ignored ... ok
test s_igmp_015_checksum_covers_trailing_bytes ... ok
test s_igmp_016_query_group_unicast ... ok
test s_igmp_017_report_group_not_multicast ... ok
test s_igmp_018_leave ... ok
test s_igmp_019_v1_report_max_response_ignored ... ok
test s_igmp_020_v3_report_unsupported ... ok
test s_igmp_021_unknown_types ... ok
test s_igmp_022_checksum_before_type ... ok
test s_igmp_026_emit_join_frame ... ok
test s_igmp_027_emit_leave ... ok
test s_igmp_030_emitted_max_response_is_zero ... ok

test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/ipv4.rs (target/debug/deps/ipv4-d9a04a010cb3434f)

running 54 tests
test s_ip_002_minimal_datagram ... ok
test s_ip_003_nineteen_bytes ... ok
test s_ip_001_udp_datagram_fields ... ok
test s_ip_004_version_6 ... ok
test s_ip_005_version_5 ... ok
test s_ip_006_header_length_below_5 ... ok
test s_ip_007_header_overrun ... ok
test s_ip_008_total_below_header ... ok
test s_ip_009_total_zero ... ok
test s_ip_010_total_inside_options ... ok
test s_ip_011_total_overrun ... ok
test s_ip_012_truncated_fragment_is_truncated ... ok
test s_ip_014_padded_igmp_body ... ok
test s_ip_013_link_padding_is_not_payload ... ok
test s_ip_015_checksum_off_by_one ... ok
test s_ip_016_checksum_zero_is_checked ... ok
test s_ip_017_options_are_covered ... ok
test s_ip_018_payload_is_not_covered ... ok
test s_ip_019_reserved_flag_is_kept ... ok
test s_ip_020_df_and_mf ... ok
test s_ip_021_first_fragment ... ok
test s_ip_022_last_fragment ... ok
test s_ip_023_largest_offset ... ok
test s_ip_024_dscp_and_ecn ... ok
test s_ip_027_identification_of_atomic_datagram ... ok
test s_ip_028_largest_datagram ... ok
test s_ip_030_emit_udp_datagram ... ok
test s_ip_029_protocol_numbers ... ok
test s_ip_031_emit_router_alert ... ok
test s_ip_032_option_padding ... ok
test s_ip_033_forty_option_bytes ... ok
test s_ip_036_ttl_zero ... ok
test s_ip_034_largest_total_length ... ok
test s_ip_037_invalid_sources ... ok
test s_ip_038_emit_over_junk ... ok
test s_ip_039_atomic_form ... ok
test s_ip_040_emit_dscp_and_ecn ... ok
test s_ipo_001_nops_and_eol_are_not_options ... ok
test s_ipo_002_record_route ... ok
test s_ipo_003_router_alert ... ok
test s_ipo_004_router_alert_length ... ok
test s_ipo_005_option_length_one ... ok
test s_ipo_006_option_length_zero_terminates ... ok
test s_ipo_007_option_overrun ... ok
test s_ipo_008_kind_in_last_byte ... ok
test s_ipo_009_bytes_after_eol_ignored ... ok
test s_ipo_010_router_alert_without_eol ... ok
test s_ipo_011_unknown_kind_is_opaque ... ok
test s_ipo_013_option_past_a_full_area ... ok
test s_ipo_012_option_filling_the_area ... ok
test s_ipo_014_repeated_options_in_order ... ok
test s_ipo_015_stream_id_exposed ... ok
test s_ipo_016_security_option_exposed ... ok
test source_routes_cannot_be_built ... ok

test result: ok. 54 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/link.rs (target/debug/deps/link-0ac7b2fe1286de12)

running 43 tests
test s_arp_004_announcement ... ok
test s_arp_001_request ... ok
test s_arp_003_probe ... ok
test s_arp_005_twenty_seven_bytes ... ok
test s_arp_006_seven_bytes ... ok
test s_arp_008_hardware_zero ... ok
test s_arp_007_ieee802_hardware ... ok
test s_arp_009_protocol_ipv6 ... ok
test s_arp_011_protocol_length_16 ... ok
test s_arp_012_types_before_lengths ... ok
test s_arp_002_reply ... ok
test s_arp_010_hardware_length_7 ... ok
test s_arp_014_padding_ignored ... ok
test s_arp_013_other_operations ... ok
test s_arp_015_request_target_mac_exposed ... ok
test s_arp_022_interface_mac_is_individual ... ok
test s_arp_021_emit_probe_and_announcement ... ok
test s_arp_020_emit_reply ... ok
test s_arp_019_emit_request ... ok
test s_eth_001_arp_request_frame ... ok
test s_eth_002_udp_frame_without_padding ... ok
test s_eth_003_thirteen_bytes_truncated ... ok
test s_eth_004_header_alone_has_an_empty_body ... ok
test s_eth_005_short_frame_accepted ... ok
test s_eth_006_length_1500_is_a_length_frame ... ok
test s_eth_007_length_0_is_a_length_frame ... ok
test s_eth_008_type_1501_is_undefined ... ok
test s_eth_009_type_1535_is_undefined ... ok
test s_eth_010_type_0600_is_another_ethertype ... ok
test s_eth_013_customer_tag ... ok
test s_eth_014_priority_tag ... ok
test s_eth_015_service_then_customer_tag ... ok
test s_eth_016_three_tags ... ok
test s_eth_017_truncated_tag ... ok
test s_eth_018_inner_length_field ... ok
test s_eth_019_9100_is_not_a_tag ... ok
test s_eth_020_group_source ... ok
test s_eth_021_destination_classes ... ok
test s_eth_026_emit_arp_request ... ok
test s_eth_027_emit_over_junk ... ok
test s_eth_028_minimum_body_padding ... ok
test s_eth_029_maximum_body ... ok
test s_eth_031_multicast_mac_mapping ... ok

test result: ok. 43 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/roundtrip.rs (target/debug/deps/roundtrip-a45f1ba99a2eda5b)

running 9 tests
test s_rt_002_canonical_vectors_rebuild ... ok
test s_rt_001_every_vector_reemits_raw ... ok
test s_rt_008_position_independence ... ok
test s_rt_009_zero_copy ... ok
test s_rt_006_truncation_sweep ... ok
test s_rt_003_build_then_parse ... ok
test s_rt_007_single_bit_flips ... ok
test s_rt_004_canonical_idempotence ... ok
test s_rt_005_totality_structured_fuzz ... ok

test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.42s

     Running tests/transport.rs (target/debug/deps/transport-3d0aec961be6bc5e)

running 89 tests
test s_tcp_005_three_sack_blocks ... ok
test s_tcp_009_nineteen_bytes ... ok
test s_tcp_004_sack ... ok
test s_tcp_007_fin ... ok
test s_tcp_002_syn_ack ... ok
test s_tcp_008_odd_length_verifies ... ok
test s_tcp_006_rst ... ok
test s_tcp_013_checksum_changed ... ok
test s_tcp_001_syn ... ok
test s_tcp_003_data ... ok
test s_tcp_010_data_offset_below_5 ... ok
test s_tcp_011_data_offset_past_the_bytes ... ok
test s_tcp_014_checksum_zero_is_checked ... ok
test s_tcp_012_data_offset_15_on_59_bytes ... ok
test s_tcp_015_wrong_source_address ... ok
test s_tcp_016_port_zero ... ok
test s_tcp_017_reserved_bits_kept ... ok
test s_tcp_018_acknowledgment_without_ack ... ok
test s_tcp_019_urgent_pointer_only_with_urg ... ok
test s_tcp_020_any_flag_combination ... ok
test s_tcp_021_ece_and_cwr ... ok
test s_tcp_022_syn_with_data ... ok
test s_tcp_024_window_is_unsigned ... ok
test s_tcp_025_data_offset_before_checksum ... ok
test s_tcp_026_checksum_before_options ... ok
test s_topt_001_no_options ... ok
test s_tcp_023_largest_segment ... ok
test s_topt_002_timestamps_alone ... ok
test s_topt_003_mss_at_odd_offset ... ok
test s_topt_004_eol_first ... ok
test s_topt_005_bytes_after_eol_ignored ... ok
test s_topt_006_mss_length ... ok
test s_topt_007_window_scale_length ... ok
test s_topt_008_sack_permitted_length ... ok
test s_topt_009_timestamps_length ... ok
test s_topt_010_sack_lengths ... ok
test s_topt_011_sack_without_blocks ... ok
test s_topt_012_md5_skipped ... ok
test s_topt_013_unknown_kinds_skipped ... ok
test s_topt_014_length_zero ... ok
test s_topt_015_length_one ... ok
test s_topt_016_timestamps_past_the_area ... ok
test s_topt_017_kind_in_last_byte ... ok
test s_topt_018_repeats ... ok
test s_topt_019_window_scale_above_14 ... ok
test s_topt_020_mss_zero ... ok
test s_topt_021_syn_options_outside_a_syn ... ok
test s_topt_022_sack_in_a_syn ... ok
test s_topt_023_timestamps_in_a_syn ... ok
test s_topt_024_forty_nops ... ok
test s_topt_025_syn_without_timestamps ... ok
test s_tser_001_emit_syn ... ok
test s_tser_002_emit_syn_ack ... ok
test s_tser_003_emit_syn_without_timestamps ... ok
test s_tser_004_emit_syn_layouts ... ok
test s_tser_005_emit_data ... ok
test s_tser_006_emit_sack ... ok
test s_tser_007_sack_block_limits ... ok
test s_tser_009_window_shift_limit ... ok
test s_tser_010_emit_rst ... ok
test s_tser_011_emit_rst_with_timestamps ... ok
test s_tser_012_emitted_reserved_and_urgent_are_zero ... ok
test s_tser_013_emit_odd_segment ... ok
test s_tser_014_emit_over_junk ... ok
test s_tser_015_too_long ... ok
test s_udp_001_dns_query ... ok
test s_udp_002_ffff_verifies ... ok
test s_udp_003_seven_bytes ... ok
test s_udp_005_length_overrun ... ok
test s_udp_004_length_below_header ... ok
test s_udp_006_surplus_after_length_ignored ... ok
test s_udp_007_checksum_covers_only_the_length ... ok
test s_udp_009_no_checksum_catches_nothing ... ok
test s_udp_010_wrong_checksum ... ok
test s_udp_008_no_checksum ... ok
test s_udp_011_pseudo_header_catches_misdelivery ... ok
test s_udp_012_destination_port_zero ... ok
test s_udp_013_source_port_zero ... ok
test s_udp_014_largest_datagram ... ok
test s_udp_015_length_checked_before_checksum ... ok
test s_udp_019_emit_dns_query ... ok
test s_udp_020_emit_computed_zero_as_ffff ... ok
test s_udp_021_always_checksummed ... ok
test s_udp_022_too_long ... ok
test s_udp_023_zero_port_cannot_be_built ... ok
test s_udp_024_emit_hi ... ok
test tcp_pseudo_header_names_protocol_6 ... ok
test udp_pseudo_header_names_protocol_17 ... ok
test s_udp_016_the_one_undetectable_bit_flip ... ok

test result: ok. 89 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_osrelease-09a59d8671ed2005)

running 8 tests
test tests::a_dirty_x86_build_reads_so ... ok
test tests::a_file_that_is_not_text_is_refused ... ok
test tests::a_missing_or_doubled_field_is_refused_by_its_name ... ok
test tests::a_value_the_build_does_not_write_is_refused_by_its_field ... ok
test tests::a_file_the_build_did_not_write_is_refused ... ok
test tests::uname_names_a_dirty_tree ... ok
test tests::every_file_the_build_writes_is_os_release ... ok
test tests::what_the_build_writes_is_what_a_reader_reads ... ok

test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_pci-7ff80e815435f5b2)

running 75 tests
test af::tests::a_function_resets_only_with_both_bits ... ok
test aperture::tests::nothing_is_inside_a_machine_that_named_no_window ... ok
test af::tests::pending_is_bit_zero_of_status ... ok
test aperture::tests::the_window_an_extent_is_inside_is_the_one_named ... ok
test bar::tests::a_32_bit_memory_bar_is_its_own_whole_address ... ok
test bar::tests::a_64_bit_memory_bar_takes_the_register_after_it ... ok
test bar::tests::a_placement_moves_the_address_and_keeps_the_devices_own_bits ... ok
test bar::tests::a_sizing_mask_decodes_to_the_spec_size ... ok
test bar::tests::a_sizing_mask_that_describes_no_size_is_refused ... ok
test bar::tests::a_wide_bar_has_no_address_until_the_high_half_arrives ... ok
test bar::tests::a_wide_claim_in_the_last_slot_is_refused_by_name ... ok
test bar::tests::an_address_a_bar_cannot_hold_is_refused_by_name ... ok
test bar::tests::an_io_bar_whose_bit_2_is_clear_is_not_a_32_bit_memory_bar ... ok
test bar::tests::an_io_bar_whose_bit_2_is_set_is_not_a_64_bit_memory_bar ... ok
test bar::tests::an_unassigned_bar_is_refused_rather_than_mapped_at_zero ... ok
test bar::tests::every_io_bar_is_refused_whatever_the_bits_above_it_say ... ok
test bar::tests::prefetchable_is_read_and_is_not_part_of_the_address ... ok
test bar::tests::the_reserved_type_encodings_are_refused_by_name ... ok
test bar::tests::the_shapes_real_controllers_publish_still_decode ... ok
test bridge::tests::a_64_bit_prefetchable_window_is_its_upper_dwords_too ... ok
test bridge::tests::a_disabled_window_is_no_window ... ok
test bridge::tests::the_limit_names_the_last_megabyte_and_not_the_first_free_one ... ok
test bridge::tests::the_type_field_is_not_part_of_the_address ... ok
test caps::tests::a_forward_chain_is_followed_to_its_end ... ok
test caps::tests::a_pointer_below_the_standard_header_is_refused ... ok
test caps::tests::a_pointer_that_is_not_dword_aligned_is_refused ... ok
test caps::tests::a_pointer_to_a_visited_link_ends_the_walk ... ok
test caps::tests::the_terminator_ends_the_walk ... ok
test caps::tests::the_walk_is_bounded_by_the_distinct_offsets_it_can_hold ... ok
test express::tests::initiating_a_reset_preserves_the_rest_of_device_control ... ok
test express::tests::only_a_version_two_structure_holds_device_control_2 ... ok
test express::tests::only_bit_twenty_eight_says_a_function_resets ... ok
test express::tests::restoring_device_control_never_starts_a_reset ... ok
test msi::tests::a_function_without_per_vector_masking_offers_no_mask_register ... ok
test msi::tests::a_narrow_function_has_no_upper_address_register ... ok
test msi::tests::disabling_clears_the_enable_bit_and_nothing_else ... ok
test msi::tests::enabling_keeps_what_the_function_said_about_itself ... ok
test msi::tests::multiple_message_capable_is_an_exponent ... ok
test msi::tests::the_capable_field_is_not_the_enable_field ... ok
test msi::tests::the_layout_moves_with_the_address_width ... ok
test msix::tests::a_reserved_indicator_is_refused_rather_than_indexed ... ok
test msix::tests::a_table_past_the_address_space_is_refused_rather_than_wrapped ... ok
test msix::tests::an_entry_is_four_dwords_in_the_order_the_spec_gives_them ... ok
test msix::tests::an_unassigned_bar_is_refused_rather_than_written_at_its_offset ... ok
test msix::tests::bir_and_offset_share_one_register ... ok
test msix::tests::disabling_masks_as_well_and_keeps_the_size ... ok
test msix::tests::enabling_clears_the_function_wide_mask_and_keeps_the_size ... ok
test msix::tests::table_size_is_encoded_one_less_than_it_is ... ok
test msix::tests::the_control_bits_are_not_part_of_the_size ... ok
test msix::tests::the_indicator_is_not_added_to_the_offset ... ok
test placement::tests::a_released_address_is_offered_again ... ok
test placement::tests::a_reserved_address_is_never_offered_twice ... ok
test placement::tests::a_run_is_free_and_in_one_list_once ... ok
test placement::tests::a_run_is_offered_aligned_to_the_span_and_not_at_its_start ... ok
test placement::tests::a_run_that_straddles_a_windows_edge_offers_the_part_inside_it ... ok
test placement::tests::a_span_that_runs_past_a_window_is_not_inside_it ... ok
test placement::tests::an_extent_inside_another_opens_no_run ... ok
test placement::tests::edk2_offers_a_64_bit_bar_the_window_it_declared ... ok
test placement::tests::edk2s_32_bit_runs_are_the_ones_its_boot_printed ... ok
test placement::tests::edk2s_64_bit_runs_are_the_ones_its_boot_printed ... ok
test placement::tests::every_address_the_t14_offers_is_inside_the_window_its_firmware_named ... ok
test placement::tests::largest_run_first_still_offers_no_address_outside_a_window ... ok
test placement::tests::nothing_is_offered_where_firmware_named_no_window ... ok
test placement::tests::nothing_is_offered_where_nothing_fits ... ok
test placement::tests::taken_is_read_in_any_order_and_overlapping ... ok
test pm::tests::a_transition_changes_the_state_bits_and_clears_no_event ... ok
test pm::tests::no_soft_reset_is_bit_three_and_nothing_else ... ok
test probe::tests::a_function_the_table_knows_nothing_about_is_read_at_its_base ... ok
test probe::tests::a_transitional_virtio_id_is_not_a_modern_one ... ok
test probe::tests::neither_answer_of_an_unanswered_read_is_a_reference ... ok
test slot::tests::a_function_goes_back_to_its_own_residue_ahead_of_a_free_slot ... ok
test slot::tests::a_held_function_is_owned ... ok
test slot::tests::a_release_keeps_the_slot_only_for_a_residue ... ok
test slot::tests::a_second_function_takes_a_free_slot_and_never_anothers_residue ... ok
test slot::tests::other_functions_residues_are_no_free_slot ... ok

test result: ok. 75 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_phys-c49bd095cfbce5ca)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/phys.rs (target/debug/deps/phys-b4944d8f9cc17b5b)

running 2 tests
test a_words_address_field_is_its_bits_from_the_alignment_to_47 ... ok
test an_address_off_its_alignment_or_past_48_bits_is_no_address ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_ps2-865fc29c56dec46f)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/decode.rs (target/debug/deps/decode-b9d132b3ab6ece29)

running 20 tests
test a_device_reset_is_reported_and_aa_is_still_a_legal_head_byte ... ok
test a_healthy_stream_discards_nothing_and_leaves_no_byte_unaccounted ... ok
test a_sequence_is_pending_until_the_byte_that_ends_it ... ok
test a_stale_partial_is_abandoned_rather_than_completed ... ok
test an_implausible_byte_at_a_boundary_costs_exactly_itself ... ok
test buttons_are_already_in_hid_order ... ok
test a_stream_truncated_at_any_offset_resyncs_within_two_packets ... ok
test every_usage_the_rest_of_the_tree_names_is_reachable ... ok
test deltas_are_nine_bit_and_dy_is_inverted ... ok
test left_shift_break_is_not_read_as_a_reset ... ok
test make_and_break_and_the_e0_prefix ... ok
test no_legal_head_byte_is_ever_discarded ... ok
test overflow_drops_the_motion_and_keeps_the_buttons ... ok
test overrun_codes_report_lost_and_clear_the_prefix_state ... ok
test page_up_and_down_decode_to_their_hid_usages ... ok
test pause_consumes_exactly_six_bytes_and_emits_nothing ... ok
test printscreen_emits_one_usage_and_no_phantom_shift ... ok
test tables_hold_only_real_usages_and_no_duplicates ... ok
test the_iso_key_is_the_one_the_layouts_carry ... ok
test unmapped_scancodes_emit_nothing ... ok

test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/fuzz.rs (target/debug/deps/fuzz-10bab5efbca8d384)

running 4 tests
test a_lost_scancode_byte_never_wedges_the_prefix_state ... ok
test a_lost_byte_costs_exactly_the_packet_it_landed_in ... ok
test arbitrary_bytes_never_kill_the_key_decoder ... ok
test arbitrary_bytes_never_kill_the_mouse_decoder ... ok

test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s

     Running unittests src/lib.rs (target/debug/deps/toyos_quiesce-5d1a3c0b3af85a47)

running 8 tests
test tests::a_sweep_with_nothing_left_running_ends_the_wait_however_long_it_took ... ok
test tests::a_line_that_is_not_a_record_is_refused_rather_than_half_read ... ok
test tests::an_empty_machine_is_already_stopped ... ok
test tests::the_budget_ends_the_wait_and_the_boundary_is_inclusive ... ok
test tests::every_other_thread_stops_the_log_writer_included ... ok
test tests::every_record_reads_back_as_itself_off_a_line_of_log ... ok
test tests::the_caller_is_never_stopped_and_its_siblings_always_are ... ok
test tests::the_record_names_the_shortfall_only_when_there_is_one ... ok

test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_random-64acf0669f0221a9)

running 12 tests
test tests::a_quarter_round_moves_its_four_words_of_the_state_and_no_other ... ok
test tests::a_draw_is_the_blocks_the_module_states ... ok
test tests::a_stream_does_not_repeat_where_32_bits_of_counter_end ... ok
test tests::a_taken_seed_leaves_zeros_where_it_was_handed ... ok
test tests::a_wipe_leaves_zeros ... ok
test tests::bytes_a_failed_source_leaves_are_no_seed ... ok
test tests::bytes_of_another_length_are_no_seed ... ok
test tests::the_block_function_gives_appendix_a_1s_keystreams ... ok
test tests::every_seed_mixed_moves_the_draw_and_none_replaces_another ... ok
test tests::the_block_function_is_rfc_8439s ... ok
test tests::the_key_a_draw_was_made_under_is_gone_when_it_returns ... ok
test tests::the_quarter_round_is_rfc_8439s ... ok

test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_rootimage-bc7ec56e0c787578)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/chunk.rs (target/debug/deps/chunk-79c4a0c5816dfff2)

running 12 tests
test a_chunk_larger_than_the_extent_is_one_request_of_the_extent ... ok
test a_granularity_dividing_the_bound_leaves_it_alone ... ok
test a_granularity_past_the_bound_is_not_taken ... ok
test a_bound_off_the_alignment_is_refused - should panic ... ok
test an_odd_granularity_rounds_the_bound_down_to_a_common_multiple ... ok
test a_chunk_off_the_block_is_refused - should panic ... ok
test a_failing_last_partial_chunk_names_its_own_length ... ok
test no_granularity_is_the_bound ... ok
test four_kib_blocks_advance_the_lba_by_their_own_size ... ok
test a_failing_chunk_is_named_by_its_first_lba_and_nothing_after_it_is_asked ... ok
test the_last_chunk_is_whatever_is_left ... ok
test an_exact_multiple_is_whole_chunks ... ok

test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/handoff.rs (target/debug/deps/handoff-e82d58596fcaa2ea)

running 9 tests
test a_start_that_is_not_block_aligned_is_refused ... ok
test a_length_that_is_not_whole_blocks_is_refused ... ok
test an_extent_ending_one_page_past_the_descriptor_is_refused ... ok
test an_extent_inside_one_descriptor_is_held ... ok
test an_extent_starting_one_page_before_the_descriptor_is_refused ... ok
test an_extent_inside_a_descriptor_of_another_type_is_refused ... ok
test an_extent_whose_end_overflows_is_refused ... ok
test an_extent_straddling_two_adjacent_descriptors_of_the_type_is_refused ... ok
test the_whole_descriptor_is_held ... ok

test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_sha2-31caa69bc05ceccb)

running 5 tests
test tests::sha256_byte_vectors ... ok
test tests::sha512_byte_vectors ... ok
test tests::sha256_monte_carlo ... ok
test tests::sha512_monte_carlo ... ok
test tests::every_length_to_4096_in_random_splits_agrees_with_sha2 ... ok

test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.30s

     Running unittests src/lib.rs (target/debug/deps/toyos_sha2_hw-104fbdfa6c07cc4e)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_smmu-e2fc8de15ad5991b)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/encodings.rs (target/debug/deps/encodings-256d1992cc62eecb)

running 27 tests
test a_command_error_is_the_cons_registers_err_field_alone ... ok
test a_context_descriptor_walks_ttb0_alone_under_its_own_asid ... ok
test a_context_descriptors_ips_is_the_units_output_size_and_no_more_than_48_bits ... ok
test a_descriptor_read_back_is_a_table_only_above_level_3 ... ok
test a_descriptor_or_a_mapping_past_the_units_output_size_is_refused ... ok
test a_queue_is_inside_the_units_size_and_aligned_to_its_own ... ok
test a_queues_indexes_say_empty_full_and_slot_as_a_count_would ... ok
test a_stream_table_is_linear_inside_the_units_streams_and_aligned_to_its_size ... ok
test a_reserved_size_is_refused_and_the_largest_defined_one_is_not ... ok
test a_translating_entry_is_stage_1_alone_through_one_context_descriptor ... ok
test a_table_or_queue_past_the_units_output_size_is_refused ... ok
test a_unit_that_is_not_coherent_is_refused_unless_the_iort_says_it_is ... ok
test a_translation_fault_names_its_stream_its_address_and_whether_it_wrote ... ok
test a_unit_that_lacks_what_the_configuration_needs_is_refused_by_name ... ok
test a_units_output_size_is_idr5s_and_bounds_what_it_is_given ... ok
test a_units_sizes_are_read_from_their_own_fields ... ok
test an_aborting_entry_is_valid_and_configured_to_pass_nothing ... ok
test an_address_past_the_input_or_off_the_leafs_alignment_has_no_plan ... ok
test an_asid_is_no_wider_than_the_units ... ok
test an_error_is_active_while_the_two_registers_differ_in_its_bit ... ok
test consuming_an_event_acknowledges_an_overflow_and_never_raises_one ... ok
test each_command_holds_its_opcode_and_parameters_where_its_diagram_has_them ... ok
test memory_is_a_level_2_block_only_its_own_context_and_an_unprivileged_device_reach ... ok
test the_control_values_hold_each_field_where_its_register_has_it ... ok
test the_doorbell_is_one_level_3_page_of_device_memory ... ok
test every_event_number_is_its_own_code_and_only_a_fault_carries_an_attempt ... ok
test the_registers_sit_where_the_register_overview_has_them ... ok

test result: ok. 27 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_ssh-a6086d2f9e646d73)

running 6 tests
test base64::tests::rfc_4648_vectors ... ok
test wire::tests::a_reader_refuses_by_the_fields_name ... ok
test wire::tests::an_mpint_is_written_as_rfc_4251_spells_it ... ok
test hostkey::tests::a_key_ssh_keygen_minted_reads_with_its_fingerprint ... ok
test hostkey::tests::rfc_8032_vectors ... ok
test hostkey::tests::a_key_that_is_not_one_is_refused_by_name ... ok

test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/fuzz.rs (target/debug/deps/fuzz-e819a286a4ee3e0b)

running 2 tests
test every_bent_recording_is_total_and_a_bend_before_the_login_prevents_it ... ok
test every_session_is_total_and_none_logs_in_without_a_right_signature ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.14s

     Running tests/refusals.rs (target/debug/deps/refusals-afbbed9c912eacd8)

running 17 tests
test an_unlisted_key_is_refused_at_the_offer_and_signed ... ok
test a_listed_key_is_asked_to_sign_and_its_signature_logs_in ... ok
test a_channel_serves_one_exec_and_nothing_else ... ok
test every_other_method_is_refused_by_name ... ok
test an_rsa_key_is_refused_by_name ... ok
test an_identification_line_is_held_to_rfc_4253 ... ok
test six_failures_end_the_session ... ok
test the_authorizer_is_asked_again_with_the_signature ... ok
test a_packet_is_held_to_its_caps ... ok
test nothing_but_authentication_is_taken_before_it ... ok
test a_signature_over_anything_else_is_refused ... ok
test a_re_exchange_holds_output_until_its_newkeys ... ok
test a_closed_channel_is_gone ... ok
test the_first_exchange_is_held_to_its_rules ... ok
test a_tampered_sealed_packet_is_refused_in_silence ... ok
test the_windows_bound_both_sides ... ok
test a_channel_message_is_held_to_its_channel ... ok

test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

     Running tests/replay.rs (target/debug/deps/replay-4d62d453bec549d0)

running 9 tests
test a_replay_under_another_seed_does_not_open ... ok
test the_keys_derived_from_a_recorded_exchange_open_what_openssh_sealed ... ok
test a_terrapin_injection_into_the_first_exchange_is_refused ... ok
test a_key_the_server_does_not_name_is_refused_at_the_offer ... ok
test a_forwarding_channel_is_refused_by_name ... ok
test openssh_holding_only_an_rsa_key_offers_none ... ok
test an_exec_openssh_ran_replays ... ok
test an_exec_fed_stdin_replays ... ok
test a_session_the_client_rekeyed_three_times_replays ... ok

test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/vectors.rs (target/debug/deps/vectors-aadc41bf6c3b6bb2)

running 2 tests
test rfc_7748_section_6_1 ... ok
test a_client_key_that_makes_a_zero_secret_is_refused ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_swap-18fe9737826b71b6)

running 5 tests
test tests::every_word_is_spelled_once ... ok
test tests::a_request_round_trips_and_a_path_it_did_not_stage_is_refused ... ok
test tests::an_installed_binary_is_named_by_its_service_under_its_digest ... ok
test tests::the_digest_is_sha256 ... ok
test tests::verify_refuses_other_bytes_and_names_both_digests ... ok

test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_symbols-d71ac14f27e7c708)

running 6 tests
test tests::file_range_refuses_an_extent_past_the_end ... ok
test tests::file_range_answers_an_extent_wholly_inside ... ok
test tests::a_short_name_is_untouched ... ok
test tests::file_range_refuses_an_extent_the_addition_overflows ... ok
test tests::locate_refuses_bytes_too_short_for_a_file_header ... ok
test tests::a_name_past_head_plus_tail_is_elided ... ok

test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/frame.rs (target/debug/deps/frame-549248d1a1b4dde1)

running 12 tests
test a_build_id_is_one_to_32_bytes ... ok
test a_frame_cut_at_any_byte_is_not_that_frame ... ok
test a_line_that_is_no_frame_is_none ... ok
test a_name_holding_the_grammars_bytes_reads_back_whole ... ok
test an_escape_no_encoder_writes_is_refused ... ok
test an_id_that_is_not_lowercase_hex_bytes_is_refused ... ok
test an_elided_name_keeps_offset_and_id_and_is_refused ... ok
test an_offset_is_in_the_files_addresses ... ok
test every_byte_below_space_reads_back ... ok
test the_kernels_exact_line ... ok
test a_frame_reads_back_as_written ... ok
test no_line_panics_the_reader ... ok

test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.17s

     Running tests/name.rs (target/debug/deps/name-94941e34e548bd1b)

running 7 tests
test a_file_that_cannot_name_says_why ... ok
test a_real_binarys_offset_names_its_function ... ok
test another_build_is_refused_by_name ... ok
test the_build_the_record_names_is_the_one_named ... ok
test a_name_no_build_id_vouches_for_is_marked_unchecked ... ok
test every_function_names_what_object_reads ... ok
test no_corrupted_file_panics_the_namer ... ok

test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s

     Running tests/real.rs (target/debug/deps/real-906d32e3d8fd282d)

running 3 tests
test a_file_header_locate_cannot_read_answers_none ... ok
test locate_finds_the_same_tables_readelf_reports ... ok
test a_real_binarys_own_functions_resolve_to_their_own_names ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_tco-b560ec1aae25d65d)

running 2 tests
test tests::a_bound_is_read_a_malformed_one_is_not_silence ... ok
test tests::the_lockup_bound_follows_the_deadline_the_boot_named ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/decode.rs (target/debug/deps/decode-9e7b513b5a8bac69)

running 11 tests
test a_base_the_block_cannot_live_at_is_refused_by_name ... ok
test a_bound_becomes_the_timer_whose_expiries_do_not_outrun_it ... ok
test a_machine_no_row_names_is_refused_rather_than_guessed ... ok
test an_absent_device_reading_all_ones_names_no_port ... ok
test the_declared_control_words_run_and_halt_the_timer ... ok
test no_two_rows_name_one_device ... ok
test the_last_register_has_to_end_inside_the_port_space ... ok
test the_loaders_bound_is_exact_under_ten_seconds_and_reaches_the_hardware ... ok
test the_q35_row_reaches_the_port_qemu_puts_the_block_at ... ok
test the_register_offsets_are_ich9_tco_hs ... ok
test the_tiger_lake_row_takes_its_base_from_the_smbus_function ... ok

test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_tmpdir-3d50fab9da3c3e2f)

running 2 tests
test tests::a_directory_the_sweep_cannot_remove_costs_no_process_but_this_one ... ok
test tests::a_held_global_lock_times_out_naming_its_holder ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s

     Running tests/reclaim.rs (target/debug/deps/reclaim-a3d09fbb6a598173)

running 7 tests
test holder ... ok
test a_directory_goes_on_a_return_and_on_a_panic ... ok
test a_killed_process_is_reclaimed_and_a_live_one_is_never_touched ... ok
test a_root_without_an_owner_goes_and_nothing_else_is_touched ... ok
test an_adopted_root_goes_with_its_adopter ... ok
test making_a_root_waits_for_global ... ok
test removing_a_root_waits_for_global ... ok

test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.10s

     Running unittests src/lib.rs (target/debug/deps/toyos_trace-118fa05c8a6508d0)

running 5 tests
test tests::a_kind_the_abi_does_not_name_is_refused_by_its_number ... ok
test tests::a_task_event_with_no_task_is_refused ... ok
test tests::a_wake_names_its_task_and_prints_when_on_which_cpu ... ok
test tests::every_kind_decodes_with_what_its_data_says ... ok
test tests::thread_zero_is_a_thread_and_no_thread_is_said ... ok

test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_transport-3bd612bc26267ae2)

running 10 tests
test arena::tests::a_run_a_peer_names_is_inside_the_arena ... ok
test arena::tests::an_arena_is_whole_slots_after_the_header ... ok
test inflight::tests::a_tag_is_answered_once_and_its_slot_takes_a_new_one ... ok
test inflight::tests::an_end_answers_every_tag_once_and_a_late_completion_nothing ... ok
test queue::tests::a_head_stepped_past_each_push_is_refused_at_the_depth ... ok
test queue::tests::a_peer_cursor_out_of_reach_is_a_violation ... ok
test queue::tests::a_tail_stepped_past_each_pop_is_refused_at_the_depth ... ok
test queue::tests::an_entry_is_nobodys_before_it_is_published ... ok
test queue::tests::the_ring_wraps_and_counts_its_space ... ok
test inflight::tests::a_slot_refilled_past_sixteen_bits_refuses_its_first_tag ... ok

test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/loom.rs (target/debug/deps/loom-c854ee62a195d8a3)

@Japabu

Japabu commented Oct 11, 2026

Copy link
Copy Markdown
Collaborator Author

cargo run -- --ci host on 148c3de, EXIT=0, part 6 of 10

running 3 tests
test a_published_entry_is_read_whole ... ok
test a_hostile_producer_yields_entries_or_a_violation ... ok
test a_hostile_consumer_yields_room_or_a_violation ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s

     Running unittests src/lib.rs (target/debug/deps/toyos_tsc-4fe2724c13a68480)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_untrusted-400c747c6c015828)

running 11 tests
test tests::a_length_may_equal_its_bound_where_an_index_may_not ... ok
test tests::a_value_whose_low_bits_are_in_range_is_still_out_of_range ... ok
test tests::an_empty_table_indexes_nothing ... ok
test tests::a_refusal_says_which_number_and_which_bound ... ok
test tests::an_index_is_below_the_table_it_indexes ... ok
test tests::asking_whether_it_is_a_known_value_is_not_an_exit ... ok
test tests::every_width_widens_rather_than_wrapping ... ok
test tests::decoding_keeps_the_provenance ... ok
test tests::exactly_refuses_by_naming_both_numbers ... ok
test tests::it_is_the_integer_it_wraps ... ok
test tests::two_untrusted_values_compare_with_each_other ... ok

test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_update-3daf4bc75456a972)

running 42 tests
test floor::tests::only_not_found_is_no_variable ... ok
test floor::tests::only_the_loaders_own_variable_is_a_floor_and_nothing_else_is_none ... ok
test floor::tests::a_runtime_variable_that_stays_is_refused ... ok
test floor::tests::a_floor_is_named_for_its_key_and_scope ... ok
test image::tests::a_bent_header_is_refused_by_name ... ok
test image::tests::a_header_reads_back_as_it_was_written ... ok
test floor::tests::a_loader_deletes_the_stale_floors_of_its_scope_and_never_the_owners ... ok
test policy::tests::an_update_must_be_newer_than_what_runs ... ok
test policy::tests::every_word_is_one_parameter_token ... ok
test policy::tests::the_floor_admits_its_own_version_and_above_and_only_rises ... ok
test record::tests::a_hang_kills_only_an_unproven_image ... ok
test record::tests::a_record_reads_back_and_anothers_is_refused ... ok
test image::tests::an_image_splits_into_exactly_its_sections ... ok
test policy::tests::a_boot_tries_the_marked_slot_first_and_the_other_only_if_there_is_one ... ok
test record::tests::how_a_boot_ended_is_what_it_is_recorded_as ... ok
test record::tests::the_first_write_credits_no_image ... ok
test repo::tests::a_document_that_is_not_the_format_is_refused_by_line ... ok
test repo::tests::a_document_past_its_cap_is_refused_unread ... ok
test repo::tests::a_duplicated_signature_does_not_meet_a_threshold ... ok
test repo::tests::a_machines_root_at_the_images_version_with_other_bytes_is_refused ... ok
test repo::tests::a_repository_the_renderer_writes_is_one_the_client_accepts ... ok
test repo::tests::a_lower_sequence_or_a_reissued_one_is_refused ... ok
test repo::tests::a_machines_newer_root_holds_though_the_mirror_withholds_it ... ok
test repo::tests::a_time_is_one_that_exists_and_reads_back ... ok
test repo::tests::an_archive_past_its_length_or_not_its_hash_is_refused ... ok
test repo::tests::a_root_at_the_last_version_is_refused ... ok
test repo::tests::a_root_not_signed_by_the_previous_threshold_is_refused ... ok
test slots::tests::moving_the_mark_is_atomic_against_a_torn_copy ... ok
test repo::tests::base64_has_one_spelling ... ok
test slots::tests::the_checksum_is_crc32 ... ok
test slots::tests::the_idle_slot_is_the_one_whose_root_the_kernel_does_not_hold ... ok
test repo::tests::a_rotated_root_is_walked_and_drops_the_old_keys_floors ... ok
test repo::tests::a_role_version_below_the_held_one_is_refused ... ok
test repo::tests::targets_not_matching_the_timestamp_are_refused ... ok
test sig::tests::the_message_is_sshsigs_signed_data ... ok
test slots::tests::a_grant_claims_only_an_idle_slot_on_the_running_disk ... ok
test slots::tests::a_table_reads_back_and_a_bent_one_is_refused ... ok
test sig::tests::rfc_8032_vectors_verify_and_a_flipped_bit_does_not ... ok
test repo::tests::the_same_version_with_other_bytes_is_refused ... ok
test repo::tests::expired_metadata_is_refused_with_both_times ... ok
test repo::tests::a_signature_in_another_namespace_is_refused ... ok
test repo::tests::a_chain_past_the_walk_bound_is_refused ... ok

test result: ok. 42 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s

     Running tests/repo_oracle.rs (target/debug/deps/repo_oracle-62253b14347252af)

running 1 test
test a_repository_ssh_keygen_signed_is_accepted_and_a_bent_one_is_not ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/sshsig_oracle.rs (target/debug/deps/sshsig_oracle-03024f5bc7f238b2)

running 1 test
test a_header_ssh_keygen_signed_verifies_and_a_bent_one_does_not ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_usbhid-c931916ed71bef5a)

running 15 tests
test keyboard::tests::a_fault_usage_is_refused_and_the_keys_held_stay_held ... ok
test keyboard::tests::a_keyboard_leaving_releases_everything_it_held_and_nothing_else ... ok
test keyboard::tests::a_report_is_a_set_of_keys_and_not_a_list_of_slots ... ok
test keyboard::tests::a_report_is_read_as_appendix_b_lays_it_out ... ok
test keyboard::tests::a_rollover_report_believes_its_modifiers_and_not_its_slots ... ok
test keyboard::tests::a_report_of_any_other_length_is_refused ... ok
test keyboard::tests::modifiers_come_first_then_releases_then_presses ... ok
test keyboard::tests::reports_qemu_sent_read_as_the_keys_that_were_pressed ... ok
test pointer::tests::a_mouse_report_is_read_as_appendix_b_lays_it_out ... ok
test pointer::tests::a_report_of_a_length_its_layout_does_not_have_is_refused ... ok
test pointer::tests::a_tablet_position_off_the_surface_is_refused ... ok
test pointer::tests::a_tablet_report_is_its_position_little_endian ... ok
test pointer::tests::reports_qemu_sent_read_as_the_motion_that_was_sent ... ok
test pointer::tests::every_report_is_read_or_refused_and_nothing_else ... ok
test keyboard::tests::every_report_is_believed_or_refused_and_nothing_else ... ok

test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.10s

     Running unittests src/lib.rs (target/debug/deps/toyos_userbound-3a7cf1e25b85f4ec)

running 43 tests
test fault::tests::a_ring_is_only_ever_what_cs_said ... ok
test place::tests::a_full_window_is_a_refusal_for_a_span_that_could_fit ... ok
test place::tests::a_length_near_the_top_of_u64_is_refused_and_not_summed ... ok
test place::tests::a_hole_between_regions_takes_exactly_span_and_guard ... ok
test place::tests::a_region_at_or_above_the_ceiling_bounds_nothing ... ok
test place::tests::a_span_is_whole_pages ... ok
test place::tests::a_span_from_a_wider_window_is_refused_by_a_narrower_one ... ok
test place::tests::a_zero_length_is_refused ... ok
test place::tests::nothing_is_placed_below_the_floor ... ok
test place::tests::placement_is_top_down_with_the_guard_above ... ok
test place::tests::the_largest_span_is_the_window_less_one_guard ... ok
test port::tests::a_declared_run_refuses_every_run_that_shares_a_port_with_it ... ok
test place::tests::a_window_reaching_the_last_page_of_the_user_half_is_a_kernel_bug - should panic ... ok
test place::tests::a_window_not_2_mib_aligned_is_a_kernel_bug - should panic ... ok
test place::tests::a_window_without_room_for_its_guard_is_a_kernel_bug - should panic ... ok
test port::tests::a_full_declaration_refuses_one_more_run ... ok
test port::tests::a_refused_access_names_the_first_port_it_may_not_touch ... ok
test port::tests::a_fresh_bitmap_refuses_every_port_and_ends_in_ones ... ok
test port::tests::a_run_is_never_empty_and_never_past_the_last_port ... ok
test port::tests::a_held_row_opens_its_ports_and_no_other ... ok
test port::tests::the_last_port_of_the_space_opens_without_touching_the_end_byte ... ok
test port::tests::a_switch_to_a_process_holding_nothing_closes_the_row ... ok
test span::tests::a_range_ending_past_the_bound_is_refused_and_a_wrapping_one_too ... ok
test span::tests::a_vaddr_min_above_the_base_cannot_rebase ... ok
test span::tests::a_zero_sized_object_is_nothing_to_dereference ... ok
test span::tests::an_entry_is_an_address_of_the_user_half_and_nothing_else ... ok
test span::tests::an_image_at_vaddr_zero_rebases_to_the_base_itself ... ok
test span::tests::an_image_that_reaches_the_last_page_of_the_user_half_is_refused ... ok
test segment::tests::a_read_only_page_between_writable_ones_refuses_a_write_only ... ok
test span::tests::an_object_is_refused_for_its_alignment_before_anything_else ... ok
test segment::tests::a_run_that_cannot_be_pinned_refuses_the_window_and_leaves_nothing_pinned ... ok
test span::tests::an_object_may_not_end_past_the_bound ... ok
test segment::tests::an_empty_or_kernel_window_is_refused_before_the_walk ... ok
test span::tests::no_type_may_cross_a_2_mib_boundary ... ok
test segment::tests::a_range_is_looked_up_once_per_leaf ... ok
test segment::tests::an_absent_page_anywhere_refuses_the_window ... ok
test segment::tests::frames_in_order_are_one_segment ... ok
test segment::tests::frames_in_reverse_are_one_segment_per_leaf ... ok
test span::tests::a_kernel_address_is_not_a_user_address ... ok
test segment::tests::the_segments_are_the_maximal_runs_and_cover_the_window_exactly ... ok
test segment::tests::every_run_is_pinned_until_the_window_is_dropped ... ok
test segment::tests::a_read_across_shuffled_frames_gets_the_bytes_at_their_addresses ... ok
test segment::tests::a_write_across_shuffled_frames_lands_where_a_ring_3_load_reads_it ... ok

test result: ok. 43 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.74s

     Running tests/firmware.rs (target/debug/deps/firmware-f550ba53aca71e37)

running 26 tests
test a_byte_for_smi_cmd_is_a_firmware_call_unless_the_fadt_names_it ... ok
test a_later_window_is_held_as_the_first_is ... ok
test a_configuration_read_is_held_to_the_window_and_to_one_register ... ok
test a_memory_bar_is_refused_where_firmware_types_its_range_as_its_own ... ok
test a_port_answers_as_its_declaration_says ... ok
test a_sleep_type_is_three_bits_and_lands_only_in_its_field ... ok
test a_smi_cmd_that_is_the_reset_register_keeps_the_resets_byte ... ok
test a_wide_access_is_held_to_every_port_it_spans ... ok
test a_write_that_reaches_smi_cmd_and_is_no_byte_to_it_is_refused ... ok
test an_address_in_the_ecam_window_is_a_configuration_access_whatever_the_map_types_it ... ok
test an_unlisted_address_below_1_mib_is_refused_whatever_the_range_registers_answer ... ok
test an_unlisted_register_is_read_where_it_is_uncached_and_never_written ... ok
test every_configuration_write_is_refused_by_one_name ... ok
test every_other_type_and_an_unlisted_address_is_refused_with_its_type ... ok
test every_page_a_window_the_kernel_drives_lies_in_is_refused_inside_any_type ... ok
test memory_any_usable_range_holds_is_refused_whatever_lists_it_first ... ok
test memory_past_what_the_kernel_maps_is_refused ... ok
test no_unlisted_address_is_read_where_a_cpus_range_registers_differ ... ok
test nvs_and_reserved_memory_pass_both_ways_to_their_last_byte_and_no_further ... ok
test ram_is_refused_both_ways_whatever_usable_type_it_is ... ok
test runtime_services_code_is_refused_both_ways ... ok
test runtime_services_data_is_read_as_the_tables_memory_is_and_never_written ... ok
test the_facs_is_read_and_its_bytes_are_never_written ... ok
test the_lock_word_is_exchanged_only_where_all_four_bytes_are_the_firmwares_own ... ok
test the_kernel_admits_a_fixed_few_firmware_calls_in_any_period ... ok
test the_tables_memory_is_read_and_never_written ... ok

test result: ok. 26 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_virtio-a74a7ba9bece24c6)

running 39 tests
test tests::a_device_that_never_finishes_its_reset_is_refused_and_written_nothing_more ... ok
test tests::a_device_that_does_not_keep_features_ok_is_refused_and_told_so ... ok
test tests::a_device_without_version_1_is_refused_and_told_so ... ok
test tests::a_chain_is_whole_before_its_index_and_its_index_before_its_notification ... ok
test tests::a_descriptor_table_the_device_rewrote_into_a_loop_is_never_followed ... ok
test tests::a_device_missing_a_structure_is_refused_by_its_name ... ok
test tests::a_32_bit_field_is_read_32_bits_wide_and_only_inside_the_structure ... ok
test tests::a_field_past_the_device_structure_is_refused_and_not_read ... ok
test tests::a_chain_past_the_table_is_the_drivers_mistake - should panic ... ok
test tests::a_chain_over_a_descriptor_in_flight_is_the_drivers_mistake - should panic ... ok
test tests::a_chain_on_a_queue_the_device_was_never_given_is_the_drivers_mistake - should panic ... ok
test tests::a_function_without_a_capability_list_has_no_vendor_capability ... ok
test tests::a_head_past_the_table_is_refused ... ok
test tests::a_head_with_no_chain_in_flight_is_refused ... ok
test tests::a_link_into_the_header_or_round_the_list_is_refused ... ok
test tests::a_new_queue_zeroes_its_parts_and_nothing_else ... ok
test tests::a_notification_is_the_queues_index_at_the_queues_address ... ok
test tests::a_notify_offset_outside_the_notification_structure_is_refused ... ok
test tests::a_published_chain_is_what_the_device_reads ... ok
test tests::a_queue_shallower_than_the_drivers_rings_is_refused ... ok
test tests::a_part_off_its_alignment_is_the_drivers_mistake - should panic ... ok
test tests::a_readable_element_after_a_writable_one_is_the_drivers_mistake - should panic ... ok
test tests::a_queue_size_that_is_no_power_of_two_is_the_drivers_mistake - should panic ... ok
test tests::a_refused_element_does_not_hide_the_ones_behind_it ... ok
test tests::a_refused_read_ends_the_walk_by_the_claims_own_word ... ok
test tests::a_structure_its_bar_does_not_hold_is_refused_and_never_reached ... ok
test tests::a_used_element_is_read_after_the_index_that_counts_it ... ok
test tests::a_used_index_past_what_was_made_available_is_refused_and_nothing_is_read ... ok
test tests::a_ring_past_the_grant_is_the_drivers_mistake - should panic ... ok
test tests::every_link_is_masked_of_its_two_reserved_bits_before_it_is_an_offset ... ok
test tests::structures_in_two_bars_are_refused ... ok
test tests::only_what_the_device_offers_is_accepted ... ok
test tests::more_bytes_than_the_chain_may_be_written_is_refused ... ok
test tests::the_first_capability_of_each_type_in_a_real_bar_is_the_one_used ... ok
test tests::a_vector_the_device_does_not_map_is_refused_and_its_queue_stays_disabled ... ok
test tests::the_initialisation_is_the_sequence_the_specification_orders ... ok
test tests::the_walk_answers_every_vendor_capability_in_the_lists_order ... ok
test tests::both_indices_wrap_at_65536 ... ok
test tests::a_hostile_device_is_believed_only_where_the_model_agrees ... ok

test result: ok. 39 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

     Running unittests src/lib.rs (target/debug/deps/toyos_virtio_sound-2b3056cd159227f1)

running 10 tests
test tests::an_event_is_handed_up_and_its_buffer_posted_again ... ok
test tests::every_code_is_the_specifications_number ... ok
test tests::a_malformed_control_answer_is_refused_by_name ... ok
test tests::a_period_given_back_wrongly_is_refused_by_name ... ok
test tests::periods_go_out_after_one_start_and_come_back_as_a_mask ... ok
test tests::stream_information_is_decoded_at_the_specifications_offsets ... ok
test tests::the_bring_up_sends_the_specifications_bytes_in_its_order ... ok
test tests::the_stream_is_set_to_what_it_offers_or_refused_by_what_it_lacks ... ok
test tests::no_period_is_stranded_between_its_used_element_and_its_notification ... ok
test tests::a_silent_device_and_a_streamless_one_are_refused ... ok

test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.56s

     Running unittests src/lib.rs (target/debug/deps/toyos_wallclock-92c1763fc7b3b98f)

running 6 tests
test tests::an_impossible_instant_is_refused_and_a_leap_day_is_not ... ok
test tests::a_part_is_its_stem_and_number ... ok
test tests::only_logkeepers_own_names_are_logkeepers ... ok
test tests::the_calendar_round_trips_through_the_dates_that_break_one ... ok
test tests::every_time_of_day_this_renders_is_one_it_reads_back ... ok
test tests::every_stem_this_renders_is_one_it_reads_back ... ok

test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/toyos_xhci-90689b098d793eb9)

running 163 tests
test bot::tests::a_break_says_where_it_left_the_device_and_which_event_ended_it ... ok
test bot::tests::a_byte_no_phase_publishes_reads_as_closed ... ok
test bot::tests::a_cbw_is_laid_out_as_the_class_defines_it ... ok
test bot::tests::a_command_or_status_block_that_moved_short_breaks ... ok
test bot::tests::a_command_with_no_data_is_its_command_block_and_its_status ... ok
test bot::tests::a_csw_is_believed_only_when_it_is_valid_and_meaningful ... ok
test bot::tests::a_data_phase_runs_on_the_pipe_its_command_names ... ok
test bot::tests::a_data_phase_whose_pipe_will_not_restart_breaks_as_a_stall ... ok
test bot::tests::a_leg_that_fails_breaks_the_round_trip_where_it_failed ... ok
test bot::tests::a_stalled_data_phase_delivers_what_both_the_controller_and_the_device_say_arrived ... ok
test bot::tests::a_stalled_data_phase_is_restarted_and_its_status_read ... ok
test bot::tests::a_stalled_status_is_asked_for_again_once ... ok
test bot::tests::a_restart_answered_with_a_transfer_is_a_driver_bug - should panic ... ok
test bot::tests::a_status_stalled_after_a_data_stall_is_still_asked_for_again ... ok
test bot::tests::every_phase_but_the_closed_one_is_a_device_holding_a_command ... ok
test bot::tests::every_phase_survives_the_byte_it_is_published_as ... ok
test bot::tests::no_two_phases_are_named_the_same_thing ... ok
test bot::tests::what_is_delivered_is_what_both_the_controller_and_the_device_say_arrived ... ok
test call::tests::a_call_that_enters_the_ladder_a_rung_up_finds_that_rung_whole ... ok
test call::tests::a_call_whose_transport_has_not_broken_is_clipped_and_refused_nothing ... ok
test call::tests::a_command_sent_again_after_a_hold_leaves_the_last_rung_its_bound ... ok
test call::tests::a_command_sent_again_is_clipped_to_where_the_next_rung_begins ... ok
test call::tests::a_read_whose_wait_spent_the_operation_goes_out_again_after_the_port_reset_took ... ok
test call::tests::a_rung_entered_early_gets_its_own_bound_and_not_the_calls ... ok
test call::tests::a_rung_is_never_starved_by_what_was_spent_before_it ... ok
test call::tests::a_second_break_in_the_same_call_does_not_extend_it ... ok
test call::tests::a_silent_controller_is_sent_no_command_in_any_rung_and_its_port_is_still_reset ... ok
test call::tests::a_wait_is_cut_only_when_its_window_ended_it ... ok
test call::tests::nothing_but_the_command_sent_again_outlives_the_operations_budget ... ok
test configure::tests::a_bind_adds_and_drops_nothing ... ok
test configure::tests::a_binds_slot_context_names_the_speed_and_the_port ... ok
test configure::tests::a_recovery_drops_and_adds_both_endpoints ... ok
test configure::tests::a_recoverys_slot_context_is_context_entries_and_zeroes ... ok
test configure::tests::an_endpoint_context_carries_the_descriptors_own_numbers ... ok
test configure::tests::context_entries_is_the_higher_index_of_the_pair ... ok
test configure::tests::nothing_but_the_pair_is_ever_dropped ... ok
test descriptor::tests::a_configuration_names_its_interfaces_and_steps_over_its_endpoints ... ok
test configure::tests::the_recovery_describes_the_endpoints_exactly_as_the_bind_did ... ok
test descriptor::tests::a_device_descriptor_names_its_maker_its_product_and_its_class ... ok
test descriptor::tests::a_length_that_would_not_move_the_walk_is_refused ... ok
test descriptor::tests::a_short_answer_or_another_type_is_refused_by_name ... ok
test descriptor::tests::only_alternate_setting_zero_is_named ... ok
test descriptor::tests::the_walk_is_bounded_by_the_total_and_by_what_arrived ... ok
test enumerate::tests::a_boot_keyboard_is_addressed_described_configured_and_bound ... ok
test enumerate::tests::a_configuration_with_nothing_to_bind_is_refused_where_it_is_read ... ok
test enumerate::tests::a_device_that_answered_set_protocol_recovers_nothing ... ok
test enumerate::tests::a_stalled_set_protocol_recovers_ep0_before_the_endpoints_are_configured ... ok
test enumerate::tests::a_device_that_states_another_packet_size_has_its_ep0_evaluated ... ok
test enumerate::tests::a_stated_packet_size_a_device_of_that_speed_cannot_have_is_refused ... ok
test enumerate::tests::every_route_configures_its_endpoints_last ... ok
test enumerate::tests::every_speed_has_one_control_packet_size_or_none ... ok
test enumerate::tests::only_an_interface_with_a_boot_protocol_is_asked_for_one ... ok
test flush::tests::a_loss_is_counted_once_and_never_uncounted ... ok
test flush::tests::a_device_with_no_cache_owes_nothing_and_keeps_the_count ... ok
test flush::tests::a_write_is_owed_until_a_flush_that_succeeded_and_not_after ... ok
test identity::tests::a_device_that_differs_in_any_field_is_a_new_disk ... ok
test identity::tests::a_device_with_no_readable_serial_is_never_adopted ... ok
test identity::tests::a_disk_is_waited_for_only_after_a_reset_of_ours_and_only_inside_the_window ... ok
test identity::tests::a_language_is_read_only_from_a_string_descriptor_that_carries_one ... ok
test identity::tests::a_serial_prints_as_the_characters_it_carries_and_nothing_else ... ok
test identity::tests::a_string_descriptor_is_read_only_whole_and_well_formed ... ok
test identity::tests::the_same_device_is_the_same_disk ... ok
test job::tests::a_cancelled_operation_leaves_the_slot_free ... ok
test job::tests::a_completion_for_another_trb_is_not_this_one ... ok
test job::tests::a_data_stage_does_not_end_a_transfer_that_still_owes_its_status ... ok
test job::tests::a_failing_stage_ends_the_transfer_whatever_is_still_owed ... ok
test job::tests::a_failing_status_stage_is_the_answer ... ok
test job::tests::a_late_completion_from_an_abandoned_transfer_answers_nobody ... ok
test job::tests::a_stage_is_answered_by_its_own_trb_and_in_its_own_order ... ok
test job::tests::a_transfer_matches_on_its_trb_and_on_both_halves_of_its_endpoint ... ok
test job::tests::a_transfer_moved_what_its_residue_did_not_leave ... ok
test job::tests::a_transfer_that_answers_one_stage_and_stops_is_silent ... ok
test job::tests::an_answer_outlives_the_deadline ... ok
test job::tests::an_empty_slot_is_not_busy_and_has_no_deadline ... ok
test job::tests::only_the_first_answer_counts ... ok
test job::tests::the_deadline_produces_silence_and_nothing_else ... ok
test job::tests::the_residue_is_the_first_stages_and_the_code_is_the_last ... ok
test ladder::tests::a_break_before_a_data_out_phase_is_done_leaves_the_device_owed_it ... ok
test ladder::tests::a_break_elsewhere_climbs_every_rung ... ok
test ladder::tests::a_device_is_addressed_again_only_as_what_it_was_enumerated_as ... ok
test job::tests::submitting_over_an_outstanding_operation_panics - should panic ... ok
test ladder::tests::a_device_owed_data_out_is_never_given_the_class_reset ... ok
test ladder::tests::a_run_climbs_one_rung_per_break_until_a_round_trip_ends_it ... ok
test ladder::tests::a_rung_that_did_not_verify_left_exactly_where_its_port_no_longer_holds_the_device ... ok
test ladder::tests::every_run_of_breaks_climbs_strictly_and_ends_offline_after_a_port_reset ... ok
test ladder::tests::only_a_quiesce_that_failed_lets_the_rung_go_on ... ok
test ladder::tests::only_a_run_that_begins_owed_data_out_skips_the_class_reset ... ok
test ladder::tests::the_port_rung_resets_then_addresses_then_configures_then_asks ... ok
test late::tests::a_ring_that_keeps_producing_is_given_up_on_one_ring_past_the_deadline ... ok
test late::tests::an_answer_posted_before_the_deadline_passed_is_taken_after_it ... ok
test late::tests::before_the_deadline_nothing_is_given_up ... ok
test late::tests::past_the_deadline_the_first_empty_read_ends_the_wait ... ok
test port::tests::a_device_found_at_bring_up_is_never_enumerated_without_a_reset ... ok
test port::tests::a_device_its_class_reset_did_not_bring_back_gets_the_most_reset_its_port_has ... ok
test port::tests::a_port_whose_belief_moved_is_outstanding_until_it_is_read ... ok
test port::tests::a_warm_reset_is_finished_only_once_the_controller_has_cleared_pr ... ok
test port::tests::an_adopted_port_is_enumerated_by_its_reset_and_not_by_its_link ... ok
test portsc::tests::a_port_holds_its_device_only_while_it_reads_connected_with_no_change_unconsumed ... ok
test portsc::tests::a_write_never_carries_ped ... ok
test portsc::tests::a_write_never_sets_ped_and_pr_together ... ok
test portsc::tests::an_unseen_change_survives_the_acknowledge ... ok
test portsc::tests::bits_are_where_the_table_puts_them ... ok
test portsc::tests::neutral_keeps_exactly_the_bits_that_are_safe_to_write_back ... ok
test portsc::tests::powering_a_port_down_moves_that_bit_and_no_other ... ok
test protocol::tests::a_conformant_pair_covers_the_machine ... ok
test protocol::tests::a_port_claimed_twice_keeps_the_first_claim ... ok
test protocol::tests::a_range_that_would_wrap_is_refused_rather_than_folded ... ok
test protocol::tests::firmware_that_makes_no_sense_is_refused_by_name ... ok
test recovery::tests::a_halted_endpoint_is_reset_and_then_cleared_at_the_device ... ok
test recovery::tests::a_running_endpoint_is_stopped_and_never_cleared ... ok
test recovery::tests::a_stopped_endpoint_only_needs_its_ring_back ... ok
test recovery::tests::an_endpoint_in_error_only_needs_its_ring_back ... ok
test recovery::tests::disabled_and_reserved_states_are_refused_by_name ... ok
test recovery::tests::every_recovery_rebuilds_the_ring_exactly_once ... ok
test recovery::tests::only_a_halted_endpoint_is_cleared_at_the_device ... ok
test recovery::tests::the_bus_is_reached_only_after_every_command ... ok
test recovery::tests::the_endpoint_state_field_decodes_to_every_value_three_bits_can_hold ... ok
test reset_recovery::tests::a_command_that_took_is_not_issued_again_over_a_field_that_lags ... ok
test reset_recovery::tests::a_context_state_error_is_followed_by_the_command_for_where_the_pipe_went ... ok
test reset_recovery::tests::a_disabled_or_reserved_endpoint_refuses_the_whole_recovery ... ok
test reset_recovery::tests::a_halting_completion_code_outranks_a_field_that_still_reads_running ... ok
test reset_recovery::tests::a_pipe_refused_from_every_state_is_given_up_on_by_name ... ok
test reset_recovery::tests::a_refusal_that_is_not_about_state_and_a_silence_both_end_the_quiesce ... ok
test reset_recovery::tests::a_slot_goes_back_only_over_a_stopped_pair ... ok
test reset_recovery::tests::every_command_is_defined_for_the_state_it_was_chosen_from ... ok
test reset_recovery::tests::a_stopped_pair_is_asked_nothing ... ok
test reset_recovery::tests::every_pair_is_stopped_inside_the_bound_however_it_moves_and_however_the_field_lags ... ok
test reset_recovery::tests::only_a_halt_condition_or_a_trb_error_speaks_for_the_endpoint ... ok
test reset_recovery::tests::only_a_pair_a_reset_device_disabled_has_nothing_to_stop ... ok
test reset_recovery::tests::the_bound_is_the_worst_case ... ok
test reset_recovery::tests::the_in_pipe_is_quiesced_before_the_out_pipe ... ok
test ring::tests::a_controller_that_has_caught_up_has_nothing_pending ... ok
test ring::tests::a_pointer_that_is_no_position_on_this_ring_is_refused_by_name ... ok
test ring::tests::an_enqueue_point_past_the_end_of_the_ring_is_refused ... ok
test ring::tests::no_two_refusals_read_the_same ... ok
test ring::tests::the_count_is_the_wrapped_distance_between_the_two ... ok
test ring::tests::the_low_four_bits_of_the_field_are_not_address ... ok
test scan::tests::a_broken_endpoint_is_recovered_until_the_silence_bound_passes ... ok
test scan::tests::a_silent_controller_ends_the_scan_at_the_operations_deadline ... ok
test scan::tests::a_free_slot_and_nothing_broken_is_the_end_of_the_scan ... ok
test scan::tests::an_outstanding_operation_is_never_given_up_on ... ok
test scsi::tests::a_device_field_prints_as_the_characters_it_carries_and_nothing_else ... ok
test scsi::tests::a_device_that_is_not_a_disk_this_driver_serves_is_refused_by_name ... ok
test scsi::tests::a_disk_spinning_up_is_asked_for_its_sense_and_then_again ... ok
test scsi::tests::a_disk_that_never_becomes_ready_is_given_up_on_at_its_budget ... ok
test scsi::tests::a_disk_too_big_for_read_capacity_10_is_asked_the_16_byte_form ... ok
test scsi::tests::a_flush_the_device_does_not_implement_is_no_failure_and_every_other_refusal_is ... ok
test scsi::tests::a_question_unanswered_or_answered_short_refuses_the_device ... ok
test scsi::tests::a_ready_attempt_that_breaks_is_recovered_and_one_taken_offline_ends_it ... ok
test scsi::tests::a_ready_disk_is_asked_what_it_is_and_how_big_and_nothing_else ... ok
test scsi::tests::a_transfer_cdb_is_laid_out_as_sbc_defines_it ... ok
test scsi::tests::a_transfer_is_its_batches_in_order_and_only_a_whole_one_advances ... ok
test scsi::tests::a_transfer_past_the_disk_is_refused_and_an_empty_one_is_nothing ... ok
test scsi::tests::every_fixed_cdb_carries_its_own_length_direction_and_allocation ... ok
test scsi::tests::only_the_first_batch_may_answer_ask_again ... ok
test scsi::tests::sense_is_believed_only_when_its_ascq_arrived ... ok
test scsi::tests::an_answer_to_something_not_asked_is_a_driver_bug - should panic ... ok
test xecp::tests::every_smi_goes_off_and_every_latched_one_is_cleared ... ok
test xecp::tests::a_list_that_leaves_the_window_or_never_ends_is_refused ... ok
test xecp::tests::the_handoff_is_named_by_firmwares_semaphore_before_and_after ... ok
test xecp::tests::the_walk_finds_each_capability_of_an_id_in_order ... ok
test descriptor::tests::no_answer_panics_the_decoder ... ok
test call::tests::every_path_through_a_call_ends_inside_its_bounds ... ok

test result: ok. 163 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s

     Running unittests src/lib.rs (target/debug/deps/toyos_xhci_sim-6d4288b901fd2718)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/enumerate.rs (target/debug/deps/enumerate-6c5ec5202b0ebada)

running 7 tests
test a_device_pulled_while_enable_slot_goes_unanswered_is_torn_down ... ok
test a_device_with_no_boot_protocol_is_never_asked_for_one ... ok
test a_slot_the_controller_has_not_named_yet_is_waited_for_even_when_the_port_goes ... ok
test an_enumeration_takes_one_act_per_pass_and_reports_once ... ok
test an_enumeration_is_abandoned_when_its_port_goes ... ok
test an_enumeration_that_stops_being_answered_still_reports_its_slot ... ok
test gate_an_enumeration_that_outlives_its_port_costs_a_deadline ... ok

test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/explore.rs (target/debug/deps/explore-143d1ef665a06578)

running 1 test
test no_sequence_breaks_an_invariant ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.48s

     Running tests/scenarios.rs (target/debug/deps/scenarios-b500b6eb588ff401)

running 15 tests
test a_device_plugged_in_is_enumerated_once ... ok
test a_device_that_bounces_back_out_is_never_enumerated ... ok
test a_device_with_no_slot_settles_anyway ... ok
test a_device_replugged_inside_a_hot_reset_given_up_on_is_enumerated ... ok
test gate_acknowledging_before_deciding_hides_a_replug ... ok
test a_replug_inside_one_debounce_is_seen ... ok
test a_port_that_never_finishes_its_reset_is_given_up_on_and_left_alone ... ok
test gate_ignoring_the_connect_change_hides_a_replug ... ok
test gate_dropping_the_reset_deadline_wedges_the_port ... ok
test gate_stepping_from_inside_an_effect_is_caught ... ok
test gate_writing_back_what_was_read_disables_the_port ... ok
test the_debounce_is_actually_waited_out ... ok
test repeated_replugs_stay_balanced ... ok
test unplugging_tears_the_device_down ... ok
test gate_restarting_the_debounce_never_enumerates ... ok

test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/superspeed.rs (target/debug/deps/superspeed-ab08c47a749186de)

running 13 tests
test a_device_pulled_during_the_warm_retrain_is_not_enumerated ... ok
test a_device_pulled_as_its_enumeration_begins_is_torn_down ... ok
test a_link_a_hot_reset_kills_is_recovered_warm ... ok
test a_completed_failure_that_stays_failed_is_refused_by_name ... ok
test a_link_already_inactive_is_warm_reset_at_once ... ok
test a_port_of_unknown_protocol_is_still_reset ... ok
test a_port_given_up_on_is_not_reset_again_until_its_device_is_pulled ... ok
test a_link_that_never_trains_is_refused_by_its_own_name ... ok
test a_reset_that_completes_failed_is_warm_reset ... ok
test a_usb2_completed_failure_is_refused_not_warm_reset ... ok
test a_trained_superspeed_link_is_not_reset ... ok
test a_usb2_port_is_reset_as_before ... ok
test a_usb2_port_is_never_warm_reset ... ok

test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/teardown.rs (target/debug/deps/teardown-1bca0fdb85da1e19)

running 9 tests
test a_halted_endpoint_is_reset_cleared_and_delivering_again ... ok
test a_controller_that_never_answers_still_releases_the_port ... ok
test a_recovery_is_abandoned_when_its_port_goes ... ok
test a_recovery_the_controller_refuses_lets_the_device_go ... ok
test a_running_endpoint_is_stopped_rather_than_reset ... ok
test a_teardown_gives_the_slot_and_the_block_back ... ok
test gate_acting_with_an_answer_outstanding_is_caught ... ok
test gate_freeing_the_block_before_the_slot_is_caught ... ok
test gate_a_recovery_that_outlives_its_port_costs_a_second_deadline ... ok

test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/teeth.rs (target/debug/deps/teeth-b915cd3698d155a2)

running 1 test
test every_flaw_changes_an_outcome ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests bcachefs

running 2 tests
test lib/bcachefs/src/block_io.rs - block_io::DeviceError (line 62) - compile fail ... ok
test lib/bcachefs/src/block_io.rs - block_io::DeviceError (line 66) - compile fail ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s

   Doc-tests kernel_loom

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests kernel_sim

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_abi

running 4 tests
test sdk/abi/src/usersafe.rs - usersafe::user_safe (line 53) - compile fail ... ok
test sdk/abi/src/usersafe.rs - usersafe::user_safe (line 70) - compile fail ... ok
test sdk/abi/src/usersafe.rs - usersafe::user_safe (line 46) ... ok
test sdk/abi/src/usersafe.rs - usersafe::user_safe (line 63) ... ok

test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.20s

   Doc-tests toyos_acpi

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_blackbox

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_blockhold

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_blockring

running 2 tests
test lib/blockring/src/wire.rs - wire::Opened (line 56) - compile fail ... ok
test lib/blockring/src/wire.rs - wire::Opened (line 47) ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.32s

   Doc-tests toyos_bootmap

running 1 test
test lib/bootmap/src/lib.rs - DirectMapEnd (line 70) - compile fail ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s

   Doc-tests toyos_cpuvuln

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_device_memory

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_dhcp

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_dma

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_dns

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_elf

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_elide

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_fat32

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_fat32_check

running 1 test
test lib/fat32/check/src/lib.rs - (line 30) - compile ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s

   Doc-tests toyos_gicv3

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_gpt

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_hda

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_i219

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_inspect

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_its

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_keymap

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_libc_copies

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_logstream

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_manifest

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_metal

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_microcode

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_net_ip

running 8 tests
test system/netstack/ip/src/lib.rs - compile_fail::s_ip_nud_028_a_state_holds_only_its_own_fields (line 473) - compile fail ... ok
test system/netstack/ip/src/lib.rs - compile_fail::s_ip_nud_028_a_state_holds_only_its_own_fields (line 468) - compile fail ... ok
test system/netstack/ip/src/lib.rs - compile_fail::s_ip_nud_028_a_state_holds_only_its_own_fields (line 463) - compile fail ... ok
test system/netstack/ip/src/lib.rs - compile_fail::s_ip_nud_028_a_state_holds_only_its_own_fields (line 478) - compile fail ... ok
test system/netstack/ip/src/lib.rs - compile_fail::s_ip_nud_028_a_state_holds_only_its_own_fields (line 493) - compile fail ... ok
test system/netstack/ip/src/lib.rs - compile_fail::s_ip_nud_028_a_state_holds_only_its_own_fields (line 488) - compile fail ... ok
test system/netstack/ip/src/lib.rs - compile_fail::s_ip_nud_028_a_state_holds_only_its_own_fields (line 483) - compile fail ... ok
test system/netstack/ip/src/lib.rs - compile_fail::s_ip_nud_028_a_state_holds_only_its_own_fields (line 436) ... ok

test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.22s

   Doc-tests toyos_net_shard

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_net_tcp

running 5 tests
test system/netstack/shard/tcp/src/lib.rs - compile_fail::s_op_030_tcp_cannot_choose_dscp_ecn_or_df (line 354) - compile fail ... ok
test system/netstack/shard/tcp/src/lib.rs - compile_fail::s_hs_036_a_connection_cannot_connect_again (line 335) - compile fail ... ok
test system/netstack/shard/tcp/src/lib.rs - compile_fail::s_hs_036_a_connection_cannot_connect_again (line 328) - compile fail ... ok
test system/netstack/shard/tcp/src/lib.rs - compile_fail::s_hs_036_a_connection_cannot_connect_again (line 321) ... ok
test system/netstack/shard/tcp/src/lib.rs - compile_fail::s_op_030_tcp_cannot_choose_dscp_ecn_or_df (line 347) ... ok

test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.21s

   Doc-tests toyos_net_testnet

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_net_udp

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_net_wire

running 18 tests
test system/netstack/wire/src/lib.rs - compile_fail::s_tser_008_established_builder_cannot_hold_syn_only_options (line 229) - compile fail ... ok
test system/netstack/wire/src/lib.rs - compile_fail::s_rt_010_transport_parse_takes_only_its_ipv4_view (line 255) - compile fail ... ok
test system/netstack/wire/src/lib.rs - compile_fail::s_rt_010_transport_parse_takes_only_its_ipv4_view (line 248) - compile fail ... ok
test system/netstack/wire/src/lib.rs - compile_fail::raw_payload_takes_no_transport_protocol_and_no_payload_is_forged (line 275) - compile fail ... ok
test system/netstack/wire/src/lib.rs - compile_fail::write_payload_and_write_frame_body_are_sealed (line 325) - compile fail ... ok
test system/netstack/wire/src/lib.rs - compile_fail::s_tser_008_established_builder_cannot_hold_syn_only_options (line 234) - compile fail ... ok
test system/netstack/wire/src/lib.rs - compile_fail::s_tser_008_established_builder_cannot_hold_syn_only_options (line 224) - compile fail ... ok
test system/netstack/wire/src/lib.rs - compile_fail::raw_payload_takes_no_transport_protocol_and_no_payload_is_forged (line 270) - compile fail ... ok
test system/netstack/wire/src/lib.rs - compile_fail::s_eth_030_builder_ethertype_admits_only_ipv4_and_arp (line 212) - compile fail ... ok
test system/netstack/wire/src/lib.rs - compile_fail::write_payload_and_write_frame_body_are_sealed (line 340) - compile fail ... ok
test system/netstack/wire/src/lib.rs - compile_fail::write_payload_and_write_frame_body_are_sealed (line 357) - compile fail ... ok
test system/netstack/wire/src/lib.rs - compile_fail::write_payload_and_write_frame_body_are_sealed (line 390) - compile fail ... ok
test system/netstack/wire/src/lib.rs - compile_fail::write_payload_and_write_frame_body_are_sealed (line 372) - compile fail ... ok
test system/netstack/wire/src/lib.rs - compile_fail::s_rt_010_transport_parse_takes_only_its_ipv4_view (line 241) ... ok
test system/netstack/wire/src/lib.rs - compile_fail::s_tser_008_established_builder_cannot_hold_syn_only_options (line 219) ... ok
test system/netstack/wire/src/lib.rs - compile_fail::s_eth_030_builder_ethertype_admits_only_ipv4_and_arp (line 207) ... ok
test system/netstack/wire/src/lib.rs - compile_fail::write_payload_and_write_frame_body_are_sealed (line 293) ... ok
test system/netstack/wire/src/lib.rs - compile_fail::raw_payload_takes_no_transport_protocol_and_no_payload_is_forged (line 264) ... ok

test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.39s

   Doc-tests toyos_osrelease

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_pci

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_phys

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_ps2

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_quiesce

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_random

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_rootimage

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_sha2

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_sha2_hw

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_smmu

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_ssh

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_swap

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_symbols

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_tco

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_tmpdir

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_trace

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_transport

running 4 tests
test lib/blockring/transport/src/queue.rs - queue::Place (line 43) - compile fail ... ok
test lib/blockring/transport/src/queue.rs - queue::Place (line 48) - compile fail ... ok
test lib/blockring/transport/src/queue.rs - queue::Place (line 53) - compile fail ... ok
test lib/blockring/transport/src/queue.rs - queue::Place (line 36) ... ok

test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.19s

   Doc-tests toyos_tsc

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_untrusted

running 5 tests
test lib/untrusted/src/lib.rs - Untrusted (line 113) - compile fail ... ok
test lib/untrusted/src/lib.rs - Untrusted (line 126) - compile fail ... ok
test lib/untrusted/src/lib.rs - Untrusted (line 107) - compile fail ... ok
test lib/untrusted/src/lib.rs - Untrusted (line 119) - compile fail ... ok
test lib/untrusted/src/lib.rs - Untrusted (line 134) ... ok

test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.21s

   Doc-tests toyos_update

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_usbhid

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_userbound

running 6 tests
test lib/userbound/src/firmware.rs - firmware::ConfigAt (line 428) - compile fail ... ok
test lib/userbound/src/firmware.rs - firmware::MemoryAt (line 134) - compile fail ... ok
test lib/userbound/src/firmware.rs - firmware::SleepType (line 478) - compile fail ... ok
test lib/userbound/src/firmware.rs - firmware::PortAt (line 308) - compile fail ... ok
test lib/userbound/src/firmware.rs - firmware::FirmwareCall (line 329) - compile fail ... ok
test lib/userbound/src/firmware.rs - firmware::LockWordAt (line 242) - compile fail ... ok

test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s

   Doc-tests toyos_virtio

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_wallclock

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_xhci

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests toyos_xhci_sim

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

21:50:22 [ci] the workspace's host members: cargo test --workspace --exclude toyos-build --exclude calc --exclude doom --exclude editor --exclude files --exclude paint --exclude snake --exclude toyfetch --exclude kernel --exclude logkeeper-api --exclude toyos-pci-claim --exclude bootloader --exclude filepicker-api --exclude toyos-font --exclude toyos --exclude toyos-window --exclude acpiserver --exclude compositor --exclude sprite --exclude console --exclude diskserver --exclude filepicker --exclude fileserver --exclude grants --exclude host --exclude inspect --exclude logkeeper --exclude netstack --exclude pkg --exclude shell --exclude soundserver --exclude sshserver --exclude supervisor --exclude swap --exclude symbolize --exclude terminal --exclude toybox --exclude trace --exclude update --exclude usbd --exclude kernelprobe --exclude metalprobe --exclude proctest --exclude test-runner

21:50:22 === [ci] the kernel's library
   Compiling kernel v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel)
    Finished `test` profile [optimized + debuginfo] target(s) in 9.57s
     Running unittests pure/lib.rs (target/debug/deps/kernel-a7ca71f2661cd543)

running 189 tests
test bootwrite::tests::a_handler_that_holds_the_span_has_outlasted_it_on_either_cpu ... ok
test bootwrite::tests::a_handlers_time_is_not_the_kicks_and_the_kicks_is_not_the_handlers ... ok
test bootwrite::tests::a_kick_not_taken_in_the_span_is_a_deaf_boot_processor ... ok
test bootwrite::tests::a_take_the_clock_has_not_reached_is_waited_for ... ok
test bootwrite::tests::a_write_that_has_retired_is_never_judged_by_the_clock ... ok
test clock::tests::a_reading_after_boot_is_carried_back_to_it ... ok
test clock::tests::a_reading_at_boot_is_boot ... ok
test clock::tests::a_reading_before_boot_is_carried_forward_to_it ... ok
test clock::tests::a_tick_is_counted_at_its_period ... ok
test dirnodes::tests::a_directory_is_one_number_and_two_are_two ... ok
test dirnodes::tests::a_path_past_max_path_is_refused_invalid ... ok
test dirnodes::tests::a_number_lasts_exactly_as_long_as_its_directory ... ok
test dirnodes::tests::a_removal_forgets_every_directory_it_ended_and_no_other ... ok
test dirnodes::tests::a_removal_past_max_path_judges_the_numbered_above_it ... ok
test dirnodes::tests::only_a_held_number_is_judged ... ok
test mtrr::tests::a_default_or_a_covering_register_of_no_defined_encoding_is_unknown ... ok
test mtrr::tests::a_mask_with_no_address_bit_and_a_region_at_the_top_decide_without_overflow ... ok
test mtrr::tests::a_range_no_register_covers_has_the_default_type ... ok
test mtrr::tests::a_register_types_its_region_to_the_last_byte_and_no_further ... ok
test mtrr::tests::registers_that_are_off_and_not_the_boot_processors_are_off ... ok
test mtrr::tests::registers_that_are_off_type_nothing_uncacheable ... ok
test mtrr::tests::registers_that_are_on_and_not_the_boot_processors_are_different ... ok
test mtrr::tests::registers_that_are_word_for_word_the_boot_processors_are_the_same ... ok
test mtrr::tests::two_registers_over_one_range_answer_as_the_architecture_orders_them ... ok
test pcid::oracle::tests::a_flush_between_two_owners_clears_the_alias ... ok
test pcid::oracle::tests::the_model_flags_a_live_reissue ... ok
test pcid::tests::a_freed_tag_waits_for_a_flush_before_it_is_reissued ... ok
test pipe::tests::an_end_dropped_with_the_ring_neither_empty_nor_full_is_gone ... ok
test pipe::tests::an_end_whose_other_end_is_held_is_not_told_it_is_gone ... ok
test pipe::tests::an_end_with_a_second_holder_outlives_the_first ... ok
test pcid::tests::two_live_address_spaces_never_share_a_pcid ... ok
test pipe::tests::readable_and_writable_say_nothing_of_the_other_end ... ok
test pipe::tests::the_last_holder_of_the_pipe_ends_it ... ok
test proclife::interleave::tests::a_join_racing_the_kill_that_takes_its_target ... ok
test proclife::interleave::tests::a_process_that_kills_itself_ends ... ok
test proclife::interleave::tests::a_kill_racing_a_spawn_leaves_no_unretired_thread ... ok
test pcid::tests::churn_never_aliases_two_live_tags ... ok
test dirnodes::tests::past_max_directories_a_new_directory_is_refused_exhausted ... ok
test proclife::interleave::tests::a_published_exit_leaves_no_unretired_thread ... ok
test proclife::interleave::tests::a_reap_racing_a_teardown_and_a_join_breaks_no_law ... ok
test proclife::interleave::tests::a_kill_chain_of_three_ends ... ok
test proclife::interleave::tests::a_sibling_join_is_answered_however_the_two_interleave ... ok
test proclife::interleave::tests::a_spawn_racing_a_kill_and_the_pass_that_reaps_it ... ok
test proclife::interleave::tests::a_sibling_exit_a_spawn_and_the_processs_own_exit ... ok
test proclife::interleave::tests::an_exit_and_a_kill_never_both_tear_a_process_down ... ok
test proclife::interleave::tests::a_sibling_closing_a_spawns_handle_before_the_spawn_returns ... ok
test pcid::oracle::tests::the_owned_allocator_admits_no_cross_space_read ... ok
test proclife::interleave::tests::the_last_one_out_is_in_its_process_until_its_teardown_is_done ... ok
test proclife::interleave::tests::the_refusal_that_dropped_without_unmapping_is_the_leak_l5_reports ... ok
test proclife::interleave::tests::a_childs_exit_racing_its_parents_kill ... ok
test proclife::interleave::tests::an_exit_whose_sibling_kills_the_process_killing_it ... ok
test proclife::join::tests::a_join_asked_after_it_collected_keeps_its_answer ... ok
test proclife::join::tests::a_live_thread_answers_wait_and_stays_in_the_table ... ok
test proclife::join::tests::a_process_being_torn_down_gives_up_no_thread ... ok
test proclife::interleave::tests::two_processes_killing_each_other_both_end ... ok
test proclife::join::tests::a_settled_join_does_not_take_the_table_again ... ok
test proclife::join::tests::a_zombie_is_answered_once_and_the_second_join_finds_nothing ... ok
test proclife::join::tests::the_two_refusals_are_told_apart ... ok
test proclife::pids::tests::a_pid_given_back_is_taken_again ... ok
test proclife::pids::tests::pids_are_issued_in_order_from_zero ... ok
test proclife::pids::tests::the_last_pid_is_one_below_max_and_none_follows_it ... ok
test proclife::reap::tests::nothing_is_taken_from_a_table_of_live_processes ... ok
test proclife::reap::tests::only_the_published_are_taken_and_they_come_back_in_pid_order ... ok
test proclife::spawn::tests::a_claimed_process_refuses_at_the_insert_too ... ok
test proclife::spawn::tests::a_claimed_process_refuses_at_the_start_in_both_arms ... ok
test proclife::spawn::tests::a_live_process_admits_a_thread_at_both_moments ... ok
test proclife::spawn::tests::a_missing_entry_is_refused_by_name_and_not_by_the_teardown_flag ... ok
test proclife::teardown::tests::a_main_threads_exit_is_the_processs ... ok
test proclife::teardown::tests::a_process_that_is_gone_grants_no_claim ... ok
test proclife::teardown::tests::a_sibling_join_is_released_by_the_sibling_it_named ... ok
test proclife::teardown::tests::exactly_one_claimant_wins_however_many_arrive ... ok
test proclife::teardown::tests::only_the_thread_that_empties_a_claimed_process_tears_it_down ... ok
test proclife::teardown::tests::the_retire_set_is_every_thread_still_in_but_the_caller ... ok
test proclife::tree::tests::a_chain_is_refused_at_max_depth_plus_one_below_the_supervisor ... ok
test proclife::tree::tests::a_child_landed_under_a_place_claimed_since_its_admission_is_claimed_with_it ... ok
test proclife::tree::tests::a_place_being_torn_down_admits_nothing ... ok
test proclife::teardown::tests::a_thread_leaves_once - should panic ... ok
test proclife::tree::tests::a_published_child_leaves_its_parents_children ... ok
test proclife::tree::tests::a_spawn_past_the_last_pid_is_refused_and_a_refused_spawn_spends_none ... ok
test sched::cpu::pass_cost_tests::a_bucket_is_a_power_of_two_wide ... ok
test sched::cpu::pass_cost_tests::a_quantile_follows_the_mass_and_not_the_tail ... ok
test sched::cpu::pass_cost_tests::the_recorder_counts_what_it_was_given ... ok
test sched::cpu::tests::a_cpu_does_not_hand_over_the_context_it_is_still_standing_on ... ok
test sched::cpu::tests::a_corpse_is_not_starved_for_ever_by_a_spinning_rt_task ... ok
test sched::cpu::tests::a_dying_task_is_picked_before_the_fair_queue ... ok
test sched::cpu::tests::a_dying_task_resumes_when_the_rt_band_empties ... ok
test sched::cpu::tests::a_dying_task_that_exits_is_released_by_its_own_death ... ok
test sched::cpu::tests::a_killed_rt_thread_unwinds_in_the_normal_band ... ok
test sched::cpu::tests::a_killed_task_does_not_starve_a_ready_rt_task ... ok
test sched::cpu::tests::a_killed_task_loses_the_cpu_before_its_quantum_expires ... ok
test sched::cpu::tests::a_killed_task_that_expires_its_quantum_goes_back_to_the_dying_list ... ok
test proclife::spawn::tests::a_full_process_refuses_at_the_start_until_a_join_collects ... ok
test sched::cpu::tests::a_killed_task_that_expires_its_quantum_yields_to_a_ready_rt_task ... ok
test sched::cpu::tests::a_killed_task_that_yields_goes_back_to_the_dying_list ... ok
test sched::cpu::tests::a_live_fair_task_loses_the_cpu_to_a_ready_rt_task ... ok
test proclife::spawn::tests::the_insert_refuses_the_spawn_a_sibling_filled_the_process_under ... ok
test sched::cpu::tests::a_retire_moves_a_ready_task_to_the_dying_list ... ok
test sched::cpu::tests::a_retire_of_the_running_task_asks_for_a_safe_point ... ok
test sched::cpu::tests::a_retire_that_loses_the_claim_leaves_the_wake_in_flight ... ok
test sched::cpu::tests::a_retire_wakes_a_parked_task_so_it_can_unwind ... ok
test sched::cpu::tests::a_running_task_refuses_the_parked_mark ... ok
test sched::cpu::tests::a_spawned_task_is_adopted_and_dispatched ... ok
test sched::cpu::tests::a_steal_probe_goes_to_surplus_and_not_to_a_cpu_full_of_corpses ... ok
test sched::cpu::tests::a_stopped_task_is_never_picked_again ... ok
test sched::cpu::tests::a_stopped_task_is_not_published_as_load ... ok
test sched::cpu::tests::a_wake_for_a_stopped_task_lands_in_the_band_and_not_the_run_queue ... ok
test sched::cpu::tests::an_adopt_of_a_killed_task_dispatches_it_on_arrival ... ok
test sched::cpu::tests::an_aged_grant_is_not_undone_by_a_pass_inside_its_chunk ... ok
test sched::cpu::tests::an_unwind_under_saturated_rt_is_stretched_by_the_age_ratio ... ok
test sched::cpu::tests::placement_believes_a_cpu_that_answers_and_no_other ... ok
test sched::cpu::tests::stopping_outranks_killing ... ok
test sched::cpu::tests::the_balance_path_keeps_a_killed_task_rather_than_migrating_it ... ok
test sched::cpu::tests::the_dying_list_is_served_oldest_first ... ok
test sched::cpu::tests::the_pick_dispatches_a_killed_task_so_it_can_unwind ... ok
test sched::fair::tests::charge_accumulates_and_saturates ... ok
test sched::fair::tests::charge_nonrunnable_is_a_bug ... ok
test sched::fair::tests::frontier_is_monotonic ... ok

@Japabu

Japabu commented Oct 11, 2026

Copy link
Copy Markdown
Collaborator Author

cargo run -- --ci host on 148c3de, EXIT=0, part 7 of 10

test sched::fair::tests::lag_clamps_in_both_directions ... ok
test sched::fair::tests::leave_stores_lag_and_wake_rederives_vruntime ... ok
test sched::fair::tests::leave_when_nonrunnable_is_a_noop ... ok
test sched::fair::tests::new_process_starts_at_frontier_with_zero_lag ... ok
test sched::fair::tests::nonrunnable_vruntime_tracks_the_live_frontier ... ok
test sched::fair::tests::refcount_tracks_runnable_threads ... ok
test sched::mailbox::tests::a_node_carries_one_message_at_a_time ... ok
test sched::mailbox::tests::doorbell_kick_policy ... ok
test sched::mailbox::tests::fifo_across_nodes_and_recycling ... ok
test sched::mailbox::tests::releasing_an_unposted_claim_frees_the_node ... ok
test sched::mailbox::tests::sleep_needs_an_empty_mailbox_and_a_quiet_doorbell ... ok
test sched::mailbox::tests::dropping_a_queued_node_is_loud - should panic ... ok
test sched::park::tests::a_boosted_notify_always_kicks ... ok
test sched::park::tests::a_kill_beats_a_pre_park_claim_to_the_commit ... ok
test sched::park::tests::a_kill_that_lands_before_the_commit_refuses_the_park ... ok
test sched::park::tests::a_notify_before_phase_one_refuses_it ... ok
test sched::park::tests::an_uncancellable_ticket_parks_a_killed_task ... ok
test sched::park::tests::a_notify_before_the_commit_refuses_the_park_and_sends_nothing ... ok
test sched::park::tests::cancel_reports_a_claim_it_lost ... ok
test sched::park::tests::one_wake_node_serves_the_whole_lifecycle ... ok
test sched::park::tests::dropping_a_ticket_is_loud - should panic ... ok
test sched::park::tests::park_then_notify_delivers_exactly_one_message ... ok
test sched::retire::tests::a_wake_and_a_retire_ride_distinct_nodes ... ok
test sched::retire::tests::a_second_retirer_fails_fast - should panic ... ok
test sched::retire::tests::retire_goes_to_the_home_cpu_and_always_kicks ... ok
test proclife::interleave::tests::two_spawns_race_one_teardown ... ok
test sched::retire::tests::retiring_a_dead_task_posts_nothing ... ok
test sched::retire::tests::the_chase_reuses_the_same_node ... ok
test sched::retire::tests::the_kill_bit_is_set_before_the_kick_and_before_the_chase_kick ... ok
test sched::task::tests::a_dead_task_takes_no_post ... ok
test sched::task::tests::a_post_before_the_commit_refuses_it ... ok
test sched::task::tests::a_post_claims_a_waiter_it_finds_parked_or_committing ... ok
test sched::task::tests::a_second_retirer_is_refused ... ok
test sched::task::tests::a_stale_generation_cannot_park_the_task ... ok
test sched::task::tests::a_wake_between_registration_and_commit_refuses_the_park ... ok
test sched::task::tests::cancel_reports_a_claim_it_lost ... ok
test sched::task::tests::claims_on_anything_but_a_waiter_are_lost ... ok
test sched::task::tests::an_edge_outside_the_table_panics - should panic ... ok
test sched::task::tests::park_then_wake_is_the_ordinary_path ... ok
test sched::task::tests::registration_forgets_a_post_or_revoke_to_an_earlier_wait ... ok
test sched::task::tests::sticky_bits_survive_transitions ... ok
test sched::task::tests::stopping_outranks_killing_at_a_safe_point ... ok
test sched::task::tests::wait_membership_is_single_watch ... ok
test sched::task::tests::word_roundtrips_every_state ... ok
test sched::watch::tests::a_bounded_post_skips_a_waiter_that_was_not_parked ... ok
test sched::watch::tests::a_post_between_registration_and_park_is_not_lost ... ok
test sched::watch::tests::a_post_in_place_fires_and_drops_nothing ... ok
test sched::watch::tests::a_post_wakes_every_parked_thread_and_fires_every_ring ... ok
test sched::watch::tests::a_registration_sweeps_the_entries_that_can_no_longer_fire ... ok
test sched::watch::tests::a_revoke_takes_the_registration_out_before_it_wakes ... ok
test sched::watch::tests::a_revoked_waiter_cannot_park_again ... ok
test sched::watch::tests::a_sweep_drops_what_it_took_out_with_the_list_lock_let_go ... ok
test sched::watch::tests::a_waiter_revoked_before_it_parks_cannot_park ... ok
test sched::watch::tests::a_second_registration_is_loud - should panic ... ok
test sched::watch::tests::a_waiter_revoked_while_it_commits_cannot_park ... ok
test sched::watch::tests::cancel_and_drop_answer_every_live_poll_as_gone ... ok
test sched::watch_list::a_list_outgrowing_the_buffer_sized_for_it_is_not_moved_into_it ... ok
test sched::watch_list::a_post_of_one_entry_past_its_stack_fires_each_once_and_frees_none_under_the_lock ... ok
test sched::watch_list::a_re_arm_after_a_post_of_few_entries_is_one_section ... ok
test sched::watch_list::nothing_allocates_or_frees_under_the_list_lock_and_a_post_in_place_frees_nothing ... ok
test sched::windows::tests::a_pass_ends_the_preemption_off_window_and_starts_the_next ... ok
test sched::windows::tests::a_start_counts_from_how_the_cpu_stands ... ok
test sched::windows::tests::a_whole_set_opens_or_closes_only_across_zero ... ok
test sched::windows::tests::an_interrupts_off_window_is_mask_to_unmask_and_the_longest_is_taken_once ... ok
test sched::windows::tests::an_untracked_cpu_records_and_refuses_nothing ... ok
test sched::windows::tests::every_transition_nothing_reported_before_is_named ... ok
test sched::windows::tests::only_a_crossing_of_zero_opens_or_closes_a_preemption_off_window ... ok
test sched::windows::tests::the_idle_halt_inside_a_pass_is_no_window ... ok
test proclife::interleave::tests::a_spawn_racing_the_kill_of_its_own_spawner ... ok
test proclife::interleave::tests::a_spawn_racing_its_places_kill_leaves_nothing_under_it_and_publishes_it ... ok
test proclife::interleave::tests::an_exit_publishes_after_every_end_below_it ... ok
test proclife::interleave::tests::a_spawn_under_an_unrelated_process_lands_between_two_claims_of_one_walk ... ok

test result: ok. 189 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s

21:50:32 [ci] the kernel's library: cargo test -p kernel --lib --features sched-check

21:50:32 === [ci] the licences of what ships
21:50:33 Making /Users/jan/Dev/jan/toyos-netring/rust a fork checkout at c1b88133ec79fc0902d4031d0c58a00b488842b9 (a git worktree of the primary's)
Preparing worktree (detached HEAD c1b88133ec7)
Updating files:   6% (3800/61540)
Updating files:   7% (4308/61540)
Updating files:   8% (4924/61540)
Updating files:   9% (5539/61540)
Updating files:   9% (5835/61540)
Updating files:  10% (6154/61540)
Updating files:  11% (6770/61540)
Updating files:  12% (7385/61540)
Updating files:  13% (8001/61540)
Updating files:  14% (8616/61540)
Updating files:  15% (9231/61540)
Updating files:  15% (9506/61540)
Updating files:  16% (9847/61540)
Updating files:  17% (10462/61540)
Updating files:  18% (11078/61540)
Updating files:  19% (11693/61540)
Updating files:  20% (12308/61540)
Updating files:  21% (12924/61540)
Updating files:  22% (13539/61540)
Updating files:  23% (14155/61540)
Updating files:  23% (14241/61540)
Updating files:  24% (14770/61540)
Updating files:  25% (15385/61540)
Updating files:  26% (16001/61540)
Updating files:  27% (16616/61540)
Updating files:  28% (17232/61540)
Updating files:  29% (17847/61540)
Updating files:  29% (18199/61540)
Updating files:  30% (18462/61540)
Updating files:  31% (19078/61540)
Updating files:  32% (19693/61540)
Updating files:  33% (20309/61540)
Updating files:  34% (20924/61540)
Updating files:  35% (21539/61540)
Updating files:  35% (21664/61540)
Updating files:  36% (22155/61540)
Updating files:  37% (22770/61540)
Updating files:  38% (23386/61540)
Updating files:  38% (23890/61540)
Updating files:  39% (24001/61540)
Updating files:  40% (24616/61540)
Updating files:  41% (25232/61540)
Updating files:  42% (25847/61540)
Updating files:  43% (26463/61540)
Updating files:  44% (27078/61540)
Updating files:  44% (27623/61540)
Updating files:  45% (27693/61540)
Updating files:  46% (28309/61540)
Updating files:  47% (28924/61540)
Updating files:  48% (29540/61540)
Updating files:  49% (30155/61540)
Updating files:  49% (30369/61540)
Updating files:  50% (30770/61540)
Updating files:  51% (31386/61540)
Updating files:  52% (32001/61540)
Updating files:  53% (32617/61540)
Updating files:  54% (33232/61540)
Updating files:  54% (33616/61540)
Updating files:  55% (33847/61540)
Updating files:  56% (34463/61540)
Updating files:  57% (35078/61540)
Updating files:  58% (35694/61540)
Updating files:  59% (36309/61540)
Updating files:  59% (36848/61540)
Updating files:  60% (36924/61540)
Updating files:  61% (37540/61540)
Updating files:  62% (38155/61540)
Updating files:  63% (38771/61540)
Updating files:  64% (39386/61540)
Updating files:  64% (39964/61540)
Updating files:  65% (40001/61540)
Updating files:  66% (40617/61540)
Updating files:  67% (41232/61540)
Updating files:  68% (41848/61540)
Updating files:  69% (42463/61540)
Updating files:  70% (43078/61540)
Updating files:  70% (43207/61540)
Updating files:  71% (43694/61540)
Updating files:  72% (44309/61540)
Updating files:  73% (44925/61540)
Updating files:  74% (45540/61540)
Updating files:  75% (46155/61540)
Updating files:  75% (46711/61540)
Updating files:  76% (46771/61540)
Updating files:  77% (47386/61540)
Updating files:  78% (48002/61540)
Updating files:  79% (48617/61540)
Updating files:  80% (49232/61540)
Updating files:  81% (49848/61540)
Updating files:  82% (50463/61540)
Updating files:  82% (50832/61540)
Updating files:  83% (51079/61540)
Updating files:  84% (51694/61540)
Updating files:  85% (52309/61540)
Updating files:  86% (52925/61540)
Updating files:  87% (53540/61540)
Updating files:  88% (54156/61540)
Updating files:  89% (54771/61540)
Updating files:  90% (55386/61540)
Updating files:  91% (56002/61540)
Updating files:  91% (56086/61540)
Updating files:  92% (56617/61540)
Updating files:  93% (57233/61540)
Updating files:  94% (57848/61540)
Updating files:  95% (58463/61540)
Updating files:  96% (59079/61540)
Updating files:  96% (59544/61540)
Updating files:  97% (59694/61540)
Updating files:  98% (60310/61540)
Updating files:  99% (60925/61540)
Updating files: 100% (61540/61540)
Updating files: 100% (61540/61540), done.
HEAD is now at c1b88133ec7 std: name toyos-abi and toyos by version
Preparing worktree (detached HEAD f8a3e68)
HEAD is now at f8a3e68 Merge upstream rust-lang/backtrace-rs (2026-08-02)
21:50:51   NOTICE section tests/corpus/tinycc/ (LGPL-2.1-or-later AND BSD-3-Clause AND (MIT OR Apache-2.0)) is not shipped
21:50:51   NOTICE section "Rust crates and the forks" names no files: every crate, fork or not, is judged by the crate half of this gate
21:50:51   NOTICE section "licenses/CDLA-Permissive-2.0-webpki-root-certs.txt — the Mozilla roots, CDLA-Permissive-2.0" names no files: the roots the build writes out of a crate are judged, with this text beside them, by `judge_trust_roots`
21:50:51   NOTICE section tests/cavp/ (NIST-PD) is not shipped
21:50:51   crate fortanix-sgx-abi 0.6.1 (registry+https://github.com/rust-lang/crates.io-index) is MPL-2.0, via std → fortanix-sgx-abi [x86_64-fortanix-unknown-sgx]
21:50:51   crate doom 0.1.0 (/Users/jan/Dev/jan/toyos-netring/apps/doom/Cargo.toml) is "GPL-2.0-only": not allowed: GPL-2.0-only; pulled in by doom
    EXCEPTED, pending the owner, issues/a-package-is-a-directory-under-apps-and-the-installer-is-a-program.md: /system/bin/doom links doomgeneric, id's Doom source by way of Chocolate Doom (NOTICE); it leaves the image as a package at the stage where the apps leave this repository
21:50:51   crate windows-sys 0.61.100 (/Users/jan/Dev/jan/toyos-netring/rust/library/windows-sys/Cargo.toml) is "": declares no licence; pulled in by std → dlmalloc [cfg(any(all(target_family = "wasm", not(any(unix, target_os = "wasi"))), target_os = "xous", target_os = "vexos", target_os = "toyos", all(target_vendor = "fortanix", target_env = "sgx")))] → windows-sys [cfg(target_os = "windows")]
    EXCEPTED, reached only under cfg(target_os = "windows"): std's empty in-tree stand-in for windows-sys, which declares no licence
21:50:51   crate windows-link 0.0.0 (/Users/jan/Dev/jan/toyos-netring/rust/library/windows_link/Cargo.toml) is "": declares no licence; pulled in by std → windows-link [cfg(any(windows, target_os = "cygwin"))]
    EXCEPTED, reached only under cfg(any(windows, target_os = "cygwin")): std's in-tree stand-in for windows-link, which declares no licence
21:50:51   file assets/DOOM1.WAD is "LicenseRef-id-Software-DOOM1-Shareware": not allowed: LicenseRef-id-Software-DOOM1-Shareware; pulled in by COMMITTED_FILES
    EXCEPTED, pending the owner, issues/a-package-is-a-directory-under-apps-and-the-installer-is-a-program.md: id's shareware terms: redistributable unmodified and not for consideration, so an image carrying it may not be sold (NOTICE); it leaves with doom
21:50:51   file assets/soundfont.sf2 is "LicenseRef-GeneralUser-GS-2.0": not allowed: LicenseRef-GeneralUser-GS-2.0; pulled in by COMMITTED_FILES
    EXCEPTED, pending the owner, issues/a-package-is-a-directory-under-apps-and-the-installer-is-a-program.md: GeneralUser GS's own permissive licence, no standard one, with its author's caveat on where the samples came from (NOTICE); doom alone opens it, and it leaves with doom
21:50:51   NOTICE section apps/doom is "GPL-2.0-or-later": not allowed: GPL-2.0-or-later; pulled in by NOTICE
    EXCEPTED, pending the owner, issues/a-package-is-a-directory-under-apps-and-the-installer-is-a-program.md: doomgeneric, the C half of the doom crate, fetched at build time and compiled into it; it leaves with doom
21:50:51 [ci] the licences of what ships: 6 exception(s) stand, and nothing else is refused

21:50:51 === [ci] clippy and the bare targets
info: component clippy is up to date
info: component rust-std for target x86_64-unknown-none is up to date
info: component rust-std for target x86_64-unknown-uefi is up to date
info: component rust-std for target aarch64-unknown-none-softfloat is up to date
info: component rust-std for target aarch64-unknown-uefi is up to date
21:50:51 [ci] clippy and the bare targets: installed

21:50:51 === [ci] clippy, warnings denied
21:50:51 === clippy: cargo clippy --workspace $GUESTS --all-targets --keep-going -- $ADOPTED -D warnings
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Checking cfg-if v1.0.4
    Checking toyos-abi v0.16.0 (/Users/jan/Dev/jan/toyos-netring/sdk/abi)
    Checking toyos-net-wire v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/netstack/wire)
    Checking log v0.4.29
    Checking once_cell v1.21.4
    Checking regex-syntax v0.8.11
    Checking pin-project-lite v0.2.17
    Checking lazy_static v1.5.0
    Checking smallvec v1.15.1
    Checking nu-ansi-term v0.50.3
    Checking libc v0.2.190
    Checking scoped-tls v1.0.1
    Checking memchr v2.8.0
    Checking toyos-elf v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/elf)
    Checking sharded-slab v0.1.7
    Checking thread_local v1.1.10
    Checking tracing-core v0.1.36
    Checking untrusted v0.9.0
    Checking typenum v1.20.1
    Checking toyos-wallclock v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/wallclock)
    Checking subtle v2.6.1
    Checking toyos-sha2 v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/sha2)
    Checking zeroize v1.9.0
    Checking toyos-fat32-check v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/fat32/check)
    Checking toyos-tmpdir v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/tmpdir)
    Checking serde_core v1.0.228
    Checking toyos-sha2-hw v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/sha2-hw)
    Checking rustls-pki-types v1.15.1
    Checking signature v2.2.0
    Checking adler2 v2.0.1
    Checking simd-adler32 v0.3.10
    Checking ed25519 v2.2.3
    Checking crc32fast v1.5.0
    Checking toyos-fat32 v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/fat32)
    Checking miniz_oxide v0.9.1
    Checking rustc-demangle v0.1.27
    Checking toyos-elide v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/elide)
    Checking equivalent v1.0.2
    Checking zerocopy v0.8.47
    Checking base64 v0.23.1
    Checking tracing-log v0.2.0
    Checking tracing v0.1.44
    Checking toyos-keymap v0.1.0 (/Users/jan/Dev/jan/toyos-netring/sdk/keymap)
    Checking itoa v1.0.17
    Checking hashbrown v0.16.1
    Checking toyos-bootmap v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/bootmap)
    Checking toyos-symbols v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/symbols)
    Checking bytes v1.12.1
    Checking byteorder v1.5.0
    Checking bcachefs v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/bcachefs)
    Checking toyos-net-ip v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/netstack/ip)
    Checking toyos-net-tcp v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/netstack/shard/tcp)
    Checking toyos-dhcp v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/netstack/dhcp)
    Checking toyos-acpi v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/acpi)
    Checking flate2 v1.1.10
    Checking toyos-gpt v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/gpt)
    Checking generic-array v0.14.7
    Checking toyos-manifest v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/manifest)
    Checking generator v0.8.9
    Checking getrandom v0.3.4 (https://github.com/ToyOSOrg/getrandom?branch=toyos-0.3-sdk-0.12#67c17e0a)
    Checking getrandom v0.2.17 (https://github.com/ToyOSOrg/getrandom?branch=toyos-0.2-sdk-0.12#2092d1cc)
    Checking cpufeatures v0.2.17
    Checking rand_core v0.9.5
    Checking indexmap v2.13.0
    Checking httparse v1.10.1
    Checking ring v0.17.14 (https://github.com/ToyOSOrg/ring?branch=toyos-0.17.14#34818c45)
    Checking http v1.5.0
    Checking allocator-api2 v0.2.21
    Checking foldhash v0.1.5
    Checking winnow v0.7.15
    Checking toml_write v0.1.2
    Checking filetime v0.2.29
    Checking zmij v1.0.21
    Checking pem v4.0.0
    Checking hashbrown v0.15.5
    Checking toyos-net-udp v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/netstack/udp)
    Checking webpki-roots v1.0.9
    Checking regex-automata v0.4.18
    Checking percent-encoding v2.3.2
    Checking ttf-parser v0.21.1
    Checking utf8-zero v0.8.1
    Checking block-buffer v0.10.4
    Checking crypto-common v0.1.7
    Checking toyos-tco v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/tco)
    Checking core-foundation-sys v0.8.7
    Checking tar v0.4.46
    Checking toyos-net-shard v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/netstack/shard)
    Checking num-traits v0.2.19
    Checking digest v0.10.7
    Checking iana-time-zone v0.1.65
    Checking libm v0.2.16
    Checking sha2 v0.10.9
    Checking curve25519-dalek v4.1.3
    Checking toyos-swap v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/swap)
    Checking ureq-proto v0.6.4
    Checking toyos-logstream v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/logstream)
    Checking webpki-root-certs v1.0.9
    Checking toyos-xhci v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/xhci)
    Checking toyos-blackbox v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/blackbox)
    Checking toyos-osrelease v0.1.0 (/Users/jan/Dev/jan/toyos-netring/sdk/osrelease)
    Checking kernel v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel)
    Checking bitflags v1.3.2
    Checking ed25519-dalek v2.2.0
    Checking getrandom v0.4.2 (https://github.com/ToyOSOrg/getrandom?branch=toyos-0.4#f0286c8b)
    Checking toyos-dns v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/netstack/dns)
    Checking toyos-update v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/update)
    Checking chrono v0.4.44
    Checking crc-catalog v2.4.0
    Checking arrayvec v0.7.8
    Checking crc v3.4.0
    Checking uuid v1.22.0
    Checking etherparse v0.21.0
    Checking object v0.38.1
    Checking bitflags v2.11.0
    Checking gpt v3.1.0
    Checking serde v1.0.228
    Checking serde_json v1.0.149
    Checking toyos-mdns v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/netstack/mdns)
    Checking toyos-quiesce v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/quiesce)
    Checking toyos-net-testnet v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/netstack/shard/testnet)
    Checking socket2 v0.6.3 (https://github.com/ToyOSOrg/socket2?branch=toyos#1d902509)
    Checking mio v1.2.0 (https://github.com/ToyOSOrg/mio?branch=toyos#d1edcaad)
    Checking toyos-ssh v0.1.0 (/Users/jan/Dev/jan/toyos-netring/build/ssh)
    Checking rustls-webpki v0.103.15
    Checking fontdue v0.9.3
    Checking powerfmt v0.2.1
    Checking time-core v0.1.9
    Checking deranged v0.5.8
    Checking num-conv v0.2.2
    Checking toyos-untrusted v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/untrusted)
    Checking serde_spanned v0.6.9
    Checking toml_datetime v0.6.11
    Checking toyos-net-node v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/netstack/node)
    Checking toyos-userbound v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/userbound)
    Checking toyos-phys v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/phys)
    Checking toml_edit v0.22.27
    Checking toyos-aml v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/acpiserver/aml)
    Checking toyos-desktop v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/compositor/desktop)
    Checking acpiserver-api v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/acpiserver-api)
    Checking toyos-device-memory v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/device-memory)
    Checking thiserror v1.0.69
    Checking toyos-transport v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/blockring/transport)
    Checking byteorder_slice v3.0.0
    Checking toyos-virtio v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/virtio)
    Checking toyos-blockhold v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/blockhold)
    Checking fatfs v0.3.6
    Checking pcap-file v2.0.0
    Checking toyos-rootimage v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/rootimage)
    Checking toyos-ps2 v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/ps2)
    Checking toyos-its v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/its)
    Checking toyos-smmu v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/smmu)
    Checking rustls v0.23.45
    Checking toyos-gicv3 v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/gicv3)
    Checking toyos-virtio-sound v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/soundserver/virtio-sound)
    Checking matchers v0.2.0
    Checking tracing-subscriber v0.3.23
    Checking time v0.3.55
    Checking toyos-blockring v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/blockring)
    Checking toyos-i219 v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/netstack/i219)
    Checking yasna v0.6.0
    Checking ppv-lite86 v0.2.21
    Checking loom v0.7.2 (https://github.com/ToyOSOrg/loom?branch=toyos#dfe37972)
    Checking rand_chacha v0.9.0
    Checking rand v0.9.5
    Checking rcgen v0.14.10
    Checking toml v0.8.23
    Checking toyos-xhci-sim v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/xhci/sim)
    Checking kernel-sim v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/sim)
    Checking kernel-loom v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/loom)
    Checking toyos-pci v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/pci)
    Checking toyos-trace v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/trace)
    Checking ureq v3.4.2
    Checking toyos-inspect v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/inspect)
    Checking toyos-libc-copies v0.1.0 (/Users/jan/Dev/jan/toyos-netring/sdk/libc/arch)
    Checking toyos-mixer v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/soundserver/mixer)
    Checking toyos-microcode v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/microcode)
    Checking toyos-cpuvuln v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/cpuvuln)
    Checking toyos-random v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/random)
    Checking toyos-hda v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/hda)
    Checking toyos-tsc v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/tsc)
    Checking toyos-dma v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/dma)
    Checking toyos-usbhid v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/usbhid)
    Checking toyos-build v0.1.0 (/Users/jan/Dev/jan/toyos-netring)
    Checking toyos-metal v0.1.0 (/Users/jan/Dev/jan/toyos-netring/tests/metal)
    Finished `dev` profile [optimized + debuginfo] target(s) in 26.58s
21:51:18 === clippy: cargo clippy --workspace $GUESTS --all-targets --keep-going --features $CONTROLS -- $ADOPTED -D warnings
    Checking kernel-loom v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/loom)
    Checking kernel v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel)
    Checking toyos-transport v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/blockring/transport)
    Checking toyos-blockring v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/blockring)
    Checking kernel-sim v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/sim)
    Checking toyos-build v0.1.0 (/Users/jan/Dev/jan/toyos-netring)
    Finished `dev` profile [optimized + debuginfo] target(s) in 9.27s
21:51:27 === clippy: cargo clippy -p kernel --lib --tests --features sched-check -- $ADOPTED -D warnings
    Blocking waiting for file lock on package cache
    Checking kernel v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel)
    Finished `dev` profile [optimized + debuginfo] target(s) in 2.08s
21:51:30 === clippy: cargo clippy -p kernel --lib --tests --features sched-check,protocol-port --features $KERNEL_CONTROLS -- $ADOPTED -D warnings
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Checking kernel v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel)
    Finished `dev` profile [optimized + debuginfo] target(s) in 5.16s
21:51:35 === clippy: cargo clippy -p kernel --target x86_64-unknown-none -- $ADOPTED -D warnings
    Checking toyos-abi v0.16.0 (/Users/jan/Dev/jan/toyos-netring/sdk/abi)
    Checking toyos-phys v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/phys)
    Checking cfg-if v1.0.4
    Checking toyos-elf v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/elf)
    Checking rustc-demangle v0.1.27
    Checking toyos-wallclock v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/wallclock)
    Checking toyos-elide v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/elide)
    Checking toyos-tsc v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/tsc)
    Checking toyos-blockhold v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/blockhold)
    Checking toyos-gicv3 v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/gicv3)
    Checking toyos-ps2 v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/ps2)
    Checking toyos-rootimage v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/rootimage)
    Checking toyos-random v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/random)
    Checking bcachefs v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/bcachefs)
    Checking toyos-hda v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/hda)
    Checking dlmalloc v0.2.13
    Checking toyos-its v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/its)
    Checking toyos-tco v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/tco)
    Checking toyos-blackbox v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/blackbox)
    Checking toyos-cpuvuln v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/cpuvuln)
    Checking toyos-gpt v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/gpt)
    Checking toyos-usbhid v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/usbhid)
    Checking toyos-untrusted v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/untrusted)
    Checking toyos-fat32 v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/fat32)
    Checking hashbrown v0.16.1
    Checking toyos-dma v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/dma)
    Checking toyos-quiesce v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/quiesce)
    Checking toyos-xhci v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/xhci)
    Checking toyos-bootmap v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/bootmap)
    Checking toyos-pci v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/pci)
    Checking toyos-symbols v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/symbols)
    Checking toyos-acpi v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/acpi)
    Checking toyos-smmu v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/smmu)
    Checking toyos-userbound v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/userbound)
    Checking kernel v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel)
    Finished `dev` profile [optimized + debuginfo] target(s) in 14.05s
21:51:49 === clippy: cargo clippy -p kernel --target x86_64-unknown-none --features boot-actuators,test-actuators -- $ADOPTED -D warnings
    Checking kernel v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel)
    Finished `dev` profile [optimized + debuginfo] target(s) in 7.28s
21:51:57 === clippy: cargo clippy -p kernel --target x86_64-unknown-none --features boot-actuators -- $ADOPTED -D warnings
    Checking kernel v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel)
    Finished `dev` profile [optimized + debuginfo] target(s) in 7.17s
21:52:04 === clippy: cargo clippy -p kernel --target x86_64-unknown-none --features debug-wait,sched-check,sched-tripwire,heap-tripwire,heap-sweep,pass-spin,stack-witness,switch-witness,switch-witness-mutate-frame,switch-witness-mutate-rsp,df-witness,df-witness-mutate,entry-df-unclean,mask-windows -- $ADOPTED -D warnings
    Blocking waiting for file lock on package cache
    Checking kernel v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel)
    Finished `dev` profile [optimized + debuginfo] target(s) in 7.28s
21:52:11 === clippy: cargo clippy -p kernel --target x86_64-unknown-none --features heap-band-notail,heap-lockspin -- $ADOPTED -D warnings
    Checking kernel v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel)
    Finished `dev` profile [optimized + debuginfo] target(s) in 13.67s
21:52:25 === clippy: cargo clippy -p kernel --target x86_64-unknown-none --features heap-band-nohead -- $ADOPTED -D warnings
    Checking kernel v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel)
    Finished `dev` profile [optimized + debuginfo] target(s) in 7.50s
21:52:33 === clippy: cargo clippy -p kernel --target aarch64-unknown-none-softfloat -- $ADOPTED -D warnings
    Checking toyos-abi v0.16.0 (/Users/jan/Dev/jan/toyos-netring/sdk/abi)
    Checking toyos-phys v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/phys)
    Checking toyos-wallclock v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/wallclock)
    Checking toyos-elf v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/elf)
    Checking rustc-demangle v0.1.27
    Checking cfg-if v1.0.4
    Checking toyos-elide v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/elide)
    Checking toyos-quiesce v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/quiesce)
    Checking toyos-blackbox v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/blackbox)
    Checking toyos-ps2 v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/ps2)
    Checking toyos-rootimage v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/rootimage)
    Checking toyos-tsc v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/tsc)
    Checking toyos-blockhold v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/blockhold)
    Checking hashbrown v0.16.1
    Checking toyos-its v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/its)
    Checking toyos-gpt v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/gpt)
    Checking toyos-cpuvuln v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/cpuvuln)
    Checking toyos-usbhid v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/usbhid)
    Checking dlmalloc v0.2.13
    Checking toyos-fat32 v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/fat32)
    Checking toyos-tco v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/tco)
    Checking toyos-untrusted v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/untrusted)
    Checking toyos-gicv3 v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/gicv3)
    Checking toyos-random v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/random)
    Checking toyos-xhci v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/xhci)
    Checking bcachefs v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/bcachefs)
    Checking toyos-dma v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/dma)
    Checking toyos-hda v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/hda)
    Checking toyos-bootmap v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/bootmap)
    Checking toyos-symbols v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/symbols)
    Checking toyos-pci v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/pci)
    Checking toyos-acpi v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/acpi)
    Checking toyos-smmu v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/smmu)
    Checking toyos-userbound v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/userbound)
    Checking kernel v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel)
    Finished `dev` profile [optimized + debuginfo] target(s) in 8.75s
21:52:41 === clippy: cargo clippy -p kernel --target aarch64-unknown-none-softfloat --features boot-actuators,test-actuators -- $ADOPTED -D warnings
    Checking kernel v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel)
    Finished `dev` profile [optimized + debuginfo] target(s) in 9.85s
21:52:51 === clippy: cargo clippy -p kernel --target aarch64-unknown-none-softfloat --features boot-actuators -- $ADOPTED -D warnings
    Checking kernel v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel)
    Finished `dev` profile [optimized + debuginfo] target(s) in 9.11s
21:53:01 === clippy: cargo clippy -p kernel --target aarch64-unknown-none-softfloat --features debug-wait,sched-check,sched-tripwire,heap-tripwire,heap-sweep,pass-spin,stack-witness,switch-witness,switch-witness-mutate-frame,switch-witness-mutate-rsp,mask-windows -- $ADOPTED -D warnings
    Blocking waiting for file lock on package cache
    Checking kernel v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel)
    Finished `dev` profile [optimized + debuginfo] target(s) in 9.23s
21:53:10 === clippy: cargo clippy -p bootloader --target x86_64-unknown-uefi -- $ADOPTED -W clippy::undocumented_unsafe_blocks -D warnings
   Compiling version_check v0.9.5
    Checking typenum v1.20.1
   Compiling semver v1.0.28
    Checking cfg-if v1.0.4
    Checking cpufeatures v0.2.17
    Checking signature v2.2.0
    Checking subtle v2.6.1
    Checking toyos-abi v0.16.0 (/Users/jan/Dev/jan/toyos-netring/sdk/abi)
    Checking toyos-sha2 v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/sha2)
    Checking toyos-wallclock v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/wallclock)
    Checking toyos-elf v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/elf)
    Checking bcachefs v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/bcachefs)
    Checking toyos-tsc v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/tsc)
    Checking toyos-random v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/random)
    Checking toyos-rootimage v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/rootimage)
    Checking toyos-tco v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/tco)
    Checking toyos-blackbox v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/blackbox)
    Checking toyos-sha2-hw v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/sha2-hw)
    Checking toyos-gpt v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/gpt)
    Checking ed25519 v2.2.3
   Compiling rustc_version v0.4.1
   Compiling generic-array v0.14.7
   Compiling curve25519-dalek v4.1.3
    Checking toyos-bootmap v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/bootmap)
    Checking toyos-acpi v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/acpi)
    Checking block-buffer v0.10.4
    Checking crypto-common v0.1.7
    Checking digest v0.10.7
    Checking sha2 v0.10.9
    Checking ed25519-dalek v2.2.0
    Checking toyos-update v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/update)
    Checking bootloader v0.1.0 (/Users/jan/Dev/jan/toyos-netring/loader)
    Finished `dev` profile [optimized + debuginfo] target(s) in 4.05s
21:53:14 === clippy: cargo clippy -p bootloader --target aarch64-unknown-uefi -- $ADOPTED -W clippy::undocumented_unsafe_blocks -D warnings
    Checking typenum v1.20.1
    Checking cfg-if v1.0.4
    Checking subtle v2.6.1
    Checking signature v2.2.0
    Checking cpufeatures v0.2.17
    Checking toyos-abi v0.16.0 (/Users/jan/Dev/jan/toyos-netring/sdk/abi)
    Checking toyos-sha2 v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/sha2)
    Checking toyos-wallclock v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/wallclock)
    Checking toyos-elf v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/elf)
    Checking bcachefs v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/bcachefs)
    Checking toyos-tsc v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/tsc)
    Checking toyos-random v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/random)
   Compiling generic-array v0.14.7
   Compiling curve25519-dalek v4.1.3
    Checking toyos-tco v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/tco)
    Checking toyos-blackbox v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/blackbox)
    Checking ed25519 v2.2.3
    Checking toyos-rootimage v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/rootimage)
    Checking toyos-gpt v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/gpt)
    Checking toyos-sha2-hw v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/sha2-hw)
    Checking toyos-bootmap v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/bootmap)
    Checking toyos-acpi v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/acpi)
    Checking block-buffer v0.10.4
    Checking crypto-common v0.1.7
    Checking digest v0.10.7
    Checking sha2 v0.10.9
    Checking ed25519-dalek v2.2.0
    Checking toyos-update v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/update)
    Checking bootloader v0.1.0 (/Users/jan/Dev/jan/toyos-netring/loader)
    Finished `dev` profile [optimized + debuginfo] target(s) in 3.92s
21:53:18 === clippy: cargo clippy -p toyos-xhci --all-targets -- $ADOPTED -D warnings
    Checking toyos-xhci v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/xhci)
    Finished `dev` profile [optimized + debuginfo] target(s) in 1.69s
21:53:20 === clippy: cargo clippy -p toyos-pci-claim --all-targets --features host-grant --no-deps --target-dir target/clippy-pci-claim -- $ADOPTED -D warnings
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Checking toyos-untrusted v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/untrusted)
    Checking toyos-abi v0.16.0 (/Users/jan/Dev/jan/toyos-netring/sdk/abi)
    Checking toyos-device-memory v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/device-memory)
    Checking toyos-virtio v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/virtio)
    Checking toyos v0.18.0 (/Users/jan/Dev/jan/toyos-netring/sdk/toyos)
    Checking toyos-pci-claim v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/pci-claim)
    Finished `dev` profile [optimized + debuginfo] target(s) in 2.53s
21:53:23 === clippy: cargo clippy -p kernel-loom --test loom_mailbox --features victim-retires-mid-probe -- $ADOPTED -D warnings
    Checking kernel-loom v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/loom)
    Finished `dev` profile [optimized + debuginfo] target(s) in 1.38s
21:53:24 === clippy: cargo clippy -p toyos-abi --all-targets --keep-going --target-dir target/clippy-abi -- -W clippy::undocumented_unsafe_blocks -D warnings
    Checking toyos-abi v0.16.0 (/Users/jan/Dev/jan/toyos-netring/sdk/abi)
    Finished `dev` profile [optimized + debuginfo] target(s) in 1.38s
21:53:26 [ci] clippy, warnings denied: clean

21:53:26 === [ci] kernel-loom without loom
   Compiling kernel-loom v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/loom)
    Finished `test` profile [optimized + debuginfo] target(s) in 1.51s
     Running tests/log_body_words.rs (target/debug/deps/log_body_words-4869242ccdfafa60)

running 2 tests
test a_shorter_record_does_not_inherit_the_longer_one_it_replaced ... ok
test every_field_survives_the_word_packing ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/log_cursor.rs (target/debug/deps/log_cursor-223926e38c938d7e)

running 2 tests
test a_cursor_ahead_of_a_shard_is_refused ... ok
test a_cursors_loss_claim_is_not_read ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/log_zeroed_init.rs (target/debug/deps/log_zeroed_init-6a2a9e30f59eee13)

running 1 test
test a_zero_allocated_ap_shard_issues_first_seq_first ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

21:53:28 [ci] kernel-loom without loom: cargo test -p kernel-loom --no-default-features --test log_zeroed_init --test log_body_words --test log_cursor

21:53:28 === [ci] control `wake-fence-off`
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
   Compiling kernel-loom v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/loom)
    Finished `test` profile [optimized + debuginfo] target(s) in 4.25s
     Running tests/log_wake.rs (target/debug/deps/log_wake-4180333d1b2c7a41)

running 1 test
test a_commit_and_an_arm_cannot_both_miss ... FAILED

failures:

---- a_commit_and_an_arm_cannot_both_miss stdout ----

thread 'a_commit_and_an_arm_cannot_both_miss' (291139093) panicked at kernel/loom/tests/log_wake.rs:98:9:
the producer posted nothing and the reader decided to park: a committed record is left with a parked reader, and only a missing fence can produce it
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    a_commit_and_an_arm_cannot_both_miss

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 1 filtered out; finished in 0.00s

error: test failed, to rerun pass `-p kernel-loom --test log_wake`
21:53:32 [ci] control `wake-fence-off`: 1 verdict(s) reached

21:53:32 === [ci] control `lock-acquire-off`
   Compiling kernel-loom v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/loom)
    Finished `test` profile [optimized + debuginfo] target(s) in 3.81s
     Running tests/ticket_lock.rs (target/debug/deps/ticket_lock-f6e6b3e16d55bea5)

running 1 test
test try_lock_observes_the_previous_owners_writes ... FAILED

failures:

---- try_lock_observes_the_previous_owners_writes stdout ----

thread 'try_lock_observes_the_previous_owners_writes' (291142039) panicked at /Users/jan/.cargo/git/checkouts/loom-906f299ec1581ba6/dfe3797/src/rt/location.rs:115:9:
Causality violation: Concurrent write accesses to `UnsafeCell`.

note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    try_lock_observes_the_previous_owners_writes

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 2 filtered out; finished in 0.00s

error: test failed, to rerun pass `-p kernel-loom --test ticket_lock`
21:53:36 [ci] control `lock-acquire-off`: 1 verdict(s) reached

21:53:36 === [ci] control `owed-fence-off`
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
   Compiling kernel-loom v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/loom)
    Finished `test` profile [optimized + debuginfo] target(s) in 3.87s
     Running tests/owed_lock.rs (target/debug/deps/owed_lock-27db3ee8378bf31d)

running 1 test
test a_turned_away_cpu_holds_the_lock_or_is_answered ... FAILED

failures:

---- a_turned_away_cpu_holds_the_lock_or_is_answered stdout ----

thread 'a_turned_away_cpu_holds_the_lock_or_is_answered' (291144132) panicked at kernel/loom/tests/owed_lock.rs:52:9:
cpu 3 was turned away and nobody answered it
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    a_turned_away_cpu_holds_the_lock_or_is_answered

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

error: test failed, to rerun pass `-p kernel-loom --test owed_lock`
21:53:41 [ci] control `owed-fence-off`: 1 verdict(s) reached

21:53:41 === [ci] control `seqlock-writer-fence-off`
    Blocking waiting for file lock on package cache
   Compiling kernel-loom v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/loom)
    Finished `test` profile [optimized + debuginfo] target(s) in 4.56s
     Running tests/panic_console_publish.rs (target/debug/deps/panic_console_publish-ef5c9d952995148f)

running 1 test
test a_snapshot_is_one_publication_whole ... FAILED

failures:

---- a_snapshot_is_one_publication_whole stdout ----

thread 'a_snapshot_is_one_publication_whole' (291145296) panicked at kernel/loom/tests/panic_console_publish.rs:28:13:
a snapshot kept two publications' words: [1, 1, 1, 2]
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    a_snapshot_is_one_publication_whole

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

error: test failed, to rerun pass `-p kernel-loom --test panic_console_publish`
21:53:45 [ci] control `seqlock-writer-fence-off`: 1 verdict(s) reached

21:53:45 === [ci] control `serial-try-lock-then-some`
   Compiling kernel-loom v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/loom)
    Finished `test` profile [optimized + debuginfo] target(s) in 4.89s
     Running tests/serial_lock.rs (target/debug/deps/serial_lock-3a42fbc40d095394)

running 2 tests
test a_lost_try_lock_leaves_the_lock_held ... FAILED
test two_writers_never_overlap ... FAILED

failures:

---- a_lost_try_lock_leaves_the_lock_held stdout ----

thread 'a_lost_try_lock_leaves_the_lock_held' (291146812) panicked at kernel/loom/tests/serial_lock.rs:24:9:
a lost try_lock released the lock its holder still has
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

---- two_writers_never_overlap stdout ----

thread 'two_writers_never_overlap' (291146813) panicked at /Users/jan/.cargo/git/checkouts/loom-906f299ec1581ba6/dfe3797/src/rt/location.rs:115:9:
Causality violation: Concurrent write accesses to `UnsafeCell`.



failures:
    a_lost_try_lock_leaves_the_lock_held
    two_writers_never_overlap

test result: FAILED. 0 passed; 2 failed; 0 ignored; 0 measured; 7 filtered out; finished in 0.00s

error: test failed, to rerun pass `-p kernel-loom --test serial_lock`
21:53:50 [ci] control `serial-try-lock-then-some`: 2 verdict(s) reached

21:53:50 === [ci] control `reap-raise-relaxed`
   Compiling kernel-loom v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/loom)
    Finished `test` profile [optimized + debuginfo] target(s) in 4.25s
     Running tests/reap_gate.rs (target/debug/deps/reap_gate-553c3d87f5b06f63)

running 1 test
test a_claim_sees_the_enrolled_work ... FAILED

failures:

---- a_claim_sees_the_enrolled_work stdout ----

thread 'a_claim_sees_the_enrolled_work' (291149125) panicked at kernel/loom/tests/reap_gate.rs:97:13:
assertion `left == right` failed: a claimed gate handed the reaper an unpublished exit — the raise did not carry the work it was raised for
  left: 0
 right: 1
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    a_claim_sees_the_enrolled_work

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 3 filtered out; finished in 0.00s

error: test failed, to rerun pass `-p kernel-loom --test reap_gate`
21:53:55 [ci] control `reap-raise-relaxed`: 1 verdict(s) reached

21:53:55 === [ci] control `shootdown-serve-relaxed`
   Compiling kernel-loom v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/loom)
    Finished `test` profile [optimized + debuginfo] target(s) in 2.84s
     Running tests/tlb_shootdown.rs (target/debug/deps/tlb_shootdown-17518692f9b6ff9b)

running 2 tests
test an_acknowledged_flush_postdates_the_page_table_write ... FAILED
test one_serve_answers_two_concurrent_shootdowns ... FAILED

failures:

---- an_acknowledged_flush_postdates_the_page_table_write stdout ----

thread 'an_acknowledged_flush_postdates_the_page_table_write' (291150741) panicked at kernel/loom/tests/tlb_shootdown.rs:142:13:
assertion `left == right` failed: cpu 1 acknowledged the shootdown while still holding a translation for the page the initiator is about to free
  left: 1
 right: 0
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

---- one_serve_answers_two_concurrent_shootdowns stdout ----

thread 'one_serve_answers_two_concurrent_shootdowns' (291150742) panicked at kernel/loom/tests/tlb_shootdown.rs:181:13:
assertion `left == right` failed: the first initiator freed a page cpu 1 could still reach
  left: 1
 right: 0


failures:
    an_acknowledged_flush_postdates_the_page_table_write
    one_serve_answers_two_concurrent_shootdowns

test result: FAILED. 0 passed; 2 failed; 0 ignored; 0 measured; 2 filtered out; finished in 0.48s

error: test failed, to rerun pass `-p kernel-loom --test tlb_shootdown`
21:53:59 [ci] control `shootdown-serve-relaxed`: 2 verdict(s) reached

21:53:59 === [ci] control `shootdown-served-relaxed`
   Compiling kernel-loom v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/loom)
    Finished `test` profile [optimized + debuginfo] target(s) in 2.30s
     Running tests/counters_round.rs (target/debug/deps/counters_round-409cd7c51b3a0bda)

running 1 test
test a_cpu_read_as_answered_is_read_with_its_answer ... FAILED

failures:

---- a_cpu_read_as_answered_is_read_with_its_answer stdout ----

thread 'a_cpu_read_as_answered_is_read_with_its_answer' (291151753) panicked at kernel/loom/tests/counters_round.rs:57:17:
assertion `left == right` failed: cpu 1 read as having answered the round, and its block did not copy out that answer
  left: None
 right: Some([2, 2])
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    a_cpu_read_as_answered_is_read_with_its_answer

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

error: test failed, to rerun pass `-p kernel-loom --test counters_round`
21:54:01 [ci] control `shootdown-served-relaxed`: 1 verdict(s) reached

21:54:01 === [ci] control `roster-commit-relaxed`
   Compiling kernel-loom v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/loom)
    Finished `test` profile [optimized + debuginfo] target(s) in 3.35s
     Running tests/smp_bringup.rs (target/debug/deps/smp_bringup-4413770dbba2dda1)

running 1 test
test a_committed_count_never_outruns_its_slot ... FAILED

failures:

---- a_committed_count_never_outruns_its_slot stdout ----

thread 'a_committed_count_never_outruns_its_slot' (291153804) panicked at kernel/loom/tests/smp_bringup.rs:50:17:
assertion `left == right` failed: a reader saw cpu1 counted while its hardware-id slot was still unfilled
  left: 4294967295
 right: 7
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    a_committed_count_never_outruns_its_slot

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 2 filtered out; finished in 0.00s

error: test failed, to rerun pass `-p kernel-loom --test smp_bringup`
21:54:05 [ci] control `roster-commit-relaxed`: 1 verdict(s) reached

21:54:05 === [ci] control `smp-ready-split`
    Blocking waiting for file lock on package cache
   Compiling kernel-loom v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/loom)
    Finished `test` profile [optimized + debuginfo] target(s) in 3.89s
     Running tests/smp_bringup.rs (target/debug/deps/smp_bringup-b970597e1fdfed75)

running 1 test
test a_released_machine_is_answering ... FAILED

failures:

---- a_released_machine_is_answering stdout ----

thread 'a_released_machine_is_answering' (291158383) panicked at kernel/loom/tests/smp_bringup.rs:83:21:
a CPU saw the machine released but not answering: a shootdown here is local-only and skips an AP that may already have joined
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    a_released_machine_is_answering

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 2 filtered out; finished in 0.00s

error: test failed, to rerun pass `-p kernel-loom --test smp_bringup`
21:54:09 [ci] control `smp-ready-split`: 1 verdict(s) reached

21:54:09 === [ci] control `log-commit-release-off`
   Compiling kernel-loom v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/loom)
    Finished `test` profile [optimized + debuginfo] target(s) in 3.64s
     Running tests/log_record.rs (target/debug/deps/log_record-f04ad1f4a3852b4e)

running 2 tests
test a_key_and_the_record_it_names_come_from_one_generation ... FAILED
test a_committed_record_is_whole_or_absent ... FAILED

failures:

---- a_key_and_the_record_it_names_come_from_one_generation stdout ----

thread 'a_key_and_the_record_it_names_come_from_one_generation' (291163092) panicked at kernel/loom/tests/log_record.rs:355:13:
assertion `left == right` failed: a key from the generation the slot used to hold
  left: 1007
 right: 5007

---- a_committed_record_is_whole_or_absent stdout ----

thread 'a_committed_record_is_whole_or_absent' (291163091) panicked at kernel/loom/tests/log_record.rs:82:5:
assertion `left == right` failed: torn: at_ns is another record's
  left: 0
 right: 1007
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    a_committed_record_is_whole_or_absent
    a_key_and_the_record_it_names_come_from_one_generation

test result: FAILED. 0 passed; 2 failed; 0 ignored; 0 measured; 5 filtered out; finished in 0.00s

error: test failed, to rerun pass `-p kernel-loom --test log_record`
21:54:13 [ci] control `log-commit-release-off`: 2 verdict(s) reached

21:54:13 === [ci] control `shard-publish-relaxed`
   Compiling kernel-loom v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/loom)
    Finished `test` profile [optimized + debuginfo] target(s) in 3.05s
     Running tests/log_publish.rs (target/debug/deps/log_publish-699b52d772dd9f56)

running 1 test
test a_reader_that_finds_a_shard_finds_it_built ... FAILED

failures:

---- a_reader_that_finds_a_shard_finds_it_built stdout ----

thread 'a_reader_that_finds_a_shard_finds_it_built' (291164841) panicked at /Users/jan/.cargo/git/checkouts/loom-906f299ec1581ba6/dfe3797/src/rt/location.rs:115:9:
Causality violation: Concurrent load and mut accesses.

note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    a_reader_that_finds_a_shard_finds_it_built

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 1 filtered out; finished in 0.00s

error: test failed, to rerun pass `-p kernel-loom --test log_publish`
21:54:16 [ci] control `shard-publish-relaxed`: 1 verdict(s) reached

21:54:16 === [ci] control `log-ring-publish-relaxed`
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
   Compiling kernel-loom v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/loom)
    Finished `test` profile [optimized + debuginfo] target(s) in 3.01s
     Running tests/log_ring.rs (target/debug/deps/log_ring-9ac93ac5b95c1530)

running 3 tests
test a_slot_is_reused_only_after_its_record_was_read ... FAILED
test a_lane_publishes_whole_and_reuses_only_after_a_read ... FAILED
test a_published_record_is_whole_and_read_once ... FAILED

failures:

---- a_slot_is_reused_only_after_its_record_was_read stdout ----

thread 'a_slot_is_reused_only_after_its_record_was_read' (291167689) panicked at /Users/jan/.cargo/git/checkouts/loom-906f299ec1581ba6/dfe3797/src/rt/location.rs:115:9:
Causality violation: Concurrent read and write accesses.

note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

---- a_lane_publishes_whole_and_reuses_only_after_a_read stdout ----

thread 'a_lane_publishes_whole_and_reuses_only_after_a_read' (291167687) panicked at /Users/jan/.cargo/git/checkouts/loom-906f299ec1581ba6/dfe3797/src/rt/location.rs:115:9:
Causality violation: Concurrent read and write accesses.


---- a_published_record_is_whole_and_read_once stdout ----

thread 'a_published_record_is_whole_and_read_once' (291167688) panicked at /Users/jan/.cargo/git/checkouts/loom-906f299ec1581ba6/dfe3797/src/rt/location.rs:115:9:
Causality violation: Concurrent read and write accesses.



failures:
    a_lane_publishes_whole_and_reuses_only_after_a_read
    a_published_record_is_whole_and_read_once
    a_slot_is_reused_only_after_its_record_was_read

test result: FAILED. 0 passed; 3 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

error: test failed, to rerun pass `-p kernel-loom --test log_ring`
21:54:20 [ci] control `log-ring-publish-relaxed`: 3 verdict(s) reached

21:54:20 === [ci] control `log-ring-tail-relaxed`
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
   Compiling kernel-loom v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/loom)
    Finished `test` profile [optimized + debuginfo] target(s) in 3.79s
     Running tests/log_ring.rs (target/debug/deps/log_ring-8c1b650931207698)

running 3 tests
test a_lane_publishes_whole_and_reuses_only_after_a_read ... FAILED
test a_slot_is_reused_only_after_its_record_was_read ... FAILED
test a_published_record_is_whole_and_read_once ... FAILED

failures:

---- a_lane_publishes_whole_and_reuses_only_after_a_read stdout ----

thread 'a_lane_publishes_whole_and_reuses_only_after_a_read' (291170237) panicked at /Users/jan/.cargo/git/checkouts/loom-906f299ec1581ba6/dfe3797/src/rt/location.rs:115:9:
Causality violation: Concurrent read and write accesses to `UnsafeCell`.

note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

---- a_slot_is_reused_only_after_its_record_was_read stdout ----

thread 'a_slot_is_reused_only_after_its_record_was_read' (291170239) panicked at /Users/jan/.cargo/git/checkouts/loom-906f299ec1581ba6/dfe3797/src/rt/location.rs:115:9:
Causality violation: Concurrent read and write accesses to `UnsafeCell`.


---- a_published_record_is_whole_and_read_once stdout ----

thread 'a_published_record_is_whole_and_read_once' (291170238) panicked at kernel/loom/tests/log_ring.rs:119:45:
assertion `left == right` failed
  left: Refused
 right: Written


failures:
    a_lane_publishes_whole_and_reuses_only_after_a_read
    a_published_record_is_whole_and_read_once
    a_slot_is_reused_only_after_its_record_was_read

test result: FAILED. 0 passed; 3 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

error: test failed, to rerun pass `-p kernel-loom --test log_ring`
21:54:24 [ci] control `log-ring-tail-relaxed`: 3 verdict(s) reached

21:54:24 === [ci] control `log-ring-loads-swapped`
   Compiling kernel-loom v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/loom)
    Finished `test` profile [optimized + debuginfo] target(s) in 3.35s
     Running tests/log_ring.rs (target/debug/deps/log_ring-f6cbe08fbe1afcf6)

running 1 test
test a_published_record_is_whole_and_read_once ... FAILED

failures:

---- a_published_record_is_whole_and_read_once stdout ----

thread 'a_published_record_is_whole_and_read_once' (291171426) panicked at kernel/loom/tests/log_ring.rs:119:45:
assertion `left == right` failed
  left: Refused
 right: Written
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    a_published_record_is_whole_and_read_once

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 2 filtered out; finished in 0.01s

error: test failed, to rerun pass `-p kernel-loom --test log_ring`
21:54:27 [ci] control `log-ring-loads-swapped`: 1 verdict(s) reached

21:54:27 === [ci] control `post-is-an-answer`
    Blocking waiting for file lock on package cache
   Compiling kernel-loom v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/loom)
    Finished `test` profile [optimized + debuginfo] target(s) in 5.22s
     Running tests/inbox_answer.rs (target/debug/deps/inbox_answer-76a436fc1f381aeb)

running 3 tests
test a_post_with_nothing_to_read_answers_nothing ... FAILED
test a_poll_armed_again_does_not_end_the_look ... FAILED
test a_post_that_lands_after_its_bytes_were_read_answers_nothing ... FAILED

failures:

---- a_post_with_nothing_to_read_answers_nothing stdout ----

thread 'a_post_with_nothing_to_read_answers_nothing' (291176381) panicked at kernel/loom/tests/inbox_answer.rs:247:9:
assertion `left == right` failed: a post with nothing behind it was answered
  left: [(7, 1)]
 right: []
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

---- a_poll_armed_again_does_not_end_the_look stdout ----

thread 'a_poll_armed_again_does_not_end_the_look' (291176379) panicked at kernel/loom/tests/inbox_answer.rs:310:9:

@Japabu

Japabu commented Oct 11, 2026

Copy link
Copy Markdown
Collaborator Author

cargo run -- --ci host on 148c3de, EXIT=0, part 8 of 10

assertion `left == right` failed
  left: [(3, 1), (4, 1)]
 right: [(4, 1)]

---- a_post_that_lands_after_its_bytes_were_read_answers_nothing stdout ----

thread 'a_post_that_lands_after_its_bytes_were_read_answers_nothing' (291176380) panicked at kernel/loom/tests/inbox_answer.rs:276:9:
assertion `left == right` failed: the payload's late post was answered
  left: [(7, 1)]
 right: []


failures:
    a_poll_armed_again_does_not_end_the_look
    a_post_that_lands_after_its_bytes_were_read_answers_nothing
    a_post_with_nothing_to_read_answers_nothing

test result: FAILED. 0 passed; 3 failed; 0 ignored; 0 measured; 13 filtered out; finished in 0.00s

error: test failed, to rerun pass `-p kernel-loom --test inbox_answer`
21:54:33 [ci] control `post-is-an-answer`: 3 verdict(s) reached

21:54:33 === [ci] control `poll-fire-load-store`
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
   Compiling kernel-loom v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/loom)
    Finished `test` profile [optimized + debuginfo] target(s) in 4.19s
     Running tests/poll_once.rs (target/debug/deps/poll_once-4819812af857e57d)

running 2 tests
test a_post_and_a_recheck_answer_a_poll_once ... FAILED
test a_withdrawal_and_a_post_never_both_take_a_poll ... FAILED

failures:

---- a_post_and_a_recheck_answer_a_poll_once stdout ----

thread 'a_post_and_a_recheck_answer_a_poll_once' (291177714) panicked at kernel/loom/tests/poll_once.rs:49:9:
assertion `left == right` failed: a ready poll is answered exactly once
  left: 2
 right: 1
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

---- a_withdrawal_and_a_post_never_both_take_a_poll stdout ----

thread 'a_withdrawal_and_a_post_never_both_take_a_poll' (291177715) panicked at kernel/loom/tests/poll_once.rs:72:9:
answered=true withdrawn=true


failures:
    a_post_and_a_recheck_answer_a_poll_once
    a_withdrawal_and_a_post_never_both_take_a_poll

test result: FAILED. 0 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

error: test failed, to rerun pass `-p kernel-loom --test poll_once`
21:54:37 [ci] control `poll-fire-load-store`: 2 verdict(s) reached

21:54:37 === [ci] control `sleeplock-acquire-off`
   Compiling kernel-loom v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/loom)
    Finished `test` profile [optimized + debuginfo] target(s) in 4.56s
     Running tests/sleep_lock.rs (target/debug/deps/sleep_lock-5e050a9b2a401a26)

running 2 tests
test two_holders_never_overlap ... FAILED
test a_parking_contender_observes_the_holders_writes ... FAILED

failures:

---- two_holders_never_overlap stdout ----

thread 'two_holders_never_overlap' (291179655) panicked at /Users/jan/.cargo/git/checkouts/loom-906f299ec1581ba6/dfe3797/src/rt/location.rs:115:9:
Causality violation: Concurrent write accesses to `UnsafeCell`.

note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

---- a_parking_contender_observes_the_holders_writes stdout ----

thread 'a_parking_contender_observes_the_holders_writes' (291179654) panicked at /Users/jan/.cargo/git/checkouts/loom-906f299ec1581ba6/dfe3797/src/rt/location.rs:115:9:
Causality violation: Concurrent write accesses to `UnsafeCell`.



failures:
    a_parking_contender_observes_the_holders_writes
    two_holders_never_overlap

test result: FAILED. 0 passed; 2 failed; 0 ignored; 0 measured; 2 filtered out; finished in 0.00s

error: test failed, to rerun pass `-p kernel-loom --test sleep_lock`
21:54:42 [ci] control `sleeplock-acquire-off`: 2 verdict(s) reached

21:54:42 === [ci] control `device-irq-lossy`
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
   Compiling kernel-loom v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/loom)
    Finished `test` profile [optimized + debuginfo] target(s) in 4.60s
     Running tests/device_irq.rs (target/debug/deps/device_irq-fa496ed102873348)

running 1 test
test every_message_is_counted_once ... FAILED

failures:

---- every_message_is_counted_once stdout ----

thread 'every_message_is_counted_once' (291184103) panicked at kernel/loom/tests/device_irq.rs:49:9:
assertion `left == right` failed: two interrupts arrived, the reader took 1 and 2 were left: a driver that misses one waits for a device that has already spoken
  left: 3
 right: 2
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    every_message_is_counted_once

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 2 filtered out; finished in 0.00s

error: test failed, to rerun pass `-p kernel-loom --test device_irq`
21:54:47 [ci] control `device-irq-lossy`: 1 verdict(s) reached

21:54:47 === [ci] control `no-preempt-guard`
   Compiling kernel-loom v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/loom)
    Finished `test` profile [optimized + debuginfo] target(s) in 2.57s
     Running tests/loom_mailbox.rs (target/debug/deps/loom_mailbox-8aeec4b9f56b6b7a)

running 1 test

thread 'preempted_producer_strands_suffix' (291188370) panicked at kernel/loom/tests/loom_mailbox.rs:76:9:
I2: this CPU halted while its own interrupted context is inside a push. That context cannot resume while the CPU sleeps, so every message queued behind its unlinked node stays invisible with no doorbell edge left to raise. Drained so far: []
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
test preempted_producer_strands_suffix ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.97s

21:54:51 [ci] control `no-preempt-guard`: 1 verdict(s) reached

21:54:51 === [ci] control `doorbell-kick-relaxed`
   Compiling kernel-loom v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/loom)
    Finished `test` profile [optimized + debuginfo] target(s) in 2.29s
     Running tests/loom_sleep.rs (target/debug/deps/loom_sleep-fbeb36964b587f51)

running 1 test

thread 'a_halted_cpu_with_queued_work_was_kicked' (291190328) panicked at kernel/loom/tests/loom_sleep.rs:104:13:
halted with 2 of 2 messages queued and no IPI in flight — a sleep-through
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

thread 'a_halted_cpu_with_queued_work_was_kicked' (291190328) panicked at kernel/loom/src/../../pure/sched/mailbox.rs:178:9:
mailbox node dropped with a message in flight
stack backtrace:
   0:        0x100e31edc - std[5d97c59e5e5fafcc]::backtrace_rs::backtrace::libunwind::trace
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
   1:        0x100e31edc - std[5d97c59e5e5fafcc]::backtrace_rs::backtrace::trace_unsynchronized::<std[5d97c59e5e5fafcc]::sys::backtrace::_print_fmt::{closure#1}>
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
   2:        0x100e31edc - std[5d97c59e5e5fafcc]::sys::backtrace::_print_fmt
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/std/src/sys/backtrace.rs:74:9
   3:        0x100e31edc - <<std[5d97c59e5e5fafcc]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[663bb9e1522ba5ef]::fmt::Display>::fmt
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/std/src/sys/backtrace.rs:44:26
   4:        0x100e4325c - <core[663bb9e1522ba5ef]::fmt::rt::Argument>::fmt
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/core/src/fmt/rt.rs:152:76
   5:        0x100e4325c - core[663bb9e1522ba5ef]::fmt::write
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/core/src/fmt/mod.rs:1687:22
   6:        0x100e35a54 - std[5d97c59e5e5fafcc]::io::default_write_fmt::<alloc[cc4db322bb1ac55d]::vec::Vec<u8>>
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/std/src/io/mod.rs:626:11
   7:        0x100e35a54 - <alloc[cc4db322bb1ac55d]::vec::Vec<u8> as std[5d97c59e5e5fafcc]::io::Write>::write_fmt
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/std/src/io/mod.rs:1730:13
   8:        0x100e18bd4 - <std[5d97c59e5e5fafcc]::sys::backtrace::BacktraceLock>::print
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/std/src/sys/backtrace.rs:47:25
   9:        0x100e18bd4 - std[5d97c59e5e5fafcc]::panicking::default_hook::{closure#0}
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/std/src/panicking.rs:292:27
  10:        0x100e2b694 - std[5d97c59e5e5fafcc]::panicking::default_hook
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/std/src/panicking.rs:316:9
  11:        0x100dc3c70 - <alloc[cc4db322bb1ac55d]::boxed::Box<dyn for<'a, 'b> core[663bb9e1522ba5ef]::ops::function::Fn<(&'a std[5d97c59e5e5fafcc]::panic::PanicHookInfo<'b>,), Output = ()> + core[663bb9e1522ba5ef]::marker::Sync + core[663bb9e1522ba5ef]::marker::Send> as core[663bb9e1522ba5ef]::ops::function::Fn<(&std[5d97c59e5e5fafcc]::panic::PanicHookInfo,)>>::call
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/alloc/src/boxed.rs:2333:9
  12:        0x100dc3c70 - test[4aa3eea2f4983582]::test_main_inner::<test[4aa3eea2f4983582]::test_main_static::{closure#0}>::{closure#0}
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/test/src/lib.rs:155:21
  13:        0x100e05c4c - <alloc[cc4db322bb1ac55d]::boxed::Box<dyn for<'a, 'b> core[663bb9e1522ba5ef]::ops::function::Fn<(&'a std[5d97c59e5e5fafcc]::panic::PanicHookInfo<'b>,), Output = ()> + core[663bb9e1522ba5ef]::marker::Sync + core[663bb9e1522ba5ef]::marker::Send> as core[663bb9e1522ba5ef]::ops::function::Fn<(&std[5d97c59e5e5fafcc]::panic::PanicHookInfo,)>>::call
                               at /Users/jan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/alloc/src/boxed.rs:2333:9
  14:        0x100e05c4c - generator[50749e7e4996c531]::detail::gen::catch_unwind_filter::<generator[50749e7e4996c531]::detail::gen::gen_init_impl::{closure#0}, ()>::{closure#0}::{closure#0}
                               at /Users/jan/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generator-0.8.9/src/detail/gen.rs:19:13
  15:        0x100e2bbd4 - <alloc[cc4db322bb1ac55d]::boxed::Box<dyn for<'a, 'b> core[663bb9e1522ba5ef]::ops::function::Fn<(&'a std[5d97c59e5e5fafcc]::panic::PanicHookInfo<'b>,), Output = ()> + core[663bb9e1522ba5ef]::marker::Sync + core[663bb9e1522ba5ef]::marker::Send> as core[663bb9e1522ba5ef]::ops::function::Fn<(&std[5d97c59e5e5fafcc]::panic::PanicHookInfo,)>>::call
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/alloc/src/boxed.rs:2333:9
  16:        0x100e2bbd4 - std[5d97c59e5e5fafcc]::panicking::panic_with_hook
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/std/src/panicking.rs:823:13
  17:        0x100e18c88 - std[5d97c59e5e5fafcc]::panicking::panic_handler::{closure#0}
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/std/src/panicking.rs:681:13
  18:        0x100e0fd60 - std[5d97c59e5e5fafcc]::sys::backtrace::__rust_end_short_backtrace::<std[5d97c59e5e5fafcc]::panicking::panic_handler::{closure#0}, !>
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/std/src/sys/backtrace.rs:182:18
  19:        0x100e193f4 - __rustc[100742bb89c490cb]::rust_begin_unwind
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/std/src/panicking.rs:679:5
  20:        0x100e51ff4 - core[663bb9e1522ba5ef]::panicking::panic_fmt
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/core/src/panicking.rs:80:14
  21:        0x100db50f4 - <kernel_loom[809217da25ecbc5a]::sched::mailbox::MailboxNode<kernel_loom[809217da25ecbc5a]::sched_model::Msg> as core[663bb9e1522ba5ef]::ops::drop::Drop>::drop
                               at /Users/jan/Dev/jan/toyos-netring/kernel/loom/src/../../pure/sched/mailbox.rs:178:9
  22:        0x100db50f4 - core[663bb9e1522ba5ef]::ptr::drop_glue::<kernel_loom[809217da25ecbc5a]::sched::mailbox::MailboxNode<kernel_loom[809217da25ecbc5a]::sched_model::Msg>>
                               at /Users/jan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:823:1
  23:        0x100db50f4 - core[663bb9e1522ba5ef]::ptr::drop_glue::<[kernel_loom[809217da25ecbc5a]::sched::mailbox::MailboxNode<kernel_loom[809217da25ecbc5a]::sched_model::Msg>]>
                               at /Users/jan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:823:1
  24:        0x100db50f4 - core[663bb9e1522ba5ef]::ptr::drop_glue::<[kernel_loom[809217da25ecbc5a]::sched::mailbox::MailboxNode<kernel_loom[809217da25ecbc5a]::sched_model::Msg>; 2usize]>
                               at /Users/jan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:823:1
  25:        0x100db50f4 - core[663bb9e1522ba5ef]::ptr::drop_glue::<loom_sleep[e343fdcb29461ba5]::World>
                               at /Users/jan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:823:1
  26:        0x100db63b8 - core[663bb9e1522ba5ef]::ptr::drop_in_place::<loom_sleep[e343fdcb29461ba5]::World>
                               at /Users/jan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:818:14
  27:        0x100db63b8 - <alloc[cc4db322bb1ac55d]::sync::Arc<loom_sleep[e343fdcb29461ba5]::World>>::drop_slow
                               at /Users/jan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/alloc/src/sync.rs:2143:18
  28:        0x100db8888 - loom_sleep[e343fdcb29461ba5]::a_halted_cpu_with_queued_work_was_kicked::{closure#0}
                               at /Users/jan/Dev/jan/toyos-netring/kernel/loom/tests/loom_sleep.rs:121:5
  29:        0x100db8888 - <loom[709ac591f2027ef2]::model::Builder>::check::<loom_sleep[e343fdcb29461ba5]::a_halted_cpu_with_queued_work_was_kicked::{closure#0}>::{closure#0}
                               at /Users/jan/.cargo/git/checkouts/loom-906f299ec1581ba6/dfe3797/src/model.rs:194:17
  30:        0x100db8888 - <<loom[709ac591f2027ef2]::model::Builder>::check<loom_sleep[e343fdcb29461ba5]::a_halted_cpu_with_queued_work_was_kicked::{closure#0}>::{closure#0} as core[663bb9e1522ba5ef]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
                               at /Users/jan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/ops/function.rs:250:5
  31:        0x100dfb1d4 - <alloc[cc4db322bb1ac55d]::boxed::Box<dyn core[663bb9e1522ba5ef]::ops::function::FnOnce<(), Output = ()>> as core[663bb9e1522ba5ef]::ops::function::FnOnce<()>>::call_once
                               at /Users/jan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/alloc/src/boxed.rs:2319:9
  32:        0x100dfb1d4 - loom[709ac591f2027ef2]::rt::scheduler::spawn_thread::{closure#0}
                               at /Users/jan/.cargo/git/checkouts/loom-906f299ec1581ba6/dfe3797/src/rt/scheduler.rs:142:17
  33:        0x100dfb1d4 - <loom[709ac591f2027ef2]::rt::scheduler::spawn_thread::{closure#0} as core[663bb9e1522ba5ef]::ops::function::FnOnce<()>>::call_once
                               at /Users/jan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/ops/function.rs:250:5
  34:        0x100dfb1d4 - <generator[50749e7e4996c531]::gen_impl::GeneratorImpl<core[663bb9e1522ba5ef]::option::Option<alloc[cc4db322bb1ac55d]::boxed::Box<dyn core[663bb9e1522ba5ef]::ops::function::FnOnce<(), Output = ()>>>, ()>>::init_code::<loom[709ac591f2027ef2]::rt::scheduler::spawn_thread::{closure#0}>::{closure#0}
                               at /Users/jan/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generator-0.8.9/src/gen_impl.rs:357:21
  35:        0x100dfb1d4 - <generator[50749e7e4996c531]::stack::StackBox<<generator[50749e7e4996c531]::gen_impl::GeneratorImpl<core[663bb9e1522ba5ef]::option::Option<alloc[cc4db322bb1ac55d]::boxed::Box<dyn core[663bb9e1522ba5ef]::ops::function::FnOnce<(), Output = ()>>>, ()>>::init_code<loom[709ac591f2027ef2]::rt::scheduler::spawn_thread::{closure#0}>::{closure#0}>>::call_once
                               at /Users/jan/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generator-0.8.9/src/stack/mod.rs:137:13
  36:        0x100e4cbdc - <generator[50749e7e4996c531]::stack::Func>::call_once
                               at /Users/jan/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generator-0.8.9/src/stack/mod.rs:119:9
  37:        0x100e4cbdc - generator[50749e7e4996c531]::detail::gen::gen_init_impl::{closure#0}
                               at /Users/jan/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generator-0.8.9/src/detail/gen.rs:35:14
  38:        0x100e4cbdc - <generator[50749e7e4996c531]::detail::gen::gen_init_impl::{closure#0} as core[663bb9e1522ba5ef]::ops::function::FnOnce<()>>::call_once
                               at /Users/jan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/ops/function.rs:250:5
  39:        0x100e4cbdc - std[5d97c59e5e5fafcc]::panicking::catch_unwind::do_call::<generator[50749e7e4996c531]::detail::gen::gen_init_impl::{closure#0}, ()>
                               at /Users/jan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/std/src/panicking.rs:576:43
  40:        0x100e4cbdc - std[5d97c59e5e5fafcc]::panicking::catch_unwind::<(), generator[50749e7e4996c531]::detail::gen::gen_init_impl::{closure#0}>
                               at /Users/jan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/std/src/panicking.rs:544:19
  41:        0x100e4cbdc - std[5d97c59e5e5fafcc]::panic::catch_unwind::<generator[50749e7e4996c531]::detail::gen::gen_init_impl::{closure#0}, ()>
                               at /Users/jan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/std/src/panic.rs:359:14
  42:        0x100e4cbdc - generator[50749e7e4996c531]::detail::gen::catch_unwind_filter::<generator[50749e7e4996c531]::detail::gen::gen_init_impl::{closure#0}, ()>
                               at /Users/jan/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generator-0.8.9/src/detail/gen.rs:23:5
  43:        0x100e4cbdc - generator[50749e7e4996c531]::detail::gen::gen_init_impl
                               at /Users/jan/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generator-0.8.9/src/detail/gen.rs:50:25
  44:        0x100e4cb6c - generator[50749e7e4996c531]::detail::asm::gen_init
                               at /Users/jan/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generator-0.8.9/src/detail/aarch64_unix.rs:22:5

thread 'a_halted_cpu_with_queued_work_was_kicked' (291190328) panicked at kernel/loom/src/../../pure/sched/mailbox.rs:178:9:
mailbox node dropped with a message in flight
stack backtrace:
   0:        0x100e31edc - std[5d97c59e5e5fafcc]::backtrace_rs::backtrace::libunwind::trace
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
   1:        0x100e31edc - std[5d97c59e5e5fafcc]::backtrace_rs::backtrace::trace_unsynchronized::<std[5d97c59e5e5fafcc]::sys::backtrace::_print_fmt::{closure#1}>
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
   2:        0x100e31edc - std[5d97c59e5e5fafcc]::sys::backtrace::_print_fmt
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/std/src/sys/backtrace.rs:74:9
   3:        0x100e31edc - <<std[5d97c59e5e5fafcc]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[663bb9e1522ba5ef]::fmt::Display>::fmt
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/std/src/sys/backtrace.rs:44:26
   4:        0x100e4325c - <core[663bb9e1522ba5ef]::fmt::rt::Argument>::fmt
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/core/src/fmt/rt.rs:152:76
   5:        0x100e4325c - core[663bb9e1522ba5ef]::fmt::write
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/core/src/fmt/mod.rs:1687:22
   6:        0x100e35a54 - std[5d97c59e5e5fafcc]::io::default_write_fmt::<alloc[cc4db322bb1ac55d]::vec::Vec<u8>>
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/std/src/io/mod.rs:626:11
   7:        0x100e35a54 - <alloc[cc4db322bb1ac55d]::vec::Vec<u8> as std[5d97c59e5e5fafcc]::io::Write>::write_fmt
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/std/src/io/mod.rs:1730:13
   8:        0x100e18bd4 - <std[5d97c59e5e5fafcc]::sys::backtrace::BacktraceLock>::print
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/std/src/sys/backtrace.rs:47:25
   9:        0x100e18bd4 - std[5d97c59e5e5fafcc]::panicking::default_hook::{closure#0}
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/std/src/panicking.rs:292:27
  10:        0x100e2b694 - std[5d97c59e5e5fafcc]::panicking::default_hook
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/std/src/panicking.rs:316:9
  11:        0x100dc3c70 - <alloc[cc4db322bb1ac55d]::boxed::Box<dyn for<'a, 'b> core[663bb9e1522ba5ef]::ops::function::Fn<(&'a std[5d97c59e5e5fafcc]::panic::PanicHookInfo<'b>,), Output = ()> + core[663bb9e1522ba5ef]::marker::Sync + core[663bb9e1522ba5ef]::marker::Send> as core[663bb9e1522ba5ef]::ops::function::Fn<(&std[5d97c59e5e5fafcc]::panic::PanicHookInfo,)>>::call
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/alloc/src/boxed.rs:2333:9
  12:        0x100dc3c70 - test[4aa3eea2f4983582]::test_main_inner::<test[4aa3eea2f4983582]::test_main_static::{closure#0}>::{closure#0}
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/test/src/lib.rs:155:21
  13:        0x100e05c4c - <alloc[cc4db322bb1ac55d]::boxed::Box<dyn for<'a, 'b> core[663bb9e1522ba5ef]::ops::function::Fn<(&'a std[5d97c59e5e5fafcc]::panic::PanicHookInfo<'b>,), Output = ()> + core[663bb9e1522ba5ef]::marker::Sync + core[663bb9e1522ba5ef]::marker::Send> as core[663bb9e1522ba5ef]::ops::function::Fn<(&std[5d97c59e5e5fafcc]::panic::PanicHookInfo,)>>::call
                               at /Users/jan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/alloc/src/boxed.rs:2333:9
  14:        0x100e05c4c - generator[50749e7e4996c531]::detail::gen::catch_unwind_filter::<generator[50749e7e4996c531]::detail::gen::gen_init_impl::{closure#0}, ()>::{closure#0}::{closure#0}
                               at /Users/jan/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generator-0.8.9/src/detail/gen.rs:19:13
  15:        0x100e2bbd4 - <alloc[cc4db322bb1ac55d]::boxed::Box<dyn for<'a, 'b> core[663bb9e1522ba5ef]::ops::function::Fn<(&'a std[5d97c59e5e5fafcc]::panic::PanicHookInfo<'b>,), Output = ()> + core[663bb9e1522ba5ef]::marker::Sync + core[663bb9e1522ba5ef]::marker::Send> as core[663bb9e1522ba5ef]::ops::function::Fn<(&std[5d97c59e5e5fafcc]::panic::PanicHookInfo,)>>::call
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/alloc/src/boxed.rs:2333:9
  16:        0x100e2bbd4 - std[5d97c59e5e5fafcc]::panicking::panic_with_hook
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/std/src/panicking.rs:823:13
  17:        0x100e18c88 - std[5d97c59e5e5fafcc]::panicking::panic_handler::{closure#0}
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/std/src/panicking.rs:681:13
  18:        0x100e0fd60 - std[5d97c59e5e5fafcc]::sys::backtrace::__rust_end_short_backtrace::<std[5d97c59e5e5fafcc]::panicking::panic_handler::{closure#0}, !>
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/std/src/sys/backtrace.rs:182:18
  19:        0x100e193f4 - __rustc[100742bb89c490cb]::rust_begin_unwind
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/std/src/panicking.rs:679:5
  20:        0x100e51ff4 - core[663bb9e1522ba5ef]::panicking::panic_fmt
                               at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/core/src/panicking.rs:80:14
  21:        0x100db4ad0 - <kernel_loom[809217da25ecbc5a]::sched::mailbox::MailboxNode<kernel_loom[809217da25ecbc5a]::sched_model::Msg> as core[663bb9e1522ba5ef]::ops::drop::Drop>::drop
                               at /Users/jan/Dev/jan/toyos-netring/kernel/loom/src/../../pure/sched/mailbox.rs:178:9
  22:        0x100db4ad0 - core[663bb9e1522ba5ef]::ptr::drop_glue::<kernel_loom[809217da25ecbc5a]::sched::mailbox::MailboxNode<kernel_loom[809217da25ecbc5a]::sched_model::Msg>>
                               at /Users/jan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:823:1
  23:        0x100db5134 - core[663bb9e1522ba5ef]::ptr::drop_glue::<[kernel_loom[809217da25ecbc5a]::sched::mailbox::MailboxNode<kernel_loom[809217da25ecbc5a]::sched_model::Msg>]>
                               at /Users/jan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:823:1
  24:        0x100db5134 - core[663bb9e1522ba5ef]::ptr::drop_glue::<[kernel_loom[809217da25ecbc5a]::sched::mailbox::MailboxNode<kernel_loom[809217da25ecbc5a]::sched_model::Msg>; 2usize]>
                               at /Users/jan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:823:1
  25:        0x100db5134 - core[663bb9e1522ba5ef]::ptr::drop_glue::<loom_sleep[e343fdcb29461ba5]::World>
                               at /Users/jan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:823:1
  26:        0x100db63b8 - core[663bb9e1522ba5ef]::ptr::drop_in_place::<loom_sleep[e343fdcb29461ba5]::World>
                               at /Users/jan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:818:14
  27:        0x100db63b8 - <alloc[cc4db322bb1ac55d]::sync::Arc<loom_sleep[e343fdcb29461ba5]::World>>::drop_slow
                               at /Users/jan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/alloc/src/sync.rs:2143:18
  28:        0x100db8888 - loom_sleep[e343fdcb29461ba5]::a_halted_cpu_with_queued_work_was_kicked::{closure#0}
                               at /Users/jan/Dev/jan/toyos-netring/kernel/loom/tests/loom_sleep.rs:121:5
  29:        0x100db8888 - <loom[709ac591f2027ef2]::model::Builder>::check::<loom_sleep[e343fdcb29461ba5]::a_halted_cpu_with_queued_work_was_kicked::{closure#0}>::{closure#0}
                               at /Users/jan/.cargo/git/checkouts/loom-906f299ec1581ba6/dfe3797/src/model.rs:194:17
  30:        0x100db8888 - <<loom[709ac591f2027ef2]::model::Builder>::check<loom_sleep[e343fdcb29461ba5]::a_halted_cpu_with_queued_work_was_kicked::{closure#0}>::{closure#0} as core[663bb9e1522ba5ef]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
                               at /Users/jan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/ops/function.rs:250:5
  31:        0x100dfb1d4 - <alloc[cc4db322bb1ac55d]::boxed::Box<dyn core[663bb9e1522ba5ef]::ops::function::FnOnce<(), Output = ()>> as core[663bb9e1522ba5ef]::ops::function::FnOnce<()>>::call_once
                               at /Users/jan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/alloc/src/boxed.rs:2319:9
  32:        0x100dfb1d4 - loom[709ac591f2027ef2]::rt::scheduler::spawn_thread::{closure#0}
                               at /Users/jan/.cargo/git/checkouts/loom-906f299ec1581ba6/dfe3797/src/rt/scheduler.rs:142:17
  33:        0x100dfb1d4 - <loom[709ac591f2027ef2]::rt::scheduler::spawn_thread::{closure#0} as core[663bb9e1522ba5ef]::ops::function::FnOnce<()>>::call_once
                               at /Users/jan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/ops/function.rs:250:5
  34:        0x100dfb1d4 - <generator[50749e7e4996c531]::gen_impl::GeneratorImpl<core[663bb9e1522ba5ef]::option::Option<alloc[cc4db322bb1ac55d]::boxed::Box<dyn core[663bb9e1522ba5ef]::ops::function::FnOnce<(), Output = ()>>>, ()>>::init_code::<loom[709ac591f2027ef2]::rt::scheduler::spawn_thread::{closure#0}>::{closure#0}
                               at /Users/jan/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generator-0.8.9/src/gen_impl.rs:357:21
  35:        0x100dfb1d4 - <generator[50749e7e4996c531]::stack::StackBox<<generator[50749e7e4996c531]::gen_impl::GeneratorImpl<core[663bb9e1522ba5ef]::option::Option<alloc[cc4db322bb1ac55d]::boxed::Box<dyn core[663bb9e1522ba5ef]::ops::function::FnOnce<(), Output = ()>>>, ()>>::init_code<loom[709ac591f2027ef2]::rt::scheduler::spawn_thread::{closure#0}>::{closure#0}>>::call_once
                               at /Users/jan/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generator-0.8.9/src/stack/mod.rs:137:13
  36:        0x100e4cbdc - <generator[50749e7e4996c531]::stack::Func>::call_once
                               at /Users/jan/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generator-0.8.9/src/stack/mod.rs:119:9
  37:        0x100e4cbdc - generator[50749e7e4996c531]::detail::gen::gen_init_impl::{closure#0}
                               at /Users/jan/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generator-0.8.9/src/detail/gen.rs:35:14
  38:        0x100e4cbdc - <generator[50749e7e4996c531]::detail::gen::gen_init_impl::{closure#0} as core[663bb9e1522ba5ef]::ops::function::FnOnce<()>>::call_once
                               at /Users/jan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/ops/function.rs:250:5
  39:        0x100e4cbdc - std[5d97c59e5e5fafcc]::panicking::catch_unwind::do_call::<generator[50749e7e4996c531]::detail::gen::gen_init_impl::{closure#0}, ()>
                               at /Users/jan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/std/src/panicking.rs:576:43
  40:        0x100e4cbdc - std[5d97c59e5e5fafcc]::panicking::catch_unwind::<(), generator[50749e7e4996c531]::detail::gen::gen_init_impl::{closure#0}>
                               at /Users/jan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/std/src/panicking.rs:544:19
  41:        0x100e4cbdc - std[5d97c59e5e5fafcc]::panic::catch_unwind::<generator[50749e7e4996c531]::detail::gen::gen_init_impl::{closure#0}, ()>
                               at /Users/jan/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/std/src/panic.rs:359:14
  42:        0x100e4cbdc - generator[50749e7e4996c531]::detail::gen::catch_unwind_filter::<generator[50749e7e4996c531]::detail::gen::gen_init_impl::{closure#0}, ()>
                               at /Users/jan/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generator-0.8.9/src/detail/gen.rs:23:5
  43:        0x100e4cbdc - generator[50749e7e4996c531]::detail::gen::gen_init_impl
                               at /Users/jan/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generator-0.8.9/src/detail/gen.rs:50:25
  44:        0x100e4cb6c - generator[50749e7e4996c531]::detail::asm::gen_init
                               at /Users/jan/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/generator-0.8.9/src/detail/aarch64_unix.rs:22:5

thread 'a_halted_cpu_with_queued_work_was_kicked' (291190328) panicked at /rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/core/src/panicking.rs:233:5:
panic in a destructor during cleanup
thread caused non-unwinding panic. aborting.
error: test failed, to rerun pass `-p kernel-loom --test loom_sleep`

Caused by:
  process didn't exit successfully: `/Users/jan/Dev/jan/toyos-netring/target/debug/deps/loom_sleep-fbeb36964b587f51 --exact a_halted_cpu_with_queued_work_was_kicked` (signal: 6, SIGABRT: process abort signal)
21:54:53 [ci] control `doorbell-kick-relaxed`: 1 verdict(s) reached

21:54:53 === [ci] control `push-fence-relaxed`
   Compiling kernel-loom v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/loom)
    Finished `test` profile [optimized + debuginfo] target(s) in 1.74s
     Running tests/loom_push.rs (target/debug/deps/loom_push-d89385fa40cbaddd)

running 1 test
test a_cpu_that_halts_without_seeing_the_surplus_was_pushed ... FAILED

failures:

---- a_cpu_that_halts_without_seeing_the_surplus_was_pushed stdout ----

thread 'a_cpu_that_halts_without_seeing_the_surplus_was_pushed' (291191642) panicked at kernel/loom/tests/loom_push.rs:143:9:
cpu1 halted with cpu0's surplus of 2 published and no push behind it — both sides of the store-buffer pair missed, which is the pull path's slept-before-the-surplus defect back again, in a window a fence would have closed
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    a_cpu_that_halts_without_seeing_the_surplus_was_pushed

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 1 filtered out; finished in 0.00s

error: test failed, to rerun pass `-p kernel-loom --test loom_push`
21:54:56 [ci] control `push-fence-relaxed`: 1 verdict(s) reached

21:54:56 === [ci] control `commit-ignores-notify`
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
   Compiling kernel-loom v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/loom)
    Finished `test` profile [optimized + debuginfo] target(s) in 3.43s
     Running tests/loom_watch.rs (target/debug/deps/loom_watch-97cae6df4b91900c)

running 2 tests
test a_post_racing_a_registration_leaves_nobody_parked ... FAILED
test a_fire_racing_a_submitters_park_is_never_lost ... FAILED

failures:

---- a_post_racing_a_registration_leaves_nobody_parked stdout ----

thread 'a_post_racing_a_registration_leaves_nobody_parked' (291193391) panicked at kernel/loom/tests/loom_watch.rs:244:13:
assertion `left == right` failed: parked with the condition true and no wake owed: the post was lost
  left: []
 right: [Wake(TaskKey(1), Woken)]
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

---- a_fire_racing_a_submitters_park_is_never_lost stdout ----

thread 'a_fire_racing_a_submitters_park_is_never_lost' (291193390) panicked at kernel/loom/tests/loom_watch.rs:850:13:
assertion `left == right` failed: parked over a fired poll and no wake owed: a fire was lost
  left: []
 right: [Wake(TaskKey(1), Woken)]


failures:
    a_fire_racing_a_submitters_park_is_never_lost
    a_post_racing_a_registration_leaves_nobody_parked

test result: FAILED. 0 passed; 2 failed; 0 ignored; 0 measured; 10 filtered out; finished in 0.09s

error: test failed, to rerun pass `-p kernel-loom --test loom_watch`
21:54:59 [ci] control `commit-ignores-notify`: 2 verdict(s) reached

21:54:59 === [ci] control `notify-flag-load-only`
   Compiling kernel-loom v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/loom)
    Finished `test` profile [optimized + debuginfo] target(s) in 3.87s
     Running tests/loom_watch.rs (target/debug/deps/loom_watch-d9c703ef942dd06d)

running 1 test
test a_second_post_is_not_lost_to_a_flag_the_waiter_consumed ... FAILED

failures:

---- a_second_post_is_not_lost_to_a_flag_the_waiter_consumed stdout ----

thread 'a_second_post_is_not_lost_to_a_flag_the_waiter_consumed' (291193912) panicked at kernel/loom/tests/loom_watch.rs:454:13:
assertion `left == right` failed: parked with both conditions true and no wake owed: a post answered off a load
  left: []
 right: [Wake(TaskKey(1), Woken)]
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    a_second_post_is_not_lost_to_a_flag_the_waiter_consumed

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 11 filtered out; finished in 7.13s

error: test failed, to rerun pass `-p kernel-loom --test loom_watch`
21:55:11 [ci] control `notify-flag-load-only`: 1 verdict(s) reached

21:55:11 === [ci] control `gate-fence-off`
   Compiling kernel-loom v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/loom)
    Finished `test` profile [optimized + debuginfo] target(s) in 3.34s
     Running tests/loom_watch.rs (target/debug/deps/loom_watch-925b3b4dbe5d222c)

running 1 test
test a_transition_racing_an_opening_gate_is_never_missed ... FAILED

failures:

---- a_transition_racing_an_opening_gate_is_never_missed stdout ----

thread 'a_transition_racing_an_opening_gate_is_never_missed' (291194611) panicked at kernel/loom/tests/loom_watch.rs:602:13:
assertion `left == right` failed: the stop parked over a thread that had parked, and nothing posted it
  left: []
 right: [Wake(TaskKey(1), Woken)]
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    a_transition_racing_an_opening_gate_is_never_missed

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 11 filtered out; finished in 0.00s

error: test failed, to rerun pass `-p kernel-loom --test loom_watch`
21:55:14 [ci] control `gate-fence-off`: 1 verdict(s) reached

21:55:14 === [ci] control `poll-fire-load-store`
   Compiling kernel-loom v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/loom)
    Finished `test` profile [optimized + debuginfo] target(s) in 2.76s
     Running tests/loom_watch.rs (target/debug/deps/loom_watch-1a5cc25a2e748024)

running 3 tests
test a_poll_on_two_watches_racing_both_posts_completes_exactly_once ... FAILED
test a_poll_registered_racing_a_post_in_place_completes_exactly_once ... FAILED
test a_poll_registered_racing_a_post_completes_exactly_once ... FAILED

failures:

---- a_poll_on_two_watches_racing_both_posts_completes_exactly_once stdout ----

thread 'a_poll_on_two_watches_racing_both_posts_completes_exactly_once' (291199330) panicked at kernel/loom/tests/loom_watch.rs:658:9:
assertion `left == right` failed: a poll over a ready object completes once
  left: 2
 right: 1
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

---- a_poll_registered_racing_a_post_in_place_completes_exactly_once stdout ----

thread 'a_poll_registered_racing_a_post_in_place_completes_exactly_once' (291199332) panicked at kernel/loom/tests/loom_watch.rs:351:5:
assertion `left == right` failed: a poll over a ready object completes once
  left: 2
 right: 1

---- a_poll_registered_racing_a_post_completes_exactly_once stdout ----

thread 'a_poll_registered_racing_a_post_completes_exactly_once' (291199331) panicked at kernel/loom/tests/loom_watch.rs:351:5:
assertion `left == right` failed: a poll over a ready object completes once
  left: 2
 right: 1


failures:
    a_poll_on_two_watches_racing_both_posts_completes_exactly_once
    a_poll_registered_racing_a_post_completes_exactly_once
    a_poll_registered_racing_a_post_in_place_completes_exactly_once

test result: FAILED. 0 passed; 3 failed; 0 ignored; 0 measured; 9 filtered out; finished in 0.00s

error: test failed, to rerun pass `-p kernel-loom --test loom_watch`
21:55:17 [ci] control `poll-fire-load-store`: 3 verdict(s) reached

21:55:17 === [ci] control `fault-posted-before-it-is-set`
   Compiling kernel-loom v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/loom)
    Finished `test` profile [optimized + debuginfo] target(s) in 3.97s
     Running tests/loom_watch.rs (target/debug/deps/loom_watch-301e0a889f6718d4)

running 2 tests
test a_poll_registered_racing_a_post_in_place_completes_exactly_once ... FAILED
test a_poll_registered_racing_a_post_completes_exactly_once ... FAILED

failures:

---- a_poll_registered_racing_a_post_in_place_completes_exactly_once stdout ----

thread 'a_poll_registered_racing_a_post_in_place_completes_exactly_once' (291202839) panicked at kernel/loom/tests/loom_watch.rs:350:5:
assertion `left != right` failed: a poll over a ready object was completed by neither
  left: 0
 right: 0
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

---- a_poll_registered_racing_a_post_completes_exactly_once stdout ----

thread 'a_poll_registered_racing_a_post_completes_exactly_once' (291202838) panicked at kernel/loom/tests/loom_watch.rs:350:5:
assertion `left != right` failed: a poll over a ready object was completed by neither
  left: 0
 right: 0


failures:
    a_poll_registered_racing_a_post_completes_exactly_once
    a_poll_registered_racing_a_post_in_place_completes_exactly_once

test result: FAILED. 0 passed; 2 failed; 0 ignored; 0 measured; 10 filtered out; finished in 0.00s

error: test failed, to rerun pass `-p kernel-loom --test loom_watch`
21:55:22 [ci] control `fault-posted-before-it-is-set`: 3 verdict(s) reached

21:55:22 === [ci] control `victim-retires-mid-probe`
   Compiling kernel-loom v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/loom)
    Finished `test` profile [optimized + debuginfo] target(s) in 2.49s
     Running tests/loom_mailbox.rs (target/debug/deps/loom_mailbox-1ed4769457857e52)

running 1 test

thread 'a_probe_outstanding_when_its_victim_retires_is_never_reclaimed' (291204270) panicked at kernel/loom/tests/loom_mailbox.rs:254:5:
assertion `left == right` failed: the victim retired with a probe still linked in its queue, so the node stays claimed for the rest of the boot and every later `claim()` by its thief answers `None` — one CPU stopping costs a second CPU its pull half permanently
  left: 1
 right: 0
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
caught the verdict: the victim retired with a probe still linked in its queue
test a_probe_outstanding_when_its_victim_retires_is_never_reclaimed ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 1 filtered out; finished in 0.00s

21:55:24 [ci] control `victim-retires-mid-probe`: 1 verdict(s) reached

21:55:24 === [ci] control `counting-allocator`
   Compiling kernel v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel)
    Finished `test` profile [optimized + debuginfo] target(s) in 12.34s
     Running unittests pure/lib.rs (target/debug/deps/kernel-071e709d872cb645)

running 2 tests
test pcid::oracle::tests::the_counting_allocator_produces_a_cross_space_read ... ok
test pcid::tests::two_live_address_spaces_never_share_a_pcid ... FAILED

failures:

---- pcid::tests::two_live_address_spaces_never_share_a_pcid stdout ----

thread 'pcid::tests::two_live_address_spaces_never_share_a_pcid' (291216305) panicked at kernel/pure/pcid/mod.rs:171:21:
the allocator reissued tag 1, still held by a live address space
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    pcid::tests::two_live_address_spaces_never_share_a_pcid

test result: FAILED. 1 passed; 1 failed; 0 ignored; 0 measured; 182 filtered out; finished in 0.00s

error: test failed, to rerun pass `-p kernel --lib`
21:55:37 [ci] control `counting-allocator`: 2 verdict(s) reached

21:55:37 === [ci] control `mutate-spawn-skips-the-insert-recheck`
   Compiling kernel v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel)
    Finished `test` profile [optimized + debuginfo] target(s) in 12.28s
     Running unittests pure/lib.rs (target/debug/deps/kernel-43ec8569d5f41f19)

running 2 tests
test proclife::interleave::tests::a_kill_racing_a_spawn_leaves_no_unretired_thread ... FAILED
test proclife::interleave::tests::a_published_exit_leaves_no_unretired_thread ... FAILED

failures:

---- proclife::interleave::tests::a_kill_racing_a_spawn_leaves_no_unretired_thread stdout ----

thread 'proclife::interleave::tests::a_kill_racing_a_spawn_leaves_no_unretired_thread' (291218268) panicked at kernel/pure/proclife/interleave.rs:544:27:
a lifecycle law broke:
pid 0 was claimed for teardown and never published an exit
  schedule: spawn_thread#1 -> kill#0 -> kill#0 -> spawn_thread#1 -> spawn_thread#1 -> out 0/0 -> out 0/0
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

---- proclife::interleave::tests::a_published_exit_leaves_no_unretired_thread stdout ----

thread 'proclife::interleave::tests::a_published_exit_leaves_no_unretired_thread' (291218269) panicked at kernel/pure/proclife/interleave.rs:544:27:
a lifecycle law broke:
pid 0 was claimed for teardown and never published an exit
  schedule: spawn_thread#1 -> exit#0 -> exit#0 -> spawn_thread#1 -> spawn_thread#1 -> out 0/0 -> out 0/0 -> out 0/1 -> out 0/1


failures:
    proclife::interleave::tests::a_kill_racing_a_spawn_leaves_no_unretired_thread
    proclife::interleave::tests::a_published_exit_leaves_no_unretired_thread

test result: FAILED. 0 passed; 2 failed; 0 ignored; 0 measured; 183 filtered out; finished in 0.00s

error: test failed, to rerun pass `-p kernel --lib`
21:55:49 [ci] control `mutate-spawn-skips-the-insert-recheck`: 2 verdict(s) reached

21:55:49 === [ci] control `mutate-claim-teardown-always-wins`
   Compiling kernel v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel)
    Finished `test` profile [optimized + debuginfo] target(s) in 7.64s
     Running unittests pure/lib.rs (target/debug/deps/kernel-496545c747b63bde)

running 1 test
test proclife::interleave::tests::an_exit_and_a_kill_never_both_tear_a_process_down ... FAILED

failures:

---- proclife::interleave::tests::an_exit_and_a_kill_never_both_tear_a_process_down stdout ----

thread 'proclife::interleave::tests::an_exit_and_a_kill_never_both_tear_a_process_down' (291219232) panicked at kernel/pure/proclife/interleave.rs:544:27:
a lifecycle law broke:
pid 0: 2 teardown claims succeeded
  schedule: exit#0 -> exit#0 -> kill#1
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    proclife::interleave::tests::an_exit_and_a_kill_never_both_tear_a_process_down

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 185 filtered out; finished in 0.00s

error: test failed, to rerun pass `-p kernel --lib`
21:55:57 [ci] control `mutate-claim-teardown-always-wins`: 1 verdict(s) reached

21:55:57 === [ci] control `mutate-kill-waits-for-its-victims`
   Compiling kernel v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel)
    Finished `test` profile [optimized + debuginfo] target(s) in 6.01s
     Running unittests pure/lib.rs (target/debug/deps/kernel-b2b2b0db782bf128)

running 2 tests
test proclife::interleave::tests::two_processes_killing_each_other_both_end ... FAILED
test proclife::interleave::tests::a_kill_chain_of_three_ends ... FAILED

failures:

---- proclife::interleave::tests::two_processes_killing_each_other_both_end stdout ----

thread 'proclife::interleave::tests::two_processes_killing_each_other_both_end' (291222595) panicked at kernel/pure/proclife/interleave.rs:544:27:
a lifecycle law broke:
a kill waits on pid 1's teardown
  schedule: kill#0 -> kill#0
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

---- proclife::interleave::tests::a_kill_chain_of_three_ends stdout ----

thread 'proclife::interleave::tests::a_kill_chain_of_three_ends' (291222594) panicked at kernel/pure/proclife/interleave.rs:544:27:
a lifecycle law broke:
a kill waits on pid 1's teardown
  schedule: kill#0 -> kill#0


failures:
    proclife::interleave::tests::a_kill_chain_of_three_ends
    proclife::interleave::tests::two_processes_killing_each_other_both_end

test result: FAILED. 0 passed; 2 failed; 0 ignored; 0 measured; 184 filtered out; finished in 0.00s

error: test failed, to rerun pass `-p kernel --lib`
21:56:04 [ci] control `mutate-kill-waits-for-its-victims`: 2 verdict(s) reached

21:56:04 === [ci] control `mutate-first-out-tears-down`
    Blocking waiting for file lock on package cache
   Compiling kernel v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel)
    Finished `test` profile [optimized + debuginfo] target(s) in 3.66s
     Running unittests pure/lib.rs (target/debug/deps/kernel-74a81dfc9992f850)

running 1 test
test proclife::interleave::tests::an_exit_and_a_kill_never_both_tear_a_process_down ... FAILED

failures:

---- proclife::interleave::tests::an_exit_and_a_kill_never_both_tear_a_process_down stdout ----

thread 'proclife::interleave::tests::an_exit_and_a_kill_never_both_tear_a_process_down' (291224048) panicked at kernel/pure/proclife/interleave.rs:544:27:
a lifecycle law broke:
pid 0 was torn down with tid 1 still in it
  schedule: exit#0 -> exit#0 -> kill#1 -> out 0/0 -> out 0/0
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    proclife::interleave::tests::an_exit_and_a_kill_never_both_tear_a_process_down

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 184 filtered out; finished in 0.00s

error: test failed, to rerun pass `-p kernel --lib`
21:56:08 [ci] control `mutate-first-out-tears-down`: 1 verdict(s) reached

21:56:08 === [ci] control `mutate-join-collects-in-a-teardown`
   Compiling kernel v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel)
    Finished `test` profile [optimized + debuginfo] target(s) in 3.35s
     Running unittests pure/lib.rs (target/debug/deps/kernel-ae2203657ece0d4f)

running 1 test
test proclife::interleave::tests::a_join_racing_the_kill_that_takes_its_target ... FAILED

failures:

---- proclife::interleave::tests::a_join_racing_the_kill_that_takes_its_target stdout ----

thread 'proclife::interleave::tests::a_join_racing_the_kill_that_takes_its_target' (291224858) panicked at kernel/pure/proclife/interleave.rs:544:27:
a lifecycle law broke:
pid 0 tid 1: its entry and its mapped TLS went while a sibling was still in the process
  schedule: kill#0 -> kill#0 -> thread_join#1 -> out 0/0 -> out 0/0 -> out 0/1 -> thread_join#1
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    proclife::interleave::tests::a_join_racing_the_kill_that_takes_its_target

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 184 filtered out; finished in 0.00s

error: test failed, to rerun pass `-p kernel --lib`
21:56:11 [ci] control `mutate-join-collects-in-a-teardown`: 1 verdict(s) reached

21:56:11 === [ci] control `mutate-last-out-leaves-before-its-teardown`
   Compiling kernel v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel)
    Finished `test` profile [optimized + debuginfo] target(s) in 3.36s
     Running unittests pure/lib.rs (target/debug/deps/kernel-aa7d6afdb92ce763)

running 2 tests
test proclife::interleave::tests::the_last_one_out_is_in_its_process_until_its_teardown_is_done ... FAILED
test proclife::teardown::tests::only_the_thread_that_empties_a_claimed_process_tears_it_down ... FAILED

failures:

---- proclife::interleave::tests::the_last_one_out_is_in_its_process_until_its_teardown_is_done stdout ----

thread 'proclife::interleave::tests::the_last_one_out_is_in_its_process_until_its_teardown_is_done' (291225412) panicked at kernel/pure/proclife/interleave.rs:544:27:
a lifecycle law broke:
pid 0 tid 0 is tearing its process down and the table has it out, so a stop would not wait for it
  schedule: exit#0 -> exit#0 -> out 0/0

---- proclife::teardown::tests::only_the_thread_that_empties_a_claimed_process_tears_it_down stdout ----

thread 'proclife::teardown::tests::only_the_thread_that_empties_a_claimed_process_tears_it_down' (291225413) panicked at kernel/pure/proclife/teardown.rs:219:9:
assertion `left == right` failed: the last one out is in its process until its teardown is done
  left: Some(Zombie(-1))
 right: Some(Scheduled)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    proclife::interleave::tests::the_last_one_out_is_in_its_process_until_its_teardown_is_done
    proclife::teardown::tests::only_the_thread_that_empties_a_claimed_process_tears_it_down

test result: FAILED. 0 passed; 2 failed; 0 ignored; 0 measured; 184 filtered out; finished in 0.00s

error: test failed, to rerun pass `-p kernel --lib`
21:56:15 [ci] control `mutate-last-out-leaves-before-its-teardown`: 2 verdict(s) reached

21:56:15 === [ci] control `mutate-place-skips-the-insert-recheck`
   Compiling kernel v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel)
    Finished `test` profile [optimized + debuginfo] target(s) in 3.15s
     Running unittests pure/lib.rs (target/debug/deps/kernel-2bf0693ae0560e00)

running 1 test
test proclife::interleave::tests::a_spawn_racing_its_places_kill_leaves_nothing_under_it_and_publishes_it ... FAILED

failures:

---- proclife::interleave::tests::a_spawn_racing_its_places_kill_leaves_nothing_under_it_and_publishes_it stdout ----

thread 'proclife::interleave::tests::a_spawn_racing_its_places_kill_leaves_nothing_under_it_and_publishes_it' (291226429) panicked at kernel/pure/proclife/interleave.rs:544:27:
a lifecycle law broke:
pid 3 landed unclaimed under a place whose end was already claimed
  schedule: spawn_under#1 -> kill#0 -> kill#0 -> kill#0 -> kill#0 -> spawn_under#1 -> spawn_under#1
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    proclife::interleave::tests::a_spawn_racing_its_places_kill_leaves_nothing_under_it_and_publishes_it

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 185 filtered out; finished in 0.00s

error: test failed, to rerun pass `-p kernel --lib`
21:56:18 [ci] control `mutate-place-skips-the-insert-recheck`: 1 verdict(s) reached

21:56:18 === [ci] control `mutate-refused-spawn-keeps-the-count`
   Compiling kernel v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel)
    Finished `test` profile [optimized + debuginfo] target(s) in 4.35s
     Running unittests pure/lib.rs (target/debug/deps/kernel-63f8df73d16bb235)

running 1 test
test proclife::interleave::tests::a_spawn_racing_its_places_kill_leaves_nothing_under_it_and_publishes_it ... FAILED

failures:

---- proclife::interleave::tests::a_spawn_racing_its_places_kill_leaves_nothing_under_it_and_publishes_it stdout ----
a spawn racing its place's kill: 1641 states

thread 'proclife::interleave::tests::a_spawn_racing_its_places_kill_leaves_nothing_under_it_and_publishes_it' (291228994) panicked at kernel/pure/proclife/interleave.rs:544:27:
a lifecycle law broke:
pid 1 was claimed for teardown and never published an exit
  schedule: spawn_under#1 -> kill#0 -> kill#0 -> kill#0 -> kill#0 -> spawn_under#1 -> out 1/0 -> out 1/0 -> out 1/0 -> out 1/0 -> out 2/0 -> out 2/0 -> out 2/0 -> out 2/0 -> out 2/0 -> out 2/0
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    proclife::interleave::tests::a_spawn_racing_its_places_kill_leaves_nothing_under_it_and_publishes_it

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 185 filtered out; finished in 0.01s

error: test failed, to rerun pass `-p kernel --lib`
21:56:23 [ci] control `mutate-refused-spawn-keeps-the-count`: 1 verdict(s) reached

21:56:23 === [ci] control `mutate-landed-child-retires-nothing`
   Compiling kernel v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel)
    Finished `test` profile [optimized + debuginfo] target(s) in 3.22s
     Running unittests pure/lib.rs (target/debug/deps/kernel-84b409621c08ae20)

running 2 tests
test proclife::tree::tests::a_child_landed_under_a_place_claimed_since_its_admission_is_claimed_with_it ... FAILED
test proclife::interleave::tests::a_spawn_racing_its_places_kill_leaves_nothing_under_it_and_publishes_it ... FAILED

failures:

---- proclife::tree::tests::a_child_landed_under_a_place_claimed_since_its_admission_is_claimed_with_it stdout ----

thread 'proclife::tree::tests::a_child_landed_under_a_place_claimed_since_its_admission_is_claimed_with_it' (291230567) panicked at kernel/pure/proclife/tree.rs:274:9:
assertion `left == right` failed: the child's spawner was not answered its thread to retire
  left: []
 right: [Tid(0)]
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

---- proclife::interleave::tests::a_spawn_racing_its_places_kill_leaves_nothing_under_it_and_publishes_it stdout ----

thread 'proclife::interleave::tests::a_spawn_racing_its_places_kill_leaves_nothing_under_it_and_publishes_it' (291230566) panicked at kernel/pure/proclife/interleave.rs:544:27:
a lifecycle law broke:
pid 1 was claimed for teardown and never published an exit
pid 3 was claimed for teardown and never published an exit
pid 3 outlived the end of pid 1 above it
  schedule: spawn_under#1 -> kill#0 -> kill#0 -> kill#0 -> kill#0 -> spawn_under#1 -> spawn_under#1 -> spawn_under#1 -> out 1/0 -> out 1/0 -> out 1/0 -> out 1/0 -> out 2/0 -> out 2/0 -> out 2/0 -> out 2/0 -> out 2/0 -> out 2/0


failures:
    proclife::interleave::tests::a_spawn_racing_its_places_kill_leaves_nothing_under_it_and_publishes_it
    proclife::tree::tests::a_child_landed_under_a_place_claimed_since_its_admission_is_claimed_with_it

test result: FAILED. 0 passed; 2 failed; 0 ignored; 0 measured; 184 filtered out; finished in 0.00s

error: test failed, to rerun pass `-p kernel --lib`
21:56:26 [ci] control `mutate-landed-child-retires-nothing`: 2 verdict(s) reached

21:56:26 === [ci] control `mutate-publish-before-the-children`
   Compiling kernel v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel)
    Finished `test` profile [optimized + debuginfo] target(s) in 3.35s
     Running unittests pure/lib.rs (target/debug/deps/kernel-faff6450dfcdb6ce)

running 1 test
test proclife::interleave::tests::an_exit_publishes_after_every_end_below_it ... FAILED

failures:

---- proclife::interleave::tests::an_exit_publishes_after_every_end_below_it stdout ----

thread 'proclife::interleave::tests::an_exit_publishes_after_every_end_below_it' (291237307) panicked at kernel/pure/proclife/interleave.rs:544:27:
a lifecycle law broke:
pid 1 was published with pid 2 still unpublished below it
pid 1 was published with pid 4 still unpublished below it
  schedule: exit#0 -> exit#0 -> exit#0 -> exit#0 -> exit#0 -> exit#0 -> exit#0 -> exit#0 -> out 1/0 -> out 1/0 -> out 1/0 -> out 1/0
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    proclife::interleave::tests::an_exit_publishes_after_every_end_below_it

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 185 filtered out; finished in 0.00s

error: test failed, to rerun pass `-p kernel --lib`
21:56:30 [ci] control `mutate-publish-before-the-children`: 1 verdict(s) reached

21:56:30 === [ci] control `mutate-walk-in-one-hold`
   Compiling kernel v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel)
    Finished `test` profile [optimized + debuginfo] target(s) in 7.23s
     Running unittests pure/lib.rs (target/debug/deps/kernel-be2f9b8c0361f6b0)

running 1 test
test proclife::interleave::tests::a_spawn_under_an_unrelated_process_lands_between_two_claims_of_one_walk ... FAILED

failures:

---- proclife::interleave::tests::a_spawn_under_an_unrelated_process_lands_between_two_claims_of_one_walk stdout ----

thread 'proclife::interleave::tests::a_spawn_under_an_unrelated_process_lands_between_two_claims_of_one_walk' (291277899) panicked at kernel/pure/proclife/interleave.rs:894:9:
no ordering landed the unrelated spawn between the walk's two claims below the end: the walk holds the table across its claims
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:

@Japabu

Japabu commented Oct 11, 2026

Copy link
Copy Markdown
Collaborator Author

cargo run -- --ci host on 148c3de, EXIT=0, part 9 of 10

    proclife::interleave::tests::a_spawn_under_an_unrelated_process_lands_between_two_claims_of_one_walk

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 185 filtered out; finished in 0.03s

error: test failed, to rerun pass `-p kernel --lib`
21:56:37 [ci] control `mutate-walk-in-one-hold`: 1 verdict(s) reached

21:56:37 === [ci] control `mutate-spawner-handle-after-the-landing`
   Compiling kernel v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel)
    Finished `test` profile [optimized + debuginfo] target(s) in 3.51s
     Running unittests pure/lib.rs (target/debug/deps/kernel-058f7af5f83c90b4)

running 2 tests
test proclife::interleave::tests::a_spawn_racing_the_kill_of_its_own_spawner ... FAILED
test proclife::interleave::tests::a_spawn_racing_its_places_kill_leaves_nothing_under_it_and_publishes_it ... FAILED

failures:

---- proclife::interleave::tests::a_spawn_racing_the_kill_of_its_own_spawner stdout ----

thread 'proclife::interleave::tests::a_spawn_racing_the_kill_of_its_own_spawner' (291285637) panicked at kernel/pure/proclife/interleave.rs:544:27:
a lifecycle law broke:
pid 3: a handle to it was minted after its last one had gone
  schedule: spawn_under#1 -> kill#0 -> kill#0 -> kill#0 -> kill#0 -> spawn_under#1 -> spawn_under#1 -> spawn_under#1 -> out 2/0 -> out 2/0 -> out 2/0 -> out 2/0 -> out 2/0 -> out 2/0 -> out 3/0 -> out 3/0 -> spawn_under#1
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

---- proclife::interleave::tests::a_spawn_racing_its_places_kill_leaves_nothing_under_it_and_publishes_it stdout ----

thread 'proclife::interleave::tests::a_spawn_racing_its_places_kill_leaves_nothing_under_it_and_publishes_it' (291285636) panicked at kernel/pure/proclife/interleave.rs:544:27:
a lifecycle law broke:
pid 3: a handle to it was minted after its last one had gone
  schedule: spawn_under#1 -> kill#0 -> kill#0 -> kill#0 -> kill#0 -> spawn_under#1 -> spawn_under#1 -> spawn_under#1 -> out 1/0 -> out 1/0 -> out 1/0 -> out 1/0 -> out 2/0 -> out 2/0 -> out 2/0 -> out 2/0 -> out 2/0 -> out 2/0 -> out 3/0 -> out 3/0 -> spawn_under#1


failures:
    proclife::interleave::tests::a_spawn_racing_its_places_kill_leaves_nothing_under_it_and_publishes_it
    proclife::interleave::tests::a_spawn_racing_the_kill_of_its_own_spawner

test result: FAILED. 0 passed; 2 failed; 0 ignored; 0 measured; 184 filtered out; finished in 0.00s

error: test failed, to rerun pass `-p kernel --lib`
21:56:41 [ci] control `mutate-spawner-handle-after-the-landing`: 2 verdict(s) reached

21:56:41 === [ci] control `mutate-spawner-handle-before-the-childs-own`
   Compiling kernel v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel)
    Finished `test` profile [optimized + debuginfo] target(s) in 6.78s
     Running unittests pure/lib.rs (target/debug/deps/kernel-2a8cbdcd811f5f1f)

running 1 test
test proclife::interleave::tests::a_sibling_closing_a_spawns_handle_before_the_spawn_returns ... FAILED

failures:

---- proclife::interleave::tests::a_sibling_closing_a_spawns_handle_before_the_spawn_returns stdout ----

thread 'proclife::interleave::tests::a_sibling_closing_a_spawns_handle_before_the_spawn_returns' (291292474) panicked at kernel/pure/proclife/interleave.rs:544:27:
a lifecycle law broke:
pid 2: a handle to it was minted after its last one had gone
  schedule: spawn_under#0 -> spawn_under#0 -> close#1 -> spawn_under#0
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    proclife::interleave::tests::a_sibling_closing_a_spawns_handle_before_the_spawn_returns

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 185 filtered out; finished in 0.00s

error: test failed, to rerun pass `-p kernel --lib`
21:56:48 [ci] control `mutate-spawner-handle-before-the-childs-own`: 1 verdict(s) reached

21:56:48 === [ci] control `placement-ignores-staleness`
   Compiling libc v0.2.190
   Compiling kernel v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel)
   Compiling getrandom v0.3.4 (https://github.com/ToyOSOrg/getrandom?branch=toyos-0.3-sdk-0.12#67c17e0a)
   Compiling rand_core v0.9.5
   Compiling rand_chacha v0.9.0
   Compiling rand v0.9.5
   Compiling kernel-sim v0.1.0 (/Users/jan/Dev/jan/toyos-netring/kernel/sim)
    Finished `test` profile [optimized + debuginfo] target(s) in 8.40s
     Running tests/policy.rs (target/debug/deps/policy-181b9e062ec76103)

running 1 test
test a_stopped_cpu_stops_taking_work ... FAILED

failures:

---- a_stopped_cpu_stops_taking_work stdout ----
stopped_cpu: worst never_ran 10, total 114 over 16 seeds, bound 4 of 24

thread 'a_stopped_cpu_stops_taking_work' (291299583) panicked at kernel/sim/tests/policy.rs:1419:5:
a stopped cpu took 10 of 24 programs, against the 4 its published numbers are believed for
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    a_stopped_cpu_stops_taking_work

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 11 filtered out; finished in 0.02s

error: test failed, to rerun pass `-p kernel-sim --test policy`
21:56:57 [ci] control `placement-ignores-staleness`: 1 verdict(s) reached

21:56:57 === [ci] control `mutate-session-end-forgets`
   Compiling toyos-blockring v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/blockring)
    Finished `test` profile [optimized + debuginfo] target(s) in 2.50s
     Running unittests src/lib.rs (target/debug/deps/toyos_blockring-7160c84181406893)

running 1 test
test model::tests::every_request_is_answered_exactly_once ... FAILED

failures:

---- model::tests::every_request_is_answered_exactly_once stdout ----
Failures { resets: 0, crashes: 0, errors: 0 }: 28 end states, 0 with a flush given up, None
Failures { resets: 1, crashes: 0, errors: 0 }: 492 end states, 0 with a flush given up, None
Failures { resets: 0, crashes: 1, errors: 0 }: 4 end states, 0 with a flush given up, Some((Answers, "ticket 3 ended answered None, after ask 0 > ask 1 > ask 2 > take Write { run: Run { first: 0, count: 1 }, lba: 0 }#4 > take Write { run: Run { first: 1, count: 1 }, lba: 1 }#5 > take Flush#6 > done Write { run: Run { first: 0, count: 1 }, lba: 0 }#4 > done Write { run: Run { first: 1, count: 1 }, lba: 1 }#5 > done Flush#6 > read #4 Ok > ask 3 > ask 4 > take Write { run: Run { first: 3, count: 1 }, lba: 0 }#8 > take Flush#7 > done Write { run: Run { first: 3, count: 1 }, lba: 0 }#8 > done Flush#7 > read #5 Ok > read #6 Ok > crash([None, None] [3, 2]) > notice > reconnect > take Write { run: Run { first: 0, count: 1 }, lba: 0 }#12 > take Write { run: Run { first: 1, count: 1 }, lba: 1 }#9 > done Write { run: Run { first: 0, count: 1 }, lba: 0 }#12 > done Write { run: Run { first: 1, count: 1 }, lba: 1 }#9 > read #12 Ok > read #9 Ok > take Flush#16 > done Flush#16 > read #16 Ok"))

thread 'model::tests::every_request_is_answered_exactly_once' (291301926) panicked at lib/blockring/src/model.rs:722:17:
Failures { resets: 0, crashes: 1, errors: 0 }: ticket 3 ended answered None, after ask 0 > ask 1 > ask 2 > take Write { run: Run { first: 0, count: 1 }, lba: 0 }#4 > take Write { run: Run { first: 1, count: 1 }, lba: 1 }#5 > take Flush#6 > done Write { run: Run { first: 0, count: 1 }, lba: 0 }#4 > done Write { run: Run { first: 1, count: 1 }, lba: 1 }#5 > done Flush#6 > read #4 Ok > ask 3 > ask 4 > take Write { run: Run { first: 3, count: 1 }, lba: 0 }#8 > take Flush#7 > done Write { run: Run { first: 3, count: 1 }, lba: 0 }#8 > done Flush#7 > read #5 Ok > read #6 Ok > crash([None, None] [3, 2]) > notice > reconnect > take Write { run: Run { first: 0, count: 1 }, lba: 0 }#12 > take Write { run: Run { first: 1, count: 1 }, lba: 1 }#9 > done Write { run: Run { first: 0, count: 1 }, lba: 0 }#12 > done Write { run: Run { first: 1, count: 1 }, lba: 1 }#9 > read #12 Ok > read #9 Ok > take Flush#16 > done Flush#16 > read #16 Ok
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    model::tests::every_request_is_answered_exactly_once

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 22 filtered out; finished in 9.91s

error: test failed, to rerun pass `-p toyos-blockring --lib`
21:57:10 [ci] control `mutate-session-end-forgets`: 1 verdict(s) reached

21:57:10 === [ci] control `mutate-abort-keeps-inflight`
   Compiling toyos-blockring v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/blockring)
    Finished `test` profile [optimized + debuginfo] target(s) in 2.60s
     Running unittests src/lib.rs (target/debug/deps/toyos_blockring-d0f5febba2739286)

running 1 test
test model::tests::every_request_is_answered_exactly_once ... FAILED

failures:

---- model::tests::every_request_is_answered_exactly_once stdout ----
Failures { resets: 0, crashes: 0, errors: 0 }: 28 end states, 0 with a flush given up, None
Failures { resets: 1, crashes: 0, errors: 0 }: 2 end states, 0 with a flush given up, Some((Answers, "the client met a second completion for tag 7, after ask 0 > ask 1 > ask 2 > take Write { run: Run { first: 0, count: 1 }, lba: 0 }#4 > take Write { run: Run { first: 1, count: 1 }, lba: 1 }#5 > take Flush#6 > done Write { run: Run { first: 0, count: 1 }, lba: 0 }#4 > done Write { run: Run { first: 1, count: 1 }, lba: 1 }#5 > done Flush#6 > read #4 Ok > ask 3 > ask 4 > take Write { run: Run { first: 3, count: 1 }, lba: 0 }#8 > take Flush#7 > done Write { run: Run { first: 3, count: 1 }, lba: 0 }#8 > read #5 Ok > read #6 Ok > read #8 Ok > reset([7] [None, None] [3, 2]) > read #7 Device > take Write { run: Run { first: 0, count: 1 }, lba: 0 }#12 > take Write { run: Run { first: 1, count: 1 }, lba: 1 }#9 > done Write { run: Run { first: 0, count: 1 }, lba: 0 }#12 > done Write { run: Run { first: 1, count: 1 }, lba: 1 }#9 > read #12 Ok > take Write { run: Run { first: 3, count: 1 }, lba: 0 }#16 > done Write { run: Run { first: 3, count: 1 }, lba: 0 }#16 > read #9 Ok > read #16 Ok > take Flush#20 > done Flush#20 > read #20 Lost > take Write { run: Run { first: 0, count: 1 }, lba: 0 }#24 > take Write { run: Run { first: 1, count: 1 }, lba: 1 }#13 > done Write { run: Run { first: 0, count: 1 }, lba: 0 }#24 > done Write { run: Run { first: 1, count: 1 }, lba: 1 }#13 > read #24 Ok > take Write { run: Run { first: 3, count: 1 }, lba: 0 }#28 > done Write { run: Run { first: 3, count: 1 }, lba: 0 }#28 > read #13 Ok > read #28 Ok > take Flush#32 > done Flush#32 > read #32 Ok > posted #7 > read #7 Ok"))

thread 'model::tests::every_request_is_answered_exactly_once' (291314166) panicked at lib/blockring/src/model.rs:722:17:
Failures { resets: 1, crashes: 0, errors: 0 }: the client met a second completion for tag 7, after ask 0 > ask 1 > ask 2 > take Write { run: Run { first: 0, count: 1 }, lba: 0 }#4 > take Write { run: Run { first: 1, count: 1 }, lba: 1 }#5 > take Flush#6 > done Write { run: Run { first: 0, count: 1 }, lba: 0 }#4 > done Write { run: Run { first: 1, count: 1 }, lba: 1 }#5 > done Flush#6 > read #4 Ok > ask 3 > ask 4 > take Write { run: Run { first: 3, count: 1 }, lba: 0 }#8 > take Flush#7 > done Write { run: Run { first: 3, count: 1 }, lba: 0 }#8 > read #5 Ok > read #6 Ok > read #8 Ok > reset([7] [None, None] [3, 2]) > read #7 Device > take Write { run: Run { first: 0, count: 1 }, lba: 0 }#12 > take Write { run: Run { first: 1, count: 1 }, lba: 1 }#9 > done Write { run: Run { first: 0, count: 1 }, lba: 0 }#12 > done Write { run: Run { first: 1, count: 1 }, lba: 1 }#9 > read #12 Ok > take Write { run: Run { first: 3, count: 1 }, lba: 0 }#16 > done Write { run: Run { first: 3, count: 1 }, lba: 0 }#16 > read #9 Ok > read #16 Ok > take Flush#20 > done Flush#20 > read #20 Lost > take Write { run: Run { first: 0, count: 1 }, lba: 0 }#24 > take Write { run: Run { first: 1, count: 1 }, lba: 1 }#13 > done Write { run: Run { first: 0, count: 1 }, lba: 0 }#24 > done Write { run: Run { first: 1, count: 1 }, lba: 1 }#13 > read #24 Ok > take Write { run: Run { first: 3, count: 1 }, lba: 0 }#28 > done Write { run: Run { first: 3, count: 1 }, lba: 0 }#28 > read #13 Ok > read #28 Ok > take Flush#32 > done Flush#32 > read #32 Ok > posted #7 > read #7 Ok
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    model::tests::every_request_is_answered_exactly_once

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 22 filtered out; finished in 0.02s

error: test failed, to rerun pass `-p toyos-blockring --lib`
21:57:13 [ci] control `mutate-abort-keeps-inflight`: 1 verdict(s) reached

21:57:13 === [ci] control `mutate-no-reissue-after-loss`
   Compiling toyos-blockring v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/blockring)
    Finished `test` profile [optimized + debuginfo] target(s) in 2.59s
     Running unittests src/lib.rs (target/debug/deps/toyos_blockring-88d4a4adc4664165)

running 1 test
test model::tests::what_a_flush_calls_durable_is_on_the_medium ... FAILED

failures:

---- model::tests::what_a_flush_calls_durable_is_on_the_medium stdout ----
Failures { resets: 0, crashes: 0, errors: 0 }: 28 end states, 0 with a flush given up, None
Failures { resets: 1, crashes: 0, errors: 0 }: 20 end states, 0 with a flush given up, Some((Durable, "flush 4 was answered durable with block 0 holding 1, not the 3 acknowledged before it (or a later one of [3]), after ask 0 > ask 1 > ask 2 > take Write { run: Run { first: 0, count: 1 }, lba: 0 }#4 > take Write { run: Run { first: 1, count: 1 }, lba: 1 }#5 > take Flush#6 > done Write { run: Run { first: 0, count: 1 }, lba: 0 }#4 > done Write { run: Run { first: 1, count: 1 }, lba: 1 }#5 > done Flush#6 > read #4 Ok > ask 3 > take Write { run: Run { first: 3, count: 1 }, lba: 0 }#8 > done Write { run: Run { first: 3, count: 1 }, lba: 0 }#8 > read #5 Ok > read #6 Ok > read #8 Ok > ask 4 > take Flush#12 > reset([] [None, None] [1, 2]) > read #12 Device > take Flush#16 > done Flush#16 > read #16 Lost > take Flush#20 > done Flush#20 > read #20 Ok"))

thread 'model::tests::what_a_flush_calls_durable_is_on_the_medium' (291316048) panicked at lib/blockring/src/model.rs:733:17:
Failures { resets: 1, crashes: 0, errors: 0 }: flush 4 was answered durable with block 0 holding 1, not the 3 acknowledged before it (or a later one of [3]), after ask 0 > ask 1 > ask 2 > take Write { run: Run { first: 0, count: 1 }, lba: 0 }#4 > take Write { run: Run { first: 1, count: 1 }, lba: 1 }#5 > take Flush#6 > done Write { run: Run { first: 0, count: 1 }, lba: 0 }#4 > done Write { run: Run { first: 1, count: 1 }, lba: 1 }#5 > done Flush#6 > read #4 Ok > ask 3 > take Write { run: Run { first: 3, count: 1 }, lba: 0 }#8 > done Write { run: Run { first: 3, count: 1 }, lba: 0 }#8 > read #5 Ok > read #6 Ok > read #8 Ok > ask 4 > take Flush#12 > reset([] [None, None] [1, 2]) > read #12 Device > take Flush#16 > done Flush#16 > read #16 Lost > take Flush#20 > done Flush#20 > read #20 Ok
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    model::tests::what_a_flush_calls_durable_is_on_the_medium

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 22 filtered out; finished in 0.02s

error: test failed, to rerun pass `-p toyos-blockring --lib`
21:57:15 [ci] control `mutate-no-reissue-after-loss`: 1 verdict(s) reached

21:57:15 === [ci] control `publish-relaxed`
   Compiling toyos-transport v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/blockring/transport)
    Finished `test` profile [optimized + debuginfo] target(s) in 1.99s
     Running tests/loom.rs (target/debug/deps/loom-1fa43d1fe7776b42)

running 1 test
test a_published_entry_is_read_whole ... FAILED

failures:

---- a_published_entry_is_read_whole stdout ----

thread 'a_published_entry_is_read_whole' (291318003) panicked at lib/blockring/transport/tests/loom.rs:76:9:
assertion `left == right` failed: an entry was read before its words
  left: [[0, 0], [0, 0]]
 right: [[100, 3], [101, 10]]
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    a_published_entry_is_read_whole

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 2 filtered out; finished in 0.00s

error: test failed, to rerun pass `-p toyos-transport --test loom`
21:57:18 [ci] control `publish-relaxed`: 1 verdict(s) reached

21:57:18 === [ci] control `no-clamp`
   Compiling toyos-transport v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/blockring/transport)
    Finished `test` profile [optimized + debuginfo] target(s) in 1.96s
     Running tests/loom.rs (target/debug/deps/loom-14d3b6ab914e415a)

running 1 test
test a_hostile_producer_yields_entries_or_a_violation ... FAILED

failures:

---- a_hostile_producer_yields_entries_or_a_violation stdout ----

thread 'a_hostile_producer_yields_entries_or_a_violation' (291320223) panicked at lib/blockring/transport/tests/loom.rs:107:9:
took 3 entries from a ring of 2 without releasing one
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    a_hostile_producer_yields_entries_or_a_violation

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 2 filtered out; finished in 0.01s

error: test failed, to rerun pass `-p toyos-transport --test loom`
21:57:20 [ci] control `no-clamp`: 1 verdict(s) reached

21:57:20 === [ci] control `end-keeps-inflight`
   Compiling toyos-transport v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/blockring/transport)
    Finished `test` profile [optimized + debuginfo] target(s) in 0.69s
     Running unittests src/lib.rs (target/debug/deps/toyos_transport-24027c836c47b59d)

running 1 test
test inflight::tests::an_end_answers_every_tag_once_and_a_late_completion_nothing ... FAILED

failures:

---- inflight::tests::an_end_answers_every_tag_once_and_a_late_completion_nothing stdout ----

thread 'inflight::tests::an_end_answers_every_tag_once_and_a_late_completion_nothing' (291321048) panicked at lib/blockring/transport/src/inflight.rs:150:9:
assertion `left == right` failed
  left: []
 right: [(4, 0), (6, 2)]
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    inflight::tests::an_end_answers_every_tag_once_and_a_late_completion_nothing

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 9 filtered out; finished in 0.00s

error: test failed, to rerun pass `-p toyos-transport --lib`
21:57:21 [ci] control `end-keeps-inflight`: 1 verdict(s) reached

21:57:21 === [ci] system/acpiserver
   Compiling toyos v0.18.0 (/Users/jan/Dev/jan/toyos-netring/sdk/toyos)
   Compiling acpiserver v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/acpiserver)
    Finished `test` profile [optimized + debuginfo] target(s) in 5.57s
     Running unittests src/main.rs (target/debug/deps/acpiserver-814daf8de80eb8d4)

running 63 tests
test aml::tests::a_lock_field_read_at_load_takes_the_lock_and_waits_out_the_firmwares_hold ... ok
test aml::tests::a_machine_that_stops_mid_load_ends_it_with_nothing_refused ... ok
test aml::tests::a_refused_dsdt_leaves_no_namespace_and_loads_no_ssdt ... ok
test aml::tests::a_refused_ssdt_is_one_block_refused_and_the_rest_load ... ok
test aml::tests::an_s5_that_is_no_package_of_two_integers_is_refused_by_kind ... ok
test aml::tests::every_refusals_kind_is_free_of_what_the_firmware_chose ... ok
test aml::tests::only_an_s5_the_kernel_kept_is_a_power_off ... ok
test aml::tests::tables_in_memory_of_a_type_the_kernel_keeps_are_refused_by_that_name_and_type ... ok
test aml::tests::tables_the_kernel_will_not_read_are_refused_by_its_name_for_it ... ok
test aml::tests::qemus_tables_load_and_s5_is_what_its_kernel_decoded ... ok
test battery::tests::a_bif_is_read_by_its_place_in_the_package ... ok
test battery::tests::a_bix_of_either_revision_is_read_at_the_same_places ... ok
test battery::tests::a_bst_reads_its_four_dwords_and_names_its_state ... ok
test battery::tests::a_current_is_power_only_at_its_present_voltage ... ok
test battery::tests::a_full_charge_of_zero_is_no_percent ... ok
test battery::tests::a_package_that_is_not_what_10_2_2_says_is_refused_by_name ... ok
test battery::tests::an_unknown_dword_is_unknown_and_never_a_number ... ok
test devices::tests::a_controller_this_server_cannot_serve_is_none ... ok
test devices::tests::a_query_whose_write_the_kernel_refuses_is_no_press ... ok
test devices::tests::an_amd_laptops_controller_and_button_are_found_in_its_dsdt ... ok
test ec::tests::a_byte_before_the_command_is_refused - should panic ... ok
test devices::tests::an_eisa_id_is_its_three_letters_and_four_digits ... ok
test devices::tests::query_0x28_on_an_amd_laptop_is_a_press_of_its_power_button ... ok
test ec::tests::a_query_writes_its_command_once_the_input_is_empty_and_reads_once_the_output_is_full ... ok
test ec::tests::a_read_writes_its_address_only_once_the_command_is_taken ... ok
test ec::tests::a_write_ends_once_the_controller_has_taken_its_value ... ok
test ec::tests::every_transaction_runs_against_a_controller_that_takes_each_byte_late ... ok
test ec::tests::a_write_reads_no_byte - should panic ... ok
test host::tests::a_controller_port_the_kernel_refuses_detaches_the_controller ... ok
test host::tests::a_firmware_that_holds_the_lock_past_the_bound_ends_the_server - should panic ... ok
test host::tests::a_lock_the_firmware_holds_is_waited_for_and_taken_after_its_release ... ok
test host::tests::a_lock_the_kernel_cannot_take_is_denied_and_never_reported_held ... ok
test host::tests::a_page_the_firmware_lists_nowhere_is_counted_under_a_name_of_its_own ... ok
test host::tests::a_read_is_the_kernels_in_each_space_and_counted_by_space_and_page ... ok
test host::tests::a_read_the_kernel_refuses_is_denied_under_the_kernels_name_and_counted ... ok
test host::tests::a_stopping_machine_denies_everything_and_is_no_refusal_of_the_firmwares ... ok
test host::tests::an_acquires_own_bound_ends_the_wait_untaken ... ok
test battery::tests::a_laptops_battery_is_found_after_reg_and_read_through_the_controller ... ok
test battery::tests::a_machine_that_stops_mid_read_refuses_nothing ... ok
test host::tests::only_a_forwarded_port_write_is_asked_of_the_kernel ... ok
test battery::tests::the_census_counts_the_global_lock_of_the_power_sources_methods_alone ... ok
test host::tests::only_a_notify_of_a_press_to_a_served_button_is_a_press ... ok
test host::tests::the_lock_is_taken_and_given_back_through_the_kernel ... ok
test ledger::tests::a_thing_is_new_once_and_counted_every_time ... ok
test sci::tests::a_firmware_that_never_lets_go_meets_the_deadline_with_its_enables_back ... ok
test sci::tests::a_press_and_the_controllers_gpe_are_both_read_off_one_sci ... ok
test sci::tests::a_release_already_latched_ends_the_wait_without_one ... ok
test sci::tests::a_status_set_with_its_enable_clear_is_no_event ... ok
test sci::tests::an_enabled_event_outside_the_served_set_is_refused_by_name ... ok
test sci::tests::only_a_press_on_a_machine_handed_no_sleep_type_is_dropped ... ok
test sci::tests::the_wait_ends_on_the_firmwares_release_and_leaves_every_other_event_latched_and_enabled ... ok
test tables::tests::a_range_is_fetched_whole_in_qwords_and_then_bytes_and_kept ... ok
test tables::tests::a_range_the_kernel_refuses_any_byte_of_is_not_readable_and_says_why ... ok
test tables::tests::a_stopping_machine_reads_no_table ... ok
test tests::a_controller_port_the_kernel_refuses_ends_the_controller ... ok
test tests::a_query_waiting_at_arm_runs_its_method_on_the_attached_controller ... ok
test tests::a_querys_method_runs_only_where_a_control_method_button_is_served ... ok
test tests::no_namespace_leaves_the_button_and_the_controller_unserved_and_keeps_the_claim ... ok
test host::tests::the_controllers_space_is_read_and_written_through_its_transactions ... ok
test battery::tests::a_controller_that_wants_the_global_lock_is_not_attached_and_no_battery_is_read ... ok
test tests::a_controller_port_the_kernel_refuses_to_aml_or_the_drain_ends_it_for_both ... ok
test battery::tests::a_refused_reading_is_said_once_and_counted ... ok
test battery::tests::a_reading_is_said_only_where_its_percent_its_state_or_the_adapter_moves ... ok

test result: ok. 63 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

21:57:27 [ci] system/acpiserver: cargo test --manifest-path system/acpiserver/Cargo.toml

21:57:27 === [ci] system/diskserver
   Compiling diskserver v0.0.0 (/Users/jan/Dev/jan/toyos-netring/system/diskserver)
    Finished `test` profile [optimized + debuginfo] target(s) in 1.93s
     Running unittests src/lib.rs (target/debug/deps/diskserver-30a09bbfca0a7027)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/main.rs (target/debug/deps/diskserver-5becb3acb2663b7a)

running 3 tests
test tests::a_listing_names_only_what_its_grant_admits ... ok
test tests::an_open_reaches_only_what_its_grant_admits ... ok
test tests::an_unusable_or_unclaimed_controller_is_refused_and_an_absent_one_lists_nothing ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

21:57:29 [ci] system/diskserver: cargo test --manifest-path system/diskserver/Cargo.toml

21:57:29 === [ci] system/fileserver
   Compiling fileserver v0.0.0 (/Users/jan/Dev/jan/toyos-netring/system/fileserver)
    Finished `test` profile [optimized + debuginfo] target(s) in 6.06s
     Running unittests src/lib.rs (target/debug/deps/fileserver-a5a73166470a059b)

running 46 tests
test cache::tests::a_write_past_the_disk_is_refused ... ok
test cache::tests::a_write_reaches_the_disk_at_the_flush_and_not_before ... ok
test cache::tests::contiguous_misses_are_one_request_and_a_second_read_is_none ... ok
test cache::tests::dirty_runs_go_out_in_runs ... ok
test data::tests::a_closed_file_keeps_its_length_across_a_remount ... ok
test data::tests::a_file_reads_back_what_was_written_across_pages_and_holes ... ok
test data::tests::a_file_unlinked_while_open_answers_gone ... ok
test data::tests::a_file_is_one_number_across_renames_and_another_files_is_another ... ok
test cache::tests::at_the_dirty_limit_a_refused_flush_refuses_the_write_and_the_cache_grows_no_larger ... ok
test data::tests::a_rename_moves_an_open_file_and_a_directory_with_its_contents ... ok
test data::tests::a_refused_rename_over_an_open_file_keeps_its_unsynced_writes ... ok
test data::tests::a_symlink_at_a_grant_s_root_is_followed_by_nothing ... ok
test data::tests::a_shrink_zeroes_what_it_cut_and_regrowth_reads_zeros ... ok
test data::tests::directories_are_listed_and_refuse_what_posix_refuses ... ok
test data::tests::data_is_one_partition_counted_over_both_sources ... ok
test data::tests::an_entry_refused_costs_only_its_own_file ... ok
test fat::tests::a_device_error_is_io_and_not_not_found ... ok
test data::tests::a_directory_rename_the_format_refuses_part_way_moves_nothing ... ok
test fat::tests::a_partial_write_over_an_unreadable_block_writes_nothing ... ok
test data::tests::a_write_its_entry_could_not_name_is_refused_and_every_accepted_one_kept ... ok
test fat::tests::a_refused_read_is_an_error_and_never_zeros ... ok
test resolve::tests::a_cycle_is_refused_and_not_followed_for_ever ... ok
test resolve::tests::a_link_that_stays_inside_by_going_up_and_back_resolves ... ok
test resolve::tests::a_plain_path_lands_under_the_root ... ok
test resolve::tests::a_relative_link_is_read_against_its_own_directory ... ok
test resolve::tests::an_absolute_link_is_handed_back_with_the_rest_of_the_path ... ok
test resolve::tests::an_empty_target_names_nothing ... ok
test resolve::tests::no_link_climbs_out_of_a_granted_folder ... ok
test resolve::tests::no_link_climbs_out_of_the_root ... ok
test resolve::tests::the_last_link_is_left_alone_when_asked ... ok
test rights::tests::a_request_the_wire_does_not_have_is_neither ... ok
test rights::tests::an_open_changes_the_directory_by_every_flag_but_read ... ok
test rights::tests::every_request_that_writes_changes_the_directory_and_none_that_reads_does ... ok
test volume::tests::a_directory_moves_with_everything_beneath_it ... ok
test volume::tests::a_number_follows_its_file_and_is_never_another_files ... ok
test volume::tests::the_anchor_is_the_kernels ... ok
test volume::tests::a_clock_that_always_straddles_is_refused_by_name - should panic ... ok
test writeback::tests::a_sync_that_left_a_file_unwritten_is_due_again ... ok
test fat::tests::a_read_only_volume_never_writes_its_disk ... ok
test fat::tests::a_file_is_one_number_through_spellings_and_renames ... ok
test cache::tests::clean_blocks_are_bounded_and_dirty_ones_are_kept ... ok
test data::tests::every_file_reads_back_as_a_plain_map_of_its_accepted_writes ... ok
test fat::tests::a_file_that_will_not_level_costs_only_its_own_file ... ok
test fat::tests::an_unreadable_entry_is_io_and_not_undated ... ok
test data::tests::a_directory_rename_is_whole_under_one_name_wherever_the_server_is_killed ... ok
test data::tests::a_directory_rename_is_whole_under_one_name_whichever_write_is_refused ... ok

test result: ok. 46 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.75s

     Running unittests src/main.rs (target/debug/deps/fileserver-61283936dd200a63)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

21:57:40 [ci] system/fileserver: cargo test --manifest-path system/fileserver/Cargo.toml

21:57:40 === [ci] system/logkeeper
   Compiling logkeeper v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/logkeeper)
    Finished `test` profile [optimized + debuginfo] target(s) in 1.47s
     Running unittests src/main.rs (target/debug/deps/logkeeper-9c72144a5ea0f243)

running 9 tests
test origin::tests::a_closing_record_ends_its_writers_line_and_nothing_else ... ok
test origin::tests::a_stamp_ahead_of_the_clock_is_read_as_now ... ok
test origin::tests::a_writers_pieces_are_its_line_whoever_wrote_between_them ... ok
test origin::tests::what_is_held_is_bounded_and_said ... ok
test policy::tests::every_step_names_itself ... ok
test store::tests::a_flooding_boot_costs_its_own_middle_and_nobody_elses_start ... ok
test store::tests::nothing_goes_while_there_is_room ... ok
test store::tests::whole_old_boots_go_first_then_earlier_continuations ... ok
test tests::readers_and_inspect_share_one_port_and_never_one_request ... ok

test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

21:57:41 [ci] system/logkeeper: cargo test --manifest-path system/logkeeper/Cargo.toml

21:57:41 === [ci] system/netstack
   Compiling toyos-pci-claim v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/pci-claim)
   Compiling netstack v0.0.0 (/Users/jan/Dev/jan/toyos-netring/system/netstack)
    Finished `test` profile [optimized + debuginfo] target(s) in 0.96s
     Running unittests src/main.rs (target/debug/deps/netstack-008af0b839580c30)

running 6 tests
test virtio_net::tests::a_full_transmit_queue_has_no_room_until_the_device_gives_heads_back ... ok
test virtio_net::tests::a_used_head_past_the_table_ends_the_driver - should panic ... ok
test virtio_net::tests::a_frame_offered_to_a_full_transmit_queue_is_not_taken - should panic ... ok
test virtio_net::tests::a_used_head_with_no_chain_in_flight_ends_the_driver - should panic ... ok
test virtio_net::tests::a_used_index_past_every_frame_offered_ends_the_driver - should panic ... ok
test virtio_net::tests::a_used_length_past_the_chains_writable_bytes_ends_the_driver - should panic ... ok

test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

21:57:43 [ci] system/netstack: cargo test --manifest-path system/netstack/Cargo.toml

21:57:43 === [ci] system/pkg
   Compiling pkg v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/pkg)
    Finished `test` profile [optimized + debuginfo] target(s) in 1.15s
     Running unittests src/lib.rs (target/debug/deps/pkg-a9354e96d639239a)

running 12 tests
test sums::tests::hex_is_the_spelling_the_file_uses ... ok
test archive::tests::a_directory_and_two_files_come_back_whole ... ok
test sums::tests::the_one_line_for_this_asset_is_the_answer ... ok
test archive::tests::a_name_that_leaves_the_archive_is_refused ... ok
test sums::tests::a_line_that_is_not_one_and_a_name_given_twice_are_both_refused ... ok
test archive::tests::every_type_but_a_file_and_a_directory_is_refused ... ok
test tests::a_file_name_that_states_no_version_is_refused ... ok
test tests::a_digest_the_manifest_cannot_carry_stops_the_install ... ok
test tests::a_path_the_archive_names_as_both_a_file_and_a_directory_is_refused ... ok
test archive::tests::a_header_that_does_not_sum_and_a_size_past_the_end_are_both_refused ... ok
test tests::an_archive_that_is_not_one_directory_installs_nothing ... ok
test tests::the_real_asset_plans_the_directory_the_track_describes ... ok

test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/main.rs (target/debug/deps/pkg-46900a2a66458c79)

running 3 tests
test tests::an_archive_that_inflates_past_the_ceiling_is_refused_unread ... ok
test tests::an_install_that_cannot_finish_takes_its_directory_back_down ... ok
test tests::a_tree_of_any_depth_comes_off_and_leaves_no_directory ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s

21:57:44 [ci] system/pkg: cargo test --manifest-path system/pkg/Cargo.toml

21:57:44 === [ci] system/soundserver
    Blocking waiting for file lock on package cache
   Compiling num-traits v0.2.19
   Compiling toyos-mixer v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/soundserver/mixer)
   Compiling toyos-pci-claim v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/pci-claim)
   Compiling toyos-virtio-sound v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/soundserver/virtio-sound)
   Compiling num-integer v0.1.46
   Compiling rubato v0.16.2
   Compiling soundserver v0.0.0 (/Users/jan/Dev/jan/toyos-netring/system/soundserver)
    Finished `test` profile [optimized + debuginfo] target(s) in 2.50s
     Running unittests src/main.rs (target/debug/deps/soundserver-b6e2538f9ea1820e)

running 3 tests
test client::tests::the_stronger_witness_wins_in_either_order ... ok
test control::tests::a_control_message_is_refused_unless_its_width_and_its_state_both_fit ... ok
test mix::tests::published_totals_are_exactly_the_sum_of_every_window ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

21:57:47 [ci] system/soundserver: cargo test --manifest-path system/soundserver/Cargo.toml

21:57:47 === [ci] system/sshserver
   Compiling libc v0.2.190
   Compiling typenum v1.20.1
   Compiling subtle v2.6.1
   Compiling cmov v0.5.3
   Compiling rand_core v0.10.0
   Compiling getrandom v0.4.2 (https://github.com/ToyOSOrg/getrandom?branch=toyos-0.4#f0286c8b)
   Compiling const-oid v0.10.2
   Compiling base64ct v1.8.3
   Compiling cpubits v0.1.0
   Compiling num-traits v0.2.19
   Compiling const-oid v0.9.6
   Compiling base16ct v1.0.0
   Compiling syn v2.0.117
   Compiling opaque-debug v0.3.1
   Compiling serde_core v1.0.228
   Compiling curve25519-dalek v5.0.0-pre.6
   Compiling serde v1.0.228
   Compiling ctutils v0.4.2
   Compiling rustcrypto-ff v0.14.0-rc.1
   Compiling futures-core v0.3.32
   Compiling pem-rfc7468 v1.0.0
   Compiling pem-rfc7468 v0.7.0
   Compiling cfg_aliases v0.2.1
   Compiling futures-sink v0.3.32
   Compiling rustcrypto-group v0.14.0-rc.1
   Compiling nix v0.31.2
   Compiling futures-channel v0.3.32
   Compiling futures-io v0.3.32
   Compiling der v0.8.0
   Compiling crc32fast v1.5.0
   Compiling num-bigint-dig v0.8.6
   Compiling spin v0.9.8
   Compiling slab v0.4.12
   Compiling memchr v2.8.0
   Compiling futures-task v0.3.32
   Compiling lazy_static v1.5.0
   Compiling chacha20 v0.10.0
   Compiling smallvec v1.15.1
   Compiling fiat-crypto v0.3.0
   Compiling thiserror v2.0.18
   Compiling hybrid-array v0.4.8
   Compiling generic-array v0.14.7
   Compiling hex v0.4.3
   Compiling once_cell v1.21.4
   Compiling flate2 v1.1.10
   Compiling md5 v0.7.0
   Compiling hex-literal v1.1.0
   Compiling num-integer v0.1.46
   Compiling data-encoding v2.10.0
   Compiling num-iter v0.1.45
   Compiling block-buffer v0.10.4
   Compiling block-padding v0.3.3
   Compiling generic-array v1.3.5
   Compiling inout v0.1.4
   Compiling getrandom v0.2.17 (https://github.com/ToyOSOrg/getrandom?branch=toyos-0.2-sdk-0.12#2092d1cc)
   Compiling cpufeatures v0.2.17
   Compiling cpufeatures v0.3.0
   Compiling mio v1.2.0 (https://github.com/ToyOSOrg/mio?branch=toyos#d1edcaad)
   Compiling socket2 v0.6.3 (https://github.com/ToyOSOrg/socket2?branch=toyos#1d902509)
   Compiling keccak v0.2.0
   Compiling rand v0.10.0
   Compiling rand_core v0.6.4
   Compiling crypto-common v0.2.1
   Compiling block-buffer v0.12.0
   Compiling block-padding v0.4.2
   Compiling crypto-common v0.1.7
   Compiling spki v0.8.0-rc.4
   Compiling inout v0.2.2
   Compiling crypto-bigint v0.7.3
   Compiling digest v0.10.7
   Compiling cipher v0.4.4
   Compiling sec1 v0.8.1
   Compiling universal-hash v0.5.1
   Compiling sha2 v0.10.9
   Compiling polyval v0.6.2
   Compiling ssh-encoding v0.2.0
   Compiling ghash v0.5.1
   Compiling ctr v0.9.2
   Compiling digest v0.11.1
   Compiling cipher v0.5.1
   Compiling universal-hash v0.6.1
   Compiling aead v0.6.0-rc.10
   Compiling polyval v0.7.1
   Compiling hmac v0.13.0-rc.5
   Compiling sha2 v0.11.0-rc.5
   Compiling ghash v0.6.0
   Compiling salsa20 v0.11.0
   Compiling ctr v0.10.0-rc.4
   Compiling aes v0.9.0-rc.4
   Compiling pbkdf2 v0.13.0-rc.9
   Compiling cbc v0.2.0-rc.4
   Compiling signature v3.0.0-rc.10
   Compiling hkdf v0.13.0-rc.5
   Compiling rfc6979 v0.5.0-rc.5
   Compiling aes v0.8.4
   Compiling hmac v0.12.1
   Compiling aead v0.5.2
   Compiling rand_chacha v0.3.1
   Compiling pbkdf2 v0.12.2
   Compiling futures-macro v0.3.32
   Compiling tokio-macros v2.7.0
   Compiling scrypt v0.12.0-rc.10
   Compiling aes-gcm v0.11.0-rc.3
   Compiling futures-util v0.3.32
   Compiling pkcs5 v0.8.0-rc.13
   Compiling aes-gcm v0.10.3
   Compiling rand v0.8.5
   Compiling chacha20 v0.9.1
   Compiling cbc v0.1.2
   Compiling blowfish v0.9.1
   Compiling poly1305 v0.8.0
   Compiling blake2 v0.10.6
   Compiling pkcs1 v0.8.0-rc.4
   Compiling password-hash v0.5.0
   Compiling ssh-cipher v0.2.0
   Compiling bcrypt-pbkdf v0.10.0
   Compiling tokio v1.51.1 (https://github.com/ToyOSOrg/tokio?branch=toyos#902fb974)
   Compiling argon2 v0.5.3
   Compiling pkcs8 v0.11.0-rc.11
   Compiling ed25519 v3.0.0-rc.4
   Compiling thiserror-impl v2.0.18
   Compiling sha3 v0.11.0
   Compiling sha1 v0.11.0-rc.5
   Compiling ed25519-dalek v3.0.0-pre.6
   Compiling kem v0.3.0
   Compiling module-lattice v0.2.1
   Compiling enum_dispatch v0.3.13
   Compiling ml-kem v0.3.0-rc.2
   Compiling delegate v0.13.5
   Compiling elliptic-curve v0.14.0-rc.29
   Compiling primefield v0.14.0-rc.8
   Compiling crypto-primes v0.7.0
   Compiling russh-cryptovec v0.59.0 (https://github.com/ToyOSOrg/russh?branch=toyos#389804d3)
   Compiling internal-russh-num-bigint v0.5.0
   Compiling sha1 v0.10.6
   Compiling primeorder v0.14.0-rc.8
   Compiling ecdsa v0.17.0-rc.16
   Compiling p521 v0.14.0-rc.8
   Compiling p256 v0.14.0-rc.8
   Compiling futures-executor v0.3.32
   Compiling futures v0.3.32
   Compiling rsa v0.10.0-rc.17
   Compiling russh-util v0.52.0 (https://github.com/ToyOSOrg/russh?branch=toyos#389804d3)
   Compiling p384 v0.14.0-rc.8
   Compiling internal-russh-forked-ssh-key v0.6.18+upstream-0.6.7
   Compiling russh v0.60.0 (https://github.com/ToyOSOrg/russh?branch=toyos#389804d3)
   Compiling sshserver v0.0.0 (/Users/jan/Dev/jan/toyos-netring/system/sshserver)
    Finished `test` profile [optimized + debuginfo] target(s) in 22.71s
     Running unittests src/main.rs (target/debug/deps/sshserver-570c5178d687543e)

running 29 tests
test command::tests::a_bare_name_resolves_under_system_bin ... ok
test command::tests::a_bare_command_is_its_words ... ok
test command::tests::backslash_escapes_one_character ... ok
test command::tests::a_line_that_names_nothing_is_refused ... ok
test command::tests::an_unfinished_quote_is_refused ... ok
test command::tests::a_shell_command_reaches_the_shell_whole ... ok
test command::tests::quotes_hold_a_word_together ... ok
test command::tests::metacharacters_are_ordinary_bytes ... ok
test sftp::tests::a_request_before_init_ends_the_session ... ok
test sftp::tests::a_handle_nobody_opened_is_refused ... ok
test sftp::tests::a_file_that_is_not_there_is_no_such_file ... ok
test sftp::tests::a_second_init_ends_the_session ... ok
test sftp::tests::a_truncated_request_is_a_bad_message_and_not_a_panic ... ok
test sftp::tests::an_oversized_length_ends_the_session ... ok
test sftp::tests::a_request_outside_the_profile_is_refused_by_name ... ok
test sftp::tests::framing_waits_for_a_whole_packet ... ok
test tests::a_file_that_names_nobody_authorizes_nobody ... ok
test tests::an_unparseable_line_does_not_disarm_the_rest ... ok
test tests::a_key_listed_with_options_authorizes_nothing ... ok
test tests::an_unlisted_key_is_not_authorized ... ok
test tests::a_listed_key_is_authorized ... ok
test tests::a_key_is_found_among_several_and_blank_lines ... ok
test tests::the_comment_is_not_part_of_the_key ... ok
test tests::input_for_a_program_that_is_gone_is_not_a_stall ... ok
test tests::input_a_program_is_reading_is_taken ... ok
test sftp::tests::the_profile_moves_a_file_and_lists_it ... ok
test sftp::tests::a_listing_longer_than_one_reply_continues_where_it_left_off ... ok
test tests::input_nothing_takes_is_given_up_on ... ok
test sftp::tests::a_directory_past_the_ceiling_is_refused_by_name ... ok

test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.73s

21:58:11 [ci] system/sshserver: cargo test --manifest-path system/sshserver/Cargo.toml

21:58:11 === [ci] system/symbolize
   Compiling symbolize v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/symbolize)
    Finished `test` profile [optimized + debuginfo] target(s) in 0.41s
     Running unittests src/main.rs (target/debug/deps/symbolize-50a1c9155a4072ed)

running 5 tests
test tests::a_name_is_read_under_the_root ... ok
test tests::a_name_that_leaves_the_root_is_refused ... ok
test tests::a_name_some_host_reads_as_a_drive_or_separator_is_refused ... ok
test tests::a_name_windows_reserves_for_a_device_is_refused ... ok
test tests::a_record_that_leaves_the_root_is_refused_on_its_line ... ok

test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

21:58:12 [ci] system/symbolize: cargo test --manifest-path system/symbolize/Cargo.toml

21:58:12 === [ci] apps/calc
   Compiling objc2-encode v4.1.0
   Compiling bitflags v2.11.0
   Compiling objc2 v0.6.4
   Compiling objc-sys v0.3.5
   Compiling allocator-api2 v0.2.21
   Compiling core-foundation-sys v0.8.7
   Compiling foldhash v0.1.5
   Compiling equivalent v1.0.2
   Compiling ttf-parser v0.21.1
   Compiling foreign-types-shared v0.3.1
   Compiling tracing-core v0.1.36
   Compiling dispatch v0.2.0
   Compiling syn v3.0.6
   Compiling winit v0.30.13 (https://github.com/ToyOSOrg/winit?branch=toyos-0.30.13#f58e1f3b)
   Compiling core-foundation v0.9.4
   Compiling raw-window-handle v0.6.2 (https://github.com/ToyOSOrg/raw-window-handle?branch=toyos-0.6.2#2a5d102b)
   Compiling dpi v0.1.1 (https://github.com/ToyOSOrg/winit?branch=toyos-0.30.13#f58e1f3b)
   Compiling cursor-icon v1.2.0
   Compiling smol_str v0.2.2
   Compiling hashbrown v0.15.5
   Compiling tracing v0.1.44
   Compiling toyos-font v0.2.0 (/Users/jan/Dev/jan/toyos-netring/sdk/font)
   Compiling core-graphics-types v0.1.3
   Compiling objc2 v0.5.2
   Compiling fontdue v0.9.3
   Compiling block2 v0.5.1
   Compiling objc2-core-foundation v0.3.2
   Compiling calc v0.1.0 (/Users/jan/Dev/jan/toyos-netring/apps/calc)
   Compiling objc2-foundation v0.2.2
   Compiling foreign-types-macros v0.2.4
   Compiling objc2-foundation v0.3.2
   Compiling objc2-core-graphics v0.3.2
   Compiling foreign-types v0.5.0
   Compiling objc2-quartz-core v0.3.2
   Compiling core-graphics v0.23.2
   Compiling softbuffer v0.4.8 (https://github.com/ToyOSOrg/softbuffer?branch=toyos-0.4.8#b36854df)
   Compiling objc2-app-kit v0.2.2
    Finished `test` profile [optimized + debuginfo] target(s) in 6.64s
     Running unittests src/lib.rs (target/debug/deps/calc-5e1e670ca2a835a8)

running 64 tests
test app::tests::the_hex_letters_are_live_only_in_hex ... ok
test app::tests::prog_reads_digits_in_the_active_base_and_refuses_the_others ... ok
test app::tests::a_whole_number_crosses_into_prog_and_back ... ok
test bigint::tests::addition_crosses_the_limb_boundary ... ok
test bigint::tests::conversions_refuse_what_does_not_fit ... ok
test app::tests::every_button_reaches_the_same_place_a_key_does ... ok
test bigint::tests::gcd_is_non_negative_and_divides_both ... ok
test app::tests::typing_previews_and_equals_commits ... ok
test app::tests::the_expression_line_is_a_text_field ... ok
test bigint::tests::multiplication_matches_a_known_product ... ok
test bigint::tests::radix_parsing_and_lengths ... ok
test bigint::tests::zero_has_one_representation ... ok
test bigint::tests::powers_and_roots_agree ... ok
test bigint::tests::division_is_exact_over_many_shapes ... ok
test app::tests::the_sign_button_flips_the_number_it_stands_after ... ok
test app::tests::a_fraction_is_cleared_on_the_way_into_prog_rather_than_rounded ... ok
test app::tests::a_caret_in_the_middle_of_a_wide_character_is_unreachable ... ok
test dec::tests::arithmetic_survives_a_wide_exponent_gap ... ok
test dec::tests::root_two_matches_its_published_digits ... ok
test dec::tests::rounding_is_half_to_even_and_canonical ... ok
test dec::tests::the_refusals_are_named_rather_than_taken ... ok
test num::tests::a_non_terminating_exact_value_is_shown_rounded_and_marked ... ok
test dec::tests::ln_two_matches_its_published_digits ... ok
test app::tests::every_button_of_both_layouts_is_pressable_from_any_state ... ok
test num::tests::division_by_zero_is_refused_on_both_paths ... ok
test num::tests::exact_arithmetic_stays_exact ... ok
test num::tests::percent_is_an_exact_hundredth ... ok
test num::tests::powers_are_exact_while_that_is_worth_doing ... ok
test num::tests::rendering_switches_to_a_scientific_form_rather_than_dropping_digits ... ok
test num::tests::the_marker_propagates_once_it_is_earned ... ok
test dec::tests::a_whole_power_works_on_a_negative_base ... ok
test num::tests::a_whole_power_of_an_approximation_does_not_need_a_positive_base ... ok
test parser::tests::every_refusal_is_named_and_none_is_a_crash ... ok
test num::tests::degrees_are_converted_at_the_call ... ok
test app::tests::the_angle_button_says_which_one_it_is ... ok
test dec::tests::e_matches_its_published_digits_and_the_factorial_series ... ok
test dec::tests::sine_and_cosine_of_one_match_their_published_digits ... ok
test parser::tests::the_four_operations_stay_exact ... ok
test parser::tests::precedence_and_associativity ... ok
test prog::tests::a_fractional_division_is_refused_rather_than_rounded ... ok
test parser::tests::values_side_by_side_multiply ... ok
test prog::tests::arithmetic_wraps_at_the_word ... ok
test prog::tests::digits_are_read_in_the_active_base ... ok
test prog::tests::shifts_saturate_rather_than_wrap_the_count ... ok
test prog::tests::the_logic_operators_have_c_precedence ... ok
test prog::tests::the_panes_show_the_same_bits_three_ways ... ok
test rational::tests::a_decimal_terminates_only_on_twos_and_fives ... ok
test rational::tests::a_tenth_plus_two_tenths_is_three_tenths ... ok
test rational::tests::a_third_times_three_is_one ... ok
test rational::tests::construction_normalizes ... ok
test dec::tests::pi_matches_its_published_digits_and_machin ... ok
test rational::tests::division_by_zero_is_the_only_refusal ... ok
test rational::tests::ordering_is_by_value ... ok
test rational::tests::exact_roots_only_where_both_halves_are_squares ... ok
test rational::tests::parsing_takes_what_a_literal_may_be ... ok
test rational::tests::powers_include_the_reciprocal ... ok
test parser::tests::degrees_are_a_toggle_and_nothing_else ... ok
test app::tests::a_field_that_is_full_says_so_rather_than_growing ... ok
test parser::tests::a_negative_base_under_a_fractional_power_is_named ... ok
test parser::tests::an_application_finishes_before_a_power_does ... ok
test prog::tests::nothing_typeable_panics_here_either ... ok
test parser::tests::functions_are_typeable_by_name ... ok
test dec::tests::the_identities_hold_to_the_displayed_precision ... ok
test parser::tests::no_string_over_the_alphabet_panics ... ok

test result: ok. 64 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s

     Running unittests src/main.rs (target/debug/deps/calc-0d532665021f4a95)

running 6 tests
test tests::hit_testing_follows_the_layout_at_every_size ... ok
test tests::the_keys_tile_the_panel_at_every_size ... ok
test tests::tracks_never_lose_a_pixel ... ok
test tests::every_key_face_fits_its_key ... ok
test tests::every_face_the_panel_shows_was_baked ... ok
test tests::the_longest_answer_is_never_cut ... ok

test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/parser_identities.rs (target/debug/deps/parser_identities-9ad6eb474553e53a)

running 6 tests
test the_rest_of_the_table_is_where_it_was ... ok
test a_logarithm_round_trips_through_the_parser ... ok
test the_typo_is_refused_by_name ... ok
test the_reported_expressions_have_the_values_they_should ... ok
test a_power_after_a_call_squares_what_the_call_returned ... ok
test the_pythagorean_identity_holds_through_the_parser ... ok

test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

21:58:19 [ci] apps/calc: cargo test --manifest-path apps/calc/Cargo.toml

21:58:19 === [ci] apps/toyfetch
    Blocking waiting for file lock on package cache
   Compiling objc2-core-foundation v0.3.2
   Compiling objc2-io-kit v0.3.2
   Compiling sysinfo v0.39.6 (https://github.com/ToyOSOrg/sysinfo?branch=toyos-0.39.6#bcb23815)
   Compiling toyfetch v0.1.0 (/Users/jan/Dev/jan/toyos-netring/apps/toyfetch)
    Finished `test` profile [optimized + debuginfo] target(s) in 1.42s
     Running unittests src/main.rs (target/debug/deps/toyfetch-cd3bf5472b19e9a6)

running 7 tests
test render::tests::only_toyos_has_a_logo ... ok
test render::tests::a_cpu_without_a_model_says_so ... ok
test render::tests::a_fact_the_system_did_not_answer_prints_no_line ... ok
test render::tests::uptime_leaves_out_zero_units ... ok
test render::tests::every_fact_prints_beside_the_logo_in_its_colours ... ok
test render::tests::the_logo_taller_than_the_facts_pads_only_rows_with_a_fact ... ok
test render::tests::the_facts_taller_than_the_logo_keep_their_column ... ok

test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

21:58:21 [ci] apps/toyfetch: cargo test --manifest-path apps/toyfetch/Cargo.toml

21:58:21 === [ci] the apps for linux
info: component rust-std for target x86_64-unknown-linux-gnu is up to date
    Checking cfg-if v1.0.4
   Compiling proc-macro2 v1.0.106
   Compiling unicode-ident v1.0.24
   Compiling quote v1.0.45
    Checking bitflags v2.11.0
   Compiling rustix v1.1.5
   Compiling find-msvc-tools v0.1.9
    Checking once_cell v1.21.4
    Checking linux-raw-sys v0.12.1
   Compiling pkg-config v0.3.32
   Compiling shlex v1.3.0
    Checking log v0.4.29
    Checking smallvec v1.15.1
    Checking scoped-tls v1.0.1
   Compiling memchr v2.8.0
    Checking downcast-rs v1.2.1
    Checking libloading v0.8.9
   Compiling cc v1.2.56
   Compiling wayland-client v0.31.15
   Compiling libc v0.2.190
   Compiling thiserror v1.0.69
   Compiling rustix v0.38.44
    Checking linux-raw-sys v0.4.15
   Compiling foldhash v0.1.5
    Checking dlib v0.5.3
   Compiling quick-xml v0.41.0
    Checking slab v0.4.12
   Compiling getrandom v0.3.4 (https://github.com/ToyOSOrg/getrandom?branch=toyos-0.3-sdk-0.12#67c17e0a)
   Compiling zerocopy v0.8.47
   Compiling wayland-sys v0.31.11
   Compiling allocator-api2 v0.2.21
   Compiling equivalent v1.0.2
   Compiling ahash v0.8.12
   Compiling cfg_aliases v0.2.1
    Checking xkeysym v0.2.1
    Checking pin-project-lite v0.2.17
    Checking cursor-icon v1.2.0
   Compiling hashbrown v0.15.5
    Checking xcursor v0.3.11
   Compiling ttf-parser v0.21.1
    Checking tracing-core v0.1.36
   Compiling smithay-client-toolkit v0.19.2
   Compiling winit v0.30.13 (https://github.com/ToyOSOrg/winit?branch=toyos-0.30.13#f58e1f3b)
    Checking tracing v0.1.44
   Compiling syn v2.0.117
    Checking raw-window-handle v0.6.2 (https://github.com/ToyOSOrg/raw-window-handle?branch=toyos-0.6.2#2a5d102b)
    Checking xkbcommon-dl v0.4.2
    Checking fastrand v2.5.0
   Compiling wayland-scanner v0.31.11
    Checking smol_str v0.2.2
    Checking dpi v0.1.1 (https://github.com/ToyOSOrg/winit?branch=toyos-0.30.13#f58e1f3b)
    Checking toyos-font v0.2.0 (/Users/jan/Dev/jan/toyos-netring/sdk/font)
   Compiling wayland-backend v0.3.17
    Checking memmap2 v0.9.11
   Compiling fontdue v0.9.3
   Compiling calc v0.1.0 (/Users/jan/Dev/jan/toyos-netring/apps/calc)
   Compiling thiserror-impl v1.0.69
    Checking polling v3.11.0
    Checking wayland-csd-frame v0.3.0
    Checking calloop v0.13.0
    Checking wayland-protocols v0.32.13
    Checking calloop-wayland-source v0.3.0
    Checking wayland-cursor v0.31.14
    Checking softbuffer v0.4.8 (https://github.com/ToyOSOrg/softbuffer?branch=toyos-0.4.8#b36854df)
    Checking wayland-protocols-wlr v0.3.12
    Checking wayland-protocols-plasma v0.3.12
    Finished `dev` profile [optimized + debuginfo] target(s) in 7.55s
    Checking toyos-abi v0.16.0 (/Users/jan/Dev/jan/toyos-netring/sdk/abi)
    Checking toyos-keymap v0.1.0 (/Users/jan/Dev/jan/toyos-netring/sdk/keymap)
    Checking toyos v0.18.0 (/Users/jan/Dev/jan/toyos-netring/sdk/toyos)
    Checking toyos-window v0.20.0 (/Users/jan/Dev/jan/toyos-netring/sdk/window)
    Checking filepicker-api v0.1.0 (/Users/jan/Dev/jan/toyos-netring/sdk/filepicker)
    Checking editor v0.1.0 (/Users/jan/Dev/jan/toyos-netring/apps/editor)
    Finished `dev` profile [optimized + debuginfo] target(s) in 0.97s
    Checking files v0.1.0 (/Users/jan/Dev/jan/toyos-netring/apps/files)
    Finished `dev` profile [optimized + debuginfo] target(s) in 0.21s
    Checking paint v0.1.0 (/Users/jan/Dev/jan/toyos-netring/apps/paint)
    Finished `dev` profile [optimized + debuginfo] target(s) in 0.21s
    Checking getrandom v0.2.17 (https://github.com/ToyOSOrg/getrandom?branch=toyos-0.2-sdk-0.12#2092d1cc)
    Checking ppv-lite86 v0.2.21
   Compiling snake v0.1.0 (/Users/jan/Dev/jan/toyos-netring/apps/snake)
    Checking rand_core v0.6.4
    Checking rand_chacha v0.3.1
    Checking rand v0.8.5
    Finished `dev` profile [optimized + debuginfo] target(s) in 0.85s
    Checking memchr v2.8.0
    Checking sysinfo v0.39.6 (https://github.com/ToyOSOrg/sysinfo?branch=toyos-0.39.6#bcb23815)
    Checking toyfetch v0.1.0 (/Users/jan/Dev/jan/toyos-netring/apps/toyfetch)
    Finished `dev` profile [optimized + debuginfo] target(s) in 0.63s
    Checking toyos-manifest v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/manifest)
    Checking filepicker v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/filepicker)
    Finished `dev` profile [optimized + debuginfo] target(s) in 0.37s
    Checking host v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/host)
    Finished `dev` profile [optimized + debuginfo] target(s) in 0.17s
   Compiling crc32fast v1.5.0
    Checking adler2 v2.0.1
    Checking simd-adler32 v0.3.10
    Checking toyos-sha2 v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/sha2)
    Checking toyos-sha2-hw v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/sha2-hw)
    Checking miniz_oxide v0.9.1
    Checking flate2 v1.1.10
    Checking pkg v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/pkg)
    Finished `dev` profile [optimized + debuginfo] target(s) in 0.89s
   Compiling libc v0.2.190
    Checking typenum v1.20.1
    Checking subtle v2.6.1
    Checking zeroize v1.9.0
    Checking cmov v0.5.3
    Checking rand_core v0.10.0
   Compiling getrandom v0.4.2 (https://github.com/ToyOSOrg/getrandom?branch=toyos-0.4#f0286c8b)
    Checking cpufeatures v0.2.17
    Checking const-oid v0.10.2
    Checking base64ct v1.8.3
   Compiling autocfg v1.5.1
    Checking cpubits v0.1.0
   Compiling generic-array v0.14.7
    Checking cpufeatures v0.3.0
   Compiling syn v2.0.117
    Checking const-oid v0.9.6
    Checking base16ct v1.0.0
    Checking bytes v1.12.1
   Compiling libm v0.2.16
    Checking opaque-debug v0.3.1
   Compiling serde_core v1.0.228
    Checking rustcrypto-ff v0.14.0-rc.1
    Checking ctutils v0.4.2
    Checking pem-rfc7468 v1.0.0
    Checking pem-rfc7468 v0.7.0
   Compiling curve25519-dalek v5.0.0-pre.6
   Compiling serde v1.0.228
   Compiling num-traits v0.2.19
    Checking rustcrypto-group v0.14.0-rc.1
    Checking futures-sink v0.3.32
    Checking der v0.8.0
    Checking futures-core v0.3.32
   Compiling nix v0.31.2
    Checking spin v0.9.8
    Checking futures-task v0.3.32
    Checking slab v0.4.12
    Checking hybrid-array v0.4.8
    Checking futures-channel v0.3.32
    Checking futures-io v0.3.32
   Compiling num-bigint-dig v0.8.6
    Checking byteorder v1.5.0
   Compiling rustversion v1.0.22
   Compiling crc32fast v1.5.0
    Checking block-buffer v0.10.4
    Checking block-padding v0.3.3
    Checking spki v0.8.0-rc.4
    Checking lazy_static v1.5.0
    Checking inout v0.1.4
    Checking chacha20 v0.10.0
    Checking pkcs1 v0.8.0-rc.4
    Checking keccak v0.2.0
    Checking block-buffer v0.12.0
    Checking block-padding v0.4.2
    Checking sec1 v0.8.1
    Checking smallvec v1.15.1
    Checking fiat-crypto v0.3.0
    Checking bitflags v2.11.0
    Checking inout v0.2.2
   Compiling thiserror v2.0.18
    Checking hex v0.4.3
   Compiling once_cell v1.21.4
    Checking hex-literal v1.1.0
    Checking num-integer v0.1.46
    Checking getrandom v0.2.17 (https://github.com/ToyOSOrg/getrandom?branch=toyos-0.2-sdk-0.12#2092d1cc)
    Checking mio v1.2.0 (https://github.com/ToyOSOrg/mio?branch=toyos#d1edcaad)
    Checking socket2 v0.6.3 (https://github.com/ToyOSOrg/socket2?branch=toyos#1d902509)
    Checking module-lattice v0.2.1
    Checking flate2 v1.1.10
    Checking num-iter v0.1.45
    Checking crypto-common v0.2.1
    Checking crypto-bigint v0.7.3
    Checking rand_core v0.6.4
    Checking rand v0.10.0
    Checking md5 v0.7.0
    Checking crypto-common v0.1.7
    Checking rand_chacha v0.3.1
    Checking password-hash v0.5.0
    Checking generic-array v1.3.5
    Checking data-encoding v2.10.0
    Checking digest v0.10.7
    Checking cipher v0.4.4
    Checking universal-hash v0.5.1
    Checking aead v0.5.2
    Checking rand v0.8.5
    Checking polyval v0.6.2
    Checking poly1305 v0.8.0
    Checking sha2 v0.10.9
    Checking hmac v0.12.1
    Checking ctr v0.9.2
    Checking aes v0.8.4
    Checking chacha20 v0.9.1
    Checking ghash v0.5.1
    Checking pbkdf2 v0.12.2
    Checking blowfish v0.9.1
    Checking cbc v0.1.2
    Checking digest v0.11.1
    Checking cipher v0.5.1
    Checking universal-hash v0.6.1
    Checking aead v0.6.0-rc.10
    Checking ssh-encoding v0.2.0
    Checking blake2 v0.10.6
    Checking kem v0.3.0
    Checking sha1 v0.10.6
    Checking bcrypt-pbkdf v0.10.0
    Checking aes-gcm v0.10.3
    Checking hmac v0.13.0-rc.5
    Checking sha2 v0.11.0-rc.5
    Checking polyval v0.7.1
    Checking signature v3.0.0-rc.10
    Checking aes v0.9.0-rc.4
    Checking salsa20 v0.11.0
    Checking ctr v0.10.0-rc.4
    Checking cbc v0.2.0-rc.4
    Checking argon2 v0.5.3
    Checking ssh-cipher v0.2.0
    Checking pbkdf2 v0.13.0-rc.9
    Checking hkdf v0.13.0-rc.5
    Checking ghash v0.6.0
    Checking rfc6979 v0.5.0-rc.5
    Checking sha1 v0.11.0-rc.5
    Checking sha3 v0.11.0
    Checking russh-cryptovec v0.59.0 (https://github.com/ToyOSOrg/russh?branch=toyos#389804d3)
    Checking internal-russh-num-bigint v0.5.0
    Checking aes-gcm v0.11.0-rc.3
    Checking ml-kem v0.3.0-rc.2

@Japabu

Japabu commented Oct 11, 2026

Copy link
Copy Markdown
Collaborator Author

cargo run -- --ci host on 148c3de, EXIT=0, part 10 of 10

   Compiling futures-macro v0.3.32
   Compiling curve25519-dalek-derive v0.1.1
   Compiling tokio-macros v2.7.0
   Compiling thiserror-impl v2.0.18
   Compiling delegate v0.13.5
   Compiling enum_dispatch v0.3.13
    Checking scrypt v0.12.0-rc.10
    Checking pkcs5 v0.8.0-rc.13
    Checking pkcs8 v0.11.0-rc.11
    Checking ed25519 v3.0.0-rc.4
    Checking tokio v1.51.1 (https://github.com/ToyOSOrg/tokio?branch=toyos#902fb974)
    Checking futures-util v0.3.32
    Checking elliptic-curve v0.14.0-rc.29
    Checking primefield v0.14.0-rc.8
    Checking crypto-primes v0.7.0
    Checking ed25519-dalek v3.0.0-pre.6
    Checking primeorder v0.14.0-rc.8
    Checking ecdsa v0.17.0-rc.16
    Checking p256 v0.14.0-rc.8
    Checking p521 v0.14.0-rc.8
    Checking rsa v0.10.0-rc.17
    Checking futures-executor v0.3.32
    Checking futures v0.3.32
    Checking p384 v0.14.0-rc.8
    Checking russh-util v0.52.0 (https://github.com/ToyOSOrg/russh?branch=toyos#389804d3)
    Checking internal-russh-forked-ssh-key v0.6.18+upstream-0.6.7
    Checking russh v0.60.0 (https://github.com/ToyOSOrg/russh?branch=toyos#389804d3)
    Checking sshserver v0.0.0 (/Users/jan/Dev/jan/toyos-netring/system/sshserver)
    Finished `dev` profile [optimized + debuginfo] target(s) in 10.44s
    Checking toyos-elide v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/elide)
    Checking rustc-demangle v0.1.27
    Checking toyos-elf v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/elf)
    Checking toyos-symbols v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/symbols)
    Checking symbolize v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/symbolize)
    Finished `dev` profile [optimized + debuginfo] target(s) in 0.50s
21:58:44 [ci] the apps for linux: 11 app(s) pass `cargo check --target x86_64-unknown-linux-gnu`; apps/doom, system/shell, system/terminal, system/toybox, tests/guest/proctest not attempted, as their manifests declare

21:58:44 === [ci] the apps for macos
info: component rust-std is up to date
    Finished `dev` profile [optimized + debuginfo] target(s) in 0.12s
   Compiling toyos-window v0.20.0 (/Users/jan/Dev/jan/toyos-netring/sdk/window)
   Compiling filepicker-api v0.1.0 (/Users/jan/Dev/jan/toyos-netring/sdk/filepicker)
   Compiling editor v0.1.0 (/Users/jan/Dev/jan/toyos-netring/apps/editor)
    Finished `dev` profile [optimized + debuginfo] target(s) in 1.77s
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
   Compiling files v0.1.0 (/Users/jan/Dev/jan/toyos-netring/apps/files)
    Finished `dev` profile [optimized + debuginfo] target(s) in 0.56s
   Compiling paint v0.1.0 (/Users/jan/Dev/jan/toyos-netring/apps/paint)
    Finished `dev` profile [optimized + debuginfo] target(s) in 0.77s
   Compiling getrandom v0.2.17 (https://github.com/ToyOSOrg/getrandom?branch=toyos-0.2-sdk-0.12#2092d1cc)
   Compiling snake v0.1.0 (/Users/jan/Dev/jan/toyos-netring/apps/snake)
   Compiling rand_core v0.6.4
   Compiling rand_chacha v0.3.1
   Compiling rand v0.8.5
    Finished `dev` profile [optimized + debuginfo] target(s) in 2.22s
   Compiling toyfetch v0.1.0 (/Users/jan/Dev/jan/toyos-netring/apps/toyfetch)
    Finished `dev` profile [optimized + debuginfo] target(s) in 0.36s
   Compiling filepicker v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/filepicker)
    Finished `dev` profile [optimized + debuginfo] target(s) in 0.59s
   Compiling host v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/host)
    Finished `dev` profile [optimized + debuginfo] target(s) in 0.28s
   Compiling pkg v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/pkg)
    Finished `dev` profile [optimized + debuginfo] target(s) in 0.54s
   Compiling sshserver v0.0.0 (/Users/jan/Dev/jan/toyos-netring/system/sshserver)
    Finished `dev` profile [optimized + debuginfo] target(s) in 3.57s
   Compiling symbolize v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/symbolize)
    Finished `dev` profile [optimized + debuginfo] target(s) in 0.44s
21:58:56 [ci] the apps for macos: 11 app(s) pass `cargo build`; apps/doom, system/shell, system/terminal, system/toybox, tests/guest/proctest not attempted, as their manifests declare

21:58:56 === [ci] the apps for windows
info: component rust-std for target x86_64-pc-windows-msvc is up to date
   Compiling windows_x86_64_msvc v0.52.6
    Checking pin-project-lite v0.2.17
    Checking tracing-core v0.1.36
    Checking windows-link v0.2.1
    Checking raw-window-handle v0.6.2 (https://github.com/ToyOSOrg/raw-window-handle?branch=toyos-0.6.2#2a5d102b)
    Checking dpi v0.1.1 (https://github.com/ToyOSOrg/winit?branch=toyos-0.30.13#f58e1f3b)
    Checking cursor-icon v1.2.0
    Checking bitflags v2.11.0
    Checking unicode-segmentation v1.12.0
   Compiling winit v0.30.13 (https://github.com/ToyOSOrg/winit?branch=toyos-0.30.13#f58e1f3b)
    Checking smol_str v0.2.2
    Checking toyos-font v0.2.0 (/Users/jan/Dev/jan/toyos-netring/sdk/font)
   Compiling calc v0.1.0 (/Users/jan/Dev/jan/toyos-netring/apps/calc)
    Checking windows-sys v0.61.2
    Checking tracing v0.1.44
    Checking windows-targets v0.52.6
    Checking windows-sys v0.52.0
    Checking softbuffer v0.4.8 (https://github.com/ToyOSOrg/softbuffer?branch=toyos-0.4.8#b36854df)
    Finished `dev` profile [optimized + debuginfo] target(s) in 2.70s
    Checking toyos-abi v0.16.0 (/Users/jan/Dev/jan/toyos-netring/sdk/abi)
    Checking toyos-keymap v0.1.0 (/Users/jan/Dev/jan/toyos-netring/sdk/keymap)
    Checking toyos v0.18.0 (/Users/jan/Dev/jan/toyos-netring/sdk/toyos)
    Checking filepicker-api v0.1.0 (/Users/jan/Dev/jan/toyos-netring/sdk/filepicker)
    Checking toyos-window v0.20.0 (/Users/jan/Dev/jan/toyos-netring/sdk/window)
    Checking editor v0.1.0 (/Users/jan/Dev/jan/toyos-netring/apps/editor)
    Finished `dev` profile [optimized + debuginfo] target(s) in 0.88s
    Checking files v0.1.0 (/Users/jan/Dev/jan/toyos-netring/apps/files)
    Finished `dev` profile [optimized + debuginfo] target(s) in 0.21s
    Checking paint v0.1.0 (/Users/jan/Dev/jan/toyos-netring/apps/paint)
    Finished `dev` profile [optimized + debuginfo] target(s) in 0.20s
   Compiling zerocopy v0.8.47
    Checking cfg-if v1.0.4
   Compiling snake v0.1.0 (/Users/jan/Dev/jan/toyos-netring/apps/snake)
    Checking getrandom v0.2.17 (https://github.com/ToyOSOrg/getrandom?branch=toyos-0.2-sdk-0.12#2092d1cc)
    Checking rand_core v0.6.4
    Checking ppv-lite86 v0.2.21
    Checking rand_chacha v0.3.1
    Checking rand v0.8.5
    Finished `dev` profile [optimized + debuginfo] target(s) in 1.99s
   Compiling proc-macro2 v1.0.106
   Compiling quote v1.0.45
   Compiling winapi v0.3.9
   Compiling ntapi v0.4.3
    Checking memchr v2.8.0
    Checking windows-strings v0.5.1
    Checking windows-result v0.4.1
    Checking windows-threading v0.2.1
   Compiling libc v0.2.190
   Compiling syn v2.0.117
   Compiling windows-implement v0.60.2
   Compiling windows-interface v0.59.3
    Checking windows-core v0.62.2
    Checking windows-numerics v0.3.1
    Checking windows-collections v0.3.2
    Checking windows-future v0.3.2
    Checking windows v0.62.2
    Checking sysinfo v0.39.6 (https://github.com/ToyOSOrg/sysinfo?branch=toyos-0.39.6#bcb23815)
    Checking toyfetch v0.1.0 (/Users/jan/Dev/jan/toyos-netring/apps/toyfetch)
    Finished `dev` profile [optimized + debuginfo] target(s) in 8.37s
    Checking toyos-manifest v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/manifest)
    Checking filepicker v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/filepicker)
    Finished `dev` profile [optimized + debuginfo] target(s) in 0.37s
    Checking host v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/host)
    Finished `dev` profile [optimized + debuginfo] target(s) in 0.19s
   Compiling crc32fast v1.5.0
    Checking simd-adler32 v0.3.10
    Checking adler2 v2.0.1
    Checking toyos-sha2 v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/sha2)
    Checking toyos-sha2-hw v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/sha2-hw)
    Checking miniz_oxide v0.9.1
    Checking flate2 v1.1.10
    Checking pkg v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/pkg)
    Finished `dev` profile [optimized + debuginfo] target(s) in 0.92s
    Checking typenum v1.20.1
    Checking subtle v2.6.1
    Checking zeroize v1.9.0
    Checking rand_core v0.10.0
    Checking cmov v0.5.3
    Checking cpufeatures v0.2.17
    Checking getrandom v0.2.17 (https://github.com/ToyOSOrg/getrandom?branch=toyos-0.2-sdk-0.12#2092d1cc)
    Checking const-oid v0.10.2
    Checking base64ct v1.8.3
   Compiling getrandom v0.4.2 (https://github.com/ToyOSOrg/getrandom?branch=toyos-0.4#f0286c8b)
   Compiling generic-array v0.14.7
    Checking cpufeatures v0.3.0
    Checking cpubits v0.1.0
   Compiling num-traits v0.2.19
    Checking const-oid v0.9.6
    Checking base16ct v1.0.0
    Checking bytes v1.12.1
    Checking windows-strings v0.5.1
    Checking windows-sys v0.61.2
    Checking rand_core v0.6.4
    Checking rustcrypto-ff v0.14.0-rc.1
   Compiling windows-implement v0.60.2
   Compiling windows-interface v0.59.3
    Checking opaque-debug v0.3.1
   Compiling libm v0.2.16
    Checking ctutils v0.4.2
    Checking futures-core v0.3.32
    Checking futures-sink v0.3.32
   Compiling serde_core v1.0.228
    Checking rustcrypto-group v0.14.0-rc.1
    Checking byteorder v1.5.0
    Checking slab v0.4.12
    Checking futures-task v0.3.32
    Checking futures-channel v0.3.32
    Checking futures-io v0.3.32
    Checking pem-rfc7468 v1.0.0
    Checking pem-rfc7468 v0.7.0
   Compiling serde v1.0.228
   Compiling curve25519-dalek v5.0.0-pre.6
    Checking rand_chacha v0.3.1
    Checking chacha20 v0.10.0
    Checking der v0.8.0
    Checking spin v0.9.8
    Checking futures-util v0.3.32
   Compiling crc32fast v1.5.0
    Checking lazy_static v1.5.0
   Compiling num-bigint-dig v0.8.6
    Checking rand v0.8.5
   Compiling thiserror v2.0.18
    Checking rand v0.10.0
    Checking password-hash v0.5.0
    Checking keccak v0.2.0
    Checking log v0.4.29
    Checking fiat-crypto v0.3.0
    Checking num-integer v0.1.46
    Checking smallvec v1.15.1
    Checking windows-core v0.62.2
    Checking hex v0.4.3
    Checking flate2 v1.1.10
    Checking hex-literal v1.1.0
    Checking num-iter v0.1.45
    Checking data-encoding v2.10.0
    Checking md5 v0.7.0
    Checking hybrid-array v0.4.8
    Checking internal-russh-num-bigint v0.5.0
    Checking windows-collections v0.3.2
    Checking windows-future v0.3.2
    Checking windows-numerics v0.3.1
    Checking crypto-common v0.1.7
    Checking block-buffer v0.10.4
    Checking block-padding v0.3.3
    Checking generic-array v1.3.5
    Checking spki v0.8.0-rc.4
    Checking digest v0.10.7
    Checking universal-hash v0.5.1
    Checking aead v0.5.2
    Checking inout v0.1.4
    Checking pkcs1 v0.8.0-rc.4
    Checking cipher v0.4.4
    Checking polyval v0.6.2
    Checking poly1305 v0.8.0
    Checking sha2 v0.10.9
    Checking hmac v0.12.1
    Checking blake2 v0.10.6
    Checking sha1 v0.10.6
    Checking ghash v0.5.1
    Checking windows v0.62.2
    Checking aes v0.8.4
    Checking ctr v0.9.2
    Checking pbkdf2 v0.12.2
    Checking cbc v0.1.2
    Checking blowfish v0.9.1
    Checking chacha20 v0.9.1
    Checking ssh-encoding v0.2.0
    Checking argon2 v0.5.3
    Checking crypto-common v0.2.1
    Checking block-buffer v0.12.0
    Checking block-padding v0.4.2
    Checking crypto-bigint v0.7.3
    Checking sec1 v0.8.1
    Checking bcrypt-pbkdf v0.10.0
    Checking inout v0.2.2
    Checking module-lattice v0.2.1
    Checking aes-gcm v0.10.3
    Checking ssh-cipher v0.2.0
    Checking mio v1.2.0 (https://github.com/ToyOSOrg/mio?branch=toyos#d1edcaad)
    Checking socket2 v0.6.3 (https://github.com/ToyOSOrg/socket2?branch=toyos#1d902509)
    Checking russh-cryptovec v0.59.0 (https://github.com/ToyOSOrg/russh?branch=toyos#389804d3)
    Checking digest v0.11.1
    Checking cipher v0.5.1
    Checking universal-hash v0.6.1
    Checking aead v0.6.0-rc.10
    Checking kem v0.3.0
    Checking polyval v0.7.1
    Checking hmac v0.13.0-rc.5
    Checking sha2 v0.11.0-rc.5
    Checking signature v3.0.0-rc.10
    Checking sha3 v0.11.0
    Checking sha1 v0.11.0-rc.5
    Checking salsa20 v0.11.0
    Checking aes v0.9.0-rc.4
    Checking pbkdf2 v0.13.0-rc.9
    Checking ghash v0.6.0
    Checking ctr v0.10.0-rc.4
    Checking cbc v0.2.0-rc.4
    Checking hkdf v0.13.0-rc.5
    Checking rfc6979 v0.5.0-rc.5
    Checking tokio v1.51.1 (https://github.com/ToyOSOrg/tokio?branch=toyos#902fb974)
    Checking futures-executor v0.3.32
    Checking ml-kem v0.3.0-rc.2
    Checking aes-gcm v0.11.0-rc.3
    Checking futures v0.3.32
    Checking scrypt v0.12.0-rc.10
    Checking pkcs5 v0.8.0-rc.13
    Checking pkcs8 v0.11.0-rc.11
    Checking ed25519 v3.0.0-rc.4
    Checking ed25519-dalek v3.0.0-pre.6
    Checking elliptic-curve v0.14.0-rc.29
    Checking primefield v0.14.0-rc.8
    Checking crypto-primes v0.7.0
    Checking ecdsa v0.17.0-rc.16
    Checking primeorder v0.14.0-rc.8
    Checking russh-util v0.52.0 (https://github.com/ToyOSOrg/russh?branch=toyos#389804d3)
    Checking p521 v0.14.0-rc.8
    Checking p256 v0.14.0-rc.8
    Checking rsa v0.10.0-rc.17
    Checking p384 v0.14.0-rc.8
    Checking pageant v0.2.0 (https://github.com/ToyOSOrg/russh?branch=toyos#389804d3)
    Checking internal-russh-forked-ssh-key v0.6.18+upstream-0.6.7
    Checking russh v0.60.0 (https://github.com/ToyOSOrg/russh?branch=toyos#389804d3)
    Checking sshserver v0.0.0 (/Users/jan/Dev/jan/toyos-netring/system/sshserver)
    Finished `dev` profile [optimized + debuginfo] target(s) in 10.20s
    Checking rustc-demangle v0.1.27
    Checking toyos-elf v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/elf)
    Checking toyos-elide v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/elide)
    Checking toyos-symbols v0.1.0 (/Users/jan/Dev/jan/toyos-netring/lib/symbols)
    Checking symbolize v0.1.0 (/Users/jan/Dev/jan/toyos-netring/system/symbolize)
    Finished `dev` profile [optimized + debuginfo] target(s) in 0.47s
21:59:23 [ci] the apps for windows: 11 app(s) pass `cargo check --target x86_64-pc-windows-msvc`; apps/doom, system/shell, system/terminal, system/toybox, tests/guest/proctest not attempted, as their manifests declare

21:59:23 === [ci] the toyos SDK
   Compiling toyos v0.18.0 (/Users/jan/Dev/jan/toyos-netring/sdk/toyos)
    Finished `test` profile [optimized + debuginfo] target(s) in 2.18s
     Running unittests src/lib.rs (target/debug/deps/toyos-31c99aeae5d999e3)

running 60 tests
test fs::tests::a_grant_round_trips_at_every_bound ... ok
test fs::tests::a_path_is_canonical_only_without_empty_dot_or_dotdot_components ... ok
test fs::tests::a_listing_entry_round_trips_and_a_short_one_is_refused ... ok
test fs::tests::bytes_no_grant_was_encoded_as_are_refused ... ok
test fs::tests::no_grant_carries_a_root_the_wire_refuses_or_one_past_the_badge ... ok
test ipc::tests::a_batch_past_the_bound_is_refused_and_closed ... ok
test ipc::tests::a_refused_move_closes_every_handle_it_consumed ... ok
test ipc::tests::a_taken_move_closes_nothing ... ok
test launch::tests::a_request_names_its_parent_by_one_word ... ok
test launch::tests::a_batch_names_each_handle_once_and_never_its_connection ... ok
test log::proof::a_placeholder_owned_ring_keeps_its_slots_from_every_pid_until_named ... ok
test fs::tests::the_window_copies_every_length_at_every_offset ... ok
test log::proof::a_lane_gives_its_reader_every_record_in_order_or_counts_it_refused ... ok
test log::proof::a_position_that_never_lands_is_counted_by_the_sweep ... ok
test log::proof::a_ring_has_four_lanes_to_claim ... ok
test log::proof::scribbled_words_bound_the_reader_and_never_panic_it ... ok
test log::proof::slots_left_to_others_are_theirs ... ok
test log::proof::the_region_carries_a_record_whole ... ok
test log::stdio::tests::a_formatted_line_is_one_ended_record ... ok
test log::stdio::tests::a_line_a_flush_opened_is_closed_at_its_end ... ok
test log::stdio::tests::a_line_in_pieces_is_one_record ... ok
test log::stdio::tests::a_newline_ends_a_record_and_a_carriage_return_before_it_goes ... ok
test log::stdio::tests::a_long_line_is_records_in_order_with_nothing_lost ... ok
test log::proof::a_full_ring_or_lane_refuses_at_once_and_never_waits ... ok
test net::tests::a_code_netstack_chose_is_still_its_own_answer ... ok
test log::proof::a_real_time_write_allocates_nothing ... ok
test net::tests::a_binds_request_ends_in_its_listeners_options ... ok
test net::tests::a_gone_handle_transfer_is_a_netstack_that_is_not_there ... ok
test net::tests::a_not_found_is_not_a_netstack_that_is_not_there ... ok
test net::tests::a_read_that_hung_up_is_a_netstack_that_is_not_there ... ok
test net::tests::an_accepts_answer_ends_in_its_connections_options ... ok
test net::tests::an_option_request_is_three_words_on_the_wire ... ok
test net::tests::nothing_else_becomes_a_missing_netstack ... ok
test poller::tests::a_submission_is_the_whole_entry_where_the_kernel_reads_it ... ok
test poller::tests::every_accessor_lands_on_the_abi_offset ... ok
test poller::tests::a_tail_the_kernel_publishes_mid_drain_is_observed ... ok
test poller::tests::pending_counts_what_the_kernel_has_not_claimed ... ok
test poller::tests::the_drop_counter_is_read_from_the_page ... ok
test relocate::tests::a_dynamic_section_in_no_file_bytes_is_refused ... ok
test relocate::tests::a_header_no_read_only_segment_holds_is_refused ... ok
test relocate::tests::a_header_this_does_not_know_is_refused ... ok
test relocate::tests::a_pointer_in_the_tls_template_is_refused ... ok
test relocate::tests::a_rela_table_of_the_wrong_shape_or_place_is_refused ... ok
test relocate::tests::a_write_is_bias_plus_addend_inside_a_writable_segment ... ok
test log::stdio::tests::a_stream_held_by_two_writers_keeps_each_line_whole ... ok
test relocate::tests::a_write_meeting_the_tls_template_is_refused ... ok
test relocate::tests::a_write_outside_a_writable_segment_is_refused ... ok
test relocate::tests::aarch64_writes_what_lld_writes ... ok
test relocate::tests::every_dynamic_form_it_does_not_apply_is_refused_by_name ... ok
test relocate::tests::every_type_but_the_machines_relative_is_refused ... ok
test relocate::tests::the_bias_is_where_the_header_is_found_less_its_link_address ... ok
test relocate::tests::x86_64_writes_what_lld_writes ... ok
test syscap::tests::a_machine_that_grew_once_is_read_grown ... ok
test syscap::tests::a_machine_that_grows_every_round_is_refused_by_name ... ok
test syscap::tests::a_refused_count_is_refused_and_not_an_empty_inventory ... ok
test syscap::tests::a_record_that_does_not_decode_is_refused_and_not_dropped ... ok
test syscap::tests::a_refused_read_is_refused_and_not_an_empty_inventory ... ok
test syscap::tests::an_empty_inventory_is_its_count ... ok
test syscap::tests::every_record_is_read ... ok
test log::proof::every_record_is_read_once_in_its_writers_order_or_counted_refused ... ok

test result: ok. 60 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

   Doc-tests toyos

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

21:59:25 [ci] the toyos SDK: cargo test -p toyos

21:59:25 === [ci] nothing left in $TMPDIR or /tmp
21:59:25 [ci] nothing left in $TMPDIR or /tmp: every test took its scratch with it
21:59:25 [ci] Host: 73 step(s), all green

@Japabu

Japabu commented Oct 11, 2026

Copy link
Copy Markdown
Collaborator Author

Scout image build, cargo test --test toyos-build -- --metal --metal-readback <scratchpad>/netring/scout internet_download on wt/toyos-netring-scout 2f9e090: EXIT=2, the staged verdict (tests/common/metal.rs: "Not a pass: nothing was judged"). Whole log, then request.txt.

   Compiling libc v0.2.190
   Compiling cfg-if v1.0.4
   Compiling shlex v1.3.0
   Compiling proc-macro2 v1.0.106
   Compiling find-msvc-tools v0.1.9
   Compiling version_check v0.9.5
   Compiling quote v1.0.45
   Compiling toyos-abi v0.16.0 (/Users/jan/Dev/jan/toyos-netring-scout/sdk/abi)
   Compiling unicode-ident v1.0.24
   Compiling serde_core v1.0.228
   Compiling typenum v1.20.1
   Compiling zeroize v1.9.0
   Compiling serde v1.0.228
   Compiling semver v1.0.28
   Compiling untrusted v0.9.0
   Compiling log v0.4.29
   Compiling cc v1.2.56
   Compiling rustls-pki-types v1.15.1
   Compiling generic-array v0.14.7
   Compiling subtle v2.6.1
   Compiling equivalent v1.0.2
   Compiling rustc_version v0.4.1
   Compiling httparse v1.10.1
   Compiling base64 v0.23.1
   Compiling itoa v1.0.17
   Compiling bytes v1.12.1
   Compiling toyos-sha2 v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/lib/sha2)
   Compiling curve25519-dalek v4.1.3
   Compiling zmij v1.0.21
   Compiling signature v2.2.0
   Compiling crc32fast v1.5.0
   Compiling hashbrown v0.16.1
   Compiling rustls v0.23.45
   Compiling ed25519 v2.2.3
   Compiling toyos-sha2-hw v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/lib/sha2-hw)
   Compiling toyos-wallclock v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/lib/wallclock)
   Compiling adler2 v2.0.1
   Compiling serde_json v1.0.149
   Compiling winnow v0.7.15
   Compiling getrandom v0.3.4 (https://github.com/ToyOSOrg/getrandom?branch=toyos-0.3-sdk-0.12#67c17e0a)
   Compiling libm v0.2.16
   Compiling toml_write v0.1.2
   Compiling syn v2.0.117
   Compiling http v1.5.0
   Compiling simd-adler32 v0.3.10
   Compiling once_cell v1.21.4
   Compiling allocator-api2 v0.2.21
   Compiling foldhash v0.1.5
   Compiling miniz_oxide v0.9.1
   Compiling getrandom v0.2.17 (https://github.com/ToyOSOrg/getrandom?branch=toyos-0.2-sdk-0.12#2092d1cc)
   Compiling cpufeatures v0.2.17
   Compiling indexmap v2.13.0
   Compiling filetime v0.2.29
   Compiling ring v0.17.14 (https://github.com/ToyOSOrg/ring?branch=toyos-0.17.14#34818c45)
   Compiling hashbrown v0.15.5
   Compiling toyos-manifest v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/lib/manifest)
   Compiling pem v4.0.0
   Compiling webpki-roots v1.0.9
   Compiling memchr v2.8.0
   Compiling crypto-common v0.1.7
   Compiling block-buffer v0.10.4
   Compiling ttf-parser v0.21.1
   Compiling utf8-zero v0.8.1
   Compiling digest v0.10.7
   Compiling toyos-elide v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/lib/elide)
   Compiling sha2 v0.10.9
   Compiling ureq-proto v0.6.4
   Compiling rustc-demangle v0.1.27
   Compiling ed25519-dalek v2.2.0
   Compiling percent-encoding v2.3.2
   Compiling toyos-elf v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/lib/elf)
   Compiling toyos-update v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/lib/update)
   Compiling serde_derive v1.0.228
   Compiling toyos-symbols v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/lib/symbols)
   Compiling fontdue v0.9.3
   Compiling toyos-swap v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/lib/swap)
   Compiling flate2 v1.1.10
   Compiling tar v0.4.46
   Compiling toyos-fat32 v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/lib/fat32)
   Compiling toyos-logstream v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/lib/logstream)
   Compiling webpki-root-certs v1.0.9
   Compiling toyos-gpt v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/lib/gpt)
   Compiling toyos-fat32-check v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/lib/fat32/check)
   Compiling toyos-tco v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/lib/tco)
   Compiling toyos-tmpdir v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/lib/tmpdir)
   Compiling toyos-blackbox v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/lib/blackbox)
   Compiling toyos-osrelease v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/sdk/osrelease)
   Compiling autocfg v1.5.1
   Compiling bcachefs v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/lib/bcachefs)
   Compiling toyos-keymap v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/sdk/keymap)
   Compiling getrandom v0.4.2 (https://github.com/ToyOSOrg/getrandom?branch=toyos-0.4#f0286c8b)
   Compiling num-traits v0.2.19
   Compiling time-core v0.1.9
   Compiling powerfmt v0.2.1
   Compiling num-conv v0.2.2
   Compiling core-foundation-sys v0.8.7
   Compiling deranged v0.5.8
   Compiling toyos-bootmap v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/lib/bootmap)
   Compiling iana-time-zone v0.1.65
   Compiling crc-catalog v2.4.0
   Compiling crc v3.4.0
   Compiling uuid v1.22.0
   Compiling toyos-acpi v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/lib/acpi)
   Compiling chrono v0.4.44
   Compiling bitflags v2.11.0
   Compiling toyos-quiesce v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/lib/quiesce)
   Compiling byteorder v1.5.0
   Compiling bitflags v1.3.2
   Compiling gpt v3.1.0
   Compiling kernel v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/kernel)
   Compiling toyos-desktop v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/system/compositor/desktop)
   Compiling toyos-xhci v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/lib/xhci)
   Compiling toyos-userbound v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/lib/userbound)
   Compiling acpiserver-api v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/lib/acpiserver-api)
   Compiling rustls-webpki v0.103.15
   Compiling toyos-ssh v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/build/ssh)
   Compiling time v0.3.55
   Compiling toml_datetime v0.6.11
   Compiling serde_spanned v0.6.9
   Compiling toml_edit v0.22.27
   Compiling fatfs v0.3.6
   Compiling yasna v0.6.0
   Compiling rcgen v0.14.10
   Compiling toml v0.8.23
   Compiling ureq v3.4.2
   Compiling toyos-build v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout)
   Compiling toyos-metal v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/tests/metal)
    Finished `test` profile [optimized + debuginfo] target(s) in 47.04s
     Running tests/toyos.rs (target/debug/deps/toyos_build-9af9c0c40d17ccab)
21:38:01   BUILD x86_64 binaries of tests/guest/rust-tests
21:38:01 Making /Users/jan/Dev/jan/toyos-netring-scout/rust a fork checkout at c1b88133ec79fc0902d4031d0c58a00b488842b9 (a git worktree of the primary's)
Preparing worktree (detached HEAD c1b88133ec7)
Updating files:   5% (3617/61540)
Updating files:   6% (3693/61540)
Updating files:   7% (4308/61540)
Updating files:   8% (4924/61540)
Updating files:   9% (5539/61540)
Updating files:  10% (6154/61540)
Updating files:  10% (6341/61540)
Updating files:  11% (6770/61540)
Updating files:  12% (7385/61540)
Updating files:  13% (8001/61540)
Updating files:  14% (8616/61540)
Updating files:  15% (9231/61540)
Updating files:  16% (9847/61540)
Updating files:  17% (10462/61540)
Updating files:  17% (10547/61540)
Updating files:  18% (11078/61540)
Updating files:  19% (11693/61540)
Updating files:  20% (12308/61540)
Updating files:  21% (12924/61540)
Updating files:  22% (13539/61540)
Updating files:  23% (14155/61540)
Updating files:  23% (14646/61540)
Updating files:  24% (14770/61540)
Updating files:  25% (15385/61540)
Updating files:  26% (16001/61540)
Updating files:  27% (16616/61540)
Updating files:  28% (17232/61540)
Updating files:  29% (17847/61540)
Updating files:  30% (18462/61540)
Updating files:  30% (19046/61540)
Updating files:  31% (19078/61540)
Updating files:  32% (19693/61540)
Updating files:  33% (20309/61540)
Updating files:  34% (20924/61540)
Updating files:  35% (21539/61540)
Updating files:  36% (22155/61540)
Updating files:  37% (22770/61540)
Updating files:  38% (23386/61540)
Updating files:  38% (23686/61540)
Updating files:  39% (24001/61540)
Updating files:  40% (24616/61540)
Updating files:  41% (25232/61540)
Updating files:  42% (25847/61540)
Updating files:  43% (26463/61540)
Updating files:  44% (27078/61540)
Updating files:  45% (27693/61540)
Updating files:  46% (28309/61540)
Updating files:  47% (28924/61540)
Updating files:  48% (29540/61540)
Updating files:  49% (30155/61540)
Updating files:  50% (30770/61540)
Updating files:  50% (31113/61540)
Updating files:  51% (31386/61540)
Updating files:  52% (32001/61540)
Updating files:  53% (32617/61540)
Updating files:  54% (33232/61540)
Updating files:  55% (33847/61540)
Updating files:  56% (34463/61540)
Updating files:  57% (35078/61540)
Updating files:  58% (35694/61540)
Updating files:  59% (36309/61540)
Updating files:  60% (36924/61540)
Updating files:  61% (37540/61540)
Updating files:  62% (38155/61540)
Updating files:  63% (38771/61540)
Updating files:  63% (38912/61540)
Updating files:  64% (39386/61540)
Updating files:  65% (40001/61540)
Updating files:  66% (40617/61540)
Updating files:  67% (41232/61540)
Updating files:  68% (41848/61540)
Updating files:  69% (42463/61540)
Updating files:  70% (43078/61540)
Updating files:  71% (43694/61540)
Updating files:  72% (44309/61540)
Updating files:  73% (44925/61540)
Updating files:  73% (45028/61540)
Updating files:  74% (45540/61540)
Updating files:  75% (46155/61540)
Updating files:  76% (46771/61540)
Updating files:  77% (47386/61540)
Updating files:  78% (48002/61540)
Updating files:  79% (48617/61540)
Updating files:  80% (49232/61540)
Updating files:  81% (49848/61540)
Updating files:  82% (50463/61540)
Updating files:  83% (51079/61540)
Updating files:  84% (51694/61540)
Updating files:  85% (52309/61540)
Updating files:  85% (52401/61540)
Updating files:  86% (52925/61540)
Updating files:  87% (53540/61540)
Updating files:  88% (54156/61540)
Updating files:  89% (54771/61540)
Updating files:  90% (55386/61540)
Updating files:  91% (56002/61540)
Updating files:  92% (56617/61540)
Updating files:  93% (57233/61540)
Updating files:  94% (57848/61540)
Updating files:  95% (58463/61540)
Updating files:  96% (59079/61540)
Updating files:  96% (59675/61540)
Updating files:  97% (59694/61540)
Updating files:  98% (60310/61540)
Updating files:  99% (60925/61540)
Updating files: 100% (61540/61540)
Updating files: 100% (61540/61540), done.
HEAD is now at c1b88133ec7 std: name toyos-abi and toyos by version
Preparing worktree (detached HEAD f8a3e68)
HEAD is now at f8a3e68 Merge upstream rust-lang/backtrace-rs (2026-08-02)
21:38:15 Building sysroot 0550a01e58d2d4e1: ToyOS's std from /Users/jan/Dev/jan/toyos-netring-scout/rust, the compiler /Users/jan/.cache/toyos/compilers/9fea4035de7bb3d6/stage2, the freestanding libraries bdb0e2671b229067
21:38:15 Building bootstrap
21:38:17    Compiling libc v0.2.186
21:38:17    Compiling proc-macro2 v1.0.89
21:38:17    Compiling unicode-ident v1.0.13
21:38:17    Compiling typenum v1.17.0
21:38:17    Compiling version_check v0.9.5
21:38:17    Compiling memchr v2.7.6
21:38:17    Compiling shlex v1.3.0
21:38:17    Compiling find-msvc-tools v0.1.9
21:38:17    Compiling cfg-if v1.0.0
21:38:17    Compiling crossbeam-utils v0.8.20
21:38:17    Compiling pkg-config v0.3.31
21:38:17    Compiling serde v1.0.215
21:38:17    Compiling getrandom v0.3.2
21:38:17    Compiling rustix v1.1.4
21:38:17    Compiling heck v0.5.0
21:38:17    Compiling regex-syntax v0.8.5
21:38:17    Compiling cc v1.2.62
21:38:17    Compiling clap_lex v0.7.2
21:38:17    Compiling anstyle v1.0.10
21:38:17    Compiling generic-array v0.14.7
21:38:17    Compiling bitflags v2.6.0
21:38:18    Compiling clap_builder v4.5.20
21:38:18    Compiling object v0.37.3
21:38:18    Compiling same-file v1.0.6
21:38:18    Compiling log v0.4.22
21:38:18    Compiling serde_json v1.0.132
21:38:18    Compiling aho-corasick v1.1.3
21:38:18    Compiling bstr v1.10.0
21:38:18    Compiling semver v1.0.23
21:38:18    Compiling walkdir v2.5.0
21:38:18    Compiling once_cell v1.20.2
21:38:18    Compiling fastrand v2.3.0
21:38:18    Compiling ryu v1.0.18
21:38:18    Compiling itoa v1.0.11
21:38:18    Compiling bootstrap v0.0.0 (/Users/jan/Dev/jan/toyos-netring-scout/rust/src/bootstrap)
21:38:18    Compiling crossbeam-epoch v0.9.18
21:38:18    Compiling quote v1.0.37
21:38:18    Compiling termcolor v1.4.1
21:38:18    Compiling syn v2.0.87
21:38:19    Compiling opener v0.8.4
21:38:19    Compiling errno v0.3.14
21:38:19    Compiling filetime v0.2.27
21:38:19    Compiling cpufeatures v0.2.15
21:38:19    Compiling crossbeam-deque v0.8.5
21:38:19    Compiling build_helper v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/rust/src/build_helper)
21:38:19    Compiling home v0.5.12
21:38:19    Compiling tar v0.4.46
21:38:19    Compiling cmake v0.1.54
21:38:19    Compiling lzma-sys v0.1.20
21:38:20    Compiling regex-automata v0.4.9
21:38:20    Compiling tempfile v3.27.0
21:38:21    Compiling crypto-common v0.1.6
21:38:21    Compiling block-buffer v0.10.4
21:38:21    Compiling digest v0.10.7
21:38:21    Compiling sha2 v0.10.8
21:38:23    Compiling toml v0.5.11
21:38:23    Compiling xz2 v0.1.7
21:38:23    Compiling globset v0.4.15
21:38:23    Compiling clap_derive v4.5.18
21:38:23    Compiling serde_derive v1.0.215
21:38:24    Compiling ignore v0.4.23
21:38:25    Compiling clap v4.5.20
21:38:25    Compiling clap_complete v4.5.37
21:38:59     Finished `dev` profile [unoptimized] target(s) in 43.69s
21:39:00 downloading https://static.rust-lang.org/dist/2026-07-13/rustfmt-nightly-aarch64-apple-darwin.tar.xz
21:39:00 #=#=#                                                                          

###################                                                       27.1%
######################################################################## 100.0%
21:39:00 extracting /Users/jan/Dev/jan/toyos-netring-scout/rust/build/toyos-std/cache/2026-07-13/rustfmt-nightly-aarch64-apple-darwin.tar.xz to /Users/jan/Dev/jan/toyos-netring-scout/rust/build/toyos-std/aarch64-apple-darwin/rustfmt
21:39:00 downloading https://static.rust-lang.org/dist/2026-07-13/rustc-nightly-aarch64-apple-darwin.tar.xz
21:39:02 
                                                                           0.2%
####                                                                       5.6%
##################                                                        25.3%
################################                                          45.7%
#######################################                                   54.7%
###############################################                           65.6%
##########################################################                81.6%
###############################################################           88.6%
######################################################################    98.3%
######################################################################## 100.0%
21:39:06 extracting /Users/jan/Dev/jan/toyos-netring-scout/rust/build/toyos-std/cache/2026-07-13/rustc-nightly-aarch64-apple-darwin.tar.xz to /Users/jan/Dev/jan/toyos-netring-scout/rust/build/toyos-std/aarch64-apple-darwin/rustfmt
21:39:25 WARNING: running build in stage 0. This might not work as expected.
21:39:26 Building stage0 library artifacts{alloc, compiler_builtins, core, panic_abort, panic_unwind, proc_macro, rustc-std-workspace-core, std, std_detect, sysroot, test, unwind} (stage0:aarch64-apple-darwin -> stage0:x86_64-unknown-toyos)
21:39:26    Compiling compiler_builtins v0.1.160 (/Users/jan/Dev/jan/toyos-netring-scout/rust/library/compiler-builtins/compiler-builtins)
21:39:26    Compiling core v0.0.0 (/Users/jan/Dev/jan/toyos-netring-scout/rust/library/core)
21:39:26    Compiling libc v0.2.189
21:39:26    Compiling object v0.39.1
21:39:26    Compiling std v0.0.0 (/Users/jan/Dev/jan/toyos-netring-scout/rust/library/std)
21:39:26    Compiling test v0.0.0 (/Users/jan/Dev/jan/toyos-netring-scout/rust/library/test)
21:40:02    Compiling rustc-std-workspace-core v1.99.0 (/Users/jan/Dev/jan/toyos-netring-scout/rust/library/rustc-std-workspace-core)
21:40:02    Compiling alloc v0.0.0 (/Users/jan/Dev/jan/toyos-netring-scout/rust/library/alloc)
21:40:02    Compiling toyos-abi v0.16.0 (/Users/jan/Dev/jan/toyos-netring-scout/sdk/abi)
21:40:02    Compiling memchr v2.8.3
21:40:02    Compiling adler2 v2.0.1
21:40:02    Compiling cfg-if v1.0.4
21:40:02    Compiling panic_abort v0.0.0 (/Users/jan/Dev/jan/toyos-netring-scout/rust/library/panic_abort)
21:40:02    Compiling rustc-demangle v0.1.28
21:40:02    Compiling rustc-literal-escaper v0.0.8
21:40:02    Compiling dlmalloc v0.2.14
21:40:04    Compiling toyos v0.18.0 (/Users/jan/Dev/jan/toyos-netring-scout/sdk/toyos)
21:40:11    Compiling rustc-std-workspace-alloc v1.99.0 (/Users/jan/Dev/jan/toyos-netring-scout/rust/library/rustc-std-workspace-alloc)
21:40:12    Compiling gimli v0.34.0
21:40:12    Compiling std_detect v0.1.5 (/Users/jan/Dev/jan/toyos-netring-scout/rust/library/std_detect)
21:40:12    Compiling miniz_oxide v0.9.1
21:40:12    Compiling hashbrown v0.17.1
21:40:16    Compiling unwinding v0.2.10
21:40:16    Compiling addr2line v0.27.1
21:40:16    Compiling unwind v0.0.0 (/Users/jan/Dev/jan/toyos-netring-scout/rust/library/unwind)
21:40:16    Compiling panic_unwind v0.0.0 (/Users/jan/Dev/jan/toyos-netring-scout/rust/library/panic_unwind)
21:40:22 warning: function `exit` is never used
21:40:22    --> library/std/src/sys/pal/../../../../../../sdk/std/sys/pal/os.rs:113:8
21:40:22     |
21:40:22 113 | pub fn exit(code: i32) -> ! {
21:40:22     |        ^^^^
21:40:22     |
21:40:22     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default

21:40:22 warning: function `getpid` is never used
21:40:22    --> library/std/src/sys/pal/../../../../../../sdk/std/sys/pal/os.rs:117:8
21:40:22     |
21:40:22 117 | pub fn getpid() -> u32 {
21:40:22     |        ^^^^^^

21:40:22 warning: field `eh_frame_hdr_size` is never read
21:40:22    --> library/std/src/sys/pal/../../../../../../sdk/std/sys/pal/mod.rs:228:9
21:40:22     |
21:40:22 224 |     struct Module {
21:40:22     |            ------ field in this struct
21:40:22 ...
21:40:22 228 |         eh_frame_hdr_size: usize,
21:40:22     |         ^^^^^^^^^^^^^^^^^

21:40:39 warning: `std` (lib) generated 3 warnings
21:40:39    Compiling rustc-std-workspace-std v1.99.0 (/Users/jan/Dev/jan/toyos-netring-scout/rust/library/rustc-std-workspace-std)
21:40:39    Compiling proc_macro v0.0.0 (/Users/jan/Dev/jan/toyos-netring-scout/rust/library/proc_macro)
21:40:39    Compiling getopts v0.2.24
21:40:42    Compiling sysroot v0.0.0 (/Users/jan/Dev/jan/toyos-netring-scout/rust/library/sysroot)
21:40:51     Finished `dist` profile [optimized + debuginfo] target(s) in 1m 24s
21:40:51 Building stage0 library artifacts{alloc, compiler_builtins, core, panic_abort, panic_unwind, proc_macro, rustc-std-workspace-core, std, std_detect, sysroot, test, unwind} (stage0:aarch64-apple-darwin -> stage0:aarch64-unknown-toyos)
21:40:52    Compiling compiler_builtins v0.1.160 (/Users/jan/Dev/jan/toyos-netring-scout/rust/library/compiler-builtins/compiler-builtins)
21:40:52    Compiling core v0.0.0 (/Users/jan/Dev/jan/toyos-netring-scout/rust/library/core)
21:40:52    Compiling libc v0.2.189
21:40:52    Compiling object v0.39.1
21:40:52    Compiling std v0.0.0 (/Users/jan/Dev/jan/toyos-netring-scout/rust/library/std)
21:40:52    Compiling test v0.0.0 (/Users/jan/Dev/jan/toyos-netring-scout/rust/library/test)
21:41:43    Compiling rustc-std-workspace-core v1.99.0 (/Users/jan/Dev/jan/toyos-netring-scout/rust/library/rustc-std-workspace-core)
21:41:43    Compiling alloc v0.0.0 (/Users/jan/Dev/jan/toyos-netring-scout/rust/library/alloc)
21:41:43    Compiling memchr v2.8.3
21:41:43    Compiling adler2 v2.0.1
21:41:43    Compiling cfg-if v1.0.4
21:41:43    Compiling toyos-abi v0.16.0 (/Users/jan/Dev/jan/toyos-netring-scout/sdk/abi)
21:41:43    Compiling panic_abort v0.0.0 (/Users/jan/Dev/jan/toyos-netring-scout/rust/library/panic_abort)
21:41:43    Compiling rustc-demangle v0.1.28
21:41:43    Compiling rustc-literal-escaper v0.0.8
21:41:43    Compiling dlmalloc v0.2.14
21:41:44    Compiling toyos v0.18.0 (/Users/jan/Dev/jan/toyos-netring-scout/sdk/toyos)
21:41:53    Compiling rustc-std-workspace-alloc v1.99.0 (/Users/jan/Dev/jan/toyos-netring-scout/rust/library/rustc-std-workspace-alloc)
21:41:53    Compiling gimli v0.34.0
21:41:53    Compiling miniz_oxide v0.9.1
21:41:53    Compiling hashbrown v0.17.1
21:41:53    Compiling std_detect v0.1.5 (/Users/jan/Dev/jan/toyos-netring-scout/rust/library/std_detect)
21:42:00    Compiling unwinding v0.2.10
21:42:00    Compiling addr2line v0.27.1
21:42:00    Compiling unwind v0.0.0 (/Users/jan/Dev/jan/toyos-netring-scout/rust/library/unwind)
21:42:00    Compiling panic_unwind v0.0.0 (/Users/jan/Dev/jan/toyos-netring-scout/rust/library/panic_unwind)
21:42:08 warning: function `exit` is never used
21:42:08    --> library/std/src/sys/pal/../../../../../../sdk/std/sys/pal/os.rs:113:8
21:42:08     |
21:42:08 113 | pub fn exit(code: i32) -> ! {
21:42:08     |        ^^^^
21:42:08     |
21:42:08     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default

21:42:08 warning: function `getpid` is never used
21:42:08    --> library/std/src/sys/pal/../../../../../../sdk/std/sys/pal/os.rs:117:8
21:42:08     |
21:42:08 117 | pub fn getpid() -> u32 {
21:42:08     |        ^^^^^^

21:42:08 warning: field `eh_frame_hdr_size` is never read
21:42:08    --> library/std/src/sys/pal/../../../../../../sdk/std/sys/pal/mod.rs:228:9
21:42:08     |
21:42:08 224 |     struct Module {
21:42:08     |            ------ field in this struct
21:42:08 ...
21:42:08 228 |         eh_frame_hdr_size: usize,
21:42:08     |         ^^^^^^^^^^^^^^^^^

21:42:30 warning: `std` (lib) generated 3 warnings
21:42:30    Compiling rustc-std-workspace-std v1.99.0 (/Users/jan/Dev/jan/toyos-netring-scout/rust/library/rustc-std-workspace-std)
21:42:30    Compiling proc_macro v0.0.0 (/Users/jan/Dev/jan/toyos-netring-scout/rust/library/proc_macro)
21:42:30    Compiling getopts v0.2.24
21:42:34    Compiling sysroot v0.0.0 (/Users/jan/Dev/jan/toyos-netring-scout/rust/library/sysroot)
21:42:58     Finished `dist` profile [optimized + debuginfo] target(s) in 2m 06s
21:42:58 Build completed successfully in 0:04:42
21:42:58 Checking that the compilers of /Users/jan/.cache/toyos/sysroots/0550a01e58d2d4e1.partial keep a loop's last exit
21:43:03 Building toyos-libc for sysroot...
   Compiling cfg-if v1.0.4
   Compiling toyos-abi v0.16.0 (/Users/jan/Dev/jan/toyos-netring-scout/sdk/abi)
   Compiling toyos-elf v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/lib/elf)
   Compiling toyos-osrelease v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/sdk/osrelease)
   Compiling dlmalloc v0.2.13
   Compiling toyos v0.18.0 (/Users/jan/Dev/jan/toyos-netring-scout/sdk/toyos)
   Compiling toyos-libc v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/sdk/libc)
    Finished `release` profile [optimized] target(s) in 4.86s
21:43:10 Building toyos-libc for sysroot...
   Compiling cfg-if v1.0.4
   Compiling toyos-abi v0.16.0 (/Users/jan/Dev/jan/toyos-netring-scout/sdk/abi)
   Compiling toyos-elf v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/lib/elf)
   Compiling toyos-osrelease v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/sdk/osrelease)
   Compiling dlmalloc v0.2.13
   Compiling toyos v0.18.0 (/Users/jan/Dev/jan/toyos-netring-scout/sdk/toyos)
   Compiling toyos-libc v0.1.0 (/Users/jan/Dev/jan/toyos-netring-scout/sdk/libc)
    Finished `release` profile [optimized] target(s) in 3.30s
    Updating git repository `https://github.com/evmar/n2`
  Installing n2 v0.1.0 (https://github.com/evmar/n2?rev=b1fead52ccda0c497d816696f23f4099c3e8ec1f#b1fead52)
warning: default toolchain implicitly overridden with `stable-aarch64-apple-darwin` by environment variable
  |
  = help: use `cargo +stable install` if you meant to use the stable toolchain
  = note: rustup selects the toolchain based on the parent environment and not the environment of the package being installed
    Updating crates.io index
   Compiling libc v0.2.169
   Compiling anyhow v1.0.95
   Compiling lexopt v0.3.0
   Compiling rustc-hash v1.1.0
   Compiling n2 v0.1.0 (/Users/jan/.cargo/git/checkouts/n2-c60643ba0e319c73/b1fead5)
warning: direct cast of function item into an integer
  --> src/signal.rs:22:42
   |
22 |         sa.sa_sigaction = sigint_handler as libc::sighandler_t;
   |                                          ^^^^^^^^^^^^^^^^^^^^^
   |
   = note: `#[warn(function_casts_as_integer)]` on by default
help: first cast to a pointer `as *const ()`
   |
22 |         sa.sa_sigaction = sigint_handler as *const () as libc::sighandler_t;
   |                                          ++++++++++++

warning: `n2` (lib) generated 1 warning (run `cargo fix --lib -p n2` to apply 1 suggestion)
    Finished `release` profile [optimized + debuginfo] target(s) in 10.53s
  Installing /Users/jan/Dev/jan/toyos-netring-scout/target/n2/172fb458445ac68d/bin/n2
   Installed package `n2 v0.1.0 (https://github.com/evmar/n2?rev=b1fead52ccda0c497d816696f23f4099c3e8ec1f#b1fead52)` (executable `n2`)
warning: be sure to add `/Users/jan/Dev/jan/toyos-netring-scout/target/n2/172fb458445ac68d/bin` to your PATH to be able to run the installed binaries
21:43:26 Building the C++ runtime for x86_64-unknown-toyos under /Users/jan/Dev/jan/toyos-netring-scout/target/n2/172fb458445ac68d/bin/ninja
21:43:54 Building the C++ runtime for aarch64-unknown-toyos under /Users/jan/Dev/jan/toyos-netring-scout/target/n2/172fb458445ac68d/bin/ninja
21:46:21   BUILT x86_64 binaries of tests/guest/rust-tests  (500s)
21:46:21 [toyos] Compiling 138 C tests, and attempting 24 declared ones...
21:46:26 [metal] 1 registration(s) and 0 shared member(s) over 1 boot(s)
21:46:26   BUILD x86_64 kernel, loader, ROOT of /private/tmp/claude-502/-Users-jan-Dev-jan-toyos/80e90c3a-7449-46b8-84cc-b59e9dd31ae9/scratchpad/netring/scout/download/system-fd9b510aa19469c9.toml
21:47:13 assets: leaving out share/wallpaper.rgb — only /system/bin/compositor opens it and this image builds no compositor
21:47:13   BUILT x86_64 kernel, loader, ROOT of /private/tmp/claude-502/-Users-jan-Dev-jan-toyos/80e90c3a-7449-46b8-84cc-b59e9dd31ae9/scratchpad/netring/scout/download/system-fd9b510aa19469c9.toml  (47s)
21:47:13 [metal] download: 1 job(s) under a list bound of 60000 ms, armed with [] and a boot deadline of 120000 ms — /private/tmp/claude-502/-Users-jan-Dev-jan-toyos/80e90c3a-7449-46b8-84cc-b59e9dd31ae9/scratchpad/netring/scout/download/image.img
# One boot per image. Each invocation is `cargo <words>` from this worktree.

download
  image: /private/tmp/claude-502/-Users-jan-Dev-jan-toyos/80e90c3a-7449-46b8-84cc-b59e9dd31ae9/scratchpad/netring/scout/download/image.img
  cargo run -p toyos-metal -- --image /private/tmp/claude-502/-Users-jan-Dev-jan-toyos/80e90c3a-7449-46b8-84cc-b59e9dd31ae9/scratchpad/netring/scout/download/image.img --readback /private/tmp/claude-502/-Users-jan-Dev-jan-toyos/80e90c3a-7449-46b8-84cc-b59e9dd31ae9/scratchpad/netring/scout/download --fat32-check
21:47:13 [metal] staged 1 image(s); /private/tmp/claude-502/-Users-jan-Dev-jan-toyos/80e90c3a-7449-46b8-84cc-b59e9dd31ae9/scratchpad/netring/scout/request.txt lists them. The machine was not touched, so this run establishes nothing about it.
error: test failed, to rerun pass `--test toyos-build`

Caused by:
  process didn't exit successfully: `/Users/jan/Dev/jan/toyos-netring-scout/target/debug/deps/toyos_build-9af9c0c40d17ccab --metal --metal-readback /private/tmp/claude-502/-Users-jan-Dev-jan-toyos/80e90c3a-7449-46b8-84cc-b59e9dd31ae9/scratchpad/netring/scout internet_download` (exit status: 2)
# One boot per image. Each invocation is `cargo <words>` from this worktree.

download
  image: /private/tmp/claude-502/-Users-jan-Dev-jan-toyos/80e90c3a-7449-46b8-84cc-b59e9dd31ae9/scratchpad/netring/scout/download/image.img
  cargo run -p toyos-metal -- --image /private/tmp/claude-502/-Users-jan-Dev-jan-toyos/80e90c3a-7449-46b8-84cc-b59e9dd31ae9/scratchpad/netring/scout/download/image.img --readback /private/tmp/claude-502/-Users-jan-Dev-jan-toyos/80e90c3a-7449-46b8-84cc-b59e9dd31ae9/scratchpad/netring/scout/download --fat32-check

@Japabu Japabu changed the title netring: a session region replaces the pipes between netstack and its clients (design) netring: a session region replaces the pipes between netstack and its clients (design, and the track that stages it) Oct 11, 2026
@Japabu

Japabu commented Oct 11, 2026

Copy link
Copy Markdown
Collaborator Author

The scout boot, judged: S = 0.192 ms per MB, so the rule says the build may claim a CPU saving

The boot. One T14 boot of internet_download from wt/toyos-netring-scout 2f9e090: toyos-metal exited 0 (PASS: the machine booted ToyOS in 1072 ms). All six runs at K = 32 read the whole 170,439,044-byte file with the right sha256, and the job ended exit=0.

The judge. cargo test --test toyos-build -- --metal --metal-readback <scratchpad>/netring/scout internet_download, run from the scout worktree: EXIT=0, PASS internet_download, 1 passed, 0 failed, 1 boot(s). The judge log and the flash log are posted whole and masked in the next comments.

The instrument is sound

  • R + W ≤ H in every run. Checked on the raw cycle counts (run 1: 48,835,466 + 32,771,914 = 81,607,380 ≤ 108,661,803), and it holds in all six.
  • pipe_copy_bytes is 2.00 per byte downloaded in every run: 2.0028 in all six. The 0.0028 over 2 is TLS framing: netstack's pipe_w_bytes is 1,001,394 to 1,001,413 per MB, so each pipe carries about 1.0014 bytes for every byte of body.

The rows, per MB downloaded (MB = 10⁶ bytes), TSC time at the counter's 2,419,361,856 Hz

M is read from a counter. D is derived from M rows, and the derivation is named.

run 1 2 3 4 5 6 median
pipe_read_copy_cycles R, ms M 0.1184 0.1299 0.1197 0.1211 0.1180 0.1197 0.1197
pipe_write_copy_cycles W, ms M 0.0795 0.0865 0.0798 0.0823 0.0775 0.0815 0.0806
pipe_lock_hold_cycles H, ms M 0.2635 0.3108 0.2672 0.2848 0.2604 0.2784 0.2728
pipe_lock_spin_cycles P, ms M 0.0418 0.0334 0.0400 0.0468 0.0394 0.0371 0.0397
pipe_lock_takes M 179.9 235.7 177.4 209.6 154.3 190.0 185.0
pipe_copy_bytes, per byte M 2.0028 2.0028 2.0028 2.0028 2.0028 2.0028 2.00
netstack cy_ring_write, ms M 0.225 0.238 0.201 0.225 0.212 0.196 0.2185
netstack cy_pipe_w, ms M 0.135 0.151 0.131 0.148 0.124 0.135 0.135
system C0, ms M 5.155 6.069 5.235 5.493 5.066 5.384 5.310
throughput, Mb/s (https_download's own mbps=) M 845.4 614.6 801.7 692.9 840.9 770.2 785.95
S = H − R + P, ms D 0.1869 0.2144 0.1875 0.2105 0.1818 0.1958 0.1916
H − R − W, ms D 0.0656 0.0944 0.0677 0.0813 0.0649 0.0772 0.0724
H − R − W > W? D no yes no no no no no

Arithmetic. Each M cell is counter ÷ 2,419,361,856 × 10³ ÷ 170.439044. For example, run 1's R is 48,835,466 ÷ 2,419,361,856 × 10³ ÷ 170.439044 = 0.1184 ms. D is computed per run first, and then the median is taken. From the medians:

  • S = 0.2728 − 0.1197 + 0.0397 = 0.193 ms per MB. The median of the per-run S values is 0.192.
  • H − R − W = 0.2728 − 0.1197 − 0.0806 = 0.0724 ms, against W = 0.0806 ms.
  • The copies' share of the hold: (R + W) ÷ H = 0.2003 ÷ 0.2728 = 73%. The read copy is 1.5× the write copy (0.1197 ÷ 0.0806).
  • Per take: H ÷ takes = 3,544 TSC ticks, which is 1.46 µs held per take (the median of the per-run ratios). The hold that is not a copy is 0.0724 ms ÷ 185 = 0.39 µs per take.
  • As a share of C0: S ÷ C0 = 0.1916 ÷ 5.310 = 3.6%, and (H + P) ÷ C0 = 5.9% (round 3: 6.0%). The zero-copy section's figure also holds: cy_ring_write ÷ C0 = 0.2185 ÷ 5.310 = 4.1%, where round 3 had 0.225 of 5.447, also 4.1%.

The decision, by the rule stated before the boot

  • S = 0.192 ≥ 0.10 ms per MB. The build may claim a CPU saving on the receive path, and its own T14 boot is judged against these rows.
  • H − R − W = 0.072 ≤ W = 0.081. The third rule does not fire: most of the hold is the two copies (73%), so issues/the-global-pipe-lock-spans-a-user-copy.md does not go first on this evidence. It fired in one run of six, run 2, which is also the slowest run (614.6 Mb/s, the highest C0 and the most takes).

What the rule does not see

These points do not change the rule's verdict. They bound what the build's pull request can claim.

  • S is the upper bound the rule defined, and the lower bound is under 0.10. S counts every hold that is not a copy, and every spin, as removed. But the design keeps the doorbells and every IPC connection on PIPES (its own roast says so), and pipe_lock_takes is 185 per MB while netstack's data writes are about 20 per MB (pipe_w: 16.8 to 25.7). Most takes are therefore not the stream's data copies, and how many of them the design removes was not measured. If only the write copy went, the saving would be W = 0.081 ms per MB, under the 0.10 bound. The claim needs at least 0.019 of the 0.112 ms per MB of non-copy hold plus spin to go (0.10 − 0.081; 0.0724 + 0.0397). That is plausible, but nothing here measures it. The build's own boot is what settles it.
  • This is one boot, where round 3 used three. Round 3's medians are runs 3 and 4 of three boots. The scout's are all six runs of one boot, every run told K = 32.
  • The instrument does not visibly inflate the hold. The scout adds a takes count and two stamp reads around each copy inside the hold, yet its medians sit at or under round 3's B at K = 32: H 0.273 against 0.281, P 0.040 against 0.047, cy_ring_write 0.2185 against 0.225, cy_pipe_w 0.135 against 0.139, C0 5.310 against 5.447, throughput 785.95 against 771.4 Mb/s. This comes from medians across different boots, so it is not a measurement of the instrument's cost.
  • The send path is not on this boot. The download sends only ACKs, as the body already says.
The script every number above came from (python3 -I scout.py judge.log, EXIT=0)
import re, sys, statistics as st
log = open(sys.argv[1]).read().splitlines()
TSC = None
runs = []
dl = {}
for l in log:
    if '[download] perf idle' in l:
        TSC = int(re.search(r'tsc_hz=(\d+)', l).group(1))
    m = re.search(r'\[download\] perf run=(\d+) k=32 (.*)', l)
    if m:
        kv = dict(w.split('=',1) for w in m.group(2).split())
        runs.append((int(m.group(1)), kv))
    m = re.search(r'\[download\] whole .* mbps=([\d.]+) .* run=(\d+)', l)
    if m: dl[int(m.group(2))] = float(m.group(1))
c0 = {}
cur = None
for l in log:
    m = re.match(r'netperf: run (\d+) per MB', l)
    if m: cur = int(m.group(1))
    m = re.search(r'M  system C0 \(sum mperf / tsc_hz\)\s+([\d.]+) ms', l)
    if m and cur: c0[cur] = float(m.group(1))
    m = re.search(r'M  netstack cy_ring_write \(tsc\)\s+([\d.]+) ms', l)
    if m and cur: c0.setdefault(('rw',cur), float(m.group(1)))
rows = {k: [] for k in 'R W H P S X takes copyB C0 ringw mbps hold_per_take R+W<=H'.split()}
for n, kv in runs:
    B = int(kv['bytes']); MB = B/1e6
    ms = lambda c: int(kv[c])/TSC*1e3/MB
    R=ms('k.pipe_read_copy_cycles'); W=ms('k.pipe_write_copy_cycles'); H=ms('k.pipe_lock_hold_cycles'); P=ms('k.pipe_lock_spin_cycles')
    takes=int(kv['k.pipe_lock_takes'])/MB; cb=int(kv['k.pipe_copy_bytes'])/B
    ok = int(kv['k.pipe_read_copy_cycles'])+int(kv['k.pipe_write_copy_cycles']) <= int(kv['k.pipe_lock_hold_cycles'])
    hpt = int(kv['k.pipe_lock_hold_cycles'])/int(kv['k.pipe_lock_takes'])
    vals = dict(R=R,W=W,H=H,P=P,S=H-R+P,X=H-R-W,takes=takes,copyB=cb,C0=c0[n],ringw=c0[('rw',n)],mbps=dl[n],hold_per_take=hpt)
    for k,v in vals.items(): rows[k].append(v)
    rows['R+W<=H'].append(ok)
for k,v in rows.items():
    if k=='R+W<=H': print(k, 'all' if all(v) else 'NOT all'); continue
    print(f"median {k}: {st.median(v):.4f}  sorted {[round(x,4) for x in sorted(v)]}")

The worktree and the readback are left as they were. Nothing in the PR's code was changed.

@Japabu

Japabu commented Oct 11, 2026

Copy link
Copy Markdown
Collaborator Author

The scout judge, cargo test --test toyos-build -- --metal --metal-readback <scratchpad>/netring/scout internet_download on wt/toyos-netring-scout 2f9e090: EXIT=0. The whole log, masked, part 1 of 2 (lines 1-388 of 722)

    Finished `test` profile [optimized + debuginfo] target(s) in 0.24s
     Running tests/toyos.rs (target/debug/deps/toyos_build-9af9c0c40d17ccab)
22:03:18   BUILD x86_64 binaries of tests/guest/rust-tests
22:03:21   BUILT x86_64 binaries of tests/guest/rust-tests  (4s)
22:03:21 [toyos] Compiling 138 C tests, and attempting 24 declared ones...
22:03:28 [metal] 1 registration(s) and 0 shared member(s) over 1 boot(s)

22:03:28 [metal] the boots
22:03:28   download: Boot: complete 1072 ms, a log of 66515 bytes, back in 71 s, the stick enumerated 0 s after that
22:03:28     phases: preamble 0.6 s, wipe 0.5 s, flash 10.9 s (dd 10.4 s), entry 2.9 s, down 11.0 s, read_log 0.8 s, raw_log 1.9 s
22:03:28     the panel painted 10 time(s) and put 8795904 px on the glass

22:03:28 [metal] the tests
22:03:28   [tcp] (client gone) snd_shift=9 rcv_shift=7 rcv_capacity=65535 rcv_wnd=65535 rcv_rtt=None rcv_mss=524 srtt=Some(16ms) cwnd=14280 smss=1428 | stack rto=0 loss_probe=0 loss_probe_recovery=0 retransmit_bytes=0 dsack=0 sack_recovery=0
22:03:28   [prof] passes=24 nic_ready=10 frames_rx=9 frames_tx=16 pipe_w=0 pipe_w_bytes=0 pipe_w_refused=0 pipe_r=2 pipe_r_empty=1 bridges=0 b0=15 b1=9 b2=0 b3_4=0 b5_8=0 b9_16=0 b17_64=0 b65=0 watches=1 submits=19 tx_calls=24 owed=0 empty_passes=4 cy_pass=2980417 cy_begin_pass=893695 cy_receive=236619 cy_poll_rx=7459 cy_rx_done=904 rx_done=9 cy_node_frame=71282 cy_node_settle=113034 cy_checksum=737 checksum_bytes=40 cy_ring_write=0 ring_write_bytes=0 cy_fire=100658 cy_transmit=219945 cy_card_tx=9898 cy_settle=829689 cy_watch=36502 cy_pipe_w=0 cy_pipe_r=435745 cy_wait=17670754887 cy_answers=557218 cy_bridge=11299 ooo_segs=0 hole_filled=0 sack_sent=0 dsack_sent=0 ack_segs=2 ack_bytes=0 ack_zero=2 ack_gap_ns=0 ack_gap_n=0 gap_lt100us=0 gap_100_300us=0 gap_300us_1ms=0 gap_1_3ms=0 gap_ge3ms=0 stretch_1_2=0 stretch_3_8=0 stretch_9_32=0 stretch_33_64=0 stretch_ge65=0 paces=10 pace_ns=300000 itr_units=1120 rdt_writes=9 cpu_ns=256785634 syscalls=177 syscall_ns=11584950912 runq_ns=0 wall_ns=11838990375
22:03:28   [tcp] (client gone) snd_shift=9 rcv_shift=7 rcv_capacity=65535 rcv_wnd=65535 rcv_rtt=None rcv_mss=524 srtt=Some(15ms) cwnd=14280 smss=1428 | stack rto=0 loss_probe=0 loss_probe_recovery=0 retransmit_bytes=0 dsack=0 sack_recovery=0
22:03:28   [prof] passes=6 nic_ready=2 frames_rx=3 frames_tx=4 pipe_w=0 pipe_w_bytes=0 pipe_w_refused=0 pipe_r=2 pipe_r_empty=1 bridges=0 b0=4 b1=1 b2=1 b3_4=0 b5_8=0 b9_16=0 b17_64=0 b65=0 watches=1 submits=8 tx_calls=6 owed=0 empty_passes=2 cy_pass=1016202 cy_begin_pass=137259 cy_receive=81597 cy_poll_rx=1938 cy_rx_done=219 rx_done=3 cy_node_frame=56936 cy_node_settle=5952 cy_checksum=573 checksum_bytes=104 cy_ring_write=0 ring_write_bytes=0 cy_fire=0 cy_transmit=59597 cy_card_tx=1953 cy_settle=550426 cy_watch=10607 cy_pipe_w=0 cy_pipe_r=351705 cy_wait=35956410 cy_answers=426080 cy_bridge=970 ooo_segs=0 hole_filled=0 sack_sent=0 dsack_sent=0 ack_segs=2 ack_bytes=0 ack_zero=2 ack_gap_ns=0 ack_gap_n=0 gap_lt100us=0 gap_100_300us=0 gap_300us_1ms=0 gap_1_3ms=0 gap_ge3ms=0 stretch_1_2=0 stretch_3_8=0 stretch_9_32=0 stretch_33_64=0 stretch_ge65=0 paces=2 pace_ns=1022187 itr_units=3696 rdt_writes=2 cpu_ns=1022871 syscalls=28 syscall_ns=15373195 runq_ns=0 wall_ns=15660524
22:03:28   [tcp] (client gone) snd_shift=9 rcv_shift=7 rcv_capacity=65535 rcv_wnd=65535 rcv_rtt=None rcv_mss=524 srtt=Some(15ms) cwnd=14280 smss=1428 | stack rto=0 loss_probe=0 loss_probe_recovery=0 retransmit_bytes=0 dsack=0 sack_recovery=0
22:03:28   [prof] passes=6 nic_ready=2 frames_rx=3 frames_tx=4 pipe_w=0 pipe_w_bytes=0 pipe_w_refused=0 pipe_r=2 pipe_r_empty=1 bridges=0 b0=4 b1=1 b2=1 b3_4=0 b5_8=0 b9_16=0 b17_64=0 b65=0 watches=2 submits=8 tx_calls=6 owed=0 empty_passes=2 cy_pass=654109 cy_begin_pass=43083 cy_receive=61634 cy_poll_rx=2368 cy_rx_done=181 rx_done=3 cy_node_frame=43474 cy_node_settle=2565 cy_checksum=863 checksum_bytes=104 cy_ring_write=0 ring_write_bytes=0 cy_fire=0 cy_transmit=39000 cy_card_tx=1521 cy_settle=443481 cy_watch=7110 cy_pipe_w=0 cy_pipe_r=4600 cy_wait=35019342 cy_answers=30741 cy_bridge=1189 ooo_segs=0 hole_filled=0 sack_sent=0 dsack_sent=0 ack_segs=2 ack_bytes=0 ack_zero=2 ack_gap_ns=0 ack_gap_n=0 gap_lt100us=0 gap_100_300us=0 gap_300us_1ms=0 gap_1_3ms=0 gap_ge3ms=0 stretch_1_2=0 stretch_3_8=0 stretch_9_32=0 stretch_33_64=0 stretch_ge65=0 paces=2 pace_ns=967500 itr_units=3696 rdt_writes=2 cpu_ns=770595 syscalls=28 syscall_ns=14806971 runq_ns=0 wall_ns=14949259
22:03:28   [tcp] (client gone) snd_shift=9 rcv_shift=7 rcv_capacity=65535 rcv_wnd=65535 rcv_rtt=None rcv_mss=524 srtt=Some(16ms) cwnd=14280 smss=1428 | stack rto=0 loss_probe=0 loss_probe_recovery=0 retransmit_bytes=0 dsack=0 sack_recovery=0
22:03:28   [prof] passes=6 nic_ready=2 frames_rx=3 frames_tx=4 pipe_w=0 pipe_w_bytes=0 pipe_w_refused=0 pipe_r=2 pipe_r_empty=1 bridges=0 b0=4 b1=1 b2=1 b3_4=0 b5_8=0 b9_16=0 b17_64=0 b65=0 watches=1 submits=8 tx_calls=6 owed=0 empty_passes=2 cy_pass=745317 cy_begin_pass=156349 cy_receive=144288 cy_poll_rx=2775 cy_rx_done=1046 rx_done=3 cy_node_frame=115357 cy_node_settle=9013 cy_checksum=1375 checksum_bytes=104 cy_ring_write=0 ring_write_bytes=0 cy_fire=0 cy_transmit=24057 cy_card_tx=945 cy_settle=365710 cy_watch=3390 cy_pipe_w=0 cy_pipe_r=265949 cy_wait=37225005 cy_answers=304918 cy_bridge=1733 ooo_segs=0 hole_filled=0 sack_sent=0 dsack_sent=0 ack_segs=2 ack_bytes=0 ack_zero=2 ack_gap_ns=0 ack_gap_n=0 gap_lt100us=0 gap_100_300us=0 gap_300us_1ms=0 gap_1_3ms=0 gap_ge3ms=0 stretch_1_2=0 stretch_3_8=0 stretch_9_32=0 stretch_33_64=0 stretch_ge65=0 paces=2 pace_ns=967500 itr_units=3696 rdt_writes=2 cpu_ns=770319 syscalls=27 syscall_ns=15755301 runq_ns=0 wall_ns=15978830
22:03:28   [tcp] (client gone) snd_shift=9 rcv_shift=7 rcv_capacity=65535 rcv_wnd=65535 rcv_rtt=None rcv_mss=524 srtt=Some(15ms) cwnd=14280 smss=1428 | stack rto=0 loss_probe=0 loss_probe_recovery=0 retransmit_bytes=0 dsack=0 sack_recovery=0
22:03:28   [prof] passes=6 nic_ready=1 frames_rx=3 frames_tx=4 pipe_w=0 pipe_w_bytes=0 pipe_w_refused=0 pipe_r=2 pipe_r_empty=1 bridges=0 b0=5 b1=0 b2=0 b3_4=1 b5_8=0 b9_16=0 b17_64=0 b65=0 watches=1 submits=7 tx_calls=6 owed=0 empty_passes=3 cy_pass=855105 cy_begin_pass=162026 cy_receive=47689 cy_poll_rx=1339 cy_rx_done=301 rx_done=3 cy_node_frame=29977 cy_node_settle=2895 cy_checksum=397 checksum_bytes=104 cy_ring_write=0 ring_write_bytes=0 cy_fire=0 cy_transmit=59330 cy_card_tx=1976 cy_settle=467238 cy_watch=5542 cy_pipe_w=0 cy_pipe_r=352598 cy_wait=34985246 cy_answers=426177 cy_bridge=1051 ooo_segs=0 hole_filled=0 sack_sent=0 dsack_sent=0 ack_segs=2 ack_bytes=0 ack_zero=2 ack_gap_ns=0 ack_gap_n=0 gap_lt100us=0 gap_100_300us=0 gap_300us_1ms=0 gap_1_3ms=0 gap_ge3ms=0 stretch_1_2=0 stretch_3_8=0 stretch_9_32=0 stretch_33_64=0 stretch_ge65=0 paces=1 pace_ns=992187 itr_units=3584 rdt_writes=1 cpu_ns=879585 syscalls=29 syscall_ns=14926310 runq_ns=0 wall_ns=15177065
22:03:28   [download] perf idle secs=2.000 cpus=8 tsc_hz=2419361856 aperf=70161113 app.cpu_ns=130415 app.runq_ns=0 app.syscall_ns=2000067083 app.syscalls=4 k.idle_exit_cycles=2035794 k.idle_exits=69 k.inbox_fires=8 k.inbox_looks=8 k.inbox_rearms=0 k.irq_cycles=306673 k.kicks=29 k.pipe_copy_bytes=832 k.pipe_lock_hold_cycles=102055 k.pipe_lock_spin_cycles=78162 k.pipe_lock_takes=540 k.pipe_read_copy_cycles=6361 k.pipe_write_copy_cycles=5180 k.switches=64 k.syscalls=132 mperf=114139392 stamp=38712711747
22:03:28   [tcp] (client gone) snd_shift=9 rcv_shift=7 rcv_capacity=65535 rcv_wnd=64658 rcv_rtt=Some(16ms) rcv_mss=1424 srtt=Some(15.528ms) cwnd=14280 smss=1428 | stack rto=0 loss_probe=0 loss_probe_recovery=0 retransmit_bytes=0 dsack=0 sack_recovery=0
22:03:28   [prof] passes=25 nic_ready=9 frames_rx=16 frames_tx=15 pipe_w=3 pipe_w_bytes=8191 pipe_w_refused=0 pipe_r=8 pipe_r_empty=4 bridges=3 b0=15 b1=7 b2=2 b3_4=0 b5_8=1 b9_16=0 b17_64=0 b65=0 watches=9 submits=21 tx_calls=25 owed=0 empty_passes=5 cy_pass=3194496 cy_begin_pass=647378 cy_receive=635978 cy_poll_rx=10803 cy_rx_done=1647 rx_done=16 cy_node_frame=149085 cy_node_settle=47388 cy_checksum=8640 checksum_bytes=8647 cy_ring_write=16526 ring_write_bytes=8710 cy_fire=62852 cy_transmit=191868 cy_card_tx=9144 cy_settle=901059 cy_watch=31097 cy_pipe_w=357585 cy_pipe_r=46985 cy_wait=5039754051 cy_answers=418079 cy_bridge=79384 ooo_segs=0 hole_filled=0 sack_sent=0 dsack_sent=0 ack_segs=6 ack_bytes=8191 ack_zero=4 ack_gap_ns=41407042 ack_gap_n=1 gap_lt100us=0 gap_100_300us=0 gap_300us_1ms=0 gap_1_3ms=0 gap_ge3ms=1 stretch_1_2=1 stretch_3_8=1 stretch_9_32=0 stretch_33_64=0 stretch_ge65=0 paces=10 pace_ns=6983312 itr_units=25424 rdt_writes=10 cpu_ns=2447129 syscalls=81 syscall_ns=2083949743 runq_ns=0 wall_ns=2084879819
22:03:28   [download] bench suite=TLS13_AES_128_GCM_SHA256 aead=aes128gcm aead_aperf_per_b=0.875 aead_tsc_per_b=0.507 sha_aperf_per_b=2.386 sha_tsc_per_b=1.536 memcpy_aperf_per_b=0.078 memcpy_tsc_per_b=0.050
22:03:28   [download] lan idle lan_ms=5.96/6.94/7.02/7.64 n=10
22:03:28   [tcp] (client gone) snd_shift=9 rcv_shift=7 rcv_capacity=4194304 rcv_wnd=4194304 rcv_rtt=Some(15.422995ms) rcv_mss=1424 srtt=Some(14.862ms) cwnd=14280 smss=1428 | stack rto=0 loss_probe=0 loss_probe_recovery=0 retransmit_bytes=0 dsack=0 sack_recovery=0
22:03:28   [prof] passes=4115 nic_ready=3994 frames_rx=121128 frames_tx=5804 pipe_w=3369 pipe_w_bytes=170676611 pipe_w_refused=1 pipe_r=10 pipe_r_empty=5 bridges=4 b0=60 b1=28 b2=8 b3_4=817 b5_8=77 b9_16=64 b17_64=3058 b65=3 watches=4061 submits=4127 tx_calls=4115 owed=0 empty_passes=41 cy_pass=839269895 cy_begin_pass=28238450 cy_receive=692702541 cy_poll_rx=9373999 cy_rx_done=5914849 rx_done=121128 cy_node_frame=519785543 cy_node_settle=49331651 cy_checksum=87959334 checksum_bytes=176277723 cy_ring_write=92905648 ring_write_bytes=170677123 cy_fire=0 cy_transmit=53877856 cy_card_tx=2531192 cy_settle=17044868 cy_watch=5263525 cy_pipe_w=55500546 cy_pipe_r=969286 cy_wait=6813767654 cy_answers=4449773 cy_bridge=932778 ooo_segs=2121 hole_filled=1744 sack_sent=2595 dsack_sent=10 ack_segs=5763 ack_bytes=170676612 ack_zero=2543 ack_gap_ns=1654168897 ack_gap_n=3219 gap_lt100us=46 gap_100_300us=63 gap_300us_1ms=3070 gap_1_3ms=23 gap_ge3ms=17 stretch_1_2=11 stretch_3_8=88 stretch_9_32=155 stretch_33_64=2958 stretch_ge65=8 paces=4055 pace_ns=1526611545 itr_units=5622656 rdt_writes=4059 cpu_ns=398530244 syscalls=11912 syscall_ns=2848889829 runq_ns=0 wall_ns=3168856785
22:03:28   [download] lan run=1 k=32 lan_ms=4.20/8.16/9.22/14.50 n=29
22:03:28   [download] whole bytes=170439044 sha256=1a9ee8caaa18a3e433fef93cea8a55dc1ebd478ed761b2fef69d4565f9d00e7f secs=1.613 mbps=845.4 rtt_ms=[16.5 15.7 14.8 16.1 15.2] busy=0.066 cpus=[0.026 0.002 0.237 0.003 0.002 0.006 0.248 0.003] cpu_s=0.851 cpu_ms_per_mb=5.00 tcp_ms=23.6 tls_ms=43.0 run=1 k=32
22:03:28   [download] perf run=1 k=32 bytes=170439044 secs=1.734 aperf=1724154046 app.cpu_ns=387107743 app.runq_ns=0 app.syscall_ns=1390463484 app.syscalls=3298 k.idle_exit_cycles=108273334 k.idle_exits=11143 k.inbox_fires=4028 k.inbox_looks=4060 k.inbox_rearms=1 k.irq_cycles=33768775 k.kicks=7110 k.pipe_copy_bytes=341357350 k.pipe_lock_hold_cycles=108661803 k.pipe_lock_spin_cycles=17229050 k.pipe_lock_takes=30665 k.pipe_read_copy_cycles=48835466 k.pipe_write_copy_cycles=32771914 k.switches=14298 k.syscalls=15336 mperf=2125511376 stamp=33563985679
22:03:28   [tcp] (client gone) snd_shift=9 rcv_shift=7 rcv_capacity=4194304 rcv_wnd=4194304 rcv_rtt=Some(12.831882ms) rcv_mss=1424 srtt=Some(15.585ms) cwnd=14280 smss=1428 | stack rto=0 loss_probe=0 loss_probe_recovery=0 retransmit_bytes=0 dsack=0 sack_recovery=0
22:03:28   [prof] passes=6211 nic_ready=6096 frames_rx=123062 frames_tx=9894 pipe_w=4387 pipe_w_bytes=170679383 pipe_w_refused=0 pipe_r=10 pipe_r_empty=5 bridges=4 b0=129 b1=57 b2=52 b3_4=1811 b5_8=481 b9_16=226 b17_64=3454 b65=1 watches=6194 submits=6233 tx_calls=6211 owed=0 empty_passes=108 cy_pass=998969146 cy_begin_pass=34997955 cy_receive=749848985 cy_poll_rx=10359316 cy_rx_done=6423477 rx_done=123062 cy_node_frame=553562668 cy_node_settle=53223963 cy_checksum=90857799 checksum_bytes=179093111 cy_ring_write=98130191 ring_write_bytes=170679895 cy_fire=0 cy_transmit=100794617 cy_card_tx=4318582 cy_settle=20085388 cy_watch=7917444 cy_pipe_w=62461448 cy_pipe_r=65085 cy_wait=4624885908 cy_answers=4312948 cy_bridge=1126463 ooo_segs=5071 hole_filled=797 sack_sent=5732 dsack_sent=33 ack_segs=9850 ack_bytes=170679383 ack_zero=5669 ack_gap_ns=2249491655 ack_gap_n=4180 gap_lt100us=49 gap_100_300us=89 gap_300us_1ms=3908 gap_1_3ms=83 gap_ge3ms=51 stretch_1_2=44 stretch_3_8=466 stretch_9_32=1823 stretch_33_64=1840 stretch_ge65=8 paces=6082 pace_ns=1805442677 itr_units=6340768 rdt_writes=6084 cpu_ns=478234891 syscalls=17128 syscall_ns=1945535132 runq_ns=0 wall_ns=2330597934
22:03:28   [download] lan run=2 k=32 lan_ms=2.83/5.95/8.43/12.43 n=40
22:03:28   [download] whole bytes=170439044 sha256=1a9ee8caaa18a3e433fef93cea8a55dc1ebd478ed761b2fef69d4565f9d00e7f secs=2.219 mbps=614.6 rtt_ms=[16.5 15.7 14.8 16.1 15.2] busy=0.058 cpus=[0.026 0.002 0.196 0.002 0.002 0.002 0.229 0.004] cpu_s=1.024 cpu_ms_per_mb=6.01 tcp_ms=23.1 tls_ms=41.0 run=2 k=32
22:03:28   [download] perf run=2 k=32 bytes=170439044 secs=2.298 aperf=1934320165 app.cpu_ns=428122430 app.runq_ns=1365382 app.syscall_ns=1923074204 app.syscalls=4304 k.idle_exit_cycles=142796386 k.idle_exits=16054 k.inbox_fires=6150 k.inbox_looks=6195 k.inbox_rearms=2 k.irq_cycles=46387524 k.kicks=9899 k.pipe_copy_bytes=341363834 k.pipe_lock_hold_cycles=128166296 k.pipe_lock_spin_cycles=13790752 k.pipe_lock_takes=40173 k.pipe_read_copy_cycles=53557383 k.pipe_write_copy_cycles=35688159 k.switches=19953 k.syscalls=21798 mperf=2502737760 stamp=44512634047
22:03:28   [tcp] (client gone) snd_shift=9 rcv_shift=7 rcv_capacity=4194304 rcv_wnd=4194304 rcv_rtt=Some(16.404599ms) rcv_mss=1424 srtt=Some(14.509ms) cwnd=14280 smss=1428 | stack rto=0 loss_probe=0 loss_probe_recovery=0 retransmit_bytes=0 dsack=0 sack_recovery=0
22:03:28   [prof] passes=4047 nic_ready=3954 frames_rx=121380 frames_tx=5912 pipe_w=3312 pipe_w_bytes=170679801 pipe_w_refused=0 pipe_r=10 pipe_r_empty=5 bridges=4 b0=55 b1=17 b2=27 b3_4=765 b5_8=169 b9_16=58 b17_64=2954 b65=2 watches=4030 submits=4061 tx_calls=4047 owed=0 empty_passes=42 cy_pass=847993604 cy_begin_pass=30380794 cy_receive=685902016 cy_poll_rx=9426351 cy_rx_done=5971521 rx_done=121380 cy_node_frame=513656083 cy_node_settle=50068483 cy_checksum=84386866 checksum_bytes=176663369 cy_ring_write=82851131 ring_write_bytes=170680313 cy_fire=0 cy_transmit=69850459 cy_card_tx=2807087 cy_settle=14143135 cy_watch=5290042 cy_pipe_w=54201193 cy_pipe_r=61341 cy_wait=3457259313 cy_answers=4647889 cy_bridge=1008298 ooo_segs=1767 hole_filled=2658 sack_sent=2852 dsack_sent=7 ack_segs=5878 ack_bytes=170679801 ack_zero=2715 ack_gap_ns=1735585229 ack_gap_n=3162 gap_lt100us=29 gap_100_300us=52 gap_300us_1ms=3030 gap_1_3ms=30 gap_ge3ms=21 stretch_1_2=15 stretch_3_8=139 stretch_9_32=148 stretch_33_64=2851 stretch_ge65=10 paces=3992 pace_ns=1573068522 itr_units=5702160 rdt_writes=3994 cpu_ns=404467849 syscalls=11656 syscall_ns=1459158993 runq_ns=0 wall_ns=1785161991
22:03:28   [download] lan run=3 k=32 lan_ms=2.80/8.66/10.57/11.73 n=30
22:03:28   [download] whole bytes=170439044 sha256=1a9ee8caaa18a3e433fef93cea8a55dc1ebd478ed761b2fef69d4565f9d00e7f secs=1.701 mbps=801.7 rtt_ms=[16.5 15.7 14.8 16.1 15.2] busy=0.064 cpus=[0.025 0.002 0.228 0.003 0.002 0.002 0.244 0.008] cpu_s=0.872 cpu_ms_per_mb=5.11 tcp_ms=21.5 tls_ms=40.5 run=3 k=32
22:03:28   [download] perf run=3 k=32 bytes=170439044 secs=1.803 aperf=1726263692 app.cpu_ns=391483594 app.runq_ns=0 app.syscall_ns=1454378684 app.syscalls=3232 k.idle_exit_cycles=112749518 k.idle_exits=10866 k.inbox_fires=4007 k.inbox_looks=4042 k.inbox_rearms=7 k.irq_cycles=34020429 k.kicks=6847 k.pipe_copy_bytes=341363830 k.pipe_lock_hold_cycles=110177676 k.pipe_lock_spin_cycles=16509046 k.pipe_lock_takes=30243 k.pipe_read_copy_cycles=49363082 k.pipe_write_copy_cycles=32904082 k.switches=13772 k.syscalls=15182 mperf=2158558680 stamp=34932249789
22:03:28   [tcp] (client gone) snd_shift=9 rcv_shift=7 rcv_capacity=4194304 rcv_wnd=4194304 rcv_rtt=Some(14.662952ms) rcv_mss=1424 srtt=Some(14.68ms) cwnd=14280 smss=1428 | stack rto=0 loss_probe=0 loss_probe_recovery=0 retransmit_bytes=0 dsack=0 sack_recovery=0
22:03:28   [prof] passes=5024 nic_ready=4907 frames_rx=122841 frames_tx=7879 pipe_w=3924 pipe_w_bytes=170679031 pipe_w_refused=0 pipe_r=10 pipe_r_empty=5 bridges=4 b0=81 b1=37 b2=56 b3_4=1069 b5_8=331 b9_16=99 b17_64=3350 b65=1 watches=5007 submits=5032 tx_calls=5024 owed=0 empty_passes=63 cy_pass=912836287 cy_begin_pass=25113802 cy_receive=721553860 cy_poll_rx=9535764 cy_rx_done=6021302 rx_done=122841 cy_node_frame=538728743 cy_node_settle=49832161 cy_checksum=94896273 checksum_bytes=178775415 cy_ring_write=92736754 ring_write_bytes=170679543 cy_fire=0 cy_transmit=87979574 cy_card_tx=3813747 cy_settle=17965702 cy_watch=6457302 cy_pipe_w=61042471 cy_pipe_r=61253 cy_wait=4084395156 cy_answers=3082300 cy_bridge=807834 ooo_segs=2008 hole_filled=4714 sack_sent=4404 dsack_sent=26 ack_segs=7839 ack_bytes=170679031 ack_zero=4071 ack_gap_ns=2002213511 ack_gap_n=3767 gap_lt100us=63 gap_100_300us=63 gap_300us_1ms=3555 gap_1_3ms=45 gap_ge3ms=41 stretch_1_2=40 stretch_3_8=278 stretch_9_32=301 stretch_33_64=3145 stretch_ge65=4 paces=4943 pace_ns=1705218903 itr_units=5996464 rdt_writes=4946 cpu_ns=427445325 syscalls=14261 syscall_ns=1720291746 runq_ns=0 wall_ns=2070187112
22:03:28   [download] lan run=4 k=32 lan_ms=2.98/7.10/8.96/13.34 n=35
22:03:28   [download] whole bytes=170439044 sha256=1a9ee8caaa18a3e433fef93cea8a55dc1ebd478ed761b2fef69d4565f9d00e7f secs=1.968 mbps=692.9 rtt_ms=[16.5 15.7 14.8 16.1 15.2] busy=0.059 cpus=[0.030 0.002 0.205 0.002 0.002 0.002 0.223 0.004] cpu_s=0.926 cpu_ms_per_mb=5.43 tcp_ms=21.0 tls_ms=38.9 run=4 k=32
22:03:28   [download] perf run=4 k=32 bytes=170439044 secs=2.048 aperf=1835285465 app.cpu_ns=398404698 app.runq_ns=0 app.syscall_ns=1696123900 app.syscalls=3830 k.idle_exit_cycles=123519830 k.idle_exits=13254 k.inbox_fires=4956 k.inbox_looks=4995 k.inbox_rearms=1 k.irq_cycles=39182325 k.kicks=8303 k.pipe_copy_bytes=341362710 k.pipe_lock_hold_cycles=117422982 k.pipe_lock_spin_cycles=19311806 k.pipe_lock_takes=35721 k.pipe_read_copy_cycles=49947857 k.pipe_write_copy_cycles=33939512 k.switches=16688 k.syscalls=18408 mperf=2264996808 stamp=39664547129
22:03:28   [tcp] (client gone) snd_shift=9 rcv_shift=7 rcv_capacity=4194304 rcv_wnd=4194304 rcv_rtt=Some(18.23428ms) rcv_mss=1424 srtt=Some(14.574ms) cwnd=14280 smss=1428 | stack rto=0 loss_probe=0 loss_probe_recovery=0 retransmit_bytes=0 dsack=0 sack_recovery=0
22:03:28   [prof] passes=3508 nic_ready=3420 frames_rx=121127 frames_tx=5034 pipe_w=2855 pipe_w_bytes=170679097 pipe_w_refused=0 pipe_r=10 pipe_r_empty=5 bridges=4 b0=41 b1=12 b2=15 b3_4=721 b5_8=80 b9_16=47 b17_64=2591 b65=1 watches=3493 submits=3518 tx_calls=3508 owed=0 empty_passes=32 cy_pass=821883837 cy_begin_pass=36134204 cy_receive=676017274 cy_poll_rx=9256167 cy_rx_done=5868563 rx_done=121127 cy_node_frame=511999574 cy_node_settle=49398715 cy_checksum=85763646 checksum_bytes=176294393 cy_ring_write=87368282 ring_write_bytes=170679609 cy_fire=0 cy_transmit=47895910 cy_card_tx=2243619 cy_settle=12922748 cy_watch=4550147 cy_pipe_w=50957810 cy_pipe_r=61899 cy_wait=3279975791 cy_answers=5923901 cy_bridge=1227983 ooo_segs=1743 hole_filled=1698 sack_sent=2313 dsack_sent=5 ack_segs=5003 ack_bytes=170679097 ack_zero=2265 ack_gap_ns=1653114047 ack_gap_n=2737 gap_lt100us=35 gap_100_300us=62 gap_300us_1ms=2603 gap_1_3ms=21 gap_ge3ms=16 stretch_1_2=12 stretch_3_8=95 stretch_9_32=130 stretch_33_64=2493 stretch_ge65=8 paces=3467 pace_ns=1495376809 itr_units=5557072 rdt_writes=3467 cpu_ns=404893043 syscalls=10101 syscall_ns=1384385607 runq_ns=0 wall_ns=1702132983
22:03:28   [download] lan run=5 k=32 lan_ms=3.75/11.18/12.21/13.30 n=28
22:03:28   [download] whole bytes=170439044 sha256=1a9ee8caaa18a3e433fef93cea8a55dc1ebd478ed761b2fef69d4565f9d00e7f secs=1.621 mbps=840.9 rtt_ms=[16.5 15.7 14.8 16.1 15.2] busy=0.064 cpus=[0.022 0.003 0.232 0.000 0.000 0.000 0.251 0.003] cpu_s=0.829 cpu_ms_per_mb=4.86 tcp_ms=22.6 tls_ms=41.1 run=5 k=32
22:03:28   [download] perf run=5 k=32 bytes=170439044 secs=1.748 aperf=1630324793 app.cpu_ns=388523900 app.runq_ns=0 app.syscall_ns=1399869811 app.syscalls=2809 k.idle_exit_cycles=122347066 k.idle_exits=9563 k.inbox_fires=3468 k.inbox_looks=3501 k.inbox_rearms=3 k.irq_cycles=34969634 k.kicks=6081 k.pipe_copy_bytes=341362254 k.pipe_lock_hold_cycles=107375021 k.pipe_lock_spin_cycles=16241089 k.pipe_lock_takes=26293 k.pipe_read_copy_cycles=48655773 k.pipe_write_copy_cycles=31976029 k.switches=12222 k.syscalls=13202 mperf=2089107624 stamp=33870847227
22:03:28   [tcp] (client gone) snd_shift=9 rcv_shift=7 rcv_capacity=3957268 rcv_wnd=3957248 rcv_rtt=Some(15.033446ms) rcv_mss=1424 srtt=Some(15.255ms) cwnd=14280 smss=1428 | stack rto=0 loss_probe=0 loss_probe_recovery=0 retransmit_bytes=0 dsack=0 sack_recovery=0
22:03:28   [prof] passes=4799 nic_ready=4703 frames_rx=122444 frames_tx=7565 pipe_w=3500 pipe_w_bytes=170679009 pipe_w_refused=0 pipe_r=10 pipe_r_empty=5 bridges=4 b0=49 b1=31 b2=29 b3_4=1267 b5_8=201 b9_16=68 b17_64=3152 b65=2 watches=4781 submits=4816 tx_calls=4799 owed=0 empty_passes=38 cy_pass=870285746 cy_begin_pass=27872937 cy_receive=691778120 cy_poll_rx=9527402 cy_rx_done=6045103 rx_done=122444 cy_node_frame=515690883 cy_node_settle=50136713 cy_checksum=91386921 checksum_bytes=178203137 cy_ring_write=80726651 ring_write_bytes=170679521 cy_fire=0 cy_transmit=79928229 cy_card_tx=3367088 cy_settle=15572229 cy_watch=5909512 cy_pipe_w=55816243 cy_pipe_r=62558 cy_wait=3726076228 cy_answers=3536639 cy_bridge=880749 ooo_segs=2991 hole_filled=2219 sack_sent=4208 dsack_sent=8 ack_segs=7529 ack_bytes=170679009 ack_zero=4135 ack_gap_ns=1806309914 ack_gap_n=3393 gap_lt100us=37 gap_100_300us=63 gap_300us_1ms=3238 gap_1_3ms=24 gap_ge3ms=31 stretch_1_2=16 stretch_3_8=161 stretch_9_32=188 stretch_33_64=3019 stretch_ge65=10 paces=4750 pace_ns=1596868340 itr_units=5776480 rdt_writes=4753 cpu_ns=410887618 syscalls=13361 syscall_ns=1569727620 runq_ns=0 wall_ns=1904825966
22:03:28   [download] lan run=6 k=32 lan_ms=2.89/8.08/9.39/14.81 n=32
22:03:28   [download] whole bytes=170439044 sha256=1a9ee8caaa18a3e433fef93cea8a55dc1ebd478ed761b2fef69d4565f9d00e7f secs=1.770 mbps=770.2 rtt_ms=[16.5 15.7 14.8 16.1 15.2] busy=0.062 cpus=[0.025 0.002 0.226 0.002 0.002 0.002 0.234 0.004] cpu_s=0.880 cpu_ms_per_mb=5.16 tcp_ms=23.9 tls_ms=42.4 run=6 k=32
22:03:28   [download] perf run=6 k=32 bytes=170439044 secs=1.909 aperf=1799482509 app.cpu_ns=399438576 app.runq_ns=1186112 app.syscall_ns=1552900902 app.syscalls=3481 k.idle_exit_cycles=110644405 k.idle_exits=12510 k.inbox_fires=4751 k.inbox_looks=4787 k.inbox_rearms=2 k.irq_cycles=35946929 k.kicks=7762 k.pipe_copy_bytes=341362414 k.pipe_lock_hold_cycles=114790432 k.pipe_lock_spin_cycles=15305043 k.pipe_lock_takes=32386 k.pipe_read_copy_cycles=49369709 k.pipe_write_copy_cycles=33595771 k.switches=15692 k.syscalls=17144 mperf=2219947080 stamp=36972805609
netperf: idle 2.000 s on 8 cpus, tsc 2.419 GHz
netperf: idle rates: C0 23.59 ms/s, 35.08 Mcyc/s aperf, eff 1.487 GHz
netperf: bench suite=TLS13_AES_128_GCM_SHA256 aead=aes128gcm aead_aperf_per_b=0.875 aead_tsc_per_b=0.507 sha_aperf_per_b=2.386 sha_tsc_per_b=1.536 memcpy_aperf_per_b=0.078 memcpy_tsc_per_b=0.050
netperf: perf run=1 k=32 bytes=170439044 secs=1.734 aperf=1724154046 app.cpu_ns=387107743 app.runq_ns=0 app.syscall_ns=1390463484 app.syscalls=3298 k.idle_exit_cycles=108273334 k.idle_exits=11143 k.inbox_fires=4028 k.inbox_looks=4060 k.inbox_rearms=1 k.irq_cycles=33768775 k.kicks=7110 k.pipe_copy_bytes=341357350 k.pipe_lock_hold_cycles=108661803 k.pipe_lock_spin_cycles=17229050 k.pipe_lock_takes=30665 k.pipe_read_copy_cycles=48835466 k.pipe_write_copy_cycles=32771914 k.switches=14298 k.syscalls=15336 mperf=2125511376 stamp=33563985679
netperf: run 1 per MB (170.44 MB in 1.734 s, 786.3 Mb/s)
  M  system C0 (sum mperf / tsc_hz)                          5.155 ms
  M  system cycles (sum aperf)                              10.116 Mcyc
  M  system effective clock (aperf / mperf)                  1.963 GHz
  D  system C0 less the idle window's rate                   4.915 ms
  D  system cycles less the idle window's rate               9.759 Mcyc
  M  app cpu (its own accounting)                            2.271 ms
  D  app cycles (cpu x effective clock)                      4.457 Mcyc
  M  app syscalls                                           19.350 /MB
  M  app time in syscalls (its waits included)               8.158 ms
  M  app runqueue wait                                       0.000 ms
  D  app TLS decrypt (aead bench x bytes)                    0.875 Mcyc
  D  app SHA-256 (bench x bytes)                             2.386 Mcyc
  D  app copies (3 x memcpy bench x bytes)                   0.234 Mcyc
  D  app syscalls (time x effective clock)                  16.010 Mcyc
  D  app rest (cycles less the four above)                 -15.048 Mcyc
  M  netstack cpu (its own accounting)                       2.338 ms
  D  netstack cycles (cpu x effective clock)                 4.589 Mcyc
  M  netstack time in syscalls (its waits included)         16.715 ms
  M  netstack passes                                        24.144 /MB
  M  netstack nic_ready                                     23.434 /MB
  M  netstack frames_rx                                    710.682 /MB
  M  netstack frames_tx                                     34.053 /MB
  M  netstack pipe_w                                        19.767 /MB
  M  netstack pipe_w_bytes                             1001393.853 /MB
  M  netstack pipe_w_refused                                 0.006 /MB
  M  netstack pipe_r                                         0.059 /MB
  M  netstack pipe_r_empty                                   0.029 /MB
  M  netstack bridges                                        0.023 /MB
  M  netstack b0                                             0.352 /MB
  M  netstack b1                                             0.164 /MB
  M  netstack b2                                             0.047 /MB
  M  netstack b3_4                                           4.794 /MB
  M  netstack b5_8                                           0.452 /MB
  M  netstack b9_16                                          0.376 /MB
  M  netstack b17_64                                        17.942 /MB
  M  netstack b65                                            0.018 /MB
  M  netstack watches                                       23.827 /MB
  M  netstack submits                                       24.214 /MB
  M  netstack tx_calls                                      24.144 /MB
  M  netstack owed                                           0.000 /MB
  M  netstack empty_passes                                   0.241 /MB
  M  netstack cy_pass (tsc)                                  2.035 ms
  M  netstack cy_begin_pass (tsc)                            0.068 ms
  M  netstack cy_receive (tsc)                               1.680 ms
  M  netstack cy_poll_rx (tsc)                               0.023 ms
  M  netstack cy_rx_done (tsc)                               0.014 ms
  M  netstack rx_done                                      710.682 /MB
  M  netstack cy_node_frame (tsc)                            1.261 ms
  M  netstack cy_node_settle (tsc)                           0.120 ms
  M  netstack cy_checksum (tsc)                              0.213 ms
  M  netstack checksum_bytes                           1034256.699 /MB
  M  netstack cy_ring_write (tsc)                            0.225 ms
  M  netstack ring_write_bytes                         1001396.857 /MB
  M  netstack cy_fire (tsc)                                  0.000 ms
  M  netstack cy_transmit (tsc)                              0.131 ms
  M  netstack cy_card_tx (tsc)                               0.006 ms
  M  netstack cy_settle (tsc)                                0.041 ms
  M  netstack cy_watch (tsc)                                 0.013 ms
  M  netstack cy_pipe_w (tsc)                                0.135 ms
  M  netstack cy_pipe_r (tsc)                                0.002 ms
  M  netstack cy_wait (tsc)                                 16.524 ms
  M  netstack cy_answers (tsc)                               0.011 ms
  M  netstack cy_bridge (tsc)                                0.002 ms
  M  netstack ooo_segs                                      12.444 /MB
  M  netstack hole_filled                                   10.232 /MB
  M  netstack sack_sent                                     15.225 /MB
  M  netstack dsack_sent                                     0.059 /MB
  M  netstack ack_segs                                      33.813 /MB
  M  netstack ack_bytes                                1001393.859 /MB
  M  netstack ack_zero                                      14.920 /MB
  M  netstack ack_gap_ns                               9705340.151 /MB
  M  netstack ack_gap_n                                     18.887 /MB
  M  netstack gap_lt100us                                    0.270 /MB
  M  netstack gap_100_300us                                  0.370 /MB
  M  netstack gap_300us_1ms                                 18.012 /MB
  M  netstack gap_1_3ms                                      0.135 /MB
  M  netstack gap_ge3ms                                      0.100 /MB
  M  netstack stretch_1_2                                    0.065 /MB
  M  netstack stretch_3_8                                    0.516 /MB
  M  netstack stretch_9_32                                   0.909 /MB
  M  netstack stretch_33_64                                 17.355 /MB
  M  netstack stretch_ge65                                   0.047 /MB
  M  netstack paces                                         23.791 /MB
  M  netstack pace_ns                                  8956935.624 /MB
  M  netstack itr_units                                  32989.249 /MB
  M  netstack rdt_writes                                    23.815 /MB
  M  netstack syscalls                                      69.890 /MB
  D  ack gap, mean (ack-moving segments)                   513.877 us
  D  bytes acknowledged per ack-moving segment           53005.159 B
  D  cadence asked, mean                                   376.476 us
  D  ITR applied, mean                                     354.969 us
  D  kernel outside both tasks (busy less app, netstack)        0.713 Mcyc
  M  kernel idle_exit_cycles (tsc)                           0.263 ms
  M  kernel idle_exits                                      65.378 /MB
  M  kernel inbox_fires                                     23.633 /MB
  M  kernel inbox_looks                                     23.821 /MB
  M  kernel inbox_rearms                                     0.006 /MB
  M  kernel irq_cycles (tsc)                                 0.082 ms
  M  kernel kicks                                           41.716 /MB
  M  kernel pipe_copy_bytes                            2002811.926 /MB
  M  kernel pipe_lock_hold_cycles (tsc)                      0.264 ms
  M  kernel pipe_lock_spin_cycles (tsc)                      0.042 ms
  M  kernel pipe_lock_takes                                179.918 /MB
  M  kernel pipe_read_copy_cycles (tsc)                      0.118 ms
  M  kernel pipe_write_copy_cycles (tsc)                     0.079 ms
  M  kernel switches                                        83.889 /MB
  M  kernel syscalls                                        89.979 /MB
netperf: perf run=2 k=32 bytes=170439044 secs=2.298 aperf=1934320165 app.cpu_ns=428122430 app.runq_ns=1365382 app.syscall_ns=1923074204 app.syscalls=4304 k.idle_exit_cycles=142796386 k.idle_exits=16054 k.inbox_fires=6150 k.inbox_looks=6195 k.inbox_rearms=2 k.irq_cycles=46387524 k.kicks=9899 k.pipe_copy_bytes=341363834 k.pipe_lock_hold_cycles=128166296 k.pipe_lock_spin_cycles=13790752 k.pipe_lock_takes=40173 k.pipe_read_copy_cycles=53557383 k.pipe_write_copy_cycles=35688159 k.switches=19953 k.syscalls=21798 mperf=2502737760 stamp=44512634047
netperf: run 2 per MB (170.44 MB in 2.298 s, 593.3 Mb/s)
  M  system C0 (sum mperf / tsc_hz)                          6.069 ms
  M  system cycles (sum aperf)                              11.349 Mcyc
  M  system effective clock (aperf / mperf)                  1.870 GHz
  D  system C0 less the idle window's rate                   5.751 ms
  D  system cycles less the idle window's rate              10.876 Mcyc
  M  app cpu (its own accounting)                            2.512 ms
  D  app cycles (cpu x effective clock)                      4.697 Mcyc
  M  app syscalls                                           25.252 /MB
  M  app time in syscalls (its waits included)              11.283 ms
  M  app runqueue wait                                       0.008 ms
  D  app TLS decrypt (aead bench x bytes)                    0.875 Mcyc
  D  app SHA-256 (bench x bytes)                             2.386 Mcyc
  D  app copies (3 x memcpy bench x bytes)                   0.234 Mcyc
  D  app syscalls (time x effective clock)                  21.098 Mcyc
  D  app rest (cycles less the four above)                 -19.896 Mcyc
  M  netstack cpu (its own accounting)                       2.806 ms
  D  netstack cycles (cpu x effective clock)                 5.247 Mcyc
  M  netstack time in syscalls (its waits included)         11.415 ms
  M  netstack passes                                        36.441 /MB
  M  netstack nic_ready                                     35.766 /MB
  M  netstack frames_rx                                    722.029 /MB
  M  netstack frames_tx                                     58.050 /MB
  M  netstack pipe_w                                        25.739 /MB
  M  netstack pipe_w_bytes                             1001410.117 /MB
  M  netstack pipe_w_refused                                 0.000 /MB
  M  netstack pipe_r                                         0.059 /MB
  M  netstack pipe_r_empty                                   0.029 /MB
  M  netstack bridges                                        0.023 /MB
  M  netstack b0                                             0.757 /MB
  M  netstack b1                                             0.334 /MB
  M  netstack b2                                             0.305 /MB
  M  netstack b3_4                                          10.625 /MB
  M  netstack b5_8                                           2.822 /MB
  M  netstack b9_16                                          1.326 /MB
  M  netstack b17_64                                        20.265 /MB
  M  netstack b65                                            0.006 /MB
  M  netstack watches                                       36.341 /MB
  M  netstack submits                                       36.570 /MB
  M  netstack tx_calls                                      36.441 /MB
  M  netstack owed                                           0.000 /MB
  M  netstack empty_passes                                   0.634 /MB
  M  netstack cy_pass (tsc)                                  2.423 ms
  M  netstack cy_begin_pass (tsc)                            0.085 ms
  M  netstack cy_receive (tsc)                               1.818 ms
  M  netstack cy_poll_rx (tsc)                               0.025 ms
  M  netstack cy_rx_done (tsc)                               0.016 ms
  M  netstack rx_done                                      722.029 /MB
  M  netstack cy_node_frame (tsc)                            1.342 ms
  M  netstack cy_node_settle (tsc)                           0.129 ms
  M  netstack cy_checksum (tsc)                              0.220 ms
  M  netstack checksum_bytes                           1050775.144 /MB
  M  netstack cy_ring_write (tsc)                            0.238 ms
  M  netstack ring_write_bytes                         1001413.121 /MB
  M  netstack cy_fire (tsc)                                  0.000 ms
  M  netstack cy_transmit (tsc)                              0.244 ms
  M  netstack cy_card_tx (tsc)                               0.010 ms
  M  netstack cy_settle (tsc)                                0.049 ms
  M  netstack cy_watch (tsc)                                 0.019 ms
  M  netstack cy_pipe_w (tsc)                                0.151 ms
  M  netstack cy_pipe_r (tsc)                                0.000 ms
  M  netstack cy_wait (tsc)                                 11.216 ms
  M  netstack cy_answers (tsc)                               0.010 ms
  M  netstack cy_bridge (tsc)                                0.003 ms
  M  netstack ooo_segs                                      29.753 /MB
  M  netstack hole_filled                                    4.676 /MB
  M  netstack sack_sent                                     33.631 /MB
  M  netstack dsack_sent                                     0.194 /MB
  M  netstack ack_segs                                      57.792 /MB
  M  netstack ack_bytes                                1001410.117 /MB
  M  netstack ack_zero                                      33.261 /MB
  M  netstack ack_gap_ns                              13198217.980 /MB
  M  netstack ack_gap_n                                     24.525 /MB
  M  netstack gap_lt100us                                    0.287 /MB
  M  netstack gap_100_300us                                  0.522 /MB
  M  netstack gap_300us_1ms                                 22.929 /MB
  M  netstack gap_1_3ms                                      0.487 /MB
  M  netstack gap_ge3ms                                      0.299 /MB
  M  netstack stretch_1_2                                    0.258 /MB
  M  netstack stretch_3_8                                    2.734 /MB
  M  netstack stretch_9_32                                  10.696 /MB
  M  netstack stretch_33_64                                 10.796 /MB
  M  netstack stretch_ge65                                   0.047 /MB
  M  netstack paces                                         35.684 /MB
  M  netstack pace_ns                                 10592893.709 /MB
  M  netstack itr_units                                  37202.556 /MB
  M  netstack rdt_writes                                    35.696 /MB
  M  netstack syscalls                                     100.493 /MB
  D  ack gap, mean (ack-moving segments)                   538.156 us
  D  bytes acknowledged per ack-moving segment           40822.622 B
  D  cadence asked, mean                                   296.850 us
  D  ITR applied, mean                                     266.892 us
  D  kernel outside both tasks (busy less app, netstack)        0.932 Mcyc
  M  kernel idle_exit_cycles (tsc)                           0.346 ms
  M  kernel idle_exits                                      94.192 /MB
  M  kernel inbox_fires                                     36.083 /MB
  M  kernel inbox_looks                                     36.347 /MB
  M  kernel inbox_rearms                                     0.012 /MB
  M  kernel irq_cycles (tsc)                                 0.112 ms
  M  kernel kicks                                           58.079 /MB
  M  kernel pipe_copy_bytes                            2002849.969 /MB
  M  kernel pipe_lock_hold_cycles (tsc)                      0.311 ms
  M  kernel pipe_lock_spin_cycles (tsc)                      0.033 ms
  M  kernel pipe_lock_takes                                235.703 /MB
  M  kernel pipe_read_copy_cycles (tsc)                      0.130 ms
  M  kernel pipe_write_copy_cycles (tsc)                     0.087 ms
  M  kernel switches                                       117.068 /MB
  M  kernel syscalls                                       127.893 /MB
netperf: perf run=3 k=32 bytes=170439044 secs=1.803 aperf=1726263692 app.cpu_ns=391483594 app.runq_ns=0 app.syscall_ns=1454378684 app.syscalls=3232 k.idle_exit_cycles=112749518 k.idle_exits=10866 k.inbox_fires=4007 k.inbox_looks=4042 k.inbox_rearms=7 k.irq_cycles=34020429 k.kicks=6847 k.pipe_copy_bytes=341363830 k.pipe_lock_hold_cycles=110177676 k.pipe_lock_spin_cycles=16509046 k.pipe_lock_takes=30243 k.pipe_read_copy_cycles=49363082 k.pipe_write_copy_cycles=32904082 k.switches=13772 k.syscalls=15182 mperf=2158558680 stamp=34932249789
netperf: run 3 per MB (170.44 MB in 1.803 s, 756.2 Mb/s)
  M  system C0 (sum mperf / tsc_hz)                          5.235 ms
  M  system cycles (sum aperf)                              10.128 Mcyc
  M  system effective clock (aperf / mperf)                  1.935 GHz
  D  system C0 less the idle window's rate                   4.985 ms
  D  system cycles less the idle window's rate               9.757 Mcyc
  M  app cpu (its own accounting)                            2.297 ms
  D  app cycles (cpu x effective clock)                      4.444 Mcyc
  M  app syscalls                                           18.963 /MB
  M  app time in syscalls (its waits included)               8.533 ms
  M  app runqueue wait                                       0.000 ms
  D  app TLS decrypt (aead bench x bytes)                    0.875 Mcyc
  D  app SHA-256 (bench x bytes)                             2.386 Mcyc
  D  app copies (3 x memcpy bench x bytes)                   0.234 Mcyc
  D  app syscalls (time x effective clock)                  16.510 Mcyc
  D  app rest (cycles less the four above)                 -15.561 Mcyc
  M  netstack cpu (its own accounting)                       2.373 ms
  D  netstack cycles (cpu x effective clock)                 4.592 Mcyc
  M  netstack time in syscalls (its waits included)          8.561 ms
  M  netstack passes                                        23.745 /MB
  M  netstack nic_ready                                     23.199 /MB
  M  netstack frames_rx                                    712.161 /MB
  M  netstack frames_tx                                     34.687 /MB
  M  netstack pipe_w                                        19.432 /MB
  M  netstack pipe_w_bytes                             1001412.570 /MB
  M  netstack pipe_w_refused                                 0.000 /MB
  M  netstack pipe_r                                         0.059 /MB
  M  netstack pipe_r_empty                                   0.029 /MB
  M  netstack bridges                                        0.023 /MB
  M  netstack b0                                             0.323 /MB
  M  netstack b1                                             0.100 /MB
  M  netstack b2                                             0.158 /MB
  M  netstack b3_4                                           4.488 /MB
  M  netstack b5_8                                           0.992 /MB
  M  netstack b9_16                                          0.340 /MB
  M  netstack b17_64                                        17.332 /MB
  M  netstack b65                                            0.012 /MB
  M  netstack watches                                       23.645 /MB
  M  netstack submits                                       23.827 /MB
  M  netstack tx_calls                                      23.745 /MB
  M  netstack owed                                           0.000 /MB
  M  netstack empty_passes                                   0.246 /MB
  M  netstack cy_pass (tsc)                                  2.056 ms
  M  netstack cy_begin_pass (tsc)                            0.074 ms
  M  netstack cy_receive (tsc)                               1.663 ms
  M  netstack cy_poll_rx (tsc)                               0.023 ms
  M  netstack cy_rx_done (tsc)                               0.014 ms
  M  netstack rx_done                                      712.161 /MB
  M  netstack cy_node_frame (tsc)                            1.246 ms
  M  netstack cy_node_settle (tsc)                           0.121 ms
  M  netstack cy_checksum (tsc)                              0.205 ms
  M  netstack checksum_bytes                           1036519.361 /MB
  M  netstack cy_ring_write (tsc)                            0.201 ms
  M  netstack ring_write_bytes                         1001415.574 /MB
  M  netstack cy_fire (tsc)                                  0.000 ms
  M  netstack cy_transmit (tsc)                              0.169 ms
  M  netstack cy_card_tx (tsc)                               0.007 ms
  M  netstack cy_settle (tsc)                                0.034 ms
  M  netstack cy_watch (tsc)                                 0.013 ms
  M  netstack cy_pipe_w (tsc)                                0.131 ms
  M  netstack cy_pipe_r (tsc)                                0.000 ms
  M  netstack cy_wait (tsc)                                  8.384 ms
  M  netstack cy_answers (tsc)                               0.011 ms
  M  netstack cy_bridge (tsc)                                0.002 ms
  M  netstack ooo_segs                                      10.367 /MB
  M  netstack hole_filled                                   15.595 /MB
  M  netstack sack_sent                                     16.733 /MB
  M  netstack dsack_sent                                     0.041 /MB
  M  netstack ack_segs                                      34.487 /MB
  M  netstack ack_bytes                                1001412.570 /MB
  M  netstack ack_zero                                      15.929 /MB
  M  netstack ack_gap_ns                              10183026.074 /MB
  M  netstack ack_gap_n                                     18.552 /MB
  M  netstack gap_lt100us                                    0.170 /MB
  M  netstack gap_100_300us                                  0.305 /MB
  M  netstack gap_300us_1ms                                 17.778 /MB
  M  netstack gap_1_3ms                                      0.176 /MB
  M  netstack gap_ge3ms                                      0.123 /MB
  M  netstack stretch_1_2                                    0.088 /MB
  M  netstack stretch_3_8                                    0.816 /MB
  M  netstack stretch_9_32                                   0.868 /MB
  M  netstack stretch_33_64                                 16.727 /MB
  M  netstack stretch_ge65                                   0.059 /MB
  M  netstack paces                                         23.422 /MB
  M  netstack pace_ns                                  9229508.011 /MB
  M  netstack itr_units                                  33455.715 /MB
  M  netstack rdt_writes                                    23.434 /MB
  M  netstack syscalls                                      68.388 /MB
  D  ack gap, mean (ack-moving segments)                   548.888 us
  D  bytes acknowledged per ack-moving segment           53961.366 B
  D  cadence asked, mean                                   394.055 us
  D  ITR applied, mean                                     365.670 us
  D  kernel outside both tasks (busy less app, netstack)        0.722 Mcyc
  M  kernel idle_exit_cycles (tsc)                           0.273 ms
  M  kernel idle_exits                                      63.753 /MB
  M  kernel inbox_fires                                     23.510 /MB
  M  kernel inbox_looks                                     23.715 /MB
  M  kernel inbox_rearms                                     0.041 /MB
  M  kernel irq_cycles (tsc)                                 0.083 ms
  M  kernel kicks                                           40.173 /MB
  M  kernel pipe_copy_bytes                            2002849.946 /MB
  M  kernel pipe_lock_hold_cycles (tsc)                      0.267 ms
  M  kernel pipe_lock_spin_cycles (tsc)                      0.040 ms
  M  kernel pipe_lock_takes                                177.442 /MB
  M  kernel pipe_read_copy_cycles (tsc)                      0.120 ms
  M  kernel pipe_write_copy_cycles (tsc)                     0.080 ms
  M  kernel switches                                        80.803 /MB
  M  kernel syscalls                                        89.076 /MB

@Japabu

Japabu commented Oct 11, 2026

Copy link
Copy Markdown
Collaborator Author

The scout judge log, masked, part 2 of 2 (lines 389-722 of 722)

netperf: perf run=4 k=32 bytes=170439044 secs=2.048 aperf=1835285465 app.cpu_ns=398404698 app.runq_ns=0 app.syscall_ns=1696123900 app.syscalls=3830 k.idle_exit_cycles=123519830 k.idle_exits=13254 k.inbox_fires=4956 k.inbox_looks=4995 k.inbox_rearms=1 k.irq_cycles=39182325 k.kicks=8303 k.pipe_copy_bytes=341362710 k.pipe_lock_hold_cycles=117422982 k.pipe_lock_spin_cycles=19311806 k.pipe_lock_takes=35721 k.pipe_read_copy_cycles=49947857 k.pipe_write_copy_cycles=33939512 k.switches=16688 k.syscalls=18408 mperf=2264996808 stamp=39664547129
netperf: run 4 per MB (170.44 MB in 2.048 s, 665.8 Mb/s)
  M  system C0 (sum mperf / tsc_hz)                          5.493 ms
  M  system cycles (sum aperf)                              10.768 Mcyc
  M  system effective clock (aperf / mperf)                  1.960 GHz
  D  system C0 less the idle window's rate                   5.209 ms
  D  system cycles less the idle window's rate              10.346 Mcyc
  M  app cpu (its own accounting)                            2.338 ms
  D  app cycles (cpu x effective clock)                      4.582 Mcyc
  M  app syscalls                                           22.471 /MB
  M  app time in syscalls (its waits included)               9.951 ms
  M  app runqueue wait                                       0.000 ms
  D  app TLS decrypt (aead bench x bytes)                    0.875 Mcyc
  D  app SHA-256 (bench x bytes)                             2.386 Mcyc
  D  app copies (3 x memcpy bench x bytes)                   0.234 Mcyc
  D  app syscalls (time x effective clock)                  19.509 Mcyc
  D  app rest (cycles less the four above)                 -18.421 Mcyc
  M  netstack cpu (its own accounting)                       2.508 ms
  D  netstack cycles (cpu x effective clock)                 4.916 Mcyc
  M  netstack time in syscalls (its waits included)         10.093 ms
  M  netstack passes                                        29.477 /MB
  M  netstack nic_ready                                     28.790 /MB
  M  netstack frames_rx                                    720.733 /MB
  M  netstack frames_tx                                     46.228 /MB
  M  netstack pipe_w                                        23.023 /MB
  M  netstack pipe_w_bytes                             1001408.052 /MB
  M  netstack pipe_w_refused                                 0.000 /MB
  M  netstack pipe_r                                         0.059 /MB
  M  netstack pipe_r_empty                                   0.029 /MB
  M  netstack bridges                                        0.023 /MB
  M  netstack b0                                             0.475 /MB
  M  netstack b1                                             0.217 /MB
  M  netstack b2                                             0.329 /MB
  M  netstack b3_4                                           6.272 /MB
  M  netstack b5_8                                           1.942 /MB
  M  netstack b9_16                                          0.581 /MB
  M  netstack b17_64                                        19.655 /MB
  M  netstack b65                                            0.006 /MB
  M  netstack watches                                       29.377 /MB
  M  netstack submits                                       29.524 /MB
  M  netstack tx_calls                                      29.477 /MB
  M  netstack owed                                           0.000 /MB
  M  netstack empty_passes                                   0.370 /MB
  M  netstack cy_pass (tsc)                                  2.214 ms
  M  netstack cy_begin_pass (tsc)                            0.061 ms
  M  netstack cy_receive (tsc)                               1.750 ms
  M  netstack cy_poll_rx (tsc)                               0.023 ms
  M  netstack cy_rx_done (tsc)                               0.015 ms
  M  netstack rx_done                                      720.733 /MB
  M  netstack cy_node_frame (tsc)                            1.306 ms
  M  netstack cy_node_settle (tsc)                           0.121 ms
  M  netstack cy_checksum (tsc)                              0.230 ms
  M  netstack checksum_bytes                           1048911.158 /MB
  M  netstack cy_ring_write (tsc)                            0.225 ms
  M  netstack ring_write_bytes                         1001411.056 /MB
  M  netstack cy_fire (tsc)                                  0.000 ms
  M  netstack cy_transmit (tsc)                              0.213 ms
  M  netstack cy_card_tx (tsc)                               0.009 ms
  M  netstack cy_settle (tsc)                                0.044 ms
  M  netstack cy_watch (tsc)                                 0.016 ms
  M  netstack cy_pipe_w (tsc)                                0.148 ms
  M  netstack cy_pipe_r (tsc)                                0.000 ms
  M  netstack cy_wait (tsc)                                  9.905 ms
  M  netstack cy_answers (tsc)                               0.007 ms
  M  netstack cy_bridge (tsc)                                0.002 ms
  M  netstack ooo_segs                                      11.781 /MB
  M  netstack hole_filled                                   27.658 /MB
  M  netstack sack_sent                                     25.839 /MB
  M  netstack dsack_sent                                     0.153 /MB
  M  netstack ack_segs                                      45.993 /MB
  M  netstack ack_bytes                                1001408.052 /MB
  M  netstack ack_zero                                      23.885 /MB
  M  netstack ack_gap_ns                              11747387.594 /MB
  M  netstack ack_gap_n                                     22.102 /MB
  M  netstack gap_lt100us                                    0.370 /MB
  M  netstack gap_100_300us                                  0.370 /MB
  M  netstack gap_300us_1ms                                 20.858 /MB
  M  netstack gap_1_3ms                                      0.264 /MB
  M  netstack gap_ge3ms                                      0.241 /MB
  M  netstack stretch_1_2                                    0.235 /MB
  M  netstack stretch_3_8                                    1.631 /MB
  M  netstack stretch_9_32                                   1.766 /MB
  M  netstack stretch_33_64                                 18.452 /MB
  M  netstack stretch_ge65                                   0.023 /MB
  M  netstack paces                                         29.002 /MB
  M  netstack pace_ns                                 10004860.758 /MB
  M  netstack itr_units                                  35182.455 /MB
  M  netstack rdt_writes                                    29.019 /MB
  M  netstack syscalls                                      83.672 /MB
  D  ack gap, mean (ack-moving segments)                   531.514 us
  D  bytes acknowledged per ack-moving segment           45296.983 B
  D  cadence asked, mean                                   344.977 us
  D  ITR applied, mean                                     310.559 us
  D  kernel outside both tasks (busy less app, netstack)        0.848 Mcyc
  M  kernel idle_exit_cycles (tsc)                           0.300 ms
  M  kernel idle_exits                                      77.764 /MB
  M  kernel inbox_fires                                     29.078 /MB
  M  kernel inbox_looks                                     29.307 /MB
  M  kernel inbox_rearms                                     0.006 /MB
  M  kernel irq_cycles (tsc)                                 0.095 ms
  M  kernel kicks                                           48.715 /MB
  M  kernel pipe_copy_bytes                            2002843.374 /MB
  M  kernel pipe_lock_hold_cycles (tsc)                      0.285 ms
  M  kernel pipe_lock_spin_cycles (tsc)                      0.047 ms
  M  kernel pipe_lock_takes                                209.582 /MB
  M  kernel pipe_read_copy_cycles (tsc)                      0.121 ms
  M  kernel pipe_write_copy_cycles (tsc)                     0.082 ms
  M  kernel switches                                        97.912 /MB
  M  kernel syscalls                                       108.003 /MB
netperf: perf run=5 k=32 bytes=170439044 secs=1.748 aperf=1630324793 app.cpu_ns=388523900 app.runq_ns=0 app.syscall_ns=1399869811 app.syscalls=2809 k.idle_exit_cycles=122347066 k.idle_exits=9563 k.inbox_fires=3468 k.inbox_looks=3501 k.inbox_rearms=3 k.irq_cycles=34969634 k.kicks=6081 k.pipe_copy_bytes=341362254 k.pipe_lock_hold_cycles=107375021 k.pipe_lock_spin_cycles=16241089 k.pipe_lock_takes=26293 k.pipe_read_copy_cycles=48655773 k.pipe_write_copy_cycles=31976029 k.switches=12222 k.syscalls=13202 mperf=2089107624 stamp=33870847227
netperf: run 5 per MB (170.44 MB in 1.748 s, 780.0 Mb/s)
  M  system C0 (sum mperf / tsc_hz)                          5.066 ms
  M  system cycles (sum aperf)                               9.565 Mcyc
  M  system effective clock (aperf / mperf)                  1.888 GHz
  D  system C0 less the idle window's rate                   4.824 ms
  D  system cycles less the idle window's rate               9.206 Mcyc
  M  app cpu (its own accounting)                            2.280 ms
  D  app cycles (cpu x effective clock)                      4.304 Mcyc
  M  app syscalls                                           16.481 /MB
  M  app time in syscalls (its waits included)               8.213 ms
  M  app runqueue wait                                       0.000 ms
  D  app TLS decrypt (aead bench x bytes)                    0.875 Mcyc
  D  app SHA-256 (bench x bytes)                             2.386 Mcyc
  D  app copies (3 x memcpy bench x bytes)                   0.234 Mcyc
  D  app syscalls (time x effective clock)                  15.507 Mcyc
  D  app rest (cycles less the four above)                 -14.698 Mcyc
  M  netstack cpu (its own accounting)                       2.376 ms
  D  netstack cycles (cpu x effective clock)                 4.485 Mcyc
  M  netstack time in syscalls (its waits included)          8.122 ms
  M  netstack passes                                        20.582 /MB
  M  netstack nic_ready                                     20.066 /MB
  M  netstack frames_rx                                    710.676 /MB
  M  netstack frames_tx                                     29.535 /MB
  M  netstack pipe_w                                        16.751 /MB
  M  netstack pipe_w_bytes                             1001408.439 /MB
  M  netstack pipe_w_refused                                 0.000 /MB
  M  netstack pipe_r                                         0.059 /MB
  M  netstack pipe_r_empty                                   0.029 /MB
  M  netstack bridges                                        0.023 /MB
  M  netstack b0                                             0.241 /MB
  M  netstack b1                                             0.070 /MB
  M  netstack b2                                             0.088 /MB
  M  netstack b3_4                                           4.230 /MB
  M  netstack b5_8                                           0.469 /MB
  M  netstack b9_16                                          0.276 /MB
  M  netstack b17_64                                        15.202 /MB
  M  netstack b65                                            0.006 /MB
  M  netstack watches                                       20.494 /MB
  M  netstack submits                                       20.641 /MB
  M  netstack tx_calls                                      20.582 /MB
  M  netstack owed                                           0.000 /MB
  M  netstack empty_passes                                   0.188 /MB
  M  netstack cy_pass (tsc)                                  1.993 ms
  M  netstack cy_begin_pass (tsc)                            0.088 ms
  M  netstack cy_receive (tsc)                               1.639 ms
  M  netstack cy_poll_rx (tsc)                               0.022 ms
  M  netstack cy_rx_done (tsc)                               0.014 ms
  M  netstack rx_done                                      710.676 /MB
  M  netstack cy_node_frame (tsc)                            1.242 ms
  M  netstack cy_node_settle (tsc)                           0.120 ms
  M  netstack cy_checksum (tsc)                              0.208 ms
  M  netstack checksum_bytes                           1034354.505 /MB
  M  netstack cy_ring_write (tsc)                            0.212 ms
  M  netstack ring_write_bytes                         1001411.443 /MB
  M  netstack cy_fire (tsc)                                  0.000 ms
  M  netstack cy_transmit (tsc)                              0.116 ms
  M  netstack cy_card_tx (tsc)                               0.005 ms
  M  netstack cy_settle (tsc)                                0.031 ms
  M  netstack cy_watch (tsc)                                 0.011 ms
  M  netstack cy_pipe_w (tsc)                                0.124 ms
  M  netstack cy_pipe_r (tsc)                                0.000 ms
  M  netstack cy_wait (tsc)                                  7.954 ms
  M  netstack cy_answers (tsc)                               0.014 ms
  M  netstack cy_bridge (tsc)                                0.003 ms
  M  netstack ooo_segs                                      10.227 /MB
  M  netstack hole_filled                                    9.963 /MB
  M  netstack sack_sent                                     13.571 /MB
  M  netstack dsack_sent                                     0.029 /MB
  M  netstack ack_segs                                      29.354 /MB
  M  netstack ack_bytes                                1001408.439 /MB
  M  netstack ack_zero                                      13.289 /MB
  M  netstack ack_gap_ns                               9699151.135 /MB
  M  netstack ack_gap_n                                     16.059 /MB
  M  netstack gap_lt100us                                    0.205 /MB
  M  netstack gap_100_300us                                  0.364 /MB
  M  netstack gap_300us_1ms                                 15.272 /MB
  M  netstack gap_1_3ms                                      0.123 /MB
  M  netstack gap_ge3ms                                      0.094 /MB
  M  netstack stretch_1_2                                    0.070 /MB
  M  netstack stretch_3_8                                    0.557 /MB
  M  netstack stretch_9_32                                   0.763 /MB
  M  netstack stretch_33_64                                 14.627 /MB
  M  netstack stretch_ge65                                   0.047 /MB
  M  netstack paces                                         20.342 /MB
  M  netstack pace_ns                                  8773675.174 /MB
  M  netstack itr_units                                  32604.454 /MB
  M  netstack rdt_writes                                    20.342 /MB
  M  netstack syscalls                                      59.265 /MB
  D  ack gap, mean (ack-moving segments)                   603.988 us
  D  bytes acknowledged per ack-moving segment           62337.143 B
  D  cadence asked, mean                                   431.317 us
  D  ITR applied, mean                                     410.329 us
  D  kernel outside both tasks (busy less app, netstack)        0.417 Mcyc
  M  kernel idle_exit_cycles (tsc)                           0.297 ms
  M  kernel idle_exits                                      56.108 /MB
  M  kernel inbox_fires                                     20.347 /MB
  M  kernel inbox_looks                                     20.541 /MB
  M  kernel inbox_rearms                                     0.018 /MB
  M  kernel irq_cycles (tsc)                                 0.085 ms
  M  kernel kicks                                           35.678 /MB
  M  kernel pipe_copy_bytes                            2002840.699 /MB
  M  kernel pipe_lock_hold_cycles (tsc)                      0.260 ms
  M  kernel pipe_lock_spin_cycles (tsc)                      0.039 ms
  M  kernel pipe_lock_takes                                154.266 /MB
  M  kernel pipe_read_copy_cycles (tsc)                      0.118 ms
  M  kernel pipe_write_copy_cycles (tsc)                     0.078 ms
  M  kernel switches                                        71.709 /MB
  M  kernel syscalls                                        77.459 /MB
netperf: perf run=6 k=32 bytes=170439044 secs=1.909 aperf=1799482509 app.cpu_ns=399438576 app.runq_ns=1186112 app.syscall_ns=1552900902 app.syscalls=3481 k.idle_exit_cycles=110644405 k.idle_exits=12510 k.inbox_fires=4751 k.inbox_looks=4787 k.inbox_rearms=2 k.irq_cycles=35946929 k.kicks=7762 k.pipe_copy_bytes=341362414 k.pipe_lock_hold_cycles=114790432 k.pipe_lock_spin_cycles=15305043 k.pipe_lock_takes=32386 k.pipe_read_copy_cycles=49369709 k.pipe_write_copy_cycles=33595771 k.switches=15692 k.syscalls=17144 mperf=2219947080 stamp=36972805609
netperf: run 6 per MB (170.44 MB in 1.909 s, 714.3 Mb/s)
  M  system C0 (sum mperf / tsc_hz)                          5.384 ms
  M  system cycles (sum aperf)                              10.558 Mcyc
  M  system effective clock (aperf / mperf)                  1.961 GHz
  D  system C0 less the idle window's rate                   5.119 ms
  D  system cycles less the idle window's rate              10.165 Mcyc
  M  app cpu (its own accounting)                            2.344 ms
  D  app cycles (cpu x effective clock)                      4.596 Mcyc
  M  app syscalls                                           20.424 /MB
  M  app time in syscalls (its waits included)               9.111 ms
  M  app runqueue wait                                       0.007 ms
  D  app TLS decrypt (aead bench x bytes)                    0.875 Mcyc
  D  app SHA-256 (bench x bytes)                             2.386 Mcyc
  D  app copies (3 x memcpy bench x bytes)                   0.234 Mcyc
  D  app syscalls (time x effective clock)                  17.868 Mcyc
  D  app rest (cycles less the four above)                 -16.767 Mcyc
  M  netstack cpu (its own accounting)                       2.411 ms
  D  netstack cycles (cpu x effective clock)                 4.728 Mcyc
  M  netstack time in syscalls (its waits included)          9.210 ms
  M  netstack passes                                        28.157 /MB
  M  netstack nic_ready                                     27.593 /MB
  M  netstack frames_rx                                    718.403 /MB
  M  netstack frames_tx                                     44.385 /MB
  M  netstack pipe_w                                        20.535 /MB
  M  netstack pipe_w_bytes                             1001407.923 /MB
  M  netstack pipe_w_refused                                 0.000 /MB
  M  netstack pipe_r                                         0.059 /MB
  M  netstack pipe_r_empty                                   0.029 /MB
  M  netstack bridges                                        0.023 /MB
  M  netstack b0                                             0.287 /MB
  M  netstack b1                                             0.182 /MB
  M  netstack b2                                             0.170 /MB
  M  netstack b3_4                                           7.434 /MB
  M  netstack b5_8                                           1.179 /MB
  M  netstack b9_16                                          0.399 /MB
  M  netstack b17_64                                        18.493 /MB
  M  netstack b65                                            0.012 /MB
  M  netstack watches                                       28.051 /MB
  M  netstack submits                                       28.256 /MB
  M  netstack tx_calls                                      28.157 /MB
  M  netstack owed                                           0.000 /MB
  M  netstack empty_passes                                   0.223 /MB
  M  netstack cy_pass (tsc)                                  2.111 ms
  M  netstack cy_begin_pass (tsc)                            0.068 ms
  M  netstack cy_receive (tsc)                               1.678 ms
  M  netstack cy_poll_rx (tsc)                               0.023 ms
  M  netstack cy_rx_done (tsc)                               0.015 ms
  M  netstack rx_done                                      718.403 /MB
  M  netstack cy_node_frame (tsc)                            1.251 ms
  M  netstack cy_node_settle (tsc)                           0.122 ms
  M  netstack cy_checksum (tsc)                              0.222 ms
  M  netstack checksum_bytes                           1045553.488 /MB
  M  netstack cy_ring_write (tsc)                            0.196 ms
  M  netstack ring_write_bytes                         1001410.927 /MB
  M  netstack cy_fire (tsc)                                  0.000 ms
  M  netstack cy_transmit (tsc)                              0.194 ms
  M  netstack cy_card_tx (tsc)                               0.008 ms
  M  netstack cy_settle (tsc)                                0.038 ms
  M  netstack cy_watch (tsc)                                 0.014 ms
  M  netstack cy_pipe_w (tsc)                                0.135 ms
  M  netstack cy_pipe_r (tsc)                                0.000 ms
  M  netstack cy_wait (tsc)                                  9.036 ms
  M  netstack cy_answers (tsc)                               0.009 ms
  M  netstack cy_bridge (tsc)                                0.002 ms
  M  netstack ooo_segs                                      17.549 /MB
  M  netstack hole_filled                                   13.019 /MB
  M  netstack sack_sent                                     24.689 /MB
  M  netstack dsack_sent                                     0.047 /MB
  M  netstack ack_segs                                      44.174 /MB
  M  netstack ack_bytes                                1001407.923 /MB
  M  netstack ack_zero                                      24.261 /MB
  M  netstack ack_gap_ns                              10597981.962 /MB
  M  netstack ack_gap_n                                     19.907 /MB
  M  netstack gap_lt100us                                    0.217 /MB
  M  netstack gap_100_300us                                  0.370 /MB
  M  netstack gap_300us_1ms                                 18.998 /MB
  M  netstack gap_1_3ms                                      0.141 /MB
  M  netstack gap_ge3ms                                      0.182 /MB
  M  netstack stretch_1_2                                    0.094 /MB
  M  netstack stretch_3_8                                    0.945 /MB
  M  netstack stretch_9_32                                   1.103 /MB
  M  netstack stretch_33_64                                 17.713 /MB
  M  netstack stretch_ge65                                   0.059 /MB
  M  netstack paces                                         27.869 /MB
  M  netstack pace_ns                                  9369146.309 /MB
  M  netstack itr_units                                  33891.765 /MB
  M  netstack rdt_writes                                    27.887 /MB
  M  netstack syscalls                                      78.392 /MB
  D  ack gap, mean (ack-moving segments)                   532.364 us
  D  bytes acknowledged per ack-moving segment           50288.453 B
  D  cadence asked, mean                                   336.183 us
  D  ITR applied, mean                                     311.322 us
  D  kernel outside both tasks (busy less app, netstack)        0.841 Mcyc
  M  kernel idle_exit_cycles (tsc)                           0.268 ms
  M  kernel idle_exits                                      73.399 /MB
  M  kernel inbox_fires                                     27.875 /MB
  M  kernel inbox_looks                                     28.086 /MB
  M  kernel inbox_rearms                                     0.012 /MB
  M  kernel irq_cycles (tsc)                                 0.087 ms
  M  kernel kicks                                           45.541 /MB
  M  kernel pipe_copy_bytes                            2002841.638 /MB
  M  kernel pipe_lock_hold_cycles (tsc)                      0.278 ms
  M  kernel pipe_lock_spin_cycles (tsc)                      0.037 ms
  M  kernel pipe_lock_takes                                190.015 /MB
  M  kernel pipe_read_copy_cycles (tsc)                      0.120 ms
  M  kernel pipe_write_copy_cycles (tsc)                     0.081 ms
  M  kernel switches                                        92.068 /MB
  M  kernel syscalls                                       100.587 /MB
22:03:28   PASS internet_download

22:03:28 [metal] the timings
22:03:28   61 recorded number(s) this run measured nothing for: boot.acpicase.complete_ms, boot.acpicase.panel_max_us, boot.acpicase.panel_us, boot.deadlinewedge.complete_ms, boot.deadlinewedge.panel_max_us, boot.deadlinewedge.panel_us, boot.foreignrecord.complete_ms, boot.hardlockup.complete_ms, boot.hardlockup.panel_max_us, boot.hardlockup.panel_us, boot.iommu-no-remap.complete_ms, boot.iommu-no-remap.panel_max_us, boot.iommu-no-remap.panel_us, boot.isa-withheld.complete_ms, boot.isa-withheld.panel_max_us, boot.isa-withheld.panel_us, boot.latencycase.complete_ms, boot.latencycase.panel_max_us, boot.latencycase.panel_us, boot.logstallcase.complete_ms, boot.logstallcase.panel_max_us, boot.logstallcase.panel_us, boot.metalcase.complete_ms, boot.metalcase.panel_max_us, boot.metalcase.panel_us, boot.metaldevicecase.complete_ms, boot.metaldevicecase.panel_max_us, boot.metaldevicecase.panel_us, boot.proctreecase.complete_ms, boot.proctreecase.panel_max_us, boot.proctreecase.panel_us, boot.shared-debug.complete_ms, boot.shared-debug.panel_max_us, boot.shared-debug.panel_us, boot.testcases-mkdir.complete_ms, boot.testcases-mkdir.panel_max_us, boot.testcases-mkdir.panel_us, boot.testcases-readdir.complete_ms, boot.testcases-readdir.panel_max_us, boot.testcases-readdir.panel_us, boot.testcases-watchdog.complete_ms, boot.testcases-watchdog.panel_max_us, boot.testcases-watchdog.panel_us, boot.testcases-window.complete_ms, boot.testcases-window.panel_max_us, boot.testcases-window.panel_us, boot.testcases.complete_ms, boot.testcases.panel_max_us, boot.testcases.panel_us, boot.usbbreak.complete_ms, boot.usbbreak.panel_max_us, boot.usbbreak.panel_us, boot.usbload.complete_ms, boot.usbload.panel_max_us, boot.usbload.panel_us, boot.windowscase.complete_ms, boot.windowscase.panel_max_us, boot.windowscase.panel_us, latency.p99_us, tlb.latencycase.p50_ns, tlb.latencycase.p99_ns
22:03:28   3 number(s) on <a bench>; 0 past its record, 0 whose owner failed

22:03:28 [metal] 1 passed, 0 failed, 1 boot(s)

@Japabu

Japabu commented Oct 11, 2026

Copy link
Copy Markdown
Collaborator Author

The scout flash, cargo run -p toyos-metal -- --image <scratchpad>/netring/scout/download/image.img --readback <scratchpad>/netring/scout/download --fat32-check: exit 0. The relevant lines whole, masked: toyos-metal's own lines, and the boot from netstack's spawn to the reboot. Lines 20-454, the loader's two passes and the kernel's boot before netstack, are left out.

saved  35651584 bytes of /dev/sda3 to <path>
59bdb0d16bafc6da401e212842172e2baafe0865e5d843236ade68eb923a68cd  <scratchpad>/netring/scout/download/image.img
    Finished `dev` profile [optimized + debuginfo] target(s) in 0.86s
     Running `target/debug/toyos-metal --image <scratchpad>/netring/scout/download/image.img --readback <scratchpad>/netring/scout/download --fat32-check`
image <scratchpad>/netring/scout/download/image.img: 135266304 bytes, ESP p1 at 2048+69632, log p3 at 73728+69632
image <scratchpad>/netring/scout/download/image.img: armed with ["boot-deadline=120000"], so it is waited 420 s to come back
machine <vendor> <model>, BIOS <bios>
disk /dev/sda: 60062500 sectors, SanDisk Ultra, removable — the stick <path> names
  run: sudo -n '/usr/sbin/wipefs' '--all' '/dev/sda'
  run: sudo -n '/usr/bin/dd' 'of=/dev/sda' 'bs=4M' 'conv=fsync'
  run: sudo -n '/usr/bin/efibootmgr' '--delete-bootnum' '--bootnum' '0002'
  run: sudo -n '/usr/bin/efibootmgr' '--create-only' '--disk' '/dev/sda' '--part' '1' '--label' 'ToyOS' '--loader' '\EFI\BOOT\BOOTX64.EFI'
  run: sudo -n '/usr/bin/efibootmgr' '--bootnext' '0002'
  run: sudo -n '/usr/sbin/reboot'
the machine answered ssh again after 71 s
the boot stick enumerated 0 s after the machine answered
  run: sudo -n '/usr/bin/mount' '-o' 'ro' '/dev/sda3' '<path>
  run: sudo -n '/usr/bin/umount' '<path>
[... lines 20-454 of 536 left out: the loader's two passes and the kernel's boot up to netstack's spawn ...]
[2026-10-11 22:01:27 12.937 cpu0 kernel] spawn: /system/bin/netstack pid=7 (layout=0ms tls=1ms total=1ms)
[2026-10-11 22:01:27 12.937 supervisor] supervisor: started netstack
[2026-10-11 22:01:27 12.938 cpu6 kernel] shm: 0xa0800000 mapped Uncacheable into pid 7
[2026-10-11 22:01:27 12.938 netstack] netstack: I219: PCI 00:1f.6 registers in BAR 0 (0x20000 bytes)
[2026-10-11 22:01:27 12.938 netstack] netstack: I219: inherited RCTL 0x00000000 TCTL 0x3003f0f8
[2026-10-11 22:01:27 12.938 cpu6 kernel] iommu: domain5 maps 0xee00000..0xf000000 at 0x2002000000
[2026-10-11 22:01:27 12.939 cpu0 kernel] spawn: /system/bin/test-runner pid=8 (layout=0ms tls=0ms total=0ms)
[2026-10-11 22:01:27 12.939 supervisor] supervisor: started test-runner
[2026-10-11 22:01:27 12.940 test-runner] ===READY===
[2026-10-11 22:01:27 12.940 test-runner] ===TEST_START test_rs_https_download===
[2026-10-11 22:01:27 12.941 cpu0 kernel] spawn: /system/bin/test_rs_https_download pid=9 (layout=0ms tls=0ms total=0ms)
[2026-10-11 22:01:27 12.949 cpu7 kernel] usb-storage: disk 0 does not implement SYNCHRONIZE CACHE (sense 0x05/0x20/0x00); its writes are durable once they complete
[2026-10-11 22:01:32 17.470 netstack] netstack: I219: before the reset the PHY was asked: the power step, before it: CTRL 0x00180240, CTRL_EXT 0x815a1027, PHY_CTRL 0x0004000c, FWSM 0x60000040, MDIC 0x14346220: the PHY is left to the PCH's own logic by §8.2.1, a low-power entry is enabled by §8.2.2, the firmware reports itself not ready, and the interconnect is not in §8.2.3's transition; nothing was written; after it: CTRL 0x00180240, CTRL_EXT 0x815a1027, PHY_CTRL 0x0004000c, FWSM 0x60000040, MDIC 0x14346220: the PHY is left to the PCH's own logic by §8.2.1, a low-power entry is enabled by §8.2.2, the firmware reports itself not ready, and the interconnect is not in §8.2.3's transition; as-found: never ended a cycle, MDIC still reading 0x08420000; power-cycled: never ended a cycle, MDIC still reading 0x08420000; smbus-forced: answered 0x015400a6 at PHY address 02; back-on-pcie: answered 0x015400a6 at PHY address 02
[2026-10-11 22:01:32 17.470 netstack] netstack: I219: the MAC and the PHY were reset together under the software flag, the PHY configured 20041 us after
[2026-10-11 22:01:32 17.470 netstack] netstack: I219: the function stopped mastering before it was reset, and the PHY answers at PHY address 02 as 0x015400a6, its Port General Configuration read 0x382c; its OEM Bits read 0x0044 (low-power link-up, gigabit disabled), were written 0x0400 and read 0x0000 after (no low-power link-up, gigabit allowed)
[2026-10-11 22:01:32 17.470 netstack] netstack: MAC <mac>
[2026-10-11 22:01:35 20.211 cpu6 kernel] pcidev: slot 0 took its first message on vector 0x28
[2026-10-11 22:01:35 20.212 netstack] netstack: I219: link up at 1000 Mb/s full duplex, 2741 ms after the driver came up
[2026-10-11 22:01:39 24.633 netstack] netstack: DHCP: lease <ip>/24 from <ip>, gateway <ip>, dns [<ip> <ip>], 7163 ms after netstack came up
[2026-10-11 22:01:39 24.633 netstack] netstack: ready, at most 103 places (12 MiB each of 16026 MiB total)
[2026-10-11 22:01:39 24.775 netstack] netstack: tcp closed: (client gone) snd_shift=9 rcv_shift=7 rcv_capacity=65535 rcv_wnd=65535 rcv_rtt=None rcv_mss=524 srtt=Some(16ms) cwnd=14280 smss=1428 | stack rto=0 loss_probe=0 loss_probe_recovery=0 retransmit_bytes=0 dsack=0 sack_recovery=0
[2026-10-11 22:01:39 24.776 netstack] netstack: prof passes=24 nic_ready=10 frames_rx=9 frames_tx=16 pipe_w=0 pipe_w_bytes=0 pipe_w_refused=0 pipe_r=2 pipe_r_empty=1 bridges=0 b0=15 b1=9 b2=0 b3_4=0 b5_8=0 b9_16=0 b17_64=0 b65=0 watches=1 submits=19 tx_calls=24 owed=0 empty_passes=4 cy_pass=2980417 cy_begin_pass=893695 cy_receive=236619 cy_poll_rx=7459 cy_rx_done=904 rx_done=9 cy_node_frame=71282 cy_node_settle=113034 cy_checksum=737 checksum_bytes=40 cy_ring_write=0 ring_write_bytes=0 cy_fire=100658 cy_transmit=219945 cy_card_tx=9898 cy_settle=829689 cy_watch=36502 cy_pipe_w=0 cy_pipe_r=435745 cy_wait=17670754887 cy_answers=557218 cy_bridge=11299 ooo_segs=0 hole_filled=0 sack_sent=0 dsack_sent=0 ack_segs=2 ack_bytes=0 ack_zero=2 ack_gap_ns=0 ack_gap_n=0 gap_lt100us=0 gap_100_300us=0 gap_300us_1ms=0 gap_1_3ms=0 gap_ge3ms=0 stretch_1_2=0 stretch_3_8=0 stretch_9_32=0 stretch_33_64=0 stretch_ge65=0 paces=10 pace_ns=300000 itr_units=1120 rdt_writes=9 cpu_ns=256785634 syscalls=177 syscall_ns=11584950912 runq_ns=0 wall_ns=11838990375
[2026-10-11 22:01:39 24.791 netstack] netstack: tcp closed: (client gone) snd_shift=9 rcv_shift=7 rcv_capacity=65535 rcv_wnd=65535 rcv_rtt=None rcv_mss=524 srtt=Some(15ms) cwnd=14280 smss=1428 | stack rto=0 loss_probe=0 loss_probe_recovery=0 retransmit_bytes=0 dsack=0 sack_recovery=0
[2026-10-11 22:01:39 24.791 netstack] netstack: prof passes=6 nic_ready=2 frames_rx=3 frames_tx=4 pipe_w=0 pipe_w_bytes=0 pipe_w_refused=0 pipe_r=2 pipe_r_empty=1 bridges=0 b0=4 b1=1 b2=1 b3_4=0 b5_8=0 b9_16=0 b17_64=0 b65=0 watches=1 submits=8 tx_calls=6 owed=0 empty_passes=2 cy_pass=1016202 cy_begin_pass=137259 cy_receive=81597 cy_poll_rx=1938 cy_rx_done=219 rx_done=3 cy_node_frame=56936 cy_node_settle=5952 cy_checksum=573 checksum_bytes=104 cy_ring_write=0 ring_write_bytes=0 cy_fire=0 cy_transmit=59597 cy_card_tx=1953 cy_settle=550426 cy_watch=10607 cy_pipe_w=0 cy_pipe_r=351705 cy_wait=35956410 cy_answers=426080 cy_bridge=970 ooo_segs=0 hole_filled=0 sack_sent=0 dsack_sent=0 ack_segs=2 ack_bytes=0 ack_zero=2 ack_gap_ns=0 ack_gap_n=0 gap_lt100us=0 gap_100_300us=0 gap_300us_1ms=0 gap_1_3ms=0 gap_ge3ms=0 stretch_1_2=0 stretch_3_8=0 stretch_9_32=0 stretch_33_64=0 stretch_ge65=0 paces=2 pace_ns=1022187 itr_units=3696 rdt_writes=2 cpu_ns=1022871 syscalls=28 syscall_ns=15373195 runq_ns=0 wall_ns=15660524
[2026-10-11 22:01:39 24.806 netstack] netstack: tcp closed: (client gone) snd_shift=9 rcv_shift=7 rcv_capacity=65535 rcv_wnd=65535 rcv_rtt=None rcv_mss=524 srtt=Some(15ms) cwnd=14280 smss=1428 | stack rto=0 loss_probe=0 loss_probe_recovery=0 retransmit_bytes=0 dsack=0 sack_recovery=0
[2026-10-11 22:01:39 24.806 netstack] netstack: prof passes=6 nic_ready=2 frames_rx=3 frames_tx=4 pipe_w=0 pipe_w_bytes=0 pipe_w_refused=0 pipe_r=2 pipe_r_empty=1 bridges=0 b0=4 b1=1 b2=1 b3_4=0 b5_8=0 b9_16=0 b17_64=0 b65=0 watches=2 submits=8 tx_calls=6 owed=0 empty_passes=2 cy_pass=654109 cy_begin_pass=43083 cy_receive=61634 cy_poll_rx=2368 cy_rx_done=181 rx_done=3 cy_node_frame=43474 cy_node_settle=2565 cy_checksum=863 checksum_bytes=104 cy_ring_write=0 ring_write_bytes=0 cy_fire=0 cy_transmit=39000 cy_card_tx=1521 cy_settle=443481 cy_watch=7110 cy_pipe_w=0 cy_pipe_r=4600 cy_wait=35019342 cy_answers=30741 cy_bridge=1189 ooo_segs=0 hole_filled=0 sack_sent=0 dsack_sent=0 ack_segs=2 ack_bytes=0 ack_zero=2 ack_gap_ns=0 ack_gap_n=0 gap_lt100us=0 gap_100_300us=0 gap_300us_1ms=0 gap_1_3ms=0 gap_ge3ms=0 stretch_1_2=0 stretch_3_8=0 stretch_9_32=0 stretch_33_64=0 stretch_ge65=0 paces=2 pace_ns=967500 itr_units=3696 rdt_writes=2 cpu_ns=770595 syscalls=28 syscall_ns=14806971 runq_ns=0 wall_ns=14949259
[2026-10-11 22:01:39 24.822 netstack] netstack: tcp closed: (client gone) snd_shift=9 rcv_shift=7 rcv_capacity=65535 rcv_wnd=65535 rcv_rtt=None rcv_mss=524 srtt=Some(16ms) cwnd=14280 smss=1428 | stack rto=0 loss_probe=0 loss_probe_recovery=0 retransmit_bytes=0 dsack=0 sack_recovery=0
[2026-10-11 22:01:39 24.822 netstack] netstack: prof passes=6 nic_ready=2 frames_rx=3 frames_tx=4 pipe_w=0 pipe_w_bytes=0 pipe_w_refused=0 pipe_r=2 pipe_r_empty=1 bridges=0 b0=4 b1=1 b2=1 b3_4=0 b5_8=0 b9_16=0 b17_64=0 b65=0 watches=1 submits=8 tx_calls=6 owed=0 empty_passes=2 cy_pass=745317 cy_begin_pass=156349 cy_receive=144288 cy_poll_rx=2775 cy_rx_done=1046 rx_done=3 cy_node_frame=115357 cy_node_settle=9013 cy_checksum=1375 checksum_bytes=104 cy_ring_write=0 ring_write_bytes=0 cy_fire=0 cy_transmit=24057 cy_card_tx=945 cy_settle=365710 cy_watch=3390 cy_pipe_w=0 cy_pipe_r=265949 cy_wait=37225005 cy_answers=304918 cy_bridge=1733 ooo_segs=0 hole_filled=0 sack_sent=0 dsack_sent=0 ack_segs=2 ack_bytes=0 ack_zero=2 ack_gap_ns=0 ack_gap_n=0 gap_lt100us=0 gap_100_300us=0 gap_300us_1ms=0 gap_1_3ms=0 gap_ge3ms=0 stretch_1_2=0 stretch_3_8=0 stretch_9_32=0 stretch_33_64=0 stretch_ge65=0 paces=2 pace_ns=967500 itr_units=3696 rdt_writes=2 cpu_ns=770319 syscalls=27 syscall_ns=15755301 runq_ns=0 wall_ns=15978830
[2026-10-11 22:01:39 24.837 netstack] netstack: tcp closed: (client gone) snd_shift=9 rcv_shift=7 rcv_capacity=65535 rcv_wnd=65535 rcv_rtt=None rcv_mss=524 srtt=Some(15ms) cwnd=14280 smss=1428 | stack rto=0 loss_probe=0 loss_probe_recovery=0 retransmit_bytes=0 dsack=0 sack_recovery=0
[2026-10-11 22:01:39 24.837 netstack] netstack: prof passes=6 nic_ready=1 frames_rx=3 frames_tx=4 pipe_w=0 pipe_w_bytes=0 pipe_w_refused=0 pipe_r=2 pipe_r_empty=1 bridges=0 b0=5 b1=0 b2=0 b3_4=1 b5_8=0 b9_16=0 b17_64=0 b65=0 watches=1 submits=7 tx_calls=6 owed=0 empty_passes=3 cy_pass=855105 cy_begin_pass=162026 cy_receive=47689 cy_poll_rx=1339 cy_rx_done=301 rx_done=3 cy_node_frame=29977 cy_node_settle=2895 cy_checksum=397 checksum_bytes=104 cy_ring_write=0 ring_write_bytes=0 cy_fire=0 cy_transmit=59330 cy_card_tx=1976 cy_settle=467238 cy_watch=5542 cy_pipe_w=0 cy_pipe_r=352598 cy_wait=34985246 cy_answers=426177 cy_bridge=1051 ooo_segs=0 hole_filled=0 sack_sent=0 dsack_sent=0 ack_segs=2 ack_bytes=0 ack_zero=2 ack_gap_ns=0 ack_gap_n=0 gap_lt100us=0 gap_100_300us=0 gap_300us_1ms=0 gap_1_3ms=0 gap_ge3ms=0 stretch_1_2=0 stretch_3_8=0 stretch_9_32=0 stretch_33_64=0 stretch_ge65=0 paces=1 pace_ns=992187 itr_units=3584 rdt_writes=1 cpu_ns=879585 syscalls=29 syscall_ns=14926310 runq_ns=0 wall_ns=15177065
[2026-10-11 22:01:40 25.466 netstack] netstack: mDNS: no host answered for toyos-t14.local; this machine answers as it
[2026-10-11 22:01:41 26.838 test-runner pid=9] https_download: perf idle secs=2.000 cpus=8 tsc_hz=2419361856 aperf=70161113 app.cpu_ns=130415 app.runq_ns=0 app.syscall_ns=2000067083 app.syscalls=4 k.idle_exit_cycles=2035794 k.idle_exits=69 k.inbox_fires=8 k.inbox_looks=8 k.inbox_rearms=0 k.irq_cycles=306673 k.kicks=29 k.pipe_copy_bytes=832 k.pipe_lock_hold_cycles=102055 k.pipe_lock_spin_cycles=78162 k.pipe_lock_takes=540 k.pipe_read_copy_cycles=6361 k.pipe_write_copy_cycles=5180 k.switches=64 k.syscalls=132 mperf=114139392 stamp=38712711747
[2026-10-11 22:01:41 26.922 netstack] netstack: tcp closed: (client gone) snd_shift=9 rcv_shift=7 rcv_capacity=65535 rcv_wnd=64658 rcv_rtt=Some(16ms) rcv_mss=1424 srtt=Some(15.528ms) cwnd=14280 smss=1428 | stack rto=0 loss_probe=0 loss_probe_recovery=0 retransmit_bytes=0 dsack=0 sack_recovery=0
[2026-10-11 22:01:41 26.922 netstack] netstack: prof passes=25 nic_ready=9 frames_rx=16 frames_tx=15 pipe_w=3 pipe_w_bytes=8191 pipe_w_refused=0 pipe_r=8 pipe_r_empty=4 bridges=3 b0=15 b1=7 b2=2 b3_4=0 b5_8=1 b9_16=0 b17_64=0 b65=0 watches=9 submits=21 tx_calls=25 owed=0 empty_passes=5 cy_pass=3194496 cy_begin_pass=647378 cy_receive=635978 cy_poll_rx=10803 cy_rx_done=1647 rx_done=16 cy_node_frame=149085 cy_node_settle=47388 cy_checksum=8640 checksum_bytes=8647 cy_ring_write=16526 ring_write_bytes=8710 cy_fire=62852 cy_transmit=191868 cy_card_tx=9144 cy_settle=901059 cy_watch=31097 cy_pipe_w=357585 cy_pipe_r=46985 cy_wait=5039754051 cy_answers=418079 cy_bridge=79384 ooo_segs=0 hole_filled=0 sack_sent=0 dsack_sent=0 ack_segs=6 ack_bytes=8191 ack_zero=4 ack_gap_ns=41407042 ack_gap_n=1 gap_lt100us=0 gap_100_300us=0 gap_300us_1ms=0 gap_1_3ms=0 gap_ge3ms=1 stretch_1_2=1 stretch_3_8=1 stretch_9_32=0 stretch_33_64=0 stretch_ge65=0 paces=10 pace_ns=6983312 itr_units=25424 rdt_writes=10 cpu_ns=2447129 syscalls=81 syscall_ns=2083949743 runq_ns=0 wall_ns=2084879819
[2026-10-11 22:01:42 27.823 test-runner pid=9] https_download: bench suite=TLS13_AES_128_GCM_SHA256 aead=aes128gcm aead_aperf_per_b=0.875 aead_tsc_per_b=0.507 sha_aperf_per_b=2.386 sha_tsc_per_b=1.536 memcpy_aperf_per_b=0.078 memcpy_tsc_per_b=0.050
[2026-10-11 22:01:43 28.392 test-runner pid=9] https_download: lan idle lan_ms=5.96/6.94/7.02/7.64 n=10
[2026-10-11 22:01:43 28.392 netstack] netstack: cadence K=32
[2026-10-11 22:01:45 30.091 netstack] netstack: tcp closed: (client gone) snd_shift=9 rcv_shift=7 rcv_capacity=4194304 rcv_wnd=4194304 rcv_rtt=Some(15.422995ms) rcv_mss=1424 srtt=Some(14.862ms) cwnd=14280 smss=1428 | stack rto=0 loss_probe=0 loss_probe_recovery=0 retransmit_bytes=0 dsack=0 sack_recovery=0
[2026-10-11 22:01:45 30.091 netstack] netstack: prof passes=4115 nic_ready=3994 frames_rx=121128 frames_tx=5804 pipe_w=3369 pipe_w_bytes=170676611 pipe_w_refused=1 pipe_r=10 pipe_r_empty=5 bridges=4 b0=60 b1=28 b2=8 b3_4=817 b5_8=77 b9_16=64 b17_64=3058 b65=3 watches=4061 submits=4127 tx_calls=4115 owed=0 empty_passes=41 cy_pass=839269895 cy_begin_pass=28238450 cy_receive=692702541 cy_poll_rx=9373999 cy_rx_done=5914849 rx_done=121128 cy_node_frame=519785543 cy_node_settle=49331651 cy_checksum=87959334 checksum_bytes=176277723 cy_ring_write=92905648 ring_write_bytes=170677123 cy_fire=0 cy_transmit=53877856 cy_card_tx=2531192 cy_settle=17044868 cy_watch=5263525 cy_pipe_w=55500546 cy_pipe_r=969286 cy_wait=6813767654 cy_answers=4449773 cy_bridge=932778 ooo_segs=2121 hole_filled=1744 sack_sent=2595 dsack_sent=10 ack_segs=5763 ack_bytes=170676612 ack_zero=2543 ack_gap_ns=1654168897 ack_gap_n=3219 gap_lt100us=46 gap_100_300us=63 gap_300us_1ms=3070 gap_1_3ms=23 gap_ge3ms=17 stretch_1_2=11 stretch_3_8=88 stretch_9_32=155 stretch_33_64=2958 stretch_ge65=8 paces=4055 pace_ns=1526611545 itr_units=5622656 rdt_writes=4059 cpu_ns=398530244 syscalls=11912 syscall_ns=2848889829 runq_ns=0 wall_ns=3168856785
[2026-10-11 22:01:45 30.127 test-runner pid=9] https_download: lan run=1 k=32 lan_ms=4.20/8.16/9.22/14.50 n=29
[2026-10-11 22:01:45 30.127 test-runner pid=9] https_download: whole bytes=170439044 sha256=1a9ee8caaa18a3e433fef93cea8a55dc1ebd478ed761b2fef69d4565f9d00e7f secs=1.613 mbps=845.4 rtt_ms=[16.5 15.7 14.8 16.1 15.2] busy=0.066 cpus=[0.026 0.002 0.237 0.003 0.002 0.006 0.248 0.003] cpu_s=0.851 cpu_ms_per_mb=5.00 tcp_ms=23.6 tls_ms=43.0 run=1 k=32
[2026-10-11 22:01:45 30.127 test-runner pid=9] https_download: perf run=1 k=32 bytes=170439044 secs=1.734 aperf=1724154046 app.cpu_ns=387107743 app.runq_ns=0 app.syscall_ns=1390463484 app.syscalls=3298 k.idle_exit_cycles=108273334 k.idle_exits=11143 k.inbox_fires=4028 k.inbox_looks=4060 k.inbox_rearms=1 k.irq_cycles=33768775 k.kicks=7110 k.pipe_copy_bytes=341357350 k.pipe_lock_hold_cycles=108661803 k.pipe_lock_spin_cycles=17229050 k.pipe_lock_takes=30665 k.pipe_read_copy_cycles=48835466 k.pipe_write_copy_cycles=32771914 k.switches=14298 k.syscalls=15336 mperf=2125511376 stamp=33563985679
[2026-10-11 22:01:45 30.128 netstack] netstack: cadence K=32
[2026-10-11 22:01:47 32.421 netstack] netstack: tcp closed: (client gone) snd_shift=9 rcv_shift=7 rcv_capacity=4194304 rcv_wnd=4194304 rcv_rtt=Some(12.831882ms) rcv_mss=1424 srtt=Some(15.585ms) cwnd=14280 smss=1428 | stack rto=0 loss_probe=0 loss_probe_recovery=0 retransmit_bytes=0 dsack=0 sack_recovery=0
[2026-10-11 22:01:47 32.422 netstack] netstack: prof passes=6211 nic_ready=6096 frames_rx=123062 frames_tx=9894 pipe_w=4387 pipe_w_bytes=170679383 pipe_w_refused=0 pipe_r=10 pipe_r_empty=5 bridges=4 b0=129 b1=57 b2=52 b3_4=1811 b5_8=481 b9_16=226 b17_64=3454 b65=1 watches=6194 submits=6233 tx_calls=6211 owed=0 empty_passes=108 cy_pass=998969146 cy_begin_pass=34997955 cy_receive=749848985 cy_poll_rx=10359316 cy_rx_done=6423477 rx_done=123062 cy_node_frame=553562668 cy_node_settle=53223963 cy_checksum=90857799 checksum_bytes=179093111 cy_ring_write=98130191 ring_write_bytes=170679895 cy_fire=0 cy_transmit=100794617 cy_card_tx=4318582 cy_settle=20085388 cy_watch=7917444 cy_pipe_w=62461448 cy_pipe_r=65085 cy_wait=4624885908 cy_answers=4312948 cy_bridge=1126463 ooo_segs=5071 hole_filled=797 sack_sent=5732 dsack_sent=33 ack_segs=9850 ack_bytes=170679383 ack_zero=5669 ack_gap_ns=2249491655 ack_gap_n=4180 gap_lt100us=49 gap_100_300us=89 gap_300us_1ms=3908 gap_1_3ms=83 gap_ge3ms=51 stretch_1_2=44 stretch_3_8=466 stretch_9_32=1823 stretch_33_64=1840 stretch_ge65=8 paces=6082 pace_ns=1805442677 itr_units=6340768 rdt_writes=6084 cpu_ns=478234891 syscalls=17128 syscall_ns=1945535132 runq_ns=0 wall_ns=2330597934
[2026-10-11 22:01:47 32.427 test-runner pid=9] https_download: lan run=2 k=32 lan_ms=2.83/5.95/8.43/12.43 n=40
[2026-10-11 22:01:47 32.427 test-runner pid=9] https_download: whole bytes=170439044 sha256=1a9ee8caaa18a3e433fef93cea8a55dc1ebd478ed761b2fef69d4565f9d00e7f secs=2.219 mbps=614.6 rtt_ms=[16.5 15.7 14.8 16.1 15.2] busy=0.058 cpus=[0.026 0.002 0.196 0.002 0.002 0.002 0.229 0.004] cpu_s=1.024 cpu_ms_per_mb=6.01 tcp_ms=23.1 tls_ms=41.0 run=2 k=32
[2026-10-11 22:01:47 32.427 test-runner pid=9] https_download: perf run=2 k=32 bytes=170439044 secs=2.298 aperf=1934320165 app.cpu_ns=428122430 app.runq_ns=1365382 app.syscall_ns=1923074204 app.syscalls=4304 k.idle_exit_cycles=142796386 k.idle_exits=16054 k.inbox_fires=6150 k.inbox_looks=6195 k.inbox_rearms=2 k.irq_cycles=46387524 k.kicks=9899 k.pipe_copy_bytes=341363834 k.pipe_lock_hold_cycles=128166296 k.pipe_lock_spin_cycles=13790752 k.pipe_lock_takes=40173 k.pipe_read_copy_cycles=53557383 k.pipe_write_copy_cycles=35688159 k.switches=19953 k.syscalls=21798 mperf=2502737760 stamp=44512634047
[2026-10-11 22:01:47 32.427 netstack] netstack: cadence K=32
[2026-10-11 22:01:49 34.206 netstack] netstack: tcp closed: (client gone) snd_shift=9 rcv_shift=7 rcv_capacity=4194304 rcv_wnd=4194304 rcv_rtt=Some(16.404599ms) rcv_mss=1424 srtt=Some(14.509ms) cwnd=14280 smss=1428 | stack rto=0 loss_probe=0 loss_probe_recovery=0 retransmit_bytes=0 dsack=0 sack_recovery=0
[2026-10-11 22:01:49 34.207 netstack] netstack: prof passes=4047 nic_ready=3954 frames_rx=121380 frames_tx=5912 pipe_w=3312 pipe_w_bytes=170679801 pipe_w_refused=0 pipe_r=10 pipe_r_empty=5 bridges=4 b0=55 b1=17 b2=27 b3_4=765 b5_8=169 b9_16=58 b17_64=2954 b65=2 watches=4030 submits=4061 tx_calls=4047 owed=0 empty_passes=42 cy_pass=847993604 cy_begin_pass=30380794 cy_receive=685902016 cy_poll_rx=9426351 cy_rx_done=5971521 rx_done=121380 cy_node_frame=513656083 cy_node_settle=50068483 cy_checksum=84386866 checksum_bytes=176663369 cy_ring_write=82851131 ring_write_bytes=170680313 cy_fire=0 cy_transmit=69850459 cy_card_tx=2807087 cy_settle=14143135 cy_watch=5290042 cy_pipe_w=54201193 cy_pipe_r=61341 cy_wait=3457259313 cy_answers=4647889 cy_bridge=1008298 ooo_segs=1767 hole_filled=2658 sack_sent=2852 dsack_sent=7 ack_segs=5878 ack_bytes=170679801 ack_zero=2715 ack_gap_ns=1735585229 ack_gap_n=3162 gap_lt100us=29 gap_100_300us=52 gap_300us_1ms=3030 gap_1_3ms=30 gap_ge3ms=21 stretch_1_2=15 stretch_3_8=139 stretch_9_32=148 stretch_33_64=2851 stretch_ge65=10 paces=3992 pace_ns=1573068522 itr_units=5702160 rdt_writes=3994 cpu_ns=404467849 syscalls=11656 syscall_ns=1459158993 runq_ns=0 wall_ns=1785161991
[2026-10-11 22:01:49 34.232 test-runner pid=9] https_download: lan run=3 k=32 lan_ms=2.80/8.66/10.57/11.73 n=30
[2026-10-11 22:01:49 34.232 test-runner pid=9] https_download: whole bytes=170439044 sha256=1a9ee8caaa18a3e433fef93cea8a55dc1ebd478ed761b2fef69d4565f9d00e7f secs=1.701 mbps=801.7 rtt_ms=[16.5 15.7 14.8 16.1 15.2] busy=0.064 cpus=[0.025 0.002 0.228 0.003 0.002 0.002 0.244 0.008] cpu_s=0.872 cpu_ms_per_mb=5.11 tcp_ms=21.5 tls_ms=40.5 run=3 k=32
[2026-10-11 22:01:49 34.232 test-runner pid=9] https_download: perf run=3 k=32 bytes=170439044 secs=1.803 aperf=1726263692 app.cpu_ns=391483594 app.runq_ns=0 app.syscall_ns=1454378684 app.syscalls=3232 k.idle_exit_cycles=112749518 k.idle_exits=10866 k.inbox_fires=4007 k.inbox_looks=4042 k.inbox_rearms=7 k.irq_cycles=34020429 k.kicks=6847 k.pipe_copy_bytes=341363830 k.pipe_lock_hold_cycles=110177676 k.pipe_lock_spin_cycles=16509046 k.pipe_lock_takes=30243 k.pipe_read_copy_cycles=49363082 k.pipe_write_copy_cycles=32904082 k.switches=13772 k.syscalls=15182 mperf=2158558680 stamp=34932249789
[2026-10-11 22:01:49 34.232 netstack] netstack: cadence K=32
[2026-10-11 22:01:51 36.277 netstack] netstack: tcp closed: (client gone) snd_shift=9 rcv_shift=7 rcv_capacity=4194304 rcv_wnd=4194304 rcv_rtt=Some(14.662952ms) rcv_mss=1424 srtt=Some(14.68ms) cwnd=14280 smss=1428 | stack rto=0 loss_probe=0 loss_probe_recovery=0 retransmit_bytes=0 dsack=0 sack_recovery=0
[2026-10-11 22:01:51 36.277 netstack] netstack: prof passes=5024 nic_ready=4907 frames_rx=122841 frames_tx=7879 pipe_w=3924 pipe_w_bytes=170679031 pipe_w_refused=0 pipe_r=10 pipe_r_empty=5 bridges=4 b0=81 b1=37 b2=56 b3_4=1069 b5_8=331 b9_16=99 b17_64=3350 b65=1 watches=5007 submits=5032 tx_calls=5024 owed=0 empty_passes=63 cy_pass=912836287 cy_begin_pass=25113802 cy_receive=721553860 cy_poll_rx=9535764 cy_rx_done=6021302 rx_done=122841 cy_node_frame=538728743 cy_node_settle=49832161 cy_checksum=94896273 checksum_bytes=178775415 cy_ring_write=92736754 ring_write_bytes=170679543 cy_fire=0 cy_transmit=87979574 cy_card_tx=3813747 cy_settle=17965702 cy_watch=6457302 cy_pipe_w=61042471 cy_pipe_r=61253 cy_wait=4084395156 cy_answers=3082300 cy_bridge=807834 ooo_segs=2008 hole_filled=4714 sack_sent=4404 dsack_sent=26 ack_segs=7839 ack_bytes=170679031 ack_zero=4071 ack_gap_ns=2002213511 ack_gap_n=3767 gap_lt100us=63 gap_100_300us=63 gap_300us_1ms=3555 gap_1_3ms=45 gap_ge3ms=41 stretch_1_2=40 stretch_3_8=278 stretch_9_32=301 stretch_33_64=3145 stretch_ge65=4 paces=4943 pace_ns=1705218903 itr_units=5996464 rdt_writes=4946 cpu_ns=427445325 syscalls=14261 syscall_ns=1720291746 runq_ns=0 wall_ns=2070187112
[2026-10-11 22:01:51 36.281 test-runner pid=9] https_download: lan run=4 k=32 lan_ms=2.98/7.10/8.96/13.34 n=35
[2026-10-11 22:01:51 36.281 test-runner pid=9] https_download: whole bytes=170439044 sha256=1a9ee8caaa18a3e433fef93cea8a55dc1ebd478ed761b2fef69d4565f9d00e7f secs=1.968 mbps=692.9 rtt_ms=[16.5 15.7 14.8 16.1 15.2] busy=0.059 cpus=[0.030 0.002 0.205 0.002 0.002 0.002 0.223 0.004] cpu_s=0.926 cpu_ms_per_mb=5.43 tcp_ms=21.0 tls_ms=38.9 run=4 k=32
[2026-10-11 22:01:51 36.281 test-runner pid=9] https_download: perf run=4 k=32 bytes=170439044 secs=2.048 aperf=1835285465 app.cpu_ns=398404698 app.runq_ns=0 app.syscall_ns=1696123900 app.syscalls=3830 k.idle_exit_cycles=123519830 k.idle_exits=13254 k.inbox_fires=4956 k.inbox_looks=4995 k.inbox_rearms=1 k.irq_cycles=39182325 k.kicks=8303 k.pipe_copy_bytes=341362710 k.pipe_lock_hold_cycles=117422982 k.pipe_lock_spin_cycles=19311806 k.pipe_lock_takes=35721 k.pipe_read_copy_cycles=49947857 k.pipe_write_copy_cycles=33939512 k.switches=16688 k.syscalls=18408 mperf=2264996808 stamp=39664547129
[2026-10-11 22:01:51 36.282 netstack] netstack: cadence K=32
[2026-10-11 22:01:52 37.979 netstack] netstack: tcp closed: (client gone) snd_shift=9 rcv_shift=7 rcv_capacity=4194304 rcv_wnd=4194304 rcv_rtt=Some(18.23428ms) rcv_mss=1424 srtt=Some(14.574ms) cwnd=14280 smss=1428 | stack rto=0 loss_probe=0 loss_probe_recovery=0 retransmit_bytes=0 dsack=0 sack_recovery=0
[2026-10-11 22:01:52 37.979 netstack] netstack: prof passes=3508 nic_ready=3420 frames_rx=121127 frames_tx=5034 pipe_w=2855 pipe_w_bytes=170679097 pipe_w_refused=0 pipe_r=10 pipe_r_empty=5 bridges=4 b0=41 b1=12 b2=15 b3_4=721 b5_8=80 b9_16=47 b17_64=2591 b65=1 watches=3493 submits=3518 tx_calls=3508 owed=0 empty_passes=32 cy_pass=821883837 cy_begin_pass=36134204 cy_receive=676017274 cy_poll_rx=9256167 cy_rx_done=5868563 rx_done=121127 cy_node_frame=511999574 cy_node_settle=49398715 cy_checksum=85763646 checksum_bytes=176294393 cy_ring_write=87368282 ring_write_bytes=170679609 cy_fire=0 cy_transmit=47895910 cy_card_tx=2243619 cy_settle=12922748 cy_watch=4550147 cy_pipe_w=50957810 cy_pipe_r=61899 cy_wait=3279975791 cy_answers=5923901 cy_bridge=1227983 ooo_segs=1743 hole_filled=1698 sack_sent=2313 dsack_sent=5 ack_segs=5003 ack_bytes=170679097 ack_zero=2265 ack_gap_ns=1653114047 ack_gap_n=2737 gap_lt100us=35 gap_100_300us=62 gap_300us_1ms=2603 gap_1_3ms=21 gap_ge3ms=16 stretch_1_2=12 stretch_3_8=95 stretch_9_32=130 stretch_33_64=2493 stretch_ge65=8 paces=3467 pace_ns=1495376809 itr_units=5557072 rdt_writes=3467 cpu_ns=404893043 syscalls=10101 syscall_ns=1384385607 runq_ns=0 wall_ns=1702132983
[2026-10-11 22:01:53 38.031 test-runner pid=9] https_download: lan run=5 k=32 lan_ms=3.75/11.18/12.21/13.30 n=28
[2026-10-11 22:01:53 38.031 test-runner pid=9] https_download: whole bytes=170439044 sha256=1a9ee8caaa18a3e433fef93cea8a55dc1ebd478ed761b2fef69d4565f9d00e7f secs=1.621 mbps=840.9 rtt_ms=[16.5 15.7 14.8 16.1 15.2] busy=0.064 cpus=[0.022 0.003 0.232 0.000 0.000 0.000 0.251 0.003] cpu_s=0.829 cpu_ms_per_mb=4.86 tcp_ms=22.6 tls_ms=41.1 run=5 k=32
[2026-10-11 22:01:53 38.031 test-runner pid=9] https_download: perf run=5 k=32 bytes=170439044 secs=1.748 aperf=1630324793 app.cpu_ns=388523900 app.runq_ns=0 app.syscall_ns=1399869811 app.syscalls=2809 k.idle_exit_cycles=122347066 k.idle_exits=9563 k.inbox_fires=3468 k.inbox_looks=3501 k.inbox_rearms=3 k.irq_cycles=34969634 k.kicks=6081 k.pipe_copy_bytes=341362254 k.pipe_lock_hold_cycles=107375021 k.pipe_lock_spin_cycles=16241089 k.pipe_lock_takes=26293 k.pipe_read_copy_cycles=48655773 k.pipe_write_copy_cycles=31976029 k.switches=12222 k.syscalls=13202 mperf=2089107624 stamp=33870847227
[2026-10-11 22:01:53 38.032 netstack] netstack: cadence K=32
[2026-10-11 22:01:54 39.884 netstack] netstack: tcp closed: (client gone) snd_shift=9 rcv_shift=7 rcv_capacity=3957268 rcv_wnd=3957248 rcv_rtt=Some(15.033446ms) rcv_mss=1424 srtt=Some(15.255ms) cwnd=14280 smss=1428 | stack rto=0 loss_probe=0 loss_probe_recovery=0 retransmit_bytes=0 dsack=0 sack_recovery=0
[2026-10-11 22:01:54 39.884 netstack] netstack: prof passes=4799 nic_ready=4703 frames_rx=122444 frames_tx=7565 pipe_w=3500 pipe_w_bytes=170679009 pipe_w_refused=0 pipe_r=10 pipe_r_empty=5 bridges=4 b0=49 b1=31 b2=29 b3_4=1267 b5_8=201 b9_16=68 b17_64=3152 b65=2 watches=4781 submits=4816 tx_calls=4799 owed=0 empty_passes=38 cy_pass=870285746 cy_begin_pass=27872937 cy_receive=691778120 cy_poll_rx=9527402 cy_rx_done=6045103 rx_done=122444 cy_node_frame=515690883 cy_node_settle=50136713 cy_checksum=91386921 checksum_bytes=178203137 cy_ring_write=80726651 ring_write_bytes=170679521 cy_fire=0 cy_transmit=79928229 cy_card_tx=3367088 cy_settle=15572229 cy_watch=5909512 cy_pipe_w=55816243 cy_pipe_r=62558 cy_wait=3726076228 cy_answers=3536639 cy_bridge=880749 ooo_segs=2991 hole_filled=2219 sack_sent=4208 dsack_sent=8 ack_segs=7529 ack_bytes=170679009 ack_zero=4135 ack_gap_ns=1806309914 ack_gap_n=3393 gap_lt100us=37 gap_100_300us=63 gap_300us_1ms=3238 gap_1_3ms=24 gap_ge3ms=31 stretch_1_2=16 stretch_3_8=161 stretch_9_32=188 stretch_33_64=3019 stretch_ge65=10 paces=4750 pace_ns=1596868340 itr_units=5776480 rdt_writes=4753 cpu_ns=410887618 syscalls=13361 syscall_ns=1569727620 runq_ns=0 wall_ns=1904825966
[2026-10-11 22:01:54 39.942 test-runner pid=9] https_download: lan run=6 k=32 lan_ms=2.89/8.08/9.39/14.81 n=32
[2026-10-11 22:01:54 39.942 test-runner pid=9] https_download: whole bytes=170439044 sha256=1a9ee8caaa18a3e433fef93cea8a55dc1ebd478ed761b2fef69d4565f9d00e7f secs=1.770 mbps=770.2 rtt_ms=[16.5 15.7 14.8 16.1 15.2] busy=0.062 cpus=[0.025 0.002 0.226 0.002 0.002 0.002 0.234 0.004] cpu_s=0.880 cpu_ms_per_mb=5.16 tcp_ms=23.9 tls_ms=42.4 run=6 k=32
[2026-10-11 22:01:54 39.942 test-runner pid=9] https_download: perf run=6 k=32 bytes=170439044 secs=1.909 aperf=1799482509 app.cpu_ns=399438576 app.runq_ns=1186112 app.syscall_ns=1552900902 app.syscalls=3481 k.idle_exit_cycles=110644405 k.idle_exits=12510 k.inbox_fires=4751 k.inbox_looks=4787 k.inbox_rearms=2 k.irq_cycles=35946929 k.kicks=7762 k.pipe_copy_bytes=341362414 k.pipe_lock_hold_cycles=114790432 k.pipe_lock_spin_cycles=15305043 k.pipe_lock_takes=32386 k.pipe_read_copy_cycles=49369709 k.pipe_write_copy_cycles=33595771 k.switches=15692 k.syscalls=17144 mperf=2219947080 stamp=36972805609
[2026-10-11 22:01:54 39.942 cpu2 kernel] exit: test_rs_https_download pid=9 code=0 cpu=3307ms peak=44MB allocs=17 frees=0 syscalls=21318 syscall_wall=23970ms 0=131 1=20730 6=29 9=7 10=105 14=8 24=24 40=7 41=6 49=17 50=1 51=1 58=1 59=1 62=33 63=15 66=30 72=1 73=2 75=14 76=12 89=1 90=6 91=1 94=20 99=2 102=59 103=12 104=1 105=4 106=5 124=32
[2026-10-11 22:01:54 39.942 test-runner] ===TEST_END test_rs_https_download exit=0===
[2026-10-11 22:01:54 39.942 test-runner] ===TEST_START reboot===
[2026-10-11 22:01:54 39.943 cpu0 kernel] spawn: /system/bin/reboot pid=10 (layout=0ms tls=0ms total=1ms)
[2026-10-11 22:01:54 39.944 supervisor] supervisor: power: the machine stops, and logkeeper makes the log whole first (Reboot)
  run: sudo -n '/usr/bin/dd' 'if=/dev/sda3' 'bs=4M'  (69632 sectors)
toyos-fat32-check: the log partition's 35651584 bytes check out
phases: preamble 0.6 s, wipe 0.5 s, flash 10.9 s (dd 10.4 s), entry 2.9 s, down 11.0 s, read_log 0.8 s, raw_log 1.9 s
readback written to <scratchpad>/netring/scout/download
PASS: the machine booted ToyOS in 1072 ms

@Japabu

Japabu commented Oct 11, 2026

Copy link
Copy Markdown
Collaborator Author

Design acceptance, recorded by the orchestrator for the owner.

The owner accepted the session-region design after the scout's result (#863 (comment)). His answer to "Build it?", verbatim: "i agree but explain why an abi change shouldnt that be completely userland? isnt this why we have userland drivers?"

His question sets the constraint for every stage: the data path is userland's. A kernel change lands only where the kernel is the sole authority able to answer, as stage 1's two answers are: what a received handle is, and a lent region's length and whether it is kernel-allocated RAM. A stage that adds anything else to the kernel says why userland cannot do it.

Stages build in the order the body gives, each its own pull request; stage 1 first.

Japabu and others added 2 commits October 12, 2026 11:18
main moved by issues and tests/common/qemu.rs alone since 06788fc;
nothing under kernel, sdk, system, lib or userland that the design
cites changed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
…design as amended

Stage 0 is done: the scout's reading on #863 (S = 0.192 ms per MB, the
copies 73% of the hold) joins the evidence. The owner's acceptance and
its constraint, that the kernel gains only what it alone can answer,
is the design line every stage keeps
(#863 (comment)).

Stage 1 is #867, narrowed by the orchestrator's ruling there
(#867 (comment)):
the kernel's one new answer is fstat's DeviceMemory, SYS_HANDLE_RECV
answers no kind and SYS_SHM_MAP no length, and a receiver judges a lent
region through fstat before it maps it. It closes the lent-window issue
alone; issues/a-received-handle-has-no-knowable-type.md stays open,
narrowed by #867. Stage 2 is #878.

The exit read pipe_copy_bytes "per MB downloaded", a unit the row does
not print: the row is per byte downloaded, 2.00 today.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
@Japabu

Japabu commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator Author

Review of #863 at aecdf5e50, against .claude/agents/reviewer.md on origin/main (131970a). Round 1.

Net lines (git diff --shortstat origin/main...aecdf5e50): 2 files changed, 92 insertions(+), both under issues/. Production 0, tests 0.

Checked

  • Round 3's table. I re-read all 30 cells from the three B judge logs (runs 3 and 4 of each boot, all K = 32). C0, hold, spin, cy_ring_write and cy_pipe_w match, pipe_copy_bytes is 2.0028 to 2.0029 per byte, and the medians 5.447, 0.281, 0.047, 0.225 and 0.139 hold.
  • The scout. I recomputed R, W, H, P, takes, S, H − R − W and pipe_copy_bytes per run from the judge log's six perf run=N k=32 lines at tsc_hz=2419361856, and took C0 and Mb/s from the same log. Every cell and median matches 6114364774. R + W ≤ H holds in all six runs, and the third rule fires in run 2 only. The 73%, 3.6% and 4.1% follow from those numbers.
  • The amendments. The body's stage 1 and stage 2 text matches 6120212295 and 6121103693.
  • --ci host. host.log at evidence f48621e ends Host: 73 step(s), all green. It ran 09:20 to 09:35Z, after aecdf5e was committed at 09:19:47Z. The merge 9c85cf5 brings in only main.
  • Identifying data. I searched the two files, the body, the scout's comments and host.log for build/sourcegate.rs's shapes and found none. The flash log masks its MAC, its IPs, the vendor, the model and the BIOS.
  • Citations. Every path and issue the two files cite resolves. SYS_PIPE_MAP has no caller outside tests/guest in the tree, in rust/library or in ~/.cargo/git/checkouts/.

BLOCKER

  1. issues/netstack-moves-every-byte-through-two-kernel-pipes.md:37-39. "and dropped zero copy from the NIC into an application's memory" records the drop as the owner's own ruling. He gave it on a condition: ruling 2, as the body relays it, drops zero copy only "unless the design shows a useful benefit". This design then dropped it on its own reading of a 4% gain. That is a ruling stated more broadly than he gave it, and a design presented as his. The next agent will read the track as the owner closing zero copy whatever a future NIC offers. Say instead that the design dropped it under his condition, for the gain its zero-copy section reads.
  2. issues/a-pipe-is-a-two-mebibyte-page-for-a-mapping-nothing-makes.md:22. The defect has no owner. A compromise the branch found is recorded with an owner, evidence and an exit condition (Growth; root CLAUDE.md, "Zero silent debt").
  3. issues/a-pipe-is-a-two-mebibyte-page-for-a-mapping-nothing-makes.md:23-26. Two of the exit's three clauses read nothing.
    • "Sized for a byte stream rather than for a mapping" names no size or allocation anything can check.
    • The guest test reads machine-wide used memory (SYS_SYSINFO's header, pmm::stats). That figure moves by 2 MiB whenever any process demand-faults a page, because process memory is 2 MiB pages, and whenever the kernel heap grows (pmm::claim). The test can go red on a correct fix and green on no fix.
    • Fix: state what is checkable, for example that a pipe's ring is not a pmm::alloc_page page and PIPE_SIZE is not PAGE_2M. Or cut both clauses: the deletion clause can be read on its own.
  4. issues/netstack-moves-every-byte-through-two-kernel-pipes.md:64-66. The T14 half of the exit reads pipe_copy_bytes, and no tree that lands has that counter. It exists only in round 3's measurement-only commits 86c2093 and b245592, and on the scout 2f9e090, which descends from them (git log --all -S pipe_copy_bytes). main's sdk/abi/src/counters.rs has no PipeCopyBytes. A session build boots without it, so the reading cannot be taken as written. Name the instrument the session boot applies and what it applies on, or make this half a reading the session build has.
  5. issues/netstack-moves-every-byte-through-two-kernel-pipes.md:54-57. Stage 3 has no exit. The body says this stage's T14 boot settles the receive-path claim against the scout's rows. The *Piped messages go only in stage 4, so nothing can read stage 3 as done. Give stage 3 its own exit; the boot, with its instrument, belongs there.
  6. PR body, "std, poll, libc and mio", the read/write bullet. The design as recorded loses a wake.
    • netstack rings both rx_data and tx_room on the connection's one netstack→client direction. The record has a reader thread and a writer thread of one process each wait on that connection, and each "drains the doorbell bytes after the wake".
    • The reader can drain the byte rung for tx_room. The writer's wait then finds the pipe empty: a blocking read retries try_read, and an inbox watch re-reads has_data. So the writer sleeps. netstack has already exchanged tx_room to 0, so it never rings again, and a TcpStream written from one thread and read from another hangs with room in its send ring.
    • The next bullet's "so the wake that follows is never lost" is therefore false of this design. The acceptance covers stage 3, so no later design round will catch this.
    • Fix: amend the record so that a wake rung for one direction cannot be consumed by the other direction's sleeper, have the amendment accepted in a comment, and only then land.

NOTE

  1. PR body, "The roast", Cost: "about 3,700 lines of tests in node/tests/streams.rs, listeners.rs and datagram.rs". At aecdf5e, and at 06788fc, those files are 1,440 + 1,106 + 320 = 2,866 lines. This one is the orchestrator's to correct.
  2. PR body, "What it saves" and the reading's third point: "at most S = 0.192". S counts only the PIPES hold and spin. The design also removes netstack's pipe-write syscalls and the client's read syscalls, whose entry, lookup and return run outside the hold. So S bounds the lock's share, not the receive-path saving, and stage 3's boot can legitimately read more than S. This one is also the orchestrator's to correct.
  3. issues/netstack-moves-every-byte-through-two-kernel-pipes.md:63-64. The exit's datagram half reads only names. A datagram socket that kept toyos::net's pipe_pair under another name would pass rg 'Piped|DATA_HANDLES|connection_join', and the T14 half covers TCP only. rg -n 'pipe_pair' sdk/toyos/src/net.rs returning nothing would read it.

SEND BACK

Japabu and others added 2 commits October 12, 2026 12:05
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
…for send room, and the pipe page has an owner

Review #863 (comment).

The owner ruled zero copy out unless the design showed a useful benefit;
the track said he dropped it. It now says the design dropped it under his
condition, on its own reading of a 4% gain (BLOCKER 1).

Stage 3 has its own exit (BLOCKER 5): a loom model of one stream's reader
and writer asleep at once, and the T14 boot of round 3's download. That
boot reads pipe_copy_bytes, which no landing tree has: round 3's
b245592 added it, and the boot carries the scout's measurement-only
commits onto stage 3's head (BLOCKER 4). The track's own exit reads
stage 3's and the pipe ABI gone, `pipe_pair` in toyos::net included, so a
datagram socket cannot keep its pipes under another name (NOTE 3).

Stage 3 rings a writer waiting for send room on a pipe of the stream's
own, the amendment PR #863's body puts to the orchestrator: one
netstack-to-client doorbell for both wants lets a reader drain the
writer's wake, and a TcpStream split across two threads hangs
(BLOCKER 6). A scratch loom model over #878's stream ends at 7ea0ff9
deadlocks with one doorbell and passes with two.

The scout's S bounds the lock's share the design removes, not the
receive path's saving: the pipe syscalls' work outside the hold goes too.

The pipe-page defect has an owner, the orchestrator who stages the track
that pays its pages (BLOCKER 2), and an exit two searches read
(BLOCKER 3): the used-memory guest test it named reads a machine-wide
figure every demand fault and heap growth moves.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
Japabu added a commit to ToyOSOrg/evidence that referenced this pull request Oct 12, 2026
… run -- --ci host, EXIT=0

Run 2026-10-12 10:08:49Z to 10:12:22Z, on wt/toyos-netring with main at 528b9a6c2 merged.
Japabu added a commit to ToyOSOrg/evidence that referenced this pull request Oct 12, 2026
@Japabu

Japabu commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator Author

Triage of an external automated review (ChatGPT, supplied by the owner)

Read against #863 at d0181491b (origin/main c0cdddf4e), its body at that head, the tree, and rounds 1 to 3 (6121859611, 6122446433, 6125978857). The external review links 148c3de6e, which predates amendments A and B, so each claim is judged at d0181491b. Pins read: the mio fork at d1edcaa and the tokio fork at 902fb97, both as Cargo.lock names them.

Counts: holds 3, already raised 2, does not hold 4, can't tell 0.

Classification

  1. "Accepted TCP connections can receive data before their shared region exists" (its P1 CLAUDE.md: soundd drives both cards, and three retired ABI numbers #1): holds. See BLOCKER 1.
  2. "The proposed mio readiness model can strand readable and writable sockets" (P1 landing: main moves through pull requests, and the gate moves with it #2): holds. See BLOCKER 2. Its premise, that mio registers the connection for READABLE even for a writable interest, is 148c3de6e's text. Amendment A moved WRITABLE to the bell, and the gap is still there.
  3. "FromRawFd conflicts with the doorbell-only connection protocol" (P1 user machine state: one bracket across every Ring 3 boundary, x87 included #3): holds. See BLOCKER 3.
  4. "Duplicated descriptors can violate the SPSC ring contract" (P2 landing: three things the first pull requests found #4): already raised.
  5. "Blocking accept() must not block netstack's event loop" (P2 ci-plan: the workflow table, and seventeen jobs against a budget of twenty #5): does not hold.
    • "waits in netstack, one per listener" describes a request netstack holds open. Netstack's thread does not block on it.
    • system/CLAUDE.md already rules out the event-loop reading: "A server never blocks on a client" and ipc::FrameRx.
    • Cancellation is stage 4's to build. Nothing the record says about it is false.
  6. "The completion criterion does not verify every promised deletion" (P2 ci: a run on main is never cancelled, or the trigger has nothing to read #6): does not hold at head.
    • Since a91748099, issues/netstack-moves-every-byte-through-two-kernel-pipes.md:86-88 searches sdk system kernel for connection_join|CONNECTION_JOIN. Today it hits kernel/src/syscall/dispatch.rs:396 and kernel/src/syscall/ipc.rs:88.
    • A separate test of a removed number would guard what that search already reads.
  7. "0.192 ms/MB is an estimated upper bound, not an observed improvement": already raised.
  8. "Superseding the earlier statement in the PR description that the measurement was still pending": does not hold at head. "The reading" records the judged scout (6114364774), and the body has no pending text left.
  9. "The PR also reports successful host tests, although the GitHub Actions workflow for the head commit was skipped": does not hold.
    • host, guest / suite and toolchain / build report skipped on a pull_request run by design (root CLAUDE.md, "Build & test").
    • The body's Gates records cargo run -- --ci host on d0181491b, EXIT=0. It ran from 14:14:00Z to 14:22:23Z, after the head was committed at 14:13:55Z.
    • The log at evidence bed60383 ends Host: 76 step(s), all green (line 9012).

BLOCKER

  1. Bytes that arrive before an accept have nowhere to go.
    • Where: the PR body's "The session-region design" ("The rings are the TCP buffers, not a copy of them"), "The protocol" (TcpAccept "on a new connection with a fresh region, answered as a connect is") and "What it deletes" ("[tcp]'s Vec storage under Ring"); issues/netstack-moves-every-byte-through-two-kernel-pipes.md:57-58, 81-82.
    • The tree: a passive child receives payload before any accept, and the record gives those bytes no home.
      • system/netstack/shard/tcp/src/stack.rs:852-864 puts the child on ready, then runs the segment through for_conn as ESTABLISHED.
      • Its SYN-ACK has already advertised a window (stack.rs:418).
      • system/netstack/node/tests/listeners.rs:449-455 pins "what arrived before the accept moves in it".
    • Why each answer changes a claim the record makes:
      • A private ring until the accept keeps the Vec storage the record deletes, and adds a copy at the accept.
      • A zero window until the accept holds every peer's first bytes until a window update follows the accept.
      • A region netstack makes at the handshake contradicts "The client makes both". It also commits 8 MiB of contiguous memory for each waiting child, spent by any peer that completes a handshake.
    • Fix: name the choice and its cost in the record, have it accepted, and give stage 4's exit the case.
  2. A mio source that is already ready when it is registered never gets its first event.
    • Where: the PR body's "std, poll, libc and mio", readiness bullet: "This is exactly mio's contract, since mio reads until WouldBlock" and "a source is read to WouldBlock, which leaves the want armed". Also Amendment A: tx_room "rings the stream's bell … netstack writes nothing else into it", and the bell's page is paid "only [by] a stream whose writer once found its send ring full".
    • mio's contract is more than reading to WouldBlock. Its connect protocol is "Register the returned stream with at least [write interest]. Wait for a (writable) event." (mio src/net/tcp/stream.rs:73-74; the Poll example, src/poll.rs:73-81).
    • tokio waits for that event before any I/O.
      • connect_mio awaits poll_write_ready (tokio tokio/src/net/tcp/stream.rs:155).
      • Every first read and write waits on readiness first (poll_io, tokio/src/runtime/io/registration.rs:168-169).
    • What the record does:
      • The WRITABLE watch reads the bell, and nothing rings the bell for a stream whose send ring never filled.
      • The READABLE watch reads the connection, and netstack rings it only for an rx_data someone armed. No registration arms it.
    • Result: tokio::net::TcpStream::connect waits forever. So does sshserver's first I/O on an accepted stream (system/sshserver/src/main.rs:730-736, tokio accept then russh run_stream).
    • Today's behaviour: the mio fork watches the send pipe for WRITABLE (src/net/tcp/toyos_stream.rs:177-178). The kernel answers that watch by room (kernel/src/object/ops.rs:867-869), so it fires at once.
    • Fix: amendment B's mechanism reaches this, but the record has to say so. Register and reregister would take each interest's end, arm its want, look, and ring netstack. Netstack then rings back each set want whose direction is ready. Stage 3's exit must also carry a model or test of a source registered while ready, in both directions, with a control that skips the arm.
  3. A Region request and its answer share a connection whose every byte the record calls a doorbell.
    • Where: the PR body's "The session-region design" ("From the answer on, the connection carries nothing but one-byte doorbells each way and its own hang-up"); Amendment A ("a byte there sends it to look at both rings"); and the handle bullet (FromRawFd "asks netstack for the region on the connection (MsgType::Region …)").

    • Netstack never sees the request. A frame starts with an 8-byte IpcHeader (sdk/toyos/src/ipc.rs:93-99), which netstack would drain, with its payload, as doorbells. A FromRawFd of a stream moved in from another process then waits for an answer that never comes.

    • The answer can go to the wrong process. It would land in the pipe the stream's reader drains as its doorbell ("a wait takes every byte there"), so another holder of the connection can take it.

    • No exit catches it: stage 3's exit names no FromRawFd case.

    • Fix, either of:

      • Say how each direction tells a frame from a doorbell, and who may read the answer.
      • Refuse Region for a moved-in handle. That also removes the cross-process race the body's Risk records and "What I am unsure of" asks about.

      Either way, have the choice accepted.

NOTE

None.

Japabu and others added 2 commits October 12, 2026 16:38
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
Japabu added a commit to ToyOSOrg/evidence that referenced this pull request Oct 12, 2026
… run -- --ci host, EXIT=0; amendment D's loom model and amendment C's pre-accept mutation, measurement only
@Japabu

Japabu commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator Author

Amendments C, D and E, proposed for the orchestrator's ruling

At e7e1179, main at 36aff86 merged. They answer the three BLOCKERs of the triage of an external review (#863 (comment)). Each was read again against the tree and holds. Each amendment follows published practice where it exists, as the brief relays the owner's standing ruling and as #885 made the role prompts' rule. None is in the issue files: each section says what its acceptance adds to the track. The PR body carries a summary of each and links here.

Amendment C, proposed: a passive child's bytes wait in netstack until its accept

For the orchestrator's ruling; not in the track until it.

The defect (the triage's BLOCKER 1). Read again at e7e1179, it holds.

  • [tcp] answers a SYN in LISTEN at once with a SYN-ACK that offers a window: min(receive_buffer, RECEIVE_BUFFER_INITIAL), 65,535 bytes (system/netstack/shard/tcp/src/stack.rs:418, lib.rs:157).
  • The ACK that ends the handshake puts the child on its listener's ready queue, then runs the segment's text as ESTABLISHED (stack.rs:852-864).
  • Two node tests pin what arrives before the accept: a_listener_answers_a_syn_and_wakes_its_owner_when_the_handshake_ends ("what arrived before the accept moves in it", system/netstack/node/tests/listeners.rs:455) and an_accept_answers_the_option_of_a_stream_its_own_pass_let_go (listeners.rs:948-958).
  • The design makes a stream's region only at the accept and deletes [tcp]'s Vec storage, so those bytes have nowhere to go. If netstack acknowledges them, they are lost. If it does not, the window its SYN-ACK offered retreats, and RFC 9293 §3.10.7.4 says "The total of RCV.NXT and RCV.WND should not be reduced".

Published practice. Two shared-memory stacks answer this two ways.

  • TAS defers the handshake. listener_packet keeps the SYN in the listener's backlog and sends nothing (tcp.c:827-891). listener_accept runs only once an accept is posted (tcp.c:893-965), and tcp_accept posts one with its receive and transmit buffers already allocated (conn_alloc, tcp.c:322-347 and 634-651). conn_reg_synack then sends the SYN-ACK and completes the accept in the same step (tcp.c:596-612). No byte arrives before the accept because no SYN-ACK has gone.
  • mTCP keeps them in the stack, as a BSD-socket kernel does. The handshake's ACK makes the child ESTABLISHED and queues it on the listener's acceptq (tcp_in.c:871-877). Its payload goes into a receive buffer the stack allocates from its own pool on the first byte (ProcessTCPPayload, tcp_in.c:617-630). mtcp_accept then hands the stream over with that buffer (api.c:582).

The amendment: mTCP's answer.

  • netstack keeps a passive child's bytes in a buffer of its own, [tcp]'s storage as it is today, until an accept lends a region.
  • At the accept, netstack copies the child's bytes into the region's receive ring at their offsets, with any out-of-order range and a FIN, frees its buffer, and only then answers. From then on the ring is the region.
  • An active open never has such a buffer: its region exists before its SYN.
  • The bound. A child holds at most 65,535 bytes. Its window starts at RECEIVE_BUFFER_INITIAL, and the capacity grows only by what the user reads (rx.rs's module), which no child has. A listener holds at most LISTEN_READY, 128, children: just under 8 MiB a listener, today's bound, allocated as bytes arrive (ring.rs grows by doubling).
  • One ring. [tcp]'s Ring keeps one cursor discipline over two places its bytes may live: netstack's heap for a passive child, and the region from its accept on. The bytes move once.

Why this and not TAS's.

  • TAS leaves RFC 9293. It holds a SYN unanswered. RFC 9293 §3.10.7.2 answers a SYN in LISTEN with <SEQ=ISS><ACK=RCV.NXT><CTL=SYN,ACK> and moves to SYN-RECEIVED, and the first node test above asserts exactly that.
  • TAS binds an accept to an unproven SYN. It ties an application's posted accept and its buffers to a SYN whose source no handshake has proven: here, an 8 MiB contiguous region. A spoofed SYN would hold an accept and a region for up to SYNACK_GIVE_UP, 60 s. Today it costs a SYN-RECEIVED TCB and never reaches the application.
  • A peer's connect waits on the server's accept. The backlog no longer completes handshakes, so every peer of a server whose accept lags waits on that application rather than on the stack.

Why not the others.

  • A zero window until the accept. No buffer and no copy. But on every connection a peer that speaks first (TLS, HTTP) waits one round trip more, for the window update the accept sends. A lost update then waits on the peer's persist timer. Neither stack above does this.
  • A region netstack makes at the handshake. It contradicts "The client makes both", and it commits 8 MiB of contiguous memory per child to any peer that completes a handshake: 1 GiB a listener at LISTEN_READY.
  • Regions a listener posts ahead. They commit N × 8 MiB up front, and an empty pool still needs one of the answers above.
  • Dropping text that arrives before the accept. Unacknowledged, the peer sends it again after its retransmission timeout. Acknowledged, it is lost.

What it costs.

  • A copy, once per accepted stream, of at most 65,535 bytes, and only of the bytes that arrived before its accept.
  • [tcp]'s heap storage stays, for passive children alone.
  • Two statements stop being true as written. "The rings are the TCP buffers, not a copy of them" holds from the accept on. "What it deletes" keeps [tcp]'s heap storage for a passive child.

What would have caught it: the node tests above. The control drops what a child held at its accept, which is what the design as written does to those bytes. git apply --check passes, and the tests are run at e7e1179, then mutated, then restored:

cargo test -p toyos-net-node --test listeners exit result
at e7e1179 0 31 passed
with nowhere.patch 101 29 passed; both tests above failed, the first with left: [], right: [104, 101, 108, 108, 111] ("hello")
restored git status --porcelain empty

The runner and its log, whole: run.sh and pre-accept.log.

What acceptance adds to the track.

  • Stage 4's exit gets a node test. A child receives text before its accept: in order, past a hole, and with its FIN behind it. The accepted stream's region then reads all of it in order, then its end. The test's control drops what the child held at the accept and goes red.
  • Stage 3 keeps [tcp]'s heap storage beside the region.

Amendment D, proposed: a mio registration arms its wants

For the orchestrator's ruling; not in the track until it.

The defect (the triage's BLOCKER 2). Read again at e7e1179, it holds. The readiness bullet says "This is exactly mio's contract, since mio reads until WouldBlock". That is not all of mio's contract.

  • mio waits for an event after registering. Its connect protocol is "2. Register the returned stream with at least [write interest]. 3. Wait for a (writable) event." (mio d1edcaa, src/net/tcp/stream.rs:73-74). Its Poll example registers a fresh stream and waits for is_writable (src/poll.rs:69-86).
  • tokio does the same. connect_mio awaits poll_write_ready before anything else (tokio 902fb97, tokio/src/net/tcp/stream.rs:155). poll_io waits for readiness before every first operation (tokio/src/runtime/io/registration.rs:169).
  • The selectors mio wraps report a ready source when it is registered. Linux's ep_insert polls the file and says "If the file is already "ready" we drop it inside the ready list" (fs/eventpoll.c:1720-1730, v6.12).
  • Under the design, no registration arms a want.
    • The WRITABLE watch reads the bell, which netstack rings only for a set tx_room.
    • The READABLE watch reads the connection, rung only for a set rx_data.
    • So tokio::net::TcpStream::connect waits forever on an empty send ring. sshserver's accepted stream (system/sshserver/src/main.rs:730-736, tokio's accept then russh's run_stream) waits forever on bytes that came before it registered, or on a FIN.
  • Today it fires at once. The mio fork watches the send pipe for WRITABLE (toyos_stream.rs:177-178), and the kernel answers that watch by room (has_space, kernel/src/object/ops.rs:867-869). The fork's select arms every registration's watch again on each call, against the pipe's level.

The amendment: a registration arms as a waiter does, and rings netstack if the direction is already ready.

  • register and reregister in the mio fork, through toyos::net, act on each direction their interest names. They take the direction's end, set its want by exchange, look, and let the end go. If the look found the direction ready, they ring netstack's doorbell.
  • netstack, rung, rings back each set client want whose direction is ready. That is amendment B's rule, unchanged, so the doorbell the watch reads then holds a byte.
  • If the look found nothing, the want stays armed, and the publish that makes the direction ready rings it, by toyos-transport: a byte stream between two ends that do not trust each other, and its wake handshake (netring stage 2) #878's handshake.
  • A registration drains nothing. A byte already there answers the watch. An extra byte is a spurious event, which mio permits ("Spurious events", src/poll.rs:96-106).
  • A registration counts nothing, as the mio fork counts nothing.

This is epoll's ep_insert in this design's terms: a registration asks the source for its readiness, and a ready source is reported. Here only a doorbell byte can carry an event the watch sees, and only netstack holds the doorbell's write end, so the question goes through netstack.

Why this and not the others.

  • A first event the mio fork's selector makes itself. It needs a pending list beside the kernel's completions, and a wake for a select already asleep on another thread. That is a second source of events beside the doorbells.
  • netstack ringing both doorbells once, when a stream is made. That answers a fresh stream's first registration. It does not answer a reregister, nor a stream registered after a blocking call drained its doorbell.
  • The kernel answering the watch from the ring. The kernel reads no word of the region (the owner's constraint).

What it costs.

  • A round trip through netstack at each registration of a direction that is ready.
  • tokio registers both interests once, and a fresh send ring has room, so this is once per tokio stream.
  • Every stream registered for WRITABLE rings its bell, so every such stream allocates the bell's page. Amendment A says only "a stream whose writer once found its send ring full" pays it, and that becomes wrong. PLACE_BYTES budgets the worst case and does not move.

What a model reads, before anything is built. A scratch loom model, measurement only, never landing.

  • What it runs. toyos-transport: a byte stream between two ends that do not trust each other, and its wake handshake (netring stage 2) #878's toyos_transport::stream ends, unchanged, as main holds them at 36aff86, and one direction of one stream.
  • Its threads. One is netstack's. It serves its doorbell and rings back each set want whose direction is ready (amendment B), until the client hangs up.
  • The other is the client's. It registers and waits for its first event, as connect_mio and poll_io do. That event leads to the source's operation. The operation either finds the direction ready, and the model ends, or answers WouldBlock as the design's empty read and full write do (drain, arm, look) and waits for the next event.
  • When the direction is made ready. Before the registration, or by netstack's thread racing it.
  • What makes it ready.
    • Bytes in the receive ring.
    • The receive ring's end.
    • Room in the send ring: the connect's empty ring before the registration, or a full ring released while racing it.
  • A doorbell is a pipe, as in amendment B's model. A watch is answered at once if the pipe holds a byte when it is registered. Otherwise it is answered by whether the pipe holds a byte when its submitter looks after a post.
  • No preemption bound. Every case gives its verdict unbounded.
the direction, made ready as written amendment D D less the arm D less the ring D under want-relaxed
bytes, before the registration deadlock, 101 passes, 0 deadlock, 101 deadlock, 101 passes, 0
bytes, racing it deadlock, 101 passes, 0 deadlock, 101 deadlock, 101 deadlock, 101
the end, before deadlock, 101 passes, 0 deadlock, 101 deadlock, 101 passes, 0
the end, racing deadlock, 101 passes, 0 deadlock, 101 deadlock, 101 deadlock, 101
room, before deadlock, 101 passes, 0 deadlock, 101 deadlock, 101 passes, 0
room, racing deadlock, 101 passes, 0 deadlock, 101 deadlock, 101 deadlock, 101
  • Every red is loom's deadlock; threads = [(Id(0), Blocked(..)), (Id(1), Blocked(..))], 21 of 21.
  • As written reds all six cases. "Before" is tokio's connect, and sshserver's stream with bytes or a FIN waiting. "Racing" is a publish that finds no want set.
  • D less the arm, and D less the ring each revert one half of the amendment. Each reds all six cases.
  • want-relaxed, stage 2's handshake control, reds the three racing cases, so the model reaches the handshake's interleavings. Before the registration there is no handshake to break.

The model's source, manifest, lockfile and runner, and its log whole: registered_ready.rs, Cargo.toml, Cargo.lock, run.sh and registered-ready.log; evidence pr-863 at 28661b7713bad9946984c2eee3284b8ee4a8a4f7.

What acceptance adds to the track. Stage 3's exit gets a third loom model. It drives the client end's registration and netstack's ringing code, as stage 3 lands them. A source registered while its direction is ready gets its first event:

  • in both directions and with the receive ring's end;
  • whether the direction was made ready before the registration or racing it.

Its controls skip the registration's arm and, separately, its ring; each goes red.

Amendment E, proposed: the connection carries one request, then only doorbells

For the orchestrator's ruling; not in the track until it.

The defect (the triage's BLOCKER 3). Read again at e7e1179, it holds.

  • A request cannot reach netstack. A FromRawFd of a handle moved in from another process asks netstack for the region on the stream's connection (MsgType::Region). The connection's every byte is a doorbell from the answer on (amendment A: "a byte there sends it to look at both rings"). A frame starts with an 8-byte IpcHeader (sdk/toyos/src/ipc.rs:93-99), and netstack would drain it as doorbells and answer nothing.
  • An answer cannot reach the requester. It would travel on the pipe the stream's readers drain, where "a blocking wait takes every byte there" (amendment A's model). Any process holding the connection can take the answer, or half of it.

Published practice. A doorbell carries no request, and control has a channel of its own.

  • virtio 1.2. §2.9, "Driver Notifications": a notification names the virtqueue, and with VIRTIO_F_NOTIFICATION_DATA where its next entry goes. "the driver can send multiple notifications even without making any more buffers available". Commands go on a queue of their own: virtio-net's control virtqueue, §5.1.6.5 (virtio-v1.2-cs01).
  • TAS. The library writes a control request as an entry in its context's queue: flextcp_listen_accept writes KERNEL_APPOUT_ACCEPT_CONN (lib/tas/conn.c:89-112). It then kicks the slow path with an eventfd write that carries a count and nothing else (flextcp_kernel_kick, lib/tas/kernel.c:42-59).
  • A TAS socket belongs to the process that opened it. Its descriptor is an entry in the library's own table (flextcp_fd_salloc, lib/sockets/manage_fd.c:60). lib/sockets handles neither fork nor SCM_RIGHTS: its only sendmsg is the data path.

The amendment: MsgType::Region goes, and a stream belongs to the process that connected or accepted it.

  • One request, then only doorbells. A connection carries exactly one frame each way: the request and its answer. Both pass while the stream is nobody's but the requester's. From the answer on it carries only doorbells and its hang-up. netstack reads one frame from a new connection, and every byte after its answer as a doorbell. Control after the answer is the header's words (end, nodelay), as virtio's is its configuration space and its control queue.
  • Within a process, nothing changes. Every handle of a stream shares its one end, as the handle bullet says.
  • A handle the process holds no end for is no stream in it. That is a handle moved in from another process, or one duplicated past toyos::net by the bare dup syscall. toyos::net refuses it by name and writes nothing on its connection.
  • Two processes never share a region. The race the Risk section's third bullet records goes. So do the questions in the third and fourth bullets of "What I am unsure of".
  • netstack keeps only the bell's write end. Amendment A's "and a read end to answer MsgType::Region with" goes.

What it takes away, and what it does not. Nothing in the tree moves a stream between processes now:

  • std on ToyOS has no FromRawFd, IntoRawFd or From<OwnedFd> for a socket. rust/library/std/src/os/fd/mod.rs compiles os/fd/net.rs out for toyos, and owned.rs gives a ToyOS TcpStream only AsFd.
  • libc's socket descriptors are entries in its own table (SOCKET_FD_BASE, sdk/libc/src/socket.rs).
  • socket2's ToyOS Socket is a key in its own table (NEXT_FD, src/sys/toyos.rs:320-328 at 1d90250).
  • The mio fork's ToyOS stream has no from_std.

So E takes away nothing the tree has. It refuses the one path the design added. A program that hands a socket to another process (socket activation, an inetd-style child) cannot do so on ToyOS before E or after it. That gap is not filed today. If E is accepted, it is filed with E: a std::net::TcpStream cannot cross a process. Its exit: one moved by its handle reads and writes in the receiving process, and the process that moved it holds no end.

Why this and not the others.

  • Frames both ways, a doorbell an empty frame. netstack, the only reader of the client→netstack direction, could tell a request from a ring. The answer still has no way back: netstack→client is the pipe the stream's readers drain.
  • Region on a fresh connection that names the stream. netstack cannot tell which of its streams a client's end of a connection belongs to, and the kernel answers no identity for one: fstat's volume and node are 0 for an object that is no file. Making the kernel answer is a kernel change for a path nothing in the tree takes.
  • Moving the region and the bell beside the connection. A raw fd is one handle.

What it costs. Nothing on any path the tree has. MsgType::Region goes, and so do netstack's read end of each bell and the duplicates it made to answer one.

What would have caught it. A reading of three facts:

  • IpcHeader is 8 bytes (sdk/toyos/src/ipc.rs:93-99).
  • netstack reads every byte after the answer as a doorbell (amendment A).
  • A wait on the netstack→client pipe "takes every byte there" (amendment A's model).

What acceptance adds to the track. Stage 3's exit gets a test: toyos::net, handed a stream handle the process holds no end for, refuses it by name and writes nothing on its connection. Under the design as written that test is red, because the design writes Region there. MsgType::Region stops existing, which no test needs to check.

@Japabu

Japabu commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator Author

Amendments C, D and E accepted, by the orchestrator (#863 (comment)). Each follows published practice, per #885's rule.

  • C, bytes that arrive before an accept. netstack keeps a child's bytes in its own buffer, at most 65,535 each, bounded by the listener's backlog, and copies them into the region at the accept. This is mTCP's answer, and Linux's: data is queued on the socket before accept. It stays within RFC 9293, where TAS does not. Stage 4's exit carries the two listeners.rs cases, red when those bytes are dropped.
  • D, a source registered while already ready. Registering arms the source's wants and rings netstack if the direction is ready, and netstack rings back by Amendment B's rule. That is how epoll reports a ready source at EPOLL_CTL_ADD, which mio's and tokio's contract relies on. Stage 3's exit carries the third loom model: red without D, red with either half removed, and red under want-relaxed.
  • E, MsgType::Region on a doorbell connection. The message goes. A stream belongs to the process that opened it, and toyos::net refuses by name a handle it holds no end for. That follows virtio 1.2's and TAS's ownership of a region. It costs one capability nobody uses today: moving an open socket to another process. The track's roast records that as a known limit whose exit is the first program that needs it, designed then. Stage 3's exit carries a test of the refusal.

Next, the record takes them in: the track's stage exits and the body's summary, with the full text in the linked comment, because of the body's size limit. Then it is reviewed again.

Japabu and others added 2 commits October 12, 2026 17:29
…E's exits

The orchestrator accepted amendments C, D and E to #863's design
(#863 (comment)), as
proposed in #863 (comment).

- C: a passive child's bytes wait in [tcp]'s heap storage until its accept,
  which copies them into the region, as mTCP does. Stage 3 keeps that
  storage beside the region; stage 4's exit carries the two listeners.rs
  cases that pin those bytes, red when the accept drops them.
- D: a registration arms the want of each direction it names and rings
  netstack if the direction is already ready, as epoll's ep_insert reports
  a ready source. Stage 3's exit carries a third loom model, red without D,
  red with the arm or the ring removed, and red under want-relaxed.
- E: MsgType::Region goes; a connection carries the connect and its
  answer, then only doorbells, and a stream belongs to the process that
  connected or accepted it. Stage 3's exit carries a test of toyos::net's
  refusal of a handle it holds no end for.

The track's exit now names stage 4's exit beside stage 3's.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
Japabu added a commit to ToyOSOrg/evidence that referenced this pull request Oct 12, 2026
… run -- --ci host, EXIT=0

The log whole, the home directory masked as ~.
Japabu added a commit that referenced this pull request Oct 12, 2026
…ull request, and a reviewer triages what he returns

The owner reviews design pull requests himself with ChatGPT's free chat,
by hand: automating the chat platform is against its terms, so it is
never scripted. He gave the orchestrator leave to ask him: "you can ask
me if i can let chatgpt review a design pr". That is leave, not a duty:
it names no pull request and no moment to ask. On #863 a single-design
review found three design defects that three review rounds had missed,
while a one-pass review of all open pull requests found almost nothing
new.

orchestrator.md's Review and land gains one sentence: the orchestrator
may ask the owner whether he will have ChatGPT review a design pull
request, and a reviewer triages whatever he returns against the code
before anything acts on it. The leave to ask is the owner's ruling; the
triage clause is the orchestrator's own design and not part of it. What
backs it is #863's triage of his ChatGPT review there: of nine claims,
three held, two had already been raised and four did not hold.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
@Japabu

Japabu commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator Author

Review of #863 at 148d26583, against .claude/agents/reviewer.md on origin/main (ecd6d1cc5, the main this head merges; git merge-tree --write-tree origin/main 148d26583 merges clean). Round 4.

Net lines (git diff --shortstat origin/main...148d26583): 2 files changed, 136 insertions(+), both under issues/; production 0, tests 0. Since round 3 (git diff --shortstat 0d166351a 148d26583 -- <the two files>), only the track changed: 40 insertions, 21 deletions.

Earlier BLOCKERs (round 3 had none; these are the triage's, 6126387631)

  1. CLOSED. Bytes that arrive before an accept had nowhere to go.
    • Amendment C keeps them in [tcp]'s heap storage until the accept, and 6127307681 accepts it. The body names the choice and its cost in amendment C's paragraph, "What it deletes" and the roast. Stage 4's exit names a_listener_answers_a_syn_and_wakes_its_owner_when_the_handshake_ends.
    • Measured by pre-accept.log at evidence 28661b77:
      • at e7e1179, 31 passed, EXIT=0;
      • with nowhere.patch, 29 passed, EXIT=101, and that case fails at listeners.rs:455 (left: [], right: [104, 101, 108, 108, 111]);
      • restored, git status --porcelain is empty.
    • The exit's other half is BLOCKER 1 below.
  2. CLOSED. A source that was already ready when it was registered never got its first event.
    • Amendment D arms the wants at registration and rings netstack. Track lines 66-68 and 79-83 carry it and the third model.
    • I read registered-ready.log at 28661b77 whole:
      • as written, 101 ×6;
      • D, 0 ×6;
      • D less the arm, 101 ×6;
      • D less the ring, 101 ×6;
      • D under want-relaxed, 0, 101, 0, 101, 0, 101, so only the racing cases go red.
    • Every red is deadlock; threads = [(Id(0), Blocked(..)), (Id(1), Blocked(..))], 21 of 21.
    • The model's register and first_io (registered_ready.rs:265-294) do what the body says.
    • The model ran toyos-transport as toyos-transport: a byte stream between two ends that do not trust each other, and its wake handshake (netring stage 2) #878 landed it: git diff --stat 7ea0ff9d6 148d26583 -- lib/blockring/transport lib/untrusted is empty.
  3. CLOSED. MsgType::Region travelled on a doorbell connection.
    • Amendment E deletes it. The connection carries one frame each way, then only doorbells, and a handle the process holds no end for is refused. Track lines 60-62 and 83-85 carry the refusal and its test.
    • What I read:
      • IpcHeader::WIRE_SIZE is 8 (sdk/toyos/src/ipc.rs).
      • std on ToyOS has no socket FromRawFd. At the gitlink c1b88133e, library/std/src/os/fd/mod.rs:16-17 compiles net out for toyos, and owned.rs gives TcpStream only AsFd.
      • The mio fork's ToyOS stream at d1edcaa has no from_std.

Checked

  • Carriage, the track's stages 3 and 4 against 6127307681:
    • C: [tcp]'s heap storage stays for passive children, bounded by limits::RECEIVE_BUFFER_INITIAL and limits::LISTEN_READY. Both exist (shard/tcp/src/lib.rs:146,157), and system/netstack/src/main.rs:101 already budgets a listener by their product.
    • D: the third model, with the three reds the acceptance names.
    • E: the refusal and its test. The known limit is in the roast, as the acceptance says.
  • Exits.
    • Stage 3's third model can fail: it has 21 reds. want-relaxed reds only the racing cases, so the exit forces those cases into the model.
    • E's test can fail: the design as first written wrote Region on the connection.
    • Stage 4's exit: BLOCKER 1.
  • Body. 64,726 characters, under GitHub's 65,536. These claims are true:
    • git diff --stat 06788fc53 ecd6d1cc5 -- <the paths> is empty;
    • git diff --stat cc52b456c ecd6d1cc5 -- system/netstack kernel/src sdk lib names only kernel/src/arch/x86_64/amdvi/mod.rs;
    • stack.rs:418, :852-864, listeners.rs:455 and :948-958;
    • at the pinned commits: mio stream.rs:73-74, tokio stream.rs:155 and registration.rs:169, mio toyos_stream.rs:177-178, Linux v6.12 eventpoll.c:1720-1730, and mTCP api.c:582 and tcp_in.c:617-630.
  • --ci host. host.log at evidence 0005da0b (pr-863):
    • It has 8808 lines. Its first stamp is 15:29:30, after the head was committed at 15:29:23Z, and it ends 15:35:20 [ci] Host: 76 step(s), all green.
    • Each of its 49 test result: FAILED lines falls inside a === [ci] control step.
  • Round 3's NOTEs.
    • 1 is closed: track lines 51-56 mark stages 1 and 2 done, and the dead citation is gone.
    • 2 is closed: the body's handle bullet answers it.
    • 3 is corrected.

BLOCKER

  1. issues/netstack-moves-every-byte-through-two-kernel-pipes.md:97-102 — stage 4's exit names a case stage 4 cannot keep, and no case goes red on two of amendment C's own claims — so half the exit is left for stage 4 to write itself, and the copy that can corrupt a stream has no red.
    • The second case cannot survive stage 4.
      • Under the control, an_accept_answers_the_option_of_a_stream_its_own_pass_let_go goes red only through BrokenEnd. That is a ToClient that answers WriteRefusal::Broken (system/netstack/node/tests/listeners.rs:935-942). With no bytes to refuse, it sends no RST: pre-accept.log fails it at listeners.rs:956, net.last(P1).rst.
      • ToClient and WriteRefusal are on stage 4's deletion list (body, "What it deletes"), and a region refuses no write.
      • The body's "What I am unsure of" itself says stage 4 must give this case a new claim. Whatever stage 4 writes under that name becomes the exit.
      • The case's subject, an accept whose own pass lets the stream go, goes with the pipe. Its bytes-before-the-accept claim is the first case's.
    • No case reds on two of C's claims.
      • The body says the accept copies the child's bytes into the region "at their offsets, with any out-of-order range and a FIN".
      • Neither named case sends an out-of-order segment or a FIN before the accept. nowhere.patch drops only in-order Received::Data.
      • [tcp]'s Rx keeps its out-of-order ranges apart from the Ring's bytes, never reneges on a SACKed range, and never overwrites a byte it stored (shard/tcp/src/rx.rs:4-6).
      • So a stage 4 that copies only the in-order bytes passes this exit. Once the hole fills, it commits region bytes nobody wrote, and no retransmission repairs them.
      • A stage 4 that drops the FIN passes too. The accepted stream's reader then waits for an end the peer already sent and had acknowledged.
    • Fix.
      • Replace the second case with the case amendment C proposed (6127271821, "What acceptance adds to the track"). A child receives text before its accept: in order, past a hole, and with its FIN behind it. The region then reads all of it in order, then its end.
      • Give that case a red control for each of the three dropped at the accept: the in-order bytes, the out-of-order range and the FIN.
      • The second case goes with ToClient.
      • This changes the exit the orchestrator accepted for C (6127307681), so he accepts the change.

NOTE

  1. PR body, the roast's "Known limit" — a gap the branch found is recorded only in the body, with no owner and an exit nothing can read.
    • A stream cannot move between processes, and TcpStream::from_raw_fd and From<OwnedFd> do not build on ToyOS, though root CLAUDE.md's "Existing Rust just works" says they should. 6127271821 itself says "That gap is not filed today".
    • The body's exit is "the first program that needs a stream moved".
    • Root CLAUDE.md files what ToyOS cannot do yet, and reviewer.md's Growth asks for an issues/ file with an owner, evidence and an exit condition.
    • File it with the exit amendment E proposed: a stream moved by its handle reads and writes in the receiving process, and the process that moved it holds no end.
  2. PR body, handle bullet; track lines 60-62 and 83-85 — the record does not name the call that hands toyos::net a handle it holds no end for.
    • The bullet keeps "A FromRawFd of a handle the process holds an end for shares that end".
    • But amendment E's cost says std on ToyOS has no socket FromRawFd, and libc, socket2 and mio take no foreign handle.
    • If stage 3 adds no such entry, the refusal has no shipping caller, and stage 3's E test exercises a path that ships for the test alone.
    • If stage 3 does add std's FromRawFd or From<OwnedFd> for TcpStream, say so. Also say how an end taken in that way is let go: OwnedFd's ToyOS drop closes the handle by the raw syscall (owned.rs:241-244), past toyos::net.
  3. PR body, the write bullet and amendment A's third bullet, against amendment D — a look that arms tx_room reads only the head, but netstack also rings tx_room when it writes the receive ring's end.
    • Consider a full write, or a WRITABLE registration, that arms after netstack wrote a reset while the send ring was full. Its look finds no room.
    • It then waits on a bell netstack never rings again, because netstack's exchange found the want clear.
    • Whether it ever wakes rests on netstack dropping the bell's write end at a fatal end, which the record does not say.
    • The third model's end case covers the receive direction alone (registered_ready.rs:168-181).
    • Say which holds:
      • a fatal end makes the send direction ready to every look, and the third model gets that case; or
      • netstack lets a stream go at a fatal end.
  4. PR body, amendment E's cost and the roast's "Known limit" — "the mio fork's sockets are entries in their own process's table" is false of the mio fork at d1edcaa. Its ToyOS TcpStream holds raw handles and no table (src/net/tcp/toyos_stream.rs:11-17). What holds is that it has no from_std. This one is the orchestrator's to correct.

SEND BACK

@Japabu

Japabu commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator Author

The orchestrator, on round 4 (#863 (comment)):

  • BLOCKER 1: the change to C's accepted exit is accepted. Stage 4's second case goes with ToClient. In its place goes the case Amendment C proposed: a child receives text before its accept, in order, past a hole, and with its FIN behind it, and the region then reads all of it in order, then its end. It gets a red control for each of the three dropped at the accept: the in-order bytes, the out-of-order range and the FIN.
  • NOTE 3, ruled following Linux: a reset makes a socket readable and writable at once (epoll reports EPOLLIN|EPOLLOUT|EPOLLERR|EPOLLHUP). So a fatal end makes the send direction ready to every look, and the third model gets that case.
  • NOTEs 1, 2 and 4 are taken:
    • the stream-move gap is filed as an issue with an owner and Amendment E's exit;
    • the record names whether stage 3 adds std's FromRawFd/From<OwnedFd> for TcpStream, and how such an end is let go;
    • the mio sentence is corrected.

Japabu and others added 2 commits October 12, 2026 20:11
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
…a fatal end readies the send direction, and a stream cannot move between processes

Round 4's review of #863 (issuecomment-6129829193) and the orchestrator's
rulings on it (issuecomment-6129844256):

- Stage 4's exit drops `an_accept_answers_the_option_of_a_stream_its_own_pass_let_go`,
  which reds only through `ToClient`'s `WriteRefusal::Broken`, both on stage
  4's deletion list. In its place goes amendment C's own case: a child holds,
  before its accept, text in order, text past a hole and its FIN behind that;
  the hole is filled after the accept, and the region reads all of it in
  order, then its `end`. It is red under each of three controls dropping at
  the accept one thing the child held. Run against today's node tests, each
  control reds the case: the in-order bytes and the out-of-order range as
  zeros where text was, the FIN as an end that never comes.
- A fatal `end`, any but a FIN, makes the send direction ready to every look,
  as Linux v6.12's `tcp_poll` answers a reset socket `EPOLLOUT` once
  `tcp_done` has set `SHUTDOWN_MASK`. Without it a writer or a `WRITABLE`
  registration that arms after a reset while the send ring is full looks
  only at the head and sleeps on a bell nobody rings again. Stage 3's third
  model carries the case and a control whose looks read only the head.
- Stage 3 says std gains `FromRawFd`, `IntoRawFd` and the `OwnedFd`
  conversions for `TcpStream`, taking only the process's own ends, and that
  `OwnedFd`'s drop lets a stream's handle go through `toyos::net`, so no
  entry outlives its handle's number.
- `issues/a-stream-cannot-move-between-processes.md` files the gap amendment
  E leaves, with its owner and E's exit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
@Japabu

Japabu commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator Author

Triage of a second external automated review (ChatGPT, supplied by the owner)

Read against #863 at 148d26583, the head the review links. The branch did not move while this was read (git ls-remote, at the start and before posting). origin/main is 97f07c381. Of what this triage cites, only serve.rs's watch plumbing moved between 148d26583 and 97f07c381.

Read: the body and the track at that head; amendments A and B in the body; C, D and E as proposed in 6127271821 and accepted in 6127307681; rounds 1 to 4 (6121859611, 6122446433, 6125978857, 6129829193); the first triage (6126387631); and the orchestrator's ruling on round 4 (6129844256). Also: the models at evidence 0e9a981c and 28661b77, the tokio fork at 902fb97 as Cargo.lock pins it, and Linux at v6.12.

Counts: holds 4, already raised 1, does not hold 2, stale 0.

Classification

  1. "Terminal TCP events need a separate wakeup guarantee" (its P1 CLAUDE.md: soundd drives both cards, and three retired ABI numbers #1): does not hold.

    • Its two facts are true of stage 2's code, but the design does not rest on either.
      • Consumer::arm reads only the tail (lib/blockring/transport/src/stream.rs:252-255). Producer::publish exchanges nothing when the tail did not move (:175-182).
      • But end is a header word that stage 3 adds; it is not part of stream.rs. When netstack writes it, the record has netstack exchange the want itself. Amendment A's third bullet: "When netstack writes the receive ring's end, it exchanges both client wants for 0 and rings each one that was set".
    • The look after arming reads end.
      • The End-of-stream bullet reads end "with Acquire after the tail".
      • Amendment B defines the receive direction as ready on "bytes or the end in the receive ring".
      • Both models do exactly that. netstack does ended.store(1, Release), then swap(0, WAKE). The client then does rx.arm(..) > 0 || self.ended(). See same_direction.rs:182-188 and :368-371, and registered_ready.rs:175-181 and :229-232.
    • The race it asks a model for is already modelled, and stage 3's exit carries it.
      • B's pass_on_end_left runs a blocking read on an empty ring against netstack's thread writing the end: EXIT=0, and red under want-relaxed.
      • D's armed_end_racing races a registration against the same write: EXIT=0, and red under want-relaxed.
      • Track lines 75-83 carry both models and name "the receive ring's end" in each.
    • Repeating the model with RST and timeout tests nothing more. The value of end does not affect any wake; it decides only what the reader returns.
  2. "A blocked TCP writer may never learn that its connection failed" (P1 landing: main moves through pull requests, and the gate moves with it #2, the wake half): already raised.

  3. "A write() that finds send-room available after a connection failure must not indefinitely continue accepting bytes for a dead connection" (P1 landing: main moves through pull requests, and the gate moves with it #2, the second half): holds, new. BLOCKER 1.

  4. "UDP record parsing needs an explicit security contract" (P2 user machine state: one bracket across every Ring 3 boundary, x87 included #3): holds, new. BLOCKER 2.

  5. "Nonblocking accept can allocate 8 MiB just to return WouldBlock" (P2 landing: three things the first pull requests found #4): holds, new. NOTE 1.

  6. "Preserve accepted connections' peer metadata" (P2 ci-plan: the workflow table, and seventeen jobs against a budget of twenty #5): holds, new. NOTE 2.

  7. "Its GitHub Actions ci workflow is marked skipped. The PR body references earlier host test runs": does not hold. The first triage answered the same claim (6126387631, item 9).

    • host reports skipped on a pull_request run by design (root CLAUDE.md, "Build & test").
    • The body's Gates section records cargo run -- --ci host on 148d26583 itself, not on an earlier head:
      • EXIT=0;
      • the log ends Host: 76 step(s), all green;
      • the log is at evidence 0005da0b, and round 4 read it and confirmed it ran after the head was committed.

Three more parts of the review make no finding:

  • Its summary of the change and its "What looks sound" section: each statement in them is true of the record at 148d26583.
  • Its "Preserve ordinary TCP half-close semantics": the record already keeps it. The ruling names a fatal end, and FIN is not one.

BLOCKER

  1. PR body, "std, poll, libc and mio", the write bullet — after a reset or a timeout, a write that finds room copies into the send ring and answers Ok, where today it answers ConnectionReset — this is wrong behaviour, and the record introduces it.

    • The record. The bullet copies whenever the send ring has room, and it reads no end.
      • Only "a writer asleep on a stream that ended wakes and reads why" (amendment A, third bullet).
      • The ruling on round 4 reaches only the look after arming.
    • Today. At a reset or a timeout, netstack ends the send pipe first (sdk/std/sys/net/connection.rs:224-227), and write maps that pipe's Gone to ConnectionReset (:267-270). The record deletes that ordering ("End of stream") and puts nothing on the write side in its place.
    • The result.
      • After a reset, every write succeeds until the ring is full: up to 4 MiB less 4 KiB of bytes that netstack will never segment.
      • A program that writes less than that and closes never learns that the stream failed. An example is io::copy of a small file to a peer that reset.
    • Linux. It checks sk_err before it copies a byte (net/ipv4/tcp.c:1143-1145 at v6.12) and returns it: ECONNRESET, then EPIPE (net/core/stream.c:186-193).
    • Fix.
      • The write bullet reads the receive ring's end with Acquire before it copies. A fatal value is the write's error. FIN is not, so half-close is kept.
      • Stage 3's exit gets a test of the client end, on the cheapest tier that reaches it: a write that has room after a reset answers ConnectionReset and copies nothing. Its control skips the end in write, and goes red.
      • This changes stage 3's exit, so the orchestrator has to accept it.
  2. PR body, "The protocol", the UdpBind bullet, and "What a hostile client can do to a region it shares with netstack" — the client writes each datagram record's len, port and addr, netstack reads them, and the record names no refusal for any of them — today the tree guards this trust boundary, and the record deletes that guard without a replacement.

    • The hostile-client section is incomplete. It says "netstack reads three kinds of word the client writes": the cursors, the want, end and nodelay bits, and the send ring's bytes. A datagram region adds a fourth kind, each record's header, and the section does not cover it.
    • Today. udp_send_to refuses a len that names bytes the client never wrote (system/netstack/src/serve.rs:491-516, ERR_INVALID_INPUT), and len is a u16.
    • The record. It deletes UdpSendTo and gives len:
      • no width;
      • no bound against the bytes published or against toyos_net_udp::limits::MAX_PAYLOAD;
      • no rule that netstack reads a record's header once, although the client can rewrite the header between netstack's check and its copy.
    • Nothing else catches it. stream.rs's clamp bounds the tail; it does not bound a length inside the bytes it hands over. Stage 4's exit (track lines 92-102) reads only listener cases, so no exit goes red when stage 4 trusts len.
    • Fix.
      • The hostile-client section names the record header. len is bounded by the bytes published and by MAX_PAYLOAD. The header is read once. Any other value is a Violation that ends that socket alone.
      • Stage 4's exit gets a test, on the cheapest tier that reaches it, with a red control for each bound: len past the bytes published, and len past MAX_PAYLOAD.

NOTE

  1. PR body, "The protocol", the TcpAccept bullet, and the roast's Risk — to be answered WouldBlock, a nonblocking accept with nothing ready makes an 8 MiB contiguous region and a connection, and the roast does not price that — today that answer costs one nonblocking pipe read.

    • Nothing is reused. The request carries "a fresh region". Amendment E lets the connection carry one frame each way, so the next try can reuse neither.
    • Today. accept reads the listener's notify pipe first, and answers WouldBlock before it makes any request (sdk/std/sys/net/connection.rs:420-429).
    • Every tokio accept loop takes this path once per event. async_io calls accept again until it answers WouldBlock (tokio fork 902fb97, tokio/src/runtime/io/registration.rs:214-234, tokio/src/net/tcp/listener.rs:166-170).
    • The roast does not cover it. It prices the region "at connect" and "before a byte moves", not on an accept that moves no byte.
    • On a fragmented machine it is worse than a cost.
      • That accept fails with ResourceExhausted (kernel/src/object/shm.rs:92-93) where it would have answered WouldBlock.
      • sshserver answers any accept error by dropping its listener and binding again (system/sshserver/src/main.rs:748-759). That resets every connection waiting in its backlog (closing_a_listener_resets_what_waits_and_frees_its_port, system/netstack/node/tests/listeners.rs:681).
    • Fix: either the record says how the empty path avoids making a region, or the roast prices it. Two ways to avoid it: the accept learns that a child is ready before it makes a region, or it keeps its region for the next try.
  2. PR body, "The protocol", the TcpAccept bullet — the accept is "answered as a connect is", and that answer, TcpConnectResponse { local_port }, names neither the peer's address nor the option inherited from the listener — TcpListener::accept returns the peer's address, and the stream starts with its listener's nodelay.

    • Today. Both come from TcpAcceptPipedResponse's remote_addr, remote_port and options (sdk/toyos/src/net.rs:203-210, read at sdk/std/sys/net/connection.rs:420-438).
    • nodelay becomes a header word the client writes. So an accepted stream whose listener had nodelay on starts with it off, unless netstack writes the word at the accept or the answer tells the client. The record says neither.
    • Fix: name the fields of the accept's answer, and say who writes an accepted stream's first nodelay.

@Japabu

Japabu commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator Author

The orchestrator's rulings on the second triage's findings (#863 (comment)). Each follows Linux, per #885's rule.

  1. BLOCKER, a write after a reset or timeout. As Linux checks sk_err before it copies anything, write reads the stream's fatal end first and returns ConnectionReset (or the stream's error) without copying. Stage 3's exit gains a case that reds when a write after a reset returns Ok.
  2. BLOCKER, the client-written UDP record words. netstack bounds and refuses by name each record's len (no more than the bytes the record holds), port and addr, as udp_send_to refuses today. The hostile-client section lists them. Stage 4's exit gains a datagram case: a record with an out-of-range len is refused, and netstack stays up.
  3. NOTE, a nonblocking accept with nothing ready. As Linux's accept returns EAGAIN without allocating, a nonblocking accept reads the listener's readiness first and answers WouldBlock with no region and no connection made. The region is made only for a child that is there.
  4. NOTE, the accept's answer. It carries the peer's address and the listener's nodelay, which the accepted stream inherits as Linux's does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
@Japabu

Japabu commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator Author

Amendments A and B in full

As PR #863's body carried them from their acceptance through round 4, at 148d265, with round 4's ruling 2 added to amendment A's third bullet. The body now carries a summary of each and links here, as it does for C, D and E, to stay under GitHub's 65,536 characters.

Amendment A, accepted: a doorbell per client sleeper

Accepted by the orchestrator: #863 (comment).

The defect (#863 (comment), BLOCKER 6). As accepted, netstack rang both of the client's wants, rx_data and tx_room, on the connection's one netstack→client pipe, and a stream's reader and writer, two threads, each waited on it. A pipe's byte goes to one reader. The reader can take the byte rung for tx_room, find its own ring empty and sleep again, while the writer, which armed and looked before netstack released room, waits on a pipe now empty. netstack exchanged tx_room for 0 when it rang, so it never rings again, and a TcpStream written from one thread and read from another hangs with room in its send ring.

The amendment: each want a client sleeps on has a doorbell of its own.

  • rx_data rings the connection, as before. Its sleeper is the stream's reader.
  • tx_room rings the stream's bell, a pipe netstack makes at connect and accept and answers with the stream, holding its write end alone (amendment E). Its sleeper is the stream's writer. netstack writes nothing else into it.
  • When netstack writes the receive ring's end, it exchanges both client wants for 0 and rings each one that was set, so a writer asleep on a stream that ended wakes and reads why; one that arms after a fatal end finds it at its look (ruling 2). The bell's write end gone reads as the stream gone, as the connection's hang-up does.
  • The client→netstack direction keeps the connection's one pipe for both of netstack's wants, rx_room and tx_data: netstack's one thread is their only sleeper, and a byte there sends it to look at both rings.
  • Within a direction, a doorbell is drained only by the holder of that direction's end, before it looks, as the read/write and readiness bullets above say. Amendment B replaces this bullet.

No byte rung for one direction is then readable by the other direction's sleeper: a reader, a READABLE registration and a POLLIN wait read only the connection, and a writer, a WRITABLE registration and a POLLOUT wait only the bell. It is the shape stage 2's model proves, one sleeper to a doorbell: #878's stream model has a doorbell each way, and loom's Notify admits one waiter ("only a single thread may wait on Notify"), as toyos::wake's header says a bell is "a wake from any thread to the one thread that waits for it". That holds between the directions; within one, amendment B lets any number of threads wait on its doorbell.

Why this and not the others.

  • A sleeper that re-reads its own want and cursor after any wake does not reach the sleeper that lost. The writer that looked before netstack released room waits on a pipe the reader already emptied, and no byte is left to wake it. The model below has every sleeper re-read its cursor and re-arm after every wake, and one doorbell still deadlocks in both orders.
  • One thread in the kernel per stream, the others parked in-process behind it, needs every waiter to hold the stream's turn for its whole wait. A poll over many descriptors, mio's included, cannot, and a writer with a timeout would wait out a reader with none.
  • A futex on each want word wakes every sleeper and consumes nothing, but the poller watches handles, not words. mio and poll could wait on a stream only through a new kernel watch kind, which the owner's constraint refuses while a pipe does the job.
  • A second connection per stream carries the bell as two pipes where one does.

What it costs. No kernel change: the bell is a pipe, as toyos::wake's are. A handle more in the client and two in netstack, and a PIPES entry more per stream. The bell's page is allocated on its first ring, so a stream pays it once its writer finds its send ring full, or once it is registered for WRITABLE (amendment D). Until issues/a-pipe-is-a-two-mebibyte-page-for-a-mapping-nothing-makes.md closes, PLACE_BYTES, which budgets the worst case, is 14 MiB where it is 12 today: fewer places until then. In return the mio fork's WRITABLE is the bell's own readiness, where the accepted text had it look at both rings on every received-byte event.

What a model reads, before anything is built. A scratch loom model, measurement only, never landing: #878's toyos_transport::stream ends at 7ea0ff9, unchanged, and three threads. netstack's thread releases a byte of send room and publishes a byte of receive data, in either order, ringing each want it finds set. The client's reader sleeps on rx_data and its writer on tx_room, each re-reading its cursor and re-arming after every wake. A doorbell is a pipe as the client waits on it: a ring wakes every waiting thread, and a wait takes every byte there.

case loom exit
one doorbell for both, room rung first deadlock, reader and writer blocked 101
one doorbell for both, data rung first deadlock, reader and writer blocked 101
one per direction, room rung first passes 0
one per direction, data rung first passes 0
one per direction, stage 2's want-relaxed control, room first deadlock 101
one per direction, want-relaxed, data first deadlock 101

The last two show the model reaches its sleeps: the handshake's own control reds it. The model's source, manifest and runner, and its log whole: two_sleepers.rs, Cargo.toml, Cargo.lock, run.sh and two-sleepers.log, evidence pr-863 at dcaba6b8ed23797c14bed49c1df07c52331b0a75.

The property stage 3 must test. A loom model of one stream's reader and writer, each asleep on its own want while netstack's thread releases room and publishes data in either order, ends with neither waiting; its negative control rings both wants on one doorbell and goes red. The model above is its shape. The track's stage 3 exit names it, driving the client end and netstack's ringing code that stage 3 lands, not this scratch model.

Amendment B, accepted: a take is passed on

Accepted by the orchestrator: #863 (comment).

The defect (#863 (comment), BLOCKER 1). Under the rule as written, within a direction the end's holder drains the doorbell before it looks, and its blocking wait takes the byte; a poll that finds the end held registers a watch and takes nothing. The kernel answers that watch by the pipe's level when the poll's submitter looks after the post, and arms it again if the pipe is empty (kernel/src/inbox/polls.rs; look in kernel/src/inbox/mod.rs; read_posts_are_readiness is false for a pipe and a connection). So:

  1. netstack rings once and exchanges the want for 0.
  2. The holder's wait takes the byte, copies less than the ring holds or reads the end, and returns.
  3. The poll's look finds the pipe empty and re-arms, and nothing rings again.

A level-triggered poll then sleeps over a readable socket, and over a FIN for as long as the fd is held; POLLOUT beside a blocking write fails the same way. A poll that took a free end and held it across its wait would instead make a read under set_read_timeout wait on the end's mutex for a poll with no timeout.

The amendment: any number of threads wait on a direction, and a take is passed on.

  • No end is held across a wait. A direction's end is held to drain, arm, look and copy, and let go before its holder waits. A blocking call and a poll alike take it again to look once the wait returns.
  • A waiter counts itself in. The end carries the number of threads waiting on its direction: a blocking read or write about to wait, and a poll whose interest names the direction. A waiter counts itself in under the end before it drains, arms and looks, and out under the end when it returns.
  • A take is passed on. Some thread takes the direction's doorbell, by its wait's read or by its drain, a nonblocking call's included. If it leaves the end with another waiter counted, it sets the want by exchange again and looks. If the direction is ready (bytes or the end in the receive ring, room in the send ring), it rings netstack's doorbell.
  • netstack rings a set want whose direction is ready. Rung by a client, netstack exchanges each client want whose direction is ready for 0, and rings that want's doorbell if it was set, as a publish does. A want whose direction is not ready it leaves set, for the publish that makes it ready. Stage 3 adds this exchange to each of stream.rs's ends.

Why it holds. The count is a plain field under the end's mutex. Every waiter takes that mutex to drain, arm and look, and every taker holds it when it reads the count. So either the taker finds the waiter counted and passes the take on, or the waiter's drain, arm and look come after the taker let the end go, and see whatever the taken byte announced. If the passer's look finds the direction ready, netstack rings the doorbell again, and a thread that takes that byte in turn passes it on while the waiter is counted. If the passer's look finds it empty, the waiter sleeps on the want the passer set, which the next publish clears and rings by #878's handshake. The amendment adds no memory order.

Why this and not the others.

  • The rule as written. A watch consumes nothing, but the kernel answers it by the level at its look, and the holder's take empties that level. The model below reds it in all three cases.
  • A poll that takes a free end and holds it across its wait (the review's other branch). A read under set_read_timeout waits on the end's mutex for a poll with no timeout. The accepted text's blocking calls also held their end across their wait, so a timed read waited behind an untimed one. Amendment B holds no end across any wait.
  • Counting only the polls, the blocking holder keeping its end across its wait. It answers this defect, but a poll cannot count itself in under an end the holder keeps. The count becomes an atomic beside the mutex, whose memory orders then carry the argument, and the timed read still waits behind the untimed one.
  • The kernel answering a pipe's post as its readiness. This is a kernel change where userland does the job, refused by the owner's constraint. It also breaks what every pipe watcher relies on, that a post whose bytes were read answers nothing; the kernel-loom control post-is-an-answer holds that rule.
  • The client ringing its own doorbells, with bells the client makes and netstack lent a write end. The client's own write end keeps a bell alive when netstack goes, so the hang-up needs a watch of its own, a third per socket. The receive direction also moves off the connection onto a bell: a pipe and a watch more per stream than this amendment.
  • Every poller woken through a bell of its own, registered with the socket and rung by whoever lets the end go. It costs a pipe per poller, a registry per socket, and a wake on every release, whether a take hid anything or not.
  • Passing every take on, uncounted. That is a netstack round trip on every blocking wake that leaves bytes behind, in the common case of one thread alone.
  • A timed re-look. That is a flat wait.

What it costs. No kernel change, and no pipe, handle or kernel watch past amendment A's.

  • A count under each end.
  • A blocking call takes its end twice per wait, where it took it once and kept it.
  • A take with another waiter counted costs an exchange, a client ring, netstack's look and, if the direction is ready, its ring back. This happens only while two threads of one process wait on one direction.
  • netstack looks at both client wants on every client ring: two loads, and an exchange and a ring only for a set want whose direction is ready.

What a model reads, before anything is built. A scratch loom model, measurement only, never landing.

  • What it runs. toyos-transport: a byte stream between two ends that do not trust each other, and its wake handshake (netring stage 2) #878's toyos_transport::stream ends at 7ea0ff9, unchanged, and one direction of one stream.
  • Its threads. netstack's, a blocking call and a poll of that direction. netstack makes the direction ready once, then serves its doorbell until the client hangs up.
  • What the blocking call leaves behind. It reads one byte of two, reads the end, or writes one byte into two of room, and leaves the direction ready.
  • A doorbell is a pipe as the client waits on it. A ring writes a byte and posts; a blocking wait takes every byte there. A watch is answered by whether the pipe holds a byte when its submitter looks after the post, and is armed again if not, as deliver answers it.
  • When it ends. The model ends only once the poll is answered with the direction ready.
  • The review's interleaving. Under the rule as written, the poll starts once the blocking call holds the end. Without that start (the model's ungated feature), loom does not schedule the blocking call's lock ahead of the poll's try_lock on its own, and the three cases pass, EXIT=0.
  • The bound. Every case explores the interleavings with at most five preemptions, as the kernel's own loom models bound theirs. Unbounded, pass_on_bytes_left gave no verdict in ten minutes (unbounded.log).
the blocking call leaves the rule as written amendment B B less the pass B under want-relaxed
a byte of two deadlock, 101 passes, 0 deadlock, 101 deadlock, 101
the end deadlock, 101 passes, 0 deadlock, 101 deadlock, 101
a byte of room of two deadlock, 101 passes, 0 deadlock, 101 deadlock, 101
  • As written, and B less the pass: the poll and netstack wait and the blocking call is done, deadlock; threads = [(Id(0), Blocked(..)), (Id(1), Blocked(..)), (Id(2), Terminated)].
  • Under want-relaxed: all three wait.
  • B less the pass keeps the rest of amendment B. It shows that the pass answers the poll, not the end let go before the wait.
  • want-relaxed, stage 2's handshake control, shows the model reaches its sleeps.

The model's source, manifest, lockfile and runner, and its log whole: same_direction.rs, Cargo.toml, Cargo.lock, run.sh and same-direction.log; the unbounded run's unbounded.sh and unbounded.log; evidence pr-863 at 0e9a981ce8827c7a46d5d09491ea6e81ee5d5468.

The property stage 3 must test. A blocking call and a poll of one direction, the poll's watch answered by the doorbell's level at its look as deliver answers it, and the blocking call leaving bytes, the end or room behind: the model ends with the poll answered, and goes red with the take not passed on. The track's stage 3 exit names it beside amendment A's, both driving the client end and netstack's ringing code that stage 3 lands.

… region only for a child, and netstack judges each datagram record

The orchestrator's rulings (issuecomment-6130141310) on the second triage of
an external review of #863 (issuecomment-6130134066), each following Linux:

- Stage 3: a `write` reads the receive ring's `end` before it copies, and a
  fatal one is its error with nothing copied, as v6.12's
  `tcp_sendmsg_locked` checks `sk_err` first. The record as it stood copied
  whenever the send ring had room, so after a reset every write answered
  `Ok` until 4 MiB less 4 KiB were queued for nobody. Stage 3's exit gains a
  test of it with its control.
- Stage 4: an accept takes a wake from the listener's connection before it
  makes a region, so a nonblocking accept with nothing ready answers
  `WouldBlock` having made nothing, as `inet_csk_accept` answers `EAGAIN`
  from an empty queue; the answer carries the peer's address and the
  `nodelay` the child inherited from its listener.
- Stage 4: netstack copies each datagram record's `len`, `port` and `addr`
  out of the region once and judges the copy, where today `udp_send_to`
  refuses a `len` naming bytes never written; its exit gains a datagram case
  with a control for each bound on `len`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
Japabu added a commit to ToyOSOrg/evidence that referenced this pull request Oct 12, 2026
… run -- --ci host, EXIT=0; amendment D's model with a reset over a full send ring and the head-only control (toyos-transport as at 386c34101); stage 4's pre-accept case and its three controls against today's node tests, measurement only
@Japabu

Japabu commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator Author

Review of #863 at 04ff95bc7, against .claude/agents/reviewer.md on origin/main (97f07c381, the main this head merges; git merge-tree --write-tree origin/main 04ff95bc7 merges clean). Round 5.

Net lines (git diff --shortstat origin/main...04ff95bc7): 3 files changed, 189 insertions(+), all under issues/; production 0, tests 0. Since round 4 (148d26583), the track and the new stream-move issue changed: 90 insertions, 37 deletions.

Earlier BLOCKERs

  1. Round 4's BLOCKER 1 (stage 4's exit): CLOSED.
    • Track lines 114-122 replace the second case with ruling 1's case and its three controls, as 6129844256 accepted.
    • pre-accept.log at evidence 77e00aad, head 04ff95bc7, read whole:
      • with the case: 32 passed, EXIT=0;
      • in-order dropped: EXIT=101, at listeners.rs:455 ([0, 0, 0, 0, 0]) and :480 ([0, 0, 108, 108, 111]);
      • out-of-order dropped: EXIT=101, at :480 ([104, 101, 108, 0, 0]);
      • FIN dropped: EXIT=101, at :481 (left: 0, right: 1);
      • restored: git status --porcelain empty.
    • The three control patches drop exactly what their names say (rx.rs lose_in_order, lose_out_of_order, lose_fin, called at the accept in stack.rs).
  2. Second triage BLOCKER 1 (a write after a reset): CLOSED.
    • The write bullet reads end first, and so do track lines 69-73. The exit test at 93-95 can fail both ways: under its control, or with the end read skipped altogether.
    • Linux v6.12 tcp.c:1143-1145 is if (sk->sk_err || (sk->sk_shutdown & SEND_SHUTDOWN)) goto do_error;, ahead of the copy loop.
  3. Second triage BLOCKER 2 (the client-written datagram words): CLOSED for len past the record's bytes, for port and for addr.
    • The hostile-client section and track lines 111-114 name them. The exit's first datagram case can fail.
    • The second datagram case is BLOCKER 2 below.

Checked

  • Round 4's NOTEs.
    • 1: filed as issues/a-stream-cannot-move-between-processes.md, with an owner and E's exit. Its evidence is BLOCKER 1.
    • 2: the handle bullet answers it. Weighed below.
    • 3: ruling 2 is in the third model. registered-ready.log at 77e00aad (model at 386c34101, unbounded):
      • as written, D less the arm, D less the ring: 101 ×8 each; D: 0 ×8;
      • want-relaxed: 101 in the four racing cases only;
      • head-only: 101 in armed_reset_before and armed_reset_racing only.
      • That is 30 reds, each deadlock with both threads blocked. In the model, arm on the send direction drops ended() under HEAD_ONLY (registered_ready.rs:189), which is the control the exit names.
    • 4: corrected.
  • The implementer's call: std's from_raw_fd panics on a handle the process holds no end for. It stands, for a foreign handle.
    • The panic happens in the caller's own process. It never reaches the kernel or netstack, because nothing is written on the connection.
    • FromRawFd and From<OwnedFd> cannot return an error, and the fork's OwnedFd::from_raw_fd already panics on -1.
    • Root CLAUDE.md asks that "the unimplemented dies loudly", and the gap is filed. The kernel likewise ends a process that names a handle it does not hold.
    • A panic is sound only if it can never fire on the process's own stream, and no exit holds that: BLOCKER 3.
    • The implementer's own Unsure, a stream's handle reaching File or Stdio, is BLOCKER 1.
  • Exits added since round 4.
    • The fatal-end model case and ruling 1's case can fail; both are measured above.
    • The ruling 3 test and the first datagram case can fail, by reading.
    • The second datagram case cannot fail: BLOCKER 2.
  • Citations at Linux v6.12.
    • tcp.c:594-595 is the else mask |= EPOLLOUT taken under SEND_SHUTDOWN, which tcp_done sets.
    • inet_connection_sock.c:682-690 is -EAGAIN from an empty queue, before anything is allocated.
    • udp.c:1124-1125 is dport == 0 → -EINVAL.
    • udp.c:1081-1082: NOTE 2.
  • Body. 59,510 characters (59,544 UTF-8 bytes), under GitHub's 65,536.
  • The starting facts. git diff --stat 06788fc53 97f07c381 -- <the paths> names only LAN stage D and B: netstack wakes only on a change, and the I219 takes a 1,000-descriptor ring at a fixed 131 µs throttle #861's six commits.
  • --ci host. host.log at 77e00aad:
    • 9,041 lines. Its first stamp, 18:45:14, comes after 04ff95bc7 was committed at 18:44:42Z, and it ends 18:53:01 [ci] Host: 76 step(s), all green.
    • Each of its 49 test result: FAILED lines falls under a === [ci] control header.

BLOCKER

  1. issues/a-stream-cannot-move-between-processes.md:9-18; PR body: amendment E's cost, the roast's "Known limit", and the handle bullet with its Unsure — the record says nothing in the tree moves a stream between processes, when today a stream's handle reaches a File and a child's stdio and reads and writes the stream. Stage 3 turns that path into a silent hang and silent loss. The record weighs this against unix rather than against today's ToyOS, the cost it gives the orchestrator for E is false, and the new issue repeats it.
    • Today the path works.
      • The stream's handle is a joined duplex connection over its two data pipes (sdk/std/sys/net/connection.rs:95-102), and TcpStream exposes it through AsRawFd/AsFd.
      • File::from_raw_fd takes any handle (sdk/std/os/io.rs:17-22). Its read and write are syscall::read/write on that handle (sdk/std/sys/fs.rs:606, :645).
      • Stdio::from(File) hands the same handle to a child (sdk/std/sys/process.rs:652-653, :684; fs.rs:528). The kernel duplicates any handle that carries DUP into the child's slot (kernel/src/loader/start.rs:192, build_child_handles).
      • So an inetd-style child that reads stdin and writes stdout reads and writes the TCP stream today, for as long as its parent holds its TcpStream (system/netstack/node/src/streams.rs:423-436 ends the stream when the parent's tcp_close arrives).
    • After stage 3 the same handle is the doorbell connection.
      • The child's read waits for a doorbell that only the parent's toyos::net arms, so it waits for ever, or it reads doorbell bytes as data.
      • netstack drains the child's writes as doorbells. No error is returned on either side.
      • Stage 3's IntoRawFd and From<TcpStream> for OwnedFd make the in-process path a safe one-liner. File's drop then closes by the raw syscall (fs.rs:730-735), bypassing toyos::net, so the end and its 8 MiB mapping outlive the handle. That makes "no entry outlives its handle's number" false on this path.
    • False claims in the record.
      • The issue: "cannot do so on ToyOS" and "nothing in the tree takes a stream handle another process made".
      • E's cost: "nothing on any path the tree has".
      • The Known limit: "before this design or after it".
    • Fix.
      • Record the regression as E's cost, in the roast and in the issue, and have E re-ruled on that cost.
      • Make the two paths std builds fail loudly, with a case in stage 3's exit that goes red when either takes a stream's handle silently: File::from_raw_fd of a stream's handle, and a spawn whose stdio is one. Alternatively, show a design that keeps the path working.
  2. issues/netstack-moves-every-byte-through-two-kernel-pipes.md:111-114, 122-125; PR body, "What a hostile client can do" — stage 4's case for a datagram len past MAX_PAYLOAD cannot go red under its named control. Its bound is also a sibling of one the tree already has.
    • [udp]'s submit already refuses a payload past limits::MAX_PAYLOAD by Counter::ExceedsMtu (system/netstack/udp/src/lib.rs:542-543). The tree tests it twice: udp/tests/send.rs:222 and node/tests/datagram.rs:129.
    • Under the control, "netstack takes that len as written", netstack hands [udp] the record's bytes, [udp] refuses the record by its counter, and netstack serves on. That is exactly what the case asserts, so the case stays green.
    • 6130141310 ruled a bound by the bytes the record holds, not by MAX_PAYLOAD.
    • Fix: drop the MAX_PAYLOAD case and netstack's own MAX_PAYLOAD judgement. Say that [udp] refuses it, as the record already says [udp] refuses port 0 and addresses.
  3. issues/netstack-moves-every-byte-through-two-kernel-pipes.md:73-77, 92-93; PR body, handle bullet — the E test pins only the refusal. Nothing pins its boundary, so a stage 3 whose std panics on the process's own stream passes every exit.
    • The record makes two claims: "Taken back, a handle the process holds an end for shares that end", and "A handle given out stays entered against its end".
    • Two mutations pass the exit's test, which hands over a foreign handle and expects a refusal:
      • a stage 3 whose into_raw_fd or From<TcpStream> for OwnedFd lets the entry go;
      • a stage 3 whose lookup refuses every handle.
    • Under either, TcpStream::from_raw_fd(s.into_raw_fd()) panics on the process's own stream.
    • Fix: the E test gains its boundary. A stream's own handle, given out by into_raw_fd or From<TcpStream> for OwnedFd, and one made by try_clone_to_owned, each taken back, share the one end (one cursor). The case goes red when giving out the handle lets the entry go.

NOTE

  1. PR body, handle bullet — "OwnedFd::try_clone, whose ToyOS arm" is false of the tree.
    • OwnedFd::try_clone has no ToyOS arm. It calls BorrowedFd::try_clone_to_owned (rust/library/std/src/os/fd/owned.rs:100-103), whose ToyOS arm is the bare dup (:159-164).
    • Routing the arm the record names routes nothing. stream.as_fd().try_clone_to_owned() then makes a handle that TcpStream::from panics on.
    • The orchestrator corrects this.
  2. PR body, hostile-client section — Linux v6.12 udp.c:1081-1082 is len > 0xFFFF → -EMSGSIZE, not a bound at the MTU. It goes with BLOCKER 2's fix. The orchestrator corrects this.
  3. PR body, the roast's "ABI churn" says "Two forks move", but the handle bullet also changes the rust/ fork.
    • The OwnedFd drop (owned.rs:241-244) and the cfg'd-out conversions (owned.rs:378-418, mod.rs:16-17) live there: a fork commit and a gitlink bump in stage 3.
    • After the change, every OwnedFd drop in every program consults toyos::net, and the roast prices none of this.

SEND BACK

@Japabu

Japabu commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator Author

Ruling on E, after round 5's BLOCKER 1 (#863 (comment)).

The review shows a cost the record did not price. Today a stream's handle reaches a File and a child's stdio and reads and writes the stream. After stage 3 that path would hang and lose data with no error.

E stands, on these terms:

  1. The record states the cost as a regression from today's ToyOS, not against unix. It goes in E's cost, in the roast's Known limit and in issues/a-stream-cannot-move-between-processes.md. The three claims the review quotes as false are deleted.
  2. Stage 3 makes both paths std builds fail loudly: File::from_raw_fd of a stream's handle, and a spawn whose stdio is one. Stage 3's exit gains a case that goes red when either takes a stream's handle silently.
  3. Moving a stream between processes stays the filed issue. Nothing in the tree uses it, and a portable program that does so fails loudly on ToyOS and is known, tracked and still true.

The fix round also answers BLOCKERs 2 and 3 as the review writes them, and makes NOTEs 1-3's corrections in the body.

Japabu and others added 2 commits October 12, 2026 21:23
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
…dly, the E test gains its boundary, and the track cites RFC 9293 and POSIX where it cited Linux

Round 5's review (PR #863, 6130914125) and the orchestrator's ruling on E
(6130929883):

- The stream-move issue states E's cost as the regression it is. Today a
  stream's handle is its joined data pipes, and `File::from_raw_fd` and
  `Stdio::from(File)` read and write it with the same `syscall::read` and
  `write` as `TcpStream`; over the region that handle is the doorbell
  connection. Stage 3 makes `File::from_raw_fd` of a stream's handle panic
  with `toyos::net`'s refusal and a spawn that would put one in a child's
  stdio slot answer it, and its exit gains a test that reds when either
  takes the handle silently. The three claims the review quoted as false
  are gone.
- Stage 3's E test gains its boundary (BLOCKER 3): a stream's own handle
  given out by `into_raw_fd` or `From<TcpStream> for OwnedFd`, or made by
  `try_clone_to_owned`, and taken back, shares the one end, red when giving
  it out lets the entry go. The track names the `rust/` fork's ToyOS arms of
  `OwnedFd`'s drop and `BorrowedFd::try_clone_to_owned`, which stage 3
  routes through `toyos::net` (NOTE 1, NOTE 3).
- Stage 4 judges a datagram record's `len` only against the bytes the
  record holds, and its `MAX_PAYLOAD` case goes (BLOCKER 2): [udp]'s
  `submit` already refuses that payload by `Counter::ExceedsMtu`, so the
  case could not go red under its control.

The owner's direction, relayed by the orchestrator this round: ToyOS does
not follow Linux and references it nowhere in the tree. The track's two
Linux citations become POSIX's `select` ("would not block, whether or not
the function would transfer data successfully") for a fatal end making the
send direction ready, and RFC 9293 §3.10.7.4, §3.10.8 and §3.10.2 for a
write after a fatal end copying nothing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
Japabu added a commit to ToyOSOrg/evidence that referenced this pull request Oct 12, 2026
@Japabu

Japabu commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator Author

Rulings on round 6's two open calls.

  1. Every path that moves a handle into another process fails loudly on a stream's handle, not only stdio. inherit_handle past the stdio slots and endow refuse it the same way, and stage 3's exit case covers each path. endow must leave no stale entry in toyos::net.
  2. A datagram past the payload bound is an error at the sender. toyos::net checks the length against the same bound [udp] holds (one declaration, read by both) and returns the error std's send_to gives for a message too long, as POSIX sendto's [EMSGSIZE] does. netstack's [udp] still refuses a client that lies, by its counter, at the trust boundary. A send never answers Ok for a datagram that is refused.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant