Files
manual_slop/conductor/tracks/ticket_queue_mgmt_20260306/spec.md
2026-03-06 16:14:31 -05:00

3.1 KiB

Track Specification: Manual Ticket Queue Management (ticket_queue_mgmt_20260306)

Overview

Allow user to manually reorder, prioritize, or requeue tickets in the DAG. Add drag-drop reordering, priority tags, and bulk selection for execute/skip/block operations.

Current State Audit

Already Implemented (DO NOT re-implement)

Ticket Model (src/models.py)

  • Ticket dataclass: Has status, depends_on, but no priority field
  • mark_blocked(reason): Sets status to blocked with reason
  • mark_complete(): Sets status to completed

DAG Engine (src/dag_engine.py)

  • TrackDAG: Manages ticket dependency graph
  • get_ready_tasks(): Returns tasks with satisfied dependencies
  • update_task_status(): Updates ticket status
  • has_cycle(): Validates DAG

Gaps to Fill (This Track's Scope)

  • No priority field on Ticket
  • No drag-drop reordering in GUI
  • No multi-select for bulk operations
  • No bulk execute/skip/block actions

Architectural Constraints

DAG Validity

  • Reordering MUST NOT violate dependencies
  • Cannot move ticket before its dependencies
  • depends_on relationships preserved

Atomic Operations

  • Bulk operations apply to all selected tickets atomically
  • Partial failure rolls back all changes

Architecture Reference

Key Integration Points

File Lines Purpose
src/models.py 30-50 Ticket - add priority field
src/gui_2.py 2650-2750 Ticket display - add drag-drop
src/dag_engine.py 50-80 Status updates

Proposed Ticket Enhancement

@dataclass
class Ticket:
 # ... existing fields ...
 priority: str = "medium"  # "high" | "medium" | "low"

Functional Requirements

FR1: Priority Field

  • Add priority: str = "medium" to Ticket dataclass
  • Values: "high", "medium", "low"
  • Persist in track state

FR2: Priority UI

  • Dropdown or button group per ticket
  • Color-coded: high=red, medium=yellow, low=gray
  • Save to state on change

FR3: Drag-Drop Reordering

  • Drag ticket to reorder in list
  • Drop validates DAG (no dependency violation)
  • Show error if invalid position

FR4: Multi-Select

  • Checkbox per ticket for selection
  • Select all / deselect all buttons
  • Track selected ticket IDs

FR5: Bulk Actions

  • Execute: Mark all selected as ready
  • Skip: Mark all selected as completed
  • Block: Mark all selected as blocked

Non-Functional Requirements

Requirement Constraint
Response Time <100ms for drag-drop validation
Persistence Priority saved to state.toml

Testing Requirements

Unit Tests

  • Test priority field serialization
  • Test DAG validation on reorder

Integration Tests

  • Drag-drop tickets, verify order changes
  • Bulk block tickets, verify all blocked

Out of Scope

  • Automatic priority assignment
  • Priority-based auto-scheduling
  • Cross-track ticket movement

Acceptance Criteria

  • Priority field added to Ticket
  • Priority dropdown works in UI
  • Drag-drop reordering functional
  • DAG validity enforced on drop
  • Multi-select with checkboxes
  • Bulk execute/skip/block works
  • 1-space indentation maintained