Skip to content

fix(workspace): preserve delegation scope and paging through refresh - #7663

Merged
loopx-agent merged 14 commits into
mainfrom
codex/delegation-refresh-window-20261029
Oct 30, 2026
Merged

loopx-agent merged 14 commits into
mainfrom
codex/delegation-refresh-window-20261029

Conversation

@loopx-agent

@loopx-agent loopx-agent commented Oct 29, 2026 •

Copy link
Copy Markdown
Collaborator

Goal And Delivered Outcome

委派加载到多页后,刷新会重复扫描全部历史;回传改变快照时,点“更多记录”还可能只重读旧的36条,操作结束却没有前进。已观察到的本机会话丢失,则会退回没有重试入口的空态。

本提案贯通这三条阅读路径:

  • 用最多48条的响应窗口恢复已加载范围,61条刷新由六次完整读取减为两次;来源/请求锁批次仍最多12条。
  • 保留本次“更多”要求的范围,快照重建、父组件刷新或取消后接续,都继续到所请求的页。切换来源、筛选、关闭或实际失败时重置读取意图;不同快照仍拒绝混合发布。
  • 已观察到的来源消失时保留读取失败与重试;修改筛选或失败重试不会变成新工作区空态。真正没有会话的新工作区保持原行为。

当前是实现完成的普通审阅提案,完整CI与独立评审尚未完成;当前CQR保留验证阻塞,不据此宣称可合并、已安装或持续性能合格。

Implementation And Boundary

Head:61bfc3815f7a9fe207b90e0059ec155a90393288,八个相关文件。PR目标为main;开始工作的最新基线与merge base为2f544f969236f5dbbe858720108c41d07be60a6c。随后主干推进到a13fc6236cd31128c1cd056eac931b173ffbefa5,新增的steward quota修复与本次路径没有重叠。

复用既有Inbox、TypeScript receipt/agenda/Goal lifetime owner、来源授权及原对话 reader。Python只承担Host IO和一致读取;关联Core工作在请求锁释放后读取。响应窗口与授权检查批次分开,来源开始/结束校验、逐请求锁与权限检查保留。

本次跟进仅三个文件、32行新增/7行删除:一个局部数值ref记住所请求的读取范围,已有合成fixture增加真实回传控制,已有搜索smoke覆盖快照变化时的More。父组件确实会在回传到达后再次刷新,临时函数参数会在该处丢失,所以范围随当前阅读上下文保留。未增加协议状态、持久化配置或权限缓存。回滚可还原这些源文件;无需数据迁移。

Validation And Remaining Qualification

  • 当前Chat构建与tsc --noEmit、Ruff、Python编译、JavaScript语法和diff/公开边界检查通过。完整PR中的五个backend/data/文档路径与此前214项原生测试通过时逐字节相同;本次没有重跑该测试组。
  • 用真实隔离SQLite/HTTP、两个接收者、61条长原请求、每条60段问题及12段背景,在Ego中运行打包前端。受控基线在回传改变快照后仍停在36/60,原20秒等待失败;网络页与重建本身已很快结束。修复后同一次More在1.065秒内到48/60,随后真实父组件刷新仍保留48。这个对照证明本次读取意图丢失的修复,不是p95或安装后收益。
  • 后续60条待跟进、61条全部记录均无遗漏/重复请求身份,末页焦点回到计数。范围切换与相同查询重新搜索都回到初页,关闭/重开与Escape恢复焦点正确。
  • 真实回传发生在48+13刷新窗口之间时,两次摘要不同,界面显示失败、未知计数和重试,不发布混合结果;键盘重试恢复12/61。实际本机来源失效、修改筛选、失败重试和精确原文件恢复均通过,恢复后同一reviewer查询为12/20、总待跟进59。
  • 实际桌面1716×995、窄屏390×844;窄屏dialog可用/内容宽均372,More在视口内。最早请求的完整60段原文及末标记可读。
  • 保留此前两次未记录完整响应的20秒分页失败;本次受控复现解释了同类停滞机制,不能倒推那两次的唯一历史原因。原始回执冲突的合法恢复、持续完整成本、正式安装采用及更广协作执行仍分别待验收。
  • delegation-search-browser-smoke.mjs已扩充并通过语法检查,完整本地runner未运行;实际旅程使用Ego与原生后端。当前head的完整CI及独立review仍待完成。前一head的真实PostgreSQL和Release Artifacts通过,但Windows四项updater activation测试失败;不把祖先结果当作当前head的通过。

Visual Evidence

全部为公开安全的合成数据、真实打包Chat与隔离原生SQLite后端,不是安装环境截图。布局、字体与默认详情层次保持原设计;此次可见变化是More确实推进计数,完整详情仍按需展开,实际错误与恢复入口保留。

快照改变后的基线:操作结束仍36/60 修复:同次操作到48/60
More基线 More修复后
390px默认阅读:分组、计数与常驻More 390px展开最早请求的完整原文
窄屏默认 窄屏原文
来源丢失的原有前后视图:该布局本次未改,来源恢复路径再次验证
基线错误空态 来源失败与重试
来源丢失基线 来源失败与重试

Current-Head Integration And Validation

Exact head: 5a49818d2a3ee00b69498c875b4664e8f29cc901, based on current main 2fbd47fb53f39d9590955066f6c7325fe7afc335.

The current-main integration conflict was limited to the inventory reader, its manager-context README and the existing request-inventory tests. The resolution keeps PR #7630's verified request-lock batching at 12 while retaining this PR's 48-row HTTP response window and requested-range refresh behavior. No main-side change was reverted.

Validation on the integrated head:

  • tests/control_plane/test_chat_request_inventory.py: 46 passed, including File/SQLite batch bounds, lock failure isolation, Goal lifetime replacement, source preservation and 12/48 window assertions.
  • Dashboard npm run build:desktop: TypeScript no-emit checking and Vite production build passed.
  • npm run smoke:delegation-search with the newly built Chat assets: passed changed-snapshot More, source refusal/recovery, narrow layout, focus, read-only receipts and existing search/pagination journeys.
  • Focused Ruff, Python compilation, JavaScript syntax and diff hygiene passed.
  • Standard premerge passed 6 direct checks, 19 selected checks, CQR and the public-boundary scan with zero failures/skips and no manual hold.
  • Exact-scope CQR cqr_39ff5c20195e053dc5ad is valid for scope fingerprint 39ff5c20195e053dc5adb46d50254fb4d0b4fa1e049d42996d967310e10cea64.

Installed-client adoption, sustained production latency and the repository-required CI merge gate remain separate qualifications.

Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…legation-refresh-window-20261029

Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…ource identity

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

Copy link
Copy Markdown
Collaborator Author

Validation follow-up for 1e454b3bd43f07a8a980d193ff301c7c48e8d841:

The Release Artifacts browser job failed in the unchanged conversation-activity.mjs scenario while waiting for the “调整尚未发送” feedback after a storage-failure recovery and view switch. The trigger is still unconfirmed.

The original development and source-bundle cases pass locally on macOS, as does a source-bundle run integrated with the then-current main. Local and CI use Chromium 151.0.7922.34, but these local runs do not reproduce or qualify the installed Linux wheel path. No timeout, negative assertion or fault injection was changed.

Per CONTRIBUTING's rule for advisory failures on untouched paths, this remains a disclosed validation gap. It does not establish merge or installed readiness. The failure is retained in Release Artifacts.

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>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
@loopx-agent loopx-agent changed the title fix: reduce repeated full scans when refreshing delegation pages fix(collaboration): preserve guarded reads across delegation refresh windows Oct 30, 2026
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 loopx-agent changed the title fix(collaboration): preserve guarded reads across delegation refresh windows fix(workspace): preserve delegation scope and paging through refresh Oct 30, 2026

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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)

Exact head: 61bfc38;不可变比较基线:2f544f969236f5dbbe858720108c41d07be60a6c。

动机 / Motivation

