Find accepted team reports beyond the first inventory page - #4972
Conversation
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>
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>
Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com>
Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com>
huangruiteng
left a comment
There was a problem hiding this comment.
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
Exact head: 997225df38a3f4a94bf1452da8aabd9331839694.
动机
原 Goal 对话的团队成果阅读器过去只读首个 delegation inventory 页:前页若只有未完成或无法核验的工作,后页已有验收报告也不会默认呈现。按 live-team workspace RFC 的边界,本 PR 交付的是可定位、可回读的报告,不是整队执行、请求方采用或整个 Goal 完成。我认为这是一个可独立验证的有用切片。
改动思路
沿用现有 requester-scoped fetchLoopXTeamWork 和 exact-operation readLoopXTeamWork;后端仍决定 accepted 状态和游标顺序,前端只做有界发现与展示。首次最多自动查三页,用户可主动继续至十页;每次从第一页重新读取以取得当前观察,并保留“还有未检查工作”与无法核验提示。具体报告仍由操作 ID、引用和哈希逐一核验,generation fence 防止旧响应覆盖新会话。
具体改动
goal-team-results.tsx 的 list 改为累积页面、校验游标推进、选择第一份可读的已验收产物;load 维持原有的精确版本读回,read 维持显式选择的失败不回退规则。列表与范围提示随已检查页数更新。中英文 RFC 同步说明三页自动、十页手动及其非全量语义;team-evidence 场景覆盖第二页验收、首个不可读记录、重复游标清空旧报告;随附 chat bundle、入口和 asset-retention 与源码构建一致。
对主干的风险
主要成本是手动继续时从第一页重复读,最多十页但仍为只读且有界。重复或倒退游标会报错并清空旧报告,不会把旧报告伪装成当前验收。非阻断 P2:点击“继续查找成果”时 list(true) 清除 chosen,随后从所有已读页重新选第一份报告;若用户刚显式选择了后页产物,展开下一页会意外跳回第一页报告。建议在扩展列表时保留并精确复验当前选择,或明确将按钮定义为导航到新页。它不改变后端验收权威,也不阻断本 PR 所解决的“首批无可读结果”场景。
独立验证:精确 head 的 packaged personal-workspace browser smoke 九个场景通过;build:chat(含 TypeScript 检查)与 base-to-head git diff --check 通过。测试 HTTP 响应是合成的;我另行核对既有 delegation inventory 后端按 record ID 递增生成游标。按本 Goal 的 wait_for_ci=false 配置,未轮询远端 CI。未把本切片视作混合团队完整旅程的验收。
我的整体评价
APPROVE。改动放在现有 reader owner 内,没有增加第二套验收或分页 authority;可观察结果、失败清空和范围提示与声明一致。上述展开时选择重置值得小幅改进,但属非阻断体验问题。相关的前瞻性收敛已检查:继续复用现有 inventory/read 契约即可,不需要新端点或通用状态层。本结论仅对应上述 head,不授权自行合并。
English verdict: APPROVE - exact head 997225df38a3f4a94bf1452da8aabd9331839694; bounded later-page discovery and stale-reader failure path passed packaged browser, TypeScript bundle, and diff checks. Preserve explicit selection on page expansion as a non-blocking P2 follow-up.
Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com>
Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com>
huangruiteng
left a comment
There was a problem hiding this comment.
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
Exact head: b89525577c47beed971e86365e84c72f16811062.
动机
原 Goal 对话的团队成果阅读器过去只读首个 delegation inventory 页:前页若只有未完成或无法核验的工作,后页已有验收报告也不会默认呈现。按 live-team workspace RFC 的边界,本 PR 交付的是可定位、可回读的报告,不是整队执行、请求方采用或整个 Goal 完成。我认为这是一个可独立验证的有用切片。
改动思路
沿用现有 requester-scoped fetchLoopXTeamWork 和 exact-operation readLoopXTeamWork;后端仍决定 accepted 状态和游标顺序,前端只做有界发现与展示。首次最多自动查三页,用户可主动继续至十页;每次从第一页重新读取以取得当前观察,并保留“还有未检查工作”与无法核验提示。具体报告仍由操作 ID、引用和哈希逐一核验,generation fence 防止旧响应覆盖新会话。
具体改动
goal-team-results.tsx 的 list 改为累积页面、校验游标推进、选择第一份可读的已验收产物;load 维持原有的精确版本读回,read 维持显式选择的失败不回退规则。列表与范围提示随已检查页数更新。中英文 RFC 同步说明三页自动、十页手动及其非全量语义;team-evidence 场景覆盖第二页验收、首个不可读记录、重复游标清空旧报告;随附 chat bundle、入口和 asset-retention 与源码构建一致。
对主干的风险
主要成本是手动继续时从第一页重复读,最多十页但仍为只读且有界。重复或倒退游标会报错并清空旧报告,不会把旧报告伪装成当前验收。非阻断 P2:点击“继续查找成果”时 list(true) 清除 chosen,随后从所有已读页重新选第一份报告;若用户刚显式选择了后页产物,展开下一页会意外跳回第一页报告。建议在扩展列表时保留并精确复验当前选择,或明确将按钮定义为导航到新页。它不改变后端验收权威,也不阻断本 PR 所解决的“首批无可读结果”场景。
独立验证:在堆叠基线 #4960 (8fe2cf3) 与精确 head 上,packaged personal-workspace browser smoke 九个场景、build:chat(含 TypeScript 检查)、base-to-head git diff --check 均通过;使用 Node 24.21.0。测试 HTTP 响应是合成的;我另行核对既有 delegation inventory 后端按 record ID 递增生成游标。按本 Goal 的 wait_for_ci=false 配置,未轮询远端 CI。未把本切片视作混合团队完整旅程的验收。
关键代码讲解
GoalTeamResults.list 用连续游标拉取有界页面并在重复/倒退时清空旧读回;GoalTeamResults.load 按既有精确 operation/ref/hash 读取报告;GoalTeamResults.read 保持显式选择的失败不回退语义。三者仍只是展示层,不写后端验收状态。
我的整体评价
APPROVE。改动放在现有 reader owner 内,没有增加第二套验收或分页 authority;可观察结果、失败清空和范围提示与声明一致。上述展开时选择重置值得小幅改进,但属非阻断体验问题。相关的前瞻性收敛已检查:继续复用现有 inventory/read 契约即可,不需要新端点或通用状态层。本结论仅对应上述 head;此 PR 依赖 #4960 的合并顺序,且涉及运行时 UI,不授权自行合并。
English verdict: APPROVE - exact head b89525577c47beed971e86365e84c72f16811062; bounded later-page discovery and stale-reader failure path passed packaged browser, TypeScript bundle, and diff checks. Preserve explicit selection on page expansion as a non-blocking P2 follow-up.
huangruiteng
left a comment
There was a problem hiding this comment.
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
Exact head: b89525577c47beed971e86365e84c72f16811062; stacked base: 8fe2cf3376a4bf3e3c633df512a14c12aa05577d (#4960).
动机
Goal Chat 已有按原请求方读取已验收团队报告的能力,但原来的成果区域只看委派清单第一页。若前面的记录未完成或不可读,后面已经通过验收的报告会在原会话中消失。本 PR 的完整增量是让这份报告可发现、仍以精确操作和产物摘要核验,并诚实说明未检查的工作;它没有完成托管非 Chat 成果、整队快照或停止能力。
改动思路
继续使用现有的请求方作用域委派清单和精确操作读取:首屏最多自动查三页,没有结果时用户可显式继续到十页。清单决定候选,原有 readLoopXTeamWork 仍决定当前验收及产物版本;UI 不把运行记录或 Todo 完成当作成果。相比新建服务端聚合或无界扫描,这个改动落在既有成果 reader,保留了责任边界和请求数量上限。
具体改动
goal-team-results.tsx 将单页状态改为有界页面集合,顺序使用服务端升序的 64 位游标,遇到缺失、重复或倒退游标时清除旧报告并报错。它保留原有明确选中的操作、文件名和摘要,刷新时重新读取同一产物;不可读的记录和未检查的页面分别显示提示。team-evidence.mjs 增加第二页已验收报告及坏游标的打包浏览器场景。双语 RFC 更新了本切片的范围,随代码更新的 Chat bundle、入口与资源保留清单构成实际交付。
关键代码讲解
GoalTeamResults(第 12 行)在原会话持有已检查页面和精确选择,避免把页面数量当作团队完成度。list(第 51 行)负责有界翻页、游标前进检查和失败时清空报告;自动加载不抢键盘焦点。load(第 28 行)沿用精确操作读取,只有操作、验收状态、文件名和摘要仍匹配时才展示报告。
对主干的风险
主要代价是首次找不到报告时会增加至多两次清单请求,用户主动继续最多十页;页面仍是实时清单,不是原子快照,新增或变动的较早记录要刷新后再发现。坏游标、验收变化和不可读记录不会变成成功展示。最强反例用同一打包浏览器脚本在旧 base 和新 head 执行:旧版等待第二页报告超时,新版约 10 秒通过,并在重复游标时移除旧表格、显示告警。新 head 的 TypeScript 检查通过;已有精确差异质量回执和 premerge 覆盖见 PR 描述。浏览器场景用合成 API 页数据,真实委派清单的升序游标和请求方边界另经源码核对;高并发真实日志的跨页一致性不在此 PR 的证明范围。
我的整体评价
APPROVE。这个切片修复了原会话的真实可见性缺口,复用既有委派和验收 owner,没有新增持久状态或权限面。前瞻性精简检查未发现需要抽出的第二层 reader;后续托管非 Chat 成果仍需独立的产出绑定与 CLI/UI 验收。本结论只覆盖上述精确 head。
English verdict: APPROVE - exact head b89525577c47beed971e86365e84c72f16811062; bounded requester-scoped paging reveals a later accepted report without weakening exact artifact readback. Packaged baseline/head regression and TypeScript passed; managed non-Chat output remains separate.
…h-20260924 Show only verifiable outputs in Goal Files
…h-journey-20260924 Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com> # Conflicts: # apps/presentation/dashboard/src/features/personal-workspace/goal-team-results.tsx # docs/architecture/rfcs/live-team-workspace-v0.md # loopx/web/chat/asset-retention.json # loopx/web/chat/assets/index-BSP1u_Yt.js # loopx/web/chat/assets/index-NEepBZD-.js # loopx/web/chat/index.html # tests/control_plane_ts/deferred_hard_lease_lifecycle.test.ts
huangruiteng
left a comment
There was a problem hiding this comment.
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
Reviewed exact head: d38b6657d43510d98378e7dfcf5e49d61a4d9615
This review covers the slice approved in review 5298873079 on head b89525577c47beed971e86365e84c72f16811062, the follow-up commits that brought the same reader into Goal Files, and the merge of latest main.
动机
原会话与 Goal Files 过去只看委派清单第一页:若前面的记录未完成或不可读,后面已经通过验收的报告就不可见。同时运行与验证观测会被当成“文件”展示,模糊了已交付成果和执行状态的区别。本 PR 的完整增量是让这份报告可发现、仍以精确操作与产物摘要核验、并诚实呈现未检查与不可读的工作。
改动思路
继续使用现有请求方作用域委派清单与精确操作读取:首屏最多自动查三页,没有结果时用户可显式继续到十页。清单只决定候选,原有精确读取仍决定当前验收与产物版本;Goal Files 复用同一个成果 reader,而不是新增第二个结果读取或持久化字段。执行观测不再进入已交付文件。
具体改动
goal-team-results.tsx:单页状态改为有界页面集合,按服务端升序游标前进,遇到缺失、重复或倒退游标时清除旧报告并报错;保留明确选中的操作、文件名与摘要,刷新时重读同一产物。合并main时同时保留本分支的有界翻页与主干新增的采用摘要。personal-workspace-page.tsx:Goal Files 的成果区在团队会话就绪时打开同一GoalTeamResults,读取失败显示可重试告警并清除旧报告。dashboard-page.tsx与projection-localization.ts:移除运行/验证观测文案与 run evidence 构造,避免把执行状态呈现为已交付文件;i18n.tsx同步中英文文案,说明运行与验证状态请在任务中查看。team-evidence.mjs、typed-actions.mjs:打包浏览器场景断言第二页已验收报告无需再点即可发现、Goal Files 能读到同一产物、运行观测不出现在文件列表、团队读取失败清空报告、重复游标清空表格、移动端可读。- 合并
main(120 个提交)。主干已把生成的 Chat 产物移出 Git,因此合并保留删除、按前端交付策略在合并后的源码上重建并校验 bundle;冲突处保留双方语义(采用摘要 + 有界翻页)。
对主干的风险
主要代价是首次找不到报告时会增加至多两次清单请求,用户主动继续最多十页;页面仍是实时清单,不是原子快照。坏游标、验收变化与不可读记录不会变成成功展示,运行观测也不再冒充交付文件。改动没有新增持久状态、权限面或服务端协议,复用既有委派与验收 owner;真实混合模型发起执行与高并发真实日志的跨页一致性不在本 PR 的证明范围。
我的整体评价
这个切片修复了原会话与 Goal Files 的真实可见性缺口,并顺带纠正了“执行观测当作交付文件”的呈现问题;边界清晰、复用既有判定权威。该改动属前端/产品表面,按仓库策略通常应由维护者合并,这里依仓库所有者指示作自合并并公开上述边界与证据。
Validation on this head: dashboard tsc --noEmit passed; npm run smoke:projection-localization passed; chat bundle rebuilt from source and verify --source passed; packaged browser smoke passed all 10 scenarios, including the second-page accepted-report discovery, Goal Files readback, failed-read clearing, repeated-cursor clearing and mobile readability assertions; tests/presentation/test_chat_bundle.py 14 passed; loopx canary premerge --from-git-diff selected smokes and the public-boundary scan passed; change-quality receipt cqr_98b0ead2b092806d4bad valid. Generated assets stay out of Git per docs/development/frontend-delivery.md. Remote CI was not awaited (wait_for_ci=false).
English verdict: APPROVE - head d38b6657d43510d98378e7dfcf5e49d61a4d9615; bounded requester-scoped paging reveals a later accepted report in both the original conversation and Goal Files without weakening exact artifact readback, run observations no longer masquerade as delivered files, and the rebuilt packaged bundle passes the browser, bundle-contract and typecheck gates.
…h-journey-20260924 Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com>
…h-journey-20260924 Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com>
huangruiteng
left a comment
There was a problem hiding this comment.
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
Reviewed exact head: f33ccb979351af492fe299bc02762d68728ab7f0
This review covers the slice approved in review 5298873079 on head b89525577c47beed971e86365e84c72f16811062, the follow-up commits that brought the same reader into Goal Files, and the merge of latest main.
动机
原会话与 Goal Files 过去只看委派清单第一页:若前面的记录未完成或不可读,后面已经通过验收的报告就不可见。同时运行与验证观测会被当成“文件”展示,模糊了已交付成果和执行状态的区别。本 PR 的完整增量是让这份报告可发现、仍以精确操作与产物摘要核验、并诚实呈现未检查与不可读的工作。
改动思路
继续使用现有请求方作用域委派清单与精确操作读取:首屏最多自动查三页,没有结果时用户可显式继续到十页。清单只决定候选,原有精确读取仍决定当前验收与产物版本;Goal Files 复用同一个成果 reader,而不是新增第二个结果读取或持久化字段。执行观测不再进入已交付文件。
具体改动
goal-team-results.tsx:单页状态改为有界页面集合,按服务端升序游标前进,遇到缺失、重复或倒退游标时清除旧报告并报错;保留明确选中的操作、文件名与摘要,刷新时重读同一产物。合并main时同时保留本分支的有界翻页与主干新增的采用摘要。personal-workspace-page.tsx:Goal Files 的成果区在团队会话就绪时打开同一GoalTeamResults,读取失败显示可重试告警并清除旧报告。dashboard-page.tsx与projection-localization.ts:移除运行/验证观测文案与 run evidence 构造,避免把执行状态呈现为已交付文件;i18n.tsx同步中英文文案,说明运行与验证状态请在任务中查看。team-evidence.mjs、typed-actions.mjs:打包浏览器场景断言第二页已验收报告无需再点即可发现、Goal Files 能读到同一产物、运行观测不出现在文件列表、团队读取失败清空报告、重复游标清空表格、移动端可读。- 合并
main(120 个提交)。主干已把生成的 Chat 产物移出 Git,因此合并保留删除、按前端交付策略在合并后的源码上重建并校验 bundle;冲突处保留双方语义(采用摘要 + 有界翻页)。
对主干的风险
主要代价是首次找不到报告时会增加至多两次清单请求,用户主动继续最多十页;页面仍是实时清单,不是原子快照。坏游标、验收变化与不可读记录不会变成成功展示,运行观测也不再冒充交付文件。改动没有新增持久状态、权限面或服务端协议,复用既有委派与验收 owner;真实混合模型发起执行与高并发真实日志的跨页一致性不在本 PR 的证明范围。
我的整体评价
这个切片修复了原会话与 Goal Files 的真实可见性缺口,并顺带纠正了“执行观测当作交付文件”的呈现问题;边界清晰、复用既有判定权威。该改动属前端/产品表面,按仓库策略通常应由维护者合并,这里依仓库所有者指示作自合并并公开上述边界与证据。
Validation on this head: dashboard tsc --noEmit passed; npm run smoke:projection-localization passed; chat bundle rebuilt from source and verify --source passed; packaged browser smoke passed all 10 scenarios, including the second-page accepted-report discovery, Goal Files readback, failed-read clearing, repeated-cursor clearing and mobile readability assertions; tests/presentation/test_chat_bundle.py 14 passed; loopx canary premerge --from-git-diff selected smokes and the public-boundary scan passed; change-quality receipt cqr_98b0ead2b092806d4bad valid. Generated assets stay out of Git per docs/development/frontend-delivery.md. Remote CI was not awaited (wait_for_ci=false).
English verdict: APPROVE - head f33ccb979351af492fe299bc02762d68728ab7f0; bounded requester-scoped paging reveals a later accepted report in both the original conversation and Goal Files without weakening exact artifact readback, run observations no longer masquerade as delivered files, and the rebuilt packaged bundle passes the browser, bundle-contract and typecheck gates.
Merge decision (author-owned PR; admin bypass)Requested change: addressed. The slice approved in review 5298873079 is now merged together with the follow-up that brings the same reader into Goal Files, and exact-head review 5302570050 is published on the merged head.
Repair and integration content: Validation on this head: dashboard Attributed or pre-existing failures: none on this slice. One environment note: the packaged smoke spawns its own interpreter and would otherwise pick the host Carried limits: the inspected pages are a live inventory, not an atomic snapshot, so newly added or changed older records need a refresh; launching real mixed-model execution and high-concurrency cross-page consistency remain outside this PR. This is a frontend/product surface, which repository policy normally leaves to the maintainer; it is self-merged here on explicit owner instruction, with the evidence above published. |
Problem and result
An accepted team report could be present in the requester’s Goal but absent from the original conversation when earlier inventory pages contained only unfinished or unreadable work. The result reader now searches up to three live requester-scoped pages for its first accepted artifact, then offers explicit continuation up to a ten-page bound. It preserves exact artifact selection and readback, states when records or pages remain unverified, and clears the previous report if pagination stops advancing.
This is a Goal Chat result-discovery improvement. It does not claim a complete team snapshot, launch members, stop workers, or close the broader live-team acceptance journey.
Dependency and validation
Stacked on #4960, which raises the minimum Node runtime to 22.22.3 with fixed SQLite. The previous base's Node 22.18 run could not qualify SQLite-dependent tests; this combined branch passed the packaged browser
team-evidencescenario and seven File/SQLite admission tests on Node 22.22.3 with zero skips. TypeScript and production Chat build passed. Earlier standalone validation also passed all nine packaged workspace scenarios and the PWA retention smoke.Exact stacked diff: seven changed paths; change-quality receipt
cqr_6219d02a8fc9da99bc4evalid; premerge passed three direct and 16 selected checks, with no failures or manual holds. The updated branch and base are for maintainer review; the Node-forward optional lane on #4960 is still failing by its 20-minute timeout, while required checks passed.Visual evidence
The later-page accepted report appears in the original Goal conversation, with an unreadable earlier record called out. Packaged desktop and 390px browser captures showed the source link readable; automatic discovery did not move keyboard focus, and a broken cursor removed the prior report with an alert.