dynamic caching — future work
rollout trajectories — some share a common prefix
prompt
starting state
tool_call: search()
same across 4 rollouts
shared prefix — can be cached
tool_call: read(f1)
same — rollouts A, B
tool_call: read(f2)
same — rollouts C, D
sub-prefix — cached
sub-prefix — cached
rollout A
final answer
rollout B
final answer
rollout C
final answer
rollout D
final answer
search() is shared across all 4 rollouts — read(f1) across A, B — read(f2) across C, D — dynamic caching saves compute at every branching level, not just the root