Skip to content

feat(flow): COMP-3-2 draw the agent layout as a glass flow graph - #1458

Merged
mergify[bot] merged 3 commits into
mainfrom
claude/v2-comp-3-2
Oct 15, 2026
Merged

mergify[bot] merged 3 commits into
mainfrom
claude/v2-comp-3-2

Conversation

@Cuarroc

@Cuarroc Cuarroc commented Oct 14, 2026 •

Copy link
Copy Markdown
Owner

Der Ablauf der Agenten wird jetzt als gläserner Graph gezeichnet: ein Knoten pro Agent, ein gestrichelter Pfeil vom Auftraggeber zum gestarteten Agenten. Die Pfeile bewegen sich nur, wenn du keine reduzierte Bewegung eingestellt hast; ohne Agenten steht ein ehrlicher Leer-Hinweis da. Die Komponente ist noch nirgends eingebunden (keine Route, kein IPC), du siehst im Programm also noch keine Änderung.

Report

Was geändert (COMP-3-2, nur Frontend, 232 Zeilen inkl. Tests):

  • src/screens/leitstand/flow/FlowGraph.tsx: nimmt das Ergebnis von layoutFlow und ein Label (Aufgabe, Branch) je Id; optional renderNode ersetzt nur das Innere eines Knotens, Kanten bleiben. Je Layout-Kante ein <path data-flow-edge data-from data-to> mit <title> ("A startete B"). Bewegte Kante = CSS-Klasse fl-edge--moving; sie fehlt, wenn matchMedia("(prefers-reduced-motion: reduce)") zutrifft (zusätzlich animation: none im CSS). Keine Agenten: HonestState kind empty, es wird kein Elternknoten erfunden.
  • flow.css: Glas-Karte auf den --g-*-Tokens, gestrichelte Pfeile (Farbe ist nicht das einzige Signal: jeder Knoten trägt Aufgabe und Branch als Text).
  • texts.ts: deutsche Wörter (nicht in de.ts).
  • FlowGraph.test.tsx: 5 Tests. Kein Edit an layout.ts, BoardView.tsx, workerTree.ts, LeitstandRoute.tsx, routing.ts, de.ts; keine neuen Abhängigkeiten, kein Rust.
  • Der kleine useReducedMotion-Hook (useSyncExternalStore) ist lokal geschrieben, weil useMediaQuery in shell/AppearanceControl.tsx nicht exportiert ist und diese Datei nicht zu den erlaubten gehört. Folge-Idee: beide zusammenlegen.

Belege (Befehl → Exit):

  • npx --no-install vitest run src/screens/leitstand/flow/FlowGraph.test.tsx src/i18n/hardcoded.test.ts → 0
  • npm run typecheck → 0
  • npm run build → 0
  • bash scripts/ci/red-first.sh → 0
  • git diff --check → 0
  • bash scripts/ci/gates.sh lane prepush → 0 (alle Gates grün, rust-suite 2266/2266)
  • Red-first: Commit 1 (16d0b0bf) enthält die 5 Tests mit kompilierendem Stub, alle 5 rot; die Test-First-Trailer nennen FlowGraph.test.tsx::<Testname> je Test, darunter die zwei geforderten ("draws an edge from the parent node to the child", "does not animate edges when reduced motion is requested"). Commit 2 und 3 tragen Regression-For auf diesen Commit.
  • Hinweis: der Precommit-Gate denkraum (Playwright/Node, nicht mein Code) war bei Serverlast (Load ~45) zweimal rot (ECONNRESET, Timeouts) und beim Wiederholen grün; node --test tools/denkraum/server-security.test.mjs einzeln → 0. Kein Bypass.

Sichtprüfung (1440×900, hell und dunkel, temporärer Harness in einem ignorierten Ordner, danach gelöscht, kein Browser-Prozess übrig): Beispielgraph mit Koordinator, drei Kindern, einem Enkel und einem Einzelgänger. Beide Screenshots angesehen. Abweichungen zu glass/Main.dc.html:

  1. Kein Ambient-Farbverlauf hinter den Karten im Harness, daher sieht das Glas (Blur) fast wie eine weiße Karte aus; Material und Rahmen kommen aus --g-content-*/--g-line/--g-shadow.
  2. Schrift Geist ist lokal nicht geladen (Fallback sans/mono).
  3. Knoten sind absichtlich schlicht: kein Lampen-Punkt, kein Kontingent, kein Beweis-Chip (Platz für spätere Pakete über renderNode).
  4. Nach der ersten Ansicht geändert: Pfeile von Akzent-Linie (zu blass im hellen Modus) auf --g-faint, Zeilenabstand 40 → 56 px (flache Kurven), Karten-Innenabstand 16 px wie auf dem Board.
  5. Lange Aufgabentexte werden auf zwei Zeilen gekürzt; das volle Wort steht im Namen der Gruppe (aria-label).

Architecture drift: keine neuen Funde, keine Allowlist-Änderung.

RE source: public docs only (2026-10-13 scan: MIT agent-tree viewers; no code copied)

PONYTAIL: applied (kleinste vollständige Änderung: vorhandene Bausteine HonestState, fill, layoutFlow, --g-*-Tokens genutzt, keine neue Abhängigkeit).

Review: ausstehend (Stufe B; Autor ist Anthropic, Prüfer muss außerhalb Anthropic liegen, Root ordnet an).

Finding-Tabelle:

ID Quelle Schwere Befund Verbleib
– – – noch keine Review-Befunde offen bis Stufe-B-Review

