2026-02-15 17:03:31 +00:00
|
|
|
[package]
|
|
|
|
|
name = "xtask"
|
|
|
|
|
version = "0.1.0"
|
|
|
|
|
edition = "2024"
|
feat: proper `README`, `LICENSE`, and our first quick example
Add project licensing and a full README, plus a minimal WebAssembly ping-pong example that exercises the actor runtime.
- `LICENSE`: add the full GNU AGPL-3.0 text and set `license = "AGPL-3.0-only"` on every package (`swactor`, each crate, `apps/myelin`, `tools/vastai`, `xtask`)
- `README.md`: rewrite from a stub into a full project overview, covering features (actor_id routing, WASM, iroh QUIC/SWIM, OTP-style std, process manager, zero-copy objects, datastream metrics, dashboard), architecture, examples, developing, status, and license
- `examples/ping-pong`: new standalone workspace (`pingpong` cdylib) where two actors volley on a single-threaded `wasm` runtime driven by a Node host via `tick()`, demonstrating spawning, message passing, and death monitoring (`watching`)
- `examples/ping-pong`: add a host/run harness -- `run.sh` (wasm-pack build + `run.mjs`), `serve.sh` (dashboard + static demo), `index.html`, and a pinned `Cargo.lock`
- `.gitignore`: stop ignoring `.loop/`, `.deployment-notes/`, and `.omp/`
Signed-off-by: Zachery Aaron Shores-Chmielewski <zacheryasc@gmail.com>
2026-08-05 20:29:27 +00:00
|
|
|
license = "AGPL-3.0-only"
|
2026-02-16 15:39:27 +00:00
|
|
|
|
|
|
|
|
[dependencies]
|
2026-07-22 07:50:53 +00:00
|
|
|
serde_json = "1"
|
2026-08-15 14:10:52 +00:00
|
|
|
swactor = { path = "..", features = ["serde"] }
|
|
|
|
|
swactor-engine = { path = "../crates/engine" }
|
|
|
|
|
swactor-transport = { path = "../crates/transport" }
|
|
|
|
|
swactor-process = { path = "../crates/process" }
|
|
|
|
|
provisioning = { path = "../crates/provisioning" }
|
|
|
|
|
telemetry = { path = "../crates/telemetry" }
|
|
|
|
|
dashboard = { path = "../crates/dashboard", features = ["demo-control"] }
|
demo: rename xtask demo command; dashboard-established data-plane edges
Rename `cargo xtask provisioning-reconciler-demo` to `cargo xtask demo`
(CLI dispatch, help, child re-exec argv, launch spec strings, module dir
xtask/src/provisioning_demo -> xtask/src/demo).
Add iteration-1 data-plane edges, established from Fleet Control:
- Fleet Control "edge" button -> POST /control/edge (new
ControlCommand::EstablishEdge) -> supervisor actor resolves the node's
advertised EndpointAddr (stashed in NodeRuntime by AnnounceActor) and
provisions a real outbound EdgeRuntime (arena ring lease, recorder
WorkerPort, EDGE_ALPN send pump) in a new edge pump thread.
- Node gains EDGE_ALPN, an actor bridge decoding EdgeProvision gossip,
and a NodeEdgeAgent that provisions its (single) inbound edge, polls
it, mirrors observations onto the node.edge telemetry channel
(render-only), and answers EdgeAck gossip which terminates the
supervisor's provision retries. Node teardown replaces its inbound on
re-provision; supervisor replaces sessions per node and tears them
down on node exit/replacement/shutdown.
- The edge pump runs on the engine's blocking pool with sole session
ownership (commands in, state mirror + feed lines out): the connect
handshake blocks its thread and must not run on a Tokio worker or
share a lock with the actor. Connects are bounded (10s) so a dead
node faults its session instead of wedging edge polling.
- iroh-driver: retain_telemetry_connections() opts an application out
of the driver-owned TELEMETRY_ALPN ingress so the node's pull server
can drain those connections itself (the actor-bridge pump would
otherwise claim them).
- Dashboard: edges array in the reconciler snapshot, per-node edge
badges and edge button in Fleet Control, node_edges render mirror.
2026-08-16 20:11:20 +00:00
|
|
|
data-plane = { path = "../crates/data-plane" }
|
2026-08-15 14:10:52 +00:00
|
|
|
iroh-driver = { path = "../crates/iroh-driver" }
|
|
|
|
|
distribution = { path = "../crates/distribution" }
|
|
|
|
|
iroh = "0.98"
|
|
|
|
|
serde = { version = "1", features = ["derive"] }
|
|
|
|
|
parking_lot = "0.12"
|
2026-07-22 07:50:53 +00:00
|
|
|
|
|
|
|
|
[target.'cfg(target_os = "linux")'.dependencies]
|
|
|
|
|
libc = "0.2"
|
Enforce actor-owned Myelin control flow
Add a repository-owned rustc wrapper that enforces execution ownership and dependency boundaries during ordinary Cargo commands, with compile-pass and compile-fail policy contracts.
Move scheduling, timers, provider polling, provisioning, recovery, supervision, and shutdown decisions behind engine and actor APIs. Add deterministic component properties, stateful Myelin lifecycle coverage, persisted regression cases, and the bounded CI workflow.
Tighten resource ownership by cancelling telemetry collectors, terminating reply observers, bounding dashboard projections, and releasing process file descriptors, child observers, and inode-verified Unix socket paths on every exit path.
2026-08-19 21:38:14 +00:00
|
|
|
|
|
|
|
|
[dev-dependencies]
|
|
|
|
|
proptest = "1"
|