Repository navigation
tests: F1 reopen resumes the same hold (stale-consent and hosted take-back tests) - #2183
Merged
Merged
Conversation
…stale consent meets app/v3 resumes the same hold when a chat's installed copy opens again (F1, TestFenceF1StartupRenewsExistingHold and TestFenceF1IdleWatchReconnectAnd- ProcessResume), and a clean quit releases it. TestAReturnAfterTheWriter- ReopensIsNotALostRace came from dev, where every open acquired a new fence, so on app/v3 its plain reopen kept the fence and the test failed before it reached the consent check. The writer now quits cleanly and opens again, which is the return that makes a new ownership under F1, and the stale and fresh consent assertions are unchanged.
…ng again Same root cause as the reopen test: under F1 the hosted writer that reopens after a take-back resumes the fence the take acquired with a heartbeat, so TestHostedTakeBackReachesAcquireWithoutSharedUploadsOrReleaseDelay, which counted two acquires, failed with the real engine since #2009. It now records the relay's heartbeats too and requires the reopened writer to resume the taken hold within the same 5s bound; the first-acquire bound and the no-shared-upload check are unchanged.
This was referenced Nov 2, 2026
santoshkumarradha
marked this pull request as ready for review
November 2, 2026 13:09
This was referenced Nov 2, 2026
AbirAbbas
added a commit
that referenced
this pull request
Nov 2, 2026
…for branch publication Rebased onto app/v3, where #2178 and #2183 already cover most of this branch: the engine-backed fixtures and the hosted take-back's resumed-hold proof. What is left: - the hosted move rig and the drive rig's default daemon keep their homes under /tmp on Unix, because macOS's temporary folder leaves a workspace socket only a few bytes under the address limit; - the L12 death-branches test waits for A's branch row to hold its three orphan turns before it reads them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
AbirAbbas
added a commit
that referenced
this pull request
Nov 3, 2026
…for branch publication (#2032) Rebased onto app/v3, where #2178 and #2183 already cover most of this branch: the engine-backed fixtures and the hosted take-back's resumed-hold proof. What is left: - the hosted move rig and the drive rig's default daemon keep their homes under /tmp on Unix, because macOS's temporary folder leaves a workspace socket only a few bytes under the address limit; - the L12 death-branches test waits for A's branch row to hold its three orphan turns before it reads them. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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.
What changes
Only tests. Both came from dev, where every opening of a chat took a new hold. app/v3 resumes the same hold when the installed copy opens again, and only a clean quit releases it (the F1 contract from #2009, pinned by
TestFenceF1StartupRenewsExistingHoldandTestFenceF1IdleWatchReconnectAndProcessResume). With the real engine present, both tests failed on app/v3:TestAReturnAfterTheWriterReopensIsNotALostRace(internal/syncsetup): its plain reopen kept the hold, so it failed before its real question (writer did not reopen). The writer now quits cleanly and opens again, which is the return that makes a new ownership under F1. The question is unchanged: a consent for the old ownership is refused, and a consent for the current one continues.TestHostedTakeBackReachesAcquireWithoutSharedUploadsOrReleaseDelay(cmd/codeaf): it counted two acquires, the take's and the reopened writer's (made 1 acquires; want both). The reopened writer now resumes the taken hold with a heartbeat. The test records heartbeats too and requires that resume within the same 5s bound. The first-acquire bound and the no-shared-upload check are unchanged.Validation
BUILD_EXIT=0 VET_EXIT=0 FMT_EXIT=0 CHANGELOG_EXIT=0 LAWS_EXIT=2 PKG_EXIT=1 (./internal/syncsetup) CMDRUN_EXIT=0 (^(TestHostedTakeBackReachesAcquireWithoutSharedUploadsOrReleaseDelay)$). LAWS_EXIT=2 comes from the known base reds only: TestSourceComments, which flags two factory pipeline_copy files; the taxonomy law; and the two NoRoad complexity laws. PKG_EXIT=1 comes only from seal reds fixed elsewhere: syncsetup: an ownership check that finds another holder retires the send receipt first #2180 (already on app/v3; this branch predates it), tests: damage the teams store, not a teams.json, before continuing a chat #2182, tests: keeping an unsent turn on an ownership check needs the store to answer #2184 and tests: the stale-publish test waits for the announced move, not the first viewer line #2185. TestAReturnAfterTheWriterReopensIsNotALostRace passes in the package run.Limits
Test-only change. Reopening without a quit is covered by the F1 tests named above.
🤖 Generated with Claude Code