diff --git a/docs/dashboard-guide.md b/docs/dashboard-guide.md
index 1ec8873b89..81b31dff20 100644
--- a/docs/dashboard-guide.md
+++ b/docs/dashboard-guide.md
@@ -204,7 +204,7 @@ Features:
- GitLab tracking badges on task cards for linked GitLab project issues, group issues, and merge requests; stale GitLab metadata uses a warning-colored badge while GitHub badges remain unchanged.
- GitHub provenance marker on task cards imported from GitHub (`sourceType: github_import`), shown in the footer with other external-source metadata
- Task card header meta badges group priority and fast mode in the header; priority badges include the shared urgency glyph/color language (low blue/info, high amber/warning, urgent red/error) while agent-created provenance renders in a dedicated bottom-left row ahead of workflow identity so the ID/status/actions header does not wrap on narrow cards. Agent labels prefer `sourceMetadata.agentName` over raw agent IDs.
-- **Settings → Appearance → Show cost badges on task cards** is default off. When enabled, board cards with recorded positive token usage show a compact derived-cost badge beside the execution-time badge; unpriced models display `—`, and cards with no usage render no badge shell.
+- **Settings → Appearance → Show cost badges on task cards** is default off. When enabled, board cards with recorded positive token usage show a compact derived-cost badge with the card's other footer/meta chips; unpriced models display `—`, and cards with no usage render no badge shell.
diff --git a/packages/dashboard/app/components/TaskCard.tsx b/packages/dashboard/app/components/TaskCard.tsx
index 608a567883..1b19385ad1 100644
--- a/packages/dashboard/app/components/TaskCard.tsx
+++ b/packages/dashboard/app/components/TaskCard.tsx
@@ -2763,6 +2763,133 @@ function TaskCardComponent({
&& filesChangedButton == null
&& showTrackingIndicator
&& Boolean(githubTrackedIssue);
+ const footerHasLeadingContent = Boolean(filesChangedButton)
+ || (isGitHubImportedTask && !showLinkedIssueChipForImport);
+ const footerRightHasContent = Boolean(cardCostLabel
+ || timeIndicator
+ || showNearDuplicateChip
+ || showUndoOfChip
+ || ((showTrackingIndicator || showLinkedIssueChipForImport) && githubTrackedIssue)
+ || (task.retrySummary?.total ?? 0) > 0);
+ /*
+ * FNXC:TaskCardCostBadge 2026-07-12-00:00:
+ * The footer-right badge cluster (cost, timing, retry, duplicate, and tracking chips) should render inline at the bottom-right of `.card-meta` when the footer has no leading content. Cards with files-changed or GitHub source-provenance leading content keep the existing `.card-footer-row` layout so in-progress and tracked-card footer behavior remains stable.
+ */
+ const placeFooterRightInMeta = footerRightHasContent
+ && !footerHasLeadingContent
+ && !chipFarRight
+ && metaRowVisible;
+ const footerRightCluster = footerRightHasContent ? (
+
+ {showUndoOfChip && (
+
+ {t("tasks.undoOf", "Undo of {{id}}", { id: String(revertOfId) })}
+
+ )}
+ {showNearDuplicateChip && (
+ <>
+
+ {t("tasks.duplicateOf", "Duplicate of {{id}}", { id: String(task.sourceMetadata?.nearDuplicateOf) })}
+
+ {onUpdateTask && (
+
+ )}
+ >
+ )}
+ {chipFarRight && (showTrackingIndicator || showLinkedIssueChipForImport) && githubTrackedIssue && (
+ e.stopPropagation()}
+ >
+
+ {`#${githubTrackedIssue.number}`}
+
+ )}
+ {(task.retrySummary?.total ?? 0) > 0 && (
+ = retryWarningThreshold) ? " card-retry-badge--error" : " card-retry-badge--warning"}`}
+ onClick={handleOpenRetries}
+ role="button"
+ tabIndex={0}
+ onKeyDown={(event) => {
+ if (event.key === "Enter" || event.key === " ") {
+ event.preventDefault();
+ event.stopPropagation();
+ onOpenDetailWithTab?.(task, "retries");
+ }
+ }}
+ aria-label={t("tasks.retriesAriaLabel", "{{count}} retries", { count: task.retrySummary?.total ?? 0 })}
+ title={t("tasks.openRetryBreakdown", "Open retry breakdown")}
+ >
+
+ {task.retrySummary?.total ?? 0}
+
+ )}
+ {(!chipFarRight || !((showTrackingIndicator || showLinkedIssueChipForImport) && githubTrackedIssue))
+ && (showTrackingIndicator || showLinkedIssueChipForImport) && githubTrackedIssue && (
+ e.stopPropagation()}
+ >
+
+ {`#${githubTrackedIssue.number}`}
+
+ )}
+ {/*
+ FNXC:TaskCardTimingBadge 2026-06-13-17:20:
+ The execution-time badge belongs in the bottom-right footer cluster and must match sibling footer badge sizing while preserving its existing label, title, aria text, and live-update data.
+ */}
+ {cardCostLabel && (
+
+ {/*
+ FNXC:TaskCardCostBadge 2026-07-12-00:00:
+ The cost chip must show only the formatted amount because formatCost already includes the currency symbol; do not render a leading dollar-sign icon that duplicates the label.
+ */}
+ {cardCostLabel}
+
+ )}
+ {timeIndicator && (
+
+
+ {timeIndicator.label}
+
+ )}
+