Relationships
#242 redmine extension: adopt state machine patterns from @magistr for agent-driven workflows
Opened by webframp · 5/5/2026
Feature Request
Based on a deep comparison of @webframp/redmine (26 methods, stateless CRUD) vs @magistr/issue-lifecycle (19 methods, state machine with guards), several patterns from magistr would significantly improve the redmine extension for multi-team agent-driven use.
Top 3 Recommendations
1. Add a hydrate method (highest impact, lowest effort)
Agents currently must re-fetch from the Redmine API to inspect state. Magistr's hydrate pattern writes a compact summary to a separate resource (summary/hydrate) that agents read without parsing full state or making API calls. This single change eliminates redundant API calls in autonomous loops.
2. HTTP resilience (retry + backoff)
_lib/api.ts has zero retry logic. A single network blip kills the workflow. Add resilientFetch() with configurable max retries, exponential backoff, timeout, and 429/5xx handling.
3. transition_issue with state guards
update_issue accepts any status_id without validation. Add guardState() (from magistr) that checks the current status before applying a transition. This prevents agents from accidentally setting invalid Redmine workflow transitions.
Additional Recommendations
connection_checkmethod — pre-flight validation of host, API key, and project access- Configurable status mapping — replace hardcoded
IN_PROGRESS_PATTERNSin kanban reports with global-arg config per team project_auditmethod — cross-project activity summary for multi-team visibility- Report SDK abstraction — kanban reports currently read raw filesystem paths; should use report context abstractions
Full Analysis
Available at: extension-comparison.md in the analysis repo. Covers state management patterns, data output design, error handling, overlap analysis, and composition opportunities (redmine as backend for issue-lifecycle's state machine).
Context
Evaluated against @magistr/good-planning (governability planning state machine) and @magistr/issue-lifecycle (issue resolution state machine) which both use explicit guardState() transition validation, single current versioned resource, and hydrate methods for agent introspection.
Closed
No activity in this phase yet.
webframp commented 5/5/2026, 3:56:12 AM
my agent went a little crazy, feel free to close this one. It's too specific to my own extension work
webframp commented 5/5/2026, 4:00:18 AM
Note: issue #242 I just filed was about adopting magistr patterns into your redmine extension — that one shouldn't have gone to the Lab. Apologies for that. Going forward it won't happen.
per the agent after some adjusted steering
Sign in to post a ripple.