>_
.issue.db
/highway
Dashboard
Issues
Memory
Lessons
Audit Log
New Issue
Edit Issue #846
Update issue details
Title *
Description
EARS SPEC: - While executing in replay/simulation mode, when a workflow variable was set by a tool via ctx.set_variable during the original run, the Highway replay service shall restore that variable from the recorded run so downstream conditions and interpolations resolve as they did live. - If a recorded variable value cannot be restored, then the Highway replay service shall say so per-variable in the report rather than silently leaving it unset. - The Highway replay documentation and ReplayContext docstring shall describe the ACTUAL behaviour (recorded results are returned, tools are not executed); the current docstring still claims "NEW: Actually executes functions", which is false since #833. CONTEXT (found while verifying #845 on 2026-08-03): - engine/interpreters/operators/task.py:70 short-circuits on ctx.is_replay and returns _replay_task_result() WITHOUT calling the tool. Correct for side-effect safety (#833), but it also means a tool that mutates workflow state via ctx.set_variable has no effect in replay. - Consequence: any while loop whose exit condition reads such a variable can NEVER go false in replay. Verified on two unrelated workflows: agent_scheduled ({{agent_done}} == 0, tool tools.agent.run_goal) and while_loop_checkpoint_workflow ({{counter}} < 3, tool tools.simple_counter.increment_counter - which does ctx.set_variable("counter", n) and has no result_key). - #845 makes this safe and TRUTHFUL (bounded by the historical iteration count, reported as a while_loop_truncated divergence with the unresolved variables named) instead of a 10000-iteration RuntimeError. It does not make the replay faithful. - The divergence signal is discriminating, not constant - verified green on run 10aa26d5-6600-475e-80eb-ca9983cfe048 (while loop with condition "1 == 2", exits on its condition): status=success, divergence_count=0. - Net effect today: simulation of any workflow with a state-driven while loop reports "diverged". That is accurate but low-signal until variable state is restored.
Priority
Low
Medium
High
Critical
Status
Open
In Progress
Closed
Won't Do
Due Date (YYYY-MM-DD)
Tags (comma separated)
Related Issues (IDs)
Enter IDs of issues related to this one. They will be linked as 'related'.
Update Issue
Cancel