Components define lifecycle, contracts, and owned ports. Topology decides where they execute. One preserves semantic identity across placements without pretending that local and remote failure models are equivalent.
Component contracts
A component can provide and require operations, services, jobs, streams, data, resources, and capabilities. Its contract records:
- identity and owner;
- lifecycle and cleanup obligations;
- provided and required ports;
- state and resource bindings;
- effects, budgets, policy, and observation;
- permissible placement and isolation envelopes.
Static local composition remains the default when it satisfies the selected root.
Lifecycle is owned
Resources and components have explicit construction, readiness, draining, cancellation, cleanup, and termination behavior. Structured tasks cannot silently outlive their owner.
Startup, readiness, liveness, degradation, quarantine, draining, and termination remain distinct operational states.
Local and remote are different realizations
Moving an operation across a process, machine, region, or organization boundary adds explicit obligations:
- serialization and compatibility;
- caller and workload identity;
- authorization and data policy;
- deadline and cancellation propagation;
- delivery, ordering, retries, and unknown outcomes;
- admission, credits, queues, and backpressure;
- routing, encryption, observation, and cost.
There is no location transparency and no universal exactly-once claim.
Interaction before protocol
One models calls, streams, signals, subscriptions, messages, and jobs before choosing HTTP, QUIC, gRPC, WebSocket, a local channel, shared memory, or another provider.
Transport profiles state mapping losses. A persistent connection does not imply unlimited buffering, safe retry, resumption, or exactly-once delivery.
Placement is planned
In-process, task, thread, process, WebAssembly, machine, browser worker, region, cluster, and externally operated endpoints are distinct physical envelopes. Planning selects one exact realization; runtime code does not silently move work elsewhere.
Canonical owners: Resources, Communication, and Components.