ADR-0003: Rust kernel; async at I/O seams only
ADR-0003: Rust async boundary
Status: accepted
Decision
Vinxi kernel services are async-friendly by default, using Tokio. Ports that touch I/O are async. Pure domain logic remains synchronous.
Rules
vinxi-port-*traits are async.vinxi-adapter-*implementations may depend on Tokio, SQLx, filesystem, object storage, HTTP, etc.vinxi-ids,vinxi-value, registry models, and pure validation logic must not depend on Tokio.- Long-running work is represented as durable
process.job_request/materialization.run; HTTP handlers do not spawn detached work as truth.
Rationale
The kernel waits on databases, blob stores, streams, external calls, search, and materialization workers. Async belongs at these I/O seams, not inside the semantic brain of the system.