Lock Recovery¶
Stand: 2026-05-26
Ziel¶
Lock Recovery behandelt orphaned, failed-release, stale, expired und emergency-hold Locks nachvollziehbar und approval-basiert. Es gibt kein Blind Release und kein Loeschen von Lock-Historie.
Recovery States¶
orphanedfailed_releasestaleexpiredemergency_hold
Erlaubte Actions¶
mark_reviewedrelease_after_verificationexpire_after_verificationkeep_blockingescalate_to_manual_hold
Nicht erlaubt:
hard_delete_lockblind_releaseoverwrite_lock_ownerbypass_policy
Approval Model¶
Jede Recovery braucht eine eigene Approval-ID:
target_system=dependency_locksaction_type=lock_recoverylock_idobject_idreasonverification_required=trueaudit_required=true
Verification vor Recovery¶
Vor release_after_verification oder expire_after_verification muss geprueft werden:
- Zielobjekt existiert noch oder dessen Fehlen ist verstanden.
- Es laeuft keine aktive Chain fuer das Objekt.
- Es gibt keinen ungeprueften offenen Rollback.
- State/Drift ist konsistent oder bewusst akzeptiert.
- Policy/Risk ist nach Recovery akzeptabel.
Empfohlene Operator-Reihenfolge:
inspect_lockinspect_chain_statusstate_drift_checkrecovery_preflightrecovery_approval_requestrelease_after_verificationnur nach gueltiger Approval
mock_noop ist kein Recovery-Ersatz. Es darf nicht als Freigabe- oder Sicherheitsnachweis fuer orphaned, failed-release oder stale Locks verwendet werden.
API¶
GET /dependency-locks/recovery-policyPOST /dependency-locks/recovery/preflightPOST /dependency-locks/recovery/approve-requestPOST /dependency-locks/recovery/execute
Operator UX¶
Recovery-Previews muessen ruhig und konservativ wirken:
orphaned: Chain vermutlich abgebrochen oder Abschluss nicht sauber dokumentiert.failed_release: Lock-Freigabe ist fehlgeschlagen; Objektzustand muss geprueft werden.stale: Zeitfenster ist abgelaufen, aber das ist kein automatischer Freibrief.expired: Status ist abgelaufen oder markiert; Review bleibt Pflicht.emergency_hold: blockiert bewusst und darf nicht normal released werden.
Release ist nur erlaubt, wenn:
- Zielobjekt und Chain-Status geprueft sind.
- State/Drift konsistent oder bewusst akzeptiert ist.
- Kein offener Rollback uebersprungen wird.
- Policy/Risk nach Recovery akzeptabel ist.
- Eine gueltige Recovery-Approval vorliegt.
Nicht erlaubt:
- Hard Delete
- Blind Release
- Auto-Release nur wegen Timeout
- Recovery ohne State-/Drift-/Policy-Review
execute verbraucht die Approval-ID. Replay wird blockiert.
Recovery UX¶
Recovery-Antworten enthalten fuer OpenCode:
operator_summaryrecovery_artifact- Recovery-Grund
- Verification-Checkliste
- empfohlene Aktion
- Manual-Review-Warnung
- exakter Freigabetext
- Impact-Hinweis
OpenCode soll bei Lock Recovery zuerst den Changeplan anzeigen. Execute ist nur mit gueltiger Recovery-Approval-ID erlaubt.
Zusätzlich wird unified_operator_response geliefert. Fuer Recovery ist action_classification=recovery; OpenCode soll highlight_recovery=true und manual_review_required=true prominent anzeigen.
Audit¶
Jeder Schritt schreibt ein Audit-Event mit:
recovery_idapproval_idlock_id- alter Status
- neuer Status
- Verifier
- Verification Result
- Reason
- Timestamp
- Audit Reference
Secrets werden nicht gespeichert.