Skip to content

feat: awaiting_owner status, agent performance panel, CSP fixes, dispatch reliability#397

Closed
jadye527 wants to merge 9 commits intobuilderz-labs:mainfrom
jadye527:main
Closed

feat: awaiting_owner status, agent performance panel, CSP fixes, dispatch reliability#397
jadye527 wants to merge 9 commits intobuilderz-labs:mainfrom
jadye527:main

Conversation

@jadye527
Copy link

Summary

  • Awaiting Owner task status — New kanban column for tasks needing human follow-up (account creation, purchases, browser logins). Keyword detection on Aegis approval auto-routes tasks. Amber column with drag-to-done support.
  • Agent Performance panel — Dashboard for agent metrics and performance tracking
  • Active Runs panel — Visibility into currently running agent tasks and stale detection
  • Owner Overview strip — Dashboard strip showing active/stale runs and task details at a glance
  • Quality Review evidence fields — tests_command, tests_result, output_paths, resolution_memo for stronger Aegis inputs
  • CSP fixes — unsafe-inline fallback for style-src and script-src (Next.js compatibility)
  • Dispatch reliability — Switched from gateway WebSocket to direct openclaw agent CLI for task dispatch and Aegis reviews
  • Rejection auto-redispatch — Rejected tasks go to assigned instead of in_progress so they auto-redispatch with feedback
  • Doctor banner fixes — Suppress known false-positive warnings, extend dismiss duration
  • 10-language translations — colAwaitingOwner added to all locale files

Test plan

  • Build passes (pnpm build)
  • Awaiting Owner column appears on kanban board
  • Task dispatch works via direct agent CLI
  • Rejected tasks auto-redispatch
  • No CSP console errors in private browsing
  • Agent Performance panel renders

🤖 Generated with Claude Code

jadye527 and others added 9 commits March 15, 2026 03:58
Surface tmux sessions, systemd units, cron jobs, and known background
processes in a new Active Runs panel. Includes stale-process detection
(30min threshold), output snippets, owner inference, and status filters.
Wires active/stale run counts into the dashboard overview strip.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… duration

Doctor banner was showing non-actionable warnings (mission-control.service
detected as duplicate gateway, Telegram privacy hint, cleanup hints) on every
page load with only a 24-hour dismiss window. This filters known false positives
in the issue parser and extends dismiss to 7 days so the banner only surfaces
real problems.
Agents complete tasks autonomously, but some require human action (e.g.,
create accounts, browser login, purchase). These now land in an
"Awaiting Owner" column instead of going straight to "done" after Aegis
approval, based on keyword detection in the resolution text.

Also fixes:
- CSP: use unsafe-inline for style-src and script-src fallback (Next.js
  injects inline styles/scripts without nonces)
- Gateway dispatch: remove invalid `model` param from agent call params
  (was causing a dispatch-fail loop every 60s)
Previously Aegis rejections set status to in_progress, but the
dispatcher only picks up assigned tasks — rejected work got stuck
and never re-sent to the agent with feedback.
The gateway `call agent` WebSocket method was failing with "closed (1000)"
causing all task dispatches and Aegis reviews to fail. `openclaw agent`
works reliably, so switch both dispatch and review to use it directly.
Creates an MC notification for the admin user when Aegis approves a task
but routes it to awaiting_owner (requires human action). Surfaces in the
notifications panel so the owner sees what needs attention.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
New /api/agent-performance endpoint queries task DB for per-agent stats:
success rate, completion count, rejection rate, avg completion time, and
recent completions. AgentPerformancePanel shows expandable agent cards
with progress bars, time-range filters (7/14/30/90 days), and status
breakdown. Wired into NavRail and ContentRouter.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
# Conflicts:
#	src/app/[[...panel]]/page.tsx
#	src/components/layout/nav-rail.tsx
@jadye527 jadye527 requested a review from 0xNyk as a code owner March 15, 2026 17:01
@0xNyk
Copy link
Member

0xNyk commented Mar 16, 2026

Review

Large feature PR (+1190/-70) with multiple independent features bundled together:

  • Awaiting Owner task status
  • Agent Performance panel
  • Active Runs panel
  • Owner Overview strip
  • CSP fixes
  • Dispatch reliability improvements

