Claude/sleepy brahmagupta vtvqva#23
Merged
Merged
Conversation
After all testers complete, an optional LLM call (opt-in via --synthesize) reads the full deduplicated findings list and produces a SynthesisResult: executive summary, prioritised recommendations, root-cause clusters, and false-positive candidates. The synthesis is appended to Markdown and JSON reports and stored on TestSession.synthesis for downstream consumers. - qa_agent/synthesizer.py: new module; serialize session → LLM → parse JSON - qa_agent/models.py: RootCauseCluster + SynthesisResult dataclasses; TestSession.synthesis field; to_dict() includes synthesis - qa_agent/config.py: TestConfig.synthesize_results flag (default False) - qa_agent/agent.py: _synthesize_results() called post-run when flag set - qa_agent/reporters/markdown.py: ## AI Analysis section when synthesis present - qa_agent/reporters/json_reporter.py: synthesis key in JSON output - qa_agent/cli.py: --synthesize flag - tests/test_synthesizer.py: 35 unit tests covering serialization, parsing, LLM error handling, and reporter integration https://claude.ai/code/session_019zZ6wHiVa4mYMLi6e8KJcE
Option A implementation: Complete terminology change for clarity. Breaking changes: - CLI: --synthesize → --summarize - Config: synthesize_results → generate_summary - Models: SynthesisResult → SummaryResult - Session field: synthesis → summary - JSON output: 'synthesis' → 'ai_summary' Files renamed: - qa_agent/synthesizer.py → qa_agent/summarizer.py - tests/test_synthesizer.py → tests/test_summarizer.py All 35 tests passing. Co-authored-by: openhands <openhands@all-hands.dev>
- Add type: ignore[arg-type] for _make_summary helper to handle **kwargs unpacking - Change _report_data return type from dict to dict[str, Any] - Add cast() for json.loads() return value to satisfy mypy type checking - Import typing.Any and typing.cast for proper type annotations All 4 mypy errors resolved. Tests still pass (35/35). Co-authored-by: openhands <openhands@all-hands.dev>
Adds Optional/dict type annotations where mypy's stricter untyped-def checking surfaced real gaps, plus assert guards in agent.py matching its existing Optional-narrowing pattern. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
open() without encoding= falls back to the platform default (cp1252 on Windows), which chokes on the UTF-8 em-dashes in generated markdown/JSON reports. Pass encoding="utf-8" explicitly. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
open()/read_text() without encoding= falls back to the platform default (cp1252 on Windows), which breaks on non-ASCII bytes. Fixes the auth-file and cookies-file readers in cli.py (real-world JSON configs may contain non-ASCII), and the server.py source read in test_packaging.py (the file contains em dashes/bullets). Co-Authored-By: Claude Sonnet 4.6 <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.
No description provided.