fix(up-03): PeerCompositeEnv::peer_operations override — list-peers sees peer-announced ops
Surfaced by alkhttp review 006 (UP-03): services/list-peers showed every peer with an empty operations array. PeerCompositeEnv overrode peer_ids only, so peer_operations fell to the trait default (Vec::new()) and the ADR-022 amendment's "announced op is discoverable via services/list-peers" promise never resolved on the wire. ADR-030 prescribed the fix but it had never been ported into alkcall. The existing list-peers unit tests passed because they mock peer_operations with hand-rolled envs. Implements ADR-030 as specified: - OperationEnv gains list_operation_names (default Vec::new(), back-compat for all existing implementors) - OverlayOperationEnv overrides it with its overlay's registered names - PeerCompositeEnv::peer_operations delegates to the peer overlay's list_operation_names; PeerCompositeEnv::list_operation_names aggregates session + connections + base (mirrors its contains()) - LocalOperationEnv enumerates its registry; ChannelsSessionEnv delegates to base Gate: announced_op_is_discoverable_via_services_list_peers in src/registry/op_register.rs — announces an op through op/register, then asserts both the direct peer_operations probe and the services/list-peers wire shape attribute the announced op to the peer, over the exact compose_root_env shape (PeerCompositeEnv + attached connection overlay). Verified load-bearing: reverting the peer_operations override fails the gate. ADR-030 status Proposed -> Accepted with the UP-03 provenance note. Verification: 590 default / 607 all-features tests, clippy (all-targets, all-features, wasm32) clean, fmt clean, doc clean, semver-checks 196 pass against v0.3.0 (defaulted trait method is non-breaking).
This commit is contained in:
1 parent
1e20bb77d0
commit
fd212307e2
5 files changed
+168
-1
No files matched your search
@@ -2,7 +2,15 @@
|
||||
|
||||
## Status
|
||||
|
||||
Proposed
|
||||
Accepted (implemented 2026-09-04 — surfaced as UP-03 in alkhttp's
|
||||
review 006 `docs/…/006-alkcall-0.3.0-consequence-review.md`: the
|
||||
`op/register` amendment's "announced op is discoverable via
|
||||
`services/list-peers`" promise did not resolve on the wire because
|
||||
this override had never been ported into alkcall; the gate is
|
||||
`announced_op_is_discoverable_via_services_list_peers` in
|
||||
`src/registry/op_register.rs`. The `services/list-peers` unit tests
|
||||
did not catch it because they mock `peer_operations` with hand-rolled
|
||||
envs.)
|
||||
|
||||
## Context
|
||||
|
||||
|
||||
Reference in new issue
Block a user