Repository navigation
fix(sdk): separate delivered stream cursors from watermarks - #4489
Open
ScriptedAlchemy wants to merge 29 commits into
Open
ScriptedAlchemy wants to merge 29 commits into
ScriptedAlchemy wants to merge 29 commits into
Conversation
|
ScriptedAlchemy
enabled auto-merge (squash)
October 24, 2026 04:48
ScriptedAlchemy
disabled auto-merge
October 24, 2026 05:28
ScriptedAlchemy
enabled auto-merge (squash)
October 24, 2026 05:53
ScriptedAlchemy
force-pushed
the
fix/sdk-delivered-stream-cursors
branch
from
October 24, 2026 15:06
aa03923 to
cb46ab9
Compare
ScriptedAlchemy
disabled auto-merge
October 24, 2026 17:26
Transfer completed diagnostic work into bounded session-owned reports so push publication and repeated pulls share the same admitted evidence. Fence retained reports to document and scope identity, and retire exact operations on invalidation without claiming analyzer work has settled. Keep incomplete results truthful and retryable, and retry publication only for outbound backpressure rather than duplicate or oversized pushes. Fixes #4404
ScriptedAlchemy
force-pushed
the
fix/sdk-delivered-stream-cursors
branch
from
October 24, 2026 19:18
205dc7e to
09c5eac
Compare
ScriptedAlchemy
force-pushed
the
fix/sdk-delivered-stream-cursors
branch
from
October 24, 2026 23:29
09c5eac to
62dff6d
Compare
This was referenced Oct 25, 2026
ScriptedAlchemy
changed the base branch from
master
to
fix/lsp-retained-diagnostic-snapshots
October 25, 2026 01:30
This was referenced Oct 25, 2026
This was referenced Oct 25, 2026
Fleet logs show five complete 48,000-function generations take 53–65 seconds each. The default medium deadline kills the final refresh near 300 seconds despite steady successful publication. Declare the measured aggregate workload through the existing Cargo-to-Bazel size metadata, preserving every refresh, memory bound, and assertion.
ScriptedAlchemy
force-pushed
the
fix/sdk-delivered-stream-cursors
branch
from
October 26, 2026 05:37
09fa496 to
1940dd9
Compare
# Conflicts: # .github/workflows/ci.yml
* fix(extension): discover projects beyond the recent list * fix(extension): preserve project picker button focus * fix(extension): preserve runfile paths in DOM tests * build(plugin): regenerate chatgpt embed from built TypeScript SDK
ScriptedAlchemy
force-pushed
the
fix/sdk-delivered-stream-cursors
branch
from
October 26, 2026 07:15
1940dd9 to
1af8253
Compare
Use the reader lease to fix the interrupted publication point, then track only its abandoned temporary names through the scheduled cleanup sweep. Keep the multi-file fixture within one bounded retention pass and derive the observation window from the actual maintenance retry cadence.
…ream-cursors Carry the deterministic crash-recovery maintenance check through the existing PR stack.
Keep replacement refresh workers stalled until a pass makes progress, and synchronize the recovery regression before releasing the blocked retry. Shut down workers before asserting the observed recovery state. Align the Codex bootstrap fixture with the canonical profile data directory. Preserve all native activation checks and add bounded failure diagnostics for the actual activation stages, file fingerprints, and discovery entries. The observed Codex activation failure still needs fresh CI evidence.
ScriptedAlchemy
changed the base branch from
fix/lsp-retained-diagnostic-snapshots
to
master
October 27, 2026 04:08
Retire queued diagnostic publications alongside retained snapshots when the workspace authority changes. Preserve the bridge's in-flight frame and release undelivered publication claims so refreshed reports can be sent. Verified the exact regression RED/GREEN, all 268 LSP unit tests, and scoped Clippy and Rustfmt targets.
Integrate current master into the delivered-stream cursor branch. Preserve both authored source changes and regenerate the committed ChatGPT server bundle with its maintained build against the merged TypeScript SDK. The only textual merge conflict is the generated server.mjs output. Retain master's source blobs and React Query lock entries alongside the branch's jsdom importer. The cursor and diagnostic publication repairs are unchanged. Validation: SDK build, plugin build and check:embedded, pinned nightly 2026-10-25 rustfmt, git diff --check, and normal commit hooks pass. Native Rust suites still require hosted CI.
ScriptedAlchemy
enabled auto-merge (squash)
October 27, 2026 05:32
This branch has not been deployed
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 free
to 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.
Merge #4478 first, followed by #4526, #4510, #4524, #4489, #4485, #4527, #4528, #4530, #4531, #4529, #4534, and #4541.
This PR is number 5 of 13, based on #4524. Merge #4485 next.
#4488 has already merged into this branch.
Use merge commits. After merging a parent PR, change its child's base to
masterbefore merging the child. Auto-merge is disabled.The SDKs treated the opening frame's publication watermark as the subscriber's delivered cursor. Rust rejected retained history, and TypeScript could skip it after a disconnect that followed only an opening frame. Rust advanced only one sequence after a gap containing several events. Both clients also mishandled replay from one sequence beyond the terminal event.
Both SDKs now track one delivery cursor, starting at the caller's requested sequence or zero. Opening a stream refreshes resume authority without advancing delivery. A validated gap advances the cursor through the full gap. A repeated terminal receipt is delivered once before the stream ends.
The clients reject inconsistent frontier and gap ranges and noncontiguous events. Retry behavior, terminal-receipt validation, correlation, and response-body disposal remain unchanged.
The change updates both installed-package conformance tests and documents manual resume. New transport regressions and production-authority HTTP tests cover live
Acceptedat sequence zero, completed replay, disconnects after only an opening frame, previously delivered items, retained-history gaps, and terminal replay. The HTTP tests connectOperationEventAuthoritythrough the SSE adapter and HTTP to the Rust SDK. The extension bundle is regenerated through its build script.The branch also includes project discovery from #4488. The ChatGPT extension can search registered projects beyond the ten recent projects. It preserves completeness metadata, cancels replaced requests, and rejects stale responses without losing the selected project or keyboard focus.
Closes #4405.
Validation
Canonical Bazel validation on the integrated parent tree (
390bc3fa146a6cf8ba82482e4f2d2ed2bf886369):check:embeddedpassed; embedded artifacts are current with no tracked drift.5843cbf8-fc9b-4ddf-9f7f-e1be39b128d3.client::: 31 passed, 0 failed, 18 filtered; nonzero helper passed. Fresh invocatione02281de-2948-419a-8f46-2fc14ae78d61.These results use the pinned nightly and Ubuntu-main remote runners with normal build caching and fresh test execution. No budgets, deadlines, or resource settings changed. Historical interrupted SDK attempts are not counted as test evidence.
3b0decb9-a017-4a27-973a-98fb162a3212.e5df7add-5104-4f73-b6ed-56f6e111ef0e.Parent integration uses a merge commit and preserves both the cursor patch and merged project-discovery changes.
Follow-up fleet failure verification
The older d7a3a91 fleet run failed the configuration acceptance fixture at code-index readiness (
code_index_convergence_parked), before configuration-write assertions, and timed out the refresh-memory journey. On current d7857c6, which includes the publication-cancellation correction, the exactruntime_surface_acceptance::mcp_configuration_write_persists_and_rejects_stale_caspassed: 1 passed, 0 failed, 140 filtered, 1.68s; invocation b6be3e65-154a-409d-82ff-a72ea1fb1350. Fresh final head guard matched and checkout stayed clean. No additional source edits. The memory journey separately passed unchanged on corrected parent #4510 in 157.87s (fc944727-2cd0-4620-b7bc-86cea6ea5047); that is parent-head evidence, not a new #4489 execution or a confirmed explanation of the CI timeout.CI follow-up
The prior Linux fleet job exposed a recovery-test hang and a Codex native-cache activation assertion.
Independent source review, the pinned formatter, diff checks, and maintained commit hooks passed. No new native build ran locally under the workspace's memory and disk constraints. The new head requires hosted CI.
Parent #4524 has merged; this PR now targets
master.Integration with current master
Merged master
fea107e80d14031c435e33915bb3e0890cf781c0into this branch with both histories preserved. The generated server bundle was the sole textual conflict. It was rebuilt through the maintained SDK and ChatGPT extension build against the merged sources. The delivered-cursor and diagnostic-publication repairs remain intact.All thirteen incoming source/generated-contract files match master's blobs exactly. The merged lockfile preserves master's dependency updates plus this branch's existing
jsdomimporter. The app bundle remains byte-identical; the server bundle is the verified regenerated output.SDK build, plugin build,
check:embedded, pinned nightly formatting, whitespace checks, normal commit hooks, and independent integration review passed. Full native suites and the new PR head still require hosted CI.