@@ -152,14 +152,18 @@ before semaphore construction, and execution deadlines use checked arithmetic.
152152
153153Native host callbacks execute synchronously while Wasmtime is inside native
154154Rust and therefore cannot be forcibly preempted by epoch interruption. Every
155- current Fluxheim callback is a finite in-memory operation; callbacks that
156- perform filesystem/network I/O, IPC, sleeps, or potentially contended waits are
157- prohibited. Fluxheim checks the absolute execution deadline before and after
158- each callback, so a late result fails as a timeout. A callback that never
159- returns still cannot be killed safely inside the process. Before Fluxheim adds
155+ current Fluxheim callback is a finite, panic-free in-memory operation that is
156+ total over every possible guest ` i32 ` input. Callback implementations use
157+ explicit matching, checked arithmetic, bounds-checked access, and fallible lock
158+ handling; property tests exercise arbitrary guest IDs. Callbacks that perform
159+ filesystem/network I/O, IPC, sleeps, assertion-based operations, unchecked
160+ indexing/arithmetic, or potentially contended waits are prohibited. Fluxheim
161+ checks the absolute execution deadline before and after each callback, so a
162+ late result fails as a timeout. A callback that never returns or panics still
163+ cannot be isolated safely inside an abort-on-panic process. Before Fluxheim adds
160164any blocking or third-party native host callback, that capability requires a
161- killable subprocess runner with bounded IPC; thread-based timeout wrappers are
162- not an acceptable substitute .
165+ killable subprocess runner with bounded IPC; thread-based timeout wrappers and
166+ ` catch_unwind ` are not acceptable substitutes .
163167
164168Compiled modules carry a stable identity that includes the loaded plugin digest,
165169the manifest ABI version, the host-call namespace, the native hook feature
@@ -439,9 +443,10 @@ native `fluxheim-policy-v1` admission or blocking capacity.
439443- Host calls must never expose admin tokens, ACME/EAB secrets, private keys,
440444 authorization headers, cookies, raw request bodies, or filesystem paths unless
441445 explicitly allowed and redacted.
442- - Host callbacks must remain finite and non-blocking. Adding I/O, IPC, sleeps,
443- or contended waits requires process isolation rather than an in-process
444- callback timeout.
446+ - Host callbacks must remain finite, non-blocking, panic-free, and total for all
447+ guest integers. Adding I/O, IPC, sleeps, contended waits, unchecked
448+ indexing/arithmetic, assertion-based operations, or third-party native code
449+ requires process isolation rather than an in-process callback timeout.
445450- Plugins must not control routing destinations or upstream TLS verification
446451 directly. Cache-key influence is allowed only through constrained typed hook
447452 outputs that Fluxheim validates, bounds, and records.
0 commit comments