Overburden
codename: Faultline
Clear a row, and watch the rest come down.
- Engine Coverage
- 99.2%
- Tests Passing
- 480
- Networking Code
- None
Overview
Project overview
Overburden is a block-placement puzzle for iOS. You drag one of three pieces onto an 8×10 grid — they never rotate — and filling a complete row or column clears it. What happens next is the game: the blocks left behind fall as connected bodies rather than tidy per-column stacks, keeping the board's overhangs and holes and letting a single placement cascade x2, x3, x4. Grey rubble pushes up from the bottom on a clock that tightens from every six pieces placed down to every two, and it clears exactly like any other block, so the pressure is also the ammunition. Daily seeds from the day number and rotates at local midnight, which gives every player the same run; Endless seeds randomly; an App Clip plays one shared day without an install. The rules are specified once in an engine spec and implemented in a pure-Swift package with no UI imports, so they run headless on macOS and the tests hold them in place. There is no account, no networking code, no analytics, and nothing to buy.
Stack
Tech stack
Features
What it does.
The board
- 8×10 grid, a tray of three pieces, no rotation
- Filling a row or column clears it
- Blocks fall as connected bodies, fragmenting as they go
- Overhangs and holes survive a clear, so the board keeps its shape
- One placement can cascade x2, x3, x4
Pressure
- Grey rubble pushes up from the bottom on a clock driven by pieces placed
- The clock tightens from every six pieces down to every two
- Rubble clears like any other block — the pressure is also the ammunition
- You lose when the rubble reaches the top, or when no piece fits
- Easy, Medium and Hard move the rise clock and the rubble, never the board or the scoring
Modes
- Daily — the same pieces in the same order for every player, rotating at local midnight
- Endless — a fresh random run
- An App Clip plays a shared day's puzzle without installing the app
- No account, no advertising, no in-app purchases, no tracking
Built to be checked
- The rules are specified once, in an engine spec the tests enforce
- Engine coverage held at 99.2% across 116 rule tests
- Difficulty numbers come out of a simulated calibration run, not by hand
- Coverage read from xcresulttool and xccov, never from the exit code
Architecture
How it's built.
- 01
SwiftUI app
iOS 26, iPhone only, portrait only, Swift 6 with complete strict concurrency
- 02
OverburdenCore
every rule, as a SwiftPM package with no UI imports, testable headlessly on macOS
- 03
Engine spec
the rules written once as the contract the engine implements and the tests hold
- 04
App Clip
the same engine behind a shared Daily link, playable without an install
- 05
tune
a greedy-bot calibration harness that fixes the difficulty numbers over 400 simulated games per tier
- 06
XcodeGen
the .xcodeproj is generated from project.yml and never committed
Something like this, but built for you.
Every engagement starts with a written scope — whether it's a native macOS app or a records system for a county.