\section{Experimental protocol} \label{sec:protocol} \subsection{Models, hardware and runtimes} Table~\ref{tab:models} lists the checkpoints (all ungated \texttt{mlx-community} conversions with bf16 weights, so weight quantization is not a confound), their attention geometry and measured prefill times. The local node is a MacBook Pro with an Apple M5 Max (18 cores, 48~GiB unified memory, macOS~27.0), Python~3.12.13, \texttt{mlx}~0.32.4, \texttt{mlx-lm}~0.32.2. Two-node experiments use two Mac Studio M3~Ultra nodes of the author's cluster (M3U96a as sender, M3U96b as receiver worker; 96~GB each; identical \texttt{mlx}/\texttt{mlx-lm} pins and checkpoint revisions) connected by a wired LAN measured at 940~Mbit/s (iperf3, four streams) with 1.2~ms RTT. Both cluster nodes concurrently hosted a CPU-light workload from another study (load average $\approx 1.8$ on 32 cores); timing on the laptop was taken with no other GPU process. \begin{table}[t]\centering\scriptsize \caption{Checkpoints, geometry and measured prefill (ms, laptop). Cache bytes per token are the dense bf16 formula \eqref{eq:mkv} with $B=1$.}\label{tab:models} \input{tables/table2_models} \end{table} \subsection{Task families and splits} \begin{description}[leftmargin=1.4em,style=nextline] \item[Synthetic private-fact ledgers.] A deterministic generator (seeded) writes a fictional capital-projects register: six projects per document with invented names, random identifiers (\texttt{XX-00X-0000}), amounts and currencies, dates, sites, suppliers, approvals or rejections, cancelled-versus-postponed statuses, timestamped revisions with an explicit precedence rule, a list of ``proposals under review'' with no attributes (distractors with similar names), and boilerplate filler to reach 2\,000, 8\,000 or 16\,000 target tokens. Fifteen questions per document cover single-fact retrieval at varying positions, exact copying, multi-hop joins, negation, revision/precedence, temporal order, aggregation, unit conversion and two unanswerable questions (correct action: \texttt{unknown}). An evaluator-only fact ledger (62 atomic facts per document) and the answer key are stored apart from the agent-visible text. The facts are not inferable from pre-training. A procedurally generated ledger is not a real filing. \item[Public long-document QA.] LongBench~v1 \citep{bai2024longbench} subsets QASPER \citep{dasigi2021qasper} and 2WikiMultihopQA \citep{ho2020twowiki} (raw \texttt{data.zip}; the dataset script is no longer supported by the \texttt{datasets} library), official F1 with the LongBench normalization. Documents are used in full. We run \emph{subsets} (the first 40 test documents of each subset in manifest order) and publish the identifiers. These texts may appear in pre-training corpora; they serve external validity, not the contamination-free test of communication dependence. \item[Executable tasks.] A generated engineering ticket specifies six business rules for a function \texttt{net\_revenue(rows)} together with a buggy implementation missing two rules; the agent must output the corrected function, which is executed in an isolated \texttt{python -I} subprocess against five hidden test cases (exact float comparison). Agents never see the tests. \end{description} Splits are by document (train/dev/test seeds for the generated families; a hash rule for the public subsets), with exact-duplicate checks across splits (none found). Train is used for mapper fitting and prompt tuning, dev for method selection and router fitting, test for the locked campaign (Table~\ref{tab:datasets}). Answer keys live in \texttt{data/generated/keys} and are read only by the scorer; a leakage test asserts that agent-visible files contain no answers, facts or tests. \begin{table}[t]\centering\footnotesize \caption{Datasets, independent units (documents), questions and median length by split.}\label{tab:datasets} \input{tables/table3_datasets} \end{table} \subsection{Cache correctness before performance} \label{sec:correctness} Twelve tests run a real 1.5B checkpoint (Appendix~\ref{app:tests}). Identity round trip (serialize, load) and 100\,\% retention through the sparse adapter reproduce the native next-token logits \emph{exactly}. Cached-prefix-plus-query and full prefill agree within a registered distributional tolerance: MLX kernels are not bitwise deterministic across prefill chunkings even in float32 (we measured a maximum logit difference of 0.10 between a one-chunk and a token-by-token prefill, with $\max|\Delta p|\approx7\times10^{-7}$ and KL $\approx3\times10^{-8}$), so equivalence is defined as KL $<10^{-5}$, $\max|\Delta p|<10^{-4}$ and identical greedy top-1 in float32 (KL $<10^{-3}$ in bf16). The sparse-cache mask path agrees with token-by-token appends; preserving original positions differs measurably from relabelling them; packed storage has the intended bit width (uint32 words, ratios 1.9/3.6/6.4 for 8/4/2 bits on a 412-token prefix including scales and biases); the loader rejects a wrong prefix hash or a different checkpoint; branches do not share mutable state; and the no-message control does not know the private answer. \subsection{Pilot, freeze and campaign} A development pilot (\texttt{E1\_pilot}: 16 documents, 31 conditions, two model pairs) calibrated budgets, revealed implementation failures and estimated variance and run time. The confirmatory protocol was then frozen (\texttt{protocol/frozen.json}, hash \texttt{\input{tables/protocol_hash}}) with the final hypotheses, prompts, budgets, scorers and analysis plan, before any test-split item was evaluated. The core single-handoff campaign (\texttt{E1\_core}) covers 160 test documents (40 per family), 22 conditions and two model pairs (13\,600 scheduled trials); the handoff, fan-in, transfer, network and hosted campaigns are described with their results. \subsection{Statistics} The unit is a (document, question, condition, pair) trial; documents are the independent clusters. Means and paired differences on identical instances are reported with document-level cluster-bootstrap 95\,\% intervals (2\,000 replicates). Six registered primary comparisons are Holm-corrected; everything else is exploratory. Quality is accuracy (synthetic, executable) or F1 (public); failed or invalid attempts count as 0 in the operational quality and are also tabulated by category. Latency is reported as p50/p95 with sample counts, from the spans defined in Section~\ref{sec:formulation}.