-
Notifications
You must be signed in to change notification settings - Fork 0
ARCH-009: manifest.py completion checks exclude completed_with_failures status #91
Copy link
Copy link
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
Summary
Two methods in workflow/managers/manifest.py check for exact "completed" status:
is_action_completed() (L221-224):
def is_action_completed(self, action_name: str) -> bool:
action = self.manifest.get("actions", {}).get(action_name)
return action is not None and action.get("status") == "completed"get_completed_actions() (L341-347):
return [name for name, info in actions.items() if info.get("status") == "completed"]Both exclude completed_with_failures. Any manifest logic that relies on these methods (e.g., determining which actions have run, resume logic, reporting) will treat partially-failed actions as incomplete.
Impact
- Actions that completed with partial item failures are invisible to manifest queries
- Resume scenarios may re-run actions that already produced valid output
- Reporting undercounts completed work
Suggested Fix
def is_action_completed(self, action_name: str) -> bool:
action = self.manifest.get("actions", {}).get(action_name)
return action is not None and action.get("status") in {"completed", "completed_with_failures"}Same pattern for get_completed_actions().
Note: If callers need to distinguish clean vs partial completion, add a separate is_action_completed_clean() or accept a strict parameter. Don't break the common case.
Related
- ARCH-007 (ARCH-007: Batch completion path never detects partial item failures (completed_with_failures is online-only) #89) — batch never sets this status (masks the bug for batch actions)
- ARCH-004 (ARCH-004: Formalize action state machine to prevent mode-specific state leaks #86) — formalized state machine would define terminal/complete sets once
Files Affected
agent_actions/workflow/managers/manifest.py— L221-224, L341-347
Acceptance Criteria
is_action_completed()returns True for bothcompletedandcompleted_with_failuresget_completed_actions()includes actions withcompleted_with_failures- Callers that need strict "no failures" check have an explicit method for it
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working