Repository navigation
fix(ci): pass --output-root and wait for HTTP 200 in the core RPC check - #925
LIghtJUNction merged 3 commits into
Conversation
The protocol workflow still called test-core-rpc-docker.py without --output-root after that flag became required. Point it at a fresh directory under RUNNER_TEMP and keep that directory with the evidence artifact. Fixes #923 Co-authored-by: LIghtJUNction <lightjunction.me@gmail.com>
bot 巡检(2026-10-16 21:39 Asia/Taipei)
|
|
补充纠正这次 CI 的诊断:job 116977935841 中,Rust exit 101 对应 cargo test 的 browser_sessions_independent(3 个失败)和 payments_process(1 个失败、1 个 ignored),不能归因于旧的 clippy/result_large_err。Native protobuf 步骤也已明确以 exit 1 失败,并非状态待确认。补上 --output-root 消除了原缺参错误,但尚未通过 Docker 验收;Native 的具体失败根因仍待查。请沿现有 PR 继续处理,保持 Draft。 |
A live extension proxy returns 503 JSON while core restarts. The fixture treated that body as readiness, so the reconnect check failed immediately. Stage only runner-readable evidence so artifact upload is not rejected by container-owned secret files. Co-authored-by: LIghtJUNction <lightjunction.me@gmail.com>
shellcheck SC2174 rejects mkdir -m together with -p, and actionlint failed the protocol workflow on that warning. Co-authored-by: LIghtJUNction <lightjunction.me@gmail.com>
Bot follow-up (2026-10-16 23:39 Asia/Taipei)CloudAgent #923 scope fixed on this PR:
Still failing (out of #923/#925 scope):
Draft kept. mergeable=true, mergeable_state=unstable. Do not merge until owner reviews. |
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
caebd81
into
wip/rust-core-go-extensions
变更说明
问题与关联 Issue/PR:
Fixes #923。默认分支
wip/rust-core-go-extensions(审查基点278ef81e)上,core-protocol.yml的 “Native protobuf round trips and failure recovery” 不带必填--output-root调用scripts/test-core-rpc-docker.py,自13803e61起以退出码 2 失败。业主对 job 116977935841(头提交
7027812c0)的诊断:cargo test。tests/browser_sessions_independent.rs3 个失败(UnsafePrivileges,runtime_database::check),tests/payments_process.rs1 个失败(缺少密封输入LMM_PAYMENT_CORE_BIN)、1 个 ignored。这些属于 ci(protocol): 默认分支 Rust checks 新失败 — clippy::result_large_err(services/core/src/remote_control.rs:336) #915,本 PR 不修。--output-root之后,缺参错误已消失。Native protobuf 步骤仍以退出码 1 失败。公开日志只有两行 CHECK,然后是FAIL: private evidence and recoverable resources retained。第三行 CHECK(reconnect / bounded database failure)没有打印。两行相隔约 1.2 秒。为什么采用此方案:
--output-root仍为必填。工作流仍用realpath -m得到绝对、无符号链接、尚不存在的路径,由脚本创建私有空0700目录。退出码 1 的根因在测试套件。
13803e61把wait()里的return json.loads(body)移出了if status == 200。扩展进程仍在、核心正在重启时,身份代理会立刻返回 JSON(services/extensions/internal/modules/identity/identity.go的{"error":"core_unavailable"},默认 502,Unavailable为 503,超时为 504)。旧wait()会继续重试直到 200;那次改写把第一个非 200 JSON 当成就绪并返回。第三段检查是这条路径第一次出现:扩展容器不重启,只重启 core。此前的等待多数是连接失败(OSError),仍会重试,所以前两行 CHECK 能过。同一段业务断言在eb15d7fe的 run 38881968940 上打印过第三行 PASS(当时wait()只在 200 时返回)。wait_for_http恢复该契约:只有 HTTP 200 才记录运行中的可执行文件身份并返回 JSON;502/503/504 继续重试;连接错误仍重试;就绪观测失败(FixtureError)不当成传输错误吞掉。--output-root与证据保留检查没有放宽。同一次 job 的产物上传另外失败:
EACCES打开/home/runner/work/_temp/core-rpc-docker-evidence/database-owner-url。脚本把合成凭据chown给容器用户 65532 并chmod 0400,upload-artifact读不到任意一个文件就会让整个 zip 失败。工作流只把当前用户读得到的证据复制到core-rpc-docker-evidence-readable再上传。容器所有的 0400 凭据仍留在原目录,不进入产物。mkdir -m与-p同用会触发 shellcheck SC2174,已改为先mkdir -p再chmod 0700。复用了什么,替代或删除了什么:
保留
--output-root接线。把嵌套wait()改为调用wait_for_http。产物路径从原始证据目录改为可读副本。未改产品代码,未改 #915 的 Rust 测试。可能破坏的行为、外部契约或数据路径:
无产品契约变化。该步骤仍会跑真实 Docker 安装检查。失败时仍保留私有证据并以退出码 1 结束。产物里不再包含读不到的合成凭据文件;运行者自己写的日志和
failure.json仍会上传(保留 7 天)。上游来源与许可证影响(不适用时说明):
不适用。未引入上游代码。
验证证据
审查基点 SHA:
278ef81e6e87364891c80de6b03a2c8724934fe1实际测试的 HEAD 与工作区摘要:就绪修复在
498a4f97c;shellcheck 跟进在f452cdb4d。修复前失败、修复后通过的命令与日志:
--output-root(run 38889606925 / 38891517552):退出码 2。7027812c0的 protocol job:缺参错误已消失;第二行 CHECK 之后约 1.2 秒以退出码 1 失败;产物上传EACCES。498a4f97c的 run 38918404776:Native protobuf 步骤打印三行 CHECK,并以PASS: owned Docker installation assertions and cleanup verified结束。同一 job 的 Lint workflows 因 SC2174 退出码 1。f452cdb4d的 run 38921283189 / job 117041543206:SC2174 已消失。Native protobuf 步骤再次打印三行 CHECK,并以PASS: owned Docker installation assertions and cleanup verified结束(15:25:24Z)。可读证据产物上传成功(artifact 12055768542)。该 job 仍因cargo test退出码 101 失败:ci(protocol): 默认分支 Rust checks 新失败 — clippy::result_large_err(services/core/src/remote_control.rs:336) #915 的browser_sessions_independent与payments_process,另有oauth2_pi_independent的revoked_expired_stream_retains_original_hold_until_authoritative_reconciliation以StaleWorker失败。这些 Rust 测试未在本 PR 修改。python3 -B scripts/test_core_rpc_fixture.py -v:40 通过,1 个跳过(本机没有 Docker Compose 客户端)。node --test scripts/workflow-topology.test.mjs:12 通过。本机 shellcheck 0.9.0 对证据复制脚本退出码 0。重构的行为保持证据,或明确的业务语义差异:
无业务语义变化。就绪判定恢复为只接受 HTTP 200。
quick / related / full 的报告、失败、受阻及未执行项目:
本机没有 Docker daemon,未在本机跑完整安装脚本;上述 GitHub job 是该步骤的实际结果。改
scripts/workflow-topology.test.mjs使每次推送都触发 Native Linux package checks:amd64 通过,arm64 在链接lmm-cli时因 musl 缺少__aarch64_ldadd4_sync失败(run 38921283529)。这与本 PR 的 RPC 套件无关,未在此修。scripts/quality-gate.py的rpc-docker与文档示例仍不传--output-root。agcc在本环境不可用。用户可见变化的浏览器证据;核心变化的同环境资源对比(适用时):
不适用。无界面变化。
必须独立审查的内容
门禁、测试断言、类型配置、阈值、锁文件、基线或例外的变更与理由:
无断言或门槛放宽。
--output-root仍必填。就绪仍要求 HTTP 200。失败仍保留私有证据。产物不再尝试打包读不到的凭据文件。高风险业务、临时方案的责任人、到期时间与退出条件:
无资金或权限变更。可读证据副本可能含命令日志;合成凭据文件本身不进入产物。保留期仍为 7 天。
独立审查者与证据(尚未执行请写 pending,作者不能自行批准):
pending。
提交前核对