Skip to content

fix(mobile): fence rollback status to the current session - #849

Draft
rynfar wants to merge 2 commits into
pylonfrom
fix/mobile-rollback-status-freshness-20260924
Draft

rynfar wants to merge 2 commits into
pylonfrom
fix/mobile-rollback-status-freshness-20260924

Conversation

@rynfar

@rynfar rynfar commented Sep 24, 2026 •

Copy link
Copy Markdown
Collaborator

On reconnect, mobile could display a cached completed rollback from thread detail while a newer shell projection reported pending or manual recovery. That made the rollback UI appear actionable while the server correctly fenced mutations. The user guide also said every rollback rewrites files, although “Keep changes” preserves them.

Scope rollback status to the current RPC session and compare the server's event sequence across detail and shell streams. A rollback-capable replacement session waits for a fresh snapshot; retired-session batches cannot relabel themselves as current. When status authority is uncertain, mobile keeps drafts visible but disables sends, recovery, rollback, and Git mutations. Delayed native confirmation callbacks recheck current authority before dispatch. The guide now distinguishes restoring files from keeping them. Older peers with no rollback-status stream retain their warm-resume path.

Validation: 36 focused client-runtime/mobile tests; client-runtime and mobile typechecks; scoped lint and formatting; clean diff. Independent read-only review PASS at 9301ca0. No device or live rollback runtime proof. This addresses the mobile presentation and documentation gaps in #200. It does not yet bind a delayed queued recovery/revert request to the receiving RPC session or expected durable rollback operation; those have separate owning follow-ups, so this PR remains draft. It also does not resolve the separate server admission, privacy, native-generation, or checkpoint-ref acceptance work.

Implemented by GPT-6 Sol through the Codex harness.

@vercel

vercel Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
pylon-marketing Ignored Ignored Preview Sep 24, 2026 3:38pm UTC

@github-actions

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 14.0 KiB 14.0 KiB −27 B (−0.2%) 15.1 KiB ✅
Codex Thread snapshot wire 7.2 KiB 7.2 KiB +11 B (+0.1%) 7.3 KiB ✅
Codex Live turn WebSocket wire 6.8 KiB 6.7 KiB −38 B (−0.5%) 7.8 KiB ✅
Codex Live turn WebSocket decoded 58.0 KiB 58.0 KiB −44 B (−0.1%) 66.4 KiB ✅
Codex Live turn messages 10 9 −1 (−10.0%) 21 ✅
Claude Total thread wire 14.0 KiB 14.0 KiB −7 B (−0.0%) 15.1 KiB ✅
Claude Thread snapshot wire 7.2 KiB 7.2 KiB −19 B (−0.3%) 7.3 KiB ✅
Claude Live turn WebSocket wire 6.7 KiB 6.8 KiB +12 B (+0.2%) 7.8 KiB ✅
Claude Live turn WebSocket decoded 58.9 KiB 58.9 KiB 0 B (0.0%) 66.4 KiB ✅
Claude Live turn messages 10 10 0 (0.0%) 21 ✅

Baseline: 7ed3f71 · PR result: 9301ca0 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 115.6 KiB
  • Claude decoded thread snapshot: 116.3 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant