---
name: idempotent-redundancy
description: Idempotent Redundancy
user-invocable: false
---

# Idempotent Redundancy

When adding redundant paths (fallbacks, belt-and-suspenders), make them idempotent.

## Pattern

Redundancy without idempotency causes loops, churn, or data corruption.

## DO
- Use `_is_merge: true` for Braintrust updates
- Check if value exists before writing (fallback only if missing)
- Use atomic write/rename for file operations
- Make reconciliation steps safe to run repeatedly

## DON'T
- Write unconditionally in fallback paths
- Allow multiple writers to overwrite each other
- Fire "repair" actions that can trigger more repairs

## Source Sessions
- a541f08a: "Redundancy is good only if idempotent"
- 1c21e6c8: "Belt-and-suspenders, but make it idempotent"
- 6a9f2d7a: "Idempotent repair hooks"
