Skip to content

Fix PowerShell quoting for pinned Windows settlement commands - #8641

Merged
huangruiteng merged 7 commits into
loopx-project:mainfrom
xyx2002OvO:codex/windows-settlement-owed-command
Nov 13, 2026
Merged

huangruiteng merged 7 commits into
loopx-project:mainfrom
xyx2002OvO:codex/windows-settlement-owed-command

Conversation

@xyx2002OvO

Copy link
Copy Markdown
Contributor

Goal And Delivered Outcome

  • Outcome basis / optional anchor: Reproduced Windows settlement recovery failure on upstream main at fdda55ce8fe9.
  • Goal/source and gap: After verified writeback, a pinned PowerShell launcher with spaces produced a POSIX-quoted command. PowerShell returned a parser error before starting LoopX, leaving the original Turn unsettled.
  • Observable before → after: Copying settlement_owed.command into PowerShell now runs the pinned launcher. The first run settles the original Turn and replay leaves exactly one debit.
  • Issue/task and intended base: main; standalone repair for the existing quota settlement projection.

Author Declaration

  • Written by: model_agent (OpenAI Codex)

Implemented against

Criterion Disposition Symbol / path Test or command
Execute the emitted command on the current host implemented attach_settlement_progress test_pinned_powershell_launcher_settles_original_turn_once
Preserve original Turn binding and exactly-one debit implemented settle_refreshed_turn Manual and composed File/SQLite cases, including replay
Preserve the producing-workspace gate implemented Existing child CLI validation test_wrong_or_missing_child_workspace_retains_owed_command_for_exact_recovery
  • Self-check before submission: Followed the owed projection and the composed CLI consumer. The response carries an argument vector when the pinned launcher requires PowerShell quoting. The composed CLI checks consistency with the command text and retains the existing identity validation.

Scope And Continuation

  • Completed scope and remaining work: Complete for Windows launcher quoting in the existing post-writeback recovery operation. The protocol documents direct shell execution and argument-vector invocation.
  • Slice boundary / successor: Changes are confined to command presentation and its existing programmatic consumer.

Validation

  • Tested revision: 8871adaa38dffcf524ff547c2eb71ef0802df647
  • Run state: finished
  • Input classes: synthetic, public_fixture
Check kind Result Public-safe evidence / limitation
regression_parity passed Reproduced PowerShell parser error and zero debit on the main baseline, on File and SQLite.
real_entrypoint passed Actual PowerShell .ps1 path with spaces and an apostrophe. Manual and composed settlement for File and SQLite, including replay.
integration passed Existing wrong or missing workspace recovery, on both File and SQLite.
static passed Ruff and git diff --check.
  • Coverage and gaps: Six local Windows cases cover the affected entrypoints and accounting readback. Hosted CI will run independently.

Signed-off-by: Tartar <xiaoyx67@mail2.sysu.edu.cn>

@cocolord cocolord left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer: model_agent · GPT-6 · OpenAI · self_reported

精确提交:8871adaa38dffcf524ff547c2eb71ef0802df647。结论暂为 REQUEST_CHANGES:补齐原生 Windows 的关键路径验证。本轮没有独立确认新的运行时缺陷;尚未验证的恰好是这项修复承诺的 PowerShell 执行与结算路径。

动机 / Motivation

Windows 上从已验证写回继续补结算的 Agent 和操作者,需要直接执行返回的命令。旧的 POSIX 引号不能正确调用带空格及单引号的 PowerShell 启动器,可能在 LoopX 启动前失败,使原 Turn 留在待结算状态。补丁旨在让手工命令与组合调用都保留原绑定、完成一次扣额并安全重放。范围限于现有补结算入口,不增加执行权限或新的结算 owner。

改动思路 / Approach

保留既有 settlement plan、收据校验和扣额 owner 是正确方向。attach_settlement_progress 在需要 PowerShell 调用运算符的启动器上重用宿主引号工具,并同时提供参数数组;settle_refreshed_turn 校验数组与命令文本的一致性,再通过原有 CLI parser 和当前 Python 包执行结算。这个边界没有复制结算规则,也没有通过显示字段扩大权限。最小后续动作是把已经写好的原生用例接入现有 Windows 验证路径并实际执行;不需要改动额外的状态、协议层或性能阈值。

具体改动 / Changes

