Follow-up from #193 / PR #449. Discovered during live validation of the supervision hero surface.
Problem
In grove-TUI single-session mode the provider is scoped (setSessionScope fires; provider.hasSessionScope() true). In scoped sessions useEntityWatchEnabled returns false (no bypassSessionScopeGate) and provider.getClaims is namespace-global, so every claim list view deliberately renders empty to avoid leaking other sessions' claims:
Verified live: differential over 40 iterations / ~15 min of active claims, supervision fleet and legacy Agents panel empty in lockstep. So an operator running a single grove session never sees populated agent lanes in either surface, even while agents are actively claiming.
This is not a #193 defect (supervision is consistent with the proven reference; non-scoped/informer mode populates correctly, proven by use-fleet-model.mount.test.tsx). It's the unimplemented platform capability the AgentListView comment calls out: "Render an empty state instead until session-scoped claim filtering lands." Same class as the scoped-claims item tracked in prior TUI handoff notes.
Proposal
Implement session-scoped claim visibility so claim views populate in scoped sessions. Options:
- Server-side
sessionId filter on /api/watch (the informer-context JSDoc notes "PR3+ may add server-side sessionId filtering … at which point [bypassSessionScopeGate] becomes the default"), or
- Client-side scope filter analogous to the running-view contribution feed (which already sets
bypassSessionScopeGate: true + filters by metadata.creationTimestamp >= sessionStartedAt).
Impact
Until this lands, the supervision hero surface (#193) and the legacy Agents panel are both empty in the common single-session grove-TUI flow — limiting the operator value of #193 even though its rendering/data-flow is correct.
Acceptance
- In a scoped single grove session with active claims, both the supervision FleetRail and the legacy Agents panel show the session's agents (not empty).
- No cross-session claim leakage.
Follow-up from #193 / PR #449. Discovered during live validation of the supervision hero surface.
Problem
In grove-TUI single-session mode the provider is scoped (
setSessionScopefires;provider.hasSessionScope()true). In scoped sessionsuseEntityWatchEnabledreturns false (nobypassSessionScopeGate) andprovider.getClaimsis namespace-global, so every claim list view deliberately renders empty to avoid leaking other sessions' claims:AgentListView) — explicituseProviderScopedshort-circuit → "Agents (0) / No agents registered."AgentListViewexactly (PR feat(tui): agent supervision hero surface (#193) #449 fixe50b9ade) →Fleet (0).Verified live: differential over 40 iterations / ~15 min of
activeclaims, supervision fleet and legacy Agents panel empty in lockstep. So an operator running a single grove session never sees populated agent lanes in either surface, even while agents are actively claiming.This is not a #193 defect (supervision is consistent with the proven reference; non-scoped/informer mode populates correctly, proven by
use-fleet-model.mount.test.tsx). It's the unimplemented platform capability theAgentListViewcomment calls out: "Render an empty state instead until session-scoped claim filtering lands." Same class as the scoped-claims item tracked in prior TUI handoff notes.Proposal
Implement session-scoped claim visibility so claim views populate in scoped sessions. Options:
sessionIdfilter on/api/watch(the informer-context JSDoc notes "PR3+ may add server-side sessionId filtering … at which point [bypassSessionScopeGate] becomes the default"), orbypassSessionScopeGate: true+ filters bymetadata.creationTimestamp >= sessionStartedAt).Impact
Until this lands, the supervision hero surface (#193) and the legacy Agents panel are both empty in the common single-session grove-TUI flow — limiting the operator value of #193 even though its rendering/data-flow is correct.
Acceptance