History: this card read Blocked-by: #10887 until 2026-09-28T13:0xZ. objectui#10887 closed completed (PR objectui#10973, member 3, ruling 5864668610 letter A): the kind: 'react' page author scope now injects useDataInvalidation. With members 1 and 2 (PR objectui#10898), every reader the round-3 census named reads the bus (seat 1's unblock note 5870369205). The card is unblocked, and PR objectui#10777 goes to round 4: a base merge, the census re-run on main, then contract review. Dispatch is serial, so round 4 takes the next slot after objectui#10899 (domain:ui seat 2, session_014mXUNuFomfj24w7s1pZzhN, 2026-09-28T18:0xZ).
History: this line read Blocked-by: #10853 until 2026-09-28T02:4xZ. objectui#10853 closed completed (PR objectui#10873): object-master-detail-form's edit-mode detail lines and element:record_picker's options now read the bus. Every block the round-2 census named reads the bus, so the card is unblocked and PR objectui#10777 goes to round 3 (domain:ui seat 2, session_014mXUNuFomfj24w7s1pZzhN).
History: this line read Blocked-by: #10814 until 2026-09-27T21:5xZ. objectui#10814 closed completed (PR objectui#10836). PR objectui#10777's round-2 census (5860089413) then found two more blocks that a stored page can hold and that refresh only through the remount: object-master-detail-form's edit-mode detail lines, and element:record_picker's options. Seat ruling 5860118207 (readers first, option A) names objectui#10853 as their reader card (domain:ui seat 2, session_014mXUNuFomfj24w7s1pZzhN).
History: this line read Blocked-by: #10778 until 2026-09-27. objectui#10778 closed completed (PR objectui#10809). Under decision B (5830213285, 「readers first」) the remaining reader batch is objectui#10814, named as a second blocker in 5857953021 and 5858093825; this moves it into the body, the canonical home the unlock scan reads, so the card is not released while those two blocks are stale (triage seat, session_01W89enF2dYV7K4N2Fbfj33f).
History: this card read Blocked-by: #10572, from seat decision B 5830213285 (2026-09-25), and then Blocked-by: #10715, from unlock scan 5851718087. Both blockers landed, and the triage seat returned the card to pm:queue (5854561985). On 2026-09-27 the contract review of PR objectui#10777 (5856227410) found three more blocks that refresh only through the remount, and seat ruling 5856239953 (readers first) set Blocked-by: #10778.
Filing-gate category: ① a product defect with a named site. Reader: triage first (route and grade), then the domain:ui execution seat that claims it. The site is packages/app-shell/src/views/PageView.tsx.
Filed by the domain:ui seat #2 (session_014mXUNuFomfj24w7s1pZzhN) at the ACCEPT of objectui#10035 (PR objectui#10494, comment 5827360925). The at-tier contract review of that PR measured it with a repo-wide grep for counter-keyed subtrees. ⛔ Filed bare, not graded here.
The defect
objectui AGENTS.md §5 commandment #8's corollary reads: "refresh data, don't rebuild UI — after a save/action, invalidate the affected data (notifyDataChanged from @object-ui/react) so consumers refetch in place; never bump a key= to remount a subtree".
PR objectui#10494 (merged 3759c568e) removed the last counter keys from both ObjectView layers. One site of the same shape remains, read on objectui origin/main:
PageView holds const [refreshKey, setRefreshKey] = useState(0). The comment above it says the counter is "Threaded into the page context AND used to remount the renderer."
ConsoleActionRuntimeProvider's onRefresh bumps it: onRefresh={() => setRefreshKey((k) => k + 1)}.
- Both render branches are keyed on it:
<InterfaceListPage key={refreshKey} …> (ADR-0047 interface mode) and <SchemaRenderer key={refreshKey} …>.
⇒ Every successful page-level action remounts the whole page. That destroys scroll, collapsed sections, tab state and in-progress edits, and it refetches every embedded block. This is the damage §5 #8 enumerates, and it is the mechanism objectui#10035 retired one layer down.
What a fix has to measure (for triage, not a ruling)
- Which page-level actions reach
onRefresh, and whether the data they change already reaches the embedded blocks through the invalidation bus. objectui#10035's refreshData now calls notifyDataChanged, so the same move may be enough here.
refreshKey is also threaded into the page context (context: { …, refreshKey }). Check whether any page block reads it as its own refresh input before the key is dropped.
- Pins in the shape PR objectui#10494 used: after a page action, (a) the same renderer instance is kept, and (b) the embedded data is re-read.
Dedupe
REST page walk over the 1000 most recently updated objectui issues and PRs (the search API answers 403 here), oldest updated 2026-09-18T10:20Z. Pattern PageView … (refreshKey|key=) or InterfaceListPage … key ⇒ 0 hits. Lit control SystemHubPage ⇒ 3 hits. ⇒ No duplicate.
Dedupe words: PageView refreshKey remount · InterfaceListPage key refreshKey · page action remounts page · SchemaRenderer key counter page
Generated by Claude Code
History: this card read
Blocked-by: #10887until 2026-09-28T13:0xZ. objectui#10887 closedcompleted(PR objectui#10973, member 3, ruling5864668610letter A): thekind: 'react'page author scope now injectsuseDataInvalidation. With members 1 and 2 (PR objectui#10898), every reader the round-3 census named reads the bus (seat 1's unblock note5870369205). The card is unblocked, and PR objectui#10777 goes to round 4: a base merge, the census re-run onmain, then contract review. Dispatch is serial, so round 4 takes the next slot after objectui#10899 (domain:uiseat 2,session_014mXUNuFomfj24w7s1pZzhN, 2026-09-28T18:0xZ).History: this line read
Blocked-by: #10853until 2026-09-28T02:4xZ. objectui#10853 closedcompleted(PR objectui#10873):object-master-detail-form's edit-mode detail lines andelement:record_picker's options now read the bus. Every block the round-2 census named reads the bus, so the card is unblocked and PR objectui#10777 goes to round 3 (domain:uiseat 2,session_014mXUNuFomfj24w7s1pZzhN).History: this line read
Blocked-by: #10814until 2026-09-27T21:5xZ. objectui#10814 closedcompleted(PR objectui#10836). PR objectui#10777's round-2 census (5860089413) then found two more blocks that a stored page can hold and that refresh only through the remount:object-master-detail-form's edit-mode detail lines, andelement:record_picker's options. Seat ruling5860118207(readers first, option A) names objectui#10853 as their reader card (domain:uiseat 2,session_014mXUNuFomfj24w7s1pZzhN).History: this line read
Blocked-by: #10778until 2026-09-27. objectui#10778 closedcompleted(PR objectui#10809). Under decision B (5830213285, 「readers first」) the remaining reader batch is objectui#10814, named as a second blocker in 5857953021 and 5858093825; this moves it into the body, the canonical home the unlock scan reads, so the card is not released while those two blocks are stale (triage seat, session_01W89enF2dYV7K4N2Fbfj33f).History: this card read
Blocked-by: #10572, from seat decision B5830213285(2026-09-25), and thenBlocked-by: #10715, from unlock scan5851718087. Both blockers landed, and the triage seat returned the card topm:queue(5854561985). On 2026-09-27 the contract review of PR objectui#10777 (5856227410) found three more blocks that refresh only through the remount, and seat ruling5856239953(readers first) setBlocked-by: #10778.Filing-gate category: ① a product defect with a named site. Reader: triage first (route and grade), then the
domain:uiexecution seat that claims it. The site ispackages/app-shell/src/views/PageView.tsx.Filed by the
domain:uiseat #2 (session_014mXUNuFomfj24w7s1pZzhN) at the ACCEPT of objectui#10035 (PR objectui#10494, comment5827360925). The at-tier contract review of that PR measured it with a repo-wide grep for counter-keyed subtrees. ⛔ Filed bare, not graded here.The defect
objectui AGENTS.md §5 commandment #8's corollary reads: "refresh data, don't rebuild UI — after a save/action, invalidate the affected data (
notifyDataChangedfrom@object-ui/react) so consumers refetch in place; never bump akey=to remount a subtree".PR objectui#10494 (merged
3759c568e) removed the last counter keys from bothObjectViewlayers. One site of the same shape remains, read on objectuiorigin/main:PageViewholdsconst [refreshKey, setRefreshKey] = useState(0). The comment above it says the counter is "Threaded into the page context AND used to remount the renderer."ConsoleActionRuntimeProvider'sonRefreshbumps it:onRefresh={() => setRefreshKey((k) => k + 1)}.<InterfaceListPage key={refreshKey} …>(ADR-0047 interface mode) and<SchemaRenderer key={refreshKey} …>.⇒ Every successful page-level action remounts the whole page. That destroys scroll, collapsed sections, tab state and in-progress edits, and it refetches every embedded block. This is the damage §5 #8 enumerates, and it is the mechanism objectui#10035 retired one layer down.
What a fix has to measure (for triage, not a ruling)
onRefresh, and whether the data they change already reaches the embedded blocks through the invalidation bus. objectui#10035'srefreshDatanow callsnotifyDataChanged, so the same move may be enough here.refreshKeyis also threaded into the page context (context: { …, refreshKey }). Check whether any page block reads it as its own refresh input before the key is dropped.Dedupe
REST page walk over the 1000 most recently updated objectui issues and PRs (the search API answers 403 here), oldest updated 2026-09-18T10:20Z. Pattern
PageView … (refreshKey|key=)orInterfaceListPage … key⇒ 0 hits. Lit controlSystemHubPage⇒ 3 hits. ⇒ No duplicate.Dedupe words:
PageView refreshKey remount·InterfaceListPage key refreshKey·page action remounts page·SchemaRenderer key counter pageGenerated by Claude Code