Repository navigation
breaker: no protocol in kernel; the transport states its fault table, PIECE_END=128 rides the same framer lineage (row 66) - #561
Closed
MattJackson wants to merge 54 commits into
Closed
MattJackson wants to merge 54 commits into
MattJackson wants to merge 54 commits into
Conversation
…(the breaker names no plane), so its row is struck
…e's spare byte, a per-claim fault table appended to the transport tail); the bands leave the breaker
…lt reading filled, fault table stated)
…Row, TransportTail::fault_rows); fault-table validators and their RED arms
… arm at the walk: no reading records nothing)
…each repinned to this lane's contract)
…e fault table checks sit beside the upgrade/session lines at bind
…eader regenerated over the merged ABI
…p#12, grpc#7, ws#14, tcp#14)
…(four dependency edges leave; nothing re-resolved)
…nto p2-breaker-neutral-ts
… byte of one built before it was named) reads as none; every stated reading round-trips
…mpty text and binary pieces are messages (WIP, header regen pending)
…ect echoes empty messages in kind and never the end
This was referenced Oct 12, 2026
Conflicts: Cargo.toml and Cargo.lock keep this branch's busbar-transport-tcp pin b3047ce874, which contains #502's eb334dd6e9 plus the tail's fault table; the neutral frame door fixture keeps this branch's FaultRow and FAULT_CALLER imports.
…es pinned by the golden)
MattJackson
added a commit
that referenced
this pull request
Oct 12, 2026
… lane-p3-flip-a2a - crates/busbar-kernel/tests/plane_driver.rs: both sides appended cells at the file's end; this branch's refused-piece cells and #778's unpresentable-credential cells are both kept. - qa/kind-isolation.toml: #778 recorded the admin surface's test edges with the retiring engines as [[dep]] rows; the two A2A rows are struck (busbar-a2a is deleted). The [[law0]] rows take this tree's measure: busbar x plane 769, busbar x transport 184, core-admin x plane 50, kernel x plane 1149. The standing `cleanliness -> legacy` finding is struck (#778's row records it). - Scan floors re-armed at this tree's measure, each naming what FLIP-A2A deleted, against #778's measure at e846df4: population 948 -> 938, tracing 978 -> 968, seal-witness 2199 -> 2162, no-deferral 941 -> 930. - Cargo.lock without busbar-a2a; the C header regenerated (`cargo xtask abi-header --write`), unchanged.
Conflict: crates/busbar-core-connector/src/tests/support.rs. The test framer keeps both knobs: this branch's scripted messages (PIECE_END) and predev's piece cap; the scripted arm runs first, else the frame is cut at the cap.
Conflict: docs/design/1.6.0-TODO.md. Predev's 2026-10-12 stock take replaces the PATH section; this branch's note (kernel breaker.rs and normalize.rs leave with D2, ARCHITECT breaker ruling Q2) is carried into its D2 sentence.
MattJackson
marked this pull request as ready for review
October 12, 2026 21:51
MattJackson
marked this pull request as draft
October 13, 2026 11:56
Collaborator
Author
MattJackson
added a commit
that referenced
this pull request
Oct 13, 2026
…; the breaker never reads it (ARCHITECT ruling on #787) Predev's FLIP-LLM model egress runs 1.5.5's 429 rate-limit ladder and 4xx client-fault count on the numbered status; #561/#778 (row 66) had the port carry the fault reading in its place. Per the ruling (option a; the ABI carries the number beside the class, FrameMeta status_code, BUSBAR-1.6.0.md l.4036-4053) the egress port carries both: - busbar-kernel-egress ports::UpstreamStatus gains code: Option<WireStatus> beside fault; - the far end fills both (wire_code: predev's reserved-numbering rule), and a held relayed answer keeps its code beside the plane's reading; - the kernel breaker still classifies from the fault reading alone; only root/model_egress.rs judge reads code; - root adapters test the_breakers_classification_never_moves_with_the_number_beside_the_fault_reading pins row 66: a fixed class and fault reading classify the same whatever code says, in either reserved numbering or none.
MattJackson
added a commit
that referenced
this pull request
Oct 13, 2026
…es with no reading #795 (on predev) wrote busbar-transport-webrtc against the transport ABI before row 66 (#561/#778), which appended TransportTail::fault_rows / fault_rows_len and gave FramePiece's spare byte to fault. The door's TAIL states no status rows, so it states the empty fault table (null, 0), as busbar-transport-stdio's carrier does; its pieces and the conformance test's host piece carry fault: 0 (FAULT_NONE) where _reserved was. No transport ABI version constant is declared in the crate.
MattJackson
added a commit
that referenced
this pull request
Oct 13, 2026
…D, never an empty piece Row 66's contract (#561, busbar-contract abi/transport/mod.rs:58-64, PIECE_END at :451-456, check_framer at check.rs:256-265): a stream's frames end with their own empty piece carrying PIECE_END and PIECE_END_OF_FRAME; an EMPTY piece without it is an empty message. #795's door turned Event::ChannelClose (framing.rs) into an empty piece with PIECE_END_OF_FRAME, which the host now reads as an empty binary message, never the channel's end. - framing::Piece states end; ChannelClose's piece sets it, every other piece does not; - door::piece_flags states an end as PIECE_END | PIECE_END_OF_FRAME and nothing else; every other piece keeps its bits; - src/tests/door_tests.rs: a closed channel's piece is the end by flag (never text, fields, failed or continued, which check_framer refuses beside an end), an empty binary or text message is a frame and not the end, and messages and field blocks keep their bits.
This was referenced Oct 13, 2026
MattJackson
added a commit
that referenced
this pull request
Oct 14, 2026
…erged with predev (460be4d77d) Drains: busbar x instance:secret 25 -> 22, busbar x plane 772 -> 770, busbar-kernel x plane 1100 -> 1099, busbar-kernel x transport 266 -> 220, busbar-kernel-breaker x plane 2 -> 0, busbar-kernel-breaker x transport 134 -> 1 (the #561/#778 breaker work this branch stacks on, row 66, and FLIP-A2A). busbar-plugin-loader x instance:secret 21 -> 23 is a correction of the merge figure, not a rise: predev's -2 (#532, 40a4080) removed two `extern "C"` ABI strings (host_log_sink and its doc line) that this branch's scanner fix had already stopped counting, so the two drains overlap by those two; 23 is this branch's own pre-merge measure, and no hit was added.
Conflicts: - Cargo.toml, Cargo.lock: busbar-transport-http pinned at a6e29e36da, the http dev commit that carries both sides: this branch's fault-table pin 2d1dbfdabf (the dev pin that drains tokio and hyper-util) and predev's a715d1ab57 (an IPv4 spelling is sent as the address it names). It is the pin #787 already carries over the same two. grpc 1303273a73, ws 2ec0786eba and tcp b3047ce874 each contain predev's pin (a5140eee3e, f8ba71d259, eb334dd6e9), so they stay. The transport ABI over predev's new code: - busbar-transport-webrtc (new on predev): its tail states no fault table (fault_rows null, as the byte-stream carrier's), its pieces name the fault byte where the padding was, and a closed data channel is the stream's END by flag (PIECE_END | PIECE_END_OF_FRAME), never an empty message; door_tests prove both. The connector datagram test builds its piece over a zeroed base. Same port #787 carries. - Layout golden and C header: the textual merge equals the generator's output over the merged types (predev's OnPieceOut.tap_fault and this branch's FaultRow / TransportTail.fault_rows / FramePiece.fault are disjoint; 287 of 291 structures pinned). qa/kind-isolation.toml law0: busbar-kernel-breaker x plane 2 -> 0 and x transport 134 -> 1, the measure ModernCI took of this same breaker code in #787 (60dd171, 460be4d77d).
Collaborator
Author
|
Closed: every commit of this PR is patch-identical to content that landed on predev in the wave-1 integration (predev 179abf2, lane-integration-w1b). Nothing remains to merge. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Row 66, "breaker: no protocol in kernel". The kernel's breaker no longer classifies from status bands or numberings. It reads the fault the transport states (and, since #489, the plane's), and adds one fact of its own: that no answer came.
Spec: docs/design/BUSBAR-1.6.0.md Part 0 (l.115-120: a transport may name only itself; l.3962: no transport names another), Part 2 #36 (busbar-kernel-breaker: trip, cooldown and fast-fail per pool and destination; the kernel names no protocol), Part 3 (the route pump: the breaker is the kernel walk's, and the breaker service classifies).
What changes
FramePiece::faulttakes the spare byte, so the piece size is unchanged.FaultRowandTransportTail::fault_rowsare appended to the tail. A tail that predates them reads its fault table as absent (TRANSPORT_TAIL_FROZEN).check_fault_rowsandcheck_fault_cover: a claim that states status rows must state fault rows, or the load is refused. Both have RED arms.Reading{NoAnswer, Answered(Option<WireFault>)} -> Disposition. HTTP_OVERLOADED/529, the gRPC status table, the HTTP bands, the context-length gate and the warn-once diagnostics are gone.UpstreamStatusis{reading, retry_after}.Answered(fault), and readsNoAnsweronly when there is neither a class nor a fault.check_framerrules,sdk_hyperPiece::end, connectorGot.end.p2-breaker-neutral-ts-pin= dev + p2-piece-end-b, repinned to busbar 2add33a:streams->calls, because a transport names only itself (kind-isolation vocab)Behaviour
1.5.5-identical. The http framer's fault table maps exactly onto the old bands:
Proof (Latchkey, large)