Skip to content

[REQ] Revert a completed chore back to pending #90

@igorski88

Description

@igorski88

Feature area

Integration logic/state

Problem or use case

A chore is accidentally marked as completed (especially with shared_first + auto_approve: true), and there is no non-destructive way to revert it back to pending. Current options either fail to update state correctly or erase important historical data such as streaks and stats.

Proposed solution

This service should:
Revert chore state from completed → pending
Adjust points accordingly
Preserve all transactional data (streaks, claim counts, stats)
Maintain consistency between global and per-user state

Introduce a non-destructive revert mechanism, either by:

  • Enhancing choreops.disapprove_chore to support completed state
    OR
  • Adding a new service such as:
action: choreops.uncomplete_chore
data:
  approver_name: "Igor"
  user_name: "Demitry"
  chore_name: "Feed Everest"


### Expected outcome

- Clean and reliable way to undo accidental completions  
- No loss of historical or performance data  
- Consistent state across global chore and user-specific chore status  
- Better support for `shared_first` + `auto_approve` workflows

### Alternatives considered

## Alternatives considered
- `choreops.disapprove_chore`  
  - Only works for `claimed` state  
  - Causes inconsistent state when used on completed chores  
  - Button entity returns server error ⚠️  

- `choreops.reset_transactional_data`  
  - Works but **destructive**  
  - Removes streaks, stats, and history  

- `choreops.reset_chores_to_pending_state`  
  - Resets all chores globally  
  - Not granular  

- `choreops.reset_overdue_chores`  
  - Only applies to overdue chores  
  - Not applicable to completed state

### Additional context

## Additional context if any
The issue is amplified by configurations using:
- `completion_criteria: shared_first`  
- `auto_approve: true`  

These skip the `claimed` state entirely, meaning there is **no existing pathway** to reverse a completion without destructive actions.

Metadata

Metadata

Assignees

Labels

area: integrationIntegration logic and stateenh: featureFeature request for new capabilityenhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions