Skip to content

fix(chat): read full Task requirements from the registered Goal source - #7649

Merged
huangruiteng merged 1 commit into
mainfrom
codex/task-source-http-readback-20261029
Oct 29, 2026
Merged

huangruiteng merged 1 commit into
mainfrom
codex/task-source-http-readback-20261029

Conversation

@loopx-agent

Copy link
Copy Markdown
Collaborator

Chat 使用独立历史目录时,Goal 状态仍可正常读取,但任务详情会返回 400;如果聊天目录恰好含相同 Goal/Task ID,还会返回另一份正文。任务详情现在复用状态页和交付检查已有的 Goal 来源路由,打开任务时读取注册来源的完整要求。

改动只涉及两个 HTTP 适配文件和一个回归测试文件。将已有 helper 命名为 goal_read_runtime_root,供三个实际消费者共用;保留其原实现,继续由现有 canonical source owner 决定来源。CLI 显式 runtime override 的诊断语义保留。

验证绑定 c82f4f6a0c5fc641cc43f18b6286a734380c3dce,基线为 bcb1a8710844bda6b84c2a00cf5d86ba78e126d9:

  • 三个相关测试文件共 34 passed:File/SQLite、项目及全局 registry、同名任务 decoy、完整与归档正文、来源改绑、缺失/不可读/不再注册、错误恢复、原编辑 CAS 与显式 CLI override。读取前后 canonical 内容与 revision 均保持。
  • 新增四个真实 HTTP 回归用例在基线全部失败,原因均为返回聊天目录的错误正文;修复后通过。
  • Ruff、仓库声明的 17-file mypy、diff-scoped semantic advisory、RFC bilingual diff、public/private scan 和 git diff --check 通过。
  • npm run build:chat --prefix apps/presentation/dashboard 完成 TypeScript 检查与当前 packaged bundle 验证。Vite 报告大 chunk 警告。
  • 独立合成数据、真实 Chat CLI、全局 registry 和独立聊天目录的现有界面,在 Ego Lite 的 1200×888 与 390×844 视口读回全部 682 字及末尾验收条款;来源失效显示仅有摘要,恢复后重试读全,Escape 返回原任务。此证据限当前源码构建的浏览器旅程,尚不证明已安装原生 App 采用。
  • premerge 6 direct checks + 8 selected/executed canaries passed,0 failure/skip/timeout。首次因缺少仓库 TypeScript dev dependency 的失败保留;正常 npm ci --ignore-scripts 后完整门通过。
  • Exact-scope CQR cqr_754bc4f5ad0742fbceba 已记录并 verify=valid,fingerprint 754bc4f5ad0742fbceba6065f5d48d66b8a0b43a8d944e3862995e09b46e2501。

有界重构已应用于同一个 HTTP 来源适配边界;未增加配置、协议字段或第二套来源判定。此 PR 为完成的作者提案;CI、当前 head 的评审、merge readiness 和维护者合并授权仍各自适用。

Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer: actor_kind=model_agent; model=gpt-6.1-sol; provider=OpenAI; runtime_reported; reasoning_effort=max

Approval conclusion (author-owned PR; GitHub blocks formal self-approval)

当前精确 head c82f4f6a0c5fc641cc43f18b6286a734380c3dce 的有界修复未发现阻塞问题。以下是作者自审,不构成独立评审或合并授权;结论依据本地真实入口验证,未用远端 CI 代替证据。

动机 / Motivation

使用独立聊天历史目录、从 Goal 页面打开任务要求的用户。打开任务时,旧版会报错或显示同名的另一份要求;修复后显示注册来源的完整正文,来源失效时显示失败并允许恢复后重试。真实 File/SQLite HTTP 路径读回完整当前和归档要求,切换来源后立即更新,错误来源不会借用聊天目录。

本次不改变分页预算、控制器决策、CLI 显式 override、安装或原生 App 资格。安装版本采用及原有完整恢复目标仍未完成。

改动思路 / Approach

复用现有来源适配和唯一 canonical reader,消除一个错误的显式 override;不增加状态、配置或来源判定。本 PR 只交付现有 Chat Task 详情的注册来源读取与失败恢复;安装、原生 App 采用和上层恢复验收仍由原任务继续。不修改 canonical 来源选择器,而是撤掉 Task 调用处错误的聊天目录显式参数。单独内联判断会复制已有规则;新建 provider 或迁移决策代码都超过这个问题的需要。

用户仍从原任务入口打开详情,无需填写运行目录、复制命令或增加确认轮次。正常读取为一次导航,来源恢复后的重试是一次恢复操作。分别链接的外部来源仍由既有 namespace 检查和只读 reader 截获;本地来源才进入此适配。这两个入口的职责没有合并成第二套权威。

具体改动 / Changes

