\relax 
\providecommand\hyper@newdestlabel[2]{}
\providecommand\HyField@AuxAddToFields[1]{}
\providecommand\HyField@AuxAddToCoFields[2]{}
\citation{jimenez2024swebench,anthropic2025claudecode}
\citation{huggingface2024smolagents}
\citation{anthropic2025core}
\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{1}{section.1}\protected@file@percent }
\newlabel{sec:intro}{{1}{1}{Introduction}{section.1}{}}
\citation{anthropic2025claudecode}
\citation{gauthier2024aider}
\citation{anthropic2025claudecode}
\citation{anysphere2024cursor}
\citation{wang2024openhands}
\citation{gauthier2024aider}
\citation{zechner2025openclaw}
\citation{tang2025terminalbench}
\citation{openai2025codexcli}
\citation{chase2022langchain}
\citation{wu2023autogen}
\citation{hong2023metagpt}
\citation{huggingface2024smolagents}
\citation{yao2023react}
\citation{anthropic2025core}
\citation{jimenez2024swebench}
\citation{openai2024swebenchverified}
\citation{xie2025livesweagent}
\citation{tang2025terminalbench}
\citation{liu2025featbench}
\citation{chen2021evaluating}
\citation{zhuo2024bigcodebench}
\citation{liu2023agentbench}
\citation{zhou2023webarena}
\@writefile{toc}{\contentsline {paragraph}{The Harness Effect.}{2}{section*.1}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{The Multi-Provider Gap.}{2}{section*.2}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{Contributions.}{2}{section*.3}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {2}Related Work}{2}{section.2}\protected@file@percent }
\newlabel{sec:related}{{2}{2}{Related Work}{section.2}{}}
\@writefile{toc}{\contentsline {paragraph}{Coding Agent Systems.}{2}{section*.4}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{General Agent Frameworks.}{2}{section*.5}\protected@file@percent }
\citation{berriai2023litellm}
\citation{vercel2024aisdk}
\citation{zechner2025openclaw}
\citation{colvin2024pydanticai}
\citation{anthropic2024mcp}
\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces \textbf  {Harness architecture overview.} Three layers connect the user interface to LLM providers and tools. The orchestration layer contains the core innovations: safe-boundary compaction, permission cascade, and hook-based extensibility. Provider adapters normalize three wire protocol families behind a unified \texttt  {StreamEvent} type.}}{3}{figure.caption.8}\protected@file@percent }
\providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}}
\newlabel{fig:architecture}{{1}{3}{\textbf {Harness architecture overview.} Three layers connect the user interface to LLM providers and tools. The orchestration layer contains the core innovations: safe-boundary compaction, permission cascade, and hook-based extensibility. Provider adapters normalize three wire protocol families behind a unified \texttt {StreamEvent} type}{figure.caption.8}{}}
\@writefile{toc}{\contentsline {paragraph}{Benchmarks.}{3}{section*.6}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{Multi-Provider Abstraction.}{3}{section*.7}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {3}Architecture}{3}{section.3}\protected@file@percent }
\newlabel{sec:architecture}{{3}{3}{Architecture}{section.3}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Design Principles}{3}{subsection.3.1}\protected@file@percent }
\newlabel{sec:principles}{{3.1}{3}{Design Principles}{subsection.3.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}Wire Protocol Normalization}{4}{subsection.3.2}\protected@file@percent }
\newlabel{sec:wire}{{3.2}{4}{Wire Protocol Normalization}{subsection.3.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}Agent Loop}{4}{subsection.3.3}\protected@file@percent }
\newlabel{sec:loop}{{3.3}{4}{Agent Loop}{subsection.3.3}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.4}Safe-Boundary Token Budgeting}{4}{subsection.3.4}\protected@file@percent }
\newlabel{sec:compaction}{{3.4}{4}{Safe-Boundary Token Budgeting}{subsection.3.4}{}}
\@writefile{loa}{\contentsline {algorithm}{\numberline {1}{\ignorespaces Harness Agent Loop}}{5}{algorithm.1}\protected@file@percent }
\newlabel{alg:loop}{{1}{5}{Harness Agent Loop}{algorithm.1}{}}
\citation{opencode2025}
\citation{zechner2025openclaw}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.5}Checkpoint-Based File Safety}{6}{subsection.3.5}\protected@file@percent }
\newlabel{sec:checkpoints}{{3.5}{6}{Checkpoint-Based File Safety}{subsection.3.5}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.6}Permission Cascade}{6}{subsection.3.6}\protected@file@percent }
\newlabel{sec:permissions}{{3.6}{6}{Permission Cascade}{subsection.3.6}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.7}Hierarchical Agent System}{6}{subsection.3.7}\protected@file@percent }
\newlabel{sec:agents}{{3.7}{6}{Hierarchical Agent System}{subsection.3.7}{}}
\@writefile{toc}{\contentsline {section}{\numberline {4}Evaluation}{6}{section.4}\protected@file@percent }
\newlabel{sec:eval}{{4}{6}{Evaluation}{section.4}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Harness-Bench}{6}{subsection.4.1}\protected@file@percent }
\newlabel{sec:harnessbench}{{4.1}{6}{Harness-Bench}{subsection.4.1}{}}
\@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces \textbf  {Harness-Bench overall results.} Pass rate (\%) across 8 tasks. Harness achieves 100\% with GPT-5.2 and matches the best results with Opus.}}{7}{table.caption.13}\protected@file@percent }
\newlabel{tab:harnessbench}{{1}{7}{\textbf {Harness-Bench overall results.} Pass rate (\%) across 8 tasks. Harness achieves 100\% with GPT-5.2 and matches the best results with Opus}{table.caption.13}{}}
\@writefile{lot}{\contentsline {table}{\numberline {2}{\ignorespaces \textbf  {Harness-Bench per-task results.} Duration in seconds. The context understanding task (\texttt  {hb-context-01}) differentiates harness quality: only Harness passes with both models.}}{7}{table.caption.14}\protected@file@percent }
\newlabel{tab:pertask}{{2}{7}{\textbf {Harness-Bench per-task results.} Duration in seconds. The context understanding task (\texttt {hb-context-01}) differentiates harness quality: only Harness passes with both models}{table.caption.14}{}}
\@writefile{toc}{\contentsline {paragraph}{Setup.}{7}{section*.11}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{Results.}{7}{table.caption.13}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{Speed Analysis.}{7}{table.caption.17}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}SWE-bench Lite}{7}{subsection.4.2}\protected@file@percent }
\newlabel{sec:swebench}{{4.2}{7}{SWE-bench Lite}{subsection.4.2}{}}
\@writefile{lot}{\contentsline {table}{\numberline {3}{\ignorespaces \textbf  {Average task duration} (seconds) on Harness-Bench. Harness is fastest with GPT-5.2 (6.4s average), 1.7\texttimes {} faster than the next-fastest agent.}}{8}{table.caption.17}\protected@file@percent }
\newlabel{tab:speed}{{3}{8}{\textbf {Average task duration} (seconds) on Harness-Bench. Harness is fastest with GPT-5.2 (6.4s average), 1.7\texttimes {} faster than the next-fastest agent}{table.caption.17}{}}
\@writefile{lot}{\contentsline {table}{\numberline {4}{\ignorespaces \textbf  {SWE-bench Lite patch statistics} (25 tasks, Sonnet 4.6). Both agents produce patches on 24/25 tasks and fail identically on \texttt  {django-11797}.}}{8}{table.caption.20}\protected@file@percent }
\newlabel{tab:swebench}{{4}{8}{\textbf {SWE-bench Lite patch statistics} (25 tasks, Sonnet 4.6). Both agents produce patches on 24/25 tasks and fail identically on \texttt {django-11797}}{table.caption.20}{}}
\@writefile{toc}{\contentsline {paragraph}{Setup.}{8}{section*.18}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{Results.}{8}{figure.caption.21}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{Limitations.}{8}{section*.22}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}Provider-Normalized Scoring}{8}{subsection.4.3}\protected@file@percent }
\newlabel{sec:pns}{{4.3}{8}{Provider-Normalized Scoring}{subsection.4.3}{}}
\@writefile{toc}{\contentsline {section}{\numberline {5}Discussion}{9}{section.5}\protected@file@percent }
\newlabel{sec:discussion}{{5}{9}{Discussion}{section.5}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}Why the Harness Matters}{9}{subsection.5.1}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{Tool Design.}{9}{section*.23}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{Context Management.}{9}{section*.24}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{Error Recovery.}{9}{section*.25}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{System Prompt Efficiency.}{9}{section*.26}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2}Multi-Provider as Research Enabler}{9}{subsection.5.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.3}Competitive Positioning}{9}{subsection.5.3}\protected@file@percent }
\newlabel{sec:landscape}{{5.3}{9}{Competitive Positioning}{subsection.5.3}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.4}Limitations}{9}{subsection.5.4}\protected@file@percent }
\citation{anthropic2025core}
\citation{xu2024datacontamination}
\bibstyle{plainnat}
\bibdata{references}
\bibcite{anthropic2024mcp}{{1}{2024}{{Anthropic}}{{}}}
\bibcite{anthropic2025claudecode}{{2}{2025{a}}{{Anthropic}}{{}}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.5}Future Work}{10}{subsection.5.5}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {6}Conclusion}{10}{section.6}\protected@file@percent }
\newlabel{sec:conclusion}{{6}{10}{Conclusion}{section.6}{}}
\bibcite{anthropic2025core}{{3}{2025{b}}{{Anthropic}}{{}}}
\bibcite{anysphere2024cursor}{{4}{2024}{{Anysphere}}{{}}}
\bibcite{berriai2023litellm}{{5}{2023}{{BerriAI}}{{}}}
\bibcite{chase2022langchain}{{6}{2022}{{Chase}}{{}}}
\bibcite{chen2021evaluating}{{7}{2021}{{Chen et~al.}}{{Chen, Tworek, Jun, Yuan, Pinto, Kaplan, Edwards, Burda, Joseph, Brockman, Ray, Puri, Krueger, Petrov, Khlaaf, Sastry, Mishkin, Chan, Gray, Ryder, Pavlov, Power, Kaiser, Bavarian, Winter, Tillet, Such, Cummings, Plappert, Chantzis, Barnes, Herbert-Voss, Guss, Nichol, Paino, Tezak, Tang, Babuschkin, Balaji, Jain, Saunders, Hesse, Carr, Leike, Achiam, Misra, Morikawa, Radford, Knight, Brundage, Murati, Mayer, Welinder, McGrew, Amodei, McCandlish, Sutskever, and Zaremba}}}
\bibcite{colvin2024pydanticai}{{8}{2024}{{Colvin}}{{}}}
\bibcite{gauthier2024aider}{{9}{2024}{{Gauthier}}{{}}}
\bibcite{hong2023metagpt}{{10}{2023}{{Hong et~al.}}{{Hong, Zhuge, Chen, Zheng, Cheng, Zhang, Wang, Wang, Yau, Lin, Zhou, Ran, Xiao, Wu, and Schmidhuber}}}
\bibcite{huggingface2024smolagents}{{11}{2024}{{Hugging Face}}{{}}}
\bibcite{jimenez2024swebench}{{12}{2024}{{Jimenez et~al.}}{{Jimenez, Yang, Wettig, Yao, Pei, Press, and Narasimhan}}}
\bibcite{liu2023agentbench}{{13}{2023}{{Liu et~al.}}{{Liu, Yu, Zhang, Xu, Lei, Lai, Gu, Ding, Men, Yang, Zhang, Deng, Zeng, Du, Zhang, Shen, Zhang, Su, Sun, Huang, Dong, and Tang}}}
\bibcite{liu2025featbench}{{14}{2025}{{Liu et~al.}}{{Liu, Chen, Rodriguez, and Nakamura}}}
\bibcite{openai2024swebenchverified}{{15}{2024}{{OpenAI}}{{}}}
\bibcite{openai2025codexcli}{{16}{2025}{{OpenAI}}{{}}}
\bibcite{opencode2025}{{17}{2025}{{OpenCode Contributors}}{{}}}
\bibcite{tang2025terminalbench}{{18}{2025}{{Tang et~al.}}{{Tang, Sharma, Gupta, Patel, and Kumar}}}
\bibcite{vercel2024aisdk}{{19}{2024}{{Vercel}}{{}}}
\bibcite{wang2024openhands}{{20}{2024}{{Wang et~al.}}{{Wang, Hoang, Hu, Kim, Xin, Yang, Oh, Peng, Narasimhan, and Press}}}
\bibcite{wu2023autogen}{{21}{2023}{{Wu et~al.}}{{Wu, Bansal, Zhang, Wu, Li, Zhu, Jiang, Zhang, Zhang, Liu, Awadallah, White, Burger, and Wang}}}
\bibcite{xie2025livesweagent}{{22}{2025}{{Xie et~al.}}{{Xie, Patel, Fernandez, and Kim}}}
\bibcite{xu2024datacontamination}{{23}{2024}{{Xu et~al.}}{{Xu, Luo, Wu, and Yan}}}
\bibcite{yao2023react}{{24}{2023}{{Yao et~al.}}{{Yao, Zhao, Yu, Du, Shafran, Narasimhan, and Cao}}}
\bibcite{zechner2025openclaw}{{25}{2025}{{Zechner}}{{}}}
\bibcite{zhou2023webarena}{{26}{2023}{{Zhou et~al.}}{{Zhou, Xu, Zhu, Zhou, Lo, Sridhar, Cheng, Bisk, Fried, Alon, and Neubig}}}
\bibcite{zhuo2024bigcodebench}{{27}{2024}{{Zhuo et~al.}}{{Zhuo, Vu, Chim, Hu, Yu, Widyasari, Yusuf, Zhan, He, Paul, Brunner, Gong, Hoang, Ramos, Xu, Zhang, Luo, Tang, Yang, Wang, Li, Wang, Xu, Labibi, Khalatbari, Santhanam, Haber, Xu, Phung, Ding, Cheng, Li, Yin, Shi, Zhi, Jiang, Gu, Phan, Jabbarvand, Peng, Yin, Xie, Kamoi, Stelmakh, Phang, Jimenez, Yu, Neubig, and Liu}}}
\@writefile{toc}{\contentsline {section}{\numberline {A}Harness-Bench Task Descriptions}{13}{appendix.A}\protected@file@percent }
\newlabel{app:tasks}{{A}{13}{Harness-Bench Task Descriptions}{appendix.A}{}}
\@writefile{lot}{\contentsline {table}{\numberline {5}{\ignorespaces \textbf  {Harness-Bench task descriptions.} Each task tests a specific harness capability.}}{13}{table.caption.29}\protected@file@percent }
\newlabel{tab:taskdesc}{{5}{13}{\textbf {Harness-Bench task descriptions.} Each task tests a specific harness capability}{table.caption.29}{}}
\@writefile{toc}{\contentsline {section}{\numberline {B}Provider Adapter Details}{13}{appendix.B}\protected@file@percent }
\newlabel{app:providers}{{B}{13}{Provider Adapter Details}{appendix.B}{}}
\@writefile{lot}{\contentsline {table}{\numberline {6}{\ignorespaces \textbf  {Wire protocol differences} across the three provider families supported by Harness.}}{14}{table.caption.30}\protected@file@percent }
\newlabel{tab:providers}{{6}{14}{\textbf {Wire protocol differences} across the three provider families supported by Harness}{table.caption.30}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces \textbf  {Agent loop flowchart.} Each turn begins with optional steering message injection and context compaction checks. After the provider streams its response, tool calls are subject to permission verification before execution. Hooks fire before and after each tool use, enabling external monitoring and policy enforcement.}}{15}{figure.caption.9}\protected@file@percent }
\newlabel{fig:agentloop}{{2}{15}{\textbf {Agent loop flowchart.} Each turn begins with optional steering message injection and context compaction checks. After the provider streams its response, tool calls are subject to permission verification before execution. Hooks fire before and after each tool use, enabling external monitoring and policy enforcement}{figure.caption.9}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces \textbf  {Safe-boundary compaction.} Left: an unsafe split separates a tool-use block from its result, causing the model to hallucinate the tool output. Right: the safe boundary algorithm walks forward to find a clean user-message boundary, preserving tool-pair integrity.}}{16}{figure.caption.10}\protected@file@percent }
\newlabel{fig:safeboundary}{{3}{16}{\textbf {Safe-boundary compaction.} Left: an unsafe split separates a tool-use block from its result, causing the model to hallucinate the tool output. Right: the safe boundary algorithm walks forward to find a clean user-message boundary, preserving tool-pair integrity}{figure.caption.10}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces \textbf  {Harness-Bench results.} Grouped bar chart showing pass rates by agent and model. Harness achieves the only perfect score (100\% on GPT-5.2).}}{16}{figure.caption.15}\protected@file@percent }
\newlabel{fig:harnessbench}{{4}{16}{\textbf {Harness-Bench results.} Grouped bar chart showing pass rates by agent and model. Harness achieves the only perfect score (100\% on GPT-5.2)}{figure.caption.15}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces \textbf  {SWE-bench Lite patch comparison.} Scatter plot of per-task patch sizes (lines changed). Both agents fail on the same task (\texttt  {django-11797}). Harness patches tend to be larger, suggesting more comprehensive modifications.}}{17}{figure.caption.21}\protected@file@percent }
\newlabel{fig:swebench}{{5}{17}{\textbf {SWE-bench Lite patch comparison.} Scatter plot of per-task patch sizes (lines changed). Both agents fail on the same task (\texttt {django-11797}). Harness patches tend to be larger, suggesting more comprehensive modifications}{figure.caption.21}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces \textbf  {Competitive landscape.} Agents plotted by openness (x-axis) and performance (y-axis). Harness occupies the previously-empty quadrant of open-source and high-performance.}}{17}{figure.caption.27}\protected@file@percent }
\newlabel{fig:landscape}{{6}{17}{\textbf {Competitive landscape.} Agents plotted by openness (x-axis) and performance (y-axis). Harness occupies the previously-empty quadrant of open-source and high-performance}{figure.caption.27}{}}
\gdef \@abspage@last{17}
