Replace direct state assignment in LangGraph.execute() with
state_manager.replace_state(), which enforces the is_closed guard and
notifies state stream subscribers through the proper StateManager API,
preventing silent state corruption after StateManager.close() is called.
replace_state() is the semantically correct method for this use case:
it atomically replaces the entire state for a fresh execution context,
enforces the is_closed guard, and notifies subscribers. update_state()
is designed for incremental updates with execution_count tracking, not
for resetting state to a fresh execution context.
Closes#9994
Add is_closed guard to StateManager.replace_state() so that LangGraph.execute() — which delegates to replace_state() — raises RuntimeError when the StateManager has been closed. This prevents silent state corruption after StateManager.close() is called.
Add Behave BDD scenarios verifying the guard and the happy path.
ISSUES CLOSED: #9994