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
@@ -51,6 +51,21 @@ AGENT_REVIEW_AUDIT_SAMPLE=5
# Allow future cross-job review-feedback aggregation to include source_text/images/comments
REVIEW_AGGREGATE_INCLUDE_TEXT=false
# Review chat: read-only Q&A about findings and coverage on the review screen.
# It explains what the run did from the job's artifacts; it never changes a
# finding, a decision, or the report.
ENABLE_REVIEW_CHAT=true
# Model for chat answers (blank inherits TEXT_MODEL)
REVIEW_CHAT_MODEL=
REVIEW_CHAT_MAX_TOKENS=4096
# Prior turns replayed into a thread's prompt
REVIEW_CHAT_HISTORY_TURNS=6
# Max job.log lines searched into the chat's context bundle
REVIEW_CHAT_LOG_LINES=40
REVIEW_CHAT_MAX_QUESTION_CHARS=2000
# Cross-job store for review decisions + chat turns (blank = backend/outputs/_feedback)
REVIEW_FEEDBACK_DIR=
# Pipeline tuning
PDF_DPI=100
MAX_PAGES=60