在管家页面翻阅多页委派、刷新结果或恢复失效来源的用户。

已加载61条委派刷新需六次全量核验;已知来源失读被降为空会话;More遇到回传改变snapshot及父刷新时会丢失未发布的范围,停在12/13。

旧2fa正常前端配61b真实后端,回传并drain后按More,20秒仍idle12/13;当前61b重新读取24行目标后显示13/13。

当前61b用48+24两个窗口一致恢复61条;失读时清空列表、显示未知计数和Retry;More遇到新snapshot与父刷新仍完成用户请求的范围。

本切片不新增接单、回传或执行权限,也不认证已安装客户端、首次读取提速、持续延迟或整个管家产品完成。

既有来源读取、安装采用和持续成本验收仍开放;此前的扫描、分页与snapshot超时继续保留。

改动思路 / Approach

一次HTTP可返回48行,持锁批次仍独立固定为12。每项重新核验原来源、Goal生命周期、请求和receipt;Linked Core work留到释放这些锁后读取,状态继续由既有TypeScript receipt/agenda owner解释。复用现有 reader、来源证明与 snapshot digest,比跨 HTTP 缓存完整清单或复制权限规则更小。

组件保留“已读来源”诊断,搜索或历史筛选不能将同一来源的失读变成新空会话。最新head另用requestedRows保留用户More请求但尚未发布的范围:只有12条pages时,系统无法从pages推导用户已经要求24条。遇到新snapshot或父刷新要保留这个意图;错误、新source/scope、切换会话、搜索和关闭时回到12。两个ref都是组件内状态,来源与权限仍由后端核验。这是可独立回退的同源清单刷新、失读恢复与More范围保留切片;没有新增持久状态、授权缓存或执行通道。

操作 当前路径 结果或恢复
首次打开、搜索、普通More 默认12行 来源失败保留未知与Retry
刷新已加载61条 48+24两个窗口 快照一致后一起显示;后续失败清空
More遇到回传重排及父刷新 保留已请求24条的范围 重新读取后13/13;焦点落在计数
已读来源失效后筛选或重试 保留失读判断 来源恢复后重新读取

具体改动 / Changes

完整审阅当前8路径,+580/-92:组件/data、inventory reader、HTTP adapter、既有browser smoke与fixture、测试和能力说明。7578→2fa→当前61b,两次追加都只改组件/smoke/fixture;最新delta为+32/-7,后端/API/data/测试/说明五个blob及其余依赖未变。作者说明仍是2fa文本,因此最新More行为按实际diff和独立运行判断。

关键代码讲解

  • ConversationRequests.load 在异步读取前记录requestedRows,改变snapshot的More递归刷新也保留目标范围;每个响应窗口最多48,混合snapshot不发布。generation/abort继续隔离过时读取。
  • audience reset effect 清除会话/ownerFallback变化后的来源、范围与筛选;搜索不抹掉同一来源已失读的事实。
  • read_conversation_requests 接受1–48的响应limit,内部batch_size仍为12。按exact Goal lifetime分组、请求身份排序加锁;逐项重读Session、Turn、grant与生命周期。
  • _read_receipt_batch 复用receipt_states/agenda transaction;异常时在相应锁内逐项读取,健康邻居不被吞掉,Core IO留在锁外。
  • HTTP source_basis 仅在同一HTTP且完整Session事实相同时复用纯身份投影;改变即重算。开头/结尾的真实provider/scope核验保留。

独立规范为修改前manager-context inventory契约,spec_revision=2f544f969236f5dbbe858720108c41d07be60a6c,并按既有task-first/design核验用户操作。original_conversation_scope、truthful_coverage_and_read_only、bounded_pages_and_refresh、lost_source_failure_and_retry、changed_snapshot_more_fulfills_extent均implemented;installed_sustained_latency deferred。HTTP limit是明确输入扩展:旧版连limit=5也拒绝。

对主干的风险 / Risks

未发现当前阻断性问题。最强安全反例是把48行响应误变成48个同时持有的请求锁。独立mutation把内部批次改为48,File/SQLite两项真实HTTP测试均在原12锁断言失败,未改动的对应案例通过。后端77项、五个完整Python模块在7578独立执行;三head blob lineage证明后端、API、测试及依赖未变,明确复用这些执行,没有将它们改称当前重跑77项。

同一61条长来源、immutable base/head、真实File/SQLite各16种HTTP观察中,14个既有响应完整相等;limit=5接受及非法49诊断变化单列。完整正文、scope、单项失败/恢复和源字节均核对。请求锁仍61个,Goal guards/receipt transactions由61次降到6批;48行响应保持12请求内部边界。

最新61b正常构建的Chat、真实SQLite/Inbox与Ego重新执行了已读来源失败:接口400后为0行、未知计数和Retry;builder筛选与重复Retry保持错误,恢复原字节后9条。此前2fa的reviewer4条、切换Goal回管家重置筛选保留为明确复用的未变分支证据。旧7578前端/2fa后端的空会话且无Retry反例保留原版本身份。

新增反例使用相同61b后端源码、独立等价13条合成来源:真实report/drain改变snapshot,旧2fa前端按键More后在原20秒门限仍idle12/13;当前61b前端改发offset0/limit24,得到13/13、无More、计数获焦点,切回待跟进是11条。这两个UI实例的UUID与运行时不同,没有声称原始HTTP字节相等。report/drain是有意的合成来源变更;普通读取前的source未变,Session恢复后字节相等。

全新61条来源在原20秒门限通过12/24/36/48/60/61;刷新2.031秒、实际48+24两个窗口,标题顺序完全相同。第二窗口503时清空全部行、未知计数与Retry;恢复后12/61,三篇原对话可读,Escape关闭并返回入口焦点。此独立来源Inbox未变、Session恢复,fixture拒绝执行写入。辅助探针曾误期待未知文字、旧footer选择器、同步article以及dialog移除;实际页面用“—”、异步读取和保留已关闭dialog,修正检查并保留这些探针失败,没有重复已成功的用户操作。

历史49+、严格More等待、原base/head120秒扫描及2fa作者20秒失败均保留。旧SQLite并发snapshot比较base两次60/61并有Goal锁超时,head两次61/61;原5秒snapshot客户端两边仍超时。当前明确的旧12/新13反例与减少扫描次数有独立依据;一次通过不能证明持续延迟、已安装环境或所有负载交错。原生Playwright包装runner未启动;本轮使用实际Ego路径。

语义与 CI 对齐

复用GoalRef、请求、receipt、agenda、snapshot及错误/Retry;loadedSource是诊断,requestedRows是局部不可推导用户意图,48是响应窗口,12是持锁边界。没有新增持久词汇、actor lifecycle、授权、设置或自动执行。当前正常Chat构建含TypeScript检查,changed Ruff与browser runner语法通过;mypy17的2fa执行因Python输入未变而复用。

固定最新目标main a13fc62,当前精确scope CQR有效,随后用明确worktree PYTHONPATH和python -m入口执行带Goal的完整premerge,6直接/19选择检查全过,语义扫描保留原120秒门限。2fa首次遗漏Goal的检查和旧失败继续独立保留,没有拿它们替代当前门。main新增report quota两路径与本PR八路径不重叠。未查询、轮询或等待CI。

我的整体评价 / Verdict

APPROVE,delivery为justified_increment,限定完整精确head的有界刷新、失读恢复与More目标保留。long_horizon为preserved:原请求、来源、接收方和返回仍由原owner决定;读取不构成采纳、执行或验收。user_experience为improved:少做四次完整刷新扫描、失读可恢复、More操作不再因重排丢掉范围,没有增加设置或确认步骤。

当前61b桌面61条清单与13条混合返回状态、390px默认/展开/来源失败/恢复均实际观察:标题、接收方、状态和时间分层清楚,正文可滚动,计数、More及Retry可达;无横向溢出。历史7578长正文与2fa补充证据保留实际执行版本,最新恢复、混合返回与61条证据绑定61b。已安装App、所有原生平台和持续可读性/延迟仍未认证。

