Repository navigation
fix(workspace): show the Goal objective independently of acceptance - #6758
Conversation
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent | gpt-6.1-sol | OpenAI | runtime_reported | reasoning_effort=max
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
评审头:dbdf6d5616d6eef0c8179200c77f49e5132f099d。未发现阻塞功能通过的问题;有一项 P3 文档溯源建议:§4 仍写“Facts at 5c62c5c03”,新增 Goal brief 行却描述本次实现,2026-10-12 手机检查点也被改成当前布局。建议保留历史事实,另记本次版本,并同步中英文;这不否定下述已经实际验证的行为。
动机
已经记录研究或交付目标、回来查看进度且未配置验收检查的 Goal 所有者。 以前页面把当前任务当作方向,并提示未声明可衡量目标,手机还折叠这一区域;现在已记录的 Goal 目标直接可读,当前推进与可选验收条件各自显示。 独立真实 SQLite/HTTP 对照中,有任务与空 Goal 均保留原目标;缺失、空值、被过滤及不可读来源保持未知,恢复与切换 Goal 后读到各自目标。打包页面的目标不随检查通过、失败或停用而消失。 本切片只展示已记录的 Goal 文档内容,不认证 Agent Vision 已采纳、检查覆盖了整个 Goal 或 Goal 已完成;不新增 Lark 操作,不代表已安装桌面应用、真实模型执行或 PostgreSQL 权限变更。
改动思路
复用已经载入的 Goal 文本、既有公开安全过滤和 TypeScript digest,只增加一条有界显示投影;现有验收 owner 继续掌管检查配置与执行。 在现有 Goal 状态读取和工作区概览内完成目标显示、缺失说明、手机可见性与验收分离;没有第二个目标或验收写入 owner。
最小方案必须穿过现有状态读取与类型化界面:只改提示文字仍读不到原目标,拿任务或合同目标补齐会改变含义,另开配置表单则让用户重复录入已知信息。本改动选择有界显示投影。Python 留在既有来源 IO 适配,空值与显示语义进入既有 TypeScript owner;检查的配置、执行、失败及回读仍属验收 owner。未来重构检查确认同域提取 _active_state_goal_context 和删除手机宽度监听已足够,无需新增目标存储或通用框架。
以下表格是源码路径的解释,执行证据来自独立 HTTP 与实页操作:
| 触发 | 以前 | 当前头 |
|---|---|---|
| 有原目标、未配检查 | 当前任务充当方向,提示缺少可衡量目标 | 原目标直接可读,说明检查可选 |
| 来源缺失或不可读 | 无独立目标字段 | 明确未提供,不从任务或合同推断 |
| 检查通过、失败或停用 | 方向与检查概念混合 | 原目标与检查状态分别保留 |
具体改动
关键代码讲解
active_state_todo_fields从已载入的state_text用既有 frontmatter parser 读取 objective,复用公开安全过滤并限制 1,000 字符。没有增加文件读取,也没有从 Agent Vision、标题、Todo 或进展句构造目标。_active_state_goal_context在决定是否生成 attention 条目前,把有界内容放进当前 Goal 的内存投影;build_run_history再携带goal_objective。因此没有等待项、甚至没有任务的 Goal 也能展示目标。独立真实 HTTP 的空 Goal 用例覆盖了容易被 helper 测试漏掉的生产分支。compileGoalWorkspaceDigest的可选 nullable 输入与状态 Zod 字段衔接dashboard-page、workspace model 和 masthead;输出只作 trim-to-null,不把正在运行或有任务当作目标。旧来源省略字段时仍可读取,并明确显示未提供。GoalOverview把目标段落放在验收组件之外,默认始终可见;原进展句改成键盘可操作的 disclosure。GoalAcceptanceContractSection只调整未配置/未提供的可选说明,保留已有启用、当前快照、只读、CAS 配置与检查回读边界。
全部 19 个路径(+200/-56,含 5 张公开合成截图、成对 RFC 和聚焦测试)均在评审范围内。规范采用改动前的 docs/architecture/rfcs/goal-workspace-surface-v0.md,固定 revision 90932447eb5ed38a0d3fec8c57e21a62f57f849c,不把本次重写的规范当独立验收依据:D6 的有界公开目标字段与无合同简报已实现;5.1 的既有 owner 组合已实现;5.8 的未知不推断、验收观测保持部分性和原配置 owner 已实现。原文尚无通用目标字段/手机折叠的旧描述在本次明确改变,并由真实界面验证。历史事实标记的 P3 建议见开头。
对主干的风险
最强反例是 helper 返回正确而真正页面仍只在有 attention 时投影,或检查失败后用合同目标覆盖原目标。以同一独立脚本对不可变基线 90932447eb5ed38a0d3fec8c57e21a62f57f849c 和本头运行真实 SQLite/HTTP:基线仅满足 4/8 项,四个已提供/恢复目标场景失败;本头 8/8,缺失、空值、私有路径过滤、不可读、恢复、空 Goal 和独立 Goal 绑定均符合独立期望,读取前后源文件及 registry 字节不变。仓库新增的真实 File/SQLite 路径 4/4、typed digest 18/18,相关状态/历史/会话测试共 176 项通过。
重新构建实际 packaged Chat,源码 provenance 校验通过;使用 Ego 的同一独立页面连到真实隔离 SQLite/HTTP,没有替代状态后置条件。1512×982 与 390×844 下目标、下一步与未知状态可读,未见根水平溢出;中文/英文和 Enter 展开当前推进均验证。经既有 owner 预览并配置不同的检查目标,真实 UI 运行文件检查分别得到 exit 0 与 exit 1;两种结果仍显示原目标且未宣告 Goal 完成。停用后通过独立 owner 冷读和页面 reload 核对,原目标保留。缺失目标的另一个 Goal 显示明确来源未知,不借用现有任务或显示标题。检查请求未重复执行;一次测试等待用了错误的失败文案而超时,随后读取实际失败回执,未把它伪装成产品错误。
标准 premerge 六个直接检查、全部 19 个被选中的 catalog/risk/public 检查通过,包括成对 RFC、编译、维护性门限、完整语义绑定和公开边界。开发期 advisory 在完整语义检查之前执行;所有提交有 DCO。初次本地 verifier 路径和浏览器 API 参数错误已按仓库脚本/真实 API 修正,原错误保留,未放宽断言或门限。没有查询、轮询或等待 CI。这里没有 PostgreSQL authority store 重构,也未声称运行或安装了真实桌面包、模型或新的实验。
语义与 CI 对齐
复用现有 goal_workspace_digest_v0、状态 schema、metadata parser 与 public-safety owner,增加有界内容字段;未增加状态枚举、协作生命周期、义务或权限。目标显示是明确披露的默认变化,并非声称 default-off;可选验收的关闭/开启、失败/停用路径仍独立。来源缺失保持 unknown,检查通过仍不证明独立复核、实际采用或 Goal 完成。规范中的历史版本标记建议修正,但当前语义 owner 和本次验证义务没有缺口。
我的整体评价
本次命名目标已达成(goal_achieved),long_horizon preserved、user_experience improved:返回查看原目的不需要再配置验收、复制文本或重述已知目标,新增必需交互轮次为零,展开当前推进只是自愿查看。改动比例与问题相称,跨层字段完成了真正可用的界面,未停在 serializer 或 CLI;保留 nullable 兼容旧来源比新增版本或第二个 owner 更简单。P3 历史溯源修正可单独完成,不影响功能通过。作者的首屏展示审批、合并权限及已安装行为仍是各自的独立边界,评审通过不代为授予。
English verdict: APPROVE — dbdf6d5616d6eef0c8179200c77f49e5132f099d carries bounded recorded Goal content through the existing status/digest owner and keeps it visible independently of progress and optional checks. Matched real SQLite/HTTP evidence improves from 4/8 baseline cases to 8/8; 176 related Python tests, 18 typed cases, the packaged build/provenance and all selected premerge checks pass. Real UI check success, failure, disable and missing-source paths retain truthful Goal content. One non-blocking P3 asks the RFC to preserve historical revision labels. No CI query, installation or merge authority is claimed.
A Goal with a recorded objective but no acceptance contract was presented as having no measurable target, and its current Todo could stand in for the direction. The overview now keeps the Goal document's declared objective visible on desktop and phones, independently of current progress and optional acceptance criteria. Missing source content stays explicitly unavailable; it is never inferred from a task, title, Agent summary or acceptance contract.
The existing bounded, public-safe metadata read feeds status history and the typed Goal digest without additional file IO or authority. Acceptance keeps its own scoped objective, checks, errors and explicit configuration lifecycle; disabling it does not remove the Goal's direction. English/Chinese RFCs are reconciled with this behavior.
Validation and boundaries
Visual evidence
Tested UI source tree:
dbdf6d5616d6eef0c8179200c77f49e5132f099d. Actual packaged UI with public synthetic work and the isolated real SQLite/HTTP backend above. Before is the verified90932447eb5ed38a0d3fec8c57e21a62f57f849cbundle on the same fixture. Whole-viewport review prioritizes the declared direction; current progress is an optional disclosure and acceptance is a separate section.The two objectives remain separate with acceptance enabled:
Local disposable preview: http://127.0.0.1:63979/chat/?goalId=multi-agent-projection&view=overview&statusUrl=%2Fstatus.json (author's machine while the preview process runs).