Immature objects placed through describeMap never mature in a new session. createState starts with an empty growth queue, and only worker planting creates timers, so initial scenario saplings, grain fields and vines remain immature indefinitely despite their own growth rules.
Parent: https://github.com/stacksjs/the-settlers-iii-remake/issues/43
Source owner: stacksjs/the-settlers-iii-remake.
Reproduced through the maintained public describeMap, createSession and advance interfaces on fb77ab1c8e811717b9b3a170406916b78cc5dfc5, Bun 1.4.4. A declarative 64x64 grass map places one immature object at (44,44), clear of the starting castle at (16,16), with no settlers. After the engineering profile's respective due ticks, sapling remains sapling at tick 2401, field remains field at 1601 and vine remains vine at 10801. All three expected-maturation assertions fail, while accounting audits stay clean. The retained external regression reports 0 pass / 3 fail / 15 assertions in 506 ms. No live state was mutated and no original installation is required.
Acceptance:
- Schedule initial immature map objects once, using their existing declared growth intervals, after scenario setup has cleared building sites.
- Do not schedule mature/static objects or growth for objects removed by scenario placement. Keep due-time and tile ordering deterministic.
- Preserve complete saved growth queues and deadlines through restore and replay. Do not reconstruct queues when opening a saved session.
- Freeze published 0.18.0 with its exact digest and preserve historical initial-map and save/replay behavior through an explicit versioned policy.
- Exercise sapling, field and vine maturation boundaries; mature and site-cleared exclusions; mid-growth save/restore; replay; determinism; clean audits, through the public session interface.
- Retain source/rules identities, red/green results and relevant full unit, lint, type and build evidence before completion.
This fixes an internal lifecycle contradiction in the authored engineering profile. It does not change or verify original Gold durations, resource quantities, balance, initial object classifications or native gameplay. Parent #43 remains open for its full fidelity criteria. No relation to residence or pioneer behavior is claimed.