Skip to content

fix(markdown): persist conflict-safe updates - #2968

Open
George Ng (GeorgeNgMsft) wants to merge 2 commits into
mainfrom
georgengmsft-markdown-durable-updates
Open

fix(markdown): persist conflict-safe updates#2968
George Ng (GeorgeNgMsft) wants to merge 2 commits into
mainfrom
georgengmsft-markdown-durable-updates

Conversation

@GeorgeNgMsft

@GeorgeNgMsft George Ng (GeorgeNgMsft) commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Stack

Layer 3 of the replacement stack for #2940.

Included

  • Persists headless Markdown updates directly to the authorized workspace file.
  • Makes streaming completion idempotent by recognizing the already-produced revision instead of applying operations twice.
  • Carries immutable binding identity and SHA-256 revision checks across read/apply.
  • Rejects stale tokens, rebound root/path/file identities, revision conflicts, and roots replaced by symlinks or junctions.
  • Adds request IDs to concurrent document read/apply IPC and correlates responses.
  • Keeps the view service server-authoritative for update persistence even when no browser/SSE client is connected.

Deferred to browser layer

  • Browser document-manager.ts rewrite and serializer/autosave behavior.
  • Primary/secondary SSE lifecycle, browser synchronization/promotion UX, and reopening the same file while preserving browser binding state.
  • Broader browser snapshot adoption and loopback binding behavior.

Validation

Historical results from before the rebase (not rerun as full build/Jest validation):

  • @typeagent/markdown-agent TypeScript and frontend build
  • Focused Jest suites: 44 tests passed across Markdown persistence, operation engine, path policy, creation path policy, and action handler coverage
  • Prettier changed-file check
  • Git diff check
  • Repo lint ratchet

After rebasing onto f3e4308ea2cd722a2905eceac3f2a1e61d19a420: 23 focused Node integration smoke checks passed using the actual handler, persistence module, and operation engine with simulated translator/view IPC; TypeScript 5.4.5 syntax parsing and Git diff checks passed. Full build/Jest, semantic typechecking, and repository ratchets were not rerun: this worktree has no installed dependencies (fluid-build missing). Pinned Prettier 3.5.3 was unavailable offline.

Complete layer diff against the new main base: 992 insertions, 532 deletions (1,524 changed lines), across 6 files.

@GeorgeNgMsft
George Ng (GeorgeNgMsft) force-pushed the georgengmsft-markdown-durable-updates branch from b3a8718 to cff6411 Compare September 3, 2026 22:49
Base automatically changed from georgengmsft-markdown-safe-updates to main September 4, 2026 23:12
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@GeorgeNgMsft
George Ng (GeorgeNgMsft) force-pushed the georgengmsft-markdown-durable-updates branch from cff6411 to ab068c6 Compare September 5, 2026 05:27
@GeorgeNgMsft
George Ng (GeorgeNgMsft) marked this pull request as ready for review September 5, 2026 07:47
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.

1 participant