Skip to content

TUI: session-scoped claim filtering — claim views empty in scoped sessions (supervision + Agents panel) #452

@windoliver

Description

@windoliver

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions