Files
Hare 8ecc307fc9 feat: migrate protocol and HTTP to structured interface references
T-20: identify interfaces by exact scope/name pairs; add optional opaque scope_ref metadata and separate shape validation from path-dependent scope compatibility. Preserve call error precedence, strict JSON, validators and transport boundaries. Mechanically migrate consumers and document API/wire compatibility and deferred lifecycle semantics.

Validation: cargo fmt --all --check; git diff --check; cargo check --workspace --all-targets; cargo test -p wip-protocol -p wip-http; cargo test --workspace (221 passing tests including doctests); cargo test --workspace --all-targets; nix develop --command cargo clippy --workspace --all-targets -- -D warnings; RUSTDOCFLAGS="-D warnings" cargo doc --workspace --no-deps. All pass. cargo/rustc 1.95.0; development-shell Clippy/rustc 1.97.1.
2026-10-07 18:29:51 +09:00
..

wip-host

Framework-independent Host publication and operation dispatch for the Web Interface Protocol (WIP).

wip-host registers generated interfaces, explicitly publishes them on request-scoped objects, validates object and interface preconditions, and performs interface-qualified operation dispatch against one host-owned instance. Backend transactions, persistence, and network serving remain application responsibilities.

[dependencies]
wip-host = "0.1.0"
wip-interface = "0.1.0"

Protocol publication and dispatch use wip_protocol::InterfaceReference { scope, name } and compare both fields exactly. The legacy InterfaceRef registration token remains Host-private: protocol_reference() maps its opaque string verbatim to the name at root scope /, without parsing it. Registry lookup and fetch accept structured references; non-root references do not resolve legacy registrations. Legacy responses omit scope_ref.

Malformed interface-reference shapes fail calls as InvalidRequest before object resolution. A well-shaped reference outside the target path's ancestor-or-self scope fails at the membership check as InterfaceMismatch.

See the API documentation for publication, provider, execution-context, and effect-guarantee boundaries.

Licensed under either of Apache-2.0 or MIT at your option.