What a fix is
Each fix belongs to one check and has a tier:
Every fix also states its risk (
safe, restarts, exposes), whether it can be undone, and a list of the concrete changes it will make before you confirm.
Built-in fixes
Loop protection
- A fix never applies without an explicit click. Re-checks may run on their own.
- Each attempt is stored with a fingerprint of the failing check result.
- After a failed attempt the fix drops one tier (auto, then guided, then manual) and shows “tried at T, still blocked because X”.
- It re-arms only when the failing result changes.
- A mutating fix runs at most
APP_FIXIT_MAX_PER_HOURtimes per hour (default 3).
CLI
API
GET /api/v1/fixes, POST /api/v1/fixes/{id}/preview, and POST /api/v1/fixes/{id}/apply (root). Apply responds with fixed, still_failing, cannot_fix_here, or skipped.