沿既有reader、receipt owner、无锁Core投影及组件整理,范围与问题相称;局部待完成意图有真实反例支持,无需新的缓存或状态框架。当前源码检查和CQR通过仍不等于merge readiness或合并授权,持续性能验收继续开放。

English verdict: APPROVE — 61bfc38. Source-bound File/SQLite evidence and current built-UI counterexamples validate the 12-request fence, coherent two-window refresh, persistent lost-source recovery and pending More extent across snapshot changes. Scoped CQR and source premerge pass; historical timeouts, installed/sustained qualification and merge authority remain separate.

@mergify

mergify Bot commented Oct 30, 2026

Copy link
Copy Markdown

This pull request has merge conflicts with main and cannot be merged
until they are resolved. Please rebase or merge the base branch, @loopx-agent.

Choose the remote for the base repository, not an out-of-date fork.
For a fork clone, first inspect git remote -v; upstream must point
to https://github.com/loopx-project/loopx.git. If it is absent, add it
with git remote add upstream https://github.com/loopx-project/loopx.git.
Then run:

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 HEAD

For a same-repository clone whose origin points to
https://github.com/loopx-project/loopx.git, use origin instead of
upstream for fetch/rebase. If you prefer merging the base, use
git merge <base-remote>/main and push normally.

Keep the DCO Signed-off-by trailer on every commit when you rebase.
https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork

@mergify mergify Bot added the needs-rebase Mergify: the pull request has merge conflicts with its base branch label Oct 30, 2026
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
@mergify mergify Bot removed the needs-rebase Mergify: the pull request has merge conflicts with its base branch label Oct 30, 2026

@huangruiteng huangruiteng left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer: model_agent | OpenAI | owner-delegated exact-head approval

动机 / Motivation

Users reviewing a long delegation inventory need refresh to restore the rows they already loaded without repeating one guarded scan per historical page. They also need More to complete the extent that was requested when a return changes ordering, instead of publishing a mixed snapshot or stopping at the old page count. A previously observed local source must remain a retryable read failure rather than becoming a new empty workspace.

改动思路 / Approach

Extend the existing inventory reader and HTTP response window from 12 to at most 48 rows while keeping the authority/request lock batch fixed at 12. The reader still revalidates the original source, Goal lifetime, request, grant and receipt for each row, and releases guards before reading linked Core work. The App restores already loaded rows in bounded 48-row windows, rejects mixed snapshot digests, and retains a local requestedRows ref across a parent refresh so a pending More request is rebuilt to its requested extent. Source loss, search, scope changes, failures and close reset or preserve state according to the existing boundary.

具体改动 / Changes

Exact head 73bbd4b5d832ff5d8d5bc2ce62e929a0212fcbbd is integrated onto current main 2a629dc7efb02eaa06a2199220330da454160f3d. The conflict was limited to the inventory reader, manager-context README and existing inventory tests. Resolution keeps the already-merged 12-request guard batching while retaining the PR's 48-row response window and requested-range restore behavior; no main-side change is reverted.

The final eight-file diff adds no persistent state, authorization cache, protocol vocabulary, second reader or execution channel. Request paging visibility, retry and snapshot mismatch remain visible failure states, and linked Core work remains outside inventory locks.

对主干的风险 / Risks

No blocking finding remains. The strongest risks are treating a 48-row response as 48 simultaneous request locks, publishing rows from different snapshots, or losing the requested extent when the parent refreshes. The final tests exercise all three: request/receipt batches stay at most 12, mismatched snapshot windows fail without publishing mixed rows, and More completes 12→13 through a real return while the parent refresh runs.

Validation on the exact integrated head passed: inventory integration 46/46, dashboard TypeScript and production build, the packaged delegation-search browser smoke with real isolated SQLite/Inbox, focused static checks, semantic vocabulary scan, and standard premerge with 6 direct checks, 19 selected checks, public-boundary scan and CQR, all with zero failures or manual holds. CQR cqr_d2c2f77d5fabf348d57d is valid for the exact eight-file scope. Installed-client adoption, sustained latency and the repository-required remote CI remain separate qualifications.

