Enforces max_cost_usd as a hard pre-flight gate before every node
execution in both _execute_from_node and _stream_from_node (all three
branches: terminal AGENT, intermediate AGENT, non-AGENT).
Inside _execute_tool_loop, each main-agent ainvoke round (main,
synthesis, synthesis_followup, stuck_model, stuck_model_followup) is
gated by _check_budget_before_invoke. Pruning passes are silently
skipped when the budget is exhausted via _should_skip_pruning.
current_accumulated_cost and current_max_cost_usd ContextVars carry
the per-node budget from PureLangGraph into LLMAgent, set before
node.execute() and reset in finally blocks.
BDD scenarios in features/execution_limits.feature.
ISSUES CLOSED: #76