Providing services to other programs is indeed the key notion.
I learned to program on an SDS Sigma 5. [1] The machine booted by reading the first card in the reader and executing the instructions punched on that card.
The card could be a boot loader to start the BTM (Batch Timesharing Monitor) operating system from disk. Or the card could be a little program all of its own.
A particularly useful one-card program was a card deck printer. You would put it at the front of the deck and boot the machine. This card had a simple loop to read the next card into memory, then print that line on the printer, and repeat until the card reader was empty. (One of my first optimization adventures was modifying the code to be double-buffered: read the next card into memory while the previous card is printing. Twice as fast!)
That card certainly handled resources, but no one called it an OS. It didn't manage and provide services to other programs, it was just a one card program.
Another popular one card program was the bird chirp card. It pulsed the front panel speaker to make it sound like birds were chirping. We didn't think of that as an operating system either. :-)
[1] https://en.wikipedia.org/wiki/SDS_Sigma_series