Skip to content

Fix agent: distinguish 'cannot modify protected path' from 'disagree with finding' #924

@fullsend-ai-retro

Description

@fullsend-ai-retro

What happened

On PR #742, the review agent requested changes on 5 findings, all in .github/workflows/fullsend.yaml. The fix agent posted a comment recording all 5 as 'disagreements' with remediation guidance. But the fix agent did not actually disagree with the findings — it agreed they were valid but could not modify the file because .github/workflows/ is a protected path. The word 'disagreed' is misleading and could cause a human reviewer to dismiss the findings as false positives rather than understanding they need manual attention.

What could go better

The fix agent's output schema and reporting should distinguish between three dispositions: (1) fixed, (2) cannot fix (permission/protected path), (3) disagree (finding is incorrect). Currently dispositions 2 and 3 are conflated. This matters because 'cannot fix' findings should be escalated to a human for action, while 'disagree' findings should be evaluated on their merits. Confidence: high — the fix agent's own comment text shows it understood the distinction ('protected CI configuration path') but had no structured way to express it.

Proposed change

Update the fix agent definition (internal/scaffold/fullsend-repo/agents/fix.md) to add a cannot-fix disposition alongside fixed and disagreed in the fix-result.json schema. The cannot-fix disposition should include a reason field (e.g., 'protected-path', 'out-of-scope', 'requires-human-judgment') and should be surfaced differently in the post-fix script's comment — clearly labeled as 'requires human action' rather than 'disagreed'. Also update the validate-output-schema.sh to accept the new disposition.

Validation criteria

The next time the fix agent encounters a finding in a protected path, its output should use the cannot-fix disposition with a clear 'requires human action' label in the posted comment, not 'disagreed'. Verify by inspecting the fix agent's comment on a PR where review findings target protected paths.


Generated by retro agent from #742

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions