fix(site): complete LHTB Pages publication - #4709
Conversation
Signed-off-by: shangzh0 <2586756592@qq.com>
4bf0048 to
a657565
Compare
huangruiteng
left a comment
There was a problem hiding this comment.
Request changes
Reviewed exact head: a6575656270c0930c58ebef0e99eab0364b612c7
主要发现
[P1] Rebase 后请区分“五臂实验全集”和“三臂主叙事”。
benchmark/tests/test_publication_scope.py:110 当前把 mechanismRows 也要求为五臂全集。这个断言在 PR 自己的旧基线通过,但将本提交应用到当前 main (96d98f3d4) 后会稳定失败:当前主干有意让 armLabels / armKinds 保留五臂,而 mechanismRows 只展示 plain、native_goal、new_heartbeat 三个主比较臂。
请先 rebase 当前 main,保留 data.json、armLabels、armKinds 的五臂校验,并把 mechanismRows 的期望集合改为上述三臂,然后重跑:
uv run --extra test pytest benchmark/tests/test_publication_scope.py -q动机
这项改动要解决的真实缺口成立:LHTB 双语研究简报已有内容与路由,但尚未完整进入首页发现入口、share bundle、manifest、README 和发布巡检。把既有文章接入这些标准发布面,是一个独立、可回滚且对读者直接有用的增量。
改动思路
整体设计复用了现有发布链路:App.tsx 负责中英文首页卡片与路由顺序,export-frontstage-share-bundle.mjs 负责静态路由、README 与 manifest,既有 bundle/browser/publication smokes 负责消费端验证。没有另造内容 registry,也没有改变 LHTB 数据、评分或 benchmark 执行语义。
正向路径是:首页卡片 → /benchmarks/lhtb/ → share-bundle 路由复制 → manifest/source lineage → 浏览器与 bundle smoke。负向路径目前暴露出一个基线集成问题:旧 head 上的新 pytest 通过,但 current-main merge result 因三臂主叙事被误要求为五臂而失败。
具体改动
README.md、README.zh-CN.md和benchmark/README.md增加 LHTB 双语发现入口与证据边界。apps/presentation/site/src/App.tsx增加两种语言的 LHTB 卡片,并保持卡片和目标路径的顺序一致。examples/export-frontstage-share-bundle.mjs增加 LHTB route、README 链接、manifest entry 和 public-safe content source;对应 bundle、design 与 browser smoke 均加入该入口。benchmark/tests/test_publication_scope.py新增 46 题唯一性、均分/通过数重算和双语 arm id 覆盖,但最后一项需要按当前主干合同修正。
关键代码讲解
writeShareReadme/writeManifest/main(examples/export-frontstage-share-bundle.mjs):沿既有 SWE-Marathon/DeepSWE 模式注册 LHTB,生成产物由 bundle smoke 读回;缺失时直接阻断发布。content.explore.cards与 route mapping(apps/presentation/site/src/App.tsx):中英文卡片共同进入公共首页,中文路由附带?lang=zh;browser smoke 校验完整、有序 href。test_lhtb_published_data_and_bilingual_copy_share_scope(benchmark/tests/test_publication_scope.py):读取真实 tracked JSON 并重算 aggregate,是合理的长期回归测试;但必须分别表达五臂数据合同和三臂主叙事合同。
对主干的风险
主要风险不是静态路由本身,而是 PR 落后于主干后产生的错误 CI 义务。当前主干将 mechanismRows 收敛为三个主要比较臂,同时保留五个实验/历史臂供标签和细节使用;本 PR 用同一个 arms 集合校验两者,既会把 merge result 测红,也可能诱导后续维护者为了“修测试”而把已收敛的叙事重新扩张。
语义与 CI 对齐
当前义务是:data.json、armLabels、armKinds 覆盖五臂,mechanismRows 覆盖三个主比较臂。触发冲突的是第 110 行的集合相等断言;观察证据是在 current main 上应用此提交后得到 1 failed, 3 passed。最小修复是 rebase 并拆成两个显式集合,再运行上述 pytest 与原有 export/browser checks。
验证结果:
- PR exact head:
4 passed。 - current-main merge result:
1 failed, 3 passed,失败点即第 110 行。 git diff --check:通过。- GitHub checks:发布审查时仍有 pending;修复并更新 head 后需要重新跑完。
页面当前把“完整通过数尚未超过 Plain”放进大标题的问题并非本 PR 引入,因此不作为本 PR 的额外 blocker;它适合在独立的小型文案/测试 PR 中处理,同时把 7/7/4 的事实保留在正文。
我的整体评价
发布补全的方向、边界和大部分实现都合理,改动也复用了正确的现有 owner;这不是需要推翻的设计。当前唯一阻断是 stale-base 上新增的测试与主干三臂叙事合同冲突。请按最小修复 rebase 并更新断言,届时再对新 exact head 复审;在已知 merge-result 红测下不能合并。
English verdict: REQUEST_CHANGES - At a6575656270c0930c58ebef0e99eab0364b612c7, the publication wiring is well scoped, but rebasing onto current main makes test_publication_scope.py:110 fail because the test requires all five arms in the intentionally three-arm mechanismRows; split the full-data and main-narrative expectations, rerun the focused test and CI, then request re-review.
Summary
This is the focused follow-up to the P1 review on #4703. The page and aggregate data are already on main through #4703; #4705 added the static route copy. This PR supplies the remaining publication contract and regression coverage. It supersedes the stale-history PR #4707.
Verification
The full bundle smoke verifies that site/benchmarks/lhtb/index.html is emitted and matches the compiled SPA entry.