Repository navigation
base red: the apps sidebar's start-up receipts take no resource revision (from #33016) - #35842
Conversation
…urce revision #33016 seeds sidebar placement receipts at every daemon start "without changing the layout" ("Only metadata is written"). It wrote them through commit_sidebar_ops, a resource commit, so each fresh daemon spent resource revision 1 on a mutation that changes no resource and publishes nothing, and the first real change became revision 2. terminal_host_recovery's interrupted_public_creation_publishes_once_and_replays_stable_ids_after_two_restarts (red on feat since e17575a: revision "2" for "1") counts creation commits only. The receipts and the initialized marker are now written as registry metadata in one transaction, under the same migration check (no document, no marker, so the next start initializes again).
… (clippy unused_qualifications)
Bugbot needs on-demand usage enabledBugbot uses usage-based billing for this team and requires on-demand usage to be enabled. A team admin can enable on-demand usage in the Cursor dashboard. |
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
Shipped in:
|
|
Review (independent review subagent, Claude): SHIP at d1bed90 Same receipts, same is_migrated gate (rollback leaves no marker, so the next start retries) and the same double check of the marker. What commit_sidebar_ops added (revision, idempotency row, empty journal record, resource event) existed only for the bump; sync_from_legacy is not needed because initialize never reads the document. write_meta takes the registry lock then the connection, as read_state does; its callers hold no mux or registry lock. No test or caller expects initialize to take a revision. Read only; no build or test by the reviewer. |
Summary
Base red on
feat-cmux-next:cmux-tui::terminal_host_recovery interrupted_public_creation_publishes_once_and_replays_stable_ids_after_two_restartsfails atterminal_host_recovery.rs:3637(revision "2" where "1" is expected) in every run since e17575a (#33016). Bisected on the fleet (the test alone, Linux): green at 9168b56, red at e17575a.Cause (product): #33016 seeds sidebar placement receipts at every daemon start, "On upgrade, receipt existing installs without changing the layout" ("Only metadata is written"). It wrote them with
commit_sidebar_ops, a resource commit, so each fresh daemon spent resource revision 1 (and a journal record and a resource event) on a mutation that changes no resource, and the first real change became revision 2. The test counts creation commits only.Fix: the receipts and the
apps.sidebar.initializedmarker are written as registry metadata in one transaction (Mux::write_registry_meta,WorkspaceRegistry::write_meta), with the sameis_migratedgate (no document, no marker, so the next start initializes again) and the same double check of the marker. No resource revision, no journal record, no event. I asked Leo on #33016 at 16:56Z which side he wanted; no answer by 19:00Z, so per the PL's rule I took the side that matches #33016's stated intent (metadata only, layout unchanged).Testing
d0fc910521dca784b7e0c684): the test fails, revision "2".53433bcaae55b933cb629370) and macOS (jobe9aba00e986e6ce1f5b79e9e, at 0087b3c, same code before a clippy-only follow-up); full Linux run (jobb2587e94642cd3bf7875cec7): it passes; Linuxallwith filtersidebar(jobda24016ac3d4a37c35a684b7): 280 of 280 pass (the apps sidebar migration and retry tests included), clippy pass, fmt red only on files this PR does not touch (base).python3 scripts/cmux-next/prepush-gate.py: no new violations.Observed / Not run
cursor.revisionat start.Changelog
none
Open in [code]smith · Need help on this PR? Tag
@codesmith-botwith what you need.Summary by cubic
Fixes
interrupted_public_creation_publishes_once_and_replays_stable_ids_after_two_restartsby stopping the apps sidebar's start-up receipts from consuming a resource revision.Seeding the receipts via
commit_sidebar_opsmade a fresh daemon spend revision 1 on metadata-only writes, so the first real change became revision 2. The receipts and theapps.sidebar.initializedmarker are now written as registry metadata in a single transaction through the newwrite_registry_metapath, which takes no resource revision, writes no journal record, and publishes nothing. The same migration gate applies: if the sidebar document migration did not complete, initialization is skipped and retried on the next start.Written for commit d1bed90. Summary will update on new commits.