Files
papers/kai/figures/program.tex
zeekayandHanzo Dev 2325f97321 Kai: the final architecture, with every benchmark table filled from runs.
Evidence records, factorized choice and typed-variable diffusion; programs,
packages and policy as they land in hanzoai/decision. Capability, speed and
accuracy tables read results-data.tex, which scripts/results.py writes from
data/runs.json; a cell no kept run has filled prints XXX.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-25 11:13:42 -07:00

63 lines
3.0 KiB
TeX

% Decision as text against decision as a program.
\begin{figure}[t]
\centering
\begin{tikzpicture}[
font=\footnotesize,
box/.style={draw, rounded corners=2pt, align=center, minimum height=1.5em,
inner sep=3pt, fill=white},
src/.style={box, fill=gray!8, minimum width=6.2em},
exec/.style={box, fill=blue!6, minimum width=5.4em},
auth/.style={box, fill=orange!10, minimum width=10em},
arr/.style={-{Stealth[length=4pt]}, thin},
node distance=0.55em and 1.2em]
% Left: the decision as text.
\node[font=\footnotesize\bfseries] (lt) {Decision as text};
\node[src, below=0.8em of lt] (le) {Evidence};
\node[box, below=of le] (lp) {One large prompt};
\node[box, below=of lp] (ll) {LLM};
\node[box, below=of ll] (lr) {Recommendation\\(prose)};
\draw[arr] (le) -- (lp);
\draw[arr] (lp) -- (ll);
\draw[arr] (ll) -- (lr);
\node[below=0.3em of lr, text=gray, align=center] {no typed record of\\what produced it};
% Right: the decision as a program.
\node[font=\footnotesize\bfseries, right=17em of lt] (rt) {Decision as a program};
\node[src, minimum width=4.6em, anchor=north east] (e2) at ([xshift=-0.2em,yshift=-0.8em]rt.south) {SysML / graph};
\node[src, minimum width=4.6em, anchor=north west] (e3) at ([xshift=0.2em,yshift=-0.8em]rt.south) {Constraints};
\node[src, minimum width=4.6em, left=0.4em of e2] (e1) {Evidence};
\node[src, minimum width=4.6em, right=0.4em of e3] (e4) {Assumptions};
\coordinate (srow) at (e2.south -| rt);
\node[box, fill=green!7, minimum width=12em, below=1.8em of srow] (dp)
{\textbf{Decision Program}\\\scriptsize name@version, questions, thresholds};
\foreach \e in {e1,e2,e3,e4} \draw[arr] (\e.south) -- (dp.north);
\node[exec, below=1.4em of dp] (zen) {Zen\\\scriptsize reasoning};
\node[exec, left=0.7em of zen] (kai) {Kai\\\scriptsize typed judgment};
\node[exec, right=0.7em of zen] (det) {Deterministic\\\scriptsize code, solvers};
\draw[arr] (dp) -- (kai.north);
\draw[arr] (dp) -- (zen.north);
\draw[arr] (dp) -- (det.north);
\node[auth, below=1.4em of zen] (pol) {Policy\\\scriptsize deterministic authority};
\draw[arr] (kai.south) -- (pol);
\draw[arr] (zen.south) -- (pol);
\draw[arr] (det.south) -- (pol);
\node[auth, below=of pol] (hum) {Human approval};
\node[box, fill=green!7, minimum width=12em, below=of hum] (pkg)
{\textbf{Decision Package}\\\scriptsize answers, versions, evidence, overrides};
\draw[arr] (pol) -- (hum);
\draw[arr] (hum) -- (pkg);
\draw[arr] (pkg.east) -- ++(2.6em,0) |- node[pos=0.25, right, align=left]
{\scriptsize replay\\\scriptsize diff\\\scriptsize refresh} (dp.east);
\end{tikzpicture}
\caption{Left: the usual shape, in which one generative call turns evidence
into a recommendation and nothing typed records how. Right: Hanzo Decision.
A versioned program DAG states the questions; Kai answers the bounded
judgments, Zen the open reasoning, deterministic code and solvers the
arithmetic; policy and a person hold authority; every run produces a hashed
package that can be replayed, diffed and refreshed.}
\label{fig:program}
\end{figure}