From 2c559a79a5977c19876cee58d336b7983f67fa4c Mon Sep 17 00:00:00 2001 From: "Somhairle H. Marisol" Date: Tue, 29 Sep 2026 03:45:58 +0800 Subject: m3r: 缩尺批验收口(50×15 流式 + systemd --user 单元 + 独立验收脚本) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 缩尺口径: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>&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>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。 --- deploy/living-village-m3r.service | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 deploy/living-village-m3r.service (limited to 'deploy/living-village-m3r.service') diff --git a/deploy/living-village-m3r.service b/deploy/living-village-m3r.service new file mode 100644 index 0000000..7b7c9b6 --- /dev/null +++ b/deploy/living-village-m3r.service @@ -0,0 +1,34 @@ +# M3R 缩尺批验 systemd --user 单元模板(50 世界 × 15 模拟日,逐世界流式)。 +# +# 安装(占位符替换后放入用户单元目录): +# mkdir -p ~/.config/systemd/user +# sed -e "s|@REPO@|/home/somhairle/projects/living-village|g" \ +# -e "s|@TS@|$(date -u +%Y%m%dT%H%M%SZ)|g" \ +# -e "s|@COMMIT@|895d792|g" \ +# -e "s|@WORKERS@|12|g" \ +# deploy/living-village-m3r.service > ~/.config/systemd/user/living-village-m3r.service +# systemctl --user daemon-reload +# systemctl --user start living-village-m3r.service # 前台等待 exit;不自动重启 +# systemctl --user show -p ExecMainStatus living-village-m3r.service +# +# 进程退不退,system 均不影响本验收:判定只读 acceptance.log 与 /state.json。 +[Unit] +Description=Living Village M3R scaled batch acceptance (50 worlds x 15 days, streaming) +After=default.target + +[Service] +Type=simple +WorkingDirectory=@REPO@ +Environment=M3R_REPO=@REPO@ +Environment=M3R_DIR=@REPO@/artifacts/m3r-acceptance/@TS@ +Environment=M3R_COMMIT=@COMMIT@ +Environment=M3R_WORLDS=50 +Environment=M3R_DAYS=15 +Environment=LV_BATCH_WORKERS=@WORKERS@ +Environment=M3R_LOG=@REPO@/artifacts/m3r-acceptance/acceptance.log +ExecStart=/usr/bin/bash @REPO@/scripts/m3r-master.sh +StandardOutput=append:@REPO@/artifacts/m3r-acceptance/acceptance.log +StandardError=append:@REPO@/artifacts/m3r-acceptance/acceptance.log +Restart=no +TimeoutStartSec=infinity +TimeoutStopSec=30s -- cgit v1.2.3