Skip to content

app: a takeover request that cannot be read is deleted with no log line #2554

Open

Description

@AbirAbbas

Seen on macOS 15.6 during the Mac proof for #2551 (app/v3 32747af; the same code is at f508fec). Low priority.

What happens: takeoverAsked (internal/session/takeover.go, around line 173) removes takeover.json without a word when it can't be parsed or its at is zero, the same way it drops a stale request. The session never learns that someone asked to take the chat. No log line or wire event says the request was dropped. The window that asked waits for a move that never comes.

Replication:

  1. Hold a chat in codeaf app.
  2. Publish a request the way AskTakeover does: write .takeover-x.json in the chat's folder, then rename it to takeover.json. Give it an offset without the colon, e.g. {"at":"2026-11-09T17:00:00-0500"}. That isn't RFC 3339, so json.Unmarshal into time.Time fails.
  3. The file disappears within milliseconds. There's no agent.changed and no log line. With -05:00 the same request moves the chat at once.

Expected: a dropped request leaves at least a log line saying why (unreadable, missing time, or stale), so a failed move can be traced. Whether an unreadable request should still count as a request is a separate question.

Only AskTakeover and internal/syncsetup/take.go write this file, and both write RFC 3339, so this matters mostly for diagnosis and for any future writer.

🤖 Generated with Claude Code

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions