L: SleepProvider.find_best_for filters bed candidates via the existing Job.is_target_taken_by_other mechanism that ConstructionProvider already uses. Sets j.target_node = best_bed on the proposed job so other pawns see the claim. Fixes the 2/3-pawns-floor-sleep symptom (memory.md 2026-05-11) caused by greedy nearest-neighbor convergence. The bed.claim() mechanism was already race-free; this just prevents simultaneous proposals on the same bed. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| bill.gd | ||
| bill.gd.uid | ||
| chop_provider.gd | ||
| chop_provider.gd.uid | ||
| cleaning_provider.gd | ||
| cleaning_provider.gd.uid | ||
| construction_provider.gd | ||
| construction_provider.gd.uid | ||
| crafting_provider.gd | ||
| crafting_provider.gd.uid | ||
| decision.gd | ||
| decision.gd.uid | ||
| doctor_provider.gd | ||
| doctor_provider.gd.uid | ||
| eat_provider.gd | ||
| eat_provider.gd.uid | ||
| hauling_provider.gd | ||
| hauling_provider.gd.uid | ||
| job.gd | ||
| job.gd.uid | ||
| job_runner.gd | ||
| job_runner.gd.uid | ||
| mine_provider.gd | ||
| mine_provider.gd.uid | ||
| plant_provider.gd | ||
| plant_provider.gd.uid | ||
| quality.gd | ||
| quality.gd.uid | ||
| recipe.gd | ||
| recipe.gd.uid | ||
| recipe_catalog.gd | ||
| recipe_catalog.gd.uid | ||
| rest_provider.gd | ||
| rest_provider.gd.uid | ||
| sleep_provider.gd | ||
| sleep_provider.gd.uid | ||
| status.gd | ||
| status.gd.uid | ||
| status_catalog.gd | ||
| status_catalog.gd.uid | ||
| thought.gd | ||
| thought.gd.uid | ||
| thought_catalog.gd | ||
| thought_catalog.gd.uid | ||
| toil.gd | ||
| toil.gd.uid | ||
| wolf_spawner.gd | ||
| wolf_spawner.gd.uid | ||
| work_provider.gd | ||
| work_provider.gd.uid | ||