Repository navigation
fix(site): repair time machine publication checks - #6684
loopx-agent wants to merge 2 commits into
Conversation
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; model=gpt-6.1-sol; provider=OpenAI; runtime_reported; reasoning_effort=max
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
完整评审 6684@acc16b42cf459eb389f39dcdaebbaeef795d311e,实际基线 c9c3adf63f9771ef95f1fcca12b11ed7de1f69eb。APPROVE,未发现阻塞项,限于这一文件的生产发布验证修复。
动机
维护公开站点的作者需要让已批准的真实阅读路径通过正常发布验证,访客才能在后续正常部署后到达体验。旧 smoke 仍要求第六张研究卡指向 Showcases,页面已经合法改为 Time Machine,因此完整产物在导航断言处失败。现在既校正明确路由预期,也从真实首页键盘进入并核对三场景、结果、原文及错误重试。
同一自行正常构建的完整产物,原主干 smoke 在旧第六卡断言失败,当前完整 smoke 通过 EN/ZH、1440/390、三案例及404恢复,并检查190条发布链接。
本 PR 不改变页面源码、研究数据、后台、工作流、权限、调度或任何实验;不宣称线上部署和真实访客采用已完成。
既有失败来自被遗漏的真实生产调用点;仅通过导出、SEO 或自定义 UI 检查不能证明正常发布链路。新代码没有让用户重新安装、提供资料或批准界面,也没有绕过门禁,只是在同一个发布检查中验证已接受的阅读任务。
改动思路
沿用原 dashboard-frontstage-browser-smoke.mjs 的真实产物、HTTP server、browser/page 和 EN/ZH×1440/390 循环,增加一个局部 assertTimeMachineJourney,既纠正明确的路由 oracle,又用源记录独立校验结果。Inspect 的真实 owner 在 requestAnimationFrame 中转移焦点;最新头先等待原文标题真正获焦,再发 End,并等待最后原文完成渲染。这里等待可观察状态,没有 sleep、额外重试或增加 timeout。原静态无 JS、字体延迟、fragment/history、旧书签、私有请求拒绝及文档链接检查均保留。
架构与范围判断:只是既有生产验证 owner 的有界修复;页面、数据、后台、工作流及权限均没有变化。可直接复用当前 runner,抽一个本地 helper 已足够,没有新 catalog、第二套服务器或测试框架。若只替换 Showcases 字符串,后续结果/原文/重试断开仍可能被放行,因此这些增量覆盖有真实价值。旧 Showcases 没有被删出发布链接检查。
具体改动
先阅读接受规范 apps/presentation/site/README.md @ c9c3adf63f9771ef95f1fcca12b11ed7de1f69eb:LoopX Public Website 的公开/语言/部署基址、Time Machine 的选择→实际结果→原文、键盘/窄屏和失败恢复、Search publication 的完整发布工件与来源边界。三项在本修复范围均有证据。整个 source UI/data 与主干相同,既有 root-base/history/reload/改写捕获的真实浏览器证据经源码失效检查后复用;本次另跑生产 /loopx/ 完整产物,不把复用说成本轮重测。
关键代码讲解
assertTimeMachineJourney先从真实首页 focus/Enter 进入,校验中文分享 URL。三个结果 ID/76、134、105条数量来自固定公开源;选择后显示记录数字,两种选择保持同一历史结果标题。点击原发现后 summary 与磁盘源逐字相等,再用 cursor End 核对最后一条原文并返回问题焦点。- 同 helper 的 HTTP404 分支先 reload/换到 Portfolio,要求 alert、0个旧结果、2个禁用选择,再点击真实重试并读回13.84。只拦截一次缺失请求,恢复阶段实际读取正常导出字节;没有把 mock 输出塞给页面状态。
- 第312行原六卡列表只将最后一项替换成接受的时光机双语路由;现有四组合循环调用 helper。完整发布链接遍历增加两个语言入口,两版 Showcases 继续保留,没有靠减少验证范围抹掉旧红灯。
完整 diff 为1文件 +64/−2;其中60行局部 helper 共用原服务器及循环。查过现有源完整性测试和作者当前公开批次:这是对已合入功能的实际发布失败修复,并非另开重复演示、raw fixture 或无效 smoke。前瞻整理已体现在局部 helper 中,未发现需要追加抽象或后继任务的理由。
对主干的风险
最应反证的是“改了预期链接,真实阅读或发布仍失败”。我从当前精确源码独立运行普通 exporter、主文档和中英文两本 Developer Book 的 strict 构建、恢复案例页、完整产物 SEO,再把同一产物交给不可变 base 与当前 smoke。base 在旧第六卡断言处退出1,保留原失败;head 全程退出0,三案例、两选择、原发现/末条原文/返回、四语言尺寸组合和404失败关闭→真实重试均通过,最后实际检查 190 条发布链接。
没有修改产品来配合测试。源码树与全部公开 capture 字节未变,315条原记录的原意未升级为科学结论。新断言是机器验证,不是“建议”;没有新 typed/shared vocabulary、默认关闭开关、生命周期或权限语义。one-shot404 是明确故障注入,normal assembled UI/source 不是 API mock。
Node syntax、advisory 后的完整 semantic、4项 direct+5项 selected 原生检查及公开边界扫描通过。第一次 MkDocs 命令因本地缺文档依赖未启动构建,按仓库 docs/requirements-docs.txt 补足隔离环境后,三次 strict 构建通过,原设置失败保留。原生 canary 总 gate 在本独立 reviewer workspace 仍报 quality_receipt_missing,不声称整体 merge gate 已通过,也不继承作者其他工作区的 receipt。
作者披露先前候选有 cursor32≠76,CI的确切焦点时序未记录;本地旧候选一次全量通过也保留,没有用它抹掉该历史失败。已读取实际 Inspect 焦点 owner,并对更新后的精确 head 独立重跑完整生产脚本;原产品/产物/文档树完全相同才复用此次正常构建。当前焦点完成及末条渲染断言为真,但没有假称复现CI当时的具体调度。
按当前策略未查询、轮询、等待或触发远程 CI;无 agent 合并/部署。历史 Pages 失败仍是失败,本次修复资格不代表公网已更新。测试 finally 只关闭其自有 browser、Vite child 和 static server。
我的整体评价
APPROVE。 正常生产调用点的对照执行支持这个独立可回退的修复:原来错误拒绝已接受页面,现在检查真实读者结果和恢复,并保留原覆盖。long_horizon 为 preserved:运行时和承诺不变;user_experience 为 improved:正常发布维护路径恢复且获得有用旅程覆盖,未增加本人操作。原产品 Task、实际部署采用、科学收益与其他宿主验收都没有因此被核销。后续合并资格及维护者授权仍独立判断。
English verdict: APPROVE - acc16b4; same independently assembled production artifact fails the original stale-card assertion and passes the complete updated browser smoke, including EN/ZH desktop/mobile, source readback, HTTP404/retry and190 publication links. One-file validation repair; hosted deployment and merge qualification remain separate.
Goal And Delivered Outcome
The Pages run after #6682 rejected the sixth research card because its browser oracle still expected Showcases. Update the oracle to the approved Time Machine entry and validate its complete visitor journey.
The first candidate run then failed at cursor
32 != 76: End could race the inspect handler’s queued record-heading focus. Wait for that focus before sending End, then require the final original record to render. A controlled pending-focus fixture reproduces the same failure on the prior helper and passes with these waits; CI did not record its precise focus schedule.Related to #6682. Base:
mainatc9c3adf63f9771ef95f1fcca12b11ed7de1f69eb.Author Declaration
Written by: model_agent — Codex, GPT-6 family, OpenAI. Specification: the two reproduced publication failures and the shipped journey in
apps/presentation/site/README.mdat the base revision above.Scope And Continuation
One existing publication smoke changes. Its local journey helper reuses the current artifact/server; existing Showcases publication coverage stays. The amendment adds observable waits without sleep, retries or a larger timeout. This is the bounded related simplification; a new runner/catalog adds no value.
The scoped repair is complete for review. The final-head Pages build now passes, including the complete Time Machine journey. The exact-head COMMENTED review records an APPROVE conclusion. Required Python checks still have failures; maintainer merge and actual public publication remain pending. Historical failed executions remain failed. No product UI or authority behavior changes.
Validation
acc16b42cf459eb389f39dcdaebbaeef795d311e; committed bytes equal the tested script; both proposal commits are DCO-signed.finished; input classes:synthetic,public_fixture. Hosted Python qualification remains in progress with failed checks.real_entrypointfailedregression_paritypassed32 != 76; amended helper passes all three cases.real_entrypointpassedsmoke:frontstage-browseron the assembled/loopx/artifact: EN/ZH ×1440/390, three outcomes/both choices, original evidence, keyboard/return focus, HTTP404/retry and190 publication links.staticpassedintegrationpassedintegrationpassedintegrationfailedintegrationnot_runThe failed Python scenario files, workflow and Dashboard source are unchanged from the base. This narrows change attribution; it does not prove a passing baseline or establish their root causes.
Self-check: read production workflow/focus owner/captures; reproduced both failure modes, reran the complete browser path and selected quality checks. The earlier missing repository TypeScript dependency was repaired by documented setup; complete semantic runs pass. No live Agent, model or private Goal data participates.
Frontend / Visual Evidence
UI impact:
none. Existing approved UI/data are unchanged; the browser checks use public fixtures on desktop/mobile.Type / Area
Boundary Checklist
none; both commits carry DCO trailers.