Scheduled jobs & queues
The scheduler is the only actor in the system that is not a person: it runs the daily tick for the Life Sim and sends the learning reminders during cooldown. This page exists for one very specific reason β if the daily tick breaks and nobody notices, the Life Sim stands still until a player complains.
Job history is kept for 90 days.
| Job | Schedule | Last run | Result | Records | Last failure | Action |
|---|---|---|---|---|---|---|
| JOB-01 Β· Life Sim daily tick Adds income, subtracts costs and updates stress for every open run |
04:00 daily | 27/07 04:00:12 took 41 seconds |
Succeeded | 84 | β | No re-run button β see the explanation below |
| JOB-02 Β· Cooldown learning reminder Sent only to accounts in cooldown, and only about learning |
20:00 daily | 26/07 20:00:03 took 6 seconds |
Succeeded | 7 | β | |
| JOB-03 Β· Close cooldowns that have finished Reopens the betting floor for accounts that have completed seven days |
00:05 daily | 27/07 00:05:01 took 3 seconds |
Succeeded | 2 | 24/07 database connection timeout, the next scheduled run succeeded |
|
| JOB-04 Β· Period metrics snapshot Builds the de-identified aggregates behind the pilot figures |
06:00 daily | 27/07 06:00:44 took 2 minutes 11 seconds |
Succeeded | 64 | β | |
| JOB-05 Β· Database backup Encrypted, kept for 30 days |
03:00 daily | 27/07 03:00:07 took 5 minutes 2 seconds |
Succeeded | β | β | Run by the infrastructure team only |
Why the daily tick has no manual re-run
JOB-01 adds one day of income to every open run. Running it twice in the same day would double everyone's income β not one player's, everyone's. The damage is not just extra Life Money. Life Money is deliberately separate from learning tokens and can never be moved onto the betting floor; a duplicate tick would still corrupt the consequences the Life Sim is built to teach.
So the button does not exist. This is not a feature waiting to be built; it was left out on purpose.
The second stop is in the data layer: JOB-01 has a unique key on (job_id, date). If it were somehow called a second time on the same day, the second write is rejected regardless of what the interface shows. Once a day, never more.
What to do if the daily tick really fails
- Do not re-run it. First work out how many records the job wrote before it stopped β the number in the "Records" column is the count of runs already processed.
- Use the backfill, not a re-run. The backfill only touches runs with no record for that day and skips everything already done.
- It takes two people. A backfill writes to player data, so it goes through the same request and approval path as any other change.
- Write it up in the incident log so the next safety control audit can check it.
Reminders queued
7 items| Recipient | Type | Send time | Status |
|---|---|---|---|
| U-10241 | Learning reminder (cooldown day 4) | 20:00 | Queued |
| U-10188 | Learning reminder (cooldown day 6) | 20:00 | Queued |
| U-10307 | Learning reminder (cooldown day 2) | 20:00 | Queued |
| β¦and 4 more of the same type | |||
The whole queue holds one kind of notification: a learning reminder. There is no "cooldown ending soon", no "new market", no "come back and play". The list of types is closed β adding one means changing the code and passing content review.
This page reads job status, not player data. The "Records" column is a count, not a list. Error logs show a technical error code and an anonymous account code with everything else stripped out β no balances, no betting history, no AI conversations.