<!-- codsh-publication:grok-cli-dsh-rewrite:ticket-60 --> ## Parent https://github.com/Blackman99/codsh/issues/132 **Ticket:** 60 **Status:** ready-for-agent **User Stories:** 30, 63, 64(见父规格) ## What to build 用户能保存本地反馈草稿、明确提交反馈,并选择是否向自定目的地发送脱敏诊断或观测数据。 ## Acceptance criteria - [ ] 非必要遥测、会话跟踪与内容分享默认关;开启目标、内容开关和管理限制可检查。 - [ ] 反馈草稿不自动发送,用户提交、失败保留、再次编辑和明确删除在所有模式一致。 - [ ] 测试实际出站流量不包含未授权提示、密钥或无配置官方端点,诊断预览说明脱敏边界。 - [ ] 兼容参考公开反馈/观测格式并接入实际配置目的地;各能力的模型必要流量与遥测分开说明。 ## Blocked by - #139 — Ticket 07: 首次配置与有效设置来源 - #141 — Ticket 09: 管理策略与工作区信任 - #154 — Ticket 22: 设置、主题与状态行 ## Delivery contract 用户于2026-09-20批准当前测试与任务拆分。按父规格的已安装产物/真实终端和公开协议测试验收;实际实现须带适用的文档、Changeset及必要检查。ready-for-agent表示任务已定义,不表示前置任务已完成,也不授权自动开始本轮实施、购买付费资源或发布软件版本。
Activity
Blackman99 commentedon Sep 22, 2026
按用户2026-09-20的实施授权领取 Ticket60 / #192;本次只记录领取,未启动实施工作者,也不表示已实现。已重新读取 #132 的80张子票、正文/评论和实际 blocked-by(native 177 边,无截断)。已在
rewrite/grok-dsh-20260920集成并关闭:#133–#141、#149、#154、#160、#161、#165、#189、#193。隔离集成 HEAD/origin 均为db756a47a43bfbff0be6a167e5a1bf1b0b54b28a,跟踪树干净。当前独立就绪且未被未核销领取占用的只有 #192。#142/#150/#152/#153 仍由 Blackman99 领取且审查未通过,不重试、不重领、不覆盖其现有评论。未领取任何被阻塞后继,也未领取 #212(最终发布/默认切换仍需新的明确批准)。
实施必须从独立集成树精确基线
db756a47a43bfbff0be6a167e5a1bf1b0b54b28a开始。前置均已关闭且提交仍在该分支上:3bd2cb4dd19b68eb8600e1d5af8c8be5dcaef70e)da22464d2e69e1ebf787cfc9b9bd89efdcee5da0)ded38373be19ef1685bded31ae48e49647f69280)Blackman99 commentedon Sep 22, 2026
Ticket 60 / #192 不能集成。两位独立审查员均拒绝 worker HEAD
9c53a330cdec18a025826da0b11c41248526ccc5(父提交就是基线db756a47a43bfbff0be6a167e5a1bf1b0b54b28a;merge-base --is-ancestor退出 0)。实施者在 103 轮后因max_tokens截断,没有留下可审查的修复提交。本控制器未 cherry-pick、未推送、未关闭。隔离集成 HEAD 仍为db756a47a43bfbff0be6a167e5a1bf1b0b54b28a(db756a4 )。控制器核对的是该提交,不是工作区里未提交的改动:
PrivacyPolicy只在from_config拷贝share_content、share_session、trace_upload、trace_url。提交内rust/src/privacy.rs没有发送或过滤路径读取这四个字段。submit_draft只看policy.feedback和feedback_url。打开替代 URL 后,内容共享、会话跟踪和 trace 上传没有可观察的出口。submit_draft在 feedback 开启且目标不是官方子串时,原样 POSTtitle和details。share_content不改变正文,也没有默认脱敏。submission_from_draft只在metadata.structured_feedback放schema_version/source/type。注释说用户 metadata 不能覆盖该键,但没有剥离实现。公开参考字段task_category与failure_mode既未覆盖,也未记为兼容差异。parse_feedback把 save|list|show|edit|delete|submit|preview 以外的首词报成unsupported feedback command。审查员在已安装产品上看到:裸/feedback打印 no local feedback drafts;/feedback The fold hid the prompt在全屏和 minimal 都打印 unsupported feedback command The;Escape 不关闭列表。PTY 只覆盖/feedback save --title,没有会话内失败、再编辑、删除。is_official_endpoint是小写子串包含(api.x.ai、grok.com、x.ai/、sentry.io),不是解析后的 host 比较。查询串里的官方 host 会被误拒;子串匹配不到的官方 host 不会被拒。post_json不限制 http/https。工作树保留:
/Users/zhaodongsheng/.grok/worktrees/my-projects-codsh/subagent-01a0ca13-52db-7111-8f05-08e2ecf98b7f。HEAD 仍是被拒绝的9c53a33。其上还有未提交改动(含未跟踪rust/src/feedback_ui.rs),不是已审查提交,不要丢弃,也不要在集成分支上手合。修复要求:在同一工作树用新提交完成——每个开关都有真实的替代发送或明确拒绝,官方 host 按 URL host 拒绝且只允许 http/https;默认脱敏,仅
share_content有效开启时包含草稿正文;使用公开 structured_feedback 信封并剥离用户提供的同名键;headless 与/feedback共用草稿、编辑、失败保留和删除,TTY 要覆盖失败、再编辑和删除。然后两位独立审查该新 HEAD。#132 与 #212 不关闭。Blackman99 commentedon Sep 22, 2026
Integrated on
rewrite/grok-dsh-20260920ata0504be561acbcacb146f8467a349c023fa9eb68.Cherry-picked
db756a47..1e6af27from the worker worktree (no tags, no force):a172ed8feat(rust): keep feedback local until an explicit opt-in submit (9c53a33)a0504befix(rust): make privacy switches stop the matching send (1e6af27)Combined tree matches worker
1e6af27354db6ed7ad0b564407d9f0da6dfc59cd(b01e874b66b35426f186e3bd277c958121f9383b).Evidence in the combined tree:
pnpm run typecheck: passTMPDIR=/tmp pnpm test: 80 files, 2246 tests passedcargo fmt --check,cargo clippy --locked --workspace --all-targets -- -D warnings,cargo test --locked --workspace: pass (194 + 61 + 2 + 379)pnpm run build:rustthenTMPDIR=/tmp python3 scripts/rust-privacy-pty-test.py:{"ok": true, "output": "/tmp/codsh-rust-privacy-nmqmuz_i"}882de6ef927836c6006b19f5cbab18509c4a2e5c74187ce53e47f17eee362579(gitignoredpackages/cli/native/)Pushed
db756a4..a0504betoorigin/rewrite/grok-dsh-20260920only. Main was not modified. No npm release.