Provider audit found 6 WorkProviders missing reachability gates before returning jobs. Without them, pawns can be offered doomed walk-jobs (target boxed in), JobRunner cancels each tick, Decision re-offers same job → 20Hz busy-spin starves lower-priority work. Fixed 4 here (mechanical pattern): - PlantProvider._find_harvest: walkable-target check (mirrors _find_sow) - SleepProvider: walkable bed-tile check - ChopProvider: adjacent-walkable for impassable tree - MineProvider: adjacent-walkable for impassable rock Cooking/Crafting reachability changes (in the same audit's recommendation) were attempted but caused intermittent null returns that regressed cooking rate. Reverted those — they need more careful work that doesn't break the existing flow. Filed separately. Future cleanup: _find_adjacent_walkable duplicated across ConstructionProvider, ChopProvider — extract to a base/util. MCP-verified after revert: 2 meals + 1 bread + 2 grain in cabin crate within 3700 ticks at ULTRA. Cooking fires, hauling fires, all production paths operational. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| ai | ||
| effects | ||
| entities | ||
| main | ||
| pawn | ||
| storyteller | ||
| ui | ||
| world | ||