Horus Eye · Org Cleanup
Before you delete Salesforce metadata, know what still depends on it
Every org has a graveyard nobody dares disturb: Flows with “OLD” in the name, fields no layout shows, permission sets nobody holds. They stay because “unused” and “safe to delete” are different claims — and only one of them can be proven from metadata. Horus Eye treats the difference with respect: candidates are ranked with their evidence, and every executable retirement is reversible.
What “unused” can and cannot mean
Epistemics of deletionHorus Eye’s cleanup signals are deliberately conservative, and each one names its blind spots:
Orphaned component
Nothing in the scanned metadata references it — but scheduled Apex, invocable actions and direct page placements can hide references, so this is a signal to check, filed at info severity, never a verdict.
Field used only by inactive automation
Flagged only when every referencing component is a type whose active status the scan can actually read — and every one is inactive. One Apex class, layout or unresolvable reference in the set, and the field is skipped entirely, because a claim the data cannot support is worse than a missed candidate.
Unassigned permission set
Nobody holds it — near-zero live blast radius, and one of the auto-safe retirements Horus can execute reversibly.
Flow version sprawl & near-duplicates
Outlier saved-version counts and behaviorally similar automation — consolidation candidates, ranked with the similarity evidence that justifies them.

The cleanup discipline
Four steps, one rule- Rank candidates by evidence, not by name. “OLD_” in a label means nothing; zero recorded references plus inactive-only referencers plus no similarity twins means something.
- Check the blast radius anyway. Dependency data cannot see reports, list views or API consumers — the one-minute check on those surfaces is the difference between cleanup and outage.
- Retire reversibly. The executable retirements — unused permission sets, inactive-user assignments, redundant record types and validation rules — run as approved, zero-write-validated, rollback-ready operations. Everything else exports as an SFDX / Metadata API bundle for your own pipeline, or stays a guided Setup step.
- Prove it with the re-scan. The finding clears when the evidence is gone — and the scan history shows the org actually getting smaller, which is what makes the next cleanup easier to approve.
Two boundaries keep the discipline honest. Managed packages are the vendor’s to change: components inside a namespace are identified and factored into the ranking, but retirement there means a vendor conversation or an uninstall decision, never a direct edit — and any tool that offers otherwise is offering you someone else’s warranty. And usage evidence has a time horizon: a component untouched for ninety days may simply belong to a quarterly close, a year-end receipt run, or an annual campaign. Before retiring anything with a seasonal smell, ask the owner what January looks like. The cheapest cleanup mistake to prevent is the one that surfaces at the busiest week of the fiscal year — which is also why staged retirement (deactivate, wait a full cycle, then remove) beats deletion in one step for anything that ever touched money, and why the recycle window is a planning input, not a safety blanket.

Protected AI — the Trust Layer
Every AI read in Horus Eye is metadata-first: built from an allowlist, sanitized by pattern, made through one audited gateway and checked by an output firewall on the way back — and AI is off by default, per org. Every request carries an audit id and an AI Data Scope manifest you can open.
Start your metadata cleanup now
Candidates ranked with evidence, retirements that can be undone, and a re-scan that proves the graph changed the way the plan said.
Try Horus Eye Free Assess Your Technical Debt All Horus Eye pagesFree start · 250 credits for 60 days · no card required · scans are free