feat(call): add ScopedPeerEnv peer-pinned reachability (ADR-029 §4, call/scoped-peer-env)

This commit is contained in:
2026-06-30 11:07:41 +00:00
parent 5c4feff468
commit bfd1621b9b
10 changed files with 397 additions and 99 deletions

View File

@@ -23,9 +23,7 @@ use super::wire::{
EVENT_ERROR, EVENT_RESPONDED,
};
use crate::protocol::wire::ResponseEnvelope;
use crate::registry::context::{
generate_request_id, AbortPolicy, OperationContext, ScopedOperationEnv,
};
use crate::registry::context::{generate_request_id, AbortPolicy, OperationContext, ScopedPeerEnv};
use crate::registry::env::OperationEnv;
use crate::registry::registration::{Handler, HandlerRegistration};
@@ -280,7 +278,7 @@ impl OperationEnv for OverlayOperationEnv {
scoped_env = registration
.scoped_env
.clone()
.unwrap_or_else(ScopedOperationEnv::empty);
.unwrap_or_else(ScopedPeerEnv::empty);
}
let context = OperationContext {
@@ -432,7 +430,7 @@ mod tests {
fn root_context(
request_id: &str,
scoped_env: ScopedOperationEnv,
scoped_env: ScopedPeerEnv,
env: Arc<dyn OperationEnv + Send + Sync>,
) -> OperationContext {
OperationContext {
@@ -487,7 +485,7 @@ mod tests {
conn.register_imported(imported_registration("worker/exec"));
let env = conn.overlay_env();
let scoped = ScopedOperationEnv::new(["worker/exec"]);
let scoped = ScopedPeerEnv::new(["worker/exec"]);
let ctx = root_context("root-1", scoped, env.clone());
let response = env
@@ -506,7 +504,7 @@ mod tests {
assert!(!env.contains("worker/missing"));
let scoped = ScopedOperationEnv::new(["worker/missing"]);
let scoped = ScopedPeerEnv::new(["worker/missing"]);
let ctx = root_context("root-2", scoped, env.clone());
let response = env
@@ -525,7 +523,7 @@ mod tests {
conn.register_imported(imported_registration("worker/exec"));
let env = conn.overlay_env();
let scoped = ScopedOperationEnv::empty();
let scoped = ScopedPeerEnv::empty();
let ctx = root_context("root-3", scoped, env.clone());
let response = env
@@ -562,7 +560,7 @@ mod tests {
));
let env = conn.overlay_env();
let scoped = ScopedOperationEnv::new(["worker/exec"]);
let scoped = ScopedPeerEnv::new(["worker/exec"]);
let ctx = root_context("root-4", scoped, env.clone());
let response = env