# Recover uncertain loop work

Preserve the existing operation before attempting to correct a stuck build, blocked review or uncertain run. A timeout describes your wait; it is not evidence that execution failed or never began.

## A hosted build appears stuck

Keep the brief, request identity and visible error. Choose **Check loop progress** for the existing request before creating another draft. If progress remains unavailable, retain the same request for support; a second build does not confirm the first one's outcome.

## Review or activation is blocked

Check the owning account and exact version. Reopen **Review version** and verify the files are readable and match the current instructions. Leave unreadable candidates unapproved. If activation's response was lost, refresh the catalogue first: the version may already be approved. Do not activate another digest to clear an uncertain state.

## An invocation had no clear response

1. Keep the original key, version and unchanged serialized inputs. Do not generate a new key.
2. Read `GET /hvy/v1/loops/invocations/{idempotencyKey}` with the original account.
3. Retain the returned run ID, then read `GET /hvy/v1/loops/runs/{runId}`.
4. For `queued` or `running`, inspect again without resubmitting. For `uncertain`, seek reconciliation of that run before starting new work.
5. For `completed`, validate available output against the artifact. A status alone is not task acceptance.

## A version was revoked or output is missing

Revocation blocks future invocations, but work already running may finish. Read the run's own state. Null output may reflect pending data, retention expiry or deletion; it does not establish non-execution. The hosted contract has no public run-cancel endpoint, and deleting stored data is not cancellation.

## Keep operation identity without credentials

Use this personal recovery worksheet to retain non-secret identity. Replace its descriptive values with your own observations; it is not a service configuration or API request. Keep it private when identifiers or file locations are sensitive.

```yaml
service: SERVICE_NAME
operation_id: OPERATION_ID
idempotency_key: ORIGINAL_KEY
request_body_file: path/to/original-request.json
version: EXACT_VERSION_IF_APPLICABLE
last_observed_state: STATE
```

## A useful support report

Use this report template after preserving your work. Include only safe IDs and errors, never credentials or full private files.

```markdown
# Support report

- Product and installed version:
- Exact action:
- Expected result:
- Observed result and non-secret error:
- Relevant operation/run ID, if safe to share:
- Steps already tried:
- Work preserved before retrying:
```

## Escalate with useful evidence

Keep non-secret IDs, exact status/code, last observation and steps already tried. Never paste cookies, tokens or private inputs. Use [account guidance](/docs/shared/account) for sign-in and the [support checklist](/docs/shared/support) for unresolved outcomes. The worksheets below are personal records, not API payloads.