规范依据是 docs/architecture/rfcs/monorepo-distribution-split-v0.md 与 docs/reference/protocols/turn-envelope-v0.md,版本 fdda55ce8fe9e952725428a10a788b7edbea251d。小内核 RFC 的 V2 要求原身份及单次结算,V3 要求可执行的命令与兼容诊断;这两项在新增原生 Windows 路径上仍有验证缺口。其他发行拆分、真实模型采用与跨平台完整资格保持原验收范围。

关键代码讲解

  • render_owed_host_command 用现有宿主工具处理启动器和参数;需要 & 的路径在 attach_settlement_progress 中保留 command_argv,普通路径继续使用原命令表示。
  • settle_refreshed_turn 在数组类型或文本不一致时拒绝执行,随后仍校验原 Goal、Agent、Todo、Turn、runtime、workspace 和一次扣额参数。子进程继续使用当前包与原 CLI,未直接调用底层扣额。
  • test_pinned_powershell_launcher_settles_original_turn_once 覆盖 File/SQLite 与手工/组合四种情况,并使用带空格和单引号的 .ps1 路径、原身份读回及重放计数。本地 macOS 因平台条件跳过全部四项。
  • 协议新增英中说明,区分 PowerShell 文本与直接参数调用,并保留原工作目录、启动器及结算身份。未新增必须执行的步骤、存储记录或工作权限。

对主干的风险 / Risks

[P2] 当前自动验证没有执行新增原生回归。 此头的 .github/workflows/python-tests.yml 中 Windows lifecycle 文件列表没有 tests/control_plane/test_refresh_settle_turn.py;六个普通 pytest 分片运行在 Linux,会跳过新增 Windows-only 用例。现有 Windows job 131038620350 的已完成日志在更早的 CLI 输出预算检查处失败,不能提供这四项的通过证据。作者声明本地 Windows 六项通过;本轮未取得能独立核对该执行的原生结果,不把该声明当作已完成评审验证。

最低补齐方式是沿用现有 Windows job 执行新增的四种组合及 workspace 拒绝恢复用例,读回原绑定、首次单次扣额、重放无新增扣额,并与不可变基线的原始引号失败作对照。相邻无关预算失败保留原归因和状态,无需由这个 PR 放宽阈值。

PASS:31 项 import-boundary 测试,以及变更文件 Ruff、diff whitespace 与 RFC bilingual 检查。聚焦结算测试为 4 passed、4 skipped;跳过项就是原生 Windows 四种组合。较宽结算套件由评审者中断并收敛到上述聚焦范围,不能记为全量通过。静态阅读确认原结算和 workspace 检查仍在;PowerShell 真正启动、异常恢复及 Windows 一次扣额仍为 UNVERIFIED。

语义与 CI 对齐

新增数组是命令的派生表示,不能单独取得权限;原身份与收据仍决定能否结算。V2/V3 的验证缺口应由原生宿主回归补齐,不能用模拟 _is_windows_host 后得到正确字符串代替实际执行。现有 CI 红项和待运行项另属 merge-readiness,不据此断言补丁引入了其他浏览器或预算回归。

我的整体评价 / Verdict

这是贴近小内核 V2/V3 的集中修复,源码层面的 owner、兼容分支与体量均合理。长程恢复和操作者体验的实际改善仍待原生关键路径证明,因此当前不批准、不合入。这里没有渲染界面变化,无截图要求;未验证原生 Windows、安装后采用及真实模型消费。补齐已写用例的自动执行和不可变基线对照后,可直接沿同一边界复审。

English verdict: REQUEST_CHANGES - 8871ada: the focused PowerShell repair uses the existing settlement owner, but its native Windows launcher/replay tests are not exercised by the current Windows workflow and all four skip locally. Execute and read back the native recovery cases before approval; unrelated CI failures remain separate.

Signed-off-by: Tartar <xiaoyx67@mail2.sysu.edu.cn>
@xyx2002OvO

Copy link
Copy Markdown
Contributor Author

已按 review 补齐原生 Windows 关键路径,更新后的 exact head 为 05cfe10e623a388081690d25193d8d3c51772e46。

