edit | blame | history | raw

Cargo 诊断链

用户目标

针对 private run 31755968182 的四项 Cargo exit 101,只新增有界、脱敏、fail-closed 诊断链与生产同核测试,不猜修产品源码,不推送或触发 Actions。

已完成事项

  • 新增 scripts/mindraw-cargo-diagnostics.mjs 与 9 项测试。
  • workflow 在 runner temp 净化 raw Cargo log,只上传 sanitized diagnostics 和既有 fixed metadata。
  • 独立记录 Node/Cargo/diagnostics exit,并以生产同核 resolver 保留失败优先级与原始 Cargo 101。
  • 更新 package script、CODEGRAPH、INDEX、CHANGELOG;形成 Gate crg-9406f7432358

关键决策

  • output 上限固定 200 行/64 KiB/单行 1 KiB,raw input 上限 8 MiB。
  • Cargo structured JSON 不使用 rendered 或 span source text,只保留 error/code/crate/location/help/note。
  • 文本 fallback 是严格 allowlist;非零 Cargo 无安全诊断时 exit 78,禁止产生“空成功”。
  • raw Cargo/node logs 不进入 artifact;诊断成功也不能把 Cargo 101 改写为 0。

核心事实 / 变更快照

  • 变更对象:private 六原生 compile-probe diagnostics boundary。
  • 事实来源:base 754c1a8e9f7a52cf5c60ba2434972cb41fb01587;sanitizer SHA e19c9e42dd3d0372ff5818f41be58fd9578a1dd4ac603decd24206159ec92b38;test SHA b13ccf42252ec46361ae03537ea6e5dc01fb8b888a70386afc1219cef437534d;Gate crg-9406f7432358
  • 变更前:artifact 只有 exit metadata,Cargo 101 无安全根因字段。
  • 变更后:artifact 可增加 bounded sanitized diagnostics;raw log仍只在 runner temp;三个 exit独立记录。
  • 映射:diagnostics failure→78,Node failure→原 Node exit,Cargo failure→原 Cargo exit,全部成功→0。
  • 范围边界:未修改产品业务/Rust依赖/版本/包;未 commit/push/Actions/QA;run 31755968182仍为2/6。
  • 验证:专项9、组合Node28、frontend247、doctor15、Rust110及locked check/build/workflow/security/diff PASS。

文件变更

  • Worktree:workflow、两个新 scripts、package.json、CODEGRAPH、INDEX、CHANGELOG。
  • 主项目治理:Review Request/JSON、统一台账、PMO_INBOX、本会话记录。

未决问题与后续建议

等待独立 reviewer 检查路径/URL规则顺序、source text排除、exit传播和artifact allowlist。Gate PASS 前不得推送或运行;PASS 后也需PMO另派private run,真实诊断结果再决定是否拆平台源码修复。

三个月后回看:本记录可还原输入 run、诊断限制、失败码映射、文件 SHA、Gate、验证与未授权平台结论边界。