Appendix A — Flow budget (iteration 2)

The pre-code steady-state accounting required by section 10. Source of truth is budget/flow_budget.py; outputs are budget/flow_budget.csv, budget/flow_budget.xlsx. Reproduce with python3 budget/flow_budget.py.

Method. Flows in units per in-game day. Labor = work lines + travel lines. Haul capacity is derived from travel (carry_cap / weighted-average round-trip), so distances consume labor. A population is feasible when utilization ≤ 1, feed margin ≥ 0, and beds ≥ P. The paper model ignores latency and queuing, so it is an upper bound on feasibility and a lower bound on labor (owner's review, section 10); it is validated against measured M3 runs.

Starting parameters (all [PROPOSED] until measured runs confirm them).

Parameter Value Parameter Value
ticks_per_day 600 inn_service_slots × serve_rate_per_server 2 × 10 = 20 beer/day
work_fraction 0.5 target population (gate) 12–14 (ref 13)
beer_per_agent_day 1.0 immigration beer gate > 3 days supply + free beds
carry_cap 10 (≈ 50 items/day at these distances) tree_count_map 8 (≈ 2× the sustainable need)
ticks_per_edge / distances 15 ticks; field 5, tree 7, build 6, well/brewery/silo 4, inn 3 house_wood_cost, building_decay_days 20 logs, 20 days
founders / buffers 10–12; ~5 days beer + wheat buffer foraging yield 0 (switch off)

Results at the target population (P = 13, foraging off).

Quantity Value Acceptance target Met
Labor utilization (demand / supply) 0.843 (5.48 / 6.50 agent-days) 75–90% yes
Feed margin (inn cap − demand) / cap 35% ≥ 15% yes
Wood demand / regrowth supply 0.42 (4.0 / 9.6 logs/day) ≈ half yes
Bed margin 3 beds ≥ 0 yes
Inn staffing line 1.45 agent-days (26% of labor) explicit yes
Haul labor (travel-derived) 0.82 agent-days — —
Foraging on/off comparison shown (below) required yes

Feasibility by population (foraging off).

P utilization feed margin bed margin wood frac feasible
10 0.97 50% 2 0.31 yes
11 0.91 45% 1 0.31 yes
12 0.85 40% 0 0.31 yes
13 0.84 35% 3 0.42 yes
14 0.80 30% 2 0.42 yes
15 0.76 25% 1 0.42 yes
16 0.73 20% 0 0.42 yes
18 0.85 10% 2 0.52 yes
20 0.79 0% 0 0.52 yes

Foraging switch. Turning foraging on (assumed yield 0.3 beer/agent/day) lowers beer demand, so at P = 13 utilization drops to 0.77 and the feed margin rises to 55%. Default remains off to keep the budget honest (section 5.5).

Findings. - The inn remains the master dial (cap 20 beer/day); the immigration gate at 12–14 keeps the village ~30–35% below the feeding cap, so it never rides the hard limit. - Travel time is what makes labor tight: without it the same parameters leave a large surplus (iteration 1, ~64% idle). With time-based edges the target sits at ~84% utilization, inside the owner's 75–90% band. - Serving is the single largest labor line (~26%), so inn staffing is budgeted explicitly. - Wood is now a visible brake: demand is ~42% of regrowth for a map with 8 trees; the initial four houses also cost a one-off 80 logs. Tree count is an explicit config parameter.

Open questions carried to the owner (do not decide): confirm the exact inn cap (18 vs 20) and whether work_fraction 0.5 or 0.55 feels right; the paper model must be reconciled with measured M3 runs before any parameter is frozen.