Skip to main content
← Back to list
01Issue
FeatureClosedSwamp CLI
AssigneesNone

#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

  1. connection_check method — pre-flight validation of host, API key, and project access
  2. Configurable status mapping — replace hardcoded IN_PROGRESS_PATTERNS in kanban reports with global-arg config per team
  3. project_audit method — cross-project activity summary for multi-team visibility
  4. 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.

02Bog Flow
OPENTRIAGEDIN PROGRESSCLOSED

Closed

5/5/2026, 12:47:05 PM

No activity in this phase yet.

03Sludge Pulse
Editable. Press Enter to edit.

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.