Esp time slip?

HI
I have an esp32 that has a distinct sleep mode set that should only allow operation between hours 10am - 3pm.
This has been working fine - except for the last 3 days where operation has been allowed after 6pm.
I’m really not sure what the go is? Here is the time layout of the esp which switches the relay.

substitutions:
  name: esphome-web-82fed4
  friendly_name: relay control main tank

esphome:
  name: ${name}
  friendly_name: ${friendly_name}
  min_version: 2024.6.0
  name_add_mac_suffix: false
  project:
    name: esphome.web
    version: '1.0'




#deep sleep of esp
time:
  - platform: homeassistant
    id: homeassistant_time
    on_time:
      #Deep sleep at 3pm and wake up at 10am.
      - hours: 15
        then:
          - delay: 1s
          #Rest up
          - deep_sleep.enter:
              id: deep_sleep_control
              until: "10:00:00"
              time_id: homeassistant_time
binary_sensor:
  - platform: homeassistant
    id: prevent_deep_sleep
    name: Prevent Deep Sleep
    entity_id: input_boolean.prevent_deep_sleep

script:
  - id: consider_deep_sleep
    mode: queued
    then:
      - delay: 60s
      - if:
          condition:
            binary_sensor.is_on: prevent_deep_sleep
          then:
            - deep_sleep.prevent: deep_sleep_control
            - logger.log: 'Skipping sleep, per prevent_deep_sleep'
          else:
            - deep_sleep.enter: deep_sleep_control
      - script.execute: consider_deep_sleep
      
# Deep sleep
deep_sleep:
  id: deep_sleep_control
  run_duration: 5min
  sleep_duration: 60min    

output:
  - platform: gpio
    pin: 19
    id: water_sensor_power
    inverted: false

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:

# Allow Over-The-Air updates
ota:
- platform: esphome


wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  manual_ip:
    static_ip: 192.168.0.170
    gateway: 192.168.0.1
    subnet: 255.255.255.0
# In combination with the `ap` this allows the user
# to provision wifi credentials to the device via WiFi AP.
captive_portal:

dashboard_import:
  package_import_url: github://esphome/example-configs/esphome-web/esp32.yaml@main
  import_full_config: true

# Sets up Bluetooth LE (Only on ESP32) to allow the user
# to provision wifi credentials to the device.
esp32_improv:
  authorizer: none

Try adding a NTP server:

# Example configuration entry
time:
  - platform: sntp
    id: sntp_time
    timezone: Europe/Sofia
    servers:
     - 0.pool.ntp.org
     - 1.pool.ntp.org
     - 2.pool.ntp.org