Organic construction v2: three verified fixes, one open problem

Fixes (headless-verified): homes founded at the habitual sleeping spot
within reach of the community (not at distant stone mines); night sends
everyone to bed so beds are used and rough nights actually occur; a bed
must exist at arrival - floor-sleepers at full shelters now count as
unsheltered. Diagnostics added: incomplete_sites stat column, founding
logs.

Open (documented in FINDINGS.md, paused by request): the loop builds
forward but cannot rebuild after loss - winter crises ruin shelters and
recovery stalls (4 foundings in 240 days, no granary after two famines).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-21 14:58:43 -04:00
parent 41cd417601
commit 676a9f3f31
7 changed files with 6955 additions and 6387 deletions
+6 -2
View File
@@ -21,7 +21,7 @@ public static class StatsLogger
"avg_fatigue,avg_nourish,avg_health,carried," +
"gather_ticks,build_ticks,trade_ticks,rest_ticks,social_ticks," +
"shelters_done,ruins,avg_cond,upkeep_stock,burn_per_day,modules,granary_food," +
"avg_debris,refusals";
"avg_debris,refusals,incomplete_sites";
private const string NpcHeader =
"day,npc,name,soul,town,dominant,gather_ticks,build_ticks,trade_ticks,rest_ticks,social_ticks," +
@@ -139,7 +139,11 @@ public static class StatsLogger
float debrisSum = 0f;
foreach (var npc in gm.Npcs) debrisSum += npc.Imprint.Total;
row.Append((debrisSum / count).ToString("0.0000", ci)).Append(',');
row.Append(TradeSystem.RefusalsToday);
row.Append(TradeSystem.RefusalsToday).Append(',');
int incomplete = 0;
foreach (var b in gm.Buildings) if (!b.IsComplete) incomplete++;
row.Append(incomplete);
File.AppendAllText(_path, row + "\n");