graphrefly-core 0.0.8

GraphReFly handle-protocol core dispatcher
Documentation

GraphReFly handle-protocol core dispatcher.

This crate is the heart of the protocol: dispatcher, message tiers, batch coalescing, wave engine, dep tracking, equals-substitution, first-run gate, PAUSE/RESUME with lockIds, INVALIDATE broadcast, versioning lifecycle, atomic dep mutation (set_deps).

It operates entirely on opaque HandleId integers — user values T never enter the core. Per-language bindings (napi-rs for JavaScript, pyo3 for Python, wasm-bindgen for WASM) hold the value-to-handle registry. Equals-substitution under EqualsMode::Identity is a u64 compare with zero FFI; user-fn invocation is the only mandatory boundary crossing per fn fire.

Status

M1 complete (dispatcher, batch/wave engine, PAUSE/RESUME, set_deps, lifecycle, partitioned concurrency). Track progress in docs/migration-status.md. TS reference prototype: ~/src/graphrefly-ts/src/__experiments__/handle-core/.

Safety

No unsafe is permitted in this crate or anywhere in the workspace. Enforced by #![forbid(unsafe_code)] at the root. See CLAUDE.md Rust invariant 1.