Skip to content

fix(workspace): show complete original Task evidence and notes - #8361

Merged
loopx-agent merged 1 commit into
mainfrom
codex/product-engineer-20261108-082941
Nov 8, 2026
Merged

loopx-agent merged 1 commit into
mainfrom
codex/product-engineer-20261108-082941

Conversation

@loopx-agent

@loopx-agent loopx-agent commented Nov 8, 2026 •

Copy link
Copy Markdown
Collaborator

Goal And Delivered Outcome

Opening a Task from a linked original Goal currently reads its full requirements, but Evidence and Notes still use the shortened status hints. A comparison reference or limitation beyond that hint is lost from the inspector.

Read the existing canonical evidence and note fields through the same linked Task endpoint and show them in the existing inspector sections. Requirements, evidence and notes share one request. Source identity and read-only guards remain in the existing owner.

Author Declaration

  • Written by: model_agent — OpenAI GPT-6 / Codex.
  • Specification and revision: no written specification; the reproduced defect described in this PR is the basis. Frontend delivery, source isolation and design rules at base 4e949f405528fd8087f0623526c62f890c1ce982 apply.
Criterion Disposition Owner / evidence
Opening an original Task shows its complete evidence and notes implemented Linked GoalSource transport and existing TaskRequest / ContextDrawer; real SQLite HTTP tests and packaged browser
Another Task/source cannot inherit an earlier full read implemented Shared read identity, abort guard, namespace validation; failed, mismatched and late response checks
Older request-only readers stay compatible; explicit null clears stale hints implemented Optional Zod fields and presence-based fallback; packaged desktop and narrow checks
Inspection remains read-only and uses one request implemented No new write capability or review basis; browser request count and real source byte checks

Scope And Continuation

Complete for linked original-source Task evidence/notes. The local request-only endpoint is unchanged. The Python transport only exposes existing canonical fields; TypeScript handles the ephemeral read state. This extends the existing native Chat source owner without a new capability, provider, configuration or persisted vocabulary.

The small identity helper gives both components the same stale-read invariant. The existing inspector scenario is extended rather than adding another smoke module.

Source-service latency, broader research synthesis and installed service activation are outside this focused fix. Native read-only preview evidence is kept private and is not installed-delivery proof.

Validation

  • Tested revision: 92a5f2228ed82f618f9b1c4a7cd8079572d20592.
  • Run state: finished.
  • Input classes: synthetic, authorized_private_read_only.
Check kind Result Evidence / limitation
static passed Dashboard TypeScript check and npm run build:chat; verified manifest names the tested revision
integration passed pytest tests/presentation/test_linked_goal_sources.py tests/test_chat_todo_detail.py -q: 26 passed; real SQLite source HTTP/CLI, source denial/unavailable/recovery and unchanged local File/SQLite reader
real_entrypoint passed Existing packaged task-inspector-return scenario: desktop/390 px, complete evidence/notes, one read, absent/null metadata, failed/mismatched/late responses and retry; existing edit recovery still passes
regression_parity passed Same full-evidence assertion fails with immutable base frontend and passes after restoration of the reviewed source; only an extra base screenshot observes the failure
real_backend passed Packaged frontend plus actual original Task owner through a GET-only preview reads complete evidence beyond the status hint; private captures excluded; no solver or model work
static passed Ruff on changed Python files, public/private scan of all six changed files, diff hygiene and bilingual RFC check

Exact-scope quality receipt cqr_4ada69a6132f6420815b is valid, and local premerge passes with zero blocking failures or manual holds. It retains one maintainability-ratchet advisory outside the changed files; no independent base attribution is claimed here. The earlier stale-receipt hold is resolved by fresh qualification of this head. CI waiting is disabled by the maintainer's delivery direction. No CI result is claimed.

Frontend / Visual Evidence

Public-safe synthetic fixture; packaged production frontend. Before uses base 4e949f40; after uses the reviewed source 92a5f222. The user question is whether the original result and its limitations are complete. Existing Evidence and optional Notes retain their positions; no new explanatory UI or controls are added.

Before: the opened Task keeps only the shortened evidence hint.

Before: bounded evidence hint

After, desktop: the reference at the end of the full evidence is visible. Notes are expanded, with the inspector scrolled to the supporting information.

After: complete evidence and notes on desktop

After, 390 px: the same information wraps within the inspector. Long requirements and notes remain vertically scrollable; the fixed Task heading and return control remain accessible.

After: complete evidence on a narrow screen

The populated-page review includes long repeated requirements, open/completed/monitor cards and unavailable reads. Long content still requires scrolling; no layout redesign is claimed.

Type of Change

  • Bug fix
  • Test update
  • Personal Workspace frontend

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: model_agent — gpt-6.1-sol / OpenAI; runtime_reported; reasoning_effort=max.

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

动机 / Motivation

没有发现阻塞合并的问题。在嵌套原始 Goal 中查看任务结果与限制的使用者。打开任务时,旧页面的证据仍是截断摘要,末尾比较依据不可见;修复后从同一原来源读回完整证据和备注。已验证完整依据进入现有任务详情,未增加读取请求或研究执行。本 PR 不修复来源服务慢读,不宣称完成安装激活或完整 case 分析。来源慢读、安装切换和更完整的研究解读仍沿既有工作继续。

使用者需要看清结果依据和限制,才能判断一次尝试是否值得保留。仅把列表摘要显示在详情里,会使末尾的比较依据丢失,迫使人再去复制原记录。本次验证了真实来源确有完整内容,问题在读取与展示链路;并未从测试数量推导研究效果已经提升。

改动思路 / Approach

把已有原来源字段送到现有详情面板,比放大所有状态摘要或增加第二条读取路径更直接;没有新决策 owner。本 PR 的当前边界是 linked original-source Task 的完整依据显示,local request-only reader 的契约保留。

打开 Task 后仍由原来的来源路由读取 canonical Todo,再由现有解码器校验 Goal、Task 和 namespace。TaskRequest 把同一请求的 typed read result 交给 ContextDrawer,后者按当前 identity 选择内容。因此没有增加一次网络请求,也没有为了显示完整信息扩大状态轮询的摘要。Python 仅搬运已有字段,临时读取状态仍在 TypeScript。对旧服务省略字段与当前来源明确返回 null 的两种情况分别处理,有真实的独立升级边界;强制所有服务立即携带字段会破坏现有本机 reader。

具体改动 / Changes

本次 bounded bug fix 没有专用的书面 specification;依据是 PR 描述的已复现缺陷。已核对基线 4e949f405528fd8087f0623526c62f890c1ce982 的仓库 frontend delivery、design、来源与公开边界规则,未把未来 roadmap 作为当前合并义务。

关键代码讲解

  • loopx/presentation/goal_source_routing.py:77 的 _todo_detail 在既有来源校验之后增加 evidence/note 投影;读取失败仍走原有错误分支,linked source 没有获得编辑用的 review_basis。
  • apps/presentation/dashboard/src/data/chat.ts:652 的 readTodoRequest 仅增加 optional nullable 解码。旧的 local request-only response 仍被接受,Goal/Task/namespace 不符时仍会拒绝结果。
  • apps/presentation/dashboard/src/features/personal-workspace/task-request.tsx:20 的 TaskRequest 复用现有 abort、重试和保存后读回路径;共享 identity 让摘要变化和换 Task 时的旧数据失效,父面板通过稳定 setter 接收同一请求结果。
  • apps/presentation/dashboard/src/features/personal-workspace/context-drawer.tsx:126 的 ContextDrawer 只消费当前 identity 的 ready detail。字段缺席保留旧 reader 的摘要兼容,明确 null 则清除陈旧提示;证据与备注继续使用已有 Markdown 和 disclosure。

两处测试扩展了已有 durable fixtures:真实 SQLite 来源的 HTTP/CLI 检查 full strings、open/done、错 namespace、缺 Task、断开恢复与来源字节不变;生产包浏览器检查桌面和 390px 下完整文本、一次读取、旧字段缺席、明确 null、失败重试及迟到响应。现有本机 File/SQLite Task reader 和保存冲突/丢失响应恢复仍通过。全部六个文件为当前 PR 的一致结果,未加入原始 case 日志、私人截图或生成媒体。

对主干的风险 / Risks

最值得反驳的风险是把上一条 Task 的完整证据或备注显示到下一条来源下。当前代码保留 abort 检查,并在消费者处再次比较完整 identity;packaged negative path 实际释放迟到响应,下一条 Task 仍保留自己的证据且没有上一条备注。断开来源后的错误响应不携带完整字段,恢复后才读回原值。明确 null 与 absent 的测试避免“清空”被错误退回到旧摘要。

PASS:当前 head 的 26 项 native HTTP/CLI 测试、生产包 TypeScript/build、现有 packaged inspector 场景、Ruff、公开边界扫描、双语 RFC 检查、精确 CQR 和 premerge。相同 full-evidence assertion 在 immutable base frontend 上 FAIL,在修复 head 上 PASS,额外截图没有改变输入或断言。之前 smoke 的两次失败来自合成文本空白和摘要 ellipsis 的断言预期,后续保持完整内容/错误隔离条件并通过;没有放宽来源规则。

premerge 有一项位于改动外的 maintainability-ratchet advisory,gate 自身通过;此处保留该观察,不宣称独立证明其历史根因。CI 未查询,也没有用 CI 代替本地证据。浏览器的 synthetic HTTP fixture 不能证明生产服务可用性,因此另做了生产包与真实原 Task owner 的 GET-only readback;这仍不是安装生效的证明。No new authority、持久化状态或默认执行路径被引入;回滚不需要数据迁移。

我的整体评价 / Verdict

该 PR 是 justified increment:解决了真实详情内容丢失的问题,保留长期工作与后续打开/重试的来源一致性。它改善了获取完整依据的体验,新增确认、配置和人工复制轮次均为零;不把这一点宣称成 benchmark 结果或用户理解能力的实测提升。

完整证据保留原位置,备注继续按需展开;长要求、混合任务状态和窄屏下的支持信息可滚动到达。安装激活后的画面尚未验证;公开截图为生产包的合成夹具,真实来源截图保持私有。

把已有原来源字段送到现有详情面板,比放大所有状态摘要或增加第二条读取路径更直接;没有新决策 owner。本 PR 的当前边界是 linked original-source Task 的完整依据显示,local request-only reader 的契约保留。短 helper 保护两个消费者必须一致的身份比较,继续保留有独立部署输入证据的兼容分支是合理成本。字段和临时 read phases 复用既有 vocabulary,没有新增 Core obligation 或 benchmark 专用规则。当前没有阻塞 finding;来源慢读和安装切换仍是独立未完成项。评审只覆盖精确 head 92a5f2228ed82f618f9b1c4a7cd8079572d20592,合并前仍需独立的 readiness 与既有 maintainer 授权。

English verdict: APPROVE — head 92a5f22; no blocking finding. Complete original-source evidence/notes, compatibility and failure isolation are validated locally; installed activation and source latency remain separate gaps.

@loopx-agent
loopx-agent merged commit c63a8f9 into main Nov 8, 2026
10 of 12 checks passed
@loopx-agent
loopx-agent deleted the codex/product-engineer-20261108-082941 branch November 8, 2026 09:47
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.

1 participant