From ccdca59ef9312f140cefca2a00d85ffce4ba7a75 Mon Sep 17 00:00:00 2001 From: J Date: Wed, 15 Jul 2026 04:02:01 +0800 Subject: [PATCH] docs(views): correct backfill wording in AttributionBadge (nit MUL-4768) Review nit: describing backfill as "confident / same waterfall resolved" overstated the backend contract, which defines backfill as a historical, non-realtime, non-compliance-grade source. Reword the docblock, the tone rationale, and the test note to the accurate framing: backfill does not mean the displayed name is wrong (so no warning tone), but its historical origin is still preserved in the tooltip and the raw source field. Comments only; no behavior change. Co-authored-by: multica-agent --- .../components/attribution-badge.test.tsx | 6 ++--- .../issues/components/attribution-badge.tsx | 25 +++++++++++-------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/packages/views/issues/components/attribution-badge.test.tsx b/packages/views/issues/components/attribution-badge.test.tsx index 4221592b57..c63de389f4 100644 --- a/packages/views/issues/components/attribution-badge.test.tsx +++ b/packages/views/issues/components/attribution-badge.test.tsx @@ -52,9 +52,9 @@ describe("AttributionBadge", () => { }); it("shows a backfilled attribution in the normal tone, not a warning (MUL-4768)", () => { - // Backfill is non-precise for the coverage metric, but it names a human the - // same waterfall resolved — just after the fact — so it must read like any - // other confident attribution rather than a yellow warning. + // Backfill is non-precise for the coverage metric — a historical, after-the- + // fact record — but that does not make the displayed name wrong, so it must + // read like any other resolved attribution rather than a yellow warning. const attribution: TaskAttribution = { source: "backfill", precise: false, diff --git a/packages/views/issues/components/attribution-badge.tsx b/packages/views/issues/components/attribution-badge.tsx index d84f18d6da..f16953ad4d 100644 --- a/packages/views/issues/components/attribution-badge.tsx +++ b/packages/views/issues/components/attribution-badge.tsx @@ -24,10 +24,12 @@ function initialsOf(name: string): string { /** * AttributionBadge renders who an agent run is accountable to (MUL-4302 §9): * the "on behalf of " provenance, with the resolution source in a - * tooltip and a cautionary tone ONLY when the named human is a fallback guess - * (owner_fallback) rather than a confidently resolved one. A backfilled - * attribution is confident (resolved after the fact by the same waterfall), so - * it reads like any other attribution instead of a warning (MUL-4768). + * tooltip and a cautionary tone ONLY when the named human may not be the real + * responsible person — a fallback guess (owner_fallback). A backfilled + * attribution is a historical, after-the-fact record (non-realtime, not + * compliance-grade), but that does not make the displayed name wrong, so it + * earns no warning tone; its historical origin still shows in the tooltip and + * the raw `source` field (MUL-4768). * * Two shapes, both silent when no responsible member resolved (MUL-4765): * - `variant="badge"` (default): the full "on behalf of " chip. Renders @@ -90,13 +92,14 @@ export function AttributionBadge({ // ops metric, not a reader-facing signal. The only thing a viewer of "on // behalf of " cares about is whether that named human might NOT actually // be who's responsible — true only for a fallback guess (owner_fallback: - // nothing resolved, so we defaulted to the agent owner). A backfilled - // attribution names a human the same waterfall resolved, just after the fact, - // so it is confident and must read like any other attribution, never as a - // warning (MUL-4768). The cautionary tone therefore fires for any non-precise - // source EXCEPT backfill; keeping the `precise === false` base means a future - // unknown degraded source still warns (fail-safe) instead of silently reading - // as confident. + // nothing resolved, so we defaulted to the agent owner). Backfill is a + // historical, after-the-fact record (non-realtime, not compliance-grade), but + // that does not make the displayed name wrong — so it warrants no warning tone; + // its historical origin stays visible in the tooltip and the raw `source` field + // (MUL-4768). The cautionary tone therefore fires for any non-precise source + // EXCEPT backfill; keeping the `precise === false` base means a future unknown + // degraded source still warns (fail-safe) instead of silently reading as + // confident. const uncertain = attribution.precise === false && attribution.source !== "backfill"; const initiator = attribution.initiator;