<feed xmlns='http://www.w3.org/2005/Atom'>
<title>living-village.git/src/LivingVillage.Headless/LivingVillage.Headless.fsproj, branch main</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<id>http://git.somhairle.bid/living-village.git/atom?h=main</id>
<link rel='self' href='http://git.somhairle.bid/living-village.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/'/>
<updated>2026-09-21T14:08:53+00:00</updated>
<entry>
<title>feat(headless): 逐世界流式输出 + --cost-probe 成本阶梯</title>
<updated>2026-09-21T14:08:53+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T14:08:53+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=0ae0173c6b25e54c9a4b97b0cc231356466cd7f8'/>
<id>urn:sha1:0ae0173c6b25e54c9a4b97b0cc231356466cd7f8</id>
<content type='text'>
- runBatch 改为每个世界一完成立即打印 world= 行（行尾追加 elapsed_s）与
  [done k/N] elapsed=…s 进度行并 flush，长批次不再整轮零进度
- batch_summary 旧字段原样保留，追加 workers 与 wall_s 总墙钟
- 新增 BatchOutput 纯格式化与 runStreaming 并行驱动
- 新增只读 --cost-probe [D1,D2,...]：按天阶梯真实测量 ticks/s、墙钟、分配与 GC
- 判据语义 check a/b/c 未改
</content>
</entry>
<entry>
<title>perf: add simulation baseline probe</title>
<updated>2026-09-20T11:32:52+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-20T11:32:52+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=6f904d6f8528bd13941894af3db16d0bc3b0aeb3'/>
<id>urn:sha1:6f904d6f8528bd13941894af3db16d0bc3b0aeb3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: M1 模拟器内核 — SplitMix64 RNG + 确定性 step + 对拍测试 + headless 冒烟工具 + Desktop 自动演示</title>
<updated>2026-09-18T16:18:43+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-18T16:18:43+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=59458d149d7cecf73e708faa6d9e6db2bcd89dfd'/>
<id>urn:sha1:59458d149d7cecf73e708faa6d9e6db2bcd89dfd</id>
<content type='text'>
[变更性质]
本 commit 为功能开发，交付设计文档 §2 模拟器内核（里程碑 M1），非缺陷修复或结构重构。

[新增功能]
- Kernel：Rng.fs 提供 SplitMix64 纯函数 RNG（ofSeed / nextUInt64 / nextFloat32），World 携带种子状态。
- Kernel：Sim.fs 重写为 struct record（Vec2/Avatar/Input/TimeStep/World），step : World → TimeStep → World 纯函数，dt 固定 1/60 由内核常量给定，Time = Tick * dt 不做浮点累加；initialWorld 由无参改为带 seed。
- Tests：MSTest 确定性对拍——同 seed 轨迹逐 tick 相等、异 seed 发散、step 纯度、长跑有限/有界/时间-刻度关系、SplitMix64 已知向量、nextFloat32 值域。
- Headless：--days N --seed S 冒烟工具，每 1000 tick 输出摘要行，统计 NaN/越界计数并决定退出码。
- Desktop：LV_AUTOPLAY=1 环境变量启用正弦驱动自动演示，窗口标题与启动日志标注模式。

[实现方案]
- 全部状态用 [&lt;Struct&gt;] record，模拟路径零堆分配，支撑 51.84 亿刻长跑。
- step 不消费 World 内 RNG，种子经由外部确定性驱动脚本生效（每 900 刻换段，8 方向查表 + 三档幅值，避开三角函数保证跨平台位精确）。
- Headless 内存口径取 GC.GetTotalMemory(true)（全收集后的稳态驻留），避免 GetTotalMemory(false) 随 Gen0 段扩张漂移误报泄漏。

[影响范围]
- Kernel 保持零 MonoGame 引用，模拟与渲染彻底分离；sln 新增 Headless 与 Tests 两个项目。
- Release 构建 0 警告 0 错误，7/7 测试通过；1000 天长跑 5,184,000,000 刻退出码 0，无 NaN 无越界，内存 87,824 → 93,000 字节（1.06x &lt; 2x）。
- 同 seed 两次运行 stdout 字节一致，seed 42/43 轨迹不同。
</content>
</entry>
</feed>
