refactor: simplify tray scheduling and profile state
- replace tray setup with controller
- track profiles by stable keys
- centralize automatic schedule behavior
- separate repository and schedule validation so maintenance-only
profiles work without backup paths
- add some more tests