Repository navigation
loader: the plugin observer, host series and intake are the dispatcher's (door-only) - #1009
Open
MattJackson wants to merge 1 commit into
Open
MattJackson wants to merge 1 commit into
MattJackson wants to merge 1 commit into
Conversation
…ispatcher's, not static seams door-only static-seam rows OBSERVER and HOST_SERIES (plugin-loader observe.rs; BUSBAR-1.6.0.md l.1475-1478, l.1543: no static fn-pointer seam installed into the binary closure; coordinator ruling 2026-10-14 (a)). observe::Observing holds the observer, the host's series predicate and the bounded intake; the Dispatcher owns one (Dispatcher::observing), every door it adopts folds its envelope through it (EnvelopeObserver carries it; Adopter::observing), the export door's shed fold and the export axis's series grant read it off their dispatcher, and the composition root installs its observer and series predicate on the process's one dispatcher. qa/door-only.toml strikes both rows. The test binary's every Observing stands with the shared recorder, so the fold-log tests and the export conformance both-folds proof read as before. RED: observe_tests::the_observer_and_the_host_series_are_the_dispatchers (a series predicate on one dispatcher refuses a host-series claim there and not on another; a door's adopter folds through its own dispatcher's observability).
This was referenced Oct 14, 2026
Collaborator
Author
|
Rule 20 note from #1031 (row 155, draft): one disjoint line in root/linked.rs (hot_answer_inline's cap reads busbar_kernel::proxy::max_translate_body_bytes). A test merge is clean. |
This branch has not been deployed
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.
CONTRACT-ABI lane, item 3 (the door-only static seams, part 2): the plugin observer and the host's series predicate (coordinator ruling 2026-10-14 (a)).
door-onlystatic-seam rule (docs/design/BUSBAR-1.6.0.mdl.1475-1478 R6, l.1543): no static fn-pointer seam installed into the binary closure; exactly the two oauth2/admin seams are exempt.qa/door-only.tomlrows:crates/plugin-loader/src/observe.rsOBSERVER(OnceLock<&'static dyn PluginObserver>) andHOST_SERIES(OnceLock<fn(&str) -> bool>). The composition root installed Rust code into both, and theINTAKEthey fed was process-global with them.What moves:
observe::Observing(new) holds the observer, the host's series predicate and the bounded intake (INTAKE_BOUND, never blocking, drops counted). Installs stay first-wins and one-way, as before.Dispatcherowns one (Env::observing;Dispatcher::observing()). AnAdopterhands it to every door the dispatcher binds (Adopter::observing), andEnvelopeObservercarries it, so a door's envelope folds through its own dispatcher's observability. A door with no dispatcher (a test adopter) gets an empty one and drops, which is the old "no observer" state.ExportRows::open's series grant reads it off the axis's dispatcher (grant_series(observing, …)).root::observe::install) and its series predicate (root::linked::register_exports) on the process's one dispatcher (root::dispatch::dispatcher()), whichmainbuilds before both.qa/door-only.tomlstrikes both rows.Behaviour is unchanged. Every door already binds on that one dispatcher: the transport doors through
root::doors::install_dispatcher, and the plane probes throughdoor_probe_dispatcher(), which returns it.Tests:
Observingstands with the shared recorder, so the fold-log tests and the export conformance both-folds proof (an_opened_sinks_envelope_reaches_the_host_observability,a_first_party_series_is_granted_through_either_door_and_to_nobody_else) read as before. The latter now names its host series on the dispatcher its opens bind on.settle()waits on every intake the binary started.observe_tests::the_observer_and_the_host_series_are_the_dispatchers. A series predicate installed on one dispatcher refuses a first-party claim on the host's series there and not on another dispatcher; the second install is refused; an adopter's observability is its own dispatcher's. It does not compile on predev.Shared files (rule 20/23):
merge-treeis clean against every open PR touching these files: lane-proof-abi-mac, #1004, lane-a2a-push-ca, lane-law0-root, #992, #986, #971, #961, #960, #953, #952, #893, #865 and #864. It conflicts only with the drafts #778 and #561.No dependency change.