updating build

This commit is contained in:
2026-04-24 11:44:20 +02:00
parent 9bbacd6bdc
commit acf5bb5409
4 changed files with 194 additions and 168 deletions

View File

@@ -44,7 +44,7 @@ SWEEP_ENV_LOAD = set -a; [ -f "$(SWEEP_ENV_FILE)" ] && . "$(SWEEP_ENV_FILE)" ||
.PHONY: help .PHONY: help
help: help:
@echo "pdf.build pdf.watch pdf.clean pdf.genpop pdf.genpop.watch pdf.summary pdf.summary.watch pdf.arxiv pdf.defense | test.backend test.e2e test.all | web.dev | install | train | benchmark | benchmark.simple | benchmark.agent | train.agent | train.bootstrap | stats.lines | docs.platform | manim.defense manim.defense.hq manim.render manim.render.full manim.render.poster manim.render.appendix manim.render.all" @echo "pdf.build pdf.watch pdf.clean pdf.genpop pdf.genpop.watch pdf.summary pdf.summary.watch pdf.arxiv pdf.defense pdf.defense.html | test.backend test.e2e test.all | web.dev | install | train | benchmark | benchmark.simple | benchmark.agent | train.agent | train.bootstrap | stats.lines | docs.platform | manim.defense manim.defense.hq manim.render manim.render.full manim.render.poster manim.render.appendix manim.render.all"
@echo "backend.server backend.provider backend.worker | platform.up platform.down platform.logs | docker.train.publish" @echo "backend.server backend.provider backend.worker | platform.up platform.down platform.logs | docker.train.publish"
@echo "data.pull data.push data.whoclicked.publish | study.margin-erosion study.margin-erosion.quick study.margin-erosion.plot" @echo "data.pull data.push data.whoclicked.publish | study.margin-erosion study.margin-erosion.quick study.margin-erosion.plot"
@echo "tpu.ray.bootstrap tpu.ray.deps tpu.ray.verify tpu.ray.teardown" @echo "tpu.ray.bootstrap tpu.ray.deps tpu.ray.verify tpu.ray.teardown"
@@ -114,6 +114,10 @@ pdf.summary.watch:
pdf.defense: pdf.defense:
@cd paper/defense && pdflatex -interaction=nonstopmode defense.tex && pdflatex -interaction=nonstopmode defense.tex @cd paper/defense && pdflatex -interaction=nonstopmode defense.tex && pdflatex -interaction=nonstopmode defense.tex
.PHONY: pdf.defense.html
pdf.defense.html:
@bash paper/defense/build_html.sh
.PHONY: test.backend .PHONY: test.backend
test.backend: test.backend:
@$(NX) run research:test @$(NX) run research:test

View File

