Skip to content

Task spec edits provision a new template but leave the actor on its old image #353

Open
fkautz/ax
#4

Description

@fkautz

Problem

Reconcile derives and provisions a new ActorTemplate when the task image changes. EnsureActor encounters AlreadyExists and returns the existing healthy actor without comparing or changing its template binding.

Reproduction

Reconcile a task with example/image:v1. Change its image to example/image:v2 and reconcile the same task again.

Observed behavior

The v2 template is provisioned and reconciliation returns success, but the actor remains bound to the v1 template.

Expected behavior

An accepted image edit should take effect through an explicit actor update/replacement policy, or be rejected as unsupported rather than silently ignored.

Executable regression test

TestReviewTaskEditUpdatesActorTemplate (includes fixture in the same file).

git clone --branch test/review-regressions https://github.com/fkautz/ax.git ax-review
cd ax-review
git checkout 1dc2613d29e12f306154a7e1183c1825a55d24ed
go test ./internal/controller -run '^TestReviewTaskEditUpdatesActorTemplate$' -count=1 -v

Requires the Go toolchain specified by go.mod. The test asserts the desired behavior and fails on the published revision. Production code is unchanged.

The regression uses the real reconciler and Substrate client with a stateful in-process gRPC fake that preserves actor identity and returns AlreadyExists on duplicate creation. It checks the actual template binding, not just template creation. No deployed Substrate cluster was used.

Activity

  1. arbazkhan971 commented on Sep 22, 2026

    @arbazkhan971

    Fix ready: implemented on my fork (branch fix/353-actor-template-on-image-edit, regression test included, make test green) and ready to PR — but this repo's collaborators_only PR creation policy rejects PRs from non-collaborators (see #358), so I cannot open it. If PR creation opens for external contributors, I will open the PR immediately. Happy to adjust scope per maintainer feedback.

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