Mining
Mining runs as a bounded job, the same shape as crafting: you start it with an explicit number of cycles (batches), and it has no timers or background ticks — it accrues lazily, in whole cycles, and you collect it by claiming:
cycles = floor( time since start / cycle length )
settled = min( cycles, remaining scheduled batches, whole cycles that fit warehouse room )
Starting a job
Point an Extractor at a resource it can mine and choose how many batches (cycles) to schedule. The job produces at most that many cycles of output and then ends by itself, freeing the cell's Process slot — there's no separate stop action and no auto-restart. Mining does not start on its own when you build an Extractor.
Extraction cycles
Each cycle of the building's cycle length yields a fixed amount of the resource — its yield per cycle — at one global tempo shared with crafting, so a shorter cycle simply matures more often. A cycle in progress accrues nothing until it completes. The per-building cycle lengths and yields are in the extraction table.
Provisional Cycle lengths, yields, and deposit sizes are balance placeholders.
Two ways a job ends
A mining job has two independent terminal conditions, whichever comes first:
- Schedule exhausted — every scheduled batch has been claimed. The Process slot frees up; the deposit may still hold resources for a future job.
- Deposit depleted — the deposit runs out before the schedule does. The final cycle drains whatever is left with proportional output, so the deposit reaches exactly zero — a partially-mined deposit never strands units, and a fully-drained cell can be re-revealed.
Either way, claiming after the job ends only ever banks what matured up to its end — time claimed past a finished job's schedule produces nothing, exactly like an unclaimed finished craft.
Claiming and stalling
Claiming banks matured output into the cell's balance. It is free, instant, and signature-free:
- Claiming with nothing newly matured is a harmless no-op.
- Accrual is computed on read or claim — there is no cron job ticking in the background.
- Claiming often banks exactly the same total as claiming once at the end; a part-way cycle is never lost or double-counted.
- A full cell stalls the job exactly like a full warehouse stalls a craft: nothing settles until a whole cycle's output fits, so bank and move resources out to let it resume. Time spent stalled is discarded — but the schedule and the deposit are untouched, so nothing is lost except the idle time itself.
- Re-revealing a depleted cell resets the cell's deposits and Process slot, so a fresh deposit can't be harvested retroactively.
Because accrual is lazy, an agent does not need to poll continuously — it can claim on its own schedule and the math is identical.