Skip to content

feat(node): add execution-bound artifact reads - #80

Merged
LPX-E5BD8 merged 1 commit into
mainfrom
feat/st59-artifact-read
Nov 7, 2026
Merged

LPX-E5BD8 merged 1 commit into
mainfrom
feat/st59-artifact-read

Conversation

@LPX-E5BD8

@LPX-E5BD8 LPX-E5BD8 commented Nov 7, 2026 •

Copy link
Copy Markdown
Contributor

现有通用文件读取没有绑定执行记录与视图,也允许知识库需要的符号链接解析。本 PR 增加独立的 artifact.read 接口:Node 在接受 session turn 的同一事务中记录 execution、view digest 和 workspace generation,读取时逐组件拒绝符号链接、拒绝硬链接和特殊文件、限制每块大小,并在文件变化时拒绝返回内容。旧执行与旧节点返回 Unsupported,不会回退到 fs.read。

这是 Node 协议与读取基础。Hub 仍设置 artifact_view: None,没有启用产物读取;现有预览和知识库行为不变。grant 绑定 workspace 范围,不提供逐文件产出证明或不可变快照。后续接入必须由 Hub 完成读者与路径授权、产物版本绑定;view digest 不是访问令牌。本 PR 不表示主体隔离或 ST-59 整体完成。

基于 ebe07333483545099d071afcf11561c4788d558a,单独移入固定提交 963bfabe,无冲突且稳定 patch-id 相同。包含 scan::opened_path 两个平台实现的 pub(crate) 可见性调整;与 #78 相同的两处修改在集成时去重。

验证:

  • python3.13 ops/cut-release.py lint 通过。
  • python3.13 scripts/check-public-boundary.py --strict 通过,零违规。
  • 16 个变更 Rust 文件通过 rustfmt --edition 2024 --check --config skip_children=true。
  • git diff --check 通过;静态审查覆盖执行绑定、生命周期撤销、路径边界及旧端拒绝。
  • Linux CI 42386905292 已通过;完整日志确认 nextest:3156 passed、0 failed、25 skipped,全部首轮通过,0 retry/flaky。新增 artifact 文件安全、生命周期、旧执行拒绝及 wire 兼容测试均实际通过。
  • nextest 报告 3 个既有 steve-core::tests::release_outcome fixture 为 leaky:a_health_check_rollback_after_restart_fails_the_release、a_pending_release_whose_script_is_gone_fails_after_a_restart、a_pending_release_times_out_after_30_minutes;未将它们计为零泄漏。
  • Rust doctest:2 passed、0 failed、11 ignored;25 个 crate 结果组正常结束。CI 中 boundary、release scripts、Web check/test/build 也通过。
  • 本地未运行 Cargo;未进行 macOS CI 或实际部署验收。

本 PR 不包含发版或部署。

@LPX-E5BD8
LPX-E5BD8 marked this pull request as ready for review November 7, 2026 15:50
@LPX-E5BD8
LPX-E5BD8 merged commit 038d4c4 into main Nov 7, 2026
1 check 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.

1 participant