Skip to documentation

Decision, execution, and recovery

Keep the recorded decision separate from the Discord action, then handle duplicate, stale, denied, or failed results.

Audience
moderator · senior reviewer · team lead
Availability
free · premium preview · feature flagged · private beta access
Maturity
alpha · beta · partial

Last reviewed

On this page

A decision and a Discord action are separate facts

A reviewer can approve or record an outcome without the corresponding Discord action completing. ModFlow records execution attempts separately where implemented so operators can distinguish requested, applied, denied, failed, cancelled, and already-handled work.

Separate the three checkpoints

Evidence review leading to a human decision, a separate action execution, and a final case record.
Confirm evidence, decision, and execution as distinct checkpoints before calling work complete.
Decision and execution checkpoints
CheckpointWhat it provesWhat it does not prove
DecisionAn authorized reviewer recorded judgment and intended outcomeThat Discord accepted or applied an action
Execution requestAn authorized action was submitted with a traceable identityThat the target or permissions still allowed it
Execution resultThe attempt reached a recorded terminal or retryable stateThat every downstream notification or artifact succeeded
Final recordThe visible workflow state reflects the verified resultAccess to every restricted source or detail

Check decision, execution, and final state

  1. Read the decision

    Confirm reviewer, outcome, reason, and current workflow state.

    Check: The intended action and authority are explicit.

  2. Inspect existing execution

    Check for a prior request, result, or already-handled response before submitting again.

    Check: Duplicate punishment risk is reduced.

  3. Execute once

    Use the supported control and wait for its recorded result.

    Check: One attributable execution attempt is created.

  4. Recover from the result

    For denial, failure, or stale state, correct the named boundary and use only a supported retry path.

    Check: Recovery preserves the audit trail.

The final record states both the human decision and what actually happened when action was attempted.

Understand duplicate-safe execution

Where implemented, ModFlow creates or reuses an execution record with a stable action key. This lets a repeated request return the existing execution instead of applying the same punishment twice. Operators still must inspect the record; idempotency is workflow-specific and does not make every external effect reversible.

Execution states
StateMeaningOperator response
Requested/pendingAn authorized request exists but has not completed.Wait or follow the workflow’s explicit cancel/retry rules.
ExecutingA worker/API is attempting the external action.Do not submit another request.
CompletedThe execution reached a stored successful result.Verify current Discord state and secondary effects.
Denied/blockedPermission, feature, state, or target check prevented execution.Correct only the named boundary.
FailedThe attempt did not reach intended completion.Read error/retry eligibility; do not create a duplicate record.
RetryableThe workflow explicitly permits another attempt.Resolve the cause, use the supported retry, and verify.
Already handledA matching terminal result or external state already exists.Use the existing result; do not punish again.

Handle partial success explicitly

Partial-success examples
WorkflowPrimary successPossible partial resultRecovery
Mute/unmuteTimeout changed/cleared.Voice mute cleanup failed.Assign voice-state recovery and preserve the action result.
Jail/unjailActive restriction added/removed.Role restore, channel cleanup, recording stop, or transcript job failed.Fix only failed roles/channels/artifacts and document manual work.
BanBan created.DM/log/expiry alert failed or purge differs.Do not re-ban; repair notification/schedule separately.
AppealDecision recorded.Reversal failed or public notification unavailable.Verify original action state and retry only the supported reversal.
Ban ReviewReviewer approved.Execution or requester notification failed.Keep approved-pending-execution; use authorized executor/retry.
SoundcheckSession stopped.Recording, transcription, publication, or storage failed.Record missing artifact; do not imply it exists.
Mass actionSome targets affected.Other targets invalid/failed.Reconcile per target and retry only confirmed failures.

Use reversals as new audited actions

Reversal rules
OriginalSupported reversalWhat remains
Mute/unmute, /reducemute, /undo where applicable.Original reason/action history and reversal reason.
Jail/unjail or /undo.Jail record, messages/artifacts, and role restoration outcome.
Ban/unban or /undo.Original ban record; unban does not restore membership.
WarningNo /undo. Add correction/context through the record/Case.Original warning and correction trail.
Appeal decisionDecision can trigger a separate original-action reversal.Appeal decision and reversal execution result.
Scheduled actionCancel only while eligible pending; executed work needs its action-specific reversal.Schedule/cancellation/execution history.

Run a safe recovery incident process

  1. Contain

    Stop duplicate writes, public sharing, or further configuration changes.

    Check: The incident does not widen.

  2. Identify

    Record server, target, owning record, current Discord state, last event, and exact time.

    Check: The actual state is known.

  3. Classify

    Separate wrong target, wrong action/duration, partial side effect, permission drift, stale UI, and data exposure.

    Check: The recovery matches the problem.

  4. Reverse/repair narrowly

    Use only the supported reversal or owning server configuration control.

    Check: The primary issue is corrected without unrelated changes.

  5. Verify

    Compare stored record and live Discord state again.

    Check: Recovery completion is explicit.

  6. Document

    Add the correction/recovery event and unresolved impact.

    Check: The audit trail remains honest.

  7. Escalate

    Send safe identifiers/status to the correct server lead or published contact.

    Check: Sensitive content and credentials stay private.

Recover without repeating uncertain work

Idempotency is proven only on workflows that record a stable execution key. It does not make every external effect reversible or guarantee notifications, role changes, or target availability.

A cross-workflow state is unclear

What you see: The visible status, permission, source, or execution result does not support a confident next action.

What may be happening: The viewer may be reading a stale surface, a narrowed view, a separate lifecycle stage, or a partial operation result.

What to do

  1. Do not repeat a write until the existing record is checked.
  2. Compare the requested action with the latest execution status.
  3. Correct only the stated permission, target, or stale-state problem.
  4. Escalate uncertain external effects with the record and execution identifiers.
Back to top