From 7517f2eddf9a3ee8044b1911384fe79411f1447a Mon Sep 17 00:00:00 2001 From: gsxdsm Date: Fri, 17 Jul 2026 14:35:07 -0700 Subject: [PATCH] FN-8239: align task card oversight icon state Keep task-card overseer indicators aligned with resolved oversight settings. - Gate transient Eye badges on the resolved effective oversight level. - Suppress stale snapshots and empty header wrappers while inherited workflow settings load. - Add regression coverage and document the consistent off-state behavior. Files changed: .changeset/fn-8239-oversight-icon-consistency.md | 7 ++++ docs/dashboard-guide.md | 3 +- packages/dashboard/app/components/TaskCard.tsx | 29 ++++++++++++---- .../__tests__/TaskCard.oversight.test.tsx | 40 ++++++++++++++++++++++ .../app/components/__tests__/TaskCard.test.tsx | 23 +++++++++++++ 5 files changed, 94 insertions(+), 8 deletions(-) Fusion-Task-Id: FN-8239 Fusion-Task-Lineage: 2857358c-7626-4b04-b1b5-fa51c3a71418 Co-authored-by: Fusion (runfusion.ai) --- .../fn-8239-oversight-icon-consistency.md | 7 ++++ docs/dashboard-guide.md | 3 +- .../dashboard/app/components/TaskCard.tsx | 29 ++++++++++---- .../__tests__/TaskCard.oversight.test.tsx | 40 +++++++++++++++++++ .../components/__tests__/TaskCard.test.tsx | 23 +++++++++++ 5 files changed, 94 insertions(+), 8 deletions(-) create mode 100644 .changeset/fn-8239-oversight-icon-consistency.md diff --git a/.changeset/fn-8239-oversight-icon-consistency.md b/.changeset/fn-8239-oversight-icon-consistency.md new file mode 100644 index 0000000000..9f8a72bbb2 --- /dev/null +++ b/.changeset/fn-8239-oversight-icon-consistency.md @@ -0,0 +1,7 @@ +--- +"@runfusion/fusion": patch +--- + +summary: The board card overseer eye icon now hides when a task's oversight is off, matching the task detail. +category: fix +dev: TaskCard gates the planner-overseer Eye badge AND the card-header-badges wrapper predicate on the freshly-resolved effectiveOversightLevel (not just the transient snapshot's stale oversightLevel) via a shared showPlannerOverseerStateBadge boolean, so a stale non-off snapshot can no longer show an oversight icon or leave an empty header-badge shell while the Task Detail reads off. diff --git a/docs/dashboard-guide.md b/docs/dashboard-guide.md index 81de124e65..521961df4e 100644 --- a/docs/dashboard-guide.md +++ b/docs/dashboard-guide.md @@ -234,9 +234,10 @@ Features: - Task cards show a read-only **oversight-level badge** (`Observe`, `Steer`, or `Auto-recovery`) in the meta-badges cluster reflecting the effective planner-oversight level, but only when oversight is *meaningfully configured* — an explicit per-task override (including an explicit `autonomous` override), or a resolved workflow/effective tier of `observe`/`steer` (`data-testid="card-oversight-badge"`). A card that merely **inherits** the schema default `autonomous` tier (no per-task override, no non-default workflow tier) renders no badge and no empty `.card-meta-badges` shell. The badge is also absent when the effective level is explicitly "off", **and** while an inherited (no per-task-override) workflow tier is still being resolved (in flight or not yet fetched) — it never shows a guessed default during that window. + - Completed and archived task cards show a compact **Reverted** footer chip after a clean or already-reverted git outcome has persisted the source task's revert marker; conflicts, AI undo tasks, and revert PRs awaiting merge do not show it. -- Task cards show a compact **planner-overseer eye badge** (`data-testid="planner-overseer-state-badge"`) when the engine reports a non-idle transient `plannerOverseerState`. The eye badge is an active-overseer state marker, not a human-read/view indicator: `watching` means passive monitoring, `steering`/`recovering` mean active guidance or recovery is underway, and `awaiting-confirmation` means a human decision is required before the overseer can continue. Hover exposes the composed tooltip with the overseer's reason, watched stage/signal, and pending-confirmation note when present. +- Task cards show a compact **planner-overseer eye badge** (`data-testid="planner-overseer-state-badge"`) only when the engine reports a non-idle, non-off transient `plannerOverseerState` **and** the task's freshly-resolved effective oversight level is not `off`. When effective oversight is off, the eye badge and otherwise-empty `.card-header-badges` wrapper are both absent, matching the Task Detail `EyeOff` state. The eye badge is an active-overseer state marker, not a human-read/view indicator: `watching` means passive monitoring, `steering`/`recovering` mean active guidance or recovery is underway, and `awaiting-confirmation` means a human decision is required before the overseer can continue. Hover exposes the composed tooltip with the overseer's reason, watched stage/signal, and pending-confirmation note when present.