Conversation
final_state accumulates {node_name: state} chunks, so
final_state.get('final_trade_decision') could never hit - every run
displayed 'No Decision' regardless of model or market view. Parse the
5-tier rating from the Portfolio Manager's judge_decision text via the
shared deterministic parse_rating; also fix the settle-time report copy
that used the same wrong shape.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The GUI streams graph.graph.stream() directly, bypassing propagate() - so store_decision never ran (trading_memory.md never created), agents never received past_context, and pending outcomes were never resolved. All three now happen in the GUI run path, failure-isolated so memory problems can never block an analysis. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The GUI (and library callers) allow any analyst subset, but the bull/ bear researchers, all three risk debators, and the final-state report extraction hard-read every report key - selecting fewer than 4 analysts raised KeyError mid-debate. All report reads now .get() with an explicit '(not produced this run)' marker. Reproduce (before): run with analysts=['market'] -> KeyError: 'sentiment_report' in bull_researcher. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
graph.stream()yields chunks keyed by node name, sofinal_state.get("final_trade_decision")can never hit — for any model or market view. The verdict is now parsed from the Portfolio Manager'sjudge_decisiontext via the shared deterministicparse_rating. The settle-time report copy used the same wrong shape and is fixed too.propagate()— sostore_decisionnever ran (notrading_memory.md),past_contextwas never injected (agents never saw prior decisions), and pending outcomes were never resolved. All three now happen in the GUI run path, failure-isolated so memory issues can't block an analysis.analysts=["market"]→KeyError: 'sentiment_report'. All report reads now.get()with an explicit "(not produced this run)" marker.Full test suite green on each commit.