Uh oh!
There was an error while loading. Please reload this page.
test(app-shell,plugin-detail): CI regression guards for refresh-in-place (#2269) - #2280
Merged
Conversation
…ace (#2269) Lock the objectui#2269 / #2257 / #2604 fixes with two gating tests in the Test job, so the record-surface work can't silently regress (until now it was only verified by throwaway browser scripts): - plugin-detail DetailView.invalidation: behavioral proof that DetailView REFETCHES IN PLACE on a matching notifyDataChanged (findOne re-runs, new data renders) WITHOUT remounting (a sibling mount-marker stays at 1), and ignores non-matching changes. This is the mechanism #2269 relies on. - app-shell no-refresh-key-remount.ratchet: source ratchet (same shape as the ADR-0054 ratchet) that fails if a key={...refresh/reload...} remount reappears on the record-detail surfaces #2269 fixed (plugin-detail, RecordDetailView, RelatedRecordActionsBridge, AppContent). Scoped on purpose — an explicit user 'refresh page' affordance (PageView.onRefresh) and the Studio dev preview harness legitimately remount and are out of scope. Negative-tested: injecting key={actionRefreshKey} makes it fail. Turns AGENTS.md Commandment #8 from advisory into a merge gate. Test-only; touched-package suites 1164 green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019zKcAtbtxuF9SXYgSzjk9v
The latest updates on your projects. Learn more about Vercel for GitHub. |
Contributor
✅ Console Performance Budget
📦 Bundle Size Report
Size Limits
|
os-zhuang
marked this pull request as ready for review
July 5, 2026 09:24
Uh oh!
There was an error while loading. Please reload this page.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
概述
给 #2604 / #2257 / #2269 这条治理线装 CI 回归绊线。此前这些成果只被 scratchpad 里的一次性浏览器脚本验证过——距离静默回归只差一个
key={refreshKey}。本 PR 把两条护栏落进已是合并门禁的Test(vitest)job,把 AGENTS.md 戒律 #8 从"建议"变成"门禁"。两条护栏
① 行为级(plugin-detail
DetailView.invalidation) —— 证明机制真的接通:notifyDataChanged触发findOne重跑、新数据渲染;MountMarker的挂载计数保持 1——即"原地重取、未重挂载"(长期治理:客户端失效总线取代 key 重挂载(refreshKey/actionRefreshKey)+ UI 状态分类规则 + URL 参数注册表(#2257 后续) #2269 的核心不变式);② 源码级 ratchet(app-shell
no-refresh-key-remount.ratchet) —— 照仓库既有adr0054-ratchet的模子,扫描 #2269 修复的记录详情面(plugin-detail/**、RecordDetailView、RelatedRecordActionsBridge、AppContent),若key={…refresh/reload…}重挂载复活即 fail。PageView.onRefresh)和 Studio dev 预览工具(sdui-workbench-preview)本就该重挂载,属不同关切,故不在范围——无 allowlist-of-shame;新面由戒律 feat: add live playground for interactive schema demonstration #8 + code review 覆盖。key={actionRefreshKey}到RecordDetailView→ ratchet 立即 fail;还乡 → 绿。验证
测试-only,无需 changeset(
Changeset Fixed Group Check只校验 fixed-group 配置完整性)。Refs #2269 · #2257 · #2604 · ADR-0054(ratchet 先例)
🤖 Generated with Claude Code
https://claude.ai/code/session_019zKcAtbtxuF9SXYgSzjk9v
Generated by Claude Code