Advisory issues read as advice rather than failure
Docs / docs (push) Successful in 21s
Playwright Tests / test-playwright (1, 2) (push) Failing after 2m37s
Playwright Tests / test-playwright (2, 2) (push) Canceled after 35s
Playwright Tests / merge-reports (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Test Backend / test-backend (push) Canceled after 0s
Compose Smoke Test / test-compose (push) Canceled after 0s
Docs / docs (push) Successful in 21s
Playwright Tests / test-playwright (1, 2) (push) Failing after 2m37s
Playwright Tests / test-playwright (2, 2) (push) Canceled after 35s
Playwright Tests / merge-reports (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Test Backend / test-backend (push) Canceled after 0s
Compose Smoke Test / test-compose (push) Canceled after 0s
`ADVISORY_ISSUES` moves next to `ValidationIssue` in pipeline.py, and the model derives an `advisory` flag from its own code, so the distinction the engine already made ships to the client instead of being re-guessed there. The dock keeps its summary in `--destructive` only when a real fault is among the issues and paints an advisory row `--muted-foreground`; the canvas leaves advisories off a node's dot and border entirely, since node status has three colours and no warning tier. biome checks the generated `openapi.json`, which nothing formats since the SDK script dropped its format pass — ignore it like the other generated files. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013Gf7WaExcJ9bs3kfJXB3nK
This commit is contained in:
@@ -110,6 +110,10 @@ export function FlowDock({
|
||||
}) {
|
||||
const { fitView } = useReactFlow()
|
||||
const connected = useLiveConnection()
|
||||
// The engine marks the issues it does not count against a flow. They are
|
||||
// still worth saying, so they stay in the list — but in the muted tone, and
|
||||
// without turning the summary red, since nothing here is actually broken.
|
||||
const faults = issues.filter((issue) => !issue.advisory)
|
||||
|
||||
return (
|
||||
<motion.div
|
||||
@@ -175,7 +179,12 @@ export function FlowDock({
|
||||
<Button
|
||||
variant="ghost"
|
||||
size="sm"
|
||||
className="h-11 gap-1.5 text-destructive md:h-8"
|
||||
className={cn(
|
||||
"h-11 gap-1.5 md:h-8",
|
||||
faults.length > 0
|
||||
? "text-destructive"
|
||||
: "text-muted-foreground",
|
||||
)}
|
||||
data-testid="validation-summary"
|
||||
>
|
||||
<AlertCircle className="size-4" />
|
||||
@@ -191,7 +200,10 @@ export function FlowDock({
|
||||
<li key={`${issue.code}-${issue.node}-${issue.message_name}`}>
|
||||
<button
|
||||
type="button"
|
||||
className="w-full rounded-sm px-2 py-1.5 text-left text-sm transition-colors hover:bg-accent/50 disabled:cursor-default disabled:hover:bg-transparent"
|
||||
className={cn(
|
||||
"w-full rounded-sm px-2 py-1.5 text-left text-sm transition-colors hover:bg-accent/50 disabled:cursor-default disabled:hover:bg-transparent",
|
||||
issue.advisory && "text-muted-foreground",
|
||||
)}
|
||||
onClick={() => issue.node && onFocusNode(issue.node)}
|
||||
disabled={!issue.node}
|
||||
>
|
||||
|
||||
@@ -336,7 +336,10 @@ function FlowEditorInner({
|
||||
const issuesByNode = useMemo(() => {
|
||||
const map = new Map<string, string[]>()
|
||||
for (const issue of issues) {
|
||||
if (!issue.node) continue
|
||||
// A node's dot and border are its status channel, and status has no
|
||||
// warning tier — an advisory is not a fault, so it says its piece in the
|
||||
// dock rather than painting the node red.
|
||||
if (!issue.node || issue.advisory) continue
|
||||
const list = map.get(issue.node) ?? []
|
||||
list.push(issue.message)
|
||||
map.set(issue.node, list)
|
||||
|
||||
Reference in New Issue
Block a user