feat: review chat — ask the run why it concluded a finding
Docker Release / build-and-push (push) Successful in 1m45s
Docker Release / release (push) Skipped

Read-only Q&A on the review screen, per finding and per run, answered from
the job's own artifacts (evidence, cluster, extraction, verification, Brain
merge, sheet index, cover reconciliation, job.log). It never mutates findings,
decisions, or the report.

Turns are logged job-locally (review/chat_log.jsonl, transcript at
/jobs/{id}/review-chat/log) and to a cross-job feedback store
(REVIEW_FEEDBACK_DIR), which now also receives review decisions with their
category/severity corrections.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0115gGtrSxXE9DKvS9XPFSoT
This commit is contained in:
woogiandClaude Opus 5 committed 2026-09-14 10:35:18 -05:00
1 parent 46db871152
commit 23e19f53b2
15 files changed
+1598 -9

No files matched your search

+15
View File
@@ -0,0 +1,15 @@
"""Shared test fixtures."""
import pytest
@pytest.fixture(autouse=True)
def isolated_feedback_store(tmp_path, monkeypatch):
"""Keep the cross-job feedback store out of the real outputs directory.
Saving a review decision or asking a chat question appends to
config.REVIEW_FEEDBACK_DIR, which is process-wide rather than job-local.
Without this, running the suite would accumulate junk in backend/outputs.
"""
monkeypatch.setattr("backend.config.REVIEW_FEEDBACK_DIR",
str(tmp_path / "_feedback"))