Skip to content

feat: event-driven ceremony scheduling strategy #971

@Aureliolo

Description

@Aureliolo

Summary

Implement the EventDrivenStrategy for the pluggable ceremony scheduling system.

Ceremonies subscribe to engine events with configurable debounce. No fixed schedule -- ceremonies fire reactively based on event subscriptions.

Design Reference

See Ceremony Scheduling design page -- "Event-Driven" strategy section.

Key Behaviors

  • should_fire_ceremony: checks if the configured event has fired and debounce threshold is met (e.g., fire standup once per 5 task_completed events)
  • should_transition_sprint: returns target status on configured event (e.g., sprint_backlog_empty triggers IN_REVIEW)
  • on_sprint_activated: subscribes to relevant engine events via lifecycle hooks
  • on_sprint_deactivated: unsubscribes from events
  • on_task_completed, on_task_blocked, etc.: count events for debounce tracking
  • Default velocity calculator: PointsPerSprintVelocityCalculator

Implementation

Also implement: PointsPerSprintVelocityCalculator

  • New: src/synthorg/engine/workflow/velocity_calculators/points_per_sprint.py
  • New: tests/unit/engine/workflow/velocity_calculators/test_points_per_sprint.py
  • Simplest calculator: pts/sprint with no time or task normalization

Dependencies

Metadata

Metadata

Assignees

No one assigned

    Labels

    prio:mediumShould do, but not blockingscope:medium1-3 days of workspec:task-workflowDESIGN_SPEC Section 6 - Task & Workflow Enginetype:featureNew feature implementationv0.5Minor version v0.5v0.5.8Patch release v0.5.8

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions