Skip to content

row 130 E6: the plugins.fetch download leaves busbar-kernel and rides the one connector (stacked on #804) - #805

Open
MattJackson wants to merge 35 commits into
predevfrom
lane-egress-e6-plugin-fetch
Open

MattJackson wants to merge 35 commits into
predevfrom
lane-egress-e6-plugin-fetch

Conversation

@MattJackson

Copy link
Copy Markdown
Collaborator

/status row 130 (E6): the kernel's last dial of its own, the plugins.fetch download, moves out of busbar-kernel and goes through the one connector. Stacked on #804 (proxy support in the connector, E5a), so the download keeps honouring the proxy environment the way 1.5.5 did.

  • Deleted: busbar-kernel preflight::plugin_fetch_downloader, which used the kernel engine's client.
  • Added: crates/busbar/src/root/plugin_fetch.rs. The root declares one provider-class need per URL scheme under its own identity. NeedId(1) and NeedId(2) are new; NeedId(0) is the authorization server's. The root then sends one GET through the process's one connector, so:
    • the connector's single destination guard judges and pins the address;
    • the proxy environment applies;
    • the http door writes 1.5.5's client defaults, accept: */* before host. This is the oracle cell egress.fetch|plugins|url. It is currently marked known-red as egress-plugin-fetch-accept, and the mark stays until ModernCI shows the cell green, per the ARCHITECT.
  • Moved unchanged: the download's own rules:
    • https for a public host; plaintext only for a loopback or private one;
    • the cloud-metadata denylist, extended by security.blocked_metadata_hosts;
    • no redirect is ever followed;
    • a declared Content-Length over the cap is refused before any body byte, and the body is counted against the cap as it arrives;
    • every refusal keeps 1.5.5's wording;
    • the download runs on its own thread with its own runtime.
  • Kernel row change: PluginsFetch now hands the root the operator's denylist instead of a downloader. The kernel test build's stand-in refuses every download, because it has no connector.

Tests (root/tests/plugin_fetch.rs). The rows that dial use the build's linked doors against scripted loopback far ends:

  • wire: exactly GET <path> HTTP/1.1, accept: */*, host;
  • oversized body: refused both with an honest Content-Length and with none (chunked); a body within the cap comes back byte for byte;
  • redirect: refused, with its 1.5.5 wording;
  • RED: refusals before any dial (plaintext to a public host; a metadata host, including one added by the operator's denylist).

Proof: ModernCI only (owner rule 2026-10-12).

…t, as 1.5.5 did

ARCHITECT ruling 2026-10-12: the kernel engine's proxy behaviour moves into the connector
unchanged, so every dial through the connector honours HTTPS_PROXY / HTTP_PROXY / ALL_PROXY /
NO_PROXY exactly as 1.5.5's reqwest clients did. The connector and the transport plugins had no
proxy support, so every dial already on the connector (the door planes, oidc, cimd) went direct
past a configured proxy.

- busbar-core-connector/src/proxy.rs: the engine's decision moved verbatim (busbar-kernel
  egress/engine/mod.rs `mod tunnel`): scheme-scoped slots with the ALL_PROXY fallback, uppercase
  before lowercase, NO_PROXY's full rule set (host, domain suffix, IP literal, CIDR), Basic
  Proxy-Authorization from userinfo, an https:// proxy and a garbage value refused without echoing
  the password; the CONNECT request bytes and the 2xx / 8 KiB answer rule of the engine's
  connect_handshake.
- compose.rs: a dial through a proxy connects to the proxy, writes the CONNECT request before
  anything else, reads the proxy's head raw (under the 10 s CONNECT bound), then runs the secure
  layer (the target's name and certificate) and the framer over the tunnel. Bytes after the head
  are the target's.
- lib.rs: Connector::proxying; a FRAMED dial (never a carrier carried as itself, as 1.5.5's
  drivers never used a proxy) not pinned `within` an address set, to a host the scheme's slot has
  a proxy for and NO_PROXY does not exclude, is judged in two steps: the target (its name arm, and
  its own resolution when it resolves here; a name that does not resolve here goes to the proxy, the
  engine's tunnelled arm), then the proxy's address with reach (a private proxy admitted, cloud
  metadata never). process::build reads the environment once; a set value that does not parse
  refuses the boot, as the engine's install did.
- Tests (src/tests/proxy_tests.rs): the engine's semantics rows ported (precedence, garbage,
  NO_PROXY suffix and IP/CIDR matrix, scheme scoping, password redaction, the answer rule), and end
  to end through Connector::open: a framed dial to a name only the proxy resolves writes exactly
  `CONNECT upstream.test:8080 HTTP/1.1`, `Host`, the Basic credential, and its exchange rides the
  tunnel; RED arms: a 407 refuses the exchange; a NO_PROXY host and a raw-stream need dial direct
  and the proxy is never asked; with no proxy a name nothing resolves is refused.
@github-actions

github-actions Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

promote into predev: DENY @8be49add6: 27 failing test row(s), 0 DENY row(s)

Failing tests (27)

crate test step first panic
`` clippy rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs test:root-test-harness
`` test rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs test:root-test-harness
`` clippy rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs test:timing
`` clippy rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs test:core-duplex-ws
`` clippy rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs test:oauth2-test-support
`` clippy rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs test:single-plane-decision
`` test rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs test:single-plane-decision
`` clippy rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs build:clippy
`` clippy rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs test:admin-test-support
`` clippy rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs test:single-plane-mcp
`` test rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs test:single-plane-mcp
`` clippy rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs test:dropped-in-tcp-transport
`` clippy rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs test:no-default-features
`` test rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs test:no-default-features
`` clippy rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs test:openapi-schema
`` test rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs test:openapi-schema
`` nextest rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs test:workspace
`` xtask rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs test:teller-steps-root-legs
`` clippy rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs test:single-plane-a2a
`` test rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs test:single-plane-a2a
`` clippy rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs test:single-plane-voice
`` test rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs test:single-plane-voice
`` check rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs build:workspace-compile
`` clippy rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs test:loader-pack
`` clippy rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs test:contract-test-seal
`` clippy rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs test:single-plane-llm
`` test rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs test:single-plane-llm
Denied because (20)
  • shard 1/4: gate:test:core-duplex-ws: green at base, red now (clippy: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs)
  • shard 1/4: gate:test:oauth2-test-support: green at base, red now (clippy: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs)
  • shard 1/4: gate:test:root-test-harness: green at base, red now (clippy: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs, test: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs)
  • shard 1/4: gate:test:single-plane-decision: green at base, red now (clippy: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs, test: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs)
  • shard 1/4: gate:test:timing: green at base, red now (clippy: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs)
  • shard 1/4: gate:test:xtask-selftest row xtask: selftest no-deferral: red now, not red at base
  • shard 2/4: gate:build:clippy: green at base, red now (clippy: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs)
  • shard 2/4: gate:test:admin-test-support: green at base, red now (clippy: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs)
  • shard 2/4: gate:test:dropped-in-tcp-transport: green at base, red now (clippy: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs)
  • shard 2/4: gate:test:no-default-features: green at base, red now (clippy: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs, test: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs)
  • shard 2/4: gate:test:openapi-schema: green at base, red now (clippy: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs, test: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs)
  • shard 2/4: gate:test:single-plane-mcp: green at base, red now (clippy: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs, test: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs)
  • shard 3/4: gate:test:single-plane-a2a: green at base, red now (clippy: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs, test: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs)
  • shard 3/4: gate:test:single-plane-voice: green at base, red now (clippy: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs, test: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs)
  • shard 3/4: gate:test:teller-steps-root-legs: green at base, red now (xtask: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs)
  • shard 3/4: gate:test:workspace: green at base, red now (nextest: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs)
  • shard 4/4: gate:build:workspace-compile: green at base, red now (check: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs)
  • shard 4/4: gate:test:contract-test-seal: green at base, red now (clippy: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs)
  • shard 4/4: gate:test:loader-pack: green at base, red now (clippy: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs)
  • shard 4/4: gate:test:single-plane-llm: green at base, red now (clippy: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs, test: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs)

Judged against base 427ff692f: 20 new red, 0 worse, 6 standing (excused).

New reds: gate:test:core-duplex-ws: green at base, red now (clippy: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs), gate:test:oauth2-test-support: green at base, red now (clippy: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs), gate:test:root-test-harness: green at base, red now (clippy: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs, test: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs), gate:test:single-plane-decision: green at base, red now (clippy: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs, test: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs), gate:test:timing: green at base, red now (clippy: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs), gate:test:xtask-selftest row xtask: selftest no-deferral: red now, not red at base, gate:build:clippy: green at base, red now (clippy: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs), gate:test:admin-test-support: green at base, red now (clippy: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs), gate:test:dropped-in-tcp-transport: green at base, red now (clippy: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs), gate:test:no-default-features: green at base, red now (clippy: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs, test: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs), gate:test:openapi-schema: green at base, red now (clippy: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs, test: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs), gate:test:single-plane-mcp: green at base, red now (clippy: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs, test: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs), gate:test:single-plane-a2a: green at base, red now (clippy: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs, test: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs), gate:test:single-plane-voice: green at base, red now (clippy: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs, test: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs), gate:test:teller-steps-root-legs: green at base, red now (xtask: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs), gate:test:workspace: green at base, red now (nextest: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs), gate:build:workspace-compile: green at base, red now (check: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs), gate:test:contract-test-seal: green at base, red now (clippy: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs), gate:test:loader-pack: green at base, red now (clippy: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs), gate:test:single-plane-llm: green at base, red now (clippy: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs, test: rustc error[E0308]: mismatched types @ crates/busbar/src/root/tests/boot.rs)

Already red on predev, not this PR's: 15
gate row detail
test:xtask-selftest ::xtask selftest kind-isolation
test:xtask-selftest ::xtask selftest no-deferral
test:xtask-selftest ::xtask selftest plane-purity
test:xtask-selftest ::xtask selftest no-deferral-strict-done
test:xtask-selftest ::xtask selftest plane-purity-strict
test:xtask-selftest ::xtask selftest unconstructed
test:xtask-selftest ::xtask selftest plane-transport-neutrality
construction one-pick-site 3 production call site(s) of 'pick_among(' (ceiling 2): crates/busbar-kernel-egress/src/walk.rs:358; crates/busbar-llm/src/engine/exhaustion/fallback.rs:120; crates/busbar-llm/src/engine/pipeline.rs:8
kind-isolation kind-isolation:deps 3 finding(s), 92 shipped edge instance(s) over 29 class(es), 92 declaration(s); 55 '[[dep]]' row(s), 0 question(s): unlisted-dep-edge legacy -> plane busbar-llm -> busbar-plane-llm is a shipped edge w
kind-isolation-ship kind-isolation:deps 8 finding(s) over 92 shipped edge(s): ship-edge kernel -> store busbar-kernel -> busbar-store-memory is 'not-allowed': the architecture grants no kernel -> store edge, and the ship criterion is the ar
kind-isolation-ship kind-isolation:test-deps 5 finding(s) over 31 test edge(s): ship-edge cleanliness -> export busbar-core-admin -> busbar-export-prometheus is 'not-allowed': the architecture grants no cleanliness -> export edge, and the ship c
kind-isolation-ship kind-isolation:faces 2 finding(s) over 40 crate(s): foreign-entry crates/busbar busbar is kind 'root' and implements 'Transport' 1 time(s) in shipped source — the entry face of kind 'transport'. A trait implementation is
kind-isolation-ship kind-isolation:legacy-drain 3 finding(s): transitional-live qa/kind-isolation.toml 'busbar-a2a -> busbar-core-admin' (legacy drain: the retiring A2A engine's tests drive the admin surface that drained into the cleanliness tier)
ship-ready ship-ready:ship-twin 'kind-isolation-ship' is not green: kind-isolation:deps (a dependency the architecture does not grant is still in the graph); kind-isolation:test-deps (a dependency the architecture does not grant is
structure-lint structure-lint:plane-dup:unledgered 22 finding(s): PLANE-DUPLICATE (module): 'config.rs' — a2a:crates/busbar-a2a/src/a2a/config.rs decisions:crates/busbar-plane-decisions/src/config.rs voice:crates/busbar-voice/src/config.rs (the ledger

tests passed: 33239, failed: 0. Run: https://github.com/GetBusbar/busbar/actions/runs/38384151676 . Artifact verdict-8be49add6c31cb95295315525f4b81239b62d84b (failures.json, junit.xml, raw.log; 90 days).

…d parameter

secret-hygiene check 3 read connect_answer's `authority` parameter as a secret subject: the
CONNECT target is `target` throughout (ProxySpec::endpoint for the proxy's own host:port). The
kind-isolation law0 scan read the verbatim engine word for the proxy's choice as the decisions
plane's bare id: it is `choice` here. Three comments say socket instead of naming a carrier.
… the one connector

The kernel's last dial of its own, preflight::plugin_fetch_downloader (the engine on a cold
one-shot posture), is deleted. The root downloads every plugins.fetch artifact through the
process's one connector (BUSBAR-1.6.0.md §3 stage 3c, "fetch plugins through the connector"):
crates/busbar/src/root/plugin_fetch.rs declares a provider-class need per URL scheme under the
root's own identity (NeedId 1 and 2; 0 is the authorization server's) and sends one GET, so the
connector's one guard judges and pins the address, the proxy environment applies (#804), and the
http door writes the request with the client defaults 1.5.5's Client::new().get() sent:
`accept: */*` before `host`. That is the oracle cell egress.fetch|plugins|url, known-red as
egress-plugin-fetch-accept; its mark stays until ModernCI shows the cell green.

What stays the download's own moves verbatim: https for a public host and plaintext only for a
loopback or private one, the cloud-metadata denylist extended by security.blocked_metadata_hosts,
no redirect followed, a declared Content-Length over the cap refused before a body byte and the
body counted against the cap, every refusal in 1.5.5's words, and the dedicated thread with its own
current-thread runtime.

The kernel's PluginsFetch row now hands the root the operator's denylist instead of a downloader;
the kernel test build's stand-in refuses every download (it has no connector).

Tests: the kernel's two downloader tests move to root/tests/plugin_fetch.rs, driven over a
connector of the build's linked doors against scripted loopback far ends (an honest and an absent
Content-Length over the cap, a within-cap body byte for byte, a redirect refused in its 1.5.5
words), plus the wire row (exactly `GET <path>`, `accept: */*`, `host`) and a pre-check RED row.
busbar-kernel x transport 285 -> 284 and busbar x transport 208 -> 209: the plugins.fetch download
moved verbatim from the kernel into the root, so the total does not rise (the ARCHITECT ruling on
#710, 2026-10-10).
@MattJackson
MattJackson force-pushed the lane-egress-e6-plugin-fetch branch from d228282 to 805e1ba Compare October 12, 2026 21:40
# Conflicts:
#	crates/busbar-core-connector/src/compose.rs
#	crates/busbar-core-connector/src/lib.rs
…in-fetch; the download's rules stay the kernel's pure functions

The plugins.fetch pre-check (the scheme rule and the cloud-metadata denylist) and the verdict on
the answer's status are the kernel's deleted downloader's rules, kept in busbar-kernel as pure
functions (preflight::plugin_fetch_admits, plugin_fetch_status_refusal) the root's download calls:
no dial, and the root's module names no transport. The ledger rows are predev's: no ceiling moves.
…he kernel engine takes its choice

ARCHITECT ruling 2026-10-12 (a move, not a copy): proxy environment parsing (the variables, the
scheme rule, the credential) lives in busbar-core-connector only. The kernel engine's own parser
(parse_proxy, the environment read, the precedence resolve, the redaction) is deleted with its
suite's rows, which the connector's suite holds.

- busbar-contract proxy_route: the shared shape, ProxyHop (endpoint and credential, Debug redacted)
  and ProxyChoice (the secured and plain slots and the exemption list, with curl's rule set, moved
  verbatim), naming no transport.
- busbar-core-connector proxy: the parser fills ProxyChoice; Connector::proxy hands it out.
- busbar-kernel egress engine: install_proxy(choice) replaces install_proxy_tunnel_if_configured;
  the root installs the connector's choice right after the connector is installed; busbar-llm no
  longer reads the environment at its runtime build.
…s tests are the connector's

The download (one GET over the root's own need, read under the cap) moves from the root into
busbar-core-connector (fetch::download, over a fetch::Table the root fills with its identity and
NeedIds 1 and 2), so every dial is the connector's and the root gains no transport words: the
root's plugin_fetch module only wires the one connector. The pre-check and the status verdict stay
the kernel's pure rules. The wire, cap and redirect rows move from the root's test into the
connector's universal_needs suite, over the request/response framer built beside it, naming no wire
(the version is the door's own claim, as the suite's other rows spell it).
…names no secret subject

- busbar-core-connector x transport 68 -> 69 and busbar-kernel x transport -1: the ruled MOVE of the
  proxy environment parse (ARCHITECT ruling 2026-10-12), net flat.
- Drained by #805, lowered to the measure: busbar-kernel x transport 285 -> 279 (with the -1 above),
  busbar-kernel x plane 1168 -> 1164, busbar-kernel x auth 50 -> 31, busbar x auth 49 -> 21,
  busbar-plugin-loader x auth 5 -> 0.
- busbar-contract x plane stays 210: proxy_route's doc says choice, not the decisions plane's word.
- secret-hygiene check 3: the CONNECT refusal reads "CONNECT <target> refused by the tunnel's far
  end: <status line>", no secret-subject word beside the interpolated target.
…in-cached fetch test hands its panicking download to the loader's fetch

This branch changed the kernel's PluginsFetch row (and the root's plugins_fetch) to take the
operator's metadata denylist instead of a download closure (row 130 E6: the root downloads through
the connector), and left the root boot test a_pin_cached_fetch_never_downloads passing a closure
(E0308). The test now drives the loader's fetch the root delegates to with the panicking download,
so a pin-cached entry is still proven to reach no network.
…in-fetch

# Conflicts:
#	qa/kind-isolation.toml
…on, the per-dial choice names no plane, a CONNECT refusal names its addr; law0 rows settle at the merged tree's measure

- busbar-contract ProxyHop::auth() -> proxy_authorization(): a contract-exported `auth`
  identifier is masked tree-wide by kind-isolation's contract_identifiers, which hid every
  `auth-header`/`busbar-auth-*` hit outside the contract (busbar x auth 49 -> 21, kernel x auth
  50 -> 31, plugin-loader x auth 5 -> 0 were that mask, not a drain).
- proxy_route.rs: "The per-dial decision:" read as a `decision:` section key (contract x plane +1);
  reworded.
- proxy.rs connect_answer: the refused-CONNECT message interpolated a `target` parameter beside
  the word "proxy" (secret-hygiene check 3); the parameter is the `host:port` addr it always was.
- qa/kind-isolation.toml: kernel x plane 1132 -> 1128, kernel x auth 50 -> 49 (drains with the
  tunnel the engine gave up); kernel x transport 284 -> 278 and core-connector x transport
  68 -> 69, a ruled net-flat MOVE of the `"http"` proxy-scheme check, reason on both rows.
…nto lane-egress-e6-plugin-fetch

Both sides carry the same E5a commits (e56e48f, 73ab28a, 3587dab), so every shared row
takes #804's side rather than theirs + ours - base, which would count E5a twice:

- busbar-core-connector x transport: O == T == 69 (the one ruled MOVE of the "http" proxy-scheme
  check) -> theirs, count and cite.
- busbar-kernel x transport: O == T == 278 -> theirs (cite: 5 drained + 1 moved, both E5a; this
  branch's E6 download move is net 0 on the row, as its gates measured 278 over a 284 base).
- busbar-kernel x plane: theirs 1128 (predev 1132 - E5a's 4); ours 1137 was E5a's same -4 over the
  older 1141, so T + O - B would drain it twice.
- busbar x auth 21 -> 49, busbar-kernel x auth 31 -> 49, busbar-plugin-loader x auth 0 -> 5: this
  branch's lowered values measured the mask #804 removes (busbar-contract exported a bare `auth`
  accessor, which kind-isolation's contract_identifiers masks tree-wide). With
  ProxyHop::proxy_authorization the rows read predev's 49 and 5, and kernel x auth 49 is the one
  real drain (the `auth header` comment that left with the engine's proxy-parse test). E6's diff
  adds or removes no auth-vocabulary text.
- proxy_route.rs doc and proxy.rs connect_answer: #804's text (the `addr` parameter keeps the
  1.5.5 refusal wording, so proxy_tests.rs takes #804's expectation).
…a miscount

busbar-contract exports a `header` identifier, and kind-isolation's contract_identifiers masks every
whole-token `header` outside the contract, so the engine test's "the auth header is prebuilt Basic"
comment was never an `auth-header` hit. Its deletion drained nothing: the row keeps predev's count
and cite (gates measured 50 on #805's 979c4b1, which carries this change).
…tself

The http door writes no field its caller did not (SEAM-4i, busbar-transport-http
door/engine.rs `client_posture`): 1.5.5's client default `accept: */*` is a field of the
request, so the download sends it as its own field and the transport adds `host` after it,
the request 1.5.5's `Client::new().get()` put on the wire (oracle cell
`egress.fetch|plugins|url`; universal_needs
the_plugins_fetch_download_sends_1_5_5s_request_through_the_table).
qa/kind-isolation.toml busbar-kernel x transport: base 284, ours 278 (E5a: -5 drained, -1 ruled MOVE
to busbar-core-connector), theirs 267 (#741's -17 listener MOVE to the root): different changes, so
theirs + ours - base = 261, predev's cite kept with E5a's clause renumbered 267 -> 261.
qa/kind-isolation.toml busbar-kernel x transport: base 284, ours 278 (E5a: -5 drained, -1 ruled MOVE
to busbar-core-connector), theirs 267 (#741's -17 listener MOVE to the root): different changes, so
theirs + ours - base = 261, predev's cite kept with E5a's clause renumbered 267 -> 261.
qa/kind-isolation.toml busbar-kernel x transport: base 267, ours 261 (E5a: -5 drained, -1 ruled MOVE to
busbar-core-connector), theirs 266 (#532: auth/token.rs's "http" check deleted, a different hit):
theirs + ours - base = 260, predev's cite kept with E5a's clause renumbered 266 -> 260.
qa/kind-isolation.toml busbar-kernel x plane: base 1132, ours 1128 (E5a's proxy-tunnel drain: two
`llm engine` prose mentions, the `decision:` doc key, the `installed decision` assert message),
theirs 1128 (#674: the ask-state seal's `crate::mcp::roots` links and `\x6dcp` domains). O == T,
but these are two different drains of equal size, not one change carried twice, so
theirs + ours - base = 1124, predev's cite kept with E5a's clause renumbered 1128 -> 1124.
qa/kind-isolation.toml busbar-kernel x plane: base 1128, ours 1124 (E5a's proxy-tunnel drain), theirs
1122 (E2's net_guard deletion): different drains, so theirs + ours - base = 1118, predev's cite kept with
E5a's clause renumbered 1122 -> 1118. The kernel no-socket pin (#796) stays exact on the merged tree.
@MattJackson

Copy link
Copy Markdown
Collaborator Author

row 155 B2 (#974) edits crates/busbar-kernel/src/proxy/mod.rs at fn auth_failure_status_and_kind and the tail of fn ingress_error; disjoint from this PR's hunks.

This branch has not been deployed

No deployments
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