\begin{figure}[tbp] \centering \begin{tikzpicture}[>=Latex, node distance=8mm and 12mm] \node[draw, rounded corners, fill=blue!6, minimum width=38mm, align=left] (expr1) {single expression\\\texttt{transformation = ...}}; \node[draw, rounded corners, fill=blue!6, minimum width=38mm, align=left, below=of expr1] (expr2) {function body\\\texttt{v = ...}}; \node[draw, rounded corners, fill=blue!6, minimum width=38mm, align=left, below=of expr2] (expr3) {predicate body\\\texttt{filter = ...}}; \node[draw, rounded corners, fill=green!10, minimum width=34mm, minimum height=26mm, align=center, right=22mm of expr2] (eval) {parser and\\sandbox evaluator}; \node[draw, rounded corners, fill=orange!10, minimum width=42mm, align=left, right=24mm of eval] (base) {base environment\\$\bullet$ \texttt{Vector}, \texttt{Matrix}\\$\bullet$ \texttt{math}, \texttt{table}, \texttt{string}\\$\bullet$ \texttt{tau}}; \node[draw, rounded corners, fill=yellow!12, minimum width=42mm, align=left, above=of base] (objects) {user objects\\from \texttt{\textbackslash setobject}}; \node[draw, rounded corners, fill=teal!10, minimum width=42mm, align=left, below=of base] (bindings) {per-simplex bindings\\such as \texttt{A}, \texttt{B}, \texttt{C}}; \node[draw=red!70!black, dashed, rounded corners, fill=red!5, minimum width=34mm, align=left, below=16mm of eval] (blocked) {blocked globals\\\texttt{require}\\\texttt{load}\\\texttt{debug}}; \draw[->, thick] (expr1.east) -- (eval.west); \draw[->, thick] (expr2.east) -- (eval.west); \draw[->, thick] (expr3.east) -- (eval.west); \draw[->, thick] (objects.south west) -- (eval.north east); \draw[->, thick] (base.west) -- (eval.east); \draw[->, thick] (bindings.north west) -- (eval.south east); \draw[->, thick, red!70!black] (blocked.north) -- (eval.south); \end{tikzpicture} \caption{The sandboxed evaluation model. Each key body is interpreted against a read-only base environment, the user object table, and any local bindings created for filters. The blocked names highlight what the sandbox intentionally refuses to expose.} \end{figure}