\documentclass[tikz,border=2pt]{standalone} \usepackage{amsmath} \usetikzlibrary{arrows.meta,calc,positioning} \definecolor{navy}{HTML}{19324A} \definecolor{bluefill}{HTML}{EAF1F7} \definecolor{teal}{HTML}{0B7A75} \definecolor{tealfill}{HTML}{E5F4F2} \definecolor{orange}{HTML}{C96A12} \definecolor{orangefill}{HTML}{FFF0DF} \definecolor{purple}{HTML}{6E4B8B} \definecolor{purplefill}{HTML}{F1EBF6} \definecolor{grayline}{HTML}{697782} \begin{document} \begin{tikzpicture}[ font=\sffamily\scriptsize, >=Latex, flow/.style={-{Latex[length=1.7mm]},line width=0.65pt,draw=navy}, localflow/.style={flow,draw=teal}, auditflow/.style={flow,draw=purple,dashed}, box/.style={draw=navy,rounded corners=1.5pt,line width=0.65pt, fill=bluefill,minimum height=8mm,align=center,inner sep=2.2pt}, localbox/.style={box,draw=teal,fill=tealfill}, auditbox/.style={box,draw=purple,fill=purplefill,dashed}, note/.style={font=\sffamily\tiny,text=grayline,align=center} ] \node[anchor=west,font=\sffamily\scriptsize\bfseries,text=navy] at (-0.1,3.2) {Prediction path: integrated history plus explicit recent evidence}; \node[align=center,text=navy] (av) at (0.7,2.45) {observed full-scene\\audio--video prefix}; \node[box] (omni) at (3.25,2.45) {frozen Qwen2.5-Omni\\8-s maximum context}; \node[box] (global) at (5.95,2.45) {last-four-layer\\global state $G_n$}; \node[align=center,text=teal] (audio) at (0.7,1.23) {most recent 1-s\\mixed audio}; \node[localbox] (ae) at (3.25,1.23) {frozen audio encoder\\valid-token mean}; \node[localbox] (ap) at (5.95,1.23) {local projection\\$\widetilde A_n$ + validity}; \node[align=center,text=teal] (video) at (0.7,0.02) {recent causal\\person crops}; \node[localbox,dashed] (ve) at (3.25,0.02) {frozen visual encoder\\crop / person pooling}; \node[localbox,dashed] (vp) at (5.95,0.02) {optional projection\\$\widetilde V_n$ + validity}; \node[box,minimum width=21mm] (fusion) at (8.65,1.23) {cutoff-aligned\\fusion head}; \node[box,minimum width=24mm] (out) at (11.55,1.23) {$10\!\times\!3$ activity forecast\\0.2--2.0 s}; \draw[flow] (av) -- (omni); \draw[flow] (omni) -- (global); \draw[localflow] (audio) -- (ae); \draw[localflow] (ae) -- (ap); \draw[localflow,dashed] (video) -- (ve); \draw[localflow,dashed] (ve) -- (vp); \draw[flow] (global.east) -- ++(0.30,0) |- (fusion.north); \draw[localflow] (ap) -- (fusion); \draw[localflow,dashed] (vp.east) -- ++(0.30,0) |- (fusion.south); \draw[flow] (fusion) -- (out); \node[note] at (11.45,0.18) {background / invisible wearer / aggregate others}; \draw[grayline,line width=0.45pt] (-0.1,-0.62) -- (12.9,-0.62); \node[anchor=west,font=\sffamily\scriptsize\bfseries,text=navy] at (-0.1,-0.94) {Strictly causal stream at cutoff $t_n$}; \node[anchor=east,text=navy] at (2.05,-1.62) {Omni media}; \foreach \a/\b in {2.3/3.85,3.85/5.4,5.4/6.95} { \draw[fill=bluefill,draw=navy,line width=0.55pt] (\a,-1.84) rectangle (\b,-1.40); \node[text=navy,font=\sffamily\tiny] at ({(\a+\b)/2},-1.62) {completed 2 s}; } \draw[fill=orangefill,draw=orange,line width=0.65pt] (6.95,-1.84) rectangle (8.45,-1.40); \node[text=orange,font=\sffamily\tiny] at (7.70,-1.62) {observed tail}; \draw[dashed,draw=orange,line width=0.75pt] (8.45,-2.95) -- (8.45,-1.10); \node[anchor=south,text=orange,font=\sffamily\tiny\bfseries] at (8.45,-1.10) {cutoff $t_n$}; \node[note,anchor=west] at (8.85,-1.62) {replay completed payloads; recompute only\\the temporary tail; exclude future media}; \node[anchor=east,text=teal] at (2.05,-2.31) {local evidence}; \draw[draw=teal,line width=1.8pt] (7.65,-2.31) -- (8.45,-2.31); \node[note,anchor=west,text=teal] at (8.85,-2.31) {one-second causal window, refreshed every 200 ms}; \node[anchor=east,text=navy] at (2.05,-2.86) {decision grid}; \draw[draw=navy,line width=0.6pt] (2.3,-2.86) -- (8.45,-2.86); \foreach \x in {2.42,2.58,...,8.34} { \draw[draw=navy,line width=0.5pt] (\x,-2.95) -- (\x,-2.77); } \node[auditbox,minimum width=42mm] (oracle) at (11.02,-2.78) {analysis only: past visible-person activity\\aggregate / per-person / delayed / shuffled}; \draw[auditflow] (oracle.north) -- ++(0,0.32) -| (fusion.south); \node[note,text=purple] at (11.02,-3.35) {privileged information audit; never a deployable model input}; \end{tikzpicture} \end{document}