diff --git a/ui/src/components/IssueRecoveryActionCard.test.tsx b/ui/src/components/IssueRecoveryActionCard.test.tsx
index 317f0cce500..a02dcf679fa 100644
--- a/ui/src/components/IssueRecoveryActionCard.test.tsx
+++ b/ui/src/components/IssueRecoveryActionCard.test.tsx
@@ -180,6 +180,18 @@ describe("IssueRecoveryActionCard", () => {
);
});
+ it("explains exhausted feedback delivery in plain language", () => {
+ const node = render(
+ ,
+ );
+ expect(node.textContent).toContain("Feedback Not Handled");
+ expect(node.textContent).toContain(
+ "Paperclip could not deliver the latest human feedback to this task's agent. Automatic replay is exhausted; handle the outstanding feedback or record what is blocking it.",
+ );
+ });
+
it("falls back to an em dash when no evidence summary is available", () => {
const node = render();
expect(node.textContent).toContain("—");
diff --git a/ui/src/components/IssueRecoveryActionCard.tsx b/ui/src/components/IssueRecoveryActionCard.tsx
index 6ce46fc2a75..3bb03adbb3e 100644
--- a/ui/src/components/IssueRecoveryActionCard.tsx
+++ b/ui/src/components/IssueRecoveryActionCard.tsx
@@ -115,6 +115,7 @@ export interface IssueRecoveryActionCardProps {
}
const KIND_LABEL: Record = {
+ feedback_delivery: "Feedback Not Handled",
missing_disposition: "Missing Disposition",
stranded_assigned_issue: "Stranded Task",
workspace_validation: "Workspace Validation",
@@ -124,6 +125,8 @@ const KIND_LABEL: Record = {
};
const KIND_HEADLINE: Record = {
+ feedback_delivery:
+ "Paperclip could not deliver the latest human feedback to this task's agent. Automatic replay is exhausted; handle the outstanding feedback or record what is blocking it.",
missing_disposition:
"This task's run finished, but no next step was chosen. Choose what happens next — try the task again, mark it done, or send it for review.",
stranded_assigned_issue: