JobCache participant UI

The scraping pill is a compact status and consent control in the right side of CareerVector's workspace action band. It projects a participant owned by the application root. Mounting, opening, closing, or navigating away from the pill must not create or destroy the participant session.

This surface does not expose the tensor or ask a person to choose capabilities. The device reports current circumstances, tries feasible work, protests what it cannot do, and lets the orchestrator reshape later routing.

Runtime bargain

Runtime Participation Control shown
Browser Off by default; explicit opt-in persists for this browser Enable/stop contribution
CareerVector Desktop Automatic while the installed app is open Status only; closing the app stops participation

One browser-origin tab holds the participant lock. Other opted-in tabs show Other tab active and do not ask for duplicate leases.

Collapsed pill

The trigger reads Scraping · <state> and stays in the normal shared header status-control shape. While working it may append the source. The dot and text carry the same state so color is never the only signal.

State Tone Meaning
Off neutral Browser contribution is disabled
Connecting info Establishing the participant session
Ready success Connected and waiting for feasible work
Working warning + gentle pulse Trying one lease locally
Rerouted warning The target did not fit locally and was returned with evidence
Offline neutral Paused for local network loss
Other tab active info An origin-local leader is already contributing
Needs attention error Participant/orchestrator failure, not a target refusal

Rerouted is a successful routing reaction. An actual CORS/firewall/extractor attempt becomes DEVICE evidence and may be projected to SOURCE/SESSION. A fresh DEVICE-local reachability or capacity fact can instead protest the optimistic offer before execution; that releases the lease without projecting another class failure. Neither case appears as a red participant error.

Expanded panel

The panel contains, in order:

  1. Shared JobCache heading and Browser/Desktop runtime badge.
  2. A short explanation of direct local attempts and reactive rerouting.
  3. Current state card.
  4. Session totals for completed and rerouted work.
  5. Last source and last result.
  6. Orchestrator tensor decision, participant-local realization, and the honest feedback path (device only or device → source → session).
  7. Browser consent action, or the desktop automatic-participation notice.
  8. A credential and workspace-data boundary statement.

Raw exception text appears only when the participant itself needs attention. Normal portal protest is summarized in plain language.

Interaction and layout

  • The trigger is a native button with dialog state exposed to assistive tech.
  • Enter/Space opens it; outside click closes it; Escape closes it and restores focus to the trigger.
  • Status changes use a polite live region. Labels remain meaningful without color or animation.
  • The panel is right-aligned on desktop and becomes a viewport-bounded fixed panel on narrow screens.
  • Only Working animates, and prefers-reduced-motion disables that pulse.
  • The control uses workspace semantic color tokens. Error red is reserved for failures requiring attention.

Data boundary

The participant receives only scoped leases and expiring deposit grants. It never receives workspace, database, queue, or object-store credentials. Browser execution deposits extracted job facts only; encrypted raw evidence remains a native-worker concern.

Source: wiki/content/canon/jobcache-participant-ui.md