NICHT ABGEDECKT:

  • Die #[cfg(windows)]-Tests (run_in_pty, npm_shim, ConPTY, DPAPI) und die Windows-Arme von clippy: Linux deckt sie nicht ab; die Windows-Bahn läuft in der Merge-Queue.
  • Bahn linux (Browser-Smoke, e2e, Lizenz-Check) wurde lokal nicht gelaufen; nur prepush und npm run build.
  • Keine Einbindung in eine Route, daher kein Test im laufenden Programm; Desktop-App nicht gestartet.
  • Echte Geist-Schrift und echter Ambient-Hintergrund nicht gesehen (Harness).
  • Fokus-/Tastaturverhalten der Knoten: Knoten sind nicht fokussierbar (keine Aktion hinterlegt).

🤖 Generated with Claude Code

Root review disposition (head e154a63, 15.10.2026)

Author family: Anthropic (Claude). Tier B (frontend). Reviews bound to head e154a637: NVIDIA Nemotron 3 Ultra and Cohere north-mini-code (kilo), Alibaba Qwen3-Coder-Next (OpenRouter). Every finding checked against the code at this head.

ID Source Severity Finding Disposition
R1458-Q1 Qwen high renderNode with one parameter leaves label undefined Rejected: fewer parameters are legal; FlowGraph.tsx:98 passes both
R1458-Q2 Qwen medium XSS via SVG <title> Rejected: React text child, escaped (tsx:82)
R1458-Q3 Qwen medium useId SSR hydration mismatch Rejected: client-only Vite SPA
R1458-Q4 Qwen low no test for a single unconnected node Follow-up (optional)
R1458-Q5 Qwen high >300 lines Rejected: +232/-0
R1458-N1 Nemotron medium dangling edges dropped silently Rejected: layout.ts:39 only emits edges for placed children; tsx:66 is a guard
R1458-N2 Nemotron medium textContent assertion fragile Rejected: test:59 asserts the accessible tooltip
R1458-N3, N4, S1..S6, C1..C3 Nemotron, Cohere low/smell fill, null deref, empty Math.max, naming Rejected: leitstand.ts:24, guard tsx:66, early return tsx:47

No open high or medium finding.

Cuarroc and others added 3 commits October 14, 2026 17:18
Test-First: src/screens/leitstand/flow/FlowGraph.test.tsx::shows the task and the branch of each agent on its node
Test-First: src/screens/leitstand/flow/FlowGraph.test.tsx::draws an edge from the parent node to the child
Test-First: src/screens/leitstand/flow/FlowGraph.test.tsx::does not animate edges when reduced motion is requested
Test-First: src/screens/leitstand/flow/FlowGraph.test.tsx::replaces only the node interior when renderNode is passed
Test-First: src/screens/leitstand/flow/FlowGraph.test.tsx::says so in words when there are no agents and invents no parent

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Regression-For: 16d0b0b

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Regression-For: 16d0b0b

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@Cuarroc
Cuarroc marked this pull request as ready for review October 14, 2026 23:46
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-14T23:48:45.492234Z e154a63 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@Cuarroc Cuarroc added the review-ok Pipeline: review disposition complete, no open high finding label Oct 14, 2026
@Cuarroc

Cuarroc commented Oct 14, 2026

Copy link
Copy Markdown
Owner Author

review-ok set by Root for head e154a63: tier B, reviews by non-Anthropic families (NVIDIA Nemotron, Cohere, Alibaba Qwen) bound to this head, disposition in the PR body, no open high/medium; gates (linux), gates (windows), red-first green on this head. A later push voids this label.

@Cuarroc

Cuarroc commented Oct 14, 2026

Copy link
Copy Markdown
Owner Author

@Mergifyio queue

@mergify mergify Bot added the queued label Oct 14, 2026
@mergify
mergify Bot merged commit 9903b4c into main Oct 15, 2026
20 checks passed
@mergify

mergify Bot commented Oct 15, 2026

Copy link
Copy Markdown
Contributor

Merge Queue Status

This pull request spent 16 minutes 8 seconds in the queue, including 12 minutes 28 seconds running CI.

Required conditions to merge
  • check-success = gates (linux)
  • check-success = gates (windows)
  • check-success = red-first
  • github-review-approved [🛡 GitHub repository ruleset rule main-pr-required-checks]
  • label != do-not-merge
  • any of [🛡 GitHub repository ruleset rule main-pr-required-checks]:
    • check-success = @github-actions/gates (linux)
    • check-neutral = @github-actions/gates (linux)
    • check-skipped = @github-actions/gates (linux)
  • any of [🛡 GitHub repository ruleset rule main-pr-required-checks]:
    • check-success = @github-actions/gates (windows)
    • check-neutral = @github-actions/gates (windows)
    • check-skipped = @github-actions/gates (windows)
  • any of [🛡 GitHub repository ruleset rule main-pr-required-checks]:
    • check-success = @github-actions/red-first
    • check-neutral = @github-actions/red-first
    • check-skipped = @github-actions/red-first
  • any of [🛡 GitHub repository ruleset rule main-pr-required-checks]:
    • check-neutral = @mergify/Mergify Merge Protections
    • check-skipped = @mergify/Mergify Merge Protections
    • check-success = @mergify/Mergify Merge Protections

@mergify
mergify Bot deleted the claude/v2-comp-3-2 branch October 15, 2026 00:14
@mergify mergify Bot removed the queued label Oct 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

review-ok Pipeline: review disposition complete, no open high finding

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant