SideButton Marketing Website Knowledge Module
Portal — Jobs — SideButton Marketing Website Knowledge Module
Job execution history page -- lists all workflow jobs that have been dispatched to agents. Shows a filterable, searchable list of jobs with status badges, workflow names, ticket references, agent ass…
sidebutton install sidebutton.com What This Is
Job execution history page -- lists all workflow jobs that have been dispatched to agents. Shows a filterable, searchable list of jobs with status badges, workflow names, ticket references, agent assignments, step counts, durations, and relative timestamps. Each job links to a detail page showing input parameters, step execution timeline with task progress, expandable step logs, and output/error cards. Jobs are created when workflows are dispatched to agents (via Run Workflow, Run Job, Queue dispatch, or Automation trigger). Supports cancel (running/waiting) and resend (failed/cancelled) actions.
URL Patterns
| Pattern | Description |
|---|---|
/portal/jobs | Job list (all) |
/portal/jobs?status=running | Filtered to running jobs |
/portal/jobs?status=waiting | Filtered to waiting jobs |
/portal/jobs?status=completed | Filtered to completed jobs |
/portal/jobs?status=failed | Filtered to failed jobs |
/portal/jobs?status=cancelled | Filtered to cancelled jobs |
/portal/jobs/{id} | Job detail view |
/portal/jobs/{id}?from_status={status} | Job detail with back-link context to filtered list |
Page Structure
Job List (/portal/jobs)
+--[Sidebar]--+--[Main Content]------------------------------------------+
| Chat | H1: "Jobs" |
| Agents | "1845 jobs" |
| Jobs * | |
| Queue | [Filter Tabs: All | Running N | Waiting | Completed | Failed | Cancelled] |
| Automations| |
| Workflows | [Search: "Search tickets..."] Workflow [▼] Agent [▼] |
| Settings | |
| | ITEM AGENT STATUS |
| | [dot] Workflow Name TICKET #ID |
| | [EFFORT] N step Nm Ns |
| | [avatar] agent-name |
| | [Status Badge] time ago |
| | [Cancel/Resend] |
| | ... |
| | Loading more... |
+-------------+-----------------------------------------------------------+
Job Detail (/portal/jobs/{id})
+--[Sidebar]--+--[Main Content]------------------------------------------+
| | < Back to jobs |
| Jobs * | |
| | H1: workflow-slug — ticket/source [Status Badge] |
| | [Cancel/Resend] |
| | Job #N [avatar] agent [EFFORT] Nm Ns |
| | Created date |
| | pipeline-id (green monospace) |
| | |
| | [INPUT card] |
| | trigger_ticket_url: https://... (automation jobs) |
| | trigger_project: MVP (automation jobs) |
| | trigger_assignee: account-id (automation jobs) |
| | trigger_status: To Do (automation jobs) |
| | trigger_issue_key: MVP-123 (automation jobs) |
| | trigger_issue_type: Bug (automation jobs) |
| | ticket_url: https://... |
| | hint: optional instructions |
| | |
| | [ERROR card] (failed jobs only) |
| | Step N (step-name) failed: error message |
| | |
| | [Temporal Timeline] OR [Temporal unreachable] |
| | Job: STATUS | N events | size KB | short_id |
| | Init Nms N activities |
| | Agent Setup Nms N activities |
| | Execution Nm Ns |
| | runAndMonitor Nm Ns |
| | workflow: agent_workflow agent: agent-name |
| | Teardown Nms N activities |
| | |
| | [OUTPUT card] (completed jobs only) |
| | "Workflow X completed on agent-name" |
+-------------+-----------------------------------------------------------+
Key Elements
Job List
| Element | Selector / Ref | Notes |
|---|---|---|
| Page heading | heading "Jobs" | H1 |
| Job count | Below heading | "N jobs" summary |
| Filter: All | link "All" | Green pill (bg-emerald-500/20 text-emerald-400) when active |
| Filter: Running | link "Running" | Shows count badge (e.g. "Running 3") when jobs are running |
| Filter: Waiting | link "Waiting" | |
| Filter: Completed | link "Completed" | |
| Filter: Failed | link "Failed" | Blue pill when active as selected filter |
| Filter: Cancelled | link "Cancelled" | 6th status filter tab |
| Search textbox | textbox "Search tickets…" | Searches by ticket reference (e.g. "SCRUM-329") |
| Workflow filter | combobox / label "Workflow" / #workflow-filter-select | Native <select>, default "All workflows". Options populate dynamically from job data |
| Agent filter | combobox / label "Agent" | Native <select>, default "All agents" |
| Column header: ITEM | Above job rows | Left column |
| Column header: AGENT | Above job rows | Middle column |
| Column header: STATUS | Above job rows | Right column |
| Job row | link (each job) | Clickable, navigates to /portal/jobs/{id} |
| Status dot (green) | Left of workflow name | Completed |
| Status dot (red) | Left of workflow name | Failed |
| Status dot (blue, pulsing) | Left of workflow name | Running |
| Status dot (grey) | Left of workflow name | Cancelled / Waiting |
| Workflow name | Bold text in row | Title case display name (e.g. "SE Rca Fix", "QA Validate", "Pull Repos") |
| Ticket reference | Orange/cyan text after name | e.g. "SCRUM-329" — only present when job has a linked ticket |
| Job ID | Grey text | e.g. "#3121" |
| Agent avatar | img inside agent link | Small green circle with agent avatar image |
| Agent name link | link "agent-name" | Links to /portal/agents, shows agent hostname |
| Effort badge | [MAX] / [HIGH] / [MEDIUM] | Green pill badge showing effort level |
| Step count | Grey text | "N step" (singular) |
| Duration | Grey text | "Nm Ns" format (e.g. "6m 31s", "5m 46s") or "Ns" for short durations |
| Completed badge | Status area | Green dot + "Completed" |
| Failed badge | Status area | Red dot + "Failed" |
| Running badge | Status area | Blue dot + "Running" |
| Cancelled badge | Status area | Grey dot + "Cancelled" |
| Waiting badge | Status area | Amber dot + "Waiting" |
| Relative time | Right side | "Nm ago", "Nh ago", "Nd ago" |
| Cancel button | button "Cancel" | On running/waiting jobs — cancels the job |
| Resend button | button "Resend" | On failed and cancelled jobs — re-dispatches the job |
| Resended button | button "Resended" | Shown after a job has already been resent — disabled/grey state |
| Loading more | Bottom of list | "Loading more..." text, infinite scroll trigger (50 items/page) |
Job Detail
| Element | Selector / Ref | Notes |
|---|---|---|
| Back link | link "Back to jobs" | Chevron left + text, returns to job list |
| Workflow heading | H1 text | Format: "workflow-slug — ticket-key" or "workflow-slug — queued" |
| Status badge | Next to heading | "Completed" / "Failed" / "Running" / "Cancelled" with colored dot |
| Cancel button | button "Cancel" | On running/waiting jobs only, top-right, blue outline |
| Resend button | button "Resend" | On failed/cancelled jobs, top-right, blue outline. Changes to "Resended" after use |
| Job number | Below heading | "Job #N" |
| Agent avatar link | link > img "agent-name" | Green circle avatar, links to /portal/agents |
| Agent name | Below heading | Agent hostname next to avatar |
| Effort badge | Below heading | "MAX" / "HIGH" / "MEDIUM" green pill |
| Duration | Below heading | "Nm Ns" format (ticks live on running jobs) |
| Created date | Below heading | Full date string, e.g. "Created 4/2/2026, 9:33:59 PM" |
| Pipeline ID | Below metadata | Green/teal monospace text, e.g. "pipeline-job-4227" |
| Temporal Workflow ID | span "Temporal Workflow ID" | Visible in accessibility tree, links to Temporal tracking |
| INPUT card | Dark card below metadata | "Input" header, key-value pairs of input parameters |
| INPUT trigger variables | Inside INPUT card | Automation-triggered jobs show: trigger_ticket_url, trigger_project, trigger_assignee, trigger_status, trigger_issue_key, trigger_issue_type |
| INPUT ticket URL | Inside INPUT card | Clickable cyan link when input contains a URL (e.g. Jira ticket) |
| INPUT hint | Inside INPUT card | "hint:" field showing dispatch instructions (e.g. "Jira webhook: jira:issue_updated") |
| ERROR card | Red background card | Shown on failed jobs only, "Error" header + "Step N (step-name) failed" + error message |
| Temporal Timeline | Below INPUT/ERROR | Full job execution timeline from Temporal orchestrator |
| Timeline summary | First line of timeline | "Job: STATUS | N events | size KB | short_id" |
| Timeline: Init phase | Timeline row | Duration (ms) + activity count (e.g. "3 activities") |
| Timeline: Agent Setup phase | Timeline row | Duration (ms) + activity count (e.g. "4 activities") |
| Timeline: Execution phase | Timeline row | Duration (Nm Ns) — main execution time |
| Timeline: runAndMonitor | Sub-row under Execution | Duration + "workflow: {workflow_id} agent: {agent-name}" |
| Timeline: Teardown phase | Timeline row | Duration (ms) + activity count (e.g. "5 activities") |
| Temporal unreachable | Replaces timeline | Shown when Temporal workflow history is unavailable (old jobs, cancelled jobs, service down) |
| OUTPUT card | Dark card at bottom | Shown on completed jobs, "Output" header + monospace green completion message (e.g. "Workflow agent_se_work completed on venmate-agent-10") |
Data Model
Job
| Field | Type | Description |
|---|---|---|
| id | number | Job ID (auto-increment) |
| pipeline_id | string | Pipeline tracking ID (e.g. "pipeline-job-3121") |
| name | string | Display name format: "{workflow_id} — {ticket_key|queued}" |
| status | string | "pending" / "running" / "waiting" / "completed" / "failed" / "cancelled" |
| effort_level | string | "max" / "high" / "medium" (optional — may be absent) |
| input | string (JSON) | Key-value map of input parameters (ticket_url, hint, etc.) |
| output | string | Completion message (on completed jobs) |
| error | string | Error message (on failed jobs) |
| ticket_url | string | Full Jira ticket URL (optional) |
| ticket_key | string | Jira ticket key e.g. "SCRUM-329" (optional) |
| current_step | number | Index of currently executing step |
| steps | string (JSON) | Array of pipeline step definitions |
| started_at | string (datetime) | When job started executing |
| completed_at | string (datetime) | When job finished |
| created_at | string (datetime) | Job creation timestamp |
| slack_channel_id | string | Slack channel for notifications (optional) |
| slack_thread_ts | string | Slack thread timestamp (optional) |
Temporal Timeline (Job Detail)
The job detail page fetches execution history from the Temporal orchestrator. When available, it renders a phase-based timeline. When unavailable, it shows "Temporal unreachable".
| Field | Type | Description |
|---|---|---|
| status | string | Temporal workflow status: "COMPLETED" / "FAILED" / "RUNNING" / "CANCELLED" |
| event_count | number | Total events in workflow history (e.g. "83 events") |
| data_size | string | History data size (e.g. "14.9 KB") |
| short_id | string | Short hex workflow run ID prefix (e.g. "019d500e") |
Timeline Phases
| Phase | Description |
|---|---|
| Init | Workflow initialization (~15-20ms, 3 activities) |
| Agent Setup | Agent environment preparation (~24-25ms, 4 activities) |
| Execution | Main workflow execution — contains runAndMonitor sub-entry showing workflow ID + agent name |
| Teardown | Cleanup and reporting (~38-48ms, 4-5 activities) |
Input Trigger Variables (Automation-triggered jobs)
Jobs triggered by Jira automations include trigger context in the INPUT card:
| Field | Type | Description |
|---|---|---|
| trigger_ticket_url | string | Full Jira ticket URL from trigger event |
| trigger_project | string | Jira project key (e.g. "MVP") |
| trigger_assignee | string | Jira account ID of assignee |
| trigger_status | string | Jira issue status at trigger time (e.g. "To Do", "In Review") |
| trigger_issue_key | string | Jira issue key (e.g. "MVP-1601") |
| trigger_issue_type | string | Jira issue type (e.g. "Bug", "Story") |
States & Variations
| State | Trigger | Visual Indicator |
|---|---|---|
| All filter active | Default / click "All" | "All" tab has green pill background |
| Running filter | ?status=running | Only running jobs shown, Running tab active with count badge |
| Completed filter | ?status=completed | Only completed jobs shown |
| Failed filter | ?status=failed | Only failed jobs shown, Failed tab has blue pill |
| Waiting filter | ?status=waiting | Only waiting jobs shown |
| Cancelled filter | ?status=cancelled | Only cancelled jobs shown |
| Running count badge | Running jobs exist | Running tab shows count badge (e.g. "Running 3") |
| Job completed | Finished successfully | Green dot + "Completed" badge |
| Job failed | Error occurred | Red dot + "Failed" badge |
| Job running | In progress | Blue pulsing dot + "Running" badge, live-ticking duration |
| Job waiting | Blocked at gate | Amber dot + "Waiting" badge |
| Job pending | Not yet started | "Pending" badge |
| Job cancelled | User cancelled | Grey dot + "Cancelled" badge |
| Effort: Max | effort_level = "max" | Green "MAX" pill badge |
| Effort: High | effort_level = "high" | Green "HIGH" pill badge |
| Effort: Medium | effort_level = "medium" | Green "MEDIUM" pill badge |
| Ticket reference present | Job linked to ticket | Orange/cyan ticket key text next to workflow name |
| Cancel available | Job is running or waiting | "Cancel" button shown in list row and detail top-right |
| Resend available | Job is failed or cancelled | "Resend" button shown in list row and detail top-right |
| Already resent | Resend was clicked | "Resended" button shown (disabled/past tense) |
| Detail: Temporal timeline | Temporal history available | Phase-based timeline: Init → Agent Setup → Execution → Teardown with durations and activity counts |
| Detail: Temporal unreachable | Temporal history unavailable | "Temporal unreachable" text replaces timeline (old jobs, cancelled jobs, service down) |
| Detail: Temporal status mismatch | Portal vs orchestrator differ | ERROR card may show "Status mismatch: portal says 'failed' but orchestrator says 'COMPLETED'" |
| Detail: ERROR card | Job has failure | Red "Error" card above timeline with "Step N (step-name) failed" + error detail |
| Detail: OUTPUT card | Job completed | Dark "Output" card below timeline with green completion message |
| Detail: trigger variables | Automation-triggered job | INPUT card shows trigger_ticket_url, trigger_project, trigger_assignee, trigger_status, trigger_issue_key, trigger_issue_type |
| Empty: All tab | No jobs dispatched, "All" active | Lightning bolt icon + "No jobs yet" heading + "Run a workflow from the agents page to create a job" hint |
| Empty: Running tab | No running jobs, "Running" active | Lightning bolt icon + "No running jobs" heading + same hint |
| Empty: Waiting tab | No waiting jobs, "Waiting" active | Lightning bolt icon + "No waiting jobs" heading + same hint |
| Empty: Completed tab | No completed jobs, "Completed" active | Lightning bolt icon + "No completed jobs" heading + same hint |
| Empty: Failed tab | No failed jobs, "Failed" active | Lightning bolt icon + "No failed jobs" heading + same hint |
| Empty: Cancelled tab | No cancelled jobs, "Cancelled" active | Lightning bolt icon + "No cancelled jobs" heading + same hint |
| Agent filter hidden | No agents registered or no jobs | Agent dropdown not rendered in filter bar; only Workflow filter shown |
| Workflow filter empty | No jobs exist | Workflow dropdown only shows "All workflows" — options populate dynamically from job data |
| Infinite scroll | Scroll to bottom | "Loading more..." appears, loads next 50 jobs |
Common Tasks
1. View job list
- Navigate to
/portal/jobs - See all jobs with status, workflow name, ticket ref, agent, step count, duration, time
2. Filter jobs by status
- Click filter tab (Running / Waiting / Completed / Failed / Cancelled)
- List filters to matching jobs, URL updates to
?status={status}
3. Search by ticket reference
- Click the "Search tickets..." textbox
- Type ticket reference (e.g. "SCRUM-329")
- List filters to matching jobs
4. Filter by workflow
- Click the "Workflow" dropdown (native
<select>) - Select a workflow name (e.g. "SE Rca Fix", "QA Validate")
- List filters to jobs for that workflow
5. Filter by agent
- Click the "Agent" dropdown (native
<select>) - Select an agent name
- List filters to jobs for that agent
6. View job detail
- Click any job row in the list
- See workflow name, ticket ref, status, input parameters, step execution timeline
7. View Temporal timeline
- On job detail page, see the timeline section below INPUT/ERROR
- Timeline shows 4 phases: Init, Agent Setup, Execution, Teardown with durations
- Execution phase shows runAndMonitor sub-entry with workflow ID and agent name
- If Temporal is unreachable, shows "Temporal unreachable" instead
8. Cancel a running or waiting job
- On a running/waiting job (list or detail), click the "Cancel" button
- Job transitions to "Cancelled" status
9. Resend a failed or cancelled job
- On a failed/cancelled job (list or detail), click the "Resend" button
- Job is re-dispatched — button changes to "Resended" (disabled)
Tips
- Jobs are created when workflows are dispatched via Run Workflow button, Run Job on agent, Queue dispatch, or Automation trigger
- The effort level maps to LLM model: Max/High = Opus, Medium = Sonnet
- Pipeline ID format is
pipeline-job-{id} - Job list shows relative timestamps ("Nm ago", "Nh ago"); detail page shows absolute timestamps
- The Temporal timeline shows 4 phases (Init, Agent Setup, Execution, Teardown) — Execution contains the actual workflow run with agent name
- Workflow names appear as Title Case in the list (e.g. "SE Rca Fix") but as slugs in detail headings (e.g. "se-rca-fix")
- Heading format on detail page: "workflow-slug — ticket-key" (when ticket linked) or "workflow-slug — queued" (from queue)
- Agent names link to
/portal/agentspage - Automation-triggered jobs show trigger context variables in INPUT (trigger_ticket_url, trigger_project, trigger_assignee, trigger_status, trigger_issue_key, trigger_issue_type)
- INPUT card may contain
hint:field showing extra dispatch instructions or automation trigger context (e.g. "Jira webhook: jira:issue_updated") - Queued jobs (non-automation) show only standard params (ticket_url, hint) without trigger_* variables
- Infinite scroll loads 50 items per page
- Job links from filtered views include
?from_status={status}for back-navigation context
Gotchas
- Cancel works on running AND waiting: Both running and waiting jobs can be cancelled
- Resend → Resended: After clicking Resend, the button changes to "Resended" (disabled) to prevent double-dispatch
- No delete: There is no UI to delete jobs from history
- Effort badge: The effort level controls LLM model, not priority. Both MAX and HIGH badges are green
- Status dots: Colored dots match status: green=completed, red=failed, blue=running (pulsing), amber=waiting, grey=cancelled
- Workflow/Agent dropdowns: Native
<select>elements — useselect_option()to interact - Search scope: "Search tickets..." searches by ticket reference only, not by workflow name or agent
- Temporal unreachable: Older jobs, cancelled jobs, and jobs during Temporal outages show "Temporal unreachable" instead of the phase timeline — OUTPUT/ERROR cards still display from portal DB
- Temporal status mismatch: A job's portal status and Temporal status can differ — e.g., portal shows "Failed" but Temporal shows "COMPLETED". The ERROR card shows the mismatch detail
- Cancelled jobs: Often show "Temporal unreachable" rather than a timeline — no step-level detail available
- Live duration: Running jobs show a ticking duration counter
- hint field: The INPUT card may show a
hint:field with automation context (e.g. "Jira webhook: jira:issue_updated") — this helps trace how the job was triggered - Empty state per filter: Each filter tab shows its own empty state heading — "No running jobs", "No completed jobs", etc. Only the All tab says "No jobs yet". The hint text is always the same
- Dynamic dropdown options: Workflow and Agent filter dropdowns populate dynamically from existing job data. An account with 0 jobs shows only "All workflows" and no Agent dropdown at all
- Workflow filter dual IDs: Historical jobs use legacy
agent_*prefixed IDs (e.g.agent_se_work); newer jobs use dash-separated IDs (e.g.se-work). Both appear in the Workflow filter dropdown since it populates from job data - Workflow filter select ID: The select element has
id="workflow-filter-select"— useful for targeted automation - Page title format: List page: "Jobs - SideButton Fleet". Detail page: "Job #{id} - SideButton Fleet"
- No Show details expandable: The old
<details>expandable with RESOLVED INPUT/OUTPUT is gone — replaced by Temporal timeline phases