国庆 Day2 夜场・派单表(v1.2,2026-10-02 晚)
配套:
Day2_派单表.md(白天批次,已收)|本批为
日落后补刀
,目标 2–3 小时
前置状态:三仓 main 干净,
v0.4.0-rc1本地 tag 已打(
三仓均指向当前 HEAD
,未 push),屏障 D 四跑全绿
本轮门锚点(T1/T2 对拍用):
reports/082_lightmerge基线_2026-10-02-171604.json=
8356 passed / 0 failed / 122 skipped
(
mode=full)
└ 相对白天锚点(
…104501.json= 8357/0/121)
skipped +1、passed −1
,已由
Day15_总结.md:117,169逐条归因为「
httpbin 外网不可达,环境性
」→ 三元判据
通过(带归因)
,不是漂移。
6 份独立契约已展开
(文件名见 § 二 表格末列,均在
docs/国庆7天/下)
✅ 四项决策已定(v1.2,见 § 六):① LLM key
在
lightharness/.env(
OPENAI_*三件套,非根
.env)→ 真 LLM smoke
可跑
;② 编译器冻结
正式解除
,
但只允许 T1/T2 的最小改动
;③ 发布物 =
v0.4.0-rc2(rc1 仅留档);④ 1.5 的 rcd
解禁
,
但只限 T3 的最小改动
。
〇、一句话
白天把账收完了,夜里修两条真缺陷 + 补一个远程缺口 + 打通真 LLM 与发布 runbook。
并行上限已从 3 路提到 5 路(v1.2)—— 真正的硬串行只剩四样:light-merge/src/+antlrparser/的唯一性(T1→T2)、0.82 门唯一、1.5 盒子独占、本机 CPU 重载 ≤2。
其余 5 个子任务(T1 / T3 / T4 / T5 / T6)彼此无共享资源,可同时起跑。
一、资源预算(硬上限)
| 资源 | 同时上限 | 依据 |
|---|---|---|
light-merge/src/+antlrparser/ | 1(A 线独占,T1→T2 串行) | Day2 教训:codegen 是全仓唯一瓶颈,两条路同时动必污染基线;白天首版 ANTLR 重生成即因此砍线回退(留 566 KB patch) |
| 0.82 权威门 | 1 | sync 远端目录按秒命名 + 写共享指针reports/同步0.82_远程目录.txt,并发必污染基线链 |
| 1.5 盒子(192.168.1.5) | 1 | 单盒子单链路;开工先预检swapinfo/ 无 OOM / 无 CI 在跑 |
| 本机 CPU 重载(pytest -n4 /bench/ 全量 collect) | 1,最多 2 | ci_environment_reds.txtR93-B:-n8 挂死 45min+、-n auto(10) 多轮 4/13/11 红、-n4 稳定(出处是台账,非白天实测)。T1 的复跑与 T5 的对照跑要错峰 |
| git worktree | 每子任务 1 个 | 防同树互踩(R109 B 线教训) |
| github / gitcode / gitea | 2–3 可并行 | API 侧 3–5s 间隔;本机对 github/gitcode 的git 协议不可达、API 可达(Day12 已证) |
二、6 个子任务
| # | 子任务 | 所属线 | 文件面 | 资源型 | 需门 | 前置 | 契约 |
|---|---|---|---|---|---|---|---|
| T1 | LP-D-010 真修:遍历 回调 之 表+ 循环体内调回调(...)不再报「缩进不正确」 | A | light-merge/src/code_generator*.py、antlrparser/、light-merge/tests/ | CPU 重 + 改编译器 | 是 | 探针复现通过 | Day2N_契约_T1_LPD010真修.md |
| T2 | LP-D-013 ANTLR 补缺口:已声明变量的中文关键字 / 词根名可作成员访问基名 | A(等 T1) | antlrparser/*.g4、indent_preprocessor.py、重生成 parser(权威姿势) | CPU 中 + 改编译器 | 是 | T1 合流或 T1 判定销账 | Day2N_契约_T2_LPD013_ANTLR补缺口.md |
| T3 | 1.5 崩溃拉起修复(rcd 加daemon -r)+ 温缓存复核(+ 可选:真实 LLM 路径补测) | B | 远程 192.168.1.5(已解禁改 rcd,最小改动) | 网络・等(长) | 否 | 1.5 key + root | Day2N_契约_T3_1.5崩溃拉起与复核.md |
| T4 | 发布前干跑预检(对象 =<TAG>,发布物 rc2;用当前 HEAD 验机制)+真 LLM smoke(key 已定位 → 可跑) | B | lightharness/_push_github_tree_sync.py、_archive/_push_github_multi.py、lightharness/.env | 网络・等 | 否 | 无(不再等 T1/T2) | Day2N_契约_T4_rc1干跑预检.md |
| T5 | LP-D-012 收尾 + 探针固化:A/B 迁移可复现探针 + 容量型探针 + 活账刷新 + 同族墙钟留档 | C | lightharness/docs/功能对标/语言缺陷账.md、probes/、light-merge/tests/(只新增) | CPU 轻中 | 否 | 无 | Day2N_契约_T5_LPD012收尾与探针.md |
| T6 | 发布 runbook 收尾:打标流程 + 远端 tag 推送 runbook + 回滚预案 +rc2 归属 | C | docs/国庆7天/Day11_发布管线.md | 纯文档 | 否 | 无 | Day2N_契约_T6_发布runbook.md |
本批不纳入,但必须留档(防止丢失)
| 项 | 出处 | 处置 |
|---|---|---|
两条同族「单侧绝对墙钟」判据:light-merge/tests/test_tool_parallel_light.py:173(并行耗时 < 0.5)与:217(耗时 < 0.5) | Day10_并发性能收口.md§ 五 - 4 | 与白天修好的那条同族,高负载下同理假红。本批不改(属 A 线light-merge/tests/面,避免与 T1 抢文件)→由 T5 登记留档 |
Day10 §五-1「FreeBSD 侧温缓存仍未实测」已陈旧 | Day14(13:09)已实测7.9×(fb5 FreeBSD,1.28s→0.16s) | T3 复核时顺手纠正,避免后续再引用陈旧的「未实测」 |
| bench 绝对值不可跨会话引用 | Day10 §五-2:同机 0.94s vs 3.26s | 任何性能声明必须当场实跑→ T3 的复核必须现场跑 |
后续相位(按需)
| # | 子任务 | 相位 | 阻塞于 |
|---|---|---|---|
| T7 | 若 T1/T2 改编译器后 0.82 门红 → 独立复验 + 回滚预案(先读_archive/里那份 566 KB 回退 patch 的教训) | P2 | T1/T2 |
| T8 | 切v0.4.0-rc2+ 三仓远端 push(等用户明确示意) | P3 | 用户授权 + T4 干跑绿 + T6 runbook 就绪 |
三、共享文件冲突与「可并行组合」(v1.2 补后者)
3.1 冲突(必须串行)
| 共享物 | 子任务 | 规则 |
|---|---|---|
light-merge/src/+antlrparser/ | T1 + T2 | A 线独占,T1 合流(或判定销账)后 T2 才开 |
| 0.82 门 | T1、T2、T7 | 同一时刻全环境仅一个(串行线快门不受门窗口约束) |
| 1.5 盒子 | T3 独占 | 单链路;内部子步串行 |
lightharness/docs/功能对标/语言缺陷账.md | T5(LP-D-012 行 + 留档段);T1/T2 各写自己那一行 | 三写者 → 由 C 线(T5)统一落账;T1/T2 只把结论交给 T5,避免抢同一份文件 |
lightharness/tests/unit/ | T2(改test_Day4_LP013_探针回归.py)+ T5(只新增) | T5 只新增文件,不改既有 |
| 本机 CPU 重载 | T1(复跑 / 门)+ T5(对照跑) | 错峰;同时 ≤2,且第二个 ≤2 worker |
3.2 可并行组合(v1.2 新增,用于「尽量并行」)
| 组合 | 能不能并行 | 为什么 |
|---|---|---|
| T1 ∥ T3 ∥ T4 ∥ T5 ∥ T6 | ✅5 路可同时起跑 | 五者无任何共享资源:T1 动light-merge编译器面 + 门;T3 占 1.5;T4 走 API +_push_*.py;T5 写probes/+ 账;T6 写Day11 |
| T2 与上述任何 | ⚠️ 仅与 T1 冲突 | T2 只与 T1 争src/+antlrparser/;T1 一收口,T2 可立刻开,其余子任务不受影响 |
| T3 ∥ T4 | ✅ | 两个端点不同(ssh 盒子 vs https API),互不排队 |
| T5 ∥ T6 | ✅ | 不同文件(缺陷账 vs Day11)——v1.1 把它们绑在同一 agent 只是省事,不是必须 |
| 任意两个门调用 | ❌ | 门是全局唯一资源 |
| T1 ∥ T5 的重跑 | ⚠️ | 都是 CPU 中重 → 错峰 |
四、Agent 装法(v1.2:优先 5 路并行)
4.1 推荐:5 路并行(能开 5 个 agent 就用这个)
| Agent | 子任务 | 独占资源 | 说明 |
|---|---|---|---|
| Ag1 | T1 → T2 | src/+antlrparser/+ 门 | 唯一真正串行的一路;T1 收口后立刻接 T2 |
| Ag2 | T3 | 1.5 盒子 | 长等待,不占 CPU |
| Ag3 | T4 | _push_*.py+ API | 长等待,不占 CPU |
| Ag4 | T5 | probes/+ 缺陷账 | 轻中 CPU,与 T1 错峰 |
| Ag5 | T6 | Day11文档 | 纯文档 |
并行解锁点(关键)
:
T1 的探针若判定「已可用 → 销账」,T2 可立即开跑,不必等 T1 的修复
。参照 LP-D-011/013 的两次先例,这个概率不低 → Ag1 的实际路径可能是「探针 40 分钟 → T2 1.5 小时」,而不是「修 T1 + 修 T2」。
4.2 回退:3 个 agent(每人格子内交错,互不阻塞)
| Agent | 槽 1 | 槽 2(交错填空) | 为什么能共存 |
|---|---|---|---|
| A | T1 → T2 | —(编译器线全程占满) | 独占src/+ 门,杜绝抢锁 |
| B | T3(1.5 长等待) | T4(API 干跑 + LLM smoke) | 两个端点不同,等 T3 的空档跑 T4 |
| C | T5(探针 + 账) | T6(Day11 文档) | 不同文件;文档在探针跑的间隙写 |
五、相位与门窗口(v1.2:5 路起跑)
| 相位 | 时间 | 在飞 | 备注 |
|---|---|---|---|
| P0 | 0–15min | team lead:① 三仓打day2n-night基线 tag ② 建 worktree(每子任务一个)③ 建logs/day2-night/④ 预检(1.5 可达 + root /lightharness/.envkey 三件套 /跑前CPU门禁.py) | 锚点建在干净 main 上 |
| P1 | 15–90min | T1・T3・T4・T5・T6 五路并行 | CPU 重活只有 T1;T5 与 T1 错峰 |
| 门窗口 1 | T1 改完即跑(约 60min) | A 线独占门 | 三元绿了才开 T2(锚点见 § 七) |
| P2 | 90–150min | T2(A)・T3/T4/T5/T6 续 | T2 是第二个编译器改动 |
| 门窗口 2 | T2 改完即跑 | A 线独占门 | 确认 ANTLR 两例xfail → passed,且三元不劣化 |
| 砍线 | 150min | 未达标即降级 | 不拖到深夜 |
| 收口 | +15min | team lead 汇总 + 决定是否切rc2(T8) | 不擅自 push |
六、四项决策(已定,v1.2)
| # | 决策 | 定论 | 由此产生的约束 |
|---|---|---|---|
| 1 | 真 LLM smoke 的 key | ✅有 key—— 位于lightharness/.env:OPENAI_API_KEY/OPENAI_BASE_URL/OPENAI_MODEL(该文件L9注释「Deepseek 官方站点」、L13注释「官方 DeepSeek 端点 https://api.deepseek.com」;L2/L3另有注释掉的备用配置) | T4必须用这份;报告里写明「用了哪个文件 + 哪个键名」;⚠️ 白天 S6/Day14 的「401/404 无凭据 → 降级」很可能是拿根.env的AIStudio_Access_Token去打了 DeepSeek 端点→ T4 要顺带说清这一点 |
| 2 | 编译器冻结 | ✅正式解除 | 但只允许 T1/T2 的最小改动:只改与该缺陷直接相关的行;禁止顺带重构、格式化、改无关语义、扩 blast radius。改动清单必须逐文件逐行列出 |
| 3 | 发布物 | ✅v0.4.0-rc2 | v0.4.0-rc1仅留档、不作发布物;T4 的 runbook 用<TAG>变量(默认v0.4.0-rc2);T6 的 runbook第一步必须校验「发布物 ref 指向的 commit是否包含 T1/T2」 |
| 4 | 1.5 的 rcd | ✅解禁 | 但只限 T3 的最小改动:只动/usr/local/etc/rc.d/dsh_web的command_args加-r一处;禁止改 fork 源码、改其它 rcd 文件、改 rc.conf |
⚠️
决策 3 的连带效应(重要)
:rc1 已打且 == 当前 HEAD。
T1/T2 一落地,rc1 就不再等于「已验证的冻结基底」
→ 因此 T8 的 push 对象是
rc2
(在 T1/T2 收口后、屏障式复核之后切)。T4 的干跑用
当前 HEAD 验机制
,rc2 切出后再把 runbook 的
<TAG>替换执行(预计 15 分钟)。
七、门命令与判据
cd lightharness MSYS_NO_PATHCONV=1 CODEBUDDY_SAFE_DELETE_ENABLED=0 \ python scripts/082全量回归.py all --mode full --py /usr/local/bin/python3.12 python scripts/082全量回归.py show --recent # 核对每轮 total/mode/skipped/passed 口径判据(三元,缺一不可):failed 新增 0且skipped 不增且passed 不降。
对拍锚点:
reports/082_lightmerge基线_2026-10-02-171604.json=8356 / 0 / 122(mode=full)数字只取门脚本落盘 JSON:
8355是白天 barrier gate3 的pytest 汇总行(barrierD_gate3_082.txt:483,同列11 xfailed / 2 xpassed),与同次 JSON 差 2 条是 xpass 计法差异 →禁止跨运行引用。禁止
refresh-local自比当判据(把新基线写进 latest 再自比,恒为 0、无意义)→ 对拍时间戳基线。现行门(
scripts/回归基线.py:187)只看 failed 集合,对「passed 变 skipped」失明 → 三元必须人工比对。
八、v1.2 修订清单(2026-10-02 三次修订)
| # | 修订项 | v1.1 写法 | v1.2 修正 | 依据 |
|---|---|---|---|---|
| 1 | 真 LLM key 位置 | 「.env无 DeepSeek 类键 → T4 退为干跑」 | key 在lightharness/.env:OPENAI_API_KEY/OPENAI_BASE_URL/OPENAI_MODEL(注释明写 DeepSeek 官方端点)→T4 真 LLM smoke 改为可跑 | 实测:工作区根.env18 个键(仅AIStudio_Access_Token与模型相关);lightharness/.env有 OPENAI 三件套(L10/L14生效、L9/L13注释指明 DeepSeek) |
| 2 | 编译器冻结 | 「拟解除,待 § 六 - 2 决策」 | 正式解除;但只允许 T1/T2 的最小改动(逐文件逐行列改动清单) | 用户决策 |
| 3 | 发布物归属 | 「rc1/rc2 待决策」 | 发布物 =v0.4.0-rc2;rc1 仅留档;T4 runbook 用<TAG>变量、T6 runbook 首步校验发布物是否含 T1/T2 | 用户决策 |
| 4 | 1.5 rcd | 「待决策是否解禁」(白天契约明令禁止) | 解禁,但只限 T3 最小改动(仅command_args加-r一处) | 用户决策 |
| 5 | 并行程式 | 3 agent × 2 子任务 | 推荐 5 路并行(T1/T3/T4/T5/T6 无共享资源可同起;T2 只与 T1 冲突);并给出「T1 销账 → T2 立即可开」的解锁点 | § 三 共享资源实测盘点:五者文件面 / 端点全不重叠 |
附录 A・证据四件套(沿用 Day2 格式)
命令:可直接复制粘贴(含环境变量前缀)
退出码:真实 rc
日志路径:统一
G:\dswork\duan-light-merge\logs\day2-night\,命名T<编号>_<用途>.log被测 SHA:三仓各自写明(编译器类子任务必写)
附录 B・通用禁止(10 条)
禁止
git push(等用户示意;发布物 = rc2,切 tag 也要等示意)禁止
git checkout -- ./git clean -fd(R109 B 线教训)禁止口头结论,不落盘日志不算
禁止
refresh-local自比当判据长跑必须
CODEBUDDY_SAFE_DELETE_ENABLED=0+-n 4(-n8有挂死史)看到成片红先怀疑假红三源(safe-delete /xdist worker 死 / CPU ≥80%)
编译器改动只限 T1/T2 的最小改动(禁顺带重构 / 格式化 / 改无关语义)
跑前必须过
light-merge/scripts/跑前CPU门禁.py(台账:「-n 4 不是修复:CPU ≥80% 时仍会崩」)长跑(≥10min)独占一个 turn——harness 有每 turn 50 次删除上限,交叉操作会顶爆阈值、成片假红
.env的 token / 密码值不得出现在任何日志或报告里(只可出现键名与文件路径)