Files

1 line
1.8 KiB
JSON

{"root_cause":"The critic target probably bootstraps through a true terminal transition, likely because the done/terminated mask is inverted, shifted, or uses truncation semantics. This leaks the reset episode's value into the preceding episode.","confidence":0.9,"evidence":["Observation: The one-step reward probe passes.","Observation: The two-step probe fails specifically when its final transition is a true terminal state.","Observation: Learned values include reward available only after reset.","Observation: Returns are correct on continuing episodes.","Inference: The failure is localized to terminal-boundary bootstrapping rather than reward accumulation in general.","Inference: Post-reset reward appearing before termination is the expected signature of using gamma * V(next_state) when that term should be zero."],"competing_hypotheses":["The terminal flag is attached to the wrong timestep, causing an off-by-one bootstrap mask.","The implementation treats true termination as truncation and intentionally bootstraps both.","The reset observation overwrites the terminal next observation before target computation."],"first_action":"Add a deterministic target unit test with reward r=1, terminated=true, truncated=false, gamma=0.9, and V(next_state)=100. Assert that the target is exactly 1, then repeat with terminated=false and assert 91. This directly distinguishes terminal masking from general return errors.","prediction_if_true":"The terminal case produces 91, or otherwise changes with V(next_state), proving that the bootstrap term crosses the terminal boundary.","prediction_if_false":"The terminal target remains exactly 1 for arbitrary next-state values, so inspect timestep alignment and whether reset observations overwrite terminal observations before returns are constructed.","immediate_changes":[],"fallback_logic":[]}