name: x07-concurrency description: Canonical concurrency patterns in X07 (defasync + task.* + chan.bytes.*), including sandbox constraints. metadata: short-description: Async patterns version: 0.1.0 kind: docs
x07-concurrency
In OS worlds (run-os*), use subprocess spawning for multi-core parallelism. In run-os-sandboxed, process spawning must be enabled by policy (start from x07 policy init --template worker-parallel when needed). Thread-backed blocking operations are gated by policy.threads (for example, threads.max_blocking = 0 disables blocking operations).
Canonical patterns
- Use
task.scope_v1for structured concurrency (no orphan tasks; slots/select are scope-owned). - Use
defasync+task.*+chan.bytes.*inside scopes to build deterministic async topologies. - Keep
await/task.join.bytesinsolveexpressions or insidedefasync(they are not allowed insidedefn). - Keep OS effects (fs/net/process/time) isolated behind adapters and policies.
- Keep scheduling decisions explicit and data-driven (inputs → outputs), so behavior is reproducible.
For the built-in reference guide, use x07 guide and search for defasync / task. / chan.bytes..