You've learned for 25 minutes. A short break helps your brain.
Sprint done! Great focus. Stretch for a minute?
Night shift
Optional 5-minute drills. Something broke, and you fix it.
Something is broken in the simulator. Fix it with what you learned. No countdown and no score. Stop any time.
This week's drill
Level 1 of 3 Part 1 · Dapur · About 5 minThe page will not openThe web box runs, but localhost:8080 shows nothing. The hatch leads to a door where nobody listens.Start this drill →Level 2 of 3 Part 1 · Dapur · About 5 minHatch 8080 is takenToday's web box must serve on hatch 8080. Yesterday's old-web box still holds it.Start this drill →Level 2 of 3 Part 1 · Dapur · About 5 minapi cannot find menuThe api box asks for the menu box by name. It gets: bad address 'menu'.Start this drill →Level 1 of 3 Part 1 · Dapur · About 5 minThe timer box quits at onceThe timer box should wait for an hour. It stops the moment it starts.Start this drill →Level 3 of 3 Part 1 · Dapur · About 5 minKitchen blackoutThe kitchen laptop restarted. Someone started the boxes again from memory. Now nothing works.Start this drill →Level 1 of 3 Part 1 · Dapur · About 5 minThe database box will not stay upThe db box starts, then stops at once. The shop has no database tonight.Start this drill →Level 2 of 3 Part 1 · Dapur · About 5 minPostgres 18 refuses its lockerSomeone moved db to Postgres 18 with the old run line. It stops at once.Start this drill →Level 2 of 3 Part 1 · Dapur · About 5 minLocked down, and now it will not startSecurity asked for a read-only web box. Now nginx stops the moment it starts.Start this drill →Level 2 of 3 Part 1 · Dapur · About 5 minThe env file is refusedThe db password lives in db.env. Every run with --env-file fails before db is made.Start this drill →Level 3 of 3 Part 1 · Dapur · About 5 minThe 2 a.m. scriptA new night script ran at 2 a.m. It stopped at web with this error. db is down too.Start this drill →Level 3 of 3 Part 1 · Dapur · About 5 minOld menu after the pullYou ran git pull in kedai-kancil. Now docker compose up fails. The new menu must go live tonight.Start this drill →Level 3 of 3 Part 1 · Dapur · About 5 minLock-down nightTonight both nginx boxes were locked down at once. Now web and menu both stop at start.Start this drill →Level 3 of 3 Part 1 · Dapur · About 5 minMoved to a new laptopThe shop moved to a new laptop tonight. Its compose.yaml stayed behind, so every box was typed again.Start this drill →Level 1 of 3 Part 2 · Kilang · About 5 minThe belt never startedYou pushed to main. No run appeared at all.Start this drill →Level 1 of 3 Part 2 · Kilang · About 5 minThe push to GHCR is refusedThe belt builds the image, then the push stops with permission_denied.Start this drill →Level 2 of 3 Part 2 · Kilang · About 5 minThe release step is refusedYou pushed tag v1.4.0. The last step says: Resource not accessible by integration.Start this drill →Level 1 of 3 Part 2 · Kilang · About 5 minThe push to GHCR has no loginThe job may write packages. Still, every push to GHCR ends with unauthorized.Start this drill →Level 1 of 3 Part 2 · Kilang · About 5 mingh cannot find its tokenYou pushed tag v1.5.0. The job may write, yet the release step stops at once.Start this drill →Level 2 of 3 Part 2 · Kilang · About 5 minGreen on laptops, red on the runnerThe order tests pass on every laptop. On the runner, they fail on every pull request.Start this drill →Level 2 of 3 Part 2 · Kilang · About 5 minThe attestation step stopsThe image reaches GHCR. Then the new attestation step stops the belt.Start this drill →Level 2 of 3 Part 2 · Kilang · About 5 minThe pull request comment is refusedThe tests pass on every pull request. Then the last step cannot leave its comment.Start this drill →Level 2 of 3 Part 2 · Kilang · About 5 minThe image build is cut offSomeone set a short time limit to save minutes. Now every image build is cancelled.Start this drill →Level 1 of 3 Part 3 · Medan Selera · About 5 minVersion 2 keeps crashingSomeone shipped version 2 of the shop. Its new tray crashes again and again.Start this drill →Level 1 of 3 Part 3 · Medan Selera · About 5 minThe new tray has no meal packAn update asked for nginx:1.299. That tag does not exist, so the pull fails.Start this drill →Level 2 of 3 Part 3 · Medan Selera · About 5 minThe order number reaches nobodyThree shop trays are ready. Yet the shop Service has no endpoints.Start this drill →Level 2 of 3 Part 3 · Medan Selera · About 5 minThe soup pot waits foreverThe soup tray stays Pending. It only goes to a stall with the sign disk=ssd.Start this drill →Level 3 of 3 Part 3 · Medan Selera · About 5 minLunch rush outageA release went out at noon. Now customers get no answer from the shop.Start this drill →Level 1 of 3 Part 3 · Medan Selera · About 5 minThe soup pot keeps falling overThe soup tray restarts again and again. Its logs look fine.Start this drill →Level 2 of 3 Part 3 · Medan Selera · About 5 minThe deploy bot is locked outAfter a tidy-up of old access rules, every deploy from the pipeline fails.Start this drill →Level 2 of 3 Part 3 · Medan Selera · About 5 minVersion 2 waits for a noteVersion 2 of the shop reads today's special from a note. Its new tray never starts.Start this drill →Level 3 of 3 Part 3 · Medan Selera · About 5 minThe lunch releaseAt noon, someone typed a release straight into the cluster. Customers now get no answer.Start this drill →Level 3 of 3 Part 3 · Medan Selera · About 5 minGuessed sizesToday the kitchen got new memory numbers. Now soup keeps falling over, and rice never starts.Start this drill →Level 3 of 3 Part 3 · Medan Selera · About 5 minThe noodle stall never opensThe new noodle stall was made from the burger stall's files. Its trays run, but nobody gets noodles.Start this drill →Level 3 of 3 Part 3 · Medan Selera · About 5 minMeant for devA teammate tried a new tag and a smaller size "on dev". Minutes later, prod-like customers waited.Start this drill →Level 3 of 3 Part 3 · Medan Selera · About 5 minHalf a moveTonight the shop moved from namespace default to food. The client now gets no shop at all.Start this drill →Level 1 of 3 Part 3 · Medan Selera · About 5 minA stall went quietAfter a disk check, stall dev-worker2 stopped reporting. Nobody watches its trays now.Start this drill →Level 2 of 3 Part 3 · Medan Selera · About 5 minThe fourth tray waits foreverSomeone edited the scheduler’s manifest last night. Now new trays wait in Pending.Start this drill →Level 3 of 3 Part 3 · Medan Selera · About 5 minThe night shift forgot to undoThe lunch order asks for 5 shop trays. Two wait in Pending, and one stall is quiet.Start this drill →A new one comes each week. Every drill below is open too.
All drills
Pick any level. Nothing is locked.
Level 1: one fault, hints open
One thing broke. Hints show up after a few tries.
- The page will not openPart 1 · Dapur FixedThe web box runs, but localhost:8080 shows nothing. The hatch leads to a door where nobody listens.
- The timer box quits at oncePart 1 · Dapur FixedThe timer box should wait for an hour. It stops the moment it starts.
- The database box will not stay upPart 1 · Dapur FixedThe db box starts, then stops at once. The shop has no database tonight.
- The belt never startedPart 2 · Kilang FixedYou pushed to main. No run appeared at all.
- The push to GHCR is refusedPart 2 · Kilang FixedThe belt builds the image, then the push stops with permission_denied.
- The push to GHCR has no loginPart 2 · Kilang FixedThe job may write packages. Still, every push to GHCR ends with unauthorized.
- gh cannot find its tokenPart 2 · Kilang FixedYou pushed tag v1.5.0. The job may write, yet the release step stops at once.
- Version 2 keeps crashingPart 3 · Medan Selera FixedSomeone shipped version 2 of the shop. Its new tray crashes again and again.
- The new tray has no meal packPart 3 · Medan Selera FixedAn update asked for nginx:1.299. That tag does not exist, so the pull fails.
- The soup pot keeps falling overPart 3 · Medan Selera FixedThe soup tray restarts again and again. Its logs look fine.
- A stall went quietPart 3 · Medan Selera FixedAfter a disk check, stall dev-worker2 stopped reporting. Nobody watches its trays now.
Level 2: one fault, hints folded
One thing broke. Hints stay folded until you open one.
- Hatch 8080 is takenPart 1 · Dapur FixedToday's web box must serve on hatch 8080. Yesterday's old-web box still holds it.
- api cannot find menuPart 1 · Dapur FixedThe api box asks for the menu box by name. It gets: bad address 'menu'.
- Postgres 18 refuses its lockerPart 1 · Dapur FixedSomeone moved db to Postgres 18 with the old run line. It stops at once.
- Locked down, and now it will not startPart 1 · Dapur FixedSecurity asked for a read-only web box. Now nginx stops the moment it starts.
- The env file is refusedPart 1 · Dapur FixedThe db password lives in db.env. Every run with --env-file fails before db is made.
- The release step is refusedPart 2 · Kilang FixedYou pushed tag v1.4.0. The last step says: Resource not accessible by integration.
- Green on laptops, red on the runnerPart 2 · Kilang FixedThe order tests pass on every laptop. On the runner, they fail on every pull request.
- The attestation step stopsPart 2 · Kilang FixedThe image reaches GHCR. Then the new attestation step stops the belt.
- The pull request comment is refusedPart 2 · Kilang FixedThe tests pass on every pull request. Then the last step cannot leave its comment.
- The image build is cut offPart 2 · Kilang FixedSomeone set a short time limit to save minutes. Now every image build is cancelled.
- The order number reaches nobodyPart 3 · Medan Selera FixedThree shop trays are ready. Yet the shop Service has no endpoints.
- The soup pot waits foreverPart 3 · Medan Selera FixedThe soup tray stays Pending. It only goes to a stall with the sign disk=ssd.
- The deploy bot is locked outPart 3 · Medan Selera FixedAfter a tidy-up of old access rules, every deploy from the pipeline fails.
- Version 2 waits for a notePart 3 · Medan Selera FixedVersion 2 of the shop reads today's special from a note. Its new tray never starts.
- The fourth tray waits foreverPart 3 · Medan Selera FixedSomeone edited the scheduler’s manifest last night. Now new trays wait in Pending.
Level 3: incidents
Two or three things broke at once. No hints, but the Rescue Center stays open. Then: what was the root cause?
- Kitchen blackoutPart 1 · Dapur FixedThe kitchen laptop restarted. Someone started the boxes again from memory. Now nothing works.
- The 2 a.m. scriptPart 1 · Dapur FixedA new night script ran at 2 a.m. It stopped at web with this error. db is down too.
- Old menu after the pullPart 1 · Dapur FixedYou ran git pull in kedai-kancil. Now docker compose up fails. The new menu must go live tonight.
- Lock-down nightPart 1 · Dapur FixedTonight both nginx boxes were locked down at once. Now web and menu both stop at start.
- Moved to a new laptopPart 1 · Dapur FixedThe shop moved to a new laptop tonight. Its compose.yaml stayed behind, so every box was typed again.
- Lunch rush outagePart 3 · Medan Selera FixedA release went out at noon. Now customers get no answer from the shop.
- The lunch releasePart 3 · Medan Selera FixedAt noon, someone typed a release straight into the cluster. Customers now get no answer.
- Guessed sizesPart 3 · Medan Selera FixedToday the kitchen got new memory numbers. Now soup keeps falling over, and rice never starts.
- The noodle stall never opensPart 3 · Medan Selera FixedThe new noodle stall was made from the burger stall's files. Its trays run, but nobody gets noodles.
- Meant for devPart 3 · Medan Selera FixedA teammate tried a new tag and a smaller size "on dev". Minutes later, prod-like customers waited.
- Half a movePart 3 · Medan Selera FixedTonight the shop moved from namespace default to food. The client now gets no shop at all.
- The night shift forgot to undoPart 3 · Medan Selera FixedThe lunch order asks for 5 shop trays. Two wait in Pending, and one stall is quiet.