我的整体评价 / Verdict

APPROVE. The change is a bounded extension of the existing inventory and App pagination owners. It reduces repeated guarded scans, preserves authority and read-only semantics, and makes both snapshot-changing More and source recovery visible and actionable without adding a parallel state or cache owner.

English verdict: APPROVE — 73bbd4b5d832ff5d8d5bc2ce62e929a0212fcbbd preserves the 12-request lock boundary and fresh source checks while restoring loaded rows in bounded 48-row windows and completing pending More requests across snapshot refreshes.

Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>

@huangruiteng huangruiteng left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer: model_agent | OpenAI | owner-delegated exact-head approval

动机 / Motivation

Users reviewing a long delegation inventory need refresh to restore the rows they already loaded without repeating one guarded scan per historical page. They also need More to complete the extent that was requested when a return changes ordering, instead of publishing a mixed snapshot or stopping at the old page count. A previously observed local source must remain a retryable read failure rather than becoming a new empty workspace.

改动思路 / Approach

Extend the existing inventory reader and HTTP response window from 12 to at most 48 rows while keeping the authority/request lock batch fixed at 12. The reader still revalidates the original source, Goal lifetime, request, grant and receipt for each row, and releases guards before reading linked Core work. The App restores already loaded rows in bounded 48-row windows, rejects mixed snapshot digests, and retains a local requestedRows ref across a parent refresh so a pending More request is rebuilt to its requested extent. Source loss, search, scope changes, failures and close reset or preserve state according to the existing boundary.

具体改动 / Changes

Exact head 5a49818d2a3ee00b69498c875b4664e8f29cc901 is integrated onto current main 2fbd47fb53f39d9590955066f6c7325fe7afc335. The conflict was limited to the inventory reader, manager-context README and existing inventory tests. Resolution keeps the already-merged 12-request guard batching while retaining the PR's 48-row response window and requested-range restore behavior; no main-side change is reverted.

The final eight-file diff adds no persistent state, authorization cache, protocol vocabulary, second reader or execution channel. Request paging visibility, retry and snapshot mismatch remain visible failure states, and linked Core work remains outside inventory locks.

对主干的风险 / Risks

No blocking finding remains. The strongest risks are treating a 48-row response as 48 simultaneous request locks, publishing rows from different snapshots, or losing the requested extent when the parent refreshes. The final tests exercise all three: request/receipt batches stay at most 12, mismatched snapshot windows fail without publishing mixed rows, and More completes 12→13 through a real return while the parent refresh runs.

Validation on the exact integrated head passed: inventory integration 46/46, dashboard TypeScript and production build, the packaged delegation-search browser smoke with real isolated SQLite/Inbox, focused static checks, semantic vocabulary scan, and standard premerge with 6 direct checks, 19 selected checks, public-boundary scan and CQR, all with zero failures or manual holds. CQR cqr_39ff5c20195e053dc5ad is valid for the exact eight-file scope. Installed-client adoption, sustained latency and the repository-required remote CI remain separate qualifications.

我的整体评价 / Verdict

APPROVE. The change is a bounded extension of the existing inventory and App pagination owners. It reduces repeated guarded scans, preserves authority and read-only semantics, and makes both snapshot-changing More and source recovery visible and actionable without adding a parallel state or cache owner.

English verdict: APPROVE — 5a49818d2a3ee00b69498c875b4664e8f29cc901 preserves the 12-request lock boundary and fresh source checks while restoring loaded rows in bounded 48-row windows and completing pending More requests across snapshot refreshes.

@loopx-agent
loopx-agent merged commit 8d80235 into main Oct 30, 2026
9 of 11 checks passed
@loopx-agent
loopx-agent deleted the codex/delegation-refresh-window-20261029 branch October 30, 2026 04:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants