Incident Copilot + Workflow Quality Gates (Hackathon)#3773
Incident Copilot + Workflow Quality Gates (Hackathon)#3773proffesor-for-testing wants to merge 2 commits intosuperplanehq:mainfrom
Conversation
Track A — Incident Copilot canvas template with AI-powered triage:
PagerDuty trigger → Filter → parallel data collection → Merge →
Claude AI assessment → Slack evidence pack → Approval gate.
Includes simplified demo template with manual trigger.
Track B — Workflow linter with 9 static analysis rules:
duplicate-node-id, invalid-edge, cycle-detected, orphan-node,
dead-end, missing-approval-gate, missing-required-config,
invalid-expression, unreachable-branch.
Quality scoring (0-100, grades A-F) with per-category caps.
Full Go + TypeScript parity (canvasLinter.ts).
36 unit tests including dogfood tests for all 3 templates.
Track C — Demo glue: 4 mock JSON files, Slack channel configured.
Integration:
- REST API: POST /api/v1/canvases/{id}/lint returns LintResult JSON
- Pre-save quality gate: logs issues on every canvas save (warn-only)
- Frontend: green/yellow/red badge in canvas header with tooltip
- 2 rounds of devil's advocate review, 26 issues found and fixed
Co-Authored-By: RuFlo & AQE Teams
|
👋 Commands for maintainers:
|
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 3 potential issues.
Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
| memoryItemCount={props.memoryItemCount} | ||
| onExportYamlCopy={props.onExportYamlCopy} | ||
| onExportYamlDownload={props.onExportYamlDownload} | ||
| workflowNodes={props.workflowNodes} |
There was a problem hiding this comment.
Missing workflowEdges prop causes false-positive lint warnings
High Severity
The first CanvasContentHeader render site passes workflowNodes but omits workflowEdges. Since Header only returns null when both are undefined, the linter will run with nodes but an empty edge array. This produces false-positive orphan-node, dead-end, missing-approval-gate, and cycle warnings for every canvas viewed through this code path.
| source?: string; | ||
| target?: string; | ||
| channel?: string; | ||
| } |
There was a problem hiding this comment.
TypeScript linter reads missing channel from React Flow edges
Medium Severity
The LintEdge interface expects a channel property, but React Flow edges store this value in sourceHandle instead (confirmed in prepareEdge which maps edge.channel to sourceHandle). When styledEdges are passed as workflowEdges, channel is always undefined, so the duplicate-edge check collapses all edges onto "default" producing false warnings, and the unreachable-branch check never finds a "default" channel edge, flagging every filter node.
Additional Locations (1)
| - **Configuration**: `.agentic-qe/config.yaml` | ||
|
|
||
| --- | ||
| *Generated by AQE v3 init - 2026-03-28T08:27:45.923Z* |
There was a problem hiding this comment.
CLAUDE.md overwritten with unrelated AQE tooling config
Medium Severity
The original CLAUDE.md (a project-wide agent instruction file pointing to AGENTS.md) was replaced with 160+ lines of Agentic QE v3 configuration, MCP tool references, and fleet initialization instructions. This is team-specific tooling configuration that overwrites the project's shared agent instructions file and doesn't belong in the repository.


Summary
Hey SuperPlane team! 👋
This is our hackathon solution from Team Professorianci — we built two features that we think could add real value to SuperPlane:
Incident Copilot
An intelligent workflow template that automates incident response by pulling context from PagerDuty, Datadog, and GitHub — then routing through triage, analysis, and resolution steps on the SuperPlane canvas.
templates/canvases/incident-copilot.yaml)templates/canvases/incident-copilot-demo.yaml)Workflow Quality Gates (Canvas Linter)
A linter that validates canvas workflows for correctness and best practices — both server-side (Go) and client-side (TypeScript) with live UI feedback:
pkg/linter/linter.go— 15+ lint rules covering connectivity, naming, infinite loops, security, and moreweb_src/src/utils/canvasLinter.ts— mirrors the Go rules for instant in-browser feedbackPOST /api/v1/canvases/:id/lintfor programmatic lintingpkg/linter/linter_test.goWhat's included
We had a blast building this — SuperPlane is an awesome platform to work with! Let us know what you think. 🚀
— Team Professorianci
🤖 Generated with RuFlo & AQE Teams