Skip to main content

Sequence Status Workflow - Design Specification

Executive Summary

This document specifies a redesigned workflow diagram for sequence statuses. The goal is to create a compact, scannable visualization that can be understood in under 5 seconds.

Current Problems (Analysis)


Why This Approach?

  1. Horizontal flow matches reading direction - Left-to-right progression is intuitive
  2. Parallel tracks show branching clearly - 4D track above, 2D track below, visually distinct
  3. Compact width - Fits in typical doc/readme viewport (800px)
  4. Rework as annotation - Not a full path; shown as a simple return arrow with clear label
Other approaches considered:

Dimensions

  • Width: 800px - Fits in most markdown viewers, GitHub, docs
  • Height: 280px - Compact; no scrolling required
  • Padding: 20px on all sides

Layout Grid

The diagram uses a 5-column horizontal grid: Row positions:
  • Track labels: y=20 (small text)
  • 4D track: y=60 (center of state boxes)
  • 2D track: y=140 (center of state boxes)
  • Shared path: y=100 (center, for converged flow)
  • Legend: y=250

State Positions (Exact Coordinates)

Column 1: Initial (Stacked Vertically, Centered)

All three initial states share one column, shown as a compact vertical stack: Box dimensions: 130x28 each (compact)

Column 2: Labeling (Two Tracks)

Box dimensions: 110x28 each

Column 3: Review (Two Tracks + Transition)

Box dimensions: 100x28 (review_4d, review_2d), 95x24 (ready_for_2d - smaller, transitional)

Column 4: Final Review

Box dimensions: 110x28 (final_review), 120x24 (rework_required - red accent)

Column 5: Completion

Box dimensions: 100x28 each

Arrow Paths (Connections)

Happy Path (Main Flow)

All arrows use gray (#71717a) with arrowhead marker.

Rejection Path (Rework Loop)

Uses red (#ef4444) stroke and arrow. Rework arrow implementation:
  • Start: right side of rework_required
  • Curve: down and left, passing beneath the main flow
  • End: bottom of labeling_2d or labeling_4d (depending on what type of rework)
  • Use a simple curved path or rounded corner path, not complex bezier
Simplified rework alternative: Instead of a complex return arrow, show a simple annotation:
  • Small red text below rework_required: “returns to labeling”
  • This avoids arrow chaos while communicating the concept

Color Scheme (Minimal)

Use the existing color scheme but simplified:

Typography


Visual Hierarchy

  1. Primary: State boxes and their labels (most prominent)
  2. Secondary: Main flow arrows (gray, moderate weight)
  3. Tertiary: Track labels “4D path” / “2D path” (faded)
  4. Accent: Rejection/rework path (red, draws attention to exception flow)
  5. Reference: Legend (bottom, small)

Rework Loop Design Decision

Recommendation: Use annotation, not complex arrow Instead of drawing a complex curved arrow that loops back:
This is cleaner and avoids:
  • Arrow crossing other arrows
  • Visual clutter
  • Ambiguity about which labeling state it returns to
If the implementer wants the arrow version:
  • Draw a red dashed path from rework_required going DOWN, then LEFT under the diagram, then UP to labeling_2d
  • Keep stroke thin (1px) and dashed to differentiate from main flow

Legend (Compact, Horizontal)

Position: Bottom of diagram (y=250), centered horizontally
Each legend item: 12x12 square + label text, spaced 60px apart.

Implementation Notes for the Implementing Agent

  1. Start with the grid - Lay out columns first, then place boxes
  2. Draw happy path first - All the gray arrows for normal flow
  3. Add rejection/rework last - So it overlays correctly
  4. Test readability - View at 100% zoom in browser; all text must be legible
  5. Keep stroke widths consistent - 1.5px for arrows, 1.5-2px for box borders
  6. Rounded corners - rx=“5” for all state boxes (friendly, modern look)

Expected Result

A compact horizontal workflow that:
  • Shows the complete sequence status flow at a glance
  • Clearly distinguishes 4D and 2D tracks
  • Makes the happy path obvious (left-to-right)
  • Shows rework as an exception path without cluttering the main flow
  • Fits in 800x280 pixels

Comparison: Before vs After


File Output

The implementing agent should save the new SVG to:
(Overwrites the existing file)