<feed xmlns='http://www.w3.org/2005/Atom'>
<title>living-village.git/src/LivingVillage.Desktop.Tests/M3BatchOutputTests.fs, 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-28T20:23:26+00:00</updated>
<entry>
<title>p59: Sim 多世界并存后台压测（内存/GC 增长曲线证据单，只读）</title>
<updated>2026-09-28T20:23:26+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-28T20:23:26+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=f681867692f575b078f46afaf07060faed457461'/>
<id>urn:sha1:f681867692f575b078f46afaf07060faed457461</id>
<content type='text'>
目标：量化「多世界并存 × 天数」的内存/GC 增长，收口 P49 范围外项。
口径：新增 Headless `--profile-multiworld &lt;worlds&gt; &lt;days&gt; &lt;npcs&gt; &lt;sampleEveryDays&gt; &lt;seedBase&gt;`，
N 个 Sim 世界同时存活，每轮 Parallel.For 各推进 sampleEveryDays 天并采样一行
（worlds/events/rumors/annals/memory_entries/gc_live_mb/working_set_rss_mb/elapsed_s，
行尾 flush）；未改 Kernel/Sim 任何语义（Sim.initialWorldN / Sim.step 原样调用）。

标定：1 世界 × 2 天探针 = 34.2s（与 overnight-status 的 34.6s 一致），据此定 N=10 × 20 天。
运行：独立 systemd --user transient unit living-village-multiworld.service
（scripts/profile-multiworld.sh，StandardOutput=append: + exec 2&gt;&amp;1，state.json 记
pid/unit/log/commit/参数/起止/exit）。主运行 wall=1024.4s（17.1min &lt; 40min），exit=0。

结论（artifacts/perf-multiworld/20260928T195839Z/README.md）：
- 随世界数近似线性，未超线性：N=1 vs N=10（同日 D=20）annals/memory_entries 恰 10×、
  rumors 9.67×、gc_live 8.81×（每世界 1.23MB，共享运行时开销摊薄）。
- RSS 有界无泄漏：N=10 39→峰值123(day8)→稳定104~112MB；每 2 天一轮墙钟恒 101~105s。
  原因是历史集合有界（rumorRetentionDays=3 / rumorCapacity=16384 / maxAnnalEntries=128 /
  Mind.Memory 上限），约 day4 后进入稳态。
- 两轮世界0 digest 一致（2364CB74…）→ 并存+并行不改变单世界语义。
- 数字未越界 → 明确「不修」；只读本 slice 不修 Kernel/Sim。

回归：Desktop 304/304 + Kernel 119/119；--performance-baseline ×3 digest
953775FAEB2F… 不变，performance_determinism=PASS。未 push。
</content>
</entry>
<entry>
<title>m3r: 缩尺批验收口（50×15 流式 + systemd --user 单元 + 独立验收脚本）</title>
<updated>2026-09-28T19:45:58+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-28T19:45:58+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=2c559a79a5977c19876cee58d336b7983f67fa4c'/>
<id>urn:sha1:2c559a79a5977c19876cee58d336b7983f67fa4c</id>
<content type='text'>
缩尺口径：M3 phase2 50×100 实测 11.4h 仅完成 6/50（见
artifacts/m3-acceptance/final-candidate-20260921T095500Z/logs/*.diagnosis.txt），
改为 50 世界 × 15 模拟日、逐世界流式打印并 flush。标定据 docs/overnight-status.md
（Hermes 单 worker 亲测）：1×2=34.6s、1×5=87.7s、1×10=173.6s，外推 15 天 ≈260s。
注意：派单所引用 artifacts/m3-independent/20260921T105500Z 全盘查找不存在，
故改用上述仓内标定，未编造任何数据。

内容：
- Headless 边缘：runSimulation 拆出 runSimulationCore 增加逐模拟日回调；
  evalWorld 传入回调；runBatch 每 (days/5) 天打印 `[world k] progress day=d/D elapsed=..s`
  并 flush，长世界不再零进度（BatchOutput.progressLine 纯函数 + 单测）。
- 新增 deploy/living-village-m3r.service 模板：wrapper 作 MasterProcess、
  StandardOutput/StandardError=append: acceptance.log、Restart=no；
  systemd-analyze --user verify 通过。本机 ~/.config/systemd/user 属外部目录受限，
  实跑以等价属性的 systemd-run --user 瞬态单元 living-village-m3r.service 承载。
- scripts/m3r-master.sh：写 state.json（pid/unit/log/commit/workers/worlds/days/
  起止/exit），exec 2&gt;&amp;1 运行 batch 并回传真实退出码。
- scripts/verify-m3r.py：独立可复跑，校验 state 字段、50 条 world 行（索引/seed/
  ok 与 check_a/b/c 自洽）、summary passed+failed=50 与极值一致、抽查 3 行、
  [done] 50 条、progress 行、M3_ACCEPTANCE=PASS 且 ratio_min&gt;2.0。

本次实跑（commit 895d792）：12 worker，wall=4316.0s，50/50 OK，
ratio_min=3.346 ratio_max=12.321 gini∈[0.412,0.548]，relconn=30/18，
check_a/b/c 全 PASS，M3_ACCEPTANCE=PASS，exit=0；独立脚本复跑 M3R_VERIFY=PASS。
证据：artifacts/m3r-acceptance/acceptance.log + 20260928T183215Z/state.json。

回归：Desktop 303/303 + Kernel 119/119；--performance-baseline ×3
digest=953775FAEB2F… 不变，performance_determinism=PASS。
未改 Kernel/Sim；未 push。
</content>
</entry>
<entry>
<title>test(desktop): M3 批次输出格式与流式驱动回归</title>
<updated>2026-09-21T14:08:57+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T14:08:57+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=868509ce1d7ef0cc2f132475d6dd1aa80aac57b6'/>
<id>urn:sha1:868509ce1d7ef0cc2f132475d6dd1aa80aac57b6</id>
<content type='text'>
- world 行前缀不变、行尾 elapsed_s；[done k/N] 与 summary 追加字段断言
- runStreaming workers=1 断言逐世界 emit（非收完再打印）；并行下不重不漏
- costLine ticks/s 由实测 ticks/墙钟推导
</content>
</entry>
</feed>
