\relax \providecommand\babel@aux[2]{} \@nameuse{bbl@beforestart} \providecommand\hyper@newdestlabel[2]{} \providecommand\HyperFirstAtBeginDocument{\AtBeginDocument} \HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined \global\let\oldnewlabel\newlabel \gdef\newlabel#1#2{\newlabelxx{#1}#2} \gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}} \AtEndDocument{\ifx\hyper@anchor\@undefined \let\newlabel\oldnewlabel \fi} \fi} \global\let\hyper@last\relax \gdef\HyperFirstAtBeginDocument#1{#1} \providecommand\HyField@AuxAddToFields[1]{} \providecommand\HyField@AuxAddToCoFields[2]{} \babel@aux{english}{} \newlabel{index::doc}{{}{1}{}{section*.2}{}} \@writefile{toc}{\contentsline {chapter}{\numberline {1}Introduction}{1}{chapter.1}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \newlabel{index:introduction}{{1}{1}{Introduction}{chapter.1}{}} \@writefile{toc}{\contentsline {section}{\numberline {1.1}What exists in Parsl now?}{2}{section.1.1}\protected@file@percent } \newlabel{index:what-exists-in-parsl-now}{{1.1}{2}{What exists in Parsl now?}{section.1.1}{}} \@writefile{toc}{\contentsline {section}{\numberline {1.2}Diagram}{3}{section.1.2}\protected@file@percent } \newlabel{index:diagram}{{1.2}{3}{Diagram}{section.1.2}{}} \@writefile{toc}{\contentsline {section}{\numberline {1.3}Concept: Universal personal logging}{4}{section.1.3}\protected@file@percent } \newlabel{index:concept-universal-personal-logging}{{1.3}{4}{Concept: Universal personal logging}{section.1.3}{}} \@writefile{toc}{\contentsline {section}{\numberline {1.4}Target audience}{4}{section.1.4}\protected@file@percent } \newlabel{index:target-audience}{{1.4}{4}{Target audience}{section.1.4}{}} \@writefile{toc}{\contentsline {section}{\numberline {1.5}Modularity}{5}{section.1.5}\protected@file@percent } \newlabel{index:modularity}{{1.5}{5}{Modularity}{section.1.5}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {1.5.1}Modularity as a requirement for a rich research landscape}{5}{subsection.1.5.1}\protected@file@percent } \newlabel{index:modularity-as-a-requirement-for-a-rich-research-landscape}{{1.5.1}{5}{Modularity as a requirement for a rich research landscape}{subsection.1.5.1}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {1.5.2}Hourglass model with several waists}{6}{subsection.1.5.2}\protected@file@percent } \newlabel{index:hourglass-model-with-several-waists}{{1.5.2}{6}{Hourglass model with several waists}{subsection.1.5.2}{}} \@writefile{toc}{\contentsline {section}{\numberline {1.6}High level structure of this project}{6}{section.1.6}\protected@file@percent } \newlabel{index:high-level-structure-of-this-project}{{1.6}{6}{High level structure of this project}{section.1.6}{}} \@writefile{toc}{\contentsline {chapter}{\numberline {2}The data model}{7}{chapter.2}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \newlabel{index:the-data-model}{{2}{7}{The data model}{chapter.2}{}} \newlabel{index:datamodel}{{2}{7}{The data model}{chapter.2}{}} \@writefile{toc}{\contentsline {section}{\numberline {2.1}Introduction to wide events}{7}{section.2.1}\protected@file@percent } \newlabel{index:introduction-to-wide-events}{{2.1}{7}{Introduction to wide events}{section.2.1}{}} \@writefile{toc}{\contentsline {section}{\numberline {2.2}What exists now: Parsl python logs vs Parsl monitoring records}{7}{section.2.2}\protected@file@percent } \newlabel{index:what-exists-now-parsl-python-logs-vs-parsl-monitoring-records}{{2.2}{7}{What exists now: Parsl python logs vs Parsl monitoring records}{section.2.2}{}} \@writefile{toc}{\contentsline {section}{\numberline {2.3}Optional and missing data in observability}{8}{section.2.3}\protected@file@percent } \newlabel{index:optional-and-missing-data-in-observability}{{2.3}{8}{Optional and missing data in observability}{section.2.3}{}} \newlabel{index:partialdata}{{2.3}{8}{Optional and missing data in observability}{section.2.3}{}} \@writefile{toc}{\contentsline {section}{\numberline {2.4}Data types}{9}{section.2.4}\protected@file@percent } \newlabel{index:data-types}{{2.4}{9}{Data types}{section.2.4}{}} \@writefile{toc}{\contentsline {section}{\numberline {2.5}Distributed state machines \sphinxhyphen {} parsl issue \#4021}{10}{section.2.5}\protected@file@percent } \newlabel{index:distributed-state-machines-parsl-issue-4021}{{2.5}{10}{Distributed state machines \sphinxhyphen {} parsl issue \#4021}{section.2.5}{}} \@writefile{toc}{\contentsline {section}{\numberline {2.6}commercial observability vendors}{10}{section.2.6}\protected@file@percent } \newlabel{index:commercial-observability-vendors}{{2.6}{10}{commercial observability vendors}{section.2.6}{}} \@writefile{toc}{\contentsline {section}{\numberline {2.7}The argument for templating log messages}{11}{section.2.7}\protected@file@percent } \newlabel{index:the-argument-for-templating-log-messages}{{2.7}{11}{The argument for templating log messages}{section.2.7}{}} \@writefile{toc}{\contentsline {section}{\numberline {2.8}Objects and spans}{11}{section.2.8}\protected@file@percent } \newlabel{index:objects-and-spans}{{2.8}{11}{Objects and spans}{section.2.8}{}} \@writefile{toc}{\contentsline {section}{\numberline {2.9}Entity keys}{12}{section.2.9}\protected@file@percent } \newlabel{index:entity-keys}{{2.9}{12}{Entity keys}{section.2.9}{}} \@writefile{toc}{\contentsline {section}{\numberline {2.10}Other components}{12}{section.2.10}\protected@file@percent } \newlabel{index:other-components}{{2.10}{12}{Other components}{section.2.10}{}} \@writefile{toc}{\contentsline {chapter}{\numberline {3}Generating wide records}{15}{chapter.3}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \newlabel{index:generating-wide-records}{{3}{15}{Generating wide records}{chapter.3}{}} \newlabel{index:creating}{{3}{15}{Generating wide records}{chapter.3}{}} \@writefile{toc}{\contentsline {section}{\numberline {3.1}What exists now}{15}{section.3.1}\protected@file@percent } \newlabel{index:what-exists-now}{{3.1}{15}{What exists now}{section.3.1}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.1.1}Parsl}{15}{subsection.3.1.1}\protected@file@percent } \newlabel{index:parsl}{{3.1.1}{15}{Parsl}{subsection.3.1.1}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.1.2}Academy}{16}{subsection.3.1.2}\protected@file@percent } \newlabel{index:academy}{{3.1.2}{16}{Academy}{subsection.3.1.2}{}} \@writefile{toc}{\contentsline {section}{\numberline {3.2}New Python Code for log generation}{16}{section.3.2}\protected@file@percent } \newlabel{index:new-python-code-for-log-generation}{{3.2}{16}{New Python Code for log generation}{section.3.2}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.2.1}Python API on logging side}{17}{subsection.3.2.1}\protected@file@percent } \newlabel{index:python-api-on-logging-side}{{3.2.1}{17}{Python API on logging side}{subsection.3.2.1}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.2.2}anonymous/temporary identified python objects}{17}{subsection.3.2.2}\protected@file@percent } \newlabel{index:anonymous-temporary-identified-python-objects}{{3.2.2}{17}{anonymous/temporary identified python objects}{subsection.3.2.2}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.2.3}Contributed: Modifying academy to generate wide events}{18}{subsection.3.2.3}\protected@file@percent } \newlabel{index:contributed-modifying-academy-to-generate-wide-events}{{3.2.3}{18}{Contributed: Modifying academy to generate wide events}{subsection.3.2.3}{}} \@writefile{toc}{\contentsline {section}{\numberline {3.3}Translating non\sphinxhyphen {}wide\sphinxhyphen {}event sources}{18}{section.3.3}\protected@file@percent } \newlabel{index:translating-non-wide-event-sources}{{3.3}{18}{Translating non\sphinxhyphen {}wide\sphinxhyphen {}event sources}{section.3.3}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.3.1}Using Parsl monitoring events as wide logs}{18}{subsection.3.3.1}\protected@file@percent } \newlabel{index:using-parsl-monitoring-events-as-wide-logs}{{3.3.1}{18}{Using Parsl monitoring events as wide logs}{subsection.3.3.1}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.3.2}Using Work Queue \sphinxstyleliteralintitle {\sphinxupquote {transaction\_log}} as a wide log source}{19}{subsection.3.3.2}\protected@file@percent } \newlabel{index:using-work-queue-transaction-log-as-a-wide-log-source}{{3.3.2}{19}{Using Work Queue \sphinxstyleliteralintitle {\sphinxupquote {transaction\_log}} as a wide log source}{subsection.3.3.2}{}} \@writefile{toc}{\contentsline {section}{\numberline {3.4}Adventure: adding observability to a prototype: idris2interchange}{19}{section.3.4}\protected@file@percent } \newlabel{index:adventure-adding-observability-to-a-prototype-idris2interchange}{{3.4}{19}{Adventure: adding observability to a prototype: idris2interchange}{section.3.4}{}} \@writefile{toc}{\contentsline {section}{\numberline {3.5}Performance measurement of patch stack on 2025\sphinxhyphen {}10\sphinxhyphen {}27}{22}{section.3.5}\protected@file@percent } \newlabel{index:performance-measurement-of-patch-stack-on-2025-10-27}{{3.5}{22}{Performance measurement of patch stack on 2025\sphinxhyphen {}10\sphinxhyphen {}27}{section.3.5}{}} \@writefile{toc}{\contentsline {section}{\numberline {3.6}Idea: Parsl resource monitoring on a host\sphinxhyphen {}wide basis}{23}{section.3.6}\protected@file@percent } \newlabel{index:idea-parsl-resource-monitoring-on-a-host-wide-basis}{{3.6}{23}{Idea: Parsl resource monitoring on a host\sphinxhyphen {}wide basis}{section.3.6}{}} \@writefile{toc}{\contentsline {section}{\numberline {3.7}Idea: worker node dmesg}{23}{section.3.7}\protected@file@percent } \newlabel{index:idea-worker-node-dmesg}{{3.7}{23}{Idea: worker node dmesg}{section.3.7}{}} \@writefile{toc}{\contentsline {section}{\numberline {3.8}Idea: automatic instrumentation}{23}{section.3.8}\protected@file@percent } \newlabel{index:idea-automatic-instrumentation}{{3.8}{23}{Idea: automatic instrumentation}{section.3.8}{}} \@writefile{toc}{\contentsline {chapter}{\numberline {4}Moving wide records around}{25}{chapter.4}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \newlabel{index:moving-wide-records-around}{{4}{25}{Moving wide records around}{chapter.4}{}} \newlabel{index:moving}{{4}{25}{Moving wide records around}{chapter.4}{}} \@writefile{toc}{\contentsline {section}{\numberline {4.1}Comparison to Parsl logging}{25}{section.4.1}\protected@file@percent } \newlabel{index:comparison-to-parsl-logging}{{4.1}{25}{Comparison to Parsl logging}{section.4.1}{}} \@writefile{toc}{\contentsline {section}{\numberline {4.2}Comparison to Parsl Monitoring}{26}{section.4.2}\protected@file@percent } \newlabel{index:comparison-to-parsl-monitoring}{{4.2}{26}{Comparison to Parsl Monitoring}{section.4.2}{}} \@writefile{toc}{\contentsline {section}{\numberline {4.3}Python Configurability}{27}{section.4.3}\protected@file@percent } \newlabel{index:python-configurability}{{4.3}{27}{Python Configurability}{section.4.3}{}} \@writefile{toc}{\contentsline {section}{\numberline {4.4}Adventure: Wide records stored as JSON in files}{28}{section.4.4}\protected@file@percent } \newlabel{index:adventure-wide-records-stored-as-json-in-files}{{4.4}{28}{Adventure: Wide records stored as JSON in files}{section.4.4}{}} \@writefile{toc}{\contentsline {section}{\numberline {4.5}Moving in realtime}{28}{section.4.5}\protected@file@percent } \newlabel{index:moving-in-realtime}{{4.5}{28}{Moving in realtime}{section.4.5}{}} \@writefile{toc}{\contentsline {section}{\numberline {4.6}Adventure: Diaspora Octopus}{29}{section.4.6}\protected@file@percent } \newlabel{index:adventure-diaspora-octopus}{{4.6}{29}{Adventure: Diaspora Octopus}{section.4.6}{}} \@writefile{toc}{\contentsline {section}{\numberline {4.7}Idea: Chronolog}{29}{section.4.7}\protected@file@percent } \newlabel{index:idea-chronolog}{{4.7}{29}{Idea: Chronolog}{section.4.7}{}} \@writefile{toc}{\contentsline {section}{\numberline {4.8}Adventure: pytest observing interchange variables}{30}{section.4.8}\protected@file@percent } \newlabel{index:adventure-pytest-observing-interchange-variables}{{4.8}{30}{Adventure: pytest observing interchange variables}{section.4.8}{}} \newlabel{index:pytest-observes-logs}{{4.8}{30}{Adventure: pytest observing interchange variables}{section.4.8}{}} \@writefile{toc}{\contentsline {section}{\numberline {4.9}Adventure: Academy agents can report their own relevant logs via action}{30}{section.4.9}\protected@file@percent } \newlabel{index:adventure-academy-agents-can-report-their-own-relevant-logs-via-action}{{4.9}{30}{Adventure: Academy agents can report their own relevant logs via action}{section.4.9}{}} \@writefile{toc}{\contentsline {chapter}{\numberline {5}Analysing wide records}{31}{chapter.5}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \newlabel{index:analysing-wide-records}{{5}{31}{Analysing wide records}{chapter.5}{}} \newlabel{index:analysing}{{5}{31}{Analysing wide records}{chapter.5}{}} \@writefile{toc}{\contentsline {section}{\numberline {5.1}Adventure: All events for a task, in two aspects/presentations}{31}{section.5.1}\protected@file@percent } \newlabel{index:adventure-all-events-for-a-task-in-two-aspects-presentations}{{5.1}{31}{Adventure: All events for a task, in two aspects/presentations}{section.5.1}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {5.1.1}Task events from the monitoring.db presentation}{32}{subsection.5.1.1}\protected@file@percent } \newlabel{index:task-events-from-the-monitoring-db-presentation}{{5.1.1}{32}{Task events from the monitoring.db presentation}{subsection.5.1.1}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {5.1.2}Task events from a JSON logging presentation}{35}{subsection.5.1.2}\protected@file@percent } \newlabel{index:task-events-from-a-json-logging-presentation}{{5.1.2}{35}{Task events from a JSON logging presentation}{subsection.5.1.2}{}} \@writefile{toc}{\contentsline {section}{\numberline {5.2}Adventure: The minimal change necessary to get htex task logs into the above task trace}{36}{section.5.2}\protected@file@percent } \newlabel{index:adventure-the-minimal-change-necessary-to-get-htex-task-logs-into-the-above-task-trace}{{5.2}{36}{Adventure: The minimal change necessary to get htex task logs into the above task trace}{section.5.2}{}} \@writefile{toc}{\contentsline {section}{\numberline {5.3}Adventure: blog: Visualization for task prioritisation}{36}{section.5.3}\protected@file@percent } \newlabel{index:adventure-blog-visualization-for-task-prioritisation}{{5.3}{36}{Adventure: blog: Visualization for task prioritisation}{section.5.3}{}} \@writefile{toc}{\contentsline {section}{\numberline {5.4}Task flow logs through the whole system}{38}{section.5.4}\protected@file@percent } \newlabel{index:task-flow-logs-through-the-whole-system}{{5.4}{38}{Task flow logs through the whole system}{section.5.4}{}} \@writefile{toc}{\contentsline {section}{\numberline {5.5}Algebra of rearranging and querying wide events}{40}{section.5.5}\protected@file@percent } \newlabel{index:algebra-of-rearranging-and-querying-wide-events}{{5.5}{40}{Algebra of rearranging and querying wide events}{section.5.5}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {5.5.1}functorial}{40}{subsection.5.5.1}\protected@file@percent } \newlabel{index:functorial}{{5.5.1}{40}{functorial}{subsection.5.5.1}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {5.5.2}non\sphinxhyphen {}functorial}{41}{subsection.5.5.2}\protected@file@percent } \newlabel{index:non-functorial}{{5.5.2}{41}{non\sphinxhyphen {}functorial}{subsection.5.5.2}{}} \@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.2.1}keys imply key operator}{42}{subsubsection.5.5.2.1}\protected@file@percent } \newlabel{index:keys-imply-key-operator}{{5.5.2.1}{42}{keys imply key operator}{subsubsection.5.5.2.1}{}} \@writefile{toc}{\contentsline {section}{\numberline {5.6}Adventure: Browser UI}{42}{section.5.6}\protected@file@percent } \newlabel{index:adventure-browser-ui}{{5.6}{42}{Adventure: Browser UI}{section.5.6}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {5.6.1}Idea: Streaming\sphinxhyphen {}fold web UI}{44}{subsection.5.6.1}\protected@file@percent } \newlabel{index:idea-streaming-fold-web-ui}{{5.6.1}{44}{Idea: Streaming\sphinxhyphen {}fold web UI}{subsection.5.6.1}{}} \@writefile{toc}{\contentsline {section}{\numberline {5.7}python side query model}{44}{section.5.7}\protected@file@percent } \newlabel{index:python-side-query-model}{{5.7}{44}{python side query model}{section.5.7}{}} \@writefile{toc}{\contentsline {section}{\numberline {5.8}academy visualization}{44}{section.5.8}\protected@file@percent } \newlabel{index:academy-visualization}{{5.8}{44}{academy visualization}{section.5.8}{}} \@writefile{toc}{\contentsline {section}{\numberline {5.9}HTEX vs WQ questions}{45}{section.5.9}\protected@file@percent } \newlabel{index:htex-vs-wq-questions}{{5.9}{45}{HTEX vs WQ questions}{section.5.9}{}} \@writefile{toc}{\contentsline {section}{\numberline {5.10}Other record storage systems}{45}{section.5.10}\protected@file@percent } \newlabel{index:other-record-storage-systems}{{5.10}{45}{Other record storage systems}{section.5.10}{}} \@writefile{toc}{\contentsline {section}{\numberline {5.11}type checking event schemas}{45}{section.5.11}\protected@file@percent } \newlabel{index:type-checking-event-schemas}{{5.11}{45}{type checking event schemas}{section.5.11}{}} \@writefile{toc}{\contentsline {section}{\numberline {5.12}Writing out JSON events (or other formats) after performing query work}{46}{section.5.12}\protected@file@percent } \newlabel{index:writing-out-json-events-or-other-formats-after-performing-query-work}{{5.12}{46}{Writing out JSON events (or other formats) after performing query work}{section.5.12}{}} \@writefile{toc}{\contentsline {chapter}{\numberline {6}Adventure: Academy vs Globus Compute}{47}{chapter.6}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \newlabel{index:adventure-academy-vs-globus-compute}{{6}{47}{Adventure: Academy vs Globus Compute}{chapter.6}{}} \@writefile{toc}{\contentsline {section}{\numberline {6.1}getting started}{47}{section.6.1}\protected@file@percent } \newlabel{index:getting-started}{{6.1}{47}{getting started}{section.6.1}{}} \@writefile{toc}{\contentsline {section}{\numberline {6.2}Launching an academy agent}{48}{section.6.2}\protected@file@percent } \newlabel{index:launching-an-academy-agent}{{6.2}{48}{Launching an academy agent}{section.6.2}{}} \@writefile{toc}{\contentsline {section}{\numberline {6.3}Looking at GC\sphinxhyphen {}endpoint\sphinxhyphen {}side academy logs}{50}{section.6.3}\protected@file@percent } \newlabel{index:looking-at-gc-endpoint-side-academy-logs}{{6.3}{50}{Looking at GC\sphinxhyphen {}endpoint\sphinxhyphen {}side academy logs}{section.6.3}{}} \@writefile{toc}{\contentsline {chapter}{\numberline {7}The rest}{53}{chapter.7}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \newlabel{index:the-rest}{{7}{53}{The rest}{chapter.7}{}} \@writefile{toc}{\contentsline {section}{\numberline {7.1}Debugging monitoring performance as part of developing this prototype}{53}{section.7.1}\protected@file@percent } \newlabel{index:debugging-monitoring-performance-as-part-of-developing-this-prototype}{{7.1}{53}{Debugging monitoring performance as part of developing this prototype}{section.7.1}{}} \@writefile{toc}{\contentsline {section}{\numberline {7.2}See also}{60}{section.7.2}\protected@file@percent } \newlabel{index:see-also}{{7.2}{60}{See also}{section.7.2}{}} \@writefile{toc}{\contentsline {section}{\numberline {7.3}wheres the bottleneck \sphinxhyphen {} visualization}{61}{section.7.3}\protected@file@percent } \newlabel{index:wheres-the-bottleneck-visualization}{{7.3}{61}{wheres the bottleneck \sphinxhyphen {} visualization}{section.7.3}{}} \@writefile{toc}{\contentsline {section}{\numberline {7.4}Review of changes made so far to Parsl and Academy}{61}{section.7.4}\protected@file@percent } \newlabel{index:review-of-changes-made-so-far-to-parsl-and-academy}{{7.4}{61}{Review of changes made so far to Parsl and Academy}{section.7.4}{}} \@writefile{toc}{\contentsline {section}{\numberline {7.5}Applying this approach for academy}{61}{section.7.5}\protected@file@percent } \newlabel{index:applying-this-approach-for-academy}{{7.5}{61}{Applying this approach for academy}{section.7.5}{}} \@writefile{toc}{\contentsline {chapter}{\numberline {8}Acknowledgements}{63}{chapter.8}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \newlabel{index:acknowledgements}{{8}{63}{Acknowledgements}{chapter.8}{}} \@writefile{toc}{\contentsline {chapter}{Index}{65}{section*.3}\protected@file@percent } \gdef \@abspage@last{72}