Skip to content

Regression: upgrade reports success while configured Lab runner remains stale #9467

Description

@chubes4

Problem

homeboy upgrade upgraded the controller from 0.299.0 to 0.299.2 and returned overall success, while the configured homeboy-lab runner remained on 0.299.0:

{
  "new_version": "0.299.0",
  "previous_version": "0.299.0",
  "success": true,
  "upgraded": false,
  "recovery_commands": [
    "homeboy runner exec homeboy-lab -- homeboy upgrade --no-restart",
    "homeboy upgrade --force --upgrade-runner homeboy-lab"
  ]
}

The next Lab workflow failed first with daemon lease is not fresh. Recovery required a separate manual command:

homeboy runner refresh-homeboy homeboy-lab --ref v0.299.2 --reconnect

This reproduces the user-facing contract previously tracked in #5563 after its fix.

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

Expected behavior

One homeboy upgrade invocation converges the controller, configured runner binary, and active runner daemon to the selected release before reporting success.

When a runner cannot converge, the top-level command reports a partial/failed state and performs the safe generated recovery itself when possible. Structured output distinguishes controller success from fleet convergence.

Acceptance criteria

  • homeboy upgrade upgrades each selected configured runner to the controller release.
  • The active daemon is refreshed/reconnected before completion.
  • Overall success is false or partial when a selected runner reports upgraded: false.
  • Before/after controller, configured runner, and active daemon identities are concise and explicit.
  • A deterministic regression test covers the exact success: true, upgraded: false child result.

AI assistance

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