Hello and welcome!
You have the right idea: `/schedules` represent planned service, and `/predictions` are real-time updates informed by vehicle tracking and other data sources. Anything "unplanned", such as a train running late, will only be reflected in predictions and not schedules. For the Commuter Rail in particular, note that the specific platform a train will depart from or arrive at is typically "unplanned".
There are no particular guarantees about when schedule data can change, but it is rare for a given day's schedule to change during that day. You can efficiently update your local copy of the data whenever you need to by using `If-Modified-Since`, as described in our Best Practices
). If nothing has changed since the last time you checked, you will get a tiny "not modified" response and the request will not count against your rate limit.
Let us know if you have any further questions!