feat(workspace): focus first screens and inspect team work in Goal chat - #4736
Conversation
huangruiteng
left a comment
There was a problem hiding this comment.
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机
审查 head 62cf816982f988b8883cf760ac19918e99b211aa,基线 74b62ebb55c9f9fefb209f0351593ba8f9c5d32d。本批是 整体路线图 R2/R3 的合理增量:在原 Goal 对话直接检查持久团队工作和成员启动条件。它没有完成整个持续团队目标;计划分配回执整合、经授权的创建、两轮主协调员持续推进及 Lark 等价仍未验收。
改动思路
最强反对理由是“再造一份 readiness 状态,反而把登记、模型可用、已执行和已验收混为一谈”。当前实现通过复用原 owner 避免这个问题:目录继续使用 #4731 的 requester-scoped journal;检查使用实际 Turn dry-run、所选执行配置和 canonical acceptance;TypeScript 只分类这些事实。没有新的调度器、持久状态或执行授权。未知的通用/云端运行时保持 unknown。
比较了只补文档、从登记推断状态、增建 fleet registry 三种替代方案;前者不能解决原对话的直接检查体验,后两者会重复权威。现有 #4733 的宿主容量配置是相邻能力,并不能替代本次任务级的准入、验收检查;#4376 的独立 workspace 未被引入。
具体改动
Delegations.inspect和共享_execution_arguments保持任务、workspace、host/model/effort、validator 参数一致。先用真实 parser 拒绝执行开关、缩写执行开关及身份重定向,再运行只读预检;检查前后核对绑定/验收来源。已有 Turn 拒绝会显式返回错误。goal_task_validation_files_current复用抽出的原 verifier pin matcher,读取已绑定校验文件的当前哈希,不执行产物验证。真正的执行完成仍走现有独立验收。delegationPreflight在 TS 边界区分任务准入、验收绑定和三态 runtime availability。launchable只表示本机前置条件,不代表执行许可、容量预留或正在运行。- CLI、已启用 MCP、新挂载的 Chat tool 共用检查。旧 native conversation 的 schema 与共享 GUIDANCE 保持;owner HTTP 入口沿用保存的 sender/config,暂停时可查,但不提交模型 Turn。
GoalTeamWork在原控制栏下面按需展开:分页查看 accepted/unavailable/recovery,展示产物哈希和实际 profile,切换身份/配置清掉旧观察,异步请求带代次隔离。普通 snapshot polling 不触发验收/预检。源码和随包前端同时更新。- 现有 Turn result builder 整体移动到
execution_readback.py,全部活动调用点继续共用它;managed_step从 canonical transaction 导入常量。执行/恢复回执保持原形,只有 dry-run 增加三项紧凑 route 事实。文档、两张合成截图和双语 roadmap 明确边界。
对主干的风险
未发现阻塞性问题。风险主要是把时点检查误解为长期承诺,以及反复验收大量结果的成本;检查保持按需、分页、未知状态和原工作身份,文档明确不提供 fleet snapshot 或远端容量保证。
验证:
- 最终 Turn/readback/preflight/managed-step 套件 118 passed;实际 stdio MCP 检查、执行、断线重连 2 passed;持久目录边界 6 passed。真实 CLI/HTTP 路径使用隔离 File/SQLite,拒绝越权/执行标志,检查不启动模型。
- 验收/委派回归 46 passed,Chat/preflight 27 passed;最终套件补充覆盖 host 拒绝。修改 pinned verifier 的真实 CLI 用例先复现 false-ready,再验证修复。
- 不变性:5 个原 CLI 场景完整输出/退出码与基线一致;禁用 MCP 的完整 schema、旧 enabled schema 和共享 Chat GUIDANCE 一致;相同 File/SQLite 输入的 dry-run 仅增加已声明 compact route。无新持久化迁移。
- 当前 CLI 回读此前真实 DSH/Ark 合成团队的 3 个根请求 + 1 个下层请求,4 份当前 accepted 产物与哈希重新核验;零启动、Goal 仍 active。这不是新一轮真实模型协作。
- 源码及打包版浏览器检查通过;最终完整打包版 8 个场景包含桌面/窄屏、未知 runtime、不可读结果、恢复和分页。浏览器使用合成 API fixture 验证交互,真实后端证据由独立 CLI/HTTP/stdio 测试承担。
- TS typecheck 与 5 个 TS 用例、Ruff、配置范围内 mypy、前端构建和公开边界扫描通过。最终完整 canary 5 个直接检查 + 19 个选中检查通过,无失败/跳过;精确范围质量回执有效。
早期 CLI 输出增长和 executor 模块规模检查确实失败过:减少 route 到消费者所需的三个字段,并把既有 result projection 拆到相邻模块后修复,没有提高预算上限。按 review policy revision 7 的 wait_for_ci=false,没有查询、轮询或等待远端 CI。
我的整体评价
APPROVE,作为可独立使用和回滚的本地检查增量。它让 owner 在原对话判断“原工作在哪里、当前能核验什么、哪里还不能确定”,同时保留多层协调可复用的接口。未来适配继续沿原注册、runtime、计划回执和 host continuation owner 推进,不在管家里增加第二套控制面。该 PR 涉及运行时与产品面,留给维护者合并。
English verdict: APPROVE - head 62cf816. Shared on-demand inspection preserves current authority, unknown runtime and existing execution receipts. Real CLI/HTTP/stdio File/SQLite, packaged UI, base/head parity and final local canary passed. This is a bounded local-inspection increment; provisioning, autonomous two-cycle continuation and Lark remain unqualified. Maintainer merge required.
62cf816 to
b8c34e4
Compare
huangruiteng
left a comment
There was a problem hiding this comment.
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机
审查 head b8c34e41baf7779dc900831dbb66d0e2d8417255,base 31525ca92a16ee0e06b7e88ba129f94771d11179。当前交付同时回应两项已确认需求:从原 Goal 对话检查持久团队工作;让整个工作区首屏集中于高价值信息、必要交互或有表现力的展示。整体路线图 R2/R3 仍是持续团队目标的依据,本 PR 是其中可独立使用的检查与体验增量。
相对上次审阅,本次新增了跨栏目注意力优化、同数据前后对比和流程规范,并按最新反馈将右侧主页的「已停止」移除,保留侧栏归档入口。首屏展示已获得 owner 确认;本结论重新审查当前完整 diff,不沿用旧 head 的批准。
改动思路
最强反对理由是:压缩界面可能隐藏阻塞、未知状态或必要操作,而新 readiness 层可能重复执行权威。实现采用现有 typed state 和组件:只收起明确的常规活动,保留等待、失败、中断、拒绝、未知用量和不可核验信息;团队与设置一键打开,关闭回到原位置。单独整理某个 feature 不能消除首页、概览、任务与设置的重复信息,因此本次按整个工作区调整,而没有增加新的注意力引擎。
后端继续复用 #4731 的 requester-scoped 工作目录、实际 Turn dry-run、现有执行 profile 与 canonical acceptance。TS 分类观察事实,Python 负责现有 IO/适配;没有新调度器、持久状态、Agent 创建或执行授权。空 runtime availability 不被解释为可用。
具体改动
Delegations.inspect与_execution_arguments共用实际任务、workspace、host/model/effort、validator 参数。真实 parser 先拒绝执行/缩写执行开关和身份重定向,检查前后核对来源;失败明确返回。goal_task_validation_files_current与正常验收复用原 verifier pin matcher。delegationPreflight区分任务准入、验收就绪和三态 runtime 可用性;检查不是产物验收,也不是容量承诺。- CLI、启用的 MCP、新挂载的 Chat tool 共享检查。Owner HTTP 查询暂停中的团队,不提交模型 Turn;原 native Session、旧工具 schema 和共享 GUIDANCE 保持。
GoalLoopXMode使用紧凑控制栏和原生 dialog;GoalTeamWork保持按需分页、身份代次隔离、显式未知/恢复/不可读状态。正常 polling 不触发团队检查;「暂停协调员」说明已派发成员继续运行。ManagerHomeBoard只展示有内容的活跃分组;停止归档只在左侧。执行摘要谓词共享,安静 Session 不丢失。ChannelTimeline按明确状态折叠常规活动,移除重复 runtime/status 文案和误导性 Live/0–1 进度。- 概览保留直接决策、异常和未知用量;任务复用 Markdown renderer,提供回复预览、直接进入对话和可编辑草稿,原 Kanban/list 不变;成果沿用来源 drawer。设置减少重复标题,保留来源、影响、preview/apply 和主题选择,窄屏选中栏目自动进入视口。
- 既有 Turn result builder 整体迁入
execution_readback.py;执行回执不变,只有 preview 增加三项 compact route。设计规范、AGENTS、PR 模板、双语展示 RFC 和操作文档同步更新;PR 正文包含五组同数据同视口对比图。
对主干的风险
未发现阻塞问题。主要剩余风险是将时点检查误解为长期可用性,或用浏览器 fixture 代替真实模型协作证明;文档和交付范围明确排除了这两种结论。
验证与证据边界:
- 当前 attention 版本的 8 个打包浏览器场景通过。随后仅涉及 Settings 的修复重新通过源码和打包导航;最后移除主页停止归档后,打包导航、构建/typecheck 和 workspace contract 再次通过。覆盖决策、未知用量、读取失败、来源 drawer、可编辑回复、窄屏设置、dialog 焦点/滚动返回,以及停止 Goal 的侧栏访问。
- 桌面/移动端/中文 usage 验证通过;五组比较图使用相同合成资料与视口,无本机私有项目数据。既有 bundle-size 构建提示仍存在。
- 先前 head
62cf816982f988b8883cf760ac19918e99b211aa的 118 个 Turn/readback/preflight/managed-step、2 个真实 stdio 重连、6 个目录边界、46 个验收/委派、27 个 Chat/preflight 用例保留原来源记录。已实际比较 Git blobs:后端、测试及依赖未变化,base 更新仅涉及文档 ledger/governance,所以这些结果继续适用,并未重标成新执行。 - 同样保留原来源的完整 CLI 输出、禁用 MCP/旧 enabled schema、共享 GUIDANCE 及 File/SQLite preview 对照。此前 pinned verifier 修改导致 false-ready 的真实 CLI 反例已修复。历史真实 DSH/Ark accepted 产物回读仅证明既有结果可重新核验,不宣称本次启动了新一轮自主团队。
- 最终完整本地 canary:5 个直接检查、19 个选中检查通过,零失败、零跳过;公开边界扫描 61 个现存候选路径通过。质量回执
cqr_40149b4f0588220f279f对当前 64 路径精确范围验证有效。此前输出和模块预算问题通过缩小投影、抽出既有 owner 修复,没有提高阈值。 - 使用 review policy revision 7、
wait_for_ci=false;未查询、轮询或等待远端 CI。没有以 CI 状态替代本地证据。
我的整体评价
APPROVE。当前交付让用户留在原对话处理团队工作,并让活跃目标、决策和结果重新成为首屏主体;跨栏目复用现有权威和组件,后续改动更易定位。计划分配回执整合、授权 provisioning、两轮持续协调验证、远端探测/唤醒及 Lark 等价仍归原路线图后续边界。本 PR 涉及产品与运行时,留给维护者合并。
English verdict: APPROVE - head b8c34e4. Shared on-demand inspection and approved workspace first screens preserve authority, persistent Sessions, unknown/error states and direct actions. Eight packaged scenarios, final affected navigation/build checks, exact quality and full local canary passed; unchanged backend evidence was explicitly requalified for source continuity. No fresh autonomous model-team cycle is claimed. Maintainer merge required.
…ation Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com>
…ries Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com>
…points Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com>
Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com>
Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com>
…omparisons Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com>
Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com>
Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com>
Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com>
Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com>
b8c34e4 to
6d3fe3b
Compare
huangruiteng
left a comment
There was a problem hiding this comment.
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机
结论先行:exact head 6d3fe3bd1429c3dbfb1c1aeeffccca567270d08a 没有阻塞性 finding。这个 PR 没有声称完成 #4574 的整个 R2/R3 路线,而是交付一个完整且可独立回滚的增量:Goal owner 可以在原 Goal 对话里按需查看当前协调身份的持久委派工作,并基于真实 Turn 路由、Goal 验收 pin 和 managed executor 观测检查成员启动前提;与此同时,个人工作区首屏把决策、结果和直接操作放回主要视觉层级。
不合入的最强理由是 64 个文件同时覆盖运行时、CLI/MCP/HTTP、前端、文档、测试和打包资产,表面较宽。但只做 UI badge 会复制执行真相,只做底层协议又会留下无产品入口的半成品。当前边界复用了已有 DelegationService、Turn preview、Goal acceptance 和 packaged workspace,没有新建状态库或 scheduler,因而比平行状态缓存或 Python 重写准入规则更小、更符合现有 ownership。
改动思路
入口链路是 Goal Chat team dialog / delegation inspect / collaboration MCP → ChatLoopXMode.read_team / DelegationService → TypeScript delegationPreflight 与 inventory projection → 既有 journal、Turn admission、Goal acceptance pins 和 managed executor。TypeScript 继续拥有状态分类,Python 只绑定 Goal-owned execution_config、协调身份并适配入口,React 只呈现结果。
inspect 是派生的 point-in-time projection:它强制 dry-run 且 host_invoked/state_written/quota_spent/scheduler_acknowledged 全为 false;launchable 也不是执行许可,真正 start 会重新核验准入。operations 只分页当前 requester 的现有 journal,unavailable、不完整页和 recovery_required 不会被折叠成“团队空闲”。普通未配置会话不会显示 team trigger,也不会发起 team read,因此 default-off 路径与原行为隔离。
具体改动
- 新增只读的 delegation preflight/inventory,并通过现有 CLI、MCP、Goal Chat HTTP 和打包 UI 暴露;原有
list/start/read/wait/resume、原生 Session/tool schema、Turn receipt 均保持兼容。 - 将 Turn public execution readback 从大
executor.py抽成单一execution_payloadprojection,preview、settlement、recovery 共用同一事实来源。 - Goal Chat 用现有 dialog 展示成员检查、分页 operation、恢复/不可核验状态和 artifact hash;异步 generation token 丢弃过时回包,错误与 refresh 归 UI 所有。
- 首屏删除/折叠重复和低价值 chrome,保留直接决策、未知用量、delivery error、provenance、editable reply、Kanban、移动端 category 与 stopped Goal sidebar archive。
- rebase 后修复了
_execution四元组调用不一致、缺失 coordinator 的KeyError风险、fixture 对 Session-owned 配置的过时假设、浏览器 projection 瞬态,以及 host args 可覆盖--project/--scan-root的范围问题。
关键代码讲解
loopx/chat_loopx_mode.py:250ChatLoopXMode.read_team:只接受inspect/operations的精确 body,使用本 Goal 的协调身份和配置创建服务;暂停协调员不阻断读取,但不会提交模型 Turn。loopx/control_plane/collaboration/delegation.ts:38delegationPreflight:按turn_blocked → acceptance_unavailable → runtime_unavailable → runtime_unverified → launchable的 typed precedence 分类,并验证 preview 无副作用。loopx/control_plane/turn_driver/execution_readback.py:18execution_payload:集中构造 preview/execute/recovery 的公开回读;route 只在 preview 暴露,quota、settlement、lane fence、host failure 与 recovery 仍来自原 owner。apps/presentation/dashboard/src/features/personal-workspace/goal-team-work.tsx:7GoalTeamWork:显式触发 scoped readback,保留分页不是 fleet snapshot、无记录不等于 Goal 完成、不可核验不应盲目重派等语义。
对主干的风险
最强回归场景是:读操作因错误配置或 host 参数检查了另一个 workspace,或者把 stale pin / unknown runtime 误报为可执行,最终诱导重复派工。exact head 通过 Goal-owned config、注册 coordinator guard、selector override 拒绝、typed precedence、零 effect preview 和显式 incomplete/unavailable 状态阻止该路径;启动仍由现有 Turn admission 重新核验。影响面限于本地已配置 Goal owner,没有获得 remote/fleet authority。
验证覆盖完整 diff:Python Turn/readback/preflight/managed-step 232 passed;最终 selector/preflight 14 passed;TypeScript delegation 5/5;Ruff、control-plane typecheck、dashboard production build;8 个 packaged workspace browser 场景;desktop/mobile/Chinese usage、fresh Frontstage share bundle 和 public navigation;git diff --check;premerge canary 19/19,0 failure、0 warning、0 manual hold,public/private boundary clean。第一次 Frontstage smoke 误用了 stale /tmp export 与 system Python;用当前 worktree venv 重建后 standalone 和最终 canary 均通过,没有跳过 required local validation。最终 GitHub CI 在发布本 review 前也已等待到全部非 skipped checks 通过。
语义与 CI 对齐
该变更扩展既有 delegation/Turn/Goal Chat 词汇,不创建新的 actor lifecycle 或 authority 模型;“preflight / inspect / local launch prerequisites”与实现范围一致,文档明确排除执行许可、运行证明、fleet snapshot、Goal 完成与 remote capacity guarantee。repository-native CI 的 DCO、Python shards/stage2c、Node compatibility、dashboard acceptance、real PostgreSQL、Ark adapter、desktop 和 build checks 均在 exact head 上通过;release/presentation 类 job 的 GitHub skipped 状态不是本 PR 的失败或人工 hold。
剩余风险是组合 diff 较宽,以及没有新跑 autonomous remote team / Lark journey;但这两者不属于本 PR 声称的本地只读增量,browser fixture 也没有被当成真实模型团队证据。若 scoped/no-effect invariant 回归,最小修复是恢复 Goal-owned selectors 与 zero-effect preview,然后重跑 preflight 和 packaged browser suites。
我的整体评价
这是一个 justified increment:它在不增加第二权威或持久状态的前提下闭合“真实事实 → 公共入口 → packaged UI → 失败反馈”的本地用户路径;关联 refactor 也已把 execution readback 集中到单一 owner,并加固了 rebase 暴露的范围与配置问题。代码体量与跨层目标相称,既有入口和 disabled path 有实证兼容性,未发现 typed-state、domain-neutrality、behavior-disclosure 或 guidance-vs-obligation 问题。
我对 exact head 给出 APPROVE 结论。由于这是 author-owned PR,GitHub 不允许 formal self-approval,所以本记录以 COMMENTED review 发布;并且仓库政策明确规定 loopx/**、apps/**、CLI/API 与控制面行为变更不能由作者自合并,即使本地 canary 和 exact-head readiness 均通过也必须由另一位 maintainer 合并。
English verdict: APPROVE - exact head 6d3fe3bd1429c3dbfb1c1aeeffccca567270d08a has no blocking findings and is ready for a different maintainer to merge after the repository-required exact-head readiness check; repository policy forbids author self-merge for these product and control-plane surfaces.
Post-merge process auditThis PR was squash-merged at
The active |
Goal and result
Related to #4574, roadmap R2/R3 and #4731. Owners can inspect durable member work and actual task/runtime prerequisites from the original Goal conversation. The workspace puts decisions, conversation and results first, with relevant controls one step away.
Changes
delegation inspect, enabled MCP and new Goal Chat tools reuse the delegation owner. TypeScript classifies actual Turn, runtime and pinned-acceptance facts. Inspection creates no work, calls no model and grants no execution permission. Original native Sessions/tool schemas are preserved.The bounded refactor shares execution arguments, verifier pin checks and the execution-summary predicate; moves the existing Turn result projection intact; and reuses Markdown, dialogs, drawers and configuration ownership. No new state store or scheduler.
Before / after
All five comparisons use the same synthetic data and viewport. Left is before the attention redesign; right is the approved final version. No owner-local project data is included.
Home — active work fits; stopped history stays in the sidebar
Goal overview — decisions and results replace empty chrome
Tasks — one readable reply, direct continuation, existing Kanban
Settings — less repetition, same configuration controls
Narrow settings — selected category remains visible
Validation
Reviewed head:
6d3fe3bd1429c3dbfb1c1aeeffccca567270d08a; base:cc8e28d8b58a9b15e928d7e2cee16097172567d1.git diff --checkpassed for the complete 64-file diff.cqr_40149b4f0588220f279fis superseded and is not evidence for this rebased head. No replacement receipt is claimed because this review has no explicit Goal id; the exact-head diff is instead qualified by the validation and canary evidence above.The future-facing pass was applied at the touched boundary: execution readback now has one focused projection, Goal-owned execution configuration remains authoritative after rebase, and local inspection cannot retarget its project or scan root through host arguments. Larger assignment-receipt integration, provisioning, two-cycle coordinator continuation, remote capacity probes, idle-host wake and Lark parity remain with the existing roadmap owners. This is a complete, independently reviewable local inspection and presentation increment, not completion of the full roadmap. Product/runtime merge remains maintainer-owned.