use id_effect::compute::{ComputeFabric, ResourcePolicy};
use id_effect::{ThreadSleepRuntime, run_fork, succeed};
fn main() {
let mock = ComputeFabric::with_mock(ResourcePolicy::memory_cap_max_cpu(0.85), 0.40, 0.61);
mock.supervisor().tick();
let headroom = mock.admission().available();
mock.set_readings(0.50, 0.90);
mock.supervisor().tick();
let pressure = mock.admission().available();
println!("admission: headroom={headroom} pressure={pressure}");
assert!(headroom >= pressure);
let fabric = ComputeFabric::memory_cap_max_cpu(0.85);
fabric.supervisor().tick();
let rt = ThreadSleepRuntime::with_fabric(fabric);
let handle = run_fork(&rt, || (succeed::<u32, (), ()>(42), ()));
let out = pollster::block_on(handle.join()).expect("join");
println!("fiber result = {out}");
}