fix(agent-team): don't render build/verify/dispatch as 'inert'
The backend still flags the P3 nodes (build/verify/dispatch) gated:true, but in the live R720 deployment they are wired and active — so that flag is a stale 'P3 opt-in' hint, not a real 'inactive' signal. Stop deriving the dimmed/'inert' treatment from stage.gated / meta.gated in both the Board columns and the DAG nodes; activity is conveyed by live task counts + status colors. Human gates are unaffected (still keyed off topology kind 'gate'). Typecheck + 36 tests + build all green.
This commit is contained in:
parent
3f4b95579e
commit
6ad164a632
2 changed files with 5 additions and 17 deletions
|
|
@ -223,14 +223,16 @@ interface ColumnProps {
|
||||||
|
|
||||||
function KanbanColumn({ stage, topology, selectedId, onSelect }: ColumnProps) {
|
function KanbanColumn({ stage, topology, selectedId, onSelect }: ColumnProps) {
|
||||||
const gate = isGate(stage, topology);
|
const gate = isGate(stage, topology);
|
||||||
// `gated` here means INERT (disabled P3 node), not a human gate — dim it.
|
|
||||||
const inert = stage.gated;
|
// NOTE: we intentionally do NOT dim stages from the backend `stage.gated`
|
||||||
|
// flag. In the live deployment build/verify/dispatch are wired and active even
|
||||||
|
// though they're still flagged gated, so that flag is a stale "P3 opt-in" hint,
|
||||||
|
// not a real "inactive" signal. Activity is conveyed by live task counts/status.
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
className={cn(
|
className={cn(
|
||||||
"flex h-full min-h-0 w-52 shrink-0 flex-col gap-1.5 rounded-lg border border-border bg-muted/40 p-2",
|
"flex h-full min-h-0 w-52 shrink-0 flex-col gap-1.5 rounded-lg border border-border bg-muted/40 p-2",
|
||||||
inert && "opacity-60",
|
|
||||||
)}
|
)}
|
||||||
role="listitem"
|
role="listitem"
|
||||||
aria-label={`Stage: ${stage.label}`}
|
aria-label={`Stage: ${stage.label}`}
|
||||||
|
|
@ -239,11 +241,6 @@ function KanbanColumn({ stage, topology, selectedId, onSelect }: ColumnProps) {
|
||||||
<div className="flex items-center justify-between gap-1 mb-0.5">
|
<div className="flex items-center justify-between gap-1 mb-0.5">
|
||||||
<span className="flex items-center gap-1 truncate text-xs font-semibold text-foreground">
|
<span className="flex items-center gap-1 truncate text-xs font-semibold text-foreground">
|
||||||
{stage.label}
|
{stage.label}
|
||||||
{inert && (
|
|
||||||
<span className="text-[9px] font-semibold uppercase tracking-wide text-muted-foreground">
|
|
||||||
inert
|
|
||||||
</span>
|
|
||||||
)}
|
|
||||||
</span>
|
</span>
|
||||||
<div className="flex items-center gap-1 shrink-0">
|
<div className="flex items-center gap-1 shrink-0">
|
||||||
<Badge variant="outline" className="px-1.5 py-0 text-xs">
|
<Badge variant="outline" className="px-1.5 py-0 text-xs">
|
||||||
|
|
|
||||||
|
|
@ -26,8 +26,6 @@ function MapNodeImpl({ data }: NodeProps<RFData>) {
|
||||||
onPath && "ring-2 ring-primary shadow-md shadow-primary/20",
|
onPath && "ring-2 ring-primary shadow-md shadow-primary/20",
|
||||||
// Dimmed when a task is selected and this node is not on its path
|
// Dimmed when a task is selected and this node is not on its path
|
||||||
dimmed && "opacity-30",
|
dimmed && "opacity-30",
|
||||||
// Gated / inert nodes
|
|
||||||
meta.gated && "opacity-60",
|
|
||||||
)}
|
)}
|
||||||
role="group"
|
role="group"
|
||||||
aria-label={`${meta.label} stage, ${state}, ${count} task${count === 1 ? "" : "s"}`}
|
aria-label={`${meta.label} stage, ${state}, ${count} task${count === 1 ? "" : "s"}`}
|
||||||
|
|
@ -77,13 +75,6 @@ function MapNodeImpl({ data }: NodeProps<RFData>) {
|
||||||
{meta.agent}
|
{meta.agent}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Inert tag — bottom-right corner */}
|
|
||||||
{meta.gated && (
|
|
||||||
<span className="absolute bottom-1 right-1.5 text-[9px] uppercase tracking-wide font-semibold text-muted-foreground">
|
|
||||||
inert
|
|
||||||
</span>
|
|
||||||
)}
|
|
||||||
|
|
||||||
<Handle type="source" position={Position.Right} />
|
<Handle type="source" position={Position.Right} />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
Reference in a new issue