Skip to content

fix(tool-cli): prevent output from replacing source evidence - #182

Merged
lostlight530 merged 2 commits into
mainfrom
fix/2026-10-27-tool-cli-source-collision
Oct 27, 2026
Merged

lostlight530 merged 2 commits into
mainfrom
fix/2026-10-27-tool-cli-source-collision

Conversation

@lostlight530

@lostlight530 lostlight530 commented Oct 26, 2026 •

Copy link
Copy Markdown
Owner

当前问题与证据

  • 原始 tool_cli.py 的 --output 使用 os.replace,缺少对读取中的 figure_evidence sidecar 与参数/计划文件的路径碰撞保护
  • 独立隔离 Python 复现:使用原始 _write_output 实现将回执写到输入 JSON 路径,输入文件字节确实被替换
  • 仓库当前主体 writer 已有防覆盖边界,本修复仅补齐 opt-in tool CLI 的文件输出保护,不升级任何科研有效性声明

改动

  • tests/test_tool_cli.py:新增输入 sidecar、--args-file、--plan-file 输出碰撞回归测试
  • tool_cli.py:从直接调用或计划识别源文件,输出阶段以 resolved path 比较拒绝碰撞,返回既有 OUTPUT_WRITE_FAILED / exit 2;不同路径的正常输出保持不变

核验与限制

  • Base main 完整 SHA:cd031f816264b0ef121891ca5d91759480d85d59
  • Head 完整 SHA:c458fd223c9206ef0958158ace4dad173a5722dc
  • 交付前 main...head:ahead=2 / behind=0
  • 变更文件:仅 tool_cli.py、tests/test_tool_cli.py
  • REMOTE_STATE_VERIFIED:当前 main、远端分支、开放 PR、完整 changed files
  • STATIC_SOURCE_REVIEW:审查原始保护缺口与当前 diff
  • ISOLATED_REPRODUCTION_EXECUTED:原始函数覆盖成功,修复函数保护成功(均在独立临时目录)
  • NOT_EXECUTED:完整仓库 Python CLI/单元测试和本地原生 scanner,因授权执行设备离线、隔离环境无法访问 GitHub 原始仓库
  • 现有 optional tool-cli-agent-smoke 工作流若在 Draft PR 自动触发,需单独核验其实际 run/job 结论,不能把 CI 元数据冒充本轮本地测试

状态:READY_FOR_MAINTAINER_REVIEW,仅 Draft PR;不得据此直接合并,不启用 auto-merge

当前 Draft PR 的 CI 执行证据

  • 实际运行:Tool CLI Agent smoke (optional),trigger=pull_request,status=completed,conclusion=success
  • 精确 checkout head:c458fd223c9206ef0958158ace4dad173a5722dc
  • Job:local-tool-contract
  • 日志已读取并确认新增回归 test_cli_output_cannot_replace_source_or_request_inputs ... ok
  • Job steps 实际报告 Compile tool and test modules、Test registry, CLI, UI and native tool calls、Run complete repository manual test suite、Generate JSON and offline HTML catalog 全部 success
  • 证据等级:REMOTE_CI_TEST_EXECUTED,不等于本地原生 TEST_EXECUTED,也不构成科研有效性或外部符合性验证
  • 维护边界不变:Draft PR 待独立 Maintainer review,不启用 auto-merge、不自行合并

@lostlight530
lostlight530 marked this pull request as ready for review October 27, 2026 00:00
@lostlight530
lostlight530 merged commit ebb28ee into main Oct 27, 2026
1 check passed
@lostlight530
lostlight530 deleted the fix/2026-10-27-tool-cli-source-collision branch October 27, 2026 00:01
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.

1 participant