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.
Feature area
Integration logic/state
Problem or use case
A chore is accidentally marked as
completed(especially withshared_first+auto_approve: true), and there is no non-destructive way to revert it back topending. 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:
choreops.disapprove_choreto supportcompletedstateOR