@@ -2,124 +2,124 @@
\headcommand {\beamer@framepages {1}{1}} \headcommand {\beamer@framepages {1}{1}}
\headcommand {\slideentry {0}{0}{2}{2/2}{}{0}} \headcommand {\slideentry {0}{0}{2}{2/2}{}{0}}
\headcommand {\beamer@framepages {2}{2}} \headcommand {\beamer@framepages {2}{2}}
\headcommand {\slideentry {0}{0}{3}{3/3}{}{0}} \headcommand {\slideentry {0}{0}{3}{3/9}{}{0}}
\headcommand {\beamer@framepages {3}{3}} \headcommand {\beamer@framepages {3}{9}}
\headcommand {\slideentry {0}{0}{4}{4/6}{}{0}} \headcommand {\slideentry {0}{0}{4}{10/12}{}{0}}
\headcommand {\beamer@framepages {4}{6}}
\headcommand {\beamer@sectionpages {1}{6}}
\headcommand {\beamer@subsectionpages {1}{6}}
\headcommand {\sectionentry {1}{Platform Development}{7}{Platform Development}{0}}
\headcommand {\slideentry {1}{0}{1}{7/8}{}{0}}
\headcommand {\beamer@framepages {7}{8}}
\headcommand {\slideentry {1}{0}{2}{9/9}{}{0}}
\headcommand {\beamer@framepages {9}{9}}
\headcommand {\slideentry {1}{0}{3}{10/12}{}{0}}
\headcommand {\beamer@framepages {10}{12}} \headcommand {\beamer@framepages {10}{12}}
\headcommand {\beamer@sectionpages {7}{12}} \headcommand {\beamer@sectionpages {1}{12}}
\headcommand {\beamer@subsectionpages {7}{12}} \headcommand {\beamer@subsectionpages {1}{12}}
\headcommand {\sectionentry {2}{Distinguishability Construction}{13}{Distinguishability Construction}{0}} \headcommand {\sectionentry {1}{Platform Development}{13}{Platform Development}{0}}
\headcommand {\slideentry {2}{0}{1}{13/14}{}{0}} \headcommand {\slideentry {1}{0}{1}{13/14}{}{0}}
\headcommand {\beamer@framepages {13}{14}} \headcommand {\beamer@framepages {13}{14}}
\headcommand {\slideentry {2}{0}{2}{15/15}{}{0}} \headcommand {\slideentry {1}{0}{2}{15/17}{}{0}}
\headcommand {\beamer@framepages {15}{15}} \headcommand {\beamer@framepages {15}{17}}
\headcommand {\slideentry {2}{0}{3}{16/17}{}{0}} \headcommand {\slideentry {1}{0}{3}{18/20}{}{0}}
\headcommand {\beamer@framepages {16}{17}} \headcommand {\beamer@framepages {18}{20}}
\headcommand {\beamer@sectionpages {13}{17}} \headcommand {\beamer@sectionpages {13}{20}}
\headcommand {\beamer@subsectionpages {13}{17}} \headcommand {\beamer@subsectionpages {13}{20}}
\headcommand {\sectionentry {3}{Distributionally Robust RL}{18}{Distributionally Robust RL}{0}} \headcommand {\sectionentry {2}{Distinguishability Construction}{21}{Distinguishability Construction}{0}}
\headcommand {\slideentry {3}{0}{1}{18/18}{}{0}} \headcommand {\slideentry {2}{0}{1}{21/22}{}{0}}
\headcommand {\beamer@framepages {18}{18}}
\headcommand {\slideentry {3}{0}{2}{19/20}{}{0}}
\headcommand {\beamer@framepages {19}{20}}
\headcommand {\slideentry {3}{0}{3}{21/22}{}{0}}
\headcommand {\beamer@framepages {21}{22}} \headcommand {\beamer@framepages {21}{22}}
\headcommand {\beamer@sectionpages {18}{22}} \headcommand {\slideentry {2}{0}{2}{23/23}{}{0}}
\headcommand {\beamer@subsectionpages {18}{22}}
\headcommand {\sectionentry {4}{Results}{23}{Results}{0}}
\headcommand {\slideentry {4}{0}{1}{23/23}{}{0}}
\headcommand {\beamer@framepages {23}{23}} \headcommand {\beamer@framepages {23}{23}}
\headcommand {\beamer@sectionpages {23}{23}} \headcommand {\slideentry {2}{0}{3}{24/30}{}{0}}
\headcommand {\beamer@subsectionpages {23}{23}} \headcommand {\beamer@framepages {24}{30}}
\headcommand {\sectionentry {5}{Conclusions}{24}{Conclusions}{0}} \headcommand {\beamer@sectionpages {21}{30}}
\headcommand {\slideentry {5}{0}{1}{24/24}{}{0}} \headcommand {\beamer@subsectionpages {21}{30}}
\headcommand {\beamer@framepages {24}{24}} \headcommand {\sectionentry {3}{Distributionally Robust RL}{31}{Distributionally Robust RL}{0}}
\headcommand {\slideentry {5}{0}{2}{25/28}{}{0}} \headcommand {\slideentry {3}{0}{1}{31/31}{}{0}}
\headcommand {\beamer@framepages {25}{28}} \headcommand {\beamer@framepages {31}{31}}
\headcommand {\slideentry {5}{0}{3}{29/29}{}{0}} \headcommand {\slideentry {3}{0}{2}{32/34}{}{0}}
\headcommand {\beamer@framepages {29}{29}} \headcommand {\beamer@framepages {32}{34}}
\headcommand {\slideentry {3}{0}{3}{35/36}{}{0}}
\headcommand {\beamer@framepages {35}{36}}
\headcommand {\beamer@sectionpages {31}{36}}
\headcommand {\beamer@subsectionpages {31}{36}}
\headcommand {\sectionentry {4}{Results}{37}{Results}{0}}
\headcommand {\slideentry {4}{0}{1}{37/37}{}{0}}
\headcommand {\beamer@framepages {37}{37}}
\headcommand {\beamer@sectionpages {37}{37}}
\headcommand {\beamer@subsectionpages {37}{37}}
\headcommand {\sectionentry {5}{Conclusions}{38}{Conclusions}{0}}
\headcommand {\slideentry {5}{0}{1}{38/38}{}{0}}
\headcommand {\beamer@framepages {38}{38}}
\headcommand {\slideentry {5}{0}{2}{39/43}{}{0}}
\headcommand {\beamer@framepages {39}{43}}
\headcommand {\slideentry {5}{0}{3}{44/44}{}{0}}
\headcommand {\beamer@framepages {44}{44}}
\headcommand {\gdef \insertmainframenumber {17}} \headcommand {\gdef \insertmainframenumber {17}}
\headcommand {\partentry {\translate {Appendix}}{1}} \headcommand {\partentry {\translate {Appendix}}{1}}
\headcommand {\beamer@partpages {1}{29}} \headcommand {\beamer@partpages {1}{44}}
\headcommand {\beamer@sectionpages {24}{29}} \headcommand {\beamer@sectionpages {38}{44}}
\headcommand {\beamer@subsectionpages {24}{29}} \headcommand {\beamer@subsectionpages {38}{44}}
\headcommand {\beamer@appendixpages {30}} \headcommand {\beamer@appendixpages {45}}
\headcommand {\beamer@sectionpages {30}{29}} \headcommand {\beamer@sectionpages {45}{44}}
\headcommand {\beamer@subsectionpages {30}{29}} \headcommand {\beamer@subsectionpages {45}{44}}
\headcommand {\sectionentry {6}{Appendix}{30}{Appendix}{1}} \headcommand {\sectionentry {6}{Appendix}{45}{Appendix}{1}}
\headcommand {\slideentry {6}{0}{1}{30/30}{}{1}} \headcommand {\slideentry {6}{0}{1}{45/45}{}{1}}
\headcommand {\beamer@framepages {30}{30}}
\headcommand {\slideentry {6}{0}{2}{31/31}{}{1}}
\headcommand {\beamer@framepages {31}{31}}
\headcommand {\slideentry {6}{0}{3}{32/32}{}{1}}
\headcommand {\beamer@framepages {32}{32}}
\headcommand {\slideentry {6}{0}{4}{33/33}{}{1}}
\headcommand {\beamer@framepages {33}{33}}
\headcommand {\slideentry {6}{0}{5}{34/34}{}{1}}
\headcommand {\beamer@framepages {34}{34}}
\headcommand {\slideentry {6}{0}{6}{35/35}{}{1}}
\headcommand {\beamer@framepages {35}{35}}
\headcommand {\slideentry {6}{0}{7}{36/36}{}{1}}
\headcommand {\beamer@framepages {36}{36}}
\headcommand {\slideentry {6}{0}{8}{37/37}{}{1}}
\headcommand {\beamer@framepages {37}{37}}
\headcommand {\slideentry {6}{0}{9}{38/38}{}{1}}
\headcommand {\beamer@framepages {38}{38}}
\headcommand {\slideentry {6}{0}{10}{39/39}{}{1}}
\headcommand {\beamer@framepages {39}{39}}
\headcommand {\slideentry {6}{0}{11}{40/40}{}{1}}
\headcommand {\beamer@framepages {40}{40}}
\headcommand {\slideentry {6}{0}{12}{41/41}{}{1}}
\headcommand {\beamer@framepages {41}{41}}
\headcommand {\slideentry {6}{0}{13}{42/42}{}{1}}
\headcommand {\beamer@framepages {42}{42}}
\headcommand {\slideentry {6}{0}{14}{43/43}{}{1}}
\headcommand {\beamer@framepages {43}{43}}
\headcommand {\slideentry {6}{0}{15}{44/44}{}{1}}
\headcommand {\beamer@framepages {44}{44}}
\headcommand {\slideentry {6}{0}{16}{45/45}{}{1}}
\headcommand {\beamer@framepages {45}{45}} \headcommand {\beamer@framepages {45}{45}}
\headcommand {\slideentry {6}{0}{17}{46/46}{}{1}} \headcommand {\slideentry {6}{0}{2}{46/46}{}{1}}
\headcommand {\beamer@framepages {46}{46}} \headcommand {\beamer@framepages {46}{46}}
\headcommand {\slideentry {6}{0}{18}{47/47}{}{1}} \headcommand {\slideentry {6}{0}{3}{47/47}{}{1}}
\headcommand {\beamer@framepages {47}{47}} \headcommand {\beamer@framepages {47}{47}}
\headcommand {\slideentry {6}{0}{19}{48/48}{}{1}} \headcommand {\slideentry {6}{0}{4}{48/48}{}{1}}
\headcommand {\beamer@framepages {48}{48}} \headcommand {\beamer@framepages {48}{48}}
\headcommand {\slideentry {6}{0}{20}{49/49}{}{1}} \headcommand {\slideentry {6}{0}{5}{49/49}{}{1}}
\headcommand {\beamer@framepages {49}{49}} \headcommand {\beamer@framepages {49}{49}}
\headcommand {\slideentry {6}{0}{21}{50/50}{}{1}} \headcommand {\slideentry {6}{0}{6}{50/50}{}{1}}
\headcommand {\beamer@framepages {50}{50}} \headcommand {\beamer@framepages {50}{50}}
\headcommand {\slideentry {6}{0}{22}{51/51}{}{1}} \headcommand {\slideentry {6}{0}{7}{51/51}{}{1}}
\headcommand {\beamer@framepages {51}{51}} \headcommand {\beamer@framepages {51}{51}}
\headcommand {\slideentry {6}{0}{23}{52/52}{}{1}} \headcommand {\slideentry {6}{0}{8}{52/52}{}{1}}
\headcommand {\beamer@framepages {52}{52}} \headcommand {\beamer@framepages {52}{52}}
\headcommand {\slideentry {6}{0}{24}{53/53}{}{1}} \headcommand {\slideentry {6}{0}{9}{53/53}{}{1}}
\headcommand {\beamer@framepages {53}{53}} \headcommand {\beamer@framepages {53}{53}}
\headcommand {\slideentry {6}{0}{25}{54/54}{}{1}} \headcommand {\slideentry {6}{0}{10}{54/54}{}{1}}
\headcommand {\beamer@framepages {54}{54}} \headcommand {\beamer@framepages {54}{54}}
\headcommand {\slideentry {6}{0}{26}{55/55}{}{1}} \headcommand {\slideentry {6}{0}{11}{55/55}{}{1}}
\headcommand {\beamer@framepages {55}{55}} \headcommand {\beamer@framepages {55}{55}}
\headcommand {\slideentry {6}{0}{27}{56/56}{}{1}} \headcommand {\slideentry {6}{0}{12}{56/56}{}{1}}
\headcommand {\beamer@framepages {56}{56}} \headcommand {\beamer@framepages {56}{56}}
\headcommand {\slideentry {6}{0}{28}{57/57}{}{1}} \headcommand {\slideentry {6}{0}{13}{57/57}{}{1}}
\headcommand {\beamer@framepages {57}{57}} \headcommand {\beamer@framepages {57}{57}}
\headcommand {\slideentry {6}{0}{29}{58/58}{}{1}} \headcommand {\slideentry {6}{0}{14}{58/58}{}{1}}
\headcommand {\beamer@framepages {58}{58}} \headcommand {\beamer@framepages {58}{58}}
\headcommand {\slideentry {6}{0}{30}{59/59}{}{1}} \headcommand {\slideentry {6}{0}{15}{59/59}{}{1}}
\headcommand {\beamer@framepages {59}{59}} \headcommand {\beamer@framepages {59}{59}}
\headcommand {\beamer@partpages {30}{59}} \headcommand {\slideentry {6}{0}{16}{60/60}{}{1}}
\headcommand {\beamer@subsectionpages {30}{59}} \headcommand {\beamer@framepages {60}{60}}
\headcommand {\beamer@sectionpages {30}{59}} \headcommand {\slideentry {6}{0}{17}{61/61}{}{1}}
\headcommand {\beamer@documentpages {59}} \headcommand {\beamer@framepages {61}{61}}
\headcommand {\slideentry {6}{0}{18}{62/62}{}{1}}
\headcommand {\beamer@framepages {62}{62}}
\headcommand {\slideentry {6}{0}{19}{63/63}{}{1}}
\headcommand {\beamer@framepages {63}{63}}
\headcommand {\slideentry {6}{0}{20}{64/64}{}{1}}
\headcommand {\beamer@framepages {64}{64}}
\headcommand {\slideentry {6}{0}{21}{65/65}{}{1}}
\headcommand {\beamer@framepages {65}{65}}
\headcommand {\slideentry {6}{0}{22}{66/66}{}{1}}
\headcommand {\beamer@framepages {66}{66}}
\headcommand {\slideentry {6}{0}{23}{67/67}{}{1}}
\headcommand {\beamer@framepages {67}{67}}
\headcommand {\slideentry {6}{0}{24}{68/68}{}{1}}
\headcommand {\beamer@framepages {68}{68}}
\headcommand {\slideentry {6}{0}{25}{69/69}{}{1}}
\headcommand {\beamer@framepages {69}{69}}
\headcommand {\slideentry {6}{0}{26}{70/70}{}{1}}
\headcommand {\beamer@framepages {70}{70}}
\headcommand {\slideentry {6}{0}{27}{71/71}{}{1}}
\headcommand {\beamer@framepages {71}{71}}
\headcommand {\slideentry {6}{0}{28}{72/72}{}{1}}
\headcommand {\beamer@framepages {72}{72}}
\headcommand {\slideentry {6}{0}{29}{73/73}{}{1}}
\headcommand {\beamer@framepages {73}{73}}
\headcommand {\slideentry {6}{0}{30}{74/74}{}{1}}
\headcommand {\beamer@framepages {74}{74}}
\headcommand {\beamer@partpages {45}{74}}
\headcommand {\beamer@subsectionpages {45}{74}}
\headcommand {\beamer@sectionpages {45}{74}}
\headcommand {\beamer@documentpages {74}}
\headcommand {\gdef \inserttotalframenumber {30}} \headcommand {\gdef \inserttotalframenumber {30}}
\headcommand {\gdef \inserttotalframenumber {17}} \headcommand {\gdef \inserttotalframenumber {17}}
\headcommand {\gdef \appendixtotalframenumber {30}} \headcommand {\gdef \appendixtotalframenumber {30}}

