# CLI 输出渐进披露

本文件长期跟踪 UniDesk 高频 CLI 的紧凑默认输出、语义化逐级披露、显式原始输出与错误可见性合同。单个命令、一次 dump 或一个 issue 作为 ITEM 纳入，不以临时故障扩散文件。


## R1 [completed]

解决 [UniDesk #1809](https://github.com/pikasTech/unidesk/issues/1809)：收敛 Gitea webhook status、trans --help 及未知/错误命令的高频 dump，建立 compact 默认输出、语义化 drill-down、显式 raw 和无 stack 错误合同；只改只读 CLI 可见性，不新增 mirror、sync、flush、trigger 或 apply，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R1_Task_Report.md)。

### R1.1 [completed]

复现并冻结 [#1809](https://github.com/pikasTech/unidesk/issues/1809) 的输出合同：默认输出有界、repository key/deliveryId drill-down 语义化、--full 域聚合、--raw 显式；trans --help、未知子命令和可预测 option 错误不得回显内部 stack，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R1.1_Task_Report.md)。

### R1.2 [completed]

实现共享 CLI 错误边界与 Gitea webhook 有界逐级披露，复用既有 formatter/命令路由；默认输出给出可执行的语义化 next，不依赖临时 dump，且不增加任何交付或 mirror 写入口，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R1.2_Task_Report.md)。

### R1.3 [completed]

覆盖 compact/full/raw、repository/deliveryId、错误参数和 trans --help 回归，完成静态验证、非草稿 PR、架构审查与自动交付后原入口验收，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R1.3_Task_Report.md)。

## R2 [completed]

依据 [UniDesk #1817](https://github.com/pikasTech/unidesk/issues/1817) 收敛 AgentRun event 高频摘要的输出爆炸，只改 UniDesk render-only CLI，不改变 AgentRun/Kafka durable event facts，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R2_Task_Report.md)。

### R2.1 [completed]

默认 human 与 -o json|yaml 只展示有界 tool_call/event summary，保留 seq/type/status/commandId、命令首行、exit/duration 和 output bytes/hash/截断标记，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R2.1_Task_Report.md)。

### R2.2 [completed]

显式 --full|--raw 或稳定 event identity 保持完整下钻，并用固定 run_d7f1cbb11ab04a75ad435ee462c2e60d 和大 output 离线夹具证明默认不再触发 dump，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R2.2_Task_Report.md)。

## R3 [in_progress]

完善 AgentRun/Artificer 调试资源的语义化逐级披露，使 task 输入、资源引用与脱敏 provenance 可独立读取，不依赖完整资源 dump，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R3_Task_Report.md)。

### R3.1 [completed]