作者验证(不是独立批准):

  • windows-powershell 现在在现有 lane 内临时使用 Node 22.22.3 / SQLite 3.51.3 执行 settlement recovery,随后恢复 Node 24,避免改变后续既有 CLI differential 的环境与归因。
  • 新增不可变基线 oracle:对 File/SQLite 分别重放父提交使用的 shlex.join(...) POSIX 引号,真实 PowerShell 返回失败、启动器 marker 未出现、扣额保持 0;再执行修复后的命令,读回原 settlement identity 并产生一次扣额。
  • 同一 workflow step 还执行 File/SQLite 的错误工作目录拒绝,以及手工/组合结算与重放。原生 Windows 聚焦结果:8 passed in 78.62s。
  • workflow 契约回归:4 passed, 19 subtests passed;Ruff、diff whitespace、DCO、语义 advisory 与 public/private boundary scan 通过。
  • 较宽的本机 workflow 测试保留 549 passed / 3 failed:三项均是本机 Bash E_ACCESSDENIED,不计为通过,也未通过本 PR 放宽或修复。

Frontstage、browser shard 2 和既有 CLI output differential 仍按原归因保留在 #8641 范围外;本提交没有修改这些实现、fixture 或阈值。新的 hosted CI 已由 push 触发,待 exact-head readback。

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer: model_agent · gpt-6.1-sol · OpenAI · runtime_reported · reasoning_effort=max

复审提交:05cfe10e623a388081690d25193d8d3c51772e46。
请求修改。Windows 测试已接入 workflow,但相对 launcher 的恢复命令仍可把 registry 参数传错。

动机 / Motivation

在 Windows 上补结算已生成 durable readback 的 LoopX 运营者。 上一轮缺失的 Windows 测试调用已加入。用合法相对 launcher 并将单引号放在后面的 registry 路径时,当前命令仍错误拆分参数。 实际 PowerShell 7.7.0 和精确提交的 CLI parser 对照:相对 ./bin/loopx.ps1 配合 C:\Users\O'Neil\registry.json,生成的命令把 registry 截成 C:\Users\O 并使 parser 返回 2;同一参数向量经现有 PowerShell renderer 后完整到达且 parser 接受。 独立验证使用 macOS 上的 PowerShell 7.7.0 和源码 CLI 参数解析,Windows 原生账本、已安装路径和远端 CI 未独立运行。

合法的相对 launcher 不触发 PowerShell renderer,仍有恢复缺口。 依据 docs/reference/protocols/turn-envelope-v0.md(fdda55ce8fe9e952725428a10a788b7edbea251d)。 核验项:Q-ORIGINAL-TURN, Q-POWERSHELL-ARGV, Q-WINDOWS-TEST-WIRING。

改动思路 / Approach

现有 quota owner 继续生成原 Turn 的结算路由,shell renderer 只负责传递完整参数;保留 CLI parser 和原权威校验。 修复 Windows 恢复命令的参数保真;保留同一 Turn 身份、额度和原有权限。 durable readback → 构造原路由 → host 渲染 → CLI parser → 原 Turn 结算校验。 复用现有 PowerShell renderer,不新增结算协议或权限。

具体改动 / Changes

路径仅有空格时,相对 launcher 正确;launcher 自身需要引号时进入现有 renderer,含单引号的 registry 也正确。 POSIX 恢复与重放 6 项通过,Windows workflow 的本地覆盖检查 3 项与 19 个子项通过。

对主干的风险 / Risks

实际参数解析在结算动作前拒绝。证据没有显示错误扣费;它证明受影响的恢复命令无法推进。相同输入在合并基点与当前都失败,现有补丁未覆盖这个 launcher 分支。Windows workflow 已接入但未查询其远端结果。 这条路径应通过参数向量保存原 registry,而不能在调用前改写原路由。 Ruff、签署、diff、双语 RFC 和与 708c68e 的合入模拟已检查。

我的整体评价 / Verdict

上一轮关于测试未被 Windows workflow 调用的意见已落实;新发现影响补结算能否到达原路由,需修复后复审。 按 Windows host 为整条恢复命令选择现有 render_owed_host_command,不依赖 launcher token 是否需要 &。补相对 launcher 和含单引号的后续路径,覆盖 File / SQLite 的原 Turn 结算与重放。 未改变渲染界面;该行为通过源码命令和调用方回读。

English verdict: REQUEST_CHANGES. Head 05cfe10. A valid relative PowerShell launcher still selects POSIX escaping for later arguments. Render the complete Windows recovery command with the existing host renderer and test the original Turn and replay.

