\documentclass[tikz,border=2pt]{standalone} \usepackage{amsmath} \usetikzlibrary{arrows.meta,positioning,calc} \definecolor{navy}{HTML}{19324A} \definecolor{bluefill}{HTML}{EAF1F7} \definecolor{teal}{HTML}{087F78} \definecolor{tealfill}{HTML}{E6F4F1} \definecolor{orange}{HTML}{B85D0F} \definecolor{orangefill}{HTML}{FFF0DF} \definecolor{grayline}{HTML}{687782} \begin{document} \begin{tikzpicture}[ font=\sffamily\scriptsize,>=Latex, flow/.style={-{Latex[length=1.6mm]},line width=.65pt,draw=navy}, localflow/.style={flow,draw=teal}, block/.style={draw=navy,fill=bluefill,rounded corners=1.6pt, line width=.6pt,minimum height=8.5mm,align=center,inner sep=2pt}, local/.style={block,draw=teal,fill=tealfill}, hint/.style={font=\sffamily\tiny,text=grayline,align=center}] \node[anchor=west,font=\sffamily\scriptsize\bfseries,text=navy] at (0,3.12) {Deployable prediction path at the same causal cutoff $t_n$}; \node[block,minimum width=25mm] (history) at (1.35,2.26) {observed AV history\\8-s maximum budget}; \node[block,minimum width=25mm] (omni) at (4.15,2.26) {frozen Omni Thinker\\last-four-layer state}; \node[local,minimum width=25mm] (audio) at (1.35,1.13) {last 1-s mixed audio\\cropped at $t_n$}; \node[local,minimum width=25mm] (ae) at (4.15,1.13) {frozen audio encoder\\valid-token mean}; \node[local,dashed,minimum width=25mm] (video) at (1.35,0) {optional recent frames\\provided person boxes}; \node[local,dashed,minimum width=25mm] (ve) at (4.15,0) {frozen visual encoder\\pooled person tokens}; \node[block,minimum width=20mm] (head) at (7.15,1.13) {normalized features\\+ validity $\to$ MLP}; \node[block,minimum width=26mm] (out) at (10.4,1.13) {$10\times3$ forecast\\0.2--2.0-s horizons}; \draw[flow] (history) -- (omni); \draw[localflow] (audio) -- (ae); \draw[localflow,dashed] (video) -- (ve); \draw[flow] (omni.east) -- ++(.38,0) |- (head.north); \draw[localflow] (ae) -- (head); \draw[localflow,dashed] (ve.east) -- ++(.38,0) |- (head.south); \draw[flow] (head) -- (out); \node[hint,text=navy] at (10.4,.17) {background / wearer / aggregate others}; \draw[draw=grayline,line width=.45pt] (0,-.62)--(11.85,-.62); \node[anchor=west,font=\sffamily\scriptsize\bfseries,text=navy] at (0,-.94) {Bounded streaming state: no media after $t_n$}; \node[anchor=east,text=navy] at (1.9,-1.62) {Omni blocks}; \foreach \a/\b in {2.12/3.55,3.55/4.98,4.98/6.41} { \draw[draw=navy,fill=bluefill,line width=.55pt] (\a,-1.84) rectangle (\b,-1.39); \node[font=\sffamily\tiny,text=navy] at ({(\a+\b)/2},-1.615) {completed}; } \draw[draw=orange,fill=orangefill,line width=.65pt] (6.41,-1.84) rectangle (7.85,-1.39); \node[font=\sffamily\tiny,text=orange] at (7.13,-1.615) {observed tail}; \draw[draw=orange,dashed,line width=.7pt] (7.85,-2.43)--(7.85,-1.12); \node[anchor=south,font=\sffamily\tiny\bfseries,text=orange] at (7.85,-1.12) {$t_n$}; \node[hint,anchor=west] at (8.16,-1.62) {reuse completed payloads;\\recompute temporary tail only}; \node[anchor=east,text=teal] at (1.9,-2.33) {local 1 s}; \draw[draw=teal,line width=2pt] (7.14,-2.33)--(7.85,-2.33); \node[hint,anchor=west,text=teal] at (8.16,-2.33) {recent evidence refreshed every 200 ms}; \node[hint,anchor=west] at (2.12,-2.74) {Privileged past-activity labels are evaluated separately as an information audit; they never enter this prediction path.}; \end{tikzpicture} \end{document}