Scheduled functions never execute (no logs, no effect) while build log shows them registered

Site: itda-crm.netlify.app (custom domain: itda.cc)
Framework: Next.js 16.2.2 with @netlify/plugin-nextjs

My three scheduled functions have never executed since I added them on 2026-08-15. No logs, no side effects.

What the build log shows (deploy 81d4244, today 11:34 KST):

Packaging Functions from netlify/functions directory:

  • notify-expiry.mjs
  • notify-schedule.mjs
  • validate-ttl.mjs

    Scheduling functions: notify-expiry, notify-schedule, validate-ttl

So they are bundled and registered. But:

  1. Clicking “Run now” in the dashboard produces zero log lines and zero effect on my database.
  2. The functions log a message on the very first line before any await, and even that line never appears.
  3. The endpoint each function calls returns 200 when I call it directly from outside with the same Bearer token, and it correctly updates 12 rows in my database. So the target route, the secret, and the auth check are all fine.
  4. CRON_SECRET is set in Netlify env vars with All scopes.
  5. Slowest direct call took 10.8s, well under the 30s limit.

Function shape (all three identical):

export const config = { schedule: ‘0 19 * * *’ };
export default async () => {
const secret = process.env.CRON_SECRET;
if (!secret) console.error(‘[validate-ttl] CRON_SECRET is not set’);
const res = await fetch(${process.env.URL}/api/cron/validate-ttl, {
headers: { Authorization: Bearer ${secret} },
});
console.log([validate-ttl] ${res.status});
};

No imports at all, only global fetch and process.env.

One thing I noticed: my netlify.toml has [functions] region = “ap-southeast-1”, which I now realize is an AWS region string, not a Netlify one. The build log shows no warning about it. Could an invalid region value silently prevent user functions from running, while the Next.js internal function is unaffected?

Any pointers on what to check next would be appreciated.