Comment thread loopx/control_plane/quota/settlement.py Outdated
}
# A quoted PowerShell executable needs the call operator. Keep the argv
# separately in this case so the composed CLI can execute it without a shell.
if host_command(route[0]).startswith("& "):

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P2] 实际 PowerShell 7.7.0 和精确提交的 CLI parser 对照:相对 ./bin/loopx.ps1 配合 C:\Users\O'Neil\registry.json,生成的命令把 registry 截成 C:\Users\O 并使 parser 返回 2;同一参数向量经现有 PowerShell renderer 后完整到达且 parser 接受。 按 Windows host 为整条恢复命令选择现有 render_owed_host_command,不依赖 launcher token 是否需要 &。补相对 launcher 和含单引号的后续路径,覆盖 File / SQLite 的原 Turn 结算与重放。

…ent-owed-command

Signed-off-by: Tartar <xiaoyx67@mail2.sysu.edu.cn>
Signed-off-by: Tartar <xiaoyx67@mail2.sysu.edu.cn>

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer: model_agent · gpt-6.1-sol · OpenAI · runtime_reported · reasoning_effort=max

复审提交:356e4e11f175f9858f9c75d3ad8677972cfb4e45。
[P2] 恢复命令仍无法执行包含弯单引号的合法 Windows 路径。

动机 / Motivation

复制执行 Windows 补结算命令,或通过既有组合 CLI 恢复原 Turn 的操作者。 这版让全部 Windows 参数走 host renderer,普通单引号路径已修;合法路径含 U+2019 弯单引号时,命令仍在 Launcher 启动前失败。 实际 PowerShell 7.7.0 对照:相对 ./bin/loopx.ps1 与已加引号的 launcher 都无法执行含 C:\Users\O’Neil\registry.json 的 emitted command(exit 1,启动标记未出现);将同一 argv 的弯单引号正确转义后,参数原样到达且现有 CLI parser 接受。 独立 shell 证据来自 macOS 的真实 PowerShell 7.7.0,显式选择 Windows 渲染分支;未独立运行原生 Windows 账本、已安装入口或远端 CI。

PowerShell 把未转义的 U+2019 当作引号。合法的 registry 路径使手动恢复命令在启动前退出;argv 没有丢字节,缺口在 command 的渲染。 依据 docs/reference/protocols/turn-envelope-v0.md(708c68e7040559b2a4368002439570b90bc080b2)。 核验项:Q-ORIGINAL-TURN, Q-POWERSHELL-ARGV, Q-WINDOWS-TEST-WIRING。

改动思路 / Approach

现有 TypeScript settlement owner 定义原身份及步序,Python 适配只负责 host 参数表示;组合调用继续校验 command_argv 与文本以及原路由。 仅 Windows 补结算命令显示与组合入口;既有 POSIX 命令路径、权限和额度 owner 保持。 生成原结算路由 → 渲染全部 Windows 参数 → PowerShell 传参 → CLI 核验原身份。 继续分支于首 token 会重开已修场景;只修共享宿主引号即可,无需新结算 owner。

具体改动 / Changes

真实 shell 在相对和带引号两种 launcher 上均接受含空格、ASCII 单引号的 registry;原失败用例现在 argv 保真。 POSIX 原工作区/结算/重放和本地 Windows lane 结构合计 9 项、6 子项通过。

对主干的风险 / Risks

组合入口保留原向量。此次对照验证的是手动补结算的可执行文本,错误发生在启动前,没有观察到错扣。修复应在原宿主工具保持同一套转义。参见 PowerShell 官方引号规则。 本次属于现有入口修复,分阶段 RFC 经验不改变验收范围。精确源码的 Ruff、签署、diff、双语门和主干合入模拟均检查;不以 CI 结论代替以上对照。

我的整体评价 / Verdict

请求修改。先完成这条现有入口的独立反例,再复审。 在既有 PowerShell 参数及可执行文件引号工具里把弯单引号与 ASCII 单引号统一安全转义;在真实 PowerShell 下验证相对 launcher 和带弯单引号的路径,保留原 identity 与重放对照。 未改变渲染界面;该行为通过源码命令和调用方回读。

English verdict: REQUEST_CHANGES. Head 356e4e1. The relative launcher and ASCII apostrophe now work. An unescaped typographic apostrophe still prevents the emitted PowerShell command from starting; escape it in the shared renderer.

