Render isolation
- Custom Typst World — package_path disabled, no @preview/* imports.
- No filesystem access from inside Typst; source and fonts are injected in-memory.
- 5-second wall-clock timeout per render, enforced around the full compile in a killable worker process.
- Per-thread seccomp BPF filter, allowlist posture — only the syscalls Tokio + rayon + Rust std + Typst legitimately use (memory, futex, threading, time, entropy, signals, stderr) are permitted. Everything else (exec, fork, the socket family, mount/namespace surface, bpf, ptrace, io_uring, pidfd, kexec, …) returns EPERM. Future kernel additions stay denied by default.
- Per-thread landlock filesystem ACL — empty rule set, the render thread sees no FS.
- Compute runs in a Cloudflare Container with cgroups v2 caps on CPU + RAM + PIDs (instance_type basic = 1 GB / 1/4 vCPU).