Binary file not shown.

View File

@@ -124,6 +124,8 @@
\begin{block}{Main research question} \begin{block}{Main research question}
How can dynamic pricing preserve margin integrity when transactions are increasingly mediated by non-human agents? How can dynamic pricing preserve margin integrity when transactions are increasingly mediated by non-human agents?
\end{block} \end{block}
\vspace{0.35em}
{\footnotesize Dynamic pricing has often been treated as a secondary optimization layer; agent-mediated shopping turns it into a primary margin-risk surface.}
\stagebar{1} \stagebar{1}
\end{frame} \end{frame}
@@ -134,40 +136,43 @@
flow/.style={draw=PhantomInk,rounded corners=6pt,minimum width=5.3cm,minimum height=1.25cm,align=center}, flow/.style={draw=PhantomInk,rounded corners=6pt,minimum width=5.3cm,minimum height=1.25cm,align=center},
note/.style={draw=PhantomInk!55,rounded corners=4pt,minimum width=11.2cm,minimum height=0.95cm,align=center,fill=white,font=\scriptsize} note/.style={draw=PhantomInk!55,rounded corners=4pt,minimum width=11.2cm,minimum height=0.95cm,align=center,fill=white,font=\scriptsize}
] ]
\node[flow,fill=PhantomCyan!18] (recon) at (-3.1,1.1) \path[use as bounding box] (-6.1,-1.25) rectangle (6.1,2.25);
\node<1->[flow,fill=PhantomCyan!18] (recon) at (-3.1,1.1)
{\textbf{Recon session}\\samples multiple quotes}; {\textbf{Recon session}\\samples multiple quotes};
\node[flow,fill=PhantomIndigo!16] (buy) at (3.1,1.1) \node<2->[flow,fill=PhantomIndigo!16] (buy) at (3.1,1.1)
{\textbf{Clean execution session}\\buys using the best found quote}; {\textbf{Clean execution session}\\buys using the best found quote};
\draw[-{Stealth[length=3mm]},ultra thick,PhantomSlate] (recon.east) -- (buy.west); \draw<2->[-{Stealth[length=3mm]},ultra thick,PhantomSlate] (recon.east) -- (buy.west);
\node[font=\scriptsize\bfseries,text=PhantomSlate] at (0,1.98) \node<2->[font=\scriptsize\bfseries,text=PhantomSlate] at (0,1.98)
{query and purchase are decoupled}; {query and purchase are decoupled};
\draw[densely dashed,thick,PhantomCyan!90!black] \draw<3->[densely dashed,thick,PhantomCyan!90!black]
(recon.south east) .. controls +(1.15,-0.95) and +(-1.15,-0.95) .. (buy.south west); (recon.south east) .. controls +(1.15,-0.95) and +(-1.15,-0.95) .. (buy.south west);
\node[note] at (0,-0.65) \node<3->[note] at (0,-0.65)
{The platform sees behavior proxy $\hat q$, while true demand response $d(p\mid\theta)$ stays latent.}; {The platform sees behavior proxy $\hat q$, while true demand response $d(p\mid\theta)$ stays latent.};
\end{tikzpicture} \end{tikzpicture}
\vspace{0.25em} \vspace{0.25em}
\begin{tikzpicture}[font=\scriptsize\sffamily, \begin{tikzpicture}[font=\scriptsize\sffamily,
card/.style={draw=PhantomInk,rounded corners=4pt,minimum width=3.85cm,text width=3.55cm,minimum height=1.4cm,align=center}] card/.style={draw=PhantomInk,rounded corners=4pt,minimum width=3.85cm,text width=3.55cm,minimum height=1.4cm,align=center}]
\node[card,fill=PhantomInk,text=white] at (-4.05,0) \path[use as bounding box] (-6.05,-0.95) rectangle (6.05,0.95);
\node<4->[card,fill=PhantomInk,text=white] at (-4.05,0)
{\large$\mathrm{COI}(\pi)=\mathbb{E}[P]-\underline p$\\[-0.05em]\footnotesize pricing power KPI}; {\large$\mathrm{COI}(\pi)=\mathbb{E}[P]-\underline p$\\[-0.05em]\footnotesize pricing power KPI};
\node[card,fill=PhantomCyan!16,text=PhantomSlate] at (0,0) \node<5->[card,fill=PhantomCyan!16,text=PhantomSlate] at (0,0)
{\Large\bfseries$-9{,}014$\\[-0.05em]\footnotesize revenue units\\per +0.1 contamination}; {\Large\bfseries$-9{,}014$\\[-0.05em]\footnotesize revenue units\\per +0.1 contamination};
\node[card,fill=PhantomIndigo!12,text=PhantomSlate] at (4.05,0) \node<6->[card,fill=PhantomIndigo!12,text=PhantomSlate] at (4.05,0)
{\large$\lim_{N\to\infty}\mathrm{COI}=0$\\[-0.05em]\footnotesize theorem-level pressure}; {\large$\lim_{N\to\infty}\mathrm{COI}=0$\\[-0.05em]\footnotesize theorem as intuition guide};
\end{tikzpicture} \end{tikzpicture}
\vspace{0.15em} \vspace{0.15em}
{\footnotesize\textbf{Implication:} if quote discovery and purchase split, standard session-based pricing overestimates willingness to pay.} \uncover<6->{\scriptsize\textit{The theorem is used to guide intuition: independent reconnaissance pressure can drive realizable prices toward the floor.}}\\[0.2em]
\uncover<7->{\footnotesize\textbf{Implication:} most production dynamic pricing stacks are not yet ready for AI-agent traffic; when quote discovery and purchase split, session-based pricing overestimates willingness to pay.}
\stagebar{1} \stagebar{1}
\end{frame} \end{frame}
\begin{frame}{The thesis answers one chain: mechanism \(\to\) signal \(\to\) control} \begin{frame}{The thesis answers one chain: mechanism \(\to\) signal \(\to\) control}
\begin{enumerate}[<+->]\setlength{\itemsep}{0.45em} \begin{enumerate}[<+->]\setlength{\itemsep}{0.45em}
\item \textbf{Mechanism (SQ2):} independent reconnaissance pushes realizable price toward the order-statistics floor. \item Can agent and human sessions be reliably distinguished from behavioral interaction signals alone?
\item \textbf{Signal (SQ1):} human and agent sessions are behaviorally separable from trajectories alone. \item How do agents affect prices and revenue that can be generated?
\item \textbf{Control (SQ3):} the session score feeds a robust pricing learner under contamination uncertainty. \item Can we make new policies that maintain margin in agent contaminated systems?
\end{enumerate} \end{enumerate}
\vspace{0.35em} \vspace{0.35em}
@@ -222,18 +227,15 @@
] ]
\node[draw=PhantomInk,rounded corners=5pt,fill=white,minimum width=6.85cm,minimum height=4.45cm] at (0,0) {}; \node[draw=PhantomInk,rounded corners=5pt,fill=white,minimum width=6.85cm,minimum height=4.45cm] at (0,0) {};
\node[anchor=west,font=\footnotesize\bfseries,text=PhantomInk] at (-3.2,1.72) {WhoClickedIt dataset card}; \node[anchor=west,font=\footnotesize\bfseries,text=PhantomInk] at (-3.2,1.72) {WhoClickedIt dataset card};
\node[anchor=west,draw=PhantomInk!35,rounded corners=2pt,fill=PhantomCyan!10,inner xsep=4pt,inner ysep=3pt,font=\scriptsize\ttfamily,text=PhantomSlate] at (-3.2,1.22) \node[anchor=west,draw=PhantomInk!35,rounded corners=2pt,fill=PhantomCyan!10,inner xsep=4pt,inner ysep=3pt,text width=6.15cm,align=left,font=\tiny\ttfamily,text=PhantomSlate] at (-3.2,1.22)
{huggingface.co/datasets/velocitatem/whoclickedit}; {huggingface.co/datasets/velocitatem/whoclickedit};
\node[anchor=west,chip,fill=PhantomCyan!12] at (-3.2,0.65) {\textbf{Rows} 3874}; \node[anchor=west,chip,fill=PhantomIndigo!12] (humanrows) at (-3.2,0.52) {\textbf{Human rows} 798};
\node[anchor=west,chip,fill=PhantomCyan!12] at (-1.70,0.65) {\textbf{Cols} 42};
\node[anchor=west,chip,fill=PhantomCyan!12] at (-0.25,0.65) {\textbf{Sessions} 36};
\node[anchor=west,chip,fill=PhantomIndigo!12] (humanrows) at (-3.2,0.03) {\textbf{Human rows} 798};
\node[anchor=west,chip,fill=PhantomIndigo!12] at ([xshift=0.16cm]humanrows.east) {\textbf{Agent rows} 3076}; \node[anchor=west,chip,fill=PhantomIndigo!12] at ([xshift=0.16cm]humanrows.east) {\textbf{Agent rows} 3076};
\node[body,text=PhantomSlate] at (-3.2,-0.68) \node[body,text=PhantomSlate] at (-3.2,-0.33)
{Flat schema and explicit actor labels simplify session-aware train/test splits.}; {Flat schema and explicit actor labels simplify session-aware train/test splits.};
\node[body,font=\tiny\itshape,text=PhantomSlate!85] at (-3.2,-1.36) \node[body,font=\tiny\itshape,text=PhantomSlate!85] at (-3.2,-1.01)
{Kafka provenance is retained for reproducibility and downstream analysis.}; {Kafka provenance is retained for reproducibility and downstream analysis.};
\end{tikzpicture} \end{tikzpicture}
@@ -241,11 +243,11 @@
\centering \centering
\begin{tikzpicture}[font=\scriptsize\sffamily, \begin{tikzpicture}[font=\scriptsize\sffamily,
stat/.style={draw=PhantomInk,rounded corners=5pt,minimum width=4.95cm,minimum height=1.33cm,align=center}] stat/.style={draw=PhantomInk,rounded corners=5pt,minimum width=4.95cm,minimum height=1.33cm,align=center}]
\node[stat,fill=PhantomInk,text=white] at (0,1.95) \node<1->[stat,fill=PhantomInk,text=white] at (0,1.95)
{\Large\bfseries 13 H / 16 A\\[-0.1em]\footnotesize labeled trajectories in thesis cohort}; {\Large\bfseries 29 Interviews\\[-0.1em]\footnotesize labeled trajectories in observed samples};
\node[stat,fill=PhantomCyan!14,text=PhantomSlate] at (0,0.25) \node<2->[stat,fill=PhantomCyan!14,text=PhantomSlate] at (0,0.25)
{\Large\bfseries 45\% / 55\%\\[-0.1em]\footnotesize human/agent trajectory split}; {\Large\bfseries 45\% / 55\%\\[-0.1em]\footnotesize human/agent trajectory split};
\node[stat,fill=PhantomIndigo!12,text=PhantomSlate] at (0,-1.45) \node<3->[stat,fill=PhantomIndigo!12,text=PhantomSlate] at (0,-1.45)
{\Large\bfseries 2 streams\\[-0.1em]\footnotesize interaction + price-log records}; {\Large\bfseries 2 streams\\[-0.1em]\footnotesize interaction + price-log records};
\end{tikzpicture} \end{tikzpicture}
\end{columns} \end{columns}
@@ -253,7 +255,7 @@
\stagebar{2} \stagebar{2}
\end{frame} \end{frame}
\begin{frame}{Experimental design controls goals, not navigation paths} \begin{frame}{Experimental design controls goals, not instructions}
\begin{columns}[T,onlytextwidth] \begin{columns}[T,onlytextwidth]
\column{0.58\textwidth} \column{0.58\textwidth}
\centering \centering
@@ -335,26 +337,30 @@
\begin{frame}{Two divergence scores become one continuous control signal} \begin{frame}{Two divergence scores become one continuous control signal}
\centering \centering
\[ \[
f(\tau') = P(A\mid\tau') = \sigma\!\left(\frac{\Delta_H-\Delta_A}{T}\right) \only<1>{\Delta_H = D_{KL}(\hat T'\mid\mid\bar T_H),\quad \Delta_A = D_{KL}(\hat T'\mid\mid\bar T_A)}%
\only<2>{g(\tau') = \Delta_H-\Delta_A}%
\only<3->{f(\tau') = P(A\mid\tau') = \sigma\!\left(\frac{g(\tau')}{T}\right)}
\] \]
\vspace{0.4em} \vspace{0.4em}
\begin{tikzpicture}[font=\scriptsize\sffamily] \begin{tikzpicture}[font=\scriptsize\sffamily]
\draw[very thick,PhantomSlate] (-4,0) -- (4,0); \draw<2->[very thick,PhantomSlate] (-4,0) -- (4,0);
\draw[thick,PhantomSlate] (0,-0.16) -- (0,0.16); \draw<2->[thick,PhantomSlate] (0,-0.16) -- (0,0.16);
\node[anchor=north] at (-4,0) {human-like}; \node<2->[anchor=north] at (-4,0) {human-like};
\node[anchor=north] at (4,0) {agent-like}; \node<2->[anchor=north] at (4,0) {agent-like};
\node[anchor=north] at (0,0) {$\Delta_H-\Delta_A=0$}; \node<3->[anchor=north] at (0,0) {$g(\tau')=0$};
\fill[PhantomCyan!75!black] (-2.2,0) circle (2.2pt); \fill<4->[PhantomCyan!75!black] (-2.2,0) circle (2.2pt);
\fill[PhantomIndigo!75!black] (2.2,0) circle (2.2pt); \node<4->[anchor=south,text=PhantomCyan!75!black] at (-2.2,0) {low $f(\tau')$};
\node[anchor=south,text=PhantomCyan!75!black] at (-2.2,0) {low $f(\tau')$}; \fill<5->[PhantomIndigo!75!black] (2.2,0) circle (2.2pt);
\node[anchor=south,text=PhantomIndigo!75!black] at (2.2,0) {high $f(\tau')$}; \node<5->[anchor=south,text=PhantomIndigo!75!black] at (2.2,0) {high $f(\tau')$};
\end{tikzpicture} \end{tikzpicture}
\vspace{0.25em} \vspace{0.25em}
\begin{itemize}[<+->] \begin{itemize}
\item Continuous scoring is used to steer contamination-aware pricing. \item<3-> The signed gap $g(\tau')$ is positive when a session is closer to agent behavior.
\item The design target is guidance, not a hard user-level ban decision. \item<4-> Temperature $T$ calibrates how sharply the score moves away from uncertainty.
\item<6-> Continuous scoring is used to steer contamination-aware pricing.
\item<7-> The design target is guidance, not a hard user-level ban decision.
\end{itemize} \end{itemize}
\stagebar{3} \stagebar{3}
\end{frame} \end{frame}
@@ -391,10 +397,21 @@
\begin{frame}{Reward composition penalizes leakage while guarding user experience} \begin{frame}{Reward composition penalizes leakage while guarding user experience}
\[ \[
r_t = \only<1>{%
{\color{PhantomInk}\underline{R(p_t,\hat Q_t)}} r_t =
- {\color{PhantomCyan!95!black}\underline{\lambda\,f(\tau'_t)\,c_{\text{info}}}} {\color{PhantomInk}\underline{R(p_t,\hat Q_t)}}%
- {\color{PhantomIndigo!95!black}\underline{\eta_{\text{ux}}\,UX(\tau'_t,p_t)}} }%
\only<2>{%
r_t =
{\color{PhantomInk}\underline{R(p_t,\hat Q_t)}}
- {\color{PhantomCyan!95!black}\underline{\lambda\,f(\tau'_t)\,c_{\text{info}}}}%
}%
\only<3->{%
r_t =
{\color{PhantomInk}\underline{R(p_t,\hat Q_t)}}
- {\color{PhantomCyan!95!black}\underline{\lambda\,f(\tau'_t)\,c_{\text{info}}}}
- {\color{PhantomIndigo!95!black}\underline{\eta_{\text{ux}}\,UX(\tau'_t,p_t)}}%
}%
\] \]
\vspace{0.45em} \vspace{0.45em}
@@ -415,38 +432,42 @@
\end{tikzpicture} \end{tikzpicture}
\column{0.32\textwidth} \column{0.32\textwidth}
\centering \centering
\begin{tikzpicture}[font=\scriptsize\sffamily] \uncover<2->{%
\node[ \begin{tikzpicture}[font=\scriptsize\sffamily]
draw=PhantomInk, \node[
rounded corners=4pt, draw=PhantomInk,
fill=PhantomCyan!16, rounded corners=4pt,
minimum width=0.98\linewidth, fill=PhantomCyan!16,
text width=0.88\linewidth, minimum width=0.98\linewidth,
minimum height=1.28cm, text width=0.88\linewidth,
align=center, minimum height=1.28cm,
text=PhantomCyan!95!black align=center,
] {\textbf{Leakage term}\\[-0.08em]scales with agent-likelihood score}; text=PhantomCyan!95!black
\end{tikzpicture} ] {\textbf{Leakage term}\\[-0.08em]scales with agent-likelihood score};
\end{tikzpicture}%
}
\column{0.32\textwidth} \column{0.32\textwidth}
\centering \centering
\begin{tikzpicture}[font=\scriptsize\sffamily] \uncover<3->{%
\node[ \begin{tikzpicture}[font=\scriptsize\sffamily]
draw=PhantomInk, \node[
rounded corners=4pt, draw=PhantomInk,
fill=PhantomIndigo!16, rounded corners=4pt,
minimum width=0.98\linewidth, fill=PhantomIndigo!16,
text width=0.88\linewidth, minimum width=0.98\linewidth,
minimum height=1.28cm, text width=0.88\linewidth,
align=center, minimum height=1.28cm,
text=PhantomIndigo!95!black align=center,
] {\textbf{UX term}\\[-0.08em]discourages unstable pricing behavior}; text=PhantomIndigo!95!black
\end{tikzpicture} ] {\textbf{UX term}\\[-0.08em]discourages unstable pricing behavior};
\end{tikzpicture}%
}
\end{columns} \end{columns}
\vspace{0.25em} \vspace{0.25em}
\begin{itemize}[<+->] \begin{itemize}
\item Baseline experiments use a query-tax leakage surrogate for tractability. \item<2-> Baseline experiments use a query-tax leakage surrogate for tractability.
\item Supra-competitive anchor penalties are tracked as an additional safety rail. \item<3-> Supra-competitive anchor penalties are tracked as an additional safety rail.
\end{itemize} \end{itemize}
\stagebar{4} \stagebar{4}
\end{frame} \end{frame}
@@ -532,6 +553,7 @@
\begin{itemize}[<+->]\setlength{\itemsep}{0.7em} \begin{itemize}[<+->]\setlength{\itemsep}{0.7em}
\item \textbf{Financially:} untreated reconnaissance behaves like an information leak and can compress sustainable margins. \item \textbf{Financially:} untreated reconnaissance behaves like an information leak and can compress sustainable margins.
\item \textbf{Operationally:} behavior-only session scoring can be wired into pricing without relying on device fingerprinting. \item \textbf{Operationally:} behavior-only session scoring can be wired into pricing without relying on device fingerprinting.
\item \textbf{Market exposure:} channels where dynamic pricing has been a secondary layer (aggregators, comparison funnels, promo traffic) are likely to be disrupted first.
\item \textbf{Strategically:} robust pricing should be calibrated by regime; there is no single penalty that wins everywhere. \item \textbf{Strategically:} robust pricing should be calibrated by regime; there is no single penalty that wins everywhere.
\item \textbf{Before deployment:} larger human baselines, governance review, and legal safeguards are mandatory. \item \textbf{Before deployment:} larger human baselines, governance review, and legal safeguards are mandatory.
\end{itemize} \end{itemize}