No CI has run. Please:

  1. Rebase onto current main (several PRs merged recently)
  2. Ensure pnpm typecheck && pnpm test && pnpm build pass
  3. Consider splitting into smaller, independently reviewable PRs

The feature scope is too large to safely merge without CI validation.

@0xNyk
Copy link
Member

0xNyk commented Mar 16, 2026

Thanks for the contribution — there's a lot of good work here, but the scope makes it very difficult to review as a single PR. This touches 29 files across 7+ unrelated features.

Merge blockers:

  1. Merge conflictsmergeable: false. Please rebase on latest main.
  2. CSP unsafe-inlinesrc/lib/csp.ts adds unsafe-inline for script-src. This weakens Content Security Policy and needs justification. What specifically requires it?

Scope — please split into separate PRs:

  • PR 1: awaiting_owner task status + kanban column (task-board-panel.tsx, schema.sql, db.ts, github-label-map.ts, validation.ts)
  • PR 2: Agent Performance panel (agent-performance-panel.tsx, src/app/api/agent-performance/route.ts)
  • PR 3: Active Runs panel (active-runs-panel.tsx, src/app/api/active-runs/route.ts)
  • PR 4: Dispatch reliability + doctor fixes (task-dispatch.ts, openclaw-doctor.ts, openclaw-doctor-banner.tsx)
  • PR 5: CSP fix (if justified) + translations

Smaller PRs are much easier to review, test, and merge. Each piece has independent value.

Also note: the branch is pushed to your fork's main — using a feature branch (e.g., feat/awaiting-owner) makes future updates easier.

Copy link
Member

@0xNyk 0xNyk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review: DO NOT MERGE

Summary

This PR bundles 7+ independent features into a single PR, making it impossible to review, test, or revert individual changes safely.

Issues Found

  1. Too many features in one PR — This PR contains at least 10 independent changes:

    • awaiting_owner task status + kanban column
    • Agent Performance panel + API route
    • Active Runs panel + API route
    • Owner Overview strip
    • Quality Review evidence fields
    • CSP unsafe-inline fallback
    • Dispatch switch from WebSocket to CLI
    • 10-language translations
    • Rejection auto-redispatch
    • Doctor banner fixes
  2. CSP approach conflicts with PR #415 — This PR adds unsafe-inline to CSP without adequate justification. PR #415 takes a more surgical approach (targeting style-src specifically for reagraph compatibility while keeping script-src nonce-based). PR #415's approach should take priority. Please drop CSP changes entirely from this PR.

  3. Dispatch mechanism switch is breaking — Switching from WebSocket to CLI dispatch is a significant breaking change that needs its own PR with a migration strategy and testing plan.

  4. Merge conflicts — Branch is stale and has conflicts with main.

  5. No CI validation — No tests for any of the new features.

Recommendation

Please close this PR and split into focused PRs:

  • PR-A: awaiting_owner status + kanban column
  • PR-B: Agent Performance panel + API route
  • PR-C: Active Runs panel + API route
  • PR-D: Dispatch reliability improvements + doctor fixes
  • PR-E: Drop CSP changes entirely (let PR #415 handle it)

Each PR should be independently reviewable, testable, and revertable.

0xNyk added a commit that referenced this pull request Mar 17, 2026
Add awaiting_owner column to task board with keyword-based detection
for tasks requiring human action. Tasks matching keywords like
"waiting for", "needs human", "approval needed" are automatically
placed in a dedicated column with orange styling.

Supersedes #397
@0xNyk
Copy link
Member

0xNyk commented Mar 17, 2026

Thanks for the comprehensive PR! We've cherry-picked the awaiting_owner status detection into #428. The ErrorBoundary and smart polling features from this PR are already on main.

@0xNyk
Copy link
Member

0xNyk commented Mar 17, 2026

Superseded by #428 (awaiting_owner). ErrorBoundary + useSmartPoll already on main.

@0xNyk 0xNyk closed this Mar 17, 2026
0xNyk added a commit that referenced this pull request Mar 17, 2026
Add awaiting_owner column to task board with keyword-based detection
for tasks requiring human action. Tasks matching keywords like
"waiting for", "needs human", "approval needed" are automatically
placed in a dedicated column with orange styling.

Supersedes #397
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants