Repository navigation
Clarify shared judgments when comparing research reports - #7304
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 · max
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
APPROVE — b101f39952f6c4a9416241e77cc5745e95f033f7,不可变差异基线 d8de1cf5c490f7fa077d43cb23e3c1280773035b。 当前未发现阻断此源码修复的缺陷;自动检查、图片人工复核和真实后端/打包页面的验证边界分别列在下方。
动机
阅读新旧研究报告的用户需要知道两版是否存在可比较的判断项。 旧版在全部研究片段被重新划分后仍显示“0 项判断变化”;新版显示“无共同判断项”,共同项存在时给出分母,缺失信息保持未知。 这一区别关系到用户是否把“没有比较样本”误解为“旧结论仍然成立”。重复接续报告会累积这种误读,因此只显示变化列表长度还不够。
同一原生报告读取路径区分空交集、真实零变化和未知,不改变原报告或启动分析。 本次不证明模型理解、科学条件匹配、分析质量或真实长期成本收益,也不包含安装和合并。 科学比较、模型采用与阅读理解收益仍需原有研究资格验收;这不影响本次结构化计数修复的源码验收。
改动思路
分母与变化列表来自同一个既有 TypeScript 比较 owner;Python 只传递资格合格的两版结果,页面只选择显示标签,没有新增判断数据库或执行开关。 当前 PR 完成既有研究报告版本摘要的端到端结构语义修复,保留显式分析、原结果和恢复 owner。 现有比较函数已读取两版完整、资格合格的判断数组,直接复用它的共同项,避免页面重新推导适用条件或新增存储字段。一次遍历同时供分母和变化列表使用,是本次已应用的局部简化。
| 输入状态 | 新显示 | 保留边界 |
|---|---|---|
| 两版有共同片段/指标,标签相同 | 共同 N 项、变化 0 项 | 只陈述结构与标签 |
| 两版判断项无交集 | 无共同判断项 | 新增/移除项另列 |
| 任一结果不可用或旧投影缺字段 | 查看变化,展开后说明数量未知 | 不凭空补零 |
表格是源码行为说明,执行证据是下面的真实测试和读回。共同标识不证明同条件科学比较;目标/设置改变的原警告保留。这里没有新配置、后台分析、自动重跑、额度或权威状态迁移。
具体改动
完整差异为 12 文件,+110/-7。三个生产文件 +15/-5;其余是既有测试/夹具、8行契约说明和4张合成截图,没有新增生产模块。
compareTrajectoryAssessments仍先用原资格校验器处理两版,再按既有片段/指标键取交集。两版合格时计数可为0;缺任一输出时为null。变化列表复用同一交集,没有第二套比较规则。TrajectoryContinuation增加compared_pair_count: number | null。它是原结果派生的读投影,不是新的持久化事实、分析方法或人工声明。AnalysisContinuation在原报告入口区分缺失、零和正数;说明放在既有展开区,上一版、原覆盖、来源、片段与适用项仍能分别读取。- 未改动的
_continuation仍负责同 owner 的基础包读取与来源可用性;模型输出、分析键、权限和失败恢复继续归原 owner。测试增加空交集/部分交集及旧产物字节不变;浏览器场景补齐旧投影与中英文分支。共享演示后端只固定其已有旧方法夹具配置,避免继承不兼容的新生成默认值,不修改生产默认配置。
依据为改动前的 docs/reference/trajectory-assessment.md,版本 d8de1cf。逐项核对 Continuing a frozen analysis(两版覆盖、变更摘要和旧版可读)、Producer and consumer boundary(原 typed owner、显式分析及不可读基础证据的限制)、Explicit execution and readback(原任务/结果/来源与执行边界):均在本次源码范围落实。PR新增说明是待评审内容,没有拿它替代原规范。当前原生读取的空交集确为0,而原UI截图显示0项变化,说明修复针对可复现歧义。
对主干的风险
最危险的反例是把“没有共同项”或“基础结果无法读取”都当成零变化,或为展示计数重跑分析、覆盖旧报告。前者由有/无结果和不同交集测试区分,后者由原存储/进程 owner 和原结果字节保持测试约束。原完整判断数组经过资格校验,不能把提供者漏行的部分输出当作完整空集。结构上同ID的判断仍可能来自不同目标或方法,所以新文案没有声称因果、校准或匹配研究成立。
本轮独立验证:
- 精确 head 的 trajectory TypeScript 套件 29 passed,完整 control-plane typecheck 通过。不可变基线原套件 27 passed;同一冻结的新两项语义测试在基线 2 failed、head 2 passed,失败精确为缺少新分母。没有删除断言或放宽限额。
- 原生文件、进程与存储两模块 47 passed / 0 skipped,覆盖缺失/不可读基础、错误 owner/run、明确执行与重试、来源绑定及原结果/作业文件保持。合成进程输出用于可重复资格验证,没有调用付费模型。
- 正常完整 dashboard/Chat TSC 与构建通过。Ego 实际打包页面经真实 disposable HTTP/store/typed owner 读取两份已保存合成报告:中文空交集、390px键盘展开、英文空交集与旧字段缺失、已加载上一版及 Back 均已核验。旧投影测试只在本页传输层移除新字段,不伪造后端资格。原生夹具记录过 1次被405拒绝的POST尝试,未记录具体路由,不能声称零尝试;所有该夹具写路由均拒绝,所读来源字节不变,未从页面启动分析。初始错误查询参数和选择器问题留为评审夹具操作失败,修正后未改产品代码。
- 标准 premerge:5项直接检查、16项选中检查通过,0自动执行失败;总命令仍以
manual_review_required退出,保留4张二进制图片人工项,不能写成自动全绿。我逐张查看了1200×900、390×844前后图像,检查标准PNG块、无文本元数据和公开合成来源;没有私人工作内容。此前/此后图的构建边界以作者说明为准,本轮另独立构建并查看了当前 head 页面。
未查询、轮询或等待 GitHub CI。最新 main 相对差异基线的后续改动不触及本PR路径;这项观察不替代将来重基或变头后的重新验收。没有安装、合并、评分修改或真实研究作业。旧数据无需迁移;字段缺失分支服务于独立版本的旧后端投影,删除它会把未知错误地变成确定值。
我的整体评价
这是 justified_increment:一个完整、可回退的读语义修复,沿原有注册、报告和上一版入口交付,不只新增字段。long_horizon preserved:旧报告、作业、方法和费用身份保留,没有新增持续执行或隐式模型调用;user_experience improved:用户在原位置即可辨明没有共同样本还是共同样本未变化,不需要额外陈述、配置或确认轮次。
桌面仍以报告结论和观察/解释两列为主,版本差异保持一行折叠入口;窄屏纵向阅读,空交集和未知不再伪装成稳定结论,展开后原覆盖、来源和片段仍可读。 我同时检查了长摘要、两条发现、竞争解释、未知保留及失败候选的整体页面,展开内容没有以缩小字形换取密度;原方法、范围、哈希/标识类明细仍留在次级阅读层。未运行安装态 App、真实研究者理解实验或所有显示缩放;浏览器数据和分析进程输出为公开合成夹具,英文旧投影通过仅移除新字段的本页传输夹具验证。
提供的历史经验只作为“先读原任务、核对真实结果与最小用户路径”的提示采纳,以上判断来自当前 head,不继承旧案例的结论,也不声称已验证记忆效用。局部简化已经集中在一次交集推导;再建配置开关、计数存储或单独比较服务没有当前调用需求。图片人工项、独立安装/科学资格与维护者合并授权继续各自保留。
English verdict: APPROVE — b101f39952f6c4a9416241e77cc5745e95f033f7. The existing qualified comparison owner now distinguishes shared stable judgments, disjoint units and unavailable/legacy counts without a second state or execution owner. Independent checks: typed29, native47, immutable original27 and frozen comparison base2fail/head2pass, full typecheck/build, and actual packaged/native HTTP reader with narrow/legacy and loaded previous/Back. Premerge automatic checks pass5+16; four binary-image holds were manually inspected rather than relabeled automatic success. Synthetic provider/legacy transport and one refused unlocated fixture POST remain explicit limits. Scientific benefit, installed behavior, formal GitHub approval and merge authority are not claimed.
|
This pull request has merge conflicts with Choose the remote for the base repository, not an out-of-date fork. git fetch upstream
git rebase upstream/main
# Resolve each conflict, git add the resolved files, then git rebase --continue.
git push --force-with-lease origin HEADFor a same-repository clone whose Keep the DCO |
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
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 · max
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
APPROVE — e159a4f4e20a769ee600df684970c0b3a7e66fd3。 本次重新审查最终完整差异,目标 main 基线为 9b8adda2f04c285d1c13ecc90b3abba93202ebee;未继承旧 head 的结论。
动机
使用研究汇报的用户在比较前后两版结果时,需要知道两版是否真的包含相同的片段与指标。
原来重划研究片段后,即使两版没有共同判断,也会显示“0 项判断变化”;现在这条路径显示“无共同判断项”,有共同项时同时给出共同数量和变化数量,旧投影缺少数量时明确显示未知。
已验证的结果是读者能区分没有共同项、共同项未变化和比较数量未知,且仍能打开上一版并返回当前报告。
本次不改变模型执行授权、分析评分、冻结来源、持久化报告和失败用量,也不把结构数量当作科学质量或长程收益。
改动思路
共同数量与变化列表来自同一个已验证判断交集,继续由既有 TypeScript owner 负责,避免在前端或 Python 中复制比较规则。
当前交付边界是已有 continuation 读投影及研究汇报中的按需版本细节,模型执行和来源读取仍归原来的 owner。
入口仍是 Goal 的已保存研究汇报:原生存储读取两版,既有资格检查验证完整输出,Effect 中的比较函数生成投影,HTTP 把同一投影交给现有阅读器。数量由完整判断行导出,不由屏幕上显示了几行、排序或分页决定。Python 继续只处理来源与文件 I/O,前端只格式化事实。没有新配置、持久化声明、能力、执行策略或状态 owner。
| 输入条件 | 当前显示 | 可作出的判断 |
|---|---|---|
| 两版输出已验证,有共同片段/指标 | 共同 N 项 · 变化 M 项 | 仅说明这些共同判断的标签变化 |
| 两版输出已验证,没有共同项 | 无共同判断项 | 不能推断结论稳定 |
| 一版不可用,或旧投影缺字段 | 共同判断项数量未知 | 保留证据缺口 |
这个表说明源代码分支,不代替执行证据。只换一个“0”的文案不能识别这三种条件;另写一套前端或 Python 比较又会复制规则。因此当前修复范围与原问题相称。合入 main 时保留了先读汇报、按需查看版本的设计,旧 fixture-helper 改动已被 main 的实现取代,最终没有该文件差异。
具体改动
最终差异为 15 个文件、文本增加 106 行/删除 5 行:三个既有生产 TS/TSX 文件、一个参考文档、三个既有测试/场景文件和八张公开合成截图。四个 PR 分支提交均有 DCO sign-off。没有把原始脏工作区、私有运行状态、日志或生成包加入 PR。
关键代码讲解
compareTrajectoryAssessments先复用完整输出资格验证及同 Goal/case/run 限制,再计算同片段、同指标的交集。只有两版都可用才返回数字;同一交集也生成变化列表,避免分母与变化行各算一套。TrajectoryContinuation增加number | null的读投影字段,没有升级冻结输入、配置或 job schema。它是可导出的事实,用户无需手工维护,也不授予执行权。AnalysisContinuation先检查当前结果和基础结果是否可用;== null同时处理 null 与旧 JSON 中缺字段。三种文案放在既有“版本与变化”折叠区,上一版导航、警告、完整来源和返回路线保留。test_disjoint_research_units_have_zero_comparisons_without_overwriting_prior_result走真实注册、执行和 inspect 路径,验证 0 共同、1 新增、1 移除及旧 job 每个文件的字节不变;provider 输出为确定性合成内容。
规格依据为 docs/reference/trajectory-assessment.md,不可变版本 9b8adda2f04c285d1c13ecc90b3abba93202ebee(按改动前已接受文本判定,新增说明不能反向证明自己):
Continuing a frozen analysis:implemented。原有完整复核、上一版/浏览历史、失败不覆盖有效基础结果与读取不启动分析的约束,由原生 store/API 和 packaged 全场景验证。Coverage and interpretation:implemented。缺失保持未知;零共同项不再表示零变化;文档明确结构数量与标签变化不能证明质量或匹配科学条件。类型与浏览器覆盖共享、分离、部分交集和旧投影。Producer and consumer boundary:implemented。继续复用 benchmark-toolkit 的 TypeScript owner、Effect 分发及原生 IO 适配器,没有平行决策实现或新执行入口。
对主干的风险
最重要的负例是基础结果缺失或来源撤销时,把“无法比较”错当成合法的零。比较函数的双输出条件、原生 usable-base 检查和前端可用性/null 检查共同阻止该路径。不同 Goal/case/run 仍被拒绝;旧结果和执行成本不随新版本重写。字段仅为派生读投影,保留旧 wire 数据缺字段的分支有实际兼容需要,不需要新增迁移或旧 writer。
在此精确 head 独立运行:29 个 TypeScript 轨迹测试、63 个原生进程/store/HTTP 测试、完整 control-plane typecheck、desktop/chat build、配置的全范围 Ruff,以及完整 packaged research-history 场景全部通过。场景耗时 32.398 秒,覆盖中英文、旧投影、上一版/Back、失败/重试及默认折叠。固定的两条新比较测试在不可变基线 69f876f9c95c624cbf7ea95a19bc218202575890 上失败,最终套件通过;后续 main 的 Lark 改动未改变这些比较源码/测试。原生浏览器另有源文件哈希不变、零 mutation attempts 的读回,复用范围只限最终字节一致的比较 owner。
标准 premerge 的五项 direct checks 与十六项 selected checks 全通过;原始总状态仍为 manual_review_required,八张二进制图片不是自动隐私通过。我已逐张检查 before/after 默认、展开的桌面与手机原图,并检查 PNG chunk:仅 IHDR/iCCP/IDAT/IEND,没有文字、EXIF 或本机路径元数据。像素只含公开合成研究样本。七个变更文本的显式 public-boundary scan 完成且干净。组合 loopx check 另报告了当前主机旧 registry 的 canonical-authority 诊断;不声称整个 registry 健康检查通过,也未为此修改任何活跃状态。必需的 premerge boundary runner 已通过。
语义与 CI 对齐
这是复用现有 owner 的可空数字投影扩展,没有新增枚举、泛化义务、Agent 生命周期或授权语义。diff-scoped advisory 已检查,完整 semantic drift smoke 通过。不存在 opt-in/default-off 的新增主张;原来的显式分析执行门保持,读取、刷新及报告可用性不启动模型。文档说明属于事实解释,没有把强制执行条件包装成建议。
按本次解析的 Goal 策略 wait_for_ci=false,没有继续抓取、轮询或等待 CI;审查依据是当前本地原生证据。历史命令路径、fixture/schema 设置错误保留为失败记录,最终支持的场景覆盖相关条件,不把它们改写为成功。构建的大 chunk 提示仍是提示;未调高任何硬门限。没有运行安装、发布、付费模型或 benchmark 实验。
我的整体评价
本次交付判断为 goal_achieved:修复了已接受范围中的误导性比较,并与当前 main 的报告优先布局整合。长程维度是 preserved,证据是有界多版本与重试中旧结果、失败、来源和用量保持;不宣称长程 benchmark 效果提升。用户体验是 improved:读取既有报告不增加必需的确认或澄清轮次,版本细节仍按需打开。
已检查默认与展开的桌面、手机整页:报告仍是默认阅读重点,版本细节默认折叠;展开后“无共同判断项”与新增、移除范围同时可读,长报告保留证据、未知项与下一步实验入口。
未验证已安装桌面应用、真实研究者理解度和净效率;只读预览中既有的可读报告与不可执行警告混用仍是独立遗留问题。
公开截图确实同时显示“报告可读”和既有“分析暂不可用”警告;改动前后均存在,PR 已记录该只读执行与来源可用性混用的独立问题,不把它说成修好或新的比较回归。默认页不被版本表格占据;手机展开细节需要正常纵向滚动,原文和上一版仍可到达。
代码量必要且可逆;已做的局部整理是让交集同时服务数量和变化列表,不引入新框架。没有阻断当前比较修复的发现。此次 APPROVE 使用作者自己的 COMMENTED review,不等于 GitHub 正式自批准;自合并仍需独立的当前用户授权和紧接其后的同 head readiness。八张图片的人工检查结果在本审查记录中,原始 canary 总状态保持原样。安装行为、研究理解度和净效率不在此结论内。
English verdict: APPROVE — e159a4f. The existing typed continuation owner now distinguishes shared, disjoint and unknown comparisons while preserving report-first disclosure and prior results. Independently rerun 29 typed tests, 63 native/API tests, full packaged browser, builds/typechecks and required local gates passed; all eight image holds were inspected separately. Existing read-only availability wording remains a disclosed pre-existing limitation. CI was not consulted under the resolved no-wait policy. Merge still requires unchanged-head readiness and owner authority.
Comparing reports after their research units have been reframed could show 0 changed judgments even when no episode/metric pairs were shared. That made absence of a comparison look like stable conclusions.
The existing TypeScript continuation owner now exposes a nullable shared-pair count. The reader distinguishes No shared judgments, N shared judgments · M changed, and an unknown count when either qualified output or an older projection lacks the information. Added/removed eligible pairs remain separate. These are structural version facts; they do not establish matched scientific conditions or analysis quality.
The conflict resolution preserves the current main reader: report content leads, Version and changes stays folded by default, and previous-version navigation, complete provenance and warnings remain available. The old fixture-helper change is already on main and introduces no helper diff here.
复核研究单位改变后的报告时,“0 项判断变化”容易被误读为结论未变。本次区分“无共同判断项”“共同 N 项、变化 M 项”和“数量未知”;保留主线先读汇报、按需展开版本变化的布局,旧报告与失败、用量不覆盖。
Validation
Visual evidence
Tested revision:
e159a4f4e20a769ee600df684970c0b3a7e66fd3, PR basemainfetched at9b8adda2f04c285d1c13ecc90b3abba93202ebee. Before assets are from main61b83ac745a49f9eafadd7b87b085d567a9dca11; the affected reader sources are unchanged between those main revisions. After captures use the resolved reader sources, identical to the final head. Both use the same populated synthetic fixture and real isolated source-packaged HTTP/store path. This is not installed-product, research-comprehension or net-efficiency qualification.Primary question: can the researcher tell whether the two reports actually share judgments? The default view retains the report-first composition; expanded desktop and phone views show the difference between a misleading zero and no shared rows at 16px text, without horizontal overflow. Source hashes stayed unchanged and both read-only viewers recorded zero mutation attempts.
Both before and after also show a pre-existing “analysis temporarily unavailable” warning despite the saved report being readable. The reader currently conflates read-only execution with source unavailability; this separate gap remains open, and this PR does not claim to fix it.
Independent exact-head review: approval conclusion. All eight binary-image holds were checked in that review. Merge requires unchanged-head readiness and owner authority; installed-product qualification remains outside this PR.