Repository navigation
fix(release): close 1.4.2 regression and UTF-8 gaps - #6559
Conversation
…runtimes Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; model=gpt-6.1-sol; provider=OpenAI; runtime_reported; reasoning_effort=max
Approval conclusion (author-owned PR; GitHub blocks formal self-approval). Exact head df6c8eca9177d67ba33324dfc59cd01f5fba3ca7, base 3bc74f9317479e36286414d899a77172a115e330.
动机
依赖主线回归判断升级安全的维护者,以及使用原操作恢复、Codex 会话和不同系统语言环境的用户。发布扫描被仍期待旧 Todo、停止和状态规则的断言阻断;部分并行用例会重启其他 worker 共用的 runtime,新配置/回执读取也依赖本机默认编码。原有回归场景能完整执行到后续恢复与拒绝断言,各 worker 的重启不再干扰彼此,4 处读取明确按原有 UTF-8 文件合同解码。本 PR 关闭这批回归和读取缺口;最终冻结源码、真实模型、安装制品和各公开渠道仍须分别资格验证,不将这些测试等同于 1.4.2 已发布。
改动思路
先依据 docs/development/testing-and-quality.md 的既有预算决策规则、#6539 的 Priority intent、#6483 的停止边界和 #6513 的当前状态合同确定预期,再验证这40个既有路径。最强反对理由是:更新期待值可能掩盖错误,扩大长度可能丢失原指导,隔离 runtime 可能绕开并发。当前方案保留完整原场景与否定断言;生产只增加4个 UTF-8 参数、调整1个展示预算值,既有 TS authority 不变。用文字与下表可以直接解释这三个独立边界,无需增加新模块或流程图。复用原有 typed owner、文件读取和预算 map;worker 隔离留在 pytest session,不改变产品 runtime 策略。本 PR 关闭这批回归和读取缺口;最终冻结源码、真实模型、安装制品和各公开渠道仍须分别资格验证,不将这些测试等同于 1.4.2 已发布。
| 原问题 | 当前修复 | 保留的约束 |
|---|---|---|
| 旧 P1/停止/状态断言过早失败 | 按已合入合同对齐原断言 | 历史、不可用来源、claim/lease、重放和后续写入仍检查 |
| 不同 HOME 的 worker 共用 POSIX runtime | 每个 worker 用独立临时目录 | 同一测试里的真实多进程与原 authority 继续共用 |
| brief 有用正文超过旧展示上限 | 原 budget owner 从4300调为4600 | 正文完整相同,其余模式和执行规则不变 |
具体改动
priority-and-recovery-contracts:原 CLI、Chat、canonical、冷导入、接管和 notice 测试保留现有场景;新建文本按已发布 P1 规则,旧未分级 fixture 不被改写。notice 用权威 title、fresh canonical read 用准确 Todo id 选择记录,避免把表示层当业务身份。普通陈旧路由按当前权威 Todo 重建,历史 validation 和不可用来源否定约束保留。合并的 #6554 已提供 Stage2C 同类修复,此处重复行已删除。
worker-runtime-isolation:现有 _runtime_dir 在 POSIX 使用 getuid 与临时目录,HOME 并不能隔离进程。真实双进程对照中,不同 HOME/同 temp 得到同 PID,一方 restart 后另一方原连接产生 ConnectionRefusedError;独立 temp 得到不同 PID,另一方继续成功。新 session fixture 只改变 pytest worker 命名空间,结束时只清理自己的 runtime;原用例内的并发、故障注入和状态写入没有被 mock 或串行化。
locale-independent-reads:dispatch_confirmed_operation_wake 读取原 launch configuration、_sdk_runtime_pin 读取明确 npm package metadata、Codex attached HTTP GET/幂等重试读取原 delivery receipt,均显式使用已有 writer 的 UTF-8 格式。原 grant、confirmation、session/profile、fingerprint、错误拒绝和回执 owner 均未改变。这些是现有 Python 文件/宿主 transport,未新增平行决策源。AST 检查直接读 bytes,保留合法 BOM;source-reader 测试只登记原 read-only 函数,并对全部例外模块保留“新增一个 direct loader 必须失败”的 mutation 检查。
meaning-preserving-brief-budget:同一双 scope 真实 CLI fixture,v1.4.1 为4284,当前正文4447(+163),旧4300确实失败;4600留下153余量。移除的仅是随机临时目录拼写,前后完整正文 SHA-256 相同,准确停止对象、单次尝试、验证 stopped、unconfirmed处理、禁止work/spend/retry/RRULE fallback、原两段范围和当前 Turn结算均未缩短。四种其他 mode × reward-memory开关的8份完整诊断完全相同;native benchmark 与 bootstrap 使用未改的 thin3200,visible_goal4000也不变,未放宽任何冻结实验或执行标准。
published-timeline:新增的是已经公开并核验过的1.4.1历史,而非把1.4.2候选写成已发布。贡献者 CI 表补上真实现有维护 workflow。四个已签名提交分别组织回归、codec、预算和已发布历史;没有改产品首屏或新增设置。
对主干的风险
精确 head 上22个改动测试模块483通过;19个原失败/重启模块以8worker执行728通过;实际配置/HTTP/DSH SDK/npm runtime入口119通过,三次是分别执行且部分重叠的集合,均零失败/错误/跳过。初次入口验证因缺SDK产生的13个跳过保留,后来用固定源码SDK0.2.1a3/npm0.2.1-alpha.3完整执行,不拿跳过替代真实路径。Provider为loopback,不证明本人确认、真实外部/金融效果或Windows客户端运行。
configured Ruff、19文件 mypy、TS typecheck、development advisory后full semantic smoke、公开边界均通过。严格scope质量回执有效;premerge的5项direct和19项选中检查通过,无失败、跳过或manual hold,包括真实安装、打包Codex、update、hot-path预算与quota pause/wake。未查询PR CI。
原3c全量扫描23429通过/120失败/531跳过、515公开smoke中的12失败均保留;原可稳定复现的失败由相应当前合同/完整模块覆盖收口。受控对照证明真实runtime干扰机制,但不伪称每个历史失败的原因已逐一还原;最终冻结源码全量与实际模型资格仍另验。没有降低timeout、冻结准入或删掉否定断言来选一次成功结果。
我的整体评价
APPROVE。这个完整修复切片使现有回归能够继续检查真实后续恢复,修正了locale读取缺口,并用证据保留有用指导;没有增加用户确认步骤或改变长程执行authority。相关有界重构已落在原title/id选择、AST解码和worker fixture,生产不需要新框架或语言迁移。可按四个提交独立回退,无状态迁移。公开review与检查通过不自动授予合并,仍须维护者既有授权和即时精确head readiness;本结论也不宣称1.4.2已发布。
English verdict: APPROVE - head df6c8eca9177d67ba33324dfc59cd01f5fba3ca7. Existing regression oracles follow shipped contracts; worker temporary namespaces prevent demonstrated cross-worker runtime retirement; four canonical reads pin UTF-8. The measured4300→4600 brief allowance preserves the entire current body and all other mode/feature diagnostics. Separate483/728/119real-path suites and5direct+19premerge checks pass without skips; historical failures and missing-SDK skips remain recorded. No new authority, execution/experiment budget or published-release claim.
The 1.4.2 release sweep exposed stale priority/stop/routing assertions, four locale-dependent reads, and parallel tests sharing a restartable Effect runtime. Restore useful regression qualification against the already-shipped contracts, retain complete guidance, and pin UTF-8 at the existing host/configuration transport boundaries.
Four signed commits separate existing regression checks, UTF-8 transport reads, the measured presentation allowance and published history. No product first-screen or new setting changes. The related future-facing pass reuses existing fixture/readback and typed owners; no new production module or protocol is needed.
Validation at exact head
df6c8eca9177d67ba33324dfc59cd01f5fba3ca7: all22changed test modules pass483cases;19whole original-failure/runtime modules with8workers pass728cases; actual host/configuration/HTTP and pinned DSH SDK/npm entrypoints pass119cases. These are separate overlapping sets, all with zero failures/errors/skips. The first host run's13missing-SDK skips remain recorded; the pinned source/runtime rerun covers them. Provider traffic is loopback; no live human or domain/financial outcome is claimed.A controlled real two-process experiment proves that different HOME with the same POSIX temporary root shares one runtime and peer restart breaks its original read; separate temporary roots preserve the peer. The complete current brief body hashes match after only temporary-root spelling normalization. All8other-mode/reward-memory diagnostics match; benchmark/bootstrap consumers retain the unchanged thin limit.
Configured Ruff,19-file mypy,TS typecheck,semantic advisory followed by the full vocabulary smoke,public boundary and whitespace pass. Strict exact-scope change quality passes; premerge passes5direct and19selected checks, with no failures/skips/manual holds. Required install/update,quota pause/wake and hot-path budget checks are included. PR CI is not queried.
The original immutable release sweep is preserved (23,429 passed,120failed,531skipped;40failing families), as are515public-smoke outcomes/12failures. This repair does not assert that every historical failure cause was recovered. Full final-source release,real model,package/host,desktop and channel qualification remain separate gates.