规范依据:docs/development/frontend-delivery.md,spec_revision=bcb1a8710844bda6b84c2a00cf5d86ba78e126d9。先读该版的 shared source reader、Native App source Goals 与 Task-first delivery;本 PR 未改写规范。以下标签对应原文未编号条款:

  • source-reader-ownership:implemented。读取仍交给原来源与 canonical Todo owner;适配器不获得决策或写权限。由真实 File/SQLite 来源、同名 decoy 和前后权威快照验证。
  • task-first-readback:implemented。已有打包 Task 详情读完整正文,来源失败有明确提示与重试,682 字末尾验收条款可达。
  • installed-app-qualification:deferred。源码/打包浏览器与已安装原生 App 分开;原恢复工作继续负责安装版本采用和实际任务回读。本提案没有把浏览器证据提升为原生资格。

关键代码讲解

  1. goal_read_runtime_root 的函数体与基线完全相同:registry 具有 common runtime 时不塞入显式 override,让现有来源路由解析每个 Goal;未绑定时保留原协调目录和后备逻辑。原两个状态消费者同步改名,仓库未找到漏改的旧私有符号使用者。
  2. TodoDetailRequestMixin._todo_detail 只替换一个来源参数。loopback、Origin、Goal 成员、单一 Task、登记快照、完整正文和原 CAS 读基准都保留;缺失来源不会返回另一份有效任务。
  3. list_goal_todos 是未改动的共同 reader,继续负责完整精确读取及 source snapshot。CLI 显式 override 的诊断用途没有被此 HTTP 修复改变。

完整 diff 为 97 行增加、4 行删除,其中生产代码 +5/-4、回归 +92。重构已在同域边界完成:复用已有适配器,不增加模块、配置、持久化字段、公共协议或新的闭集词汇。

对主干的风险 / Risks

最强反例是:聊天目录恰有相同 Goal/Task ID,原来源随后失效或被替换,HTTP 仍成功却返回错误正文。基线 bcb1a8710844bda6b84c2a00cf5d86ba78e126d9 上同一新增回归的四种 File/SQLite × 项目/全局 registry 全部因错误正文失败;当前 head 通过,并覆盖归档要求、登记改绑、来源缺失/不可读/错误 Goal、恢复重试及 canonical 内容和 revision 不变。

本次还检查了未在 diff 内的 linked-source 拦截和本地 fallback,额外执行既有 test_original_task_detail_cannot_follow_a_replaced_source,PASS,1 passed / 3.57s:旧 namespace 在移除/替换后仍被拒绝,新 namespace 才读取自己的正文。这是独立既有反例的执行,未新增空壳测试或使用活动 Goal 作样例。

本地验证:原三个文件的 34 passed / 41.30s、Ruff、17-file mypy、打包 Chat 构建和 premerge 6 direct + 8 executed canaries 均 PASS;后者包含完整 semantic drift、maintainability、quota/work-lane/monitor/Todo/projection 检查。复用的每项均绑定同一 c82f4f6a0c5fc641cc43f18b6286a734380c3dce;本次确认源码与依赖未变,所取新 main 在相关 owner、调用点和锁文件无变化。首次缺少 root TypeScript dev dependency 的失败保留;正常 npm ci --ignore-scripts 后相同完整选择通过,未删断言、缩扫描或改预算。Vite 大 chunk 警告保留。后续主干集成仍须独立重新资格化。

本次没有 opt-in/default-off 声明,没有新强制工作条件、字符串状态分类或域专用义务。原 Origin、成员及 namespace 拒绝分支保持。实际 SQLite/File 和隔离 HTTP 证明的是读取边界;不声称 PostgreSQL 权威改造、生产迁移或实际模型采用。

我的整体评价 / Verdict

justified_increment:该修复让原有完整要求重新可读,并保留失败恢复,适合独立审阅和回滚。long_horizon 为 improved,限后续读回/重试保留原来源与完整承诺,不声称已测得 Agent 效果提升;user_experience 为 improved,不增加已知意图之外的人工步骤。复看同一 c82f4 构建的桌面完整正文、390px 正文末尾和来源失效页面;正文先于任务元数据,长文可读,失败提示和重试可见。当前未修改前端或构建依赖,原截图的适用条件保留。 本改动没有折叠、密度或展开布局变化;所查正文面板是任务读取的默认状态,窄屏证据检查同一旅程。已安装原生 App 的 WebView 采用和原有实际任务的端到端恢复尚未验证。

observable semantics 是有意且已验证的来源修正,原共享适配函数体、CLI 显式 override、响应和错误文本保留。复用现有 owner、机制规模与问题相称,未发现必须再加状态或新框架的理由。无阻塞发现;最强未完成验证是安装版本的原生 App 采用与原恢复目标。后续需要各自的独立评审、有效 readiness 和维护者授权,本次不合并、不安装。

English verdict: APPROVE at c82f4f6a0c5fc641cc43f18b6286a734380c3dce — no blocking finding in the bounded Task source repair; real File/SQLite HTTP/CLI, packaged recovery, and linked-source replacement evidence pass. Author self-review only; installed adoption and merge authority remain separate.

@huangruiteng
huangruiteng merged commit a651a82 into main Oct 29, 2026
25 of 35 checks passed
@huangruiteng
huangruiteng deleted the codex/task-source-http-readback-20261029 branch October 29, 2026 09:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants