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 <github@multica.ai>
This commit is contained in:
J
2026-07-15 04:02:01 +08:00
parent a6c5042dfd
commit ccdca59ef9
2 changed files with 17 additions and 14 deletions

View File

@@ -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,

View File

@@ -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 <member>" 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 <name>" 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 <name>" 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;