解决 [UniDesk #1819](https://github.com/pikasTech/unidesk/issues/1819)：为两个固定 Artificer task 增加 input/spec 的有界 id-specific CLI 下钻和默认 Next；只改 UniDesk render-only CLI，不提高 stdout 阈值、不修改 AgentRun/Queue/Kafka durable facts，并以真实 task 只读复现验收，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R3.1_Task_Report.md)。

#### R3.1.1 [completed]

在 [UniDesk PR #1821](https://github.com/pikasTech/unidesk/pull/1821) 内修复 `--input` 与 `--full|--raw` 的组合歧义：组合使用必须稳定 fail closed，不能绕过 TaskInput 的 SecretRef-only/valuesPrinted=false 合同；补 CLI 解析测试和两项固定 task 有界只读复验后再合并，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R3.1.1_Task_Report.md)。

### R3.2 [completed]

解决 [UniDesk #1822](https://github.com/pikasTech/unidesk/issues/1822)：将 aipodspec/<name> 默认 text/json/yaml 收敛为同构、有界且 SecretRef-only 的合同摘要，固定 Artificer 样本不再触发临时 dump；显式 --full|--raw 保持完整下钻，不提高全局 stdout 阈值、不修改 AgentRun 服务端或 AipodSpec 业务配置，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R3.2_Task_Report.md)。

### R3.3 [completed]

解决 [UniDesk #1824](https://github.com/pikasTech/unidesk/issues/1824)：为 AgentRun 精确 run+seq 事件增加通用有界详情投影，使 resource-bundle-materialized 可直接验收 primary workspace lifecycle、commit、writable 与 provenance/contract hash；默认列表保持有界，JSON/YAML/human 同构，exhaustive 仅由显式 raw/完整入口提供，禁止读取 dump 二次裁剪、提高阈值或修改 durable event，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R3.3_Task_Report.md)。

### R3.4 [completed]

解决 [UniDesk #1831](https://github.com/pikasTech/unidesk/issues/1831)：收敛 AgentRun control-plane secret-sync --dry-run 的默认输出，直接披露脱敏计划与 activation fence 资源 identity/状态/语义化下钻，保证 text/JSON/YAML 同构且 valuesPrinted=false；不得读取 dump 二次裁剪、提高 stdout 阈值、改变 Secret 同步语义或手工触发 CI/CD，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R3.4_Task_Report.md)。

### R3.5 [completed]

解决 [UniDesk #1834](https://github.com/pikasTech/unidesk/issues/1834)：Artificer session send dry-run 的 Next 被渲染为 [object Object]，live runner admission failure 又丢失 typed reason、已写资源 identity/mutation 状态和正式下钻。建立 text/JSON/YAML 同构的有界 session-send plan/error 投影，展示 decision、run reuse/runner create、session/run/command identity 与安全 Next；只做 render-only，不在 UniDesk 实现 session 状态机、retry/cleanup，不提高 stdout 阈值或改变 AgentRun durable facts，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R3.5_Task_Report.md)。

### R3.6

记录 [UniDesk #1835](https://github.com/pikasTech/unidesk/issues/1835)：gh issue view --json body 对 13 KiB 大正文仍触发 stdout dump，而技能要求理解 issue 前读取全文。增加 body-only 或按 section/cursor 的稳定语义化下钻，保留 body SHA 且不复制 envelope/compatibility 大字段；更新 unidesk-gh skill 清理跟随 dump 的旧 Next。不得读取 dump 二次裁剪、提高 stdout 阈值或手写 API；本支线暂不阻塞 Artificer 主线，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R3.6_Task_Report.md)。

### R3.7 [completed]

解决 [UniDesk #1837](https://github.com/pikasTech/unidesk/issues/1837)：前向兼容 [AgentRun #319](https://github.com/pikasTech/agentrun/issues/319) 的 durable runnerAdmission 成功响应，在 text/JSON/YAML 有界投影中展示 mode/state/reason/disposition、run/command/dispatchIntent/plannedRunner identity、mutation/partialWrite/recoveredPriorPartialWrite、retryability 与正式只读下钻；明确 planned runner 不等于 Kubernetes Job 已创建。旧 manager 未返回该字段时保持现有合同；只做 render-only，不在 UniDesk 实现 dispatcher/session 状态机，先合并 consumer 再合并 AgentRun producer，最终用原 Artificer session 验收，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R3.7_Task_Report.md)。

### R3.8 [completed]

解决 [UniDesk #1838](https://github.com/pikasTech/unidesk/issues/1838)：清理 gh pr create 默认输出中与自动 PR monitor/自动 CI/CD 冲突的手工 merge 和 preflight --full Next；默认只展示有界 PR observe/preflight/status，并以 typed 状态区分等待自动合并、review/check blocker 与自动链异常。手工 merge、--full/--raw 只在用户明确授权或显式披露时出现；同步修正相关 skill、长期参考和测试 fixture，禁止用错误提示诱导人工补链，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R3.8_Task_Report.md)。

## R4 [in_progress]

依据 [UniDesk #1845](https://github.com/pikasTech/unidesk/issues/1845) 为 AgentRun Session Workspace 与 Resource Binding 提供默认有界、同构、脱敏的 CLI 投影和精确下钻，不依赖临时 dump，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R4_Task_Report.md)。

### R4.1 [in_progress]

实现 [UniDesk #1845](https://github.com/pikasTech/unidesk/issues/1845) 的 session 默认有界投影，显示 state、latest run/command/runner、workspace/resource bundle identity、materialization 与 mismatch reason，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R4.1_Task_Report.md)。

### R4.2

增加 session workspace/resource binding 和相关 run event 的 id-specific 下钻，保持 text/JSON/YAML 同构、SecretRef-only、valuesPrinted=false 与显式 full/raw 完整性，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R4.2_Task_Report.md)。

### R4.3

用固定 session/run 覆盖缺字段、错绑和正确恢复样本，确认默认/详情均低于 YAML stdout 上限且不生成临时 dump；提交独立 PR，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R4.3_Task_Report.md)。

## R5 [in_progress]

解决 [UniDesk #1847](https://github.com/pikasTech/unidesk/issues/1847)：AgentRun mutation dry-run 的 Next 必须安全保留 argv 语义，并为长 reason 提供 quoted heredoc stdin 输入，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R5_Task_Report.md)。

### R5.1

为 [UniDesk #1847](https://github.com/pikasTech/unidesk/issues/1847) 盘点 AgentRun mutation dry-run confirm builder，统一为结构化 argv 与 shell-safe renderer，覆盖空格、引号、分号、变量、tilde、glob 与换行，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R5.1_Task_Report.md)。

### R5.2

为 cancel/retry 等长 reason 增加 --reason-stdin quoted heredoc，和 flag 输入互斥；错误稳定显示 validation-failed、mutation=false，不回显无界正文，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R5.2_Task_Report.md)。

### R5.3

补 text/JSON/YAML 同构测试与真实 cancel dry-run 复验，确认 Next 可直接执行且 reason hash 相同；提交独立 PR，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R5.3_Task_Report.md)。

## R6

解决 [UniDesk #1850](https://github.com/pikasTech/unidesk/issues/1850)：统一 trans 规范入口、host/workspace/k3s 的 cwd 与 scoped help，补齐验证成功非空摘要，并为 PR 自动交付及 Code Agent 跨服务诊断提供只读聚合视图；必须分层展示 durable authority 与 projection warning，禁止新增手工 trigger/sync/refresh、提高 stdout 阈值或用版本/commit 契约漂移阻塞业务。由独立子代理在 .worktree/tooling-usability、fix/tooling-usability 分支调查、实现、针对性验证并提交 PR，不自行合并，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R6_Task_Report.md)。

## R7

解决 [UniDesk #1880](https://github.com/pikasTech/unidesk/issues/1880)：收敛 `platform-db postgres plan|status|apply` 默认输出为有界、同构且脱敏的计划/状态/终态摘要；`apply --wait` 保留实时进度，但最终只展示 mutation/job/result/cutover blockers、role/database/app connection 与 Secret presence/fingerprint，并以显式 `--full|--raw` 提供完整下钻；不得提高 stdout 阈值、读取临时 dump 二次裁剪、改变 PostgreSQL 运行语义或打印完整 `DATABASE_URL`，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R7_Task_Report.md)。

## R8 [completed]

依据用户 post-task 解决 [UniDesk #1889](https://github.com/pikasTech/unidesk/issues/1889) 与 [UniDesk #1890](https://github.com/pikasTech/unidesk/issues/1890)：让 Windows ps/cmd 继承 route cwd，远端文本默认走 cat/apply-patch quoted heredoc，文本传输在写入前引导，默认有界输出不再自动产生临时 dump；目标是减少同类任务的试探、转存和二次读取调用，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R8_Task_Report.md)。

### R8.1 [completed]

由原生子代理解决 [UniDesk #1889](https://github.com/pikasTech/unidesk/issues/1889)：统一 Windows ps/cmd/quoted-heredoc stdin 的 route cwd，补原入口测试并提交独立 PR，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R8.1_Task_Report.md)。

### R8.2 [completed]

由原生子代理解决 [UniDesk #1890](https://github.com/pikasTech/unidesk/issues/1890)：前置收敛文本 download/upload、apply-patch TTY 与默认 dump 合同，更新 scoped help、skill/reference、测试并提交独立 PR，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R8.2_Task_Report.md)。

### R8.3 [completed]

主代理依次审查合并两个 PR，在 D518 仅使用 cat、apply-patch quoted heredoc 和有界查询完成原入口验收，关闭 issue 并记录调用数收敛证据，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R8.3_Task_Report.md)。

### R8.4 [completed]

补齐合并后验收发现的 [UniDesk #1890](https://github.com/pikasTech/unidesk/issues/1890) 残余：gh issue 默认 Next、readCommands、help、skill 与 reference 必须把 trans gh:/owner/repo/issue/<number> cat 作为人工正文读取首选，结构化 JSON/full/raw 仅作为显式机器披露，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R8.4_Task_Report.md)。

## R9

解决 [UniDesk #1905](https://github.com/pikasTech/unidesk/issues/1905)：收敛 Artificer 一次性 GitHub 正文输入，直接使用 quoted heredoc stdin，不再被旧参考误导为先写临时正文文件；保持既有可复用 --body-file 能力，不扩大到 Monitor 主线，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R9_Task_Report.md)。

### R9.1

按 [UniDesk #1905](https://github.com/pikasTech/unidesk/issues/1905) 清理冲突的 reference/skill/Next，并在 Artificer YAML prompt/resource bundle 内明确支持 stdin 时禁止一次性 /tmp 正文；补最小 render/行为测试后独立交付，当前只登记不执行，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R9.1_Task_Report.md)。

## R10 [completed]

解决 [UniDesk #1656](https://github.com/pikasTech/unidesk/issues/1656)：由 Artificer 在独立 `.worktree/cicd-status-visibility`、`fix/cicd-status-visibility` 分支修复 `cicd status --node` 成功零输出，并统一 PaC consumer 的 registry applicability；GitOps-only/publisher-only 应显示 N/A 且由 PipelineRun、GitOps/Argo 与 runtime 证据闭环，只有 owning YAML 明确声明 image/registry 的 consumer 才把 registry missing 作为 blocker。保持默认输出有界、text/JSON/YAML 同构、缺失可选 YAML 事实降级为 warning，不新增严格合同或手工交付入口；补针对性测试和 `unidesk-cicd` 说明，提交独立 PR 且不自行合并，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R10_Task_Report.md)。

## R11 [completed]

解决 [UniDesk #2104](https://github.com/pikasTech/unidesk/issues/2104)：把 CLI-SPEC 的只读观测等待规则和 `unidesk-cicd` 受控观测入口统一为默认 `120s` 长轮询，目标完成或状态满足时立即返回，未完成等待至超时并明确返回当前状态、timedOut 与稳定继续入口；禁止 CLI 本地高频短轮询、忙轮询和无输出，mutation 与交付 authority 保持 fire-and-forget，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R11_Task_Report.md)。

## R12 [completed]

解决 [UniDesk #2268](https://github.com/pikasTech/unidesk/issues/2268)：在 `unidesk-gh` 高频入口直接给出 issue 普通评论的 quoted-heredoc 命令，避免同类收口任务额外调用 scoped help；只改 skill 和任务报告，不修改 CLI 实现、业务仓库、身份/RBAC、安全、部署或 CI/CD，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R12_Task_Report.md)。

## R13 [in_progress]

修复 `gh pr list --head <branch>` 静默忽略过滤参数，补 scoped help、CLI 合同测试和必要 skill/reference，保持默认输出有界且不修改 GitHub 写入或 CI/CD authority，执行记录见 [pikasTech/unidesk#2293](https://github.com/pikasTech/unidesk/issues/2293)，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R13_Task_Report.md)。

## R14 [completed]

解决 [UniDesk #2355](https://github.com/pikasTech/unidesk/issues/2355)：修复 POSIX `trans apply-patch v2` 更新已有文件时因临时文件覆盖而丢失原 mode 的问题；host/workspace 的 bulk replacement 与 write fallback 必须保留已有 `0755`/`0644` 权限，新建文件继续服从既有 umask，不按扩展名猜测或由调用方追加 `chmod`，以一次定向 smoke 证明可执行脚本 patch 后可直接执行并减少状态核对、chmod 和重跑调用，不修改 Windows ACL、Git index、route、CI/CD 或运行面，完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R14_Task_Report.md)。
