Skip to content

contract: an emit carries the answer's status on an accepted stream's head (INBOUND-LISTEN, l.4913) - #1012

Merged
MattJackson merged 1 commit into
predevfrom
lane-kdel-emit-status
Oct 15, 2026
Merged

MattJackson merged 1 commit into
predevfrom
lane-kdel-emit-status

Conversation

@MattJackson

Copy link
Copy Markdown
Collaborator

This PR is step 36's contract piece (INBOUND-LISTEN), per the ARCHITECT ruling of 2026-10-14. That ruling carries out BUSBAR-1.6.0.md l.4913: "transport emit input += status u16 (no ':status' magic header)".

The append

EmitIn gains a pre-tag tail: status: u32 and _status_reserved: u32. Its size goes from 224 to 232. It is appended the same way deadline_ns and lane were.

  • Where it is stated: only on the emit that carries an ACCEPTED stream's answer head (the bytes encode rendered). The number is in the claim's own numbering.
  • 101: a status that asks the far end to switch protocols hands the connection to the claimed upgrade framer through detach.
  • Everywhere else: it is 0, and it is never a :status field.
  • Existing callers: every host builds EmitIn zeroed (blank_in, input, z), so every existing emit states 0.

The rule

check_emit_status (abi/transport/check.rs) is the framer's rule:

  • a status appears only on the answer head;
  • the answer head always carries one;
  • the padding is zero.

RED: transport_check_tests::an_emit_states_a_status_only_on_an_accepted_streams_answer_head names a field and a function that did not exist before this PR.

Files that move with the append

  • tests/golden/abi-layout.golden and the layout_golden.rs record list.
  • include/busbar_plugin.h, hand-written in the generator's format. Preflight's gate abi-header --write and git diff --exit-code judge it.

Order

This PR lands first. Next comes the busbar-transport-http SIDE_ACCEPT fleet PR, pinned to a busbar rev that carries this append. Then the ws door's accept side. Step 36 comes after #503.

qa/abi-freeze.toml freezes only abi/hot and abi/cold, so no row moves.

… head (INBOUND-LISTEN, l.4913)

EmitIn gains a pre-tag tail, `status: u32` and `_status_reserved: u32` (224 -> 232), as deadline_ns
and lane were appended. It is stated on the emit that carries an ACCEPTED stream's answer head (the
bytes encode rendered), in the numbering of the claim the stream arrived on; a status asking the far
end to switch protocols hands the connection to the claimed upgrade framer (detach). It is 0 on
every other emit, and never a `:status` field. The spec's l.5037 "no ABI change" rested on this
field, which l.4913 ruled and which never landed (ARCHITECT ruling 2026-10-14).

check_emit_status is the framer's rule: a status only on the answer head, the answer head always
with one, the padding zero. RED: transport_check_tests
an_emit_states_a_status_only_on_an_accepted_streams_answer_head names a field and a function that
did not exist. The abi-layout golden, its record list and the C header move with the append; every
host constructs EmitIn zeroed (blank_in / input / z), so every existing emit states 0.
@MattJackson

Copy link
Copy Markdown
Collaborator Author

Rule 20 note from #1030 (row 155): disjoint hunks in busbar_plugin.h, abi-layout.golden, layout_golden.rs (OnPieceOut gains tap_fault at 181; _fault_reserved moves to 182, plus BB_PLANE_TAP_FAULT_* consts after UNITS_FLOOR). A test merge is clean.

MattJackson added a commit that referenced this pull request Oct 14, 2026
… appended declared_len at zero

compile/clippy/test were red on busbar-transport-ws (pinned f8ba71d), whose door builds a FramePiece
literal field by field and so missed the appended declared_len. The pin moves to 140691cf2e, f8ba71d
plus one change: the literal ends in `..std::mem::zeroed()` (FramePiece is plain repr(C) integers;
zero is every field's absent value), so this and any later append compile. The framer states no
declared length. ws's own dev carries the off-line door changes (#1012/#1019) and repins with them.
@MattJackson
MattJackson merged commit 928c5d5 into predev Oct 15, 2026
1 check was pending
@MattJackson
MattJackson deleted the lane-kdel-emit-status branch October 15, 2026 05:33
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