{"ok":true,"tasks":[{"id":"19116b09-e415-4b99-bdce-caa7a0227d18","approvalId":"e82ed81a-bb60-4d7e-a634-f3314ee9960f","title":"Create a temp test page called testing and add a link to the left menu for it.","description":null,"source":"User","project":"Mission Control","priority":"red","status":"returned","metadata":{"flowStage":"returned_to_approval","blockedReason":"needs_more_info","workedByInitial":"C","caseKanbanTaskId":"t_cb9eafd6","createdByInitial":"L","martKanbanTaskId":"t_92b0a965","kanbanSyncHistory":[{"at":"2026-06-06T12:04:12.975Z","ids":{"caseKanbanTaskId":"t_cb9eafd6","plannerKanbanTaskId":"t_69f53341"},"actor":"cern","event":"plan_submitted","summary":"Plan submitted to Case"},{"at":"2026-06-06T12:08:01.036Z","ids":{"caseKanbanTaskId":"t_cb9eafd6","martKanbanTaskId":"t_92b0a965"},"actor":"case","event":"case_approved","summary":"Case approved; Mart execution queued"},{"at":"2026-06-06T12:09:28.667Z","ids":{"martKanbanTaskId":"t_92b0a965"},"actor":"mart","event":"mart_started","summary":"Mart execution started"},{"at":"2026-06-06T12:16:06.920Z","ids":{"martKanbanTaskId":"t_92b0a965"},"actor":"mart","event":"mart_completed","summary":"Testing page deployed: /testing returns 200, sidebar link with flask icon, active state highlights, build 0 errors, 39 routes"}],"revertCompletedAt":"2026-06-07T00:03:24.453293+00:00","plannerKanbanTaskId":"t_69f53341","revert_completed_at":"2026-06-07T00:03:24.453293+00:00","revertedFromCompleted":true,"revertedFromCompletedAt":"2026-06-07T00:03:24.453293+00:00","awaitingApprovalAfterInfo":true,"revertedFromCompletedReason":"This was just a test page"},"createdAt":"2026-06-06T11:56:33.130Z","updatedAt":"2026-06-13T22:32:57.735Z"},{"id":"8f02d6ae-fe2b-4ea1-8b4e-43ca1e161350","approvalId":"3ebb0e28-cc91-458c-ae89-4edc363be2a3","title":"Add agent playbook library","description":"Research-backed expansion idea: add a /playbooks page that catalogs reusable Mission Control workflows (research approval top-up, task implementation, verification, case rejection, news briefing) with trigger, owner agent, inputs, outputs, and last-run status. Sources: https://github.com/23blocks-OS/ai-maestro (709 stars; TypeScript; skills system, memory/code-graph queries, agent-to-agent messaging), https://github.com/builderz-labs/mission-control (5,292 stars; TypeScript; dispatch tasks, multi-agent workflows, spend/governance dashboard), and YouTube dashboard UX guidance emphasizing templates/clear next actions (https://www.youtube.com/watch?v=t3cAUt7sOQg). Rationale: expands the site beyond monitoring into an operator-facing library of repeatable agent workflows; specific and implementable as a new nav page backed by static/JSON playbook definitions first.","source":"Jim","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","serviceRestart":{"at":"2026-06-13T17:37:12.398Z","ok":false,"output":"Restart failed: Command failed: sudo systemctl restart mission-control.service\n"},"cssVerification":{"at":"2026-06-13T17:37:12.398Z","ok":true,"checked":0},"workedByInitial":"C","caseKanbanTaskId":"t_12ed6ea6","createdByInitial":"J","martKanbanTaskId":"t_898c6be5","kanbanSyncHistory":[{"at":"2026-06-13T17:04:37.237Z","ids":{"caseKanbanTaskId":"t_12ed6ea6","plannerKanbanTaskId":"t_e2780df7"},"actor":"cern","event":"plan_submitted","summary":"Plan submitted to Case"},{"at":"2026-06-13T17:09:06.717Z","ids":{"caseKanbanTaskId":"t_12ed6ea6","martKanbanTaskId":"t_898c6be5"},"actor":"case","event":"case_approved","summary":"Case approved; Mart execution queued"},{"at":"2026-06-13T17:25:10.260Z","ids":{"martKanbanTaskId":"t_898c6be5"},"actor":"mart","event":"mart_started","summary":"Mart execution started"},{"at":"2026-06-13T17:37:12.376Z","ids":{"martKanbanTaskId":"t_898c6be5"},"actor":"mart","event":"mart_completed","summary":"Successfully added playbooks library with 5 playbooks: research-approval, task-implementation, verification, case-rejection, news-briefing. Verified /playbooks returns 200, command palette includes Playbooks, nav appears in sidebar and mobile \"More\" drawer, dark theme styling present, density toggle works. Fixed AgentBadge to include walter agent and PlaybookCard className bug."}],"plannerKanbanTaskId":"t_e2780df7"},"createdAt":"2026-06-13T16:24:17.320Z","updatedAt":"2026-06-13T17:37:12.374Z"},{"id":"55abac55-3327-40ed-9293-ab86952610ea","approvalId":"d7c94a9b-a6c4-4c05-b826-4dc192e235b8","title":"Mobile bottom tab bar for primary nav","description":"Add a mobile-first bottom tab bar to Mission Control so the dashboard is usable on phones and tablets.\n\n**Source / reference:**\n- Hermes Studio (https://github.com/JPeetz/Hermes-Studio) — 164★ Hermes Agent dashboard built with React + TypeScript. Has a dedicated `MobileTabBar` component with drag-to-switch gestures, haptic feedback, and 9 bottom tabs (Home, Chat, Files, Terminal, Jobs, Memory, Skills, Profiles, Settings). Tab bar auto-hides on chat routes (iMessage/Telegram pattern). Uses `@hugeicons/react` for consistent iconography.\n- hermes-ui (https://github.com/pyrate-llama/hermes-ui) — 157★ single-file glassmorphic HTML dashboard. Uses a bottom-oriented layout approach.\n\n**Current problem:** Mission Control has 14 nav items in a desktop-only sidebar. On mobile, the sidebar takes up the full screen width and the content area is unusable. There are zero responsive breakpoints in `Sidebar.tsx`.\n\n**Proposed approach:**\n1. Add a bottom tab bar visible below `md` breakpoint (≤768px) with the 5 most critical nav items: Overview, Tasks, Approvals, Cost, Activity.\n2. Add a \"More\" tab that opens a slide-up drawer with the remaining 9 nav items.\n3. Hide the desktop sidebar on mobile; show the bottom tab bar instead.\n4. Use the existing SVG icon set from `Sidebar.tsx` — no new icon library needed.\n5. Add safe-area-inset padding for iPhone home indicator.\n6. Keep the sidebar unchanged on `md:` and above.\n\n**Why this matters:** Lane accesses Mission Control from mobile devices. The current layout is effectively broken on screens < 768px. A bottom tab bar is the standard pattern for mobile dashboards (Linear, Vercel, Stripe Dashboard all use it).\n\n**Scope:** Layout/shell only — no page content changes needed.","source":"Jim","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","createdByInitial":"J"},"createdAt":"2026-06-08T15:07:02.787Z","updatedAt":"2026-06-08T15:07:59.703Z"},{"id":"8fb0534d-791d-432a-b555-5e1f0e8c2ead","approvalId":"c2dda443-0d02-4687-9d74-d6269d8bed8f","title":"Responsive page content padding and card layout for mobile","description":"Adjust page content layout and spacing for mobile screens so cards, tables, and task boards are readable without horizontal scrolling.\n\n**Source / reference:**\n- Hermes Studio (https://github.com/JPeetz/Hermes-Studio) — uses `MOBILE_TAB_BAR_OFFSET` CSS variable (`--tabbar-h: 80px`) to prevent content from being hidden behind the bottom tab bar. All pages account for this inset.\n- Linear mobile app — single-column card layout, generous touch targets (min 44px), no horizontal overflow.\n- Vercel Dashboard — responsive grid that collapses from 3-column to 1-column at `md` breakpoint. Tables become card lists on mobile.\n\n**Current problem:** Mission Control pages use `px-10` padding and multi-column layouts that overflow on mobile. The root layout has no mobile viewport meta tag considerations, no bottom inset for a tab bar, and page content assumes desktop width.\n\n**Proposed approach:**\n1. Change root layout content padding from `px-10 py-8` to `px-4 py-4 md:px-10 md:py-8` — tight on mobile, spacious on desktop.\n2. Add `pb-[env(safe-area-inset-bottom,0px)]` to main content area to account for bottom tab bar.\n3. Add a CSS variable `--mobile-bottom-inset` (default 0px, set to 80px when tab bar is present) and apply as `padding-bottom`.\n4. Ensure all pages use `overflow-x-hidden` on the main container to prevent horizontal scroll.\n5. No individual page redesigns — just the shell/layout responsive adjustments.\n\n**Why this matters:** Even with navigation fixed, content is unusable if it overflows or is hidden behind a bottom bar. This is the foundational layout fix that makes everything else work on mobile.\n\n**Scope:** Layout/shell only — `layout.tsx` and global CSS. No page-level changes.","source":"Jim","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","createdByInitial":"J"},"createdAt":"2026-06-08T14:01:47.713Z","updatedAt":"2026-06-08T14:02:47.697Z"},{"id":"4312218c-a9f1-497b-88c7-17b22777f59c","approvalId":"ca9ca648-511a-4644-b882-21ff458218ca","title":"Docs v2c: File-explorer document manager page","description":"Create a new page at /docs-v2c that implements a file-explorer style document manager — tree-based file browser with split-pane preview, similar to VS Code's explorer panel.\n\nSource / rationale:\n- VS Code Explorer — the most familiar file tree pattern for developers. Split-pane with tree on left, content on right. Drag-and-drop file management, inline rename, context menus.\n- Finder (macOS) — column view for hierarchical browsing, quick look preview, tags and metadata.\n- Docusaurus (docusaurus.io) — open-source documentation platform with 55k+ GitHub stars. File-based routing, sidebar navigation, versioned docs, search. React-based.\n- Mintlify (mintlify.com) — modern developer documentation platform with beautiful defaults, AI search, analytics.\n\nKey features:\n- File tree sidebar with folders, subfolders, and files (notion-like tree but file-explorer metaphor)\n- Split-pane layout: tree left, markdown preview right\n- Inline file/folder create, rename, delete via context menu\n- File type icons (markdown, runbook, architecture, decision)\n- Tag pills on files, filterable\n- Breadcrumb navigation at top of preview pane\n- Optional: drag-and-drop file upload for attachments\n- Matches Mission Control dark zinc/indigo palette\n\nWhy for Mission Control: Developers already understand file-explorer metaphors. This approach scales better than flat card grids — you can have nested folders for runbooks per service, architecture per subsystem, decisions by quarter. The current page has only 4 hardcoded folders with no nesting and no file-level organization.\n\nInstall as /docs-v2c so it can be tested side-by-side with the current /docs page.","source":"Jim","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","createdByInitial":"J"},"createdAt":"2026-06-08T12:33:19.932Z","updatedAt":"2026-06-08T12:34:44.210Z"},{"id":"adc594f8-08e4-41d6-bdc9-90a12a693d02","approvalId":"bb912856-e706-489a-896c-49ad266b1a9c","title":"Docs v2b: Linear-style wiki page","description":"Create a new page at /docs-v2b that implements a Linear-style wiki/document system — keyboard-driven, minimal, fast.\n\nSource / rationale:\n- Linear (linear.app) — renowned for its keyboard-first, ultra-fast UI. Clean typography, minimal chrome, instant search, cycle-based organization.\n- Outline (getoutline.com) — open-source wiki/knowledge base with 8k+ GitHub stars. React-based, Slack-like editor, hierarchical document tree, real-time collaboration. Self-hostable.\n- Slite (slite.com) — Linear-inspired team wiki with channel-based organization and markdown-first editing.\n\nKey features:\n- Keyboard-first navigation (Cmd+K search, / for commands, j/k to move)\n- Flat channel-based organization (Runbooks, Architecture, Decisions, Agent Guides) — no nested folders\n- Markdown editor with live preview toggle\n- Instant full-text search across all docs\n- Last-edited timestamps and author attribution\n- Minimal UI: no card grids, just clean list + detail panel\n- Matches Mission Control dark zinc/indigo palette\n\nWhy for Mission Control: Linear's design philosophy aligns with Hermes' speed-and-flow aesthetic. A keyboard-driven wiki is faster for power users who need to quickly look up runbooks or document decisions. The current page requires too many clicks and has no search across folders.\n\nInstall as /docs-v2b so it can be tested side-by-side with the current /docs page.","source":"Jim","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","createdByInitial":"J"},"createdAt":"2026-06-08T12:33:19.896Z","updatedAt":"2026-06-08T12:34:44.192Z"},{"id":"08cc0928-34cc-4f76-a714-36489df9a58a","approvalId":"95106d2b-b215-46bb-b824-f94baa168c6b","title":"Docs v2a: Notion-style block editor page","description":"Create a new page at /docs-v2a that replaces the current hardcoded docs viewer with a Notion-style block-based document editor.\n\nSource / rationale:\n- Notion (notion.so) — the gold standard for block-based document editing. Slash commands for block types, drag-to-reorder, inline media embeds, toggle blocks for runbooks.\n- Tiptap editor (tiptap.dev) — open-source headless editor framework that powers Notion-like experiences. React-compatible, extensible. 28k+ GitHub stars.\n- Novel (novel.sh) — open-source Notion-style WYSIWYG editor built on Tiptap. AI-ready, Tailwind-styled out of box.\n\nKey features:\n- Block-based editing: text, heading, code block, callout, toggle, divider\n- Slash command palette (type / to insert blocks)\n- Document tree sidebar with drag-and-drop reordering\n- Real-time preview with markdown shortcuts\n- Tags and folder organization (matching existing Mission Control patterns)\n- Dark mode matching existing zinc/indigo palette\n\nWhy for Mission Control: Runbooks and architecture docs need rich formatting (code blocks, callouts for warnings, toggles for step-by-step procedures). The current page is read-only hardcoded JSX — no editing, no rich content. This makes docs actually useful for operational knowledge.\n\nInstall as /docs-v2a so it can be tested side-by-side with the current /docs page.","source":"Jim","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","createdByInitial":"J"},"createdAt":"2026-06-08T12:33:19.855Z","updatedAt":"2026-06-08T12:34:44.170Z"},{"id":"fbc949ab-362c-4438-9301-5808faf9b848","approvalId":"012d930d-8bbe-4cdf-8223-d2962a5d6014","title":"Docs page: card-grid layout with metadata","description":"Replace the current two-panel list+detail layout with a card-grid browse view.\n\nSource: Appsmith (⭐40k, appsmithorg/appsmith) — card-based admin panel layout with tags, metadata, and hover states. Refine (⭐38k, refinedev/refine) — structured list+detail with breadcrumb navigation.\n\nCurrent state: /docs has a static 2-item seed list in a narrow left panel with a right-side detail view. No thumbnail, no tags, no last-modified info.\n\nProposed changes:\n- Grid of document cards (3 columns desktop, 2 tablet, 1 mobile)\n- Each card shows: title, subtitle/abstract, last-modified date, tag badge\n- Hover state with subtle border glow (indigo accent to match existing palette)\n- Click opens detail view with a back button (breadcrumb: Docs > Title)\n- Search bar moves to top of grid, filter chips below it\n- Empty state: \"No docs yet\" with a + button to create first doc\n- Keep the existing dark theme (bg-white/5, border-white/10, indigo accents)\n\nWhy: The current layout wastes horizontal space and doesnt scale beyond a few docs. A card grid is the standard pattern for document libraries (Notion, Confluence, Linear docs) and gives each doc visual weight.","source":"Jim","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","createdByInitial":"J"},"createdAt":"2026-06-08T11:49:51.846Z","updatedAt":"2026-06-08T11:50:23.893Z"},{"id":"a7fb7ac8-b46a-4a96-8cc7-7cfe44731ebd","approvalId":"734b9877-7399-4926-b7ee-a30d9caca803","title":"Docs page: tree-nav sidebar with folder groups","description":"Add a collapsible tree-nav sidebar to the docs page for organizing documents into folder groups.\n\nSource: Airplane Views (airplane.dev, 23pts HN) — code-first internal UIs with structured navigation panels. Boost Note (⭐4k, BoostIO/BoostNote-App) — document-driven project management with folder/tree navigation. Linear/GitHub docs patterns — nested sidebar nav with chevron expand/collapse.\n\nCurrent state: /docs has a flat list with tag chips (All, general, spec) but no folder hierarchy.\n\nProposed changes:\n- Left sidebar (240px, collapsible) with a tree nav of folder groups\n- Each folder: chevron icon (▶/▼) + folder name + doc count badge\n- Top-level folders: Runbooks, Architecture, Agent Guides, Decisions\n- Active folder highlighted with indigo background (matching existing nav pattern)\n- Main content area shows cards or list of docs in selected folder\n- Folders persisted in frontend state (no backend needed yet)\n- Drag-and-drop reordering of folders (stretch goal)\n- Keep existing search bar and filter chips above the content area\n- When sidebar is collapsed, show only folder icons or hide entirely with a toggle\n\nWhy: As the doc library grows, tag-based filtering wont be enough. Folder groups are the standard organizing principle for internal knowledge bases and would let Lane categorize docs by topic (e.g., Runbooks for ops procedures, Architecture for system design, Agent Guides for SOUL.md references).","source":"Jim","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","createdByInitial":"J"},"createdAt":"2026-06-08T11:36:21.432Z","updatedAt":"2026-06-08T11:36:54.527Z"},{"id":"b5c86f35-f57f-4be3-bb3e-fcc8d66348d9","approvalId":"3d9ac778-41e3-4869-9271-188de1ab528e","title":"Add host dependency map","description":"Research-backed approval candidate from the Mission Control approval-research cron. Lane guidance for this run: “Lets enhance the Overview page. Provide more info about the host machine.”\n\nProposal: Add a read-only “Host dependency map” card to the Overview page showing the Mission Control request/runtime chain as a compact topology: public URL → Caddy/reverse proxy → Next.js app/service → Postgres → Hermes cron/Kanban/specialist profiles → external verification checks. Use status chips on each node, thin connector lines for flow, and a small “last checked” timestamp. Clicking a node can open existing diagnostics/log-context links if available. No restart/build/deploy controls.\n\nSources / research:\n- GitHub: gethomepage/homepage — https://github.com/gethomepage/homepage (JavaScript, 30k+ stars). Developer/homelab dashboards make service dependencies easier to scan with grouped service cards and API integration health.\n- GitHub: cockpit-project/cockpit — https://github.com/cockpit-project/cockpit (JavaScript, 14k+ stars). Server control panels separate host subsystems into understandable status surfaces instead of requiring shell inspection.\n- GitHub: grafana/grafana — https://github.com/grafana/grafana (TypeScript, 74k+ stars). Observability UIs use topology/context plus metrics so operators can see where a failing dependency sits in the chain.\n- YouTube search result: “12 Dashboard design tips for better data visualization” — https://www.youtube.com/watch?v=t3cAUt7sOQg. UX takeaway: dashboards should show relationships and exceptions, not just isolated counters.\n\nHow it applies to Mission Control: Existing host-summary/trends/diagnostics/timeline candidates cover host facts, resource history, and recent events. A dependency map adds the missing “how the pieces connect” view, helping Lane quickly understand whether an issue is at the proxy, app, database, cron/Kanban bridge, or verification path before approving specialist/Mart work.","source":"Jim","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","createdByInitial":"J"},"createdAt":"2026-06-08T10:56:46.693Z","updatedAt":"2026-06-08T10:57:05.475Z"},{"id":"58ae0c74-892a-4c48-8a51-ec7823f13dec","approvalId":"4661fe39-460a-457c-9d07-6cf46568c327","title":"Add host security posture card","description":"Research-backed approval candidate from the Mission Control approval-research cron.\n\nLane guidance for this run: “Lets enhance the Overview page. Provide more info about the host machine.”\n\nProposal: Add a compact Host Security Posture card to the Overview page.\n\nWhat to show:\n- OS/kernel + last package/security update age, with stale/unknown states clearly labeled.\n- Firewall/public exposure summary: listening ports, Caddy-public routes, and TLS certificate expiry status.\n- Recent auth/admin risk signals: failed SSH/sudo/login count from the last 24h when available.\n- A simple green/amber/red posture badge plus “last checked” timestamp.\n\nSources and research signals:\n- Twiddllo/NexusCtrl — https://github.com/Twiddllo/NexusCtrl — personal server management dashboard emphasizing real-time system metrics, remote process control, and local-first secure management.\n- stackryze/atom-homepage — https://github.com/stackryze/atom-homepage — modern self-hosted/homelab dashboard pattern combining service status, containers, and system resources in a lightweight Next.js surface.\n- AdminLTE color/accessibility guidance — https://adminlte.io/blog/best-admin-dashboard-color-schemes/ — reinforces using restrained dark palettes with clear semantic status colors instead of decorative noise.\n- YouTube research: “12 Dashboard design tips for better data visualization” (https://www.youtube.com/watch?v=XadepNiwqzw) and “Dark Mode Website Design | 6 Tips For Better Dark UI Design” (https://www.youtube.com/watch?v=_gKEUYarehE) support small high-signal cards, strong contrast, and immediate anomaly visibility.\n\nWhy it matters: Mission Control already has pending host summary/resource/storage/timeline ideas, but none explicitly answer “is this host exposed, stale, or risky right now?” This card would make the Overview page more operationally useful without requiring a full observability stack.\n\nScope note: UI/planning only. Implementation should avoid operational changes, builds, restarts, or privileged actions until Case/Mart approval flow requires them.","source":"Jim","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","createdByInitial":"J"},"createdAt":"2026-06-08T03:23:33.176Z","updatedAt":"2026-06-08T03:24:03.431Z"},{"id":"5b1e13ff-65b5-46f9-8a8f-4302bd693015","approvalId":"4bc9f300-0da1-4091-8e11-11651b9c6386","title":"Add host event timeline","description":"Research-backed approval candidate from the Mission Control approval-research cron. Lane guidance for this run: “Lets enhance the Overview page. Provide more info about the host machine.”\n\nProposal: Add a read-only “Host event timeline” strip/card on the Overview page showing recent machine and app lifecycle events: host boot/reboot time, Mission Control service restarts, detected build/deploy marker changes, cron tick freshness/anomalies, Postgres connectivity interruptions if already logged, disk/resource threshold crossings, and latest successful external HTTP verification. Use compact timestamped rows with severity chips and links to existing Jim Flow / approvals / task context where available. Keep this strictly observational; no restart/build/deploy buttons.\n\nSources / research:\n- GitHub: grafana/grafana — https://github.com/grafana/grafana (Go/TypeScript, 68k+ stars). Observability dashboards make incidents understandable by combining metrics with annotations/events, not just current gauges.\n- GitHub: MauriceNino/dashdot — https://github.com/MauriceNino/dashdot (TypeScript, 3.4k+ stars). Modern homelab/server dashboards emphasize concise host status plus recent state changes for quick operator confidence.\n- GitHub: kite-org/kite — https://github.com/kite-org/kite (TypeScript, 2.7k+ stars). Ops dashboards benefit from resource/lifecycle context and governance/audit cues in the same control surface.\n- YouTube: “12 Dashboard design tips for better data visualization” — https://www.youtube.com/watch?v=t3cAUt7sOQg. UX takeaway: dashboards should explain change over time and highlight exceptions rather than presenting isolated numbers.\n\nHow it applies to Mission Control: The current pending host summary, host trends, and runtime diagnostics ideas answer “what is the host state now?” A host event timeline adds the missing “what changed recently?” layer, which is valuable for Lane when a cron handoff stalls, a service was restarted, or host pressure correlates with agent failures. It is specific, implementable, and aligned with the approval-first model because it only surfaces read-only evidence.","source":"Jim","project":"Mission Control","priority":"orange","status":"completed","metadata":{"flowStage":"completed","briefSource":"description","assignedAgent":"jim","createdByInitial":"J"},"createdAt":"2026-06-08T02:22:31.042Z","updatedAt":"2026-06-08T02:23:03.485Z"},{"id":"cec77715-15b0-41c2-99c9-030ee520cf24","approvalId":"12ec8395-bacc-4a4f-898d-c82fd5c794a8","title":"Add host network health card","description":"Research-backed approval candidate from the Mission Control approval-research cron.\n\nLane guidance for this run: “Lets enhance the Overview page. Provide more info about the host machine.”\n\nProposal: Add a compact Host Network Health card to the Overview page showing the Mission Control host’s primary interface/IP, default gateway/DNS health, LAN/WAN reachability, TLS certificate expiry for mission.lanehomelab.com, and a small status strip for the public endpoint. Keep it read-only and lightweight; no restarts or network changes.\n\nSources and takeaways:\n- https://github.com/louislam/uptime-kuma — 87k+ stars; JavaScript/Vue self-hosted monitoring. Strong pattern: simple green/red uptime cards, cert/endpoint checks, and glanceable incident state.\n- https://github.com/Alice39s/kuma-mieru — Next.js/TypeScript/Recharts Uptime Kuma dashboard. Pattern: modern status dashboards can summarize many checks with compact cards and trend charts.\n- YouTube search: “developer tool dashboard design” found dashboard-design guidance emphasizing at-a-glance KPIs, clear status hierarchy, and drill-down only when needed.\n\nWhy it matters: Mission Control already manages agent/build/deploy flow, but Lane currently has limited host-network context on Overview. This would make “is the app reachable because the host/network is healthy?” answerable without opening terminals.\n\nAcceptance checklist:\n- Overview page has a Host Network Health card.\n- Shows read-only interface/IP, DNS/gateway/reachability, HTTPS/TLS expiry, and endpoint status when available.\n- Uses existing dark Tailwind styling and concise badges.\n- Handles unavailable metrics gracefully with “unknown” rather than failing the page.","source":"Jim","project":"Mission Control","priority":"orange","status":"completed","metadata":{"flowStage":"completed","briefSource":"description","assignedAgent":"jim","createdByInitial":"J"},"createdAt":"2026-06-08T02:08:03.522Z","updatedAt":"2026-06-08T02:08:21.640Z"},{"id":"cebbe0f1-fb58-4a86-a0f5-ebc889eec47e","approvalId":"666933a4-5b1e-4a7a-9a7e-30a51cd7deaf","title":"Add runtime diagnostics panel","description":"Research-backed approval candidate from the Mission Control approval-research cron. Lane guidance for this run: “Lets enhance the Overview page. Provide more info about the host machine.”\n\nProposal: Add a read-only “Runtime diagnostics” panel on the Overview page showing Mission Control’s local runtime dependencies and freshness: app process/service state, listening port/URL, Postgres connectivity status, Caddy/reverse-proxy reachability if already exposed safely, cron freshness for Jim and approval-research jobs, last successful Mart build/run marker if available, and the timestamp of the latest verified HTTP check. Use small status chips plus a detail drawer for raw diagnostics.\n\nSources / research:\n- GitHub: xaspx/hermes-control-interface — https://github.com/xaspx/hermes-control-interface (~740 stars, JavaScript). Hermes control-panel pattern: combine session/cron/system context so operators can see automation state from one place.\n- GitHub: EKKOLearnAI/hermes-web-ui — https://github.com/EKKOLearnAI/hermes-web-ui (~7k stars, TypeScript). Hermes dashboard pattern: scheduled jobs and usage/session analytics belong near operational controls.\n- GitHub: kite-org/kite — https://github.com/kite-org/kite (~2.7k stars, TypeScript). Ops dashboards benefit from governance and audit cues that clarify current system state without requiring shell access.\n- Linear Method — https://linear.app/method. Developer-tool takeaway: reduce friction by surfacing the next relevant state where decisions happen.\n\nHow it applies to Mission Control: Lane often needs to know whether the app, database, cron workers, and verification path are healthy before approving execution. A read-only diagnostics panel would improve confidence and debugging while preserving the approval-first separation: it observes state only and does not restart, deploy, build, or mutate services.","source":"Jim","project":"Mission Control","priority":"orange","status":"completed","metadata":{"flowStage":"completed","briefSource":"description","assignedAgent":"jim","createdByInitial":"J"},"createdAt":"2026-06-08T01:58:07.250Z","updatedAt":"2026-06-08T01:58:40.663Z"},{"id":"b14d78ca-a9df-461a-b66b-f483e11296db","approvalId":"1cf4c5d6-bf38-4ffa-9bbd-ecadd241ea8b","title":"Harden Mart completion gate: require restart and CSS asset verification","description":"Problem:\nA recent Mission Control CSS break happened after a Mart execution attempted a live `npm run build` during the split-pane workbench task. The build modified `.next/static` at 2026-06-04 16:38 UTC while mission-control had been running since 15:13 UTC. The build failed/exhausted budget before restart/rollback, leaving the running Next server referencing an old CSS hash (`/_next/static/chunks/0l5m_if-sb6bl.css`) that no longer existed on disk. Result: routes returned 200 but CSS returned 500 and the UI appeared unstyled.\n\nEvidence:\n- `~/.hermes/kanban/logs/t_c65d75f3.log` shows Mart ran `npm run build`; it failed with a JSX parse error, then the run exhausted iteration budget.\n- The Mission Control task remained in_progress / Mart Kanban blocked, but `.next` was already mutated.\n- Recent Mart completion metadata often records HTTP 200 checks, but not mandatory Next CSS/static asset sanity.\n\nRequirements:\n1. Mart must verify before moving ANY Mission Control task to completed every time.\n2. Verification must include:\n   - build success\n   - service restart after build\n   - localhost route check\n   - public route check\n   - Next CSS/static asset check (HTML-referenced CSS must return 200 locally and publicly)\n   - orphaned port-3000 / EADDRINUSE check after restart\n3. Mart must not run raw `npm run build` directly in the live tree unless wrapped by the approved atomic runbook.\n4. Update Mart runbook / SOUL / task prompt templates so execution uses `/home/lbrunson/mission-control/scripts/mart_exec.sh` or an equivalent atomic script that snapshots, builds, restarts, verifies CSS assets, and rolls back on failure.\n5. If build fails after mutating `.next`, Mart must restore the prior `.next` snapshot and restart/verify before marking itself blocked.\n6. Add a server-side or sync-bridge guard if practical: reject or warn on `mart_completed` unless completion evidence includes CSS/static asset verification, not just HTTP 200.\n7. Update Mission Control skills/runbooks if needed so future agents inherit the rule.\n8. Do not alter Jim pickup/research cron schedules.\n9. Do not deploy the hardening without the normal Case/Mart approval flow.","source":"User","project":"Mission Control","priority":"orange","status":"completed","metadata":{"flowStage":"completed","briefSource":"description","assignedAgent":"jim","createdByInitial":"L"},"createdAt":"2026-06-08T01:48:59.514Z","updatedAt":"2026-06-08T01:49:18.625Z"},{"id":"49404875-d665-43d0-baee-cba365a759ef","approvalId":"811ed51d-7f7f-439b-9fd8-1ee65069c883","title":"Add host summary card","description":"Research-backed approval candidate from the Mission Control approval-research cron. Lane guidance for this run: “Lets enhance the Overview page. Provide more info about the host machine.”\n\nProposal: Add a read-only “Host machine” card to the Overview page showing the current Mission Control host identity and baseline runtime facts: hostname, OS/distribution, kernel, uptime, CPU model/core count, memory total/used, root disk total/used, primary LAN IP, Node.js version, Mission Control service name/status if safely readable, and deployed git/build identifier if already available. Use compact dark-mode metric rows with copyable values and a “last refreshed” timestamp.\n\nSources / research:\n- GitHub: MauriceNino/dashdot — https://github.com/MauriceNino/dashdot (~3.4k stars, TypeScript). A simple modern server dashboard for private servers; standout pattern is a concise host overview that makes CPU, memory, storage, network, and OS state immediately scannable.\n- GitHub: ZingerLittleBee/ServerBee — https://github.com/ZingerLittleBee/ServerBee (~329 stars, Rust + React). Lightweight VPS monitoring with agent/server/web dashboard; reinforces showing host facts and resource health together for homelab operations.\n- YouTube: “EVERYTHING you need to know to build a Dashboard UI in 8 minutes” — https://www.youtube.com/watch?v=B7k5rOgmOGY. Dashboard takeaway: the overview should answer the operator’s first questions without forcing navigation.\n- shadcn/ui Card docs — https://ui.shadcn.com/docs/components/card and shadcn charts — https://ui.shadcn.com/charts. Fits Mission Control’s React/Tailwind style for dense, accessible dark cards and small metric visuals.\n\nHow it applies to Mission Control: The Overview page is the command center, but Lane currently lacks quick host context. A host summary card would make “what machine am I on, how healthy is it, and what version is running?” visible before starting approvals, Case handoffs, or Mart execution. Scope is read-only UI/API plumbing; no builds, restarts, deploys, or operational mutations.","source":"Jim","project":"Mission Control","priority":"orange","status":"completed","metadata":{"flowStage":"completed","briefSource":"description","assignedAgent":"jim","createdByInitial":"J"},"createdAt":"2026-06-08T01:05:04.902Z","updatedAt":"2026-06-08T01:05:11.939Z"},{"id":"1e727a5e-85d9-4741-a787-5af9a312af88","approvalId":"4cb5465b-2185-4ba5-8696-0b594b117ea1","title":"Add cron jobs to the Calendar page","description":"Add cron jobs to the Calendar page","source":"User","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","workedByInitial":"C","createdByInitial":"L"},"createdAt":"2026-06-06T16:03:44.096Z","updatedAt":"2026-06-08T00:13:57.371Z"},{"id":"375a6260-b500-4eb9-9bec-71ca5d5613a3","approvalId":"ce2ca9ef-eff3-4d7b-a50b-480051cad6fa","title":"Activity page still scrolls horizontally off the right side of the screen even after the full-height layout fix was completed.  PLAN ONLY.  Investigate the Activity page and identify the exact component causing horizontal overflow.  Requirements:  * Find the specific element(s) responsible for x-axis overflow. * Inspect:    * Activity page container hierarchy   * AgentActivityTimeline   * Activity/event cards   * Long text fields   * Tables   * Code/preformatted blocks   * Flex layouts missing `min-w-0`   * Fixed-width containers   * Width calculations that exceed the viewport * Determine the smallest possible fix. * Do not redesign the page. * Do not implement changes. * Do not deploy. * Return:    * Root cause   * Exact file(s) involved   * Exact code changes Mart should make   * Verification steps   * Rollback steps  Success criteria:  * Activity page fits within the viewport width. * No horizontal scrolling at normal desktop resolutions. * Existing functionality and layout preserved. * Fix is limited to the minimum required changes.","description":"Activity page still scrolls horizontally off the right side of the screen even after the full-height layout fix was completed.  PLAN ONLY.  Investigate the Activity page and identify the exact component causing horizontal overflow.  Requirements:  * Find the specific element(s) responsible for x-axis overflow. * Inspect:    * Activity page container hierarchy   * AgentActivityTimeline   * Activity/event cards   * Long text fields   * Tables   * Code/preformatted blocks   * Flex layouts missing `min-w-0`   * Fixed-width containers   * Width calculations that exceed the viewport * Determine the smallest possible fix. * Do not redesign the page. * Do not implement changes. * Do not deploy. * Return:    * Root cause   * Exact file(s) involved   * Exact code changes Mart should make   * Verification steps   * Rollback steps  Success criteria:  * Activity page fits within the viewport width. * No horizontal scrolling at normal desktop resolutions. * Existing functionality and layout preserved. * Fix is limited to the minimum required changes.","source":"User","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","assignedAgent":"mart","workedByInitial":"M","caseKanbanTaskId":"t_ddd72f1b","createdByInitial":"L","martKanbanTaskId":"t_3e877266","kanbanSyncHistory":[{"at":"2026-06-07T15:07:24.207Z","ids":{"caseKanbanTaskId":"t_ddd72f1b","plannerKanbanTaskId":"t_f71c6fc7"},"actor":"cern","event":"plan_submitted","summary":"Plan submitted to Case"},{"at":"2026-06-07T15:11:02.930Z","ids":{"caseKanbanTaskId":"t_ddd72f1b","martKanbanTaskId":"t_3e877266"},"actor":"case","event":"case_approved","summary":"Case approved; Mart execution queued"},{"at":"2026-06-07T15:11:59.047Z","ids":{"martKanbanTaskId":"t_3e877266"},"actor":"mart","event":"mart_started","summary":"Mart execution started"},{"at":"2026-06-07T15:16:24.763Z","ids":{"martKanbanTaskId":"t_3e877266"},"actor":"mart","event":"mart_completed","summary":"Activity page horizontal overflow fix deployed. Added min-w-0 to card div (line 185) and overflow-x-auto to pre block (line 252) in AgentActivityTimeline.tsx. Build passed (0 errors, 39 routes). Service restarted. HTTP 200 verified on /, /activity, and mission.lanehomelab.com. CSS chunk loads (HTTP 200). Rollback: revert both className changes in single file, rebuild, restart."}],"plannerKanbanTaskId":"t_f71c6fc7"},"createdAt":"2026-06-07T14:49:24.267Z","updatedAt":"2026-06-07T23:11:59.266Z"},{"id":"a6d40e95-8f75-42ca-b87f-a4dc040a0891","approvalId":"b4ce5b6e-7639-41f6-9c2f-a839cb635f80","title":"Set the activity page to fit the screen","description":"Set the activity page to fit the screen","source":"User","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","assignedAgent":"mart","workedByInitial":"M","caseKanbanTaskId":"t_94812a35","createdByInitial":"L","martKanbanTaskId":"t_c3a14ac2","kanbanSyncHistory":[{"at":"2026-06-07T13:49:44.791Z","ids":{"caseKanbanTaskId":"t_94812a35","plannerKanbanTaskId":"t_3b502a3f"},"actor":"cern","event":"plan_submitted","summary":"Plan submitted to Case"},{"at":"2026-06-07T13:52:38.662Z","ids":{"caseKanbanTaskId":"t_94812a35","martKanbanTaskId":"t_c3a14ac2"},"actor":"case","event":"case_approved","summary":"Case approved; Mart execution queued"},{"at":"2026-06-07T13:53:05.250Z","ids":{"martKanbanTaskId":"t_c3a14ac2"},"actor":"mart","event":"mart_started","summary":"Mart execution started"},{"at":"2026-06-07T13:55:21.651Z","ids":{"martKanbanTaskId":"t_c3a14ac2"},"actor":"mart","event":"mart_completed","summary":"Activity page full-height layout deployed. Outer div changed to flex flex-col h-[calc(100vh-4rem)], AgentActivityTimeline wrapped in flex-1 min-h-0 overflow-y-auto. Build passed (0 errors, 39 routes). Service restarted. HTTP 200 on both / and /activity. New layout classes confirmed in rendered HTML."}],"plannerKanbanTaskId":"t_3b502a3f"},"createdAt":"2026-06-07T13:33:21.169Z","updatedAt":"2026-06-07T23:11:47.606Z"},{"id":"91f080bb-7e64-4433-9899-11810df7eb59","approvalId":"4b1c87e1-8f2e-493c-a589-a38242e01203","title":"Create a new test page and add the link to the left menu","description":null,"source":"User","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","assignedAgent":"mart","workedByInitial":"M","caseKanbanTaskId":"t_65675a36","createdByInitial":"L","martKanbanTaskId":"t_3f4e9c8d","kanbanSyncHistory":[{"at":"2026-06-07T02:18:15.992Z","ids":{"caseKanbanTaskId":"t_65675a36","plannerKanbanTaskId":"t_d1d8cdf5"},"actor":"cern","event":"plan_submitted","summary":"Plan submitted to Case"},{"at":"2026-06-07T02:20:56.203Z","ids":{"caseKanbanTaskId":"t_65675a36","martKanbanTaskId":"t_3f4e9c8d"},"actor":"case","event":"case_approved","summary":"Case approved; Mart execution queued"},{"at":"2026-06-07T02:21:54.076Z","ids":{"martKanbanTaskId":"t_3f4e9c8d"},"actor":"mart","event":"mart_started","summary":"Mart execution started"},{"at":"2026-06-07T02:25:28.901Z","ids":{"martKanbanTaskId":"t_3f4e9c8d"},"actor":"mart","event":"mart_completed","summary":"Mart execution completed: /testing page created, nav link added, build passed, service restarted, HTTP 200 verified"}],"plannerKanbanTaskId":"t_d1d8cdf5"},"createdAt":"2026-06-07T02:15:28.339Z","updatedAt":"2026-06-07T11:25:20.879Z"},{"id":"80702612-21cc-433b-87eb-3b517800e5e9","approvalId":"374bb04d-f7b4-44d9-8032-a106d7fb8c59","title":"Remove the test page that was created during the last task.","description":"[Case rejected]\\nCase rejected plan: missing deletion of src/app/testing/page.tsx; /testing route would remain accessible after nav removal.\n\n[Lane decision]\nTEST NOTE: case_rejected lane feedback should be used by Cern\n\n[Lane decision]\nDelete the src/app/testing/page.tsx page","source":"User","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","assignedAgent":"mart","workedByInitial":"M","caseKanbanTaskId":"t_a100c313","createdByInitial":"L","kanbanSyncHistory":[{"at":"2026-06-06T12:49:29.846Z","ids":{"caseKanbanTaskId":"t_a100c313","plannerKanbanTaskId":"t_806b5a63"},"actor":"cern","event":"plan_submitted","summary":"Plan submitted to Case"},{"at":"2026-06-06T13:45:46.132Z","ids":{"caseKanbanTaskId":"t_a100c313"},"actor":"case","event":"case_rejected","summary":"Case rejected plan: missing deletion of src/app/testing/page.tsx; /testing route would remain accessible after nav removal."}],"plannerKanbanTaskId":"t_806b5a63","returnedFromCaseRejected":true},"createdAt":"2026-06-06T12:35:49.228Z","updatedAt":"2026-06-07T00:02:56.883Z"},{"id":"b8eb025f-293f-4178-b612-5a4d286c93e8","approvalId":"ac557ad7-e726-4a58-98cb-941b6e32b8d7","title":"Command palette UX: highlight + shortcuts","description":"Request improve Command Palette discoverability and keyboard UX: highlight matched query substrings, show a persistent Cmd/Ctrl+K hint somewhere in the sidebar header, and add accessibility roles/focus-trap to prevent background interaction. Reference: Chrome DevTools command palette usage patterns: https://www.youtube.com/watch?v=rrunW8FR0yU.\n\nRequested scope: update CommandPalette components to highlight matches (no layout shift), confirm active selection stays visible, and add aria-labels for screen readers.","source":"Jim","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","assignedAgent":"mart","workedByInitial":"M","caseKanbanTaskId":"t_67ed7a35","createdByInitial":"J","martKanbanTaskId":"t_a7a062bc","kanbanSyncHistory":[{"at":"2026-06-06T20:37:49.817Z","ids":{"caseKanbanTaskId":"t_67ed7a35"},"actor":"case","event":"plan_submitted","summary":"Case review complete: APPROVE with scope gaps noted"},{"at":"2026-06-06T20:39:15.821Z","ids":{"martKanbanTaskId":"t_a7a062bc"},"actor":"mart","event":"mart_started","summary":"Mart execution started"},{"at":"2026-06-06T20:45:58.265Z","ids":{"martKanbanTaskId":"t_a7a062bc"},"actor":"mart","event":"mart_completed","summary":"Command Palette highlight + shortcuts deployed. Build passed (0 errors, 38 routes). Service restarted. All verifications passed."}]},"createdAt":"2026-06-06T20:14:18.216Z","updatedAt":"2026-06-06T23:48:24.815Z"},{"id":"acc9e62d-88a7-4028-8864-a60c932c5ad2","approvalId":"177372eb-ff98-453a-8cb6-8622a906a6d6","title":"Case is missing from the Agents page.","description":null,"source":"User","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","workedByInitial":"C","caseKanbanTaskId":"t_a5585221","createdByInitial":"L","martKanbanTaskId":"t_8755ce8c","kanbanSyncHistory":[{"at":"2026-06-06T16:48:56.856Z","ids":{"caseKanbanTaskId":"t_a5585221","plannerKanbanTaskId":"t_99b2921a"},"actor":"cern","event":"plan_submitted","summary":"Plan submitted to Case"},{"at":"2026-06-06T16:51:47.536Z","ids":{"caseKanbanTaskId":"t_a5585221","martKanbanTaskId":"t_8755ce8c"},"actor":"case","event":"case_approved","summary":"Case approved; Mart execution queued"},{"at":"2026-06-06T16:52:37.076Z","ids":{"martKanbanTaskId":"t_8755ce8c"},"actor":"mart","event":"mart_started","summary":"Mart execution started"},{"at":"2026-06-06T17:00:33.890Z","ids":{"martKanbanTaskId":"t_8755ce8c"},"actor":"mart","event":"mart_completed","summary":"Case added to AGENT_ROSTER in capabilities + command-palette routes. Build passed (0 errors, 38 routes). Service restarted. Verified: 5 agents in both APIs, /agents page renders, external URL 200."}],"plannerKanbanTaskId":"t_99b2921a"},"createdAt":"2026-06-06T16:38:59.009Z","updatedAt":"2026-06-06T17:00:33.889Z"},{"id":"bbc1f27c-8e25-44c6-9503-24744717030f","approvalId":"13e9bf2b-9ea1-4755-a5de-46aefb892759","title":"Investigate  \"missionTaskId\": \"80702612-21cc-433b-87eb-3b517800e5e9\" was stuck. I moved it forward with /home/lbrunson/mission-control/scripts/mc-kanban-sync.sh \\ 80702612-21cc-433b-87eb-3b517800e5e9 \\ case_rejected \\ case \\ --case-kanban-id t_a100c313 \\ --summary \"Case rejected plan: missing deletion of src/app/testing/page.tsx; /testing route would remain accessible after nav removal.\", but it did not move it to Approvals \"Case Rejects\".","description":null,"source":"User","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","workedByInitial":"C","caseKanbanTaskId":"t_21fb109c","createdByInitial":"L","martKanbanTaskId":"t_02eb056b","kanbanSyncHistory":[{"at":"2026-06-06T15:06:12.510Z","ids":{"caseKanbanTaskId":"t_21fb109c","plannerKanbanTaskId":"t_6346a7be"},"actor":"cern","event":"plan_submitted","summary":"Plan submitted to Case"},{"at":"2026-06-06T15:08:40.156Z","ids":{"caseKanbanTaskId":"t_21fb109c","martKanbanTaskId":"t_02eb056b"},"actor":"case","event":"case_approved","summary":"Case approved; Mart execution queued"},{"at":"2026-06-06T15:09:42.994Z","ids":{"martKanbanTaskId":"t_02eb056b"},"actor":"mart","event":"mart_started","summary":"Mart execution started: adding idempotent case_rejected guard in kanban-sync/route.ts"},{"at":"2026-06-06T15:14:05.155Z","ids":{"martKanbanTaskId":"t_02eb056b"},"actor":"mart","event":"mart_completed","summary":"Idempotent case_rejected guard added to kanban-sync/route.ts. Build passed (0 errors, 38 routes). Service restarted. Verified: POST /api/tasks/kanban-sync with case_rejected on already-blocked task returns 200 (idempotent:true) instead of 400. External site 200 OK."}],"plannerKanbanTaskId":"t_6346a7be"},"createdAt":"2026-06-06T14:50:50.903Z","updatedAt":"2026-06-06T15:14:05.153Z"},{"id":"0d6d4137-f8b7-4ecf-bbd9-0c3a22414122","approvalId":"bbd92e54-a631-46c7-9de4-08a12a14d6a5","title":"Make the expand and colapse on the Activity page work the same as the Approvals page.","description":null,"source":"User","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","workedByInitial":"C","caseKanbanTaskId":"t_1bd73307","createdByInitial":"L","martKanbanTaskId":"t_b8d13410","kanbanSyncHistory":[{"at":"2026-06-06T14:36:08.548Z","ids":{"caseKanbanTaskId":"t_1bd73307","plannerKanbanTaskId":"t_4dd217ad"},"actor":"cern","event":"plan_submitted","summary":"Plan submitted to Case"},{"at":"2026-06-06T14:42:13.519Z","ids":{"caseKanbanTaskId":"t_1bd73307","martKanbanTaskId":"t_b8d13410"},"actor":"case","event":"case_approved","summary":"Case approved; Mart execution queued"},{"at":"2026-06-06T14:44:37.533Z","ids":{"martKanbanTaskId":"t_b8d13410"},"actor":"mart","event":"mart_started","summary":"Mart execution started"},{"at":"2026-06-06T14:46:30.467Z","ids":{"martKanbanTaskId":"t_b8d13410"},"actor":"mart","event":"mart_completed","summary":"Activity expand/collapse parity deployed. Chevron button toggle, title truncation, line-clamp-1 collapsed preview, cursor-pointer removed from card. Build 0 errors, 39 routes. All endpoints 200."}],"plannerKanbanTaskId":"t_4dd217ad"},"createdAt":"2026-06-06T14:17:04.885Z","updatedAt":"2026-06-06T14:46:30.464Z"},{"id":"b7639393-8ca1-4b87-b603-cf9cbd9d4109","approvalId":"b5138428-a028-4251-a423-9a288da6c0a3","title":"Add host resource trends","description":"Research-backed approval candidate from the Mission Control approval-research cron. Lane guidance for this run: “Lets enhance the Overview page. Provide more info about the host machine.”\n\nProposal: Add a compact “Host resource trends” card to the Overview page with CPU load, memory usage, disk usage, and network throughput shown as 1h/24h mini-sparklines or small threshold bars. Include quiet green/amber/red states and plain-language labels such as “CPU load normal”, “disk 82% used”, or “memory pressure rising”. Keep it read-only and separate from task/approval workflow controls.\n\nSources / research:\n- GitHub: MauriceNino/dashdot — https://github.com/MauriceNino/dashdot (~3.4k stars, TypeScript). Uses a modern dark server-dashboard language where resource cards and historical trends make a private server understandable at a glance.\n- GitHub: alamaby/nextjs-server-env-health-dashboard — https://github.com/alamaby/nextjs-server-env-health-dashboard (TypeScript, Next.js + Tailwind). Small but directly stack-relevant example of displaying server environment/health data in a Next.js dashboard.\n- YouTube: “Dark Mode UI Course 1” — https://www.youtube.com/watch?v=CZqcnxLd978. Dark UI takeaway: use layered surfaces, restrained accents, and clear contrast so status colors communicate without overwhelming the page.\n- Vercel Geist / design system — https://vercel.com/geist and https://vercel.com/design. Developer dashboards benefit from crisp typography, restrained monochrome surfaces, and precise status details.\n\nHow it applies to Mission Control: Host resource pressure can explain slow agent handoffs, failed browser sessions, or sluggish UI before deeper debugging. This complements existing queue/cost ideas by adding machine-level context to Overview, without duplicating the denied generic live health strip because it is specifically host-resource focused.","source":"Jim","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","caseKanbanTaskId":"t_eb8a888b","createdByInitial":"J","martKanbanTaskId":"t_aaadfd2e","kanbanSyncHistory":[{"at":"2026-06-06T11:29:49.999Z","ids":{"caseKanbanTaskId":"t_eb8a888b","plannerKanbanTaskId":"t_bc67406b"},"actor":"cern","event":"plan_submitted","summary":"Plan submitted to Case (replayed after fixing truncated UUID)"},{"at":"2026-06-06T11:29:50.090Z","ids":{"caseKanbanTaskId":"t_eb8a888b","martKanbanTaskId":"t_aaadfd2e"},"actor":"case","event":"case_approved","summary":"Case approved; Mart execution queued (replayed after fixing truncated UUID)"},{"at":"2026-06-06T11:29:50.190Z","ids":{"martKanbanTaskId":"t_aaadfd2e"},"actor":"mart","event":"mart_started","summary":"Mart execution started (replayed after fixing truncated UUID)"},{"at":"2026-06-06T11:29:50.281Z","ids":{"martKanbanTaskId":"t_aaadfd2e"},"actor":"mart","event":"mart_completed","summary":"Host resource trends card deployed; /api/host-metrics endpoint and Overview card are live"}],"plannerKanbanTaskId":"t_bc67406b"},"createdAt":"2026-06-05T13:09:01.496Z","updatedAt":"2026-06-06T11:29:50.281Z"},{"id":"b0d7e9ad-560c-4ecd-914e-a12e7751fb39","approvalId":"7a835eaf-e622-4e4e-9dfa-6c04aee6e6bb","title":"Sort completed task from most recent down. Only display 10completed task. In the Done Kanban show the total number of task like 10/30","description":null,"source":"User","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","workedByInitial":"C","caseKanbanTaskId":"t_1abad331","createdByInitial":"L","martKanbanTaskId":"t_a2a20bfd","kanbanSyncHistory":[{"at":"2026-06-05T12:21:36.857Z","ids":{"caseKanbanTaskId":"t_1abad331","plannerKanbanTaskId":"t_e150b2a8"},"actor":"cern","event":"plan_submitted","summary":"Plan submitted to Case"},{"at":"2026-06-05T12:24:09.652Z","ids":{"caseKanbanTaskId":"t_1abad331","martKanbanTaskId":"t_a2a20bfd"},"actor":"case","event":"case_approved","summary":"Case approved; Mart execution queued"},{"at":"2026-06-05T12:25:08.559Z","ids":{"martKanbanTaskId":"t_a2a20bfd"},"actor":"mart","event":"mart_started","summary":"Mart execution started"},{"at":"2026-06-05T12:31:05.211Z","ids":{"martKanbanTaskId":"t_a2a20bfd"},"actor":"mart","event":"mart_completed","summary":"Completed task sorting/count deployed. API ORDER BY updated_at DESC, client-side sort+slice to 10, header shows 10/31. Build passed, service restarted, all endpoints 200."}],"plannerKanbanTaskId":"t_e150b2a8"},"createdAt":"2026-06-05T11:34:51.356Z","updatedAt":"2026-06-05T12:31:05.208Z"},{"id":"0c37891e-8505-466f-ad29-ec0859b18f44","approvalId":"63d240c3-6257-4df0-93c2-dfd84675f442","title":"On Pending task with link, make those link clickable.","description":null,"source":"User","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","workedByInitial":"C","caseKanbanTaskId":"t_1eabf3d7","createdByInitial":"L","martKanbanTaskId":"t_b64e3bf9","kanbanSyncHistory":[{"at":"2026-06-05T11:49:56.900Z","ids":{"caseKanbanTaskId":"t_1eabf3d7","plannerKanbanTaskId":"t_0226d772"},"actor":"cern","event":"plan_submitted","summary":"Plan submitted to Case"},{"at":"2026-06-05T11:53:38.919Z","ids":{"caseKanbanTaskId":"t_1eabf3d7","martKanbanTaskId":"t_b64e3bf9"},"actor":"case","event":"case_approved","summary":"Case approved; Mart execution queued"},{"at":"2026-06-05T11:54:19.069Z","ids":{"martKanbanTaskId":"t_b64e3bf9"},"actor":"mart","event":"mart_started","summary":"Mart execution started: clickable pending-task links"},{"at":"2026-06-05T12:00:25.508Z","ids":{"martKanbanTaskId":"t_b64e3bf9"},"actor":"mart","event":"mart_completed","summary":"Clickable pending-task links deployed. 5 files: new linkify.ts + LinkifyText.tsx, modified approvals/page.tsx (3 render sites), tasks/page.tsx (1 render site), ApprovalBrief.tsx (brief field values). tsc clean, build 0 errors, service restarted, all endpoints 200."}],"plannerKanbanTaskId":"t_0226d772"},"createdAt":"2026-06-05T11:40:42.836Z","updatedAt":"2026-06-05T12:00:25.504Z"},{"id":"532d9014-a4a4-4e52-b1ef-fc8de039f4db","approvalId":"0097ab6f-9208-4157-bf4c-6ae4c8d9c4b9","title":"Add a split-pane workbench","description":"Sources:\n- https://linear.app/ (calm, fast, side-pane-heavy product surface)\n- https://www.youtube.com/watch?v=1gNOI9VATNE (Modern Admin Dashboard UI with Tailwind CSS – Clean & Responsive Design 2025)\n- https://github.com/cft0808/edict (OpenClaw multi-agent orchestration system with real-time dashboard and audit trails)\n\nRationale: Make task/agent rows open a right-side inspector for logs, prompt/context, and actions. Reduces context switching and fits developer workflows.","source":"Jim","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","assignedAgent":"mart","workedByInitial":"M","caseKanbanTaskId":"t_e0d801f4","createdByInitial":"J","martKanbanTaskId":"t_c65d75f3","kanbanSyncHistory":[{"at":"2026-06-04T15:38:50.298Z","ids":{"caseKanbanTaskId":"t_e0d801f4","plannerKanbanTaskId":"t_7802f866"},"actor":"cern","event":"plan_submitted","summary":"Plan submitted to Case"},{"at":"2026-06-04T15:41:56.175Z","ids":{"caseKanbanTaskId":"t_e0d801f4","martKanbanTaskId":"t_c65d75f3"},"actor":"case","event":"case_approved","summary":"Case approved; Mart execution queued"},{"at":"2026-06-04T15:47:33.081Z","ids":{"martKanbanTaskId":"t_c65d75f3"},"actor":"mart","event":"mart_started","summary":"Mart execution started"},{"at":"2026-06-04T22:51:55.188Z","ids":{"martKanbanTaskId":"t_c65d75f3"},"actor":"mart","event":"mart_blocked","summary":"Mart Kanban task is blocked; syncing stale Mission Control in_progress state"}],"plannerKanbanTaskId":"t_7802f866","awaitingApprovalAfterInfo":true},"createdAt":"2026-06-04T13:24:33.068Z","updatedAt":"2026-06-05T11:32:35.967Z"},{"id":"b0b8b600-08d0-4374-9c25-301c915870ef","approvalId":"197fecbf-c3f3-4403-b3f1-86bb7742405a","title":"On the Approvals page, put all of this in one row and remove  / ⌘V \"Attach images by either: Choosing files Dragging & dropping Pasting a screenshot (click here, then Ctrl+V / ⌘V)\"","description":null,"source":"User","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","workedByInitial":"C","caseKanbanTaskId":"t_6d955c8c","createdByInitial":"L","martKanbanTaskId":"t_e1926c7d","kanbanSyncHistory":[{"at":"2026-06-05T00:21:32.702Z","ids":{"caseKanbanTaskId":"t_6d955c8c","plannerKanbanTaskId":"t_ec2f76b9"},"actor":"cern","event":"plan_submitted","summary":"Plan submitted to Case"},{"at":"2026-06-05T00:24:17.226Z","ids":{"caseKanbanTaskId":"t_6d955c8c","martKanbanTaskId":"t_e1926c7d"},"actor":"case","event":"case_approved","summary":"Case approved; Mart execution queued"},{"at":"2026-06-05T00:25:19.842Z","ids":{"martKanbanTaskId":"t_e1926c7d"},"actor":"mart","event":"mart_started","summary":"Mart execution started"},{"at":"2026-06-05T00:30:39.268Z","ids":{"martKanbanTaskId":"t_e1926c7d"},"actor":"mart","event":"mart_completed","summary":"All verification passed: upload guidance renders as single inline sentence, no / ⌘V fragment, no ul/li, dropzone intact"}],"plannerKanbanTaskId":"t_ec2f76b9"},"createdAt":"2026-06-04T23:20:12.829Z","updatedAt":"2026-06-05T00:30:39.266Z"},{"id":"4d6ed40c-696b-462e-82b7-f6187e22cefb","approvalId":"0e1ad91c-6f09-4fbe-91d1-c1e451885641","title":"Clear linked task Needs more info state when Lane provides info","description":"Workflow fix: /api/approvals/update currently moves a Needs more info approval back to pending after Lane provides info, but the linked mc.tasks row can remain blocked with metadata.blockedReason='needs_more_info'. Requirements:\n- When approval update moves needs_more_info/case_rejected to pending, find linked mc.tasks rows parked for that approval.\n- If a linked task is blocked due needs_more_info, clear metadata.blockedReason/blockedDetails/assigneeInitial/assignedAgent and mark metadata.awaitingApprovalAfterInfo=true (or equivalent) so the UI no longer labels it Needs more info.\n- Do not bypass Lane approval: leave the linked task parked/blocked until Lane explicitly approves the pending approval, at which point existing approve action revives it to backlog.\n- Preserve Case Rejects behavior.\n- Add/adjust tests or route checks for needs_more_info -> update -> pending and linked task metadata cleanup.\n- Build must pass; Mart must restart and verify routes/static assets before completion.","source":"Jim","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","workedByInitial":"C","caseKanbanTaskId":"t_53cae506","createdByInitial":"J","martKanbanTaskId":"t_ec300a94","kanbanSyncHistory":[{"at":"2026-06-04T23:52:23.500Z","ids":{"caseKanbanTaskId":"t_53cae506","plannerKanbanTaskId":"t_07ee9f9e"},"actor":"cern","event":"plan_submitted","summary":"Plan submitted to Case"},{"at":"2026-06-04T23:55:51.675Z","ids":{"caseKanbanTaskId":"t_53cae506","martKanbanTaskId":"t_ec300a94"},"actor":"case","event":"case_approved","summary":"Case approved; Mart execution queued"},{"at":"2026-06-04T23:57:16.905Z","ids":{"martKanbanTaskId":"t_ec300a94"},"actor":"mart","event":"mart_started","summary":"Mart execution started"},{"at":"2026-06-05T00:08:50.540Z","ids":{"martKanbanTaskId":"t_ec300a94"},"actor":"mart","event":"mart_completed","summary":"Linked task metadata cleanup deployed. needs_more_info->pending clears blockedReason/assigneeInitial/blockedAt from linked mc.tasks and sets awaitingApprovalAfterInfo=true. case_rejected path preserved. Build passed, service restarted, all routes 200."}],"plannerKanbanTaskId":"t_07ee9f9e"},"createdAt":"2026-06-04T23:24:06.650Z","updatedAt":"2026-06-05T00:08:50.538Z"},{"id":"950cfe40-9709-4346-832d-217421d8cb23","approvalId":"fbd948dd-266f-458e-83e8-a9ddb0fca431","title":"Add agent brand accent tokens","description":"Research-backed UI/UX approval candidate from the Mission Control research cron.\n\nProposal: Add a small, documented set of semantic Tailwind/CSS tokens for agent identity and state accents, then apply them to agent badges, handoff chips, and status rails. Example direction: Hermes = cyan/blue speed-flow-connectivity accents; OpenClaw/Navigator/Mart mechanical work = amber/steel precision/power accents; Case review = violet/legal-gate accent. Keep the shell dark and restrained; avoid a broad redesign.\n\nSources / rationale:\n- Vercel Geist (https://vercel.com/geist) — a focused design system improves consistency and makes product surfaces feel intentional.\n- shadcn/ui Tailwind color reference (https://ui.shadcn.com/colors) — provides practical tokenized dark UI palettes suitable for Next.js + Tailwind.\n- GitHub: itq5/OpenClaw-Admin (https://github.com/itq5/OpenClaw-Admin, ~795 stars, Vue) — a modern AI agent management platform for OpenClaw Gateway + Hermes Agent; reinforces that agent-management UIs benefit from clear agent/model/channel identity.\n- GitHub: xaspx/hermes-control-interface (https://github.com/xaspx/hermes-control-interface, ~740 stars, JavaScript) — Hermes control panels commonly combine cron/session/system state, making consistent visual identity important for quick scanning.\n\nHow it applies to Mission Control: Agent lanes and handoffs are central to the product. Semantic accent tokens would make Cern/Navigator/Case/Mart states easier to distinguish while preserving the existing dark control-panel style.","source":"Jim","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","workedByInitial":"C","caseKanbanTaskId":"t_8f7f3af8","createdByInitial":"J","martKanbanTaskId":"t_e5d56ed5","kanbanSyncHistory":[{"at":"2026-06-04T23:21:12.811Z","ids":{"caseKanbanTaskId":"t_8f7f3af8","plannerKanbanTaskId":"t_36d8ef20"},"actor":"cern","event":"plan_submitted","summary":"Plan submitted to Case"},{"at":"2026-06-04T23:24:45.636Z","ids":{"caseKanbanTaskId":"t_8f7f3af8","martKanbanTaskId":"t_e5d56ed5"},"actor":"case","event":"case_approved","summary":"Case approved; Mart execution queued"},{"at":"2026-06-04T23:26:22.170Z","ids":{"martKanbanTaskId":"t_e5d56ed5"},"actor":"mart","event":"mart_started","summary":"Mart execution started"},{"at":"2026-06-04T23:35:14.772Z","ids":{"martKanbanTaskId":"t_e5d56ed5"},"actor":"mart","event":"mart_completed","summary":"Agent brand accent tokens deployed. 5 agents (cern=cyan, jim=indigo, case=violet, mart=amber, navigator=emerald) with CSS custom properties + @theme inline tokens in globals.css, shared AgentBadge component, refactored AgentActivityTimeline + WorkbenchPanel. Build passed, all pages 200 OK."}],"plannerKanbanTaskId":"t_36d8ef20"},"createdAt":"2026-06-04T13:22:10.858Z","updatedAt":"2026-06-04T23:35:14.769Z"},{"id":"d34eb0bd-7f4d-46d3-994a-81d5e143bb67","approvalId":"e7dce743-210a-4f67-8290-7dcaaea639c2","title":"On the Approvals page move the word Optional up next to the work Images and add parenthesis around it.","description":null,"source":"User","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","workedByInitial":"C","caseKanbanTaskId":"t_efb32200","createdByInitial":"L","martKanbanTaskId":"t_40397664","kanbanSyncHistory":[{"at":"2026-06-04T23:04:58.572Z","ids":{"caseKanbanTaskId":"t_efb32200","plannerKanbanTaskId":"t_b491d3c0"},"actor":"cern","event":"plan_submitted","summary":"Plan submitted to Case"},{"at":"2026-06-04T23:07:44.894Z","ids":{"caseKanbanTaskId":"t_efb32200","martKanbanTaskId":"t_40397664"},"actor":"case","event":"case_approved","summary":"Case approved; Mart execution queued"},{"at":"2026-06-04T23:08:30.850Z","ids":{"martKanbanTaskId":"t_40397664"},"actor":"mart","event":"mart_started","summary":"Mart execution started"},{"at":"2026-06-04T23:11:14.973Z","ids":{"martKanbanTaskId":"t_40397664"},"actor":"mart","event":"mart_completed","summary":"Approvals Optional label deployed: Images now reads Images (Optional), standalone Optional removed. Build passed, service restarted, 200 OK on /approvals and external URL."}],"plannerKanbanTaskId":"t_b491d3c0"},"createdAt":"2026-06-04T13:28:03.412Z","updatedAt":"2026-06-04T23:11:14.971Z"},{"id":"9614e80b-8367-49ef-8131-0f02f4a6b8e5","approvalId":"3ba0eeb8-03c3-43f4-8a6c-aaab82f8408b","title":"Add command palette","description":"Sources:\n- https://www.raycast.com/ (shortcut-first launcher aesthetic)\n- https://linear.app/ (purpose-built for product development with AI agents)\n- https://vercel.com/ (developer workflow shell)\n- https://www.youtube.com/watch?v=B7k5rOgmOGY (dashboard UI best practices)\n\nRationale: Add Ctrl/Cmd-K navigation and actions for tasks, approvals, agents, and cost so Mission Control feels faster and more operator-grade.","source":"Jim","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","workedByInitial":"C","caseKanbanTaskId":"t_67516f9e","createdByInitial":"J","martKanbanTaskId":"t_fce8c03c","kanbanSyncHistory":[{"at":"2026-06-04T14:52:22.227Z","ids":{"caseKanbanTaskId":"t_67516f9e","plannerKanbanTaskId":"t_1f114bed"},"actor":"cern","event":"plan_submitted","summary":"Plan submitted to Case"},{"at":"2026-06-04T14:57:44.466Z","ids":{"caseKanbanTaskId":"t_67516f9e","martKanbanTaskId":"t_fce8c03c"},"actor":"case","event":"case_approved","summary":"Case approved; Mart execution queued"},{"at":"2026-06-04T14:59:38.660Z","ids":{"martKanbanTaskId":"t_fce8c03c"},"actor":"mart","event":"mart_started","summary":"Mart execution started"},{"at":"2026-06-04T15:19:03.403Z","ids":{"martKanbanTaskId":"t_fce8c03c"},"actor":"mart","event":"mart_completed","summary":"Command palette deployed: Cmd+K opens overlay, fuzzy search across pages/tasks/approvals/agents/cost, keyboard nav, data-testid attributes for QA"}],"plannerKanbanTaskId":"t_1f114bed"},"createdAt":"2026-06-04T13:24:52.657Z","updatedAt":"2026-06-04T15:19:03.400Z"},{"id":"f75d5b19-3f09-49d1-97c2-5e1603332fba","approvalId":"49c83149-cd39-4299-b9e3-8769b461e595","title":"Add next-action overview card","description":"Research-backed UI/UX approval candidate from the Mission Control research cron.\n\nProposal: Add a compact “Next action” card to the Overview page that ranks the top 3 safe things Lane should look at now. Examples: oldest pending approval, stale specialist handoff, ready-for-Mart item waiting on approval/execution, or cost/queue warning. Each row should be a link/filter into the existing board, not an automatic mutation. Keep it deterministic and explain why each item is shown (“oldest pending”, “blocked 4h”, “queue below target”).\n\nSources / rationale:\n- YouTube: “12 Dashboard design tips for better data visualization” (https://www.youtube.com/watch?v=P8HB8dMfKNc) and “EVERYTHING you need to know to build a Dashboard UI in 8 minutes” (https://www.youtube.com/watch?v=t3cAUt7sOQg) — recurring dashboard guidance: prioritize decision-driving information and make the next operational question obvious.\n- Linear Method (https://linear.app/method) — strong developer-tool pattern around focus, prioritization, and reducing friction in triage workflows.\n- GitHub: kite-org/kite (https://github.com/kite-org/kite, ~2.7k stars, TypeScript) — modern ops dashboards combine resource state, governance, and audit cues so operators know where attention is needed.\n- GitHub: JPeetz/Hermes-Studio (https://github.com/JPeetz/Hermes-Studio, ~133 stars, TypeScript) — Hermes dashboards increasingly combine approvals, multi-agent orchestration, skills, memory, and terminal surfaces, making “what should I review next?” a useful control-panel primitive.\n\nHow it applies to Mission Control: The Overview page is becoming the command center. A read-only next-action card would reduce scanning across Approvals, Tasks, Case/Mart handoffs, and cost state without duplicating pending filter chips, SLA heatmaps, or live health strips.","source":"Jim","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","workedByInitial":"C","caseKanbanTaskId":"t_4638cb06","createdByInitial":"J","martKanbanTaskId":"t_2be4e893","kanbanSyncHistory":[{"at":"2026-06-04T14:18:43.167Z","ids":{"caseKanbanTaskId":"t_4638cb06","plannerKanbanTaskId":"t_d02a77ee"},"actor":"cern","event":"plan_submitted","summary":"Plan submitted to Case"},{"at":"2026-06-04T14:25:49.087Z","ids":{"caseKanbanTaskId":"t_4638cb06","martKanbanTaskId":"t_2be4e893"},"actor":"case","event":"case_approved","summary":"Case approved; Mart execution queued"},{"at":"2026-06-04T14:26:39.417Z","ids":{"martKanbanTaskId":"t_2be4e893"},"actor":"mart","event":"mart_started","summary":"Mart execution started"},{"at":"2026-06-04T14:40:23.352Z","ids":{"martKanbanTaskId":"t_2be4e893"},"actor":"mart","event":"mart_completed","summary":"Next Actions card deployed: API route (/api/overview/next-actions), client component (NextActionsCard.tsx), integrated into Overview page between status grid and suggestions. Build passed. Service restarted. HTTP 200 on page, API, and external URL."}],"plannerKanbanTaskId":"t_d02a77ee"},"createdAt":"2026-06-04T13:21:25.886Z","updatedAt":"2026-06-04T14:40:23.349Z"},{"id":"4e9386d5-b64c-4b05-9298-a359256b3728","approvalId":"e31daead-b779-48a4-8c6d-7debf416d5eb","title":"On the Jim Flow page make \"Job not found\" show \"Loading...\"  instead","description":null,"source":"User","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","workedByInitial":"C","caseKanbanTaskId":"t_c4c2268a","createdByInitial":"L","martKanbanTaskId":"t_9650ee5f","kanbanSyncHistory":[{"at":"2026-06-04T13:43:59.128Z","ids":{"caseKanbanTaskId":"t_c4c2268a","plannerKanbanTaskId":"t_1245a414"},"actor":"cern","event":"plan_submitted","summary":"Plan submitted to Case"},{"at":"2026-06-04T13:46:10.842Z","ids":{"caseKanbanTaskId":"t_c4c2268a","martKanbanTaskId":"t_9650ee5f"},"actor":"case","event":"case_approved","summary":"Case approved; Mart execution queued"},{"at":"2026-06-04T13:50:26.192Z","ids":{"martKanbanTaskId":"t_9650ee5f"},"actor":"mart","event":"mart_started","summary":"Mart execution started"},{"at":"2026-06-04T13:55:17.615Z","ids":{"martKanbanTaskId":"t_9650ee5f"},"actor":"mart","event":"mart_completed","summary":"Single-line text change deployed: 'Job not found' replaced with 'Loading...' in Status card on /jim-flow page. Build successful, service restarted, health check 200."}],"plannerKanbanTaskId":"t_1245a414"},"createdAt":"2026-06-04T13:28:06.603Z","updatedAt":"2026-06-04T13:55:17.611Z"},{"id":"fae32441-6a2d-477a-998e-a4e89d1cf354","approvalId":"a42dfb03-918e-48ae-9eec-b40354cb15e5","title":"Fix Jim Flow cron status/pause-resume and make guidance affect approval research","description":"Fix Jim Flow Approval Research Controls cron integration.\n\nCurrent bug:\nOn /jim-flow, the Approval Research Controls section shows:\n- Status: Job not found\n- Pause button disabled\n- Resume button visible but unusable\n\nRoot cause already investigated:\nThe real Hermes cron job exists and is active:\n- job_id: 0e179f4ae750\n- name: mission-control-approval-research-topup\n- schedule: 0 * * * *\n\nBut /api/cron/approval-research returns:\n{\"ok\":true,\"job\":null,\"guidance\":\"\"}\n\nThe API route at:\nsrc/app/api/cron/approval-research/route.ts\n\nruns:\nhermes cron list\n\nand parses an outdated table-style output:\nID Name Schedule Next Last Status\n\nCurrent Hermes CLI output is block-style:\n0e179f4ae750 [active]\n  Name:      mission-control-approval-research-topup\n  Schedule:  0 * * * *\n  Next run:  ...\n  Last run:  ...\n\nSo parseCronList() fails and returns null.\n\nRequirements:\n1. Fix /api/cron/approval-research so it reliably finds the approval-research cron job.\n2. Prefer reading ~/.hermes/cron/jobs.json directly, or otherwise correctly parse current block-style `hermes cron list --all` output.\n3. The endpoint must return the job when active or paused.\n4. Keep a strict allowlist for only this job:\n   - id: 0e179f4ae750\n   - name: mission-control-approval-research-topup\n5. Fix Pause/Resume behavior on /jim-flow:\n   - Pause enabled when job is active.\n   - Resume enabled when job is paused.\n   - Neither should show as available when the job is genuinely missing.\n6. Preserve separation:\n   - This controls only mission-control-approval-research-topup.\n   - Do not alter jim-pickup-watchdog schedule or behavior.\n7. Ensure guidance actually steers the cron:\n   - The UI currently writes guidance to /opt/mission-control/approval-research-guidance.json.\n   - Update the mission-control-approval-research-topup cron prompt so every run reads that file if present and treats it as Lane’s current instruction for what kind of approval candidates to research.\n   - If the file is missing or empty, use the existing default research goals.\n8. Verify:\n   - GET /api/cron/approval-research returns job.id = 0e179f4ae750.\n   - /jim-flow shows Running when active.\n   - Pause action pauses the cron and /jim-flow then shows Paused.\n   - Resume action resumes the cron and /jim-flow then shows Running.\n   - Saved guidance persists and is visible after refresh.\n   - The cron job prompt includes instructions to honor saved guidance.\n9. Do not run builds, restart services, deploy, or change operational state unless routed through Mart/approved execution flow.","source":"User","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","workedByInitial":"C","caseKanbanTaskId":"t_0f056283","createdByInitial":"L","martKanbanTaskId":"t_a60e7814","kanbanSyncHistory":[{"at":"2026-06-04T12:50:58.259Z","ids":{"caseKanbanTaskId":"t_0f056283","plannerKanbanTaskId":"t_6bbe7c4f"},"actor":"cern","event":"plan_submitted","summary":"Plan submitted to Case"},{"at":"2026-06-04T12:54:20.937Z","ids":{"caseKanbanTaskId":"t_0f056283","martKanbanTaskId":"t_a60e7814"},"actor":"case","event":"case_approved","summary":"Case approved; Mart execution queued"},{"at":"2026-06-04T12:55:27.224Z","ids":{"martKanbanTaskId":"t_a60e7814"},"actor":"mart","event":"mart_started","summary":"Mart execution started"},{"at":"2026-06-04T13:03:30.658Z","ids":{"martKanbanTaskId":"t_a60e7814"},"actor":"mart","event":"mart_completed","summary":"Jim Flow cron controls fixed: API now reads jobs.json directly, pause/resume verified working, cron prompt updated with GUIDANCE section"}],"plannerKanbanTaskId":"t_6bbe7c4f"},"createdAt":"2026-06-04T12:44:54.884Z","updatedAt":"2026-06-04T13:03:30.656Z"},{"id":"25463aa3-d910-4205-9219-796586a42fc1","approvalId":"f204609d-8ab3-446d-8033-e76500293b6d","title":"Jim Flow controls: pause approval-research cron and steer task discovery","description":"Add controls to the Jim Flow page for the cron job that looks for tasks to add to the Approvals page.\n\nContext:\n- Existing Hermes cron job: mission-control-approval-research-topup (job_id 0e179f4ae750), runs hourly and adds researched items to Approvals.\n- Lane wants to control this from the Jim Flow page.\n\nRequirements:\n1) Jim Flow page shows current state of the approval-research/top-up cron: enabled/running vs paused, schedule/last run/next run if available.\n2) Provide a pause/resume control for that cron from the Jim Flow page.\n3) Provide a guidance field where Lane can tell Jim what kind of tasks to look for next (for example: UI polish, automation reliability, cost monitoring, edge infra, etc.).\n4) Persist that guidance somewhere the cron job can read on future runs.\n5) Update the approval-research cron prompt/script path to read and honor the stored guidance before generating new approval candidates.\n6) Keep this separate from the Jim pickup watchdog; do not change the existing pickup cron schedule.\n7) Make the UI clear that this only controls the approval-research/top-up cron, not the backlog pickup/dispatch cron.\n\nSuggested implementation shape:\n- Add/extend a Mission Control API for Jim Flow cron controls rather than requiring Lane to use Hermes CLI directly.\n- Store configuration in a small JSON/state file or Postgres-backed metadata table, whichever matches existing Jim Flow patterns.\n- If direct Hermes cron pause/resume from the web app needs a wrapper, use a narrowly scoped server-side command or script with explicit job-id allowlist.","source":"User","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","workedByInitial":"C","caseKanbanTaskId":"t_dd3e7dd0","createdByInitial":"L","martKanbanTaskId":"t_4341fb21","kanbanSyncHistory":[{"at":"2026-06-04T12:09:07.932Z","ids":{"caseKanbanTaskId":"t_dd3e7dd0","plannerKanbanTaskId":"t_709ca40c"},"actor":"cern","event":"plan_submitted","summary":"Plan submitted to Case"},{"at":"2026-06-04T12:11:26.311Z","ids":{"caseKanbanTaskId":"t_dd3e7dd0","martKanbanTaskId":"t_4341fb21"},"actor":"case","event":"case_approved","summary":"Case approved; Mart execution queued"},{"at":"2026-06-04T12:12:21.290Z","ids":{"martKanbanTaskId":"t_4341fb21"},"actor":"mart","event":"mart_started","summary":"Mart execution started"},{"at":"2026-06-04T12:24:58.962Z","ids":{"martKanbanTaskId":"t_4341fb21"},"actor":"mart","event":"mart_completed","summary":"Jim Flow cron controls deployed: 4 API routes + Approval Research Controls section on /jim-flow. All endpoints verified 200."}],"plannerKanbanTaskId":"t_709ca40c"},"createdAt":"2026-06-04T11:50:50.200Z","updatedAt":"2026-06-04T12:24:58.959Z"},{"id":"469c94d0-8458-461b-8af3-5698c5e99ea6","approvalId":"57ee0b22-844c-44b2-a032-9ee8c5b9270b","title":"Add dashboard density toggle","description":"Research-backed UI/UX candidate for Mission Control.\n\nIdea: Add a global dashboard density toggle (Comfortable / Compact / Focus) that adjusts Kanban card padding, metadata rows, table row height, and sidebar/card spacing. Persist per browser.\n\nWhy it matters: Mission Control mixes approvals, tasks, agents, and sync history; a density control lets Lane scan many operational items hourly without losing the more readable current layout.\n\nSources / inspiration:\n- TailAdmin — https://tailadmin.com/ and https://github.com/TailAdmin/free-nextjs-admin-dashboard (Next.js + Tailwind admin template; dashboard/table/card layouts; ~2.4k GitHub stars observed during research)\n- Tremor — https://tremor.so/ and https://github.com/tremorlabs/tremor (Tailwind dashboard components for charts/data; ~3.4k stars observed)\n- shadcn/ui — https://ui.shadcn.com/ (customizable component foundation, good fit for Mission Control’s React/Tailwind stack)\n\nImplementation sketch: add a small segmented control in the top dashboard shell or sidebar footer; apply a root data-density attribute and Tailwind variants/classes for card/table/Kanban spacing. Keep default as Comfortable.","source":"Jim","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","workedByInitial":"C","caseKanbanTaskId":"t_8b1bdf2f","createdByInitial":"J","martKanbanTaskId":"t_ec922299","kanbanSyncHistory":[{"at":"2026-06-03T22:19:05.475Z","ids":{"caseKanbanTaskId":"t_8b1bdf2f","plannerKanbanTaskId":"t_c8cf7433"},"actor":"cern","event":"plan_submitted","summary":"Plan submitted to Case"},{"at":"2026-06-03T22:21:05.386Z","ids":{"caseKanbanTaskId":"t_8b1bdf2f","martKanbanTaskId":"t_ec922299"},"actor":"case","event":"case_approved","summary":"Case approved; Mart execution queued"},{"at":"2026-06-03T22:22:09.764Z","ids":{"martKanbanTaskId":"t_ec922299"},"actor":"mart","event":"mart_started","summary":"Mart execution started"},{"at":"2026-06-03T22:34:15.108Z","ids":{"martKanbanTaskId":"t_ec922299"},"actor":"mart","event":"mart_completed","summary":"Density toggle deployed: DensityContext + DensityToggle components, data-density attribute on <html>, CSS custom properties for 3 levels (Comfortable/Compact/Focus), density-aware overrides for all card/table/nav components. All pages verified 200."}],"plannerKanbanTaskId":"t_c8cf7433"},"createdAt":"2026-06-03T13:44:11.330Z","updatedAt":"2026-06-03T22:34:15.105Z"},{"id":"c0279171-0ff3-41fc-b31c-03311cb5e11c","approvalId":"fe0ce087-bdbd-4a3b-92c6-b90c42930afb","title":"Add source preview cards","description":"Research candidate: Source preview cards for approval/research items.\n\nSources:\n- Linear: https://linear.app — strong pattern of compact issue metadata, linked context, and low-friction review surfaces.\n- Vercel: https://vercel.com — deployment/detail pages use concise status/context cards to make technical review faster.\n- Raycast: https://www.raycast.com — command-style information density: titles, subtitles, icons, and actions in a scannable list.\n- YouTube search result: https://www.youtube.com/watch?v=vf30Nim9Oeg — Shadcn/admin dashboard pattern takeaway: reusable cards and consistent source/context modules make admin UIs faster to build and scan.\n\nRationale / Mission Control fit:\nResearch-generated approvals currently store source URLs inside long descriptions. Add a small “Sources” section on approval detail/cards that auto-detects URLs from the description and renders each as a compact preview row: domain favicon/icon, title/domain, source type badge (GitHub/YouTube/article), and open-link action.\n\nImplementation scope:\n- Parse URLs client-side from approval.description for v1; no schema migration required.\n- Render collapsed previews on approval cards and fuller previews in the detail/expanded state.\n- Add source-type badges and consistent external-link affordance.\n- Do not fetch untrusted metadata server-side in v1; use URL/domain-based labels to avoid operational risk.\n\nWhy it matters:\nThis makes approval review faster and more trustworthy, especially as the research cron creates design proposals with multiple sources.","source":"Jim","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","workedByInitial":"C","caseKanbanTaskId":"t_fbb84c6e","createdByInitial":"J","martKanbanTaskId":"t_8d54e454","kanbanSyncHistory":[{"at":"2026-06-03T22:04:17.295Z","ids":{"caseKanbanTaskId":"t_fbb84c6e","plannerKanbanTaskId":"t_439af909"},"actor":"cern","event":"plan_submitted","summary":"Plan submitted to Case"},{"at":"2026-06-03T22:05:45.004Z","ids":{"caseKanbanTaskId":"t_fbb84c6e","martKanbanTaskId":"t_8d54e454"},"actor":"case","event":"case_approved","summary":"Case approved; Mart execution queued"},{"at":"2026-06-03T22:06:16.489Z","ids":{"martKanbanTaskId":"t_8d54e454"},"actor":"mart","event":"mart_started","summary":"Mart execution started"},{"at":"2026-06-03T22:11:51.774Z","ids":{"martKanbanTaskId":"t_8d54e454"},"actor":"mart","event":"mart_completed","summary":"SourcePreview deployed: new SourcePreview component + url-utils lib, integrated into all 3 approval card columns (Pending, Needs more info, Case Rejects). Client-side URL parsing only, no schema changes. Build passed, page returns 200."}],"plannerKanbanTaskId":"t_439af909"},"createdAt":"2026-06-03T13:45:21.866Z","updatedAt":"2026-06-03T22:11:51.771Z"},{"id":"b1ac0082-6224-4a1b-bdcf-09e5a12b7a58","approvalId":"edfd97ab-2a73-4fd3-b764-d794987912fb","title":"Add approval brief checklist","description":"Research-backed UI/UX candidate for Mission Control.\n\nIdea: Add an “Approval brief” section/card for each approval with structured fields: Goal, Scope, Acceptance checklist, Risk/ops impact, Linked sources, and Suggested specialist. This is not a source preview; it is a concise decision brief generated/displayed from the approval description so Lane can approve/deny faster.\n\nWhy it matters: The current approval queue contains design/implementation requests with long context. A structured brief would improve review speed and reduce ambiguity before Cern/Navigator planning.\n\nSources / inspiration:\n- Linear Method — https://linear.app/method (focus, clear practices, high-signal work descriptions)\n- Vercel Design — https://vercel.com/design (polished developer-dashboard communication and concise product presentation)\n- Raycast Brand — https://www.raycast.com/brand (command-center aesthetic; fast decision-making and scannable actions)\n- YouTube research queries reviewed: “AI agent dashboard UI design”, “developer tool dashboard design”, “dark mode control panel UI”, “modern admin dashboard design 2025” — common takeaway: modern dark dashboards use concise cards, clear hierarchy, and visible next actions.\n\nImplementation sketch: add a collapsible brief panel in ApprovalCard; parse checklist bullets from description when present and otherwise show editable/derived placeholders. Keep the original full description available below.","source":"Jim","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","workedByInitial":"C","caseKanbanTaskId":"t_0b5381e8","createdByInitial":"J","martKanbanTaskId":"t_f1e07b80","kanbanSyncHistory":[{"at":"2026-06-03T21:34:33.530Z","ids":{"caseKanbanTaskId":"t_0b5381e8","plannerKanbanTaskId":"t_229df2d7"},"actor":"cern","event":"plan_submitted","summary":"Plan submitted to Case"},{"at":"2026-06-03T21:37:59.864Z","ids":{"caseKanbanTaskId":"t_0b5381e8","martKanbanTaskId":"t_f1e07b80"},"actor":"case","event":"case_approved","summary":"Case approved; Mart execution queued"},{"at":"2026-06-03T21:38:56.925Z","ids":{"martKanbanTaskId":"t_f1e07b80"},"actor":"mart","event":"mart_started","summary":"Mart execution started"},{"at":"2026-06-03T21:45:38.008Z","ids":{"martKanbanTaskId":"t_f1e07b80"},"actor":"mart","event":"mart_completed","summary":"ApprovalBrief component deployed: collapsible brief panel in all 3 approval columns (Pending, Needs more info, Case Rejects). Parses ## headers from description, falls back to first-sentence heuristic. Build passed, all pages return 200."}],"plannerKanbanTaskId":"t_229df2d7"},"createdAt":"2026-06-03T13:43:29.974Z","updatedAt":"2026-06-03T21:45:38.006Z"},{"id":"3a349c6e-bb17-4c72-8d85-c254b786556e","approvalId":"c8eb453b-f831-4f85-9d29-2fcbe487962f","title":"Add agent flow status rails","description":"Research-backed UI/UX candidate for Mission Control.\n\nIdea: Add subtle status rails on task/approval cards that visualize the handoff path: Jim triage → specialist planning → Case review → Mart execution → verified. Use thin left-edge rails or small connected dots, not a large orchestration graph.\n\nWhy it matters: Mission Control’s core value is agent coordination. A lightweight flow rail would make stuck handoffs obvious while avoiding the complexity of the previously denied full orchestration graph.\n\nSources / inspiration:\n- Flowise — https://github.com/FlowiseAI/Flowise (~53k stars observed; visual AI agent/workflow builder; strong node/flow language)\n- Dify — https://github.com/langgenius/dify (~143k stars observed; agentic workflow platform; emphasizes clear workflow states)\n- OpenStatus — https://github.com/openstatusHQ/openstatus (~8.7k stars observed; observability/status UI patterns for operational state)\n- Visual language notes: Hermes should feel like speed/flow/connectivity; OpenClaw should feel like power/precision/mechanical. Thin luminous rails and precise step dots fit that direction.\n\nImplementation sketch: add a reusable FlowRail component that reads task status + metadata. Show completed/current/blocked steps with accessible labels and restrained dark-mode colors.","source":"Jim","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","workedByInitial":"C","caseKanbanTaskId":"t_b8cb2df5","createdByInitial":"J","martKanbanTaskId":"t_9f6410d6","kanbanSyncHistory":[{"at":"2026-06-03T21:08:18.038Z","ids":{"caseKanbanTaskId":"t_b8cb2df5","plannerKanbanTaskId":"t_0ed4befa"},"actor":"cern","event":"plan_submitted","summary":"Plan submitted to Case"},{"at":"2026-06-03T21:10:33.794Z","ids":{"caseKanbanTaskId":"t_b8cb2df5","martKanbanTaskId":"t_9f6410d6"},"actor":"case","event":"case_approved","summary":"Case approved; Mart execution queued"},{"at":"2026-06-03T21:11:41.958Z","ids":{"martKanbanTaskId":"t_9f6410d6"},"actor":"mart","event":"mart_started","summary":"Mart execution started"},{"at":"2026-06-03T21:20:40.646Z","ids":{"martKanbanTaskId":"t_9f6410d6"},"actor":"mart","event":"mart_completed","summary":"FlowRail component deployed: 5-step agent flow status rail on task cards (Triage -> Planning -> Case -> Execution -> Verified). Build passed, service returns 200."}],"plannerKanbanTaskId":"t_0ed4befa"},"createdAt":"2026-06-03T13:42:30.087Z","updatedAt":"2026-06-03T21:20:40.644Z"},{"id":"21fa1b96-c19c-495c-8bda-b38381855c61","approvalId":"bf298ac4-86b1-43cc-b5d3-e8df01b89ceb","title":"Add duplicate approval warning","description":"Research-backed UI/UX candidate for Mission Control.\n\nIdea: Before a pending approval is accepted or dispatched, show a small “possible duplicate” warning when the title/description/sources resemble an existing pending/approved/denied approval. Include matched approval titles, status, and a “review anyway” affordance.\n\nSources:\n- Linear: https://linear.app — issue surfaces emphasize linked/related context and fast triage to reduce duplicate work.\n- GitHub search result: https://github.com/builderz-labs/mission-control (5,145★, TypeScript) — agent orchestration dashboards benefit from spend/workflow governance, where duplicate requests directly waste agent time.\n- YouTube: “12 Dashboard design tips for better data visualization” https://www.youtube.com/watch?v=t3cAUt7sOQg — reinforces surfacing decision-critical context at the point of action instead of burying it elsewhere.\n\nWhy it matters: This research cron has already generated similar approval concepts over time. A duplicate warning is a specific, implementable reliability improvement that prevents repeat planning/execution cycles and keeps the approval queue higher signal.","source":"Jim","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","workedByInitial":"C","caseKanbanTaskId":"t_dcf29d45","createdByInitial":"J","martKanbanTaskId":"t_da869a9d","kanbanSyncHistory":[{"at":"2026-06-03T16:32:37.200Z","ids":{"caseKanbanTaskId":"t_dcf29d45","plannerKanbanTaskId":"t_b008ee28"},"actor":"cern","event":"plan_submitted","summary":"Plan submitted to Case"},{"at":"2026-06-03T16:41:09.865Z","ids":{"caseKanbanTaskId":"t_dcf29d45","martKanbanTaskId":"t_da869a9d"},"actor":"case","event":"case_approved","summary":"Case approved; Mart execution queued"},{"at":"2026-06-03T16:43:32.655Z","ids":{"martKanbanTaskId":"t_da869a9d"},"actor":"mart","event":"mart_started","summary":"Mart execution started"},{"at":"2026-06-03T17:13:00.737Z","ids":{"martKanbanTaskId":"t_da869a9d"},"actor":"mart","event":"mart_completed","summary":"Duplicate approval warning deployed: /api/approvals/check-duplicates route with pg_trigram similarity, DuplicateWarning React component in pending cards, amber-themed dismissible warning UI"}],"plannerKanbanTaskId":"t_b008ee28"},"createdAt":"2026-06-03T13:41:42.207Z","updatedAt":"2026-06-03T17:13:00.735Z"},{"id":"606e64ad-257f-48d6-af7a-a61241fa6e62","approvalId":"cba410c5-cce5-4181-a443-24c75f80a606","title":"Make the next 5 Task suggestions be related to the Overview page","description":null,"source":"User","project":"Mission Control","priority":"orange","status":"completed","metadata":{"flowStage":"completed","workedByInitial":"C","caseKanbanTaskId":"t_46cec7ab","createdByInitial":"L","martKanbanTaskId":"t_9dd41649","kanbanSyncHistory":[{"at":"2026-06-03T13:36:22.033Z","ids":{"caseKanbanTaskId":"t_46cec7ab","plannerKanbanTaskId":"t_7b41a9cc"},"actor":"cern","event":"plan_submitted","summary":"Plan submitted to Case"},{"at":"2026-06-03T13:40:46.033Z","ids":{"martKanbanTaskId":"t_9dd41649"},"actor":"mart","event":"mart_started","summary":"Mart execution started"},{"at":"2026-06-03T13:48:16.003Z","ids":{"martKanbanTaskId":"t_9dd41649"},"actor":"mart","event":"mart_completed","summary":"SuggestionsCard deployed: dynamic backlog task suggestions on Overview page. API /api/tasks/suggestions returns up to 5 items. Build passed, page returns 200."}],"plannerKanbanTaskId":"t_7b41a9cc"},"createdAt":"2026-06-03T13:28:01.985Z","updatedAt":"2026-06-03T16:15:49.688Z"},{"id":"172b62b0-9dd4-4336-b8a0-eed94c541be4","approvalId":"60638d52-733d-4e78-b391-2ee80898a28c","title":"On the approvals move the Deny, Approve → Backlog and Approve → Jim buttons above the task so the task can use the full width of the Kanban","description":null,"source":"User","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","workedByInitial":"C","caseKanbanTaskId":"t_96e3b5e3","createdByInitial":"L","martKanbanTaskId":"t_0b8e1cd0","kanbanSyncHistory":[{"at":"2026-06-03T12:36:32.231Z","ids":{"caseKanbanTaskId":"t_96e3b5e3","plannerKanbanTaskId":"t_54c2a137"},"actor":"cern","event":"plan_submitted","summary":"Plan submitted to Case"},{"at":"2026-06-03T12:37:52.226Z","ids":{"caseKanbanTaskId":"t_96e3b5e3","martKanbanTaskId":"t_0b8e1cd0"},"actor":"case","event":"case_approved","summary":"Case approved; Mart execution queued"},{"at":"2026-06-03T12:39:19.171Z","ids":{"martKanbanTaskId":"t_0b8e1cd0"},"actor":"mart","event":"mart_started","summary":"Mart execution started"},{"at":"2026-06-03T12:55:25.529Z","ids":{"martKanbanTaskId":"t_0b8e1cd0"},"actor":"mart","event":"mart_completed","summary":"Approvals action buttons moved above card content. All 3 columns updated: Pending, Needs more info, Case Rejects. Build 200, page 200."}],"plannerKanbanTaskId":"t_54c2a137"},"createdAt":"2026-06-03T12:01:39.700Z","updatedAt":"2026-06-03T12:55:25.526Z"},{"id":"48d85539-bf07-4eb6-ac9b-c279fb84a600","approvalId":"42508b1a-f4e6-4fb0-810e-8870fa0a516b","title":"Add handoff SLA heatmap","description":"Research candidate: Handoff SLA heatmap for Mission Control.\n\nSources:\n- GitHub: https://github.com/hoangsonww/Claude-Code-Agent-Monitor — Claude Code monitoring dashboard, 432 stars observed via GitHub API; TypeScript/React/Vite/Tailwind/WebSockets; emphasizes live analytics, agent activity, tool usage, and subagent orchestration.\n- GitHub: https://github.com/catlog22/maestro-flow — workflow orchestration CLI with MCP endpoint support and multi-agent dashboard, 353 stars observed via GitHub API; relevant to surfacing workflow state rather than only static task lists.\n- YouTube: https://www.youtube.com/watch?v=P8HB8dMfKNc — dashboard design tutorial takeaway: prioritize the few metrics that drive decisions, with clear grouping and readable visual hierarchy.\n- Article: https://www.browserlondon.com/blog/2025/05/05/best-dashboard-designs-and-trends-in-2025/ — dashboard trend guidance around actionable insight, clean hierarchy, and making anomalies easy to spot.\n\nRationale / Mission Control fit:\nMission Control already tracks handoffs across Jim, Cern/Navigator, Case, and Mart, but bottlenecks require reading individual cards. Add a compact heatmap/table that shows average and oldest time-in-lane for backlog, planning, case review, ready_for_mart, in_progress, needs-info, and completed.\n\nImplementation scope:\n- Read existing task timestamps/metadata only; no workflow changes.\n- Add a dashboard card with lane rows, count, oldest item age, average age, and red/amber/green SLA coloring.\n- Link each row to the relevant filtered task/approval view when possible.\n- Keep it read-only and safe for Jim’s approval-first workflow.\n\nWhy it matters:\nThis gives Lane an instant answer to “where is work stuck?” and complements existing queue/cost views without duplicating the agent timeline, risk badges, or command palette proposals.","source":"Jim","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","workedByInitial":"C","caseKanbanTaskId":"t_7e69368a","createdByInitial":"J","martKanbanTaskId":"t_867e54a8","kanbanSyncHistory":[{"at":"2026-06-03T00:49:25.323Z","ids":{"caseKanbanTaskId":"t_7e69368a","plannerKanbanTaskId":"t_363cad9b"},"actor":"cern","event":"plan_submitted","summary":"Plan submitted to Case"},{"at":"2026-06-03T00:52:31.675Z","ids":{"caseKanbanTaskId":"t_7e69368a","martKanbanTaskId":"t_867e54a8"},"actor":"case","event":"case_approved","summary":"Case approved; Mart execution queued"},{"at":"2026-06-03T00:53:56.804Z","ids":{"martKanbanTaskId":"t_867e54a8"},"actor":"mart","event":"mart_started","summary":"Mart execution started"},{"at":"2026-06-03T00:59:13.990Z","ids":{"martKanbanTaskId":"t_867e54a8"},"actor":"mart","event":"mart_completed","summary":"SLA Heatmap implemented and deployed. API /api/tasks/sla-heatmap returns 200 with 7 lanes. Page /sla-heatmap returns 200. Sidebar nav entry added. No regressions on /api/tasks, /api/agents/capabilities, /tasks."}],"plannerKanbanTaskId":"t_363cad9b"},"createdAt":"2026-06-03T00:09:15.868Z","updatedAt":"2026-06-03T00:59:13.989Z"},{"id":"79e9343f-e192-4e87-9100-9620ceb78818","approvalId":"f84861cc-1358-4542-ba7d-16978d57af58","title":"There should be a way for me to send an Approval to Jim instead of backlog.","description":"An example would be I want a specific new feature on the website. I would task Jim with finding options for that feature.","source":"User","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","workedByInitial":"C","caseKanbanTaskId":"t_94b4ad90","createdByInitial":"L","martKanbanTaskId":"t_7575be13","kanbanSyncHistory":[{"at":"2026-06-03T00:21:59.643Z","ids":{"caseKanbanTaskId":"t_94b4ad90","plannerKanbanTaskId":"t_736d2171"},"actor":"cern","event":"plan_submitted","summary":"Plan submitted to Case"},{"at":"2026-06-03T00:25:20.284Z","ids":{"caseKanbanTaskId":"t_94b4ad90","martKanbanTaskId":"t_7575be13"},"actor":"case","event":"case_approved","summary":"Case approved; Mart execution queued"},{"at":"2026-06-03T00:26:00.564Z","ids":{"martKanbanTaskId":"t_7575be13"},"actor":"mart","event":"mart_started","summary":"Mart execution started"},{"at":"2026-06-03T00:30:57.380Z","ids":{"martKanbanTaskId":"t_7575be13"},"actor":"mart","event":"mart_completed","summary":"Send to Jim feature implemented and verified. Approve → Jim button added, send_to_jim API action working, build passes."}],"plannerKanbanTaskId":"t_736d2171"},"createdAt":"2026-06-03T00:05:41.999Z","updatedAt":"2026-06-03T00:30:57.378Z"},{"id":"8051cf46-fdb8-4812-9005-7967332117c3","approvalId":"2539f95a-82be-40e2-9921-b5c30a2c9ebc","title":"Add agent activity timeline","description":"Sources:\n- https://github.com/builderz-labs/mission-control (AI agent orchestration dashboard with spend/workflow governance)\n- https://github.com/abhi1693/openclaw-mission-control (task assignment + multi-agent collaboration)\n- https://agentic-design.ai/patterns/ui-ux-patterns/agent-collaboration-ux (transparent orchestration & handoffs)\n\nRationale: Surface agent handoffs, run state, and approval checkpoints in one always-visible timeline so operators can trust and debug multi-agent work faster.","source":"Jim","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","workedByInitial":"C","caseKanbanTaskId":"t_31a8529a","createdByInitial":"J","martKanbanTaskId":"t_b2f67617","kanbanSyncHistory":[{"at":"2026-06-02T23:49:33.315Z","ids":{"caseKanbanTaskId":"t_31a8529a","plannerKanbanTaskId":"t_0a1acaf7"},"actor":"cern","event":"plan_submitted","summary":"Plan submitted to Case"},{"at":"2026-06-02T23:53:12.420Z","ids":{"caseKanbanTaskId":"t_31a8529a","martKanbanTaskId":"t_b2f67617"},"actor":"case","event":"case_approved","summary":"Case approved; Mart execution queued"},{"at":"2026-06-03T00:03:02.145Z","ids":{"martKanbanTaskId":"t_b2f67617"},"actor":"mart","event":"mart_completed","summary":"Agent activity timeline implemented and deployed. /activity page, mc.agent_events table, POST/GET API routes, color-coded timeline UI, wired into move and kanban-sync routes."}],"plannerKanbanTaskId":"t_0a1acaf7"},"createdAt":"2026-06-02T23:40:11.695Z","updatedAt":"2026-06-03T00:03:02.144Z"},{"id":"92f90e7e-349f-4925-9d0f-d31885d62937","approvalId":"101108a4-c0d7-4001-8427-742dd3b8a11c","title":"Add agent capability matrix","description":"Sources:\n- https://github.com/23blocks-OS/ai-maestro (AI Agent Orchestrator; 693 stars in GitHub search; TypeScript; skills system, memory search, code graph queries, agent-to-agent messaging, and agent mobility across machines)\n- https://github.com/joewinke/jat (Agentic IDE; 241 stars; Svelte; supervises many agents with live sessions, task management, terminal, and automation rules)\n\nRationale: Extend the agent roster into a compact capability matrix showing each agent's lane, skills/tools, active task, last handoff, profile/location, and whether they can receive work. This makes delegation and flow-lock decisions more transparent without changing execution behavior.","source":"Jim","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","workedByInitial":"C","caseKanbanTaskId":"t_d80c7e7c","createdByInitial":"J","martKanbanTaskId":"t_3e692a0c","kanbanSyncHistory":[{"at":"2026-06-02T23:23:31.743Z","ids":{"caseKanbanTaskId":"t_d80c7e7c","plannerKanbanTaskId":"t_ff4747b5"},"actor":"cern","event":"plan_submitted","summary":"Plan submitted to Case"},{"at":"2026-06-02T23:25:38.356Z","ids":{"caseKanbanTaskId":"t_d80c7e7c","martKanbanTaskId":"t_3e692a0c"},"actor":"case","event":"case_approved","summary":"Case approved; Mart execution queued"},{"at":"2026-06-02T23:26:24.688Z","ids":{"martKanbanTaskId":"t_3e692a0c"},"actor":"mart","event":"mart_started","summary":"Mart execution started"},{"at":"2026-06-02T23:34:08.632Z","ids":{"martKanbanTaskId":"t_3e692a0c"},"actor":"mart","event":"mart_completed","summary":"Agent capability matrix implemented: /api/agents/capabilities API route (200), /agents page (200), AgentCapabilityMatrix client component shows live agent data with active task, availability status, last handoff, skills, profile. Build passed, service restarted."}],"plannerKanbanTaskId":"t_ff4747b5"},"createdAt":"2026-06-02T22:12:21.368Z","updatedAt":"2026-06-02T23:34:08.630Z"},{"id":"701e21ab-7cb6-4819-8aca-cf978f4b3309","approvalId":"b77c6790-0ee2-4eeb-babb-931eb3e4b3a2","title":"Make the Approvals Kanba expandable like the ones on the Tasks page.","description":null,"source":"User","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","workedByInitial":"M","caseKanbanTaskId":"t_f1bbe992","createdByInitial":"L","martKanbanTaskId":"t_a87a6ed9","kanbanSyncHistory":[{"at":"2026-06-02T21:18:59.601Z","ids":{"caseKanbanTaskId":"t_f1bbe992","martKanbanTaskId":"t_a87a6ed9"},"actor":"case","event":"case_approved","summary":"Case approved — Approvals Kanban expandable plan"},{"at":"2026-06-02T22:04:02.336Z","ids":{"martKanbanTaskId":"t_a87a6ed9"},"actor":"mart","event":"mart_completed","summary":"Lane verified live page; Approvals Kanban expandable behavior complete"}]},"createdAt":"2026-06-02T19:25:36.174Z","updatedAt":"2026-06-02T22:07:36.125Z"},{"id":"b2f4ed11-7a42-4ac7-bdb6-a55deda03d08","approvalId":"e90f0601-a751-4610-a81f-a7a27dca7e19","title":"Create a new page called roster. Add the link to the left menu. This page will contain all agents","description":null,"source":"User","project":"Mission Control","priority":"red","status":"completed","metadata":{"flowStage":"completed","assignedAgent":"cern","workedByInitial":"C","createdByInitial":"L"},"createdAt":"2026-06-02T13:47:43.611Z","updatedAt":"2026-06-02T18:16:12.199Z"},{"id":"74816e62-3be4-432d-a4a3-2f397c84202a","approvalId":"8acf5f8c-3e41-4b1e-973a-861568d78335","title":"The kanban expand and collapse should be a button. The text while collapsed should be truncated.","description":null,"source":"User","project":"Mission Control","priority":"red","status":"completed","metadata":{"assignedAgent":"jim","workedByInitial":"J","createdByInitial":"L"},"createdAt":"2026-05-31T14:35:03.612Z","updatedAt":"2026-05-31T16:05:26.399Z"},{"id":"aa67306b-7bd6-44e5-8881-da86cbf459f8","approvalId":"2d1e15f2-813b-480c-a841-55d94cdb7176","title":"For task in  Backlog, In Progress and Completed I cannot read the full text. Make the Kanban expandable when clicked.","description":null,"source":"User","project":"Mission Control","priority":"red","status":"completed","metadata":{"createdByInitial":"L"},"createdAt":"2026-05-31T13:44:17.604Z","updatedAt":"2026-05-31T14:33:12.608Z"},{"id":"de29d9b0-a826-41db-8378-3a23c1a48fb6","approvalId":"32a260c6-566a-4c52-a31f-ac8a49a88b5d","title":"For the Collapse and Expand buttons. Change them to be like the https://claude.ai/ site.","description":null,"source":"User","project":"Mission Control","priority":"red","status":"completed","metadata":{"createdByInitial":"L"},"createdAt":"2026-05-31T13:14:04.078Z","updatedAt":"2026-05-31T13:31:52.800Z"},{"id":"3176dc4c-4061-4b4c-a9ca-8403accd066b","approvalId":"3d442bd5-b822-436a-8792-5319e41fe353","title":"Add Icons to the left of each link in the left menu. When the menu is callapsed only show the icon.","description":null,"source":"User","project":"Mission Control","priority":"red","status":"completed","metadata":{"workedByInitial":"N","createdByInitial":"L"},"createdAt":"2026-05-30T23:18:58.462Z","updatedAt":"2026-05-31T00:28:15.306Z"},{"id":"61aa4536-5dc3-41c5-b8c4-b5dfa58867d2","approvalId":"6481c29e-30b4-43ec-820a-4e1674868b10","title":"Remove the discription under each link on the left menu","description":null,"source":"User","project":"Mission Control","priority":"red","status":"completed","metadata":{"workedByInitial":"C","createdByInitial":"L"},"createdAt":"2026-05-30T22:05:53.102Z","updatedAt":"2026-05-30T23:11:24.954Z"},{"id":"5d6e4f8a-63c3-4ee5-b574-b4d0d92789d8","approvalId":"abfbd5dd-5cbc-432c-bd32-e7843ef3eed5","title":"Make the left menu collapsible.","description":"See the attached images from chatgpt.com as an example\n\n[Needs more info]\nI can take this, but I\u0019m missing the implementation context.\n\nPlease provide:\n1) Which repo/project contains the Mission Control UI (git URL or local path).\n2) Frontend stack (Next.js/React/Vue/etc) and styling system (Tailwind/MUI/CSS modules/etc).\n3) Which \u0019left menu\u0019 you mean (route/sidebar component name/file path), and desired behavior:\n   - collapse to icons only? hide completely? hover-expand?\n   - default collapsed on mobile only or also desktop?\n   - remember state per user (localStorage) or per session?\n4) The reference images mentioned in the task (or a link), since they aren\u0019t attached here.\n\n[More info]\nMoving back to Pending so it can be re-approved after info is added.","source":"User","project":"Mission Control","priority":"red","status":"completed","metadata":{},"createdAt":"2026-05-30T02:41:32.199Z","updatedAt":"2026-05-30T11:38:22.346Z"},{"id":"a085e420-9f52-48a2-8e56-5e049ccdbfc4","approvalId":"1cdd03d9-a948-49e6-924a-394176ad3106","title":"Task 3 - Add weekly alert","description":"Notify me when weekly rate is high","source":"User","project":"Mission Control","priority":"red","status":"completed","metadata":{},"createdAt":"2026-05-29T23:04:07.430Z","updatedAt":"2026-05-29T23:04:07.460Z"}]}