- Date: 2026-03-16 - Decision: `Cleanup Orphaned Projections` must remove dangling component/asset timeline residues even when the parent `parts`/`machines` row is already absent, and must detect orphan assets after orphan component cleanup in the same run. - Context: The previous cleanup implementation derived candidates only from `parts` / `machines` and computed orphan assets before deleting orphan component installations. This left behind dangling component timeline rows and assets that became orphan only after step 1. - Consequences: - Orphan candidate collection now includes timeline-only component/asset ids with missing parent registry rows. - Cleanup runs asset orphan detection after component cleanup side effects. - A single cleanup execution is expected to converge without requiring a second manual run for these cases. - Affected: - `internal/history/admin_cleanup_orphans.go` - `bible-local/architecture/runtime-flows.md`