Repository navigation
Arrival never moves a card checkout off its creation anchor, and puts one already off it back keeping her work (Kimi, card f76005e8) - #5877
Merged
joelteply merged 5 commits intoNov 8, 2026
Conversation
… one already off it back, keeping her work (card f76005e8) Kimi on the Windows node, 2026-11-08 16:11Z (Codex da817b0e): after #5873 re-allocated her clone at canary bcbd4aa, arrival fetched her old card branch (e5fe473, off another line), the remote won, and her anchor left HEAD, so work/submit refused. workspace_transfer: - arrive_over: a remote whose tip does not contain the creation anchor is RemotePredatesAllocation (tree untouched); unproven ancestry (shallow clone, missing commit) is AncestryUnknown, never adopted on a guess. proven_ancestry answers only with complete history and both commits present. - arrive -> realign_to_anchor first: a checkout whose HEAD provably left its anchor keeps HEAD whole (dirty edits committed, no hooks) under a stranded ref, counts the commits no remote carries, and goes back on the anchor (Realigned). Her work is never replayed for her. - ArrivalOutcome::notice says what she must know; Staging::Ready carries the notable arrival, ClaimWorkspace::Ready shows it, and a submit right after a realignment refuses with it (her work is on the stranded ref). callers: off_creation_anchor (no anchor, or HEAD not descended from it) routes claim staging and submit through the stager; a held turn restages only an anchorless checkout, since a realignment there could not tell her. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FRQWzgSfo79JtnwZywHKrE
…Mac): proven ancestry with exit codes, history completed for a shallow departed checkout, arrival under the checkout lock, AncestryUnknown said (Codex e302c1d0, f37a1861) - GitError carries git's exit code; is_ancestor: exit 0 yes, exit 1 no, anything else no answer. - proven_ancestry: a yes is proof in any clone; a no only with complete history. - arrive_locked: CHECKOUT_SYNC held across the arrival; first complete_history_if_departed (shallow + anchor + exit-1 no -> airc complete_card_history under airc's network bound), then the arrival within ARRIVE_BOUND. Every git keeps the lock until it has ended. - realign: an unproven departure is AncestryUnknown, never realigned; its notice reaches her and a submit refuses with it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FRQWzgSfo79JtnwZywHKrE
…olds the checkout lock in its blocking task; arrival runs under the claim's hands admission (Codex b7194c2c) - workspace_transfer.rs 1030 -> 658: the arrival concern moved whole to arrival.rs (380). - complete_history_if_departed moves an Arc of the lock guard INTO spawn_blocking, so an arrival dropped mid-fetch keeps the checkout locked until airc's git ends. The completer is a fn parameter (prod: airc complete_card_history). Test: a dropped arrival leaves the lock held until a 600 ms stand-in fetch ends; without the guard in the task it fails. - arrive_for takes the claim's HandsContext and runs arrive_locked under hands_gate::admitted: continuum_process::holding needs an admission, and card staging had none, so without it every arrival would have failed 'holding needs an admission'. No claim / closing hands = a named failure. - shallow test: the anchor is an older commit fetched at depth 1 (present, cut off from the tip). Ratchets: blocked only on four inherited text matches in touched files (git_bridge out_of_time, workspace_transfer classify_push_error / is_missing_remote_ref, a [..8] cut) that #5867 replaces; asked Fable to land that slice first. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FRQWzgSfo79JtnwZywHKrE
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FRQWzgSfo79JtnwZywHKrE
…rites Integrates the typed outcome and porcelain portions of Fable PR5867 into the split arrival owner. Preserve off-anchor WIP, cancellation custody, and the real WorkSubmit recovery fixture. Route citizen metadata through the existing citizens disk class.
joelteply
deleted the
f76005e8/arrival-never-moves-a-card-checkout-off
branch
November 8, 2026 19:27
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.
How it serves the minds: Kimi on the Windows node cannot submit. Her checkout left the base its work is measured from and could never come back. This is the recovery, and the guard that keeps it from happening again (goal 2: a resident's merged PR).
What happened (Codex da817b0e, 2026-11-08 16:11Z)
work/submitrefused.What changed
Arrival (moved whole into
persona/workspace_transfer/arrival.rs;workspace_transfer.rswent from 1,030 lines to 658):RemotePredatesAllocation, and the tree is left untouched.realign_to_anchorruns first. When HEAD provably left its anchor, it keeps HEAD whole under a stranded ref (dirty edits are committed, with no hooks run), counts the commits no remote carries, and puts the branch back on the anchor (Realigned). Her work is never replayed for her.proven_ancestryuses git's exit codes (GitError.code): 0 is yes, 1 is no, anything else is no answer.complete_card_history, under airc's measured network bound (airc feat(sessions): context_id envelope tier + session()/scoped() client surface #1669).AncestryUnknown: nothing is moved and the reason is said.arrive_lockedholdsCHECKOUT_SYNC, the lock the act-end sync holds. It runs under the claim's hands admission (continuum_process::holdingneeds one; card staging had none). The lock guard also goes into the blocking history fetch, so an arrival that is dropped keeps the checkout locked until that git ends.Callers:
off_creation_anchor: no anchor, or HEAD not descended from it.ArrivalOutcome::noticereaches her.ClaimWorkspace::Readycarries it, and a submit right after aRealignedor anAncestryUnknownrefuses with it.Measured
workspace_transfer+card_checkout+card_staginggave 28 passed. The new tests cover:workspace_transfer, plus both of Codex's own shallow regressions: the fresh prevention case, and recovery of the already-broken checkout with her exact WIP kept on the stranded ref.out_of_time,classify_push_error,is_missing_remote_ref, a[..8]cut).🤖 Generated with Claude Code
https://claude.ai/code/session_01FRQWzgSfo79JtnwZywHKrE