ReviewOS

stacks/the-settlers-iii-remake

Recover surplus idle construction crew and their real tools through staffing controls

#204
Closed chris opened this 7 days ago ·
7 days ago

Normal browser play can strand every hammer in idle construction workers, preventing mineral surveying and tool-smith staffing. Four concurrent ordinary build orders are enough. A separate public-session reproduction from main cc702ac confirms the native-input observation.

Reproduction: rivalSession(2), ordinary player build orders for woodcutter44,53, stonecutter47,62, sawmill46,69 and forester29,51, with the normal rival policy. At5004 there are8builders carrying real hammers and zero free hammers. All four buildings are active. Lowering builderLimit from12 to2 succeeds, but after200ordinary ticks all8builders retain their tools. A normal geologist order is then refused because no hammer can equip it. Accounting is clean and created goods are unchanged. No world edits, extra stock or modified clocks were used. The captured state before lowering the cap and the full command receipt are retained locally.

Current source handles the cap only while assigning staff. Finished crews keep their profession/tool. The dismiss command intentionally supports only geologists, pioneers and thieves; adding a button alone would be a false fix. AI recovery can reclaim those specialists but cannot recover an idle builder hammer from this state.

Source correction should make the player staffing controls capable of returning surplus idle construction crew and their actual equipment to carrying. Preserve active work and pending cargo/jobs, ownership and normal physical tool recovery. Do not reserve magic tools, grant goods, relocate workers or add a client-only bypass.

Acceptance:

  • The captured ordinary four-site opening can free an existing hammer through normal staffing control and equip a geologist or an actual tool-smith worker.
  • Never interrupt busy crew, discard their cargo or steal another player's tools. Surplus crew may return after their current task finishes.
  • Recovered tools are physical goods and conservation remains clean, including save/restore during recovery.
  • Version any changed simulation behavior. Preserve exact profile0.11 saves/replays rather than silently changing their rules.
  • Native browser controls exercise the recovery; public engine regressions, relevant lint/types/build and browser checks pass.

Fidelity boundary: the preserved revised manual documents percentage caps for builders/diggers and a carrier minimum, whereas the current engineering profile uses absolute crew limits. It does not establish the exact original reassignment cadence. Pinned occupation-menu source, SHA2566823c1be372ce3c6905d09753d867ecd637e6cd2c5bfa3e26ea5fd161be516bb. Original-executable observation issue18 remains open; do not claim Gold parity from an engineering recovery correction.

Refs #37, #50, #52, #76 and #4. No source fix has been implemented yet. Main #203 qualification is still running and must complete before another push.

7 days ago

Pinned-source follow-up for the ordinary hammer shortage: paulwedeck/settlers-remake@6ad8c42 contains the expected engine path, beyond a UI-only suggestion. PartitionsGrid.updatePartitionProfessionStats() calls partition.convertWorkers() from its existing timer. PartitionManager.convertWorkers() converts only jobless bricklayers/diggers above their profession limits. BricklayerMovable.convertToBearer() and DiggerMovable.convertToBearer() drop their actual tool before creating the carrier. Source downloads were verified against their pinned Git blob SHA1 values and recorded SHA256 values locally.

Relevant immutable source:

This supports a versioned simulation correction to reconcile surplus idle crew through the current staffing limits, not an invented UI-only dismiss button or a stock grant. Existing source staff() only caps recruitment and reuses idle crew regardless of the cap; it does not reconcile excess professions. Exact original timing and percentage-versus-absolute control parity remain unverified. Retain profile0.11 behavior and its save/replay fixtures; implement the correction under a new engineering profile with explicit evidence. Busy workers/cargo/jobs and other players must remain protected; tools must become real physical goods through normal recovery.

No source fix is implemented yet. The native manual match ended in actual defeat at50:59 after the tool shortage, with the mission failure and lost buildings visibly reported. No human victory claim. #203 remains in exact-main CI before the next source publication.

7 days ago

The preceding #203 source publication is now qualified: cc702ac8, exact main CI40244633903, original artifact12618617732 digest/CRC/all385steps verified. The source checkout is clean. #204 is the next implementation frontier; the actual idle-crew/tool recovery correction is still pending. Preserve profile0.11 and implement under a versioned engineering rule, with captured/public-command and native-input proof.

7 days ago

Source corrections implemented on codex/settlers-idle-construction-crew, based on cc702ac, not yet published. New engineering profile0.12.0 explicitly enables surplus-idle construction reassignment and same-owner ground-pile merging. Exact0.11 remains frozen with digest f1ce0705bbe9a53bf880e7c1d38036404c56e1d7256517123d3dd1e38aee0e78 and retained save/replay checksum f6debd29.

All329unit tests /23209assertions pass. Focused39tests /3662assertions cover actual ordinary four-site recovery, geologist equipment, busy crew, diggers/other players, full-ground retention and real delivery freeing space, and refusal to start fresh work above the reduced cap while a tool cannot be put down. Ownership tests preserve the foreign3hammers and the player's1returned hammer, same-owner merging, restore and replay. The original2pass4fail red and the blocked-tool assignment red are retained. Lint/types/assets/fidelity/roadmap/build pass; full browser acceptance is running.

Native browser clicks/keys reproduce8builders/0freehammers, lower the cap to2, recover6real hammers, equip1geologist and retain2builders/5hammers/1geologist after save/reload. The guide shows0.12 and explains the controls. Restoring an actual0.11 save shows0.11 and omits the new guidance, preserving its rules. Raster/accessibility evidence is retained locally; original raster media are not uploaded.

One identical bundled headless fixture also matches Bun1.4.4, real Chrome and the verified original Craft0.0.341 executable. Baseline checksum c331a944, crew recovery 3f7112a3, ownership 1b4ce693; each save/restore/replay matches, with no browser errors. This is headless engine proof, not native graphics/HUD qualification. No dependency or framework source changed.

All four freshly sampled ordinary two-policy matches finish with clean accounting and zero command failures: seed1at31801, seed5at73581, seed2at184761, seed3at139741. Continuations use normal policies and clocks. These are sampled AI matches, not an all-seed or human-input victory claim. Keeping both issues open until the new pushed-main CI and its original artifact are verified.

7 days ago

Idle builders and diggers now return their tools when their staffing limits are lowered. Ground drops also keep each player's goods separate. The changes are in this commit.

Local checks passed: 329 unit tests, 385 browser steps, lint, types and the production build. Older saves keep their previous rules. CI is running.

7 days ago

Fixed idle crew recovery and tool ownership in this change. Lowering a staffing limit returns surplus idle workers and their actual tools; busy workers finish their task first. Tools dropped beside a foreign pile stay with their owner.

329 unit tests and 385 browser steps passed, along with lint, types and the production build. CI passed, and the browser diagnostics were checked. A browser playthrough also recovered six hammers, equipped a geologist and restored the result after reload.

Reproduction and validation details. Older saves retain their rules. The separate tutorial-map staffing problem is tracked in #206.

Sign in to comment on this issue.