fix(gateway): evidence/QA/doc paths populate files_changed from git

Bug:
    ContentActions.evidence() hard-coded files_changed=[] and diffed
    against HEAD~1 instead of the branch's parent. QA's _build_qa_claim_
    evidence (and doc/_impl mirrors) sourced files_changed from
    work_session.files_modified, which the gateway commit() never
    populates (no add_files_modified plumbing). Result: QA / docs / PM
    reviewers saw an empty change list on real PRs and only the latest
    commit's delta — flagged in smoke-9 when PR #20 showed the README
    change on GitHub but evidence() reported empty.

Fix:
    Added GitService.list_changed_files (git diff --name-only against
    parent branch). evidence(), _build_qa_claim_evidence,
    _claim_doc_evidence, and _build_i_am_done_ok all source files_changed
    from this — git is the authoritative source. evidence() also drops
    the HEAD~1 base so the diff is the full PR.

    Wired EvidenceRepo into ContentActionsDeps so evidence() returns
    journal_highlights too, matching the QA/doc shape.
This commit is contained in:
Renn F
2026-05-15 06:31:38 +02:00
parent d5ff8c7b13
commit 4fdde2b082
13 changed files with 294 additions and 18 deletions
@@ -44,6 +44,11 @@ def _make_deps(**overrides: AsyncMock) -> ContentActionsDeps:
journal = overrides.get("journal", AsyncMock())
workspace = overrides.get("workspace", AsyncMock())
notifications = overrides.get("notifications", AsyncMock())
if "evidence_repo" in overrides:
evidence_repo = overrides["evidence_repo"]
else:
evidence_repo = AsyncMock()
evidence_repo.journal_highlights_for_task.return_value = []
return ContentActionsDeps(
task=task,
git=git,
@@ -52,6 +57,7 @@ def _make_deps(**overrides: AsyncMock) -> ContentActionsDeps:
journal=journal,
workspace=workspace,
notifications=notifications,
evidence_repo=evidence_repo,
)