We just have to acknowledge that is not possible for a specification to cover every arbitrary use case. Not all cases described in human language could be written in the specification language.
Suppose someone create “The New OSM OpeningHours Testing Church”, which religious services will be only in prime days, counting days as starting in 1 the OSM birthday. Its reasonable for the specification to support this use case?
I think the better solution without modifying the specification is to write as escada suggested.
open; PH open;Jan 31, Mar 31,May 31, Jul 31, Aug 31, Oct 31, Dec 31, Apr 30, Jun 30, Sep 30, Nov 30, Feb 28 off; Feb 29 off
which only differs from the real word in one day every leap year (Feb 28 will be open, but described as closed)
To improve this, you could use the fact that semantically the order of the counts, so adding “;2020 Feb 28, 2024 Feb 28, 2028 Feb 28 open”…
Writing as
open; PH open; Jan 31,Mar 31,May 31,Jul 31,Aug 31,Oct 31,Dec 31,Apr 30,Jun 30,Sep 30,Nov 30,Feb 28 off; Feb 29 off;2020 Feb 28, 2024 Feb 28, 2028 Feb 28, 2032 Feb 28, 2036 Feb 28 open
which is usable right now for the software already in use, at least until 2040…