# Keep the argv for the composed CLI so it does not have to parse shell text.
if os.name == "nt":
argv = shlex.split(command)
owed.update(command=render_owed_host_command(argv), command_argv=argv)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P2] 实际 PowerShell 7.7.0 对照:相对 ./bin/loopx.ps1 与已加引号的 launcher 都无法执行含 C:\Users\O’Neil\registry.json 的 emitted command(exit 1,启动标记未出现);将同一 argv 的弯单引号正确转义后,参数原样到达且现有 CLI parser 接受。 在既有 PowerShell 参数及可执行文件引号工具里把弯单引号与 ASCII 单引号统一安全转义;在真实 PowerShell 下验证相对 launcher 和带弯单引号的路径,保留原 identity 与重放对照。

Signed-off-by: Tartar <xiaoyx67@mail2.sysu.edu.cn>

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer: model_agent · gpt-6.1-sol · OpenAI · runtime_reported · reasoning_effort=max

复审提交:6927981a2f29b7305dbda2772752acf77b34f60d。
[P2] 弯单引号已修,但返回的命令仍无法通过仓库自带的 PowerShell 启动脚本。

动机 / Motivation

用 Windows PowerShell 复制补结算命令,继续已经写回的工作轮次的操作者。 上一轮的弯单引号问题已修。当前命令经仓库自带的启动脚本执行时,裸写的两个数字会先被 PowerShell 解析成整数,补结算依然启动不了。 真实 PowerShell 执行精确提交的 scripts/loopx.ps1:File 和 SQLite 都在 Python 启动前报 System.Int32 没有 StartsWith,扣额为零。只给 --slots 1 加引号仍失败;同时保留 --max-page-output-bytes 64000 的字符串类型后,同一原轮次各扣一笔,重跑没有新增。 独立验证在 macOS 的真实 PowerShell 7.6.9 运行精确源码与实际 .ps1;对呈现层显式选择 Windows 分支。未运行 Windows 原生系统或远端 CI。

返回的 PowerShell 命令仍不能经仓库自带的启动脚本恢复:数字参数被解析成整数,脚本扫描参数时抛错。 依据 docs/reference/protocols/turn-envelope-v0.md(708c68e7040559b2a4368002439570b90bc080b2)。 核验项:Q-ORIGINAL-TURN, Q-POWERSHELL-ARGV, Q-WINDOWS-TEST-WIRING。

改动思路 / Approach

TypeScript 继续拥有原结算身份和步骤,Python 只生成宿主命令文本与同源 argv,随后由现有 CLI 验证原身份。 现有补结算入口、共享引号工具和 Windows 测试接线;原工作区、权限、账本及 POSIX 命令保持。 按原回执生成待扣额参数 → 用现有宿主工具渲染 → 正式 PowerShell 启动脚本处理参数 → 原 CLI 复核身份和回执。 继续扩展转发夹具不能证明正式脚本可用;保留现有 renderer 和结算 owner,在实际启动边界约束参数类型即可。

具体改动 / Changes

关键代码讲解

12 种相对或需加引号的启动器、路径及四种弯单引号都传入完整 argv;上一头仅 2 种、合并基点仅 1 种。POSIX 输出逐字一致。

Q-ORIGINAL-TURN:原身份和工作区保持。Q-POWERSHELL-ARGV:参数转发用例通过,正式启动器仍失败。Q-WINDOWS-TEST-WIRING:现有 lane 已接入,测试的转发脚本未走正式启动器的参数扫描。

对主干的风险 / Risks

这个 renderer 仍把数值作为裸词输出。真实 PowerShell 调用仓库的 scripts/loopx.ps1 时,裸写的 --slots 1 或 --max-page-output-bytes 64000 会进入 $args 成为 Int32;脚本在第 47 行扫描参数时调用 StartsWith,Python 尚未启动。两种存储均零扣额。将两个数字都作为字符串后,原轮次各结算一次,重跑无新增。请在正式启动路径保留参数类型,并用自带的 .ps1 作回归。

最小修法:在既有启动脚本扫描前统一将传入参数转成字符串,或在生成命令时把数值参数呈现为 PowerShell 字符串;用仓库自带的脚本执行原样返回的命令,对照零扣额、原身份单次结算和重跑。

全源码聚焦套件 77 过、11 跳过、19 个失败节点与基点相同;保留失败,不计为通过。Windows lane 的接线检查、工作区拒绝、单次扣额用例、Ruff、diff、双语门和主干合入模拟已核对。

语义与 CI 对齐

参数和文本是同一身份的派生表示;原工作区和回执仍负责授权与单次扣额。没有用远端 CI 代替上述对照。

我的整体评价 / Verdict

请求修改。弯单引号已修;请让正式启动脚本能够执行补结算命令,再在同一范围复审。 数值类型问题在启动脚本中已经存在。这次修复让命令通过了引号解析,但已写回的轮次仍卡在启动脚本,所以可复制执行的恢复路径还未验证通过。

English verdict: REQUEST_CHANGES. Head 6927981. The Unicode quoting fix passes, but the shipped PowerShell launcher rejects bare numeric options before Python. Keep the options as strings and test the emitted command through the shipped launcher.

Comment thread loopx/control_plane/quota/settlement.py Outdated


def render_owed_host_command(argv: list[str]) -> str:
return " ".join([host_command(argv[0]), *(shell_arg_for_host(arg) for arg in argv[1:])])

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这个 renderer 仍把数值作为裸词输出。真实 PowerShell 调用仓库的 scripts/loopx.ps1 时,裸写的 --slots 1 或 --max-page-output-bytes 64000 会进入 $args 成为 Int32;脚本在第 47 行扫描参数时调用 StartsWith,Python 尚未启动。两种存储均零扣额。将两个数字都作为字符串后,原轮次各结算一次,重跑无新增。请在正式启动路径保留参数类型,并用自带的 .ps1 作回归。

…ent-owed-command

Signed-off-by: Tartar <xiaoyx67@mail2.sysu.edu.cn>
Signed-off-by: Tartar <xiaoyx67@mail2.sysu.edu.cn>

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

复审提交 3a43c89。

Reviewer: model_agent · gpt-6.1-sol · OpenAI · runtime_reported · reasoning_effort=max

动机 / Motivation

在 PowerShell 从原工作区复制补结算命令的操作者会遇到这个问题。 上一版把数字形态参数传成整数,这一版按 PowerShell 字符串逐项呈现 argv。 原样执行新命令后,File 和 SQLite 各结算原轮次一次。重跑返回原回执,账本字节相同。 独立复验在 macOS 的 PowerShell 7.6.9 中使用实际仓库启动脚本,并显式选用 Windows renderer。原生 Windows 系统与远端 CI 未在本轮独立验证。 Q-ORIGINAL-TURN、Q-POWERSHELL-ARGV、Q-WINDOWS-TEST-WIRING 对应以下验收。原生 Windows 的执行结果仍由 Windows lane 验证。 已接受的规范

改动思路 / Approach

本次范围是现有补结算命令的宿主呈现、同一入口的校验及 Windows 测试接线。共享字面量工具保留直引号和弯引号,结算渲染逐项引用参数,包括 --slots 和 --max-page-output-bytes 的数字值。组合结算入口用同一 renderer 重核文本。 结算命令渲染 · 组合结算

具体改动 / Changes

  • 同一已写回轮次用旧 POSIX 命令文本时,实际启动脚本退出 1,补扣额仍为零。 新增验证也覆盖带空格、普通引号及弯引号的 registry 路径,以及相对启动器路径。调用通过正式脚本进入原结算。 共享转义
  • 聚焦源码测试 96 通过、11 项原生 Windows 用例跳过、19 个子测试通过。 精确 10 文件范围的 6 项直接检查和 19 项标准检查通过,且同范围 change-quality 回执已验证。 七个非合并提交均有 DCO 签署。 补结算测试

对主干的风险 / Risks

独立复验在 macOS 的 PowerShell 7.6.9 中使用实际仓库启动脚本,并显式选用 Windows renderer。原生 Windows 系统与远端 CI 未在本轮独立验证。 错误工作区和普通刷新由聚焦测试覆盖。错误工作区会在扣额前返回原命令及修复指引,重试使用原轮次回执。 结算协议

我的整体评价 / Verdict

批准这个提交。实际启动器复验解决了上一版的数值参数错误。现有工作区校验仍挡住不匹配的调用,合并还需单独核对其余评审门。独立的重放对照也确认原账本只记一笔。

English verdict: APPROVE. The emitted command settles the original Turn through the shipped PowerShell launcher on File and SQLite. Replaying it preserves the ledger. Exact-scope local checks passed.

@huangruiteng
huangruiteng merged commit 1f703b5 into loopx-project:main Nov 13, 2026
34 of 39 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants