Skip to content

Regression: refresh-homeboy succeeds before runner admissions are ready #9466

Description

@chubes4

Problem

On Homeboy v0.299.2, homeboy runner refresh-homeboy homeboy-lab --ref v0.299.2 --reconnect returned success with:

{
  "daemon_refreshed": true,
  "reconnect_required": false,
  "success": true
}

The immediately following runner-pinned Lab bench failed during admission in two successive states:

runner `homeboy-lab` refused Lab admission reservation: daemon lease is not fresh

After the successful refresh/reconnect:

query runner daemon: error sending request for url (http://127.0.0.1:52163/admissions)

The second failure was classified retryable, but the initiating command did not recover it. This is a current-release regression of the recovery contract addressed by #9356 and related generation-rotation work.

Context: browser verification for Automattic/blocks-engine#659.

Expected behavior

refresh-homeboy --reconnect completes only after the selected active daemon has a fresh lease and its admission endpoint passes a bounded readiness probe. An immediately following Lab handoff converges onto that daemon without operator retries.

Acceptance criteria

  • Refresh waits for /admissions readiness before returning success.
  • The returned lease/session is the same one used by the next runner-pinned handoff.
  • Stale lease and transient admission transport failures trigger bounded self-recovery before acceptance.
  • Failure output provides one canonical recovery action only when automatic recovery is exhausted.
  • Deterministic coverage reproduces refresh followed immediately by admission reservation.

AI assistance

  • AI assistance: Yes
  • Tool: OpenCode with OpenAI GPT-5.6 Sol
  • Used for: Running the upgrade/reconnect sequence, preserving exact errors, and deduplicating against prior runner-admission issues.

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