Repository navigation
Conversation
Creating an Actor from a template with a golden snapshot borrows the golden tag's snapshot into Status.ExternalSnapshot without recording which tag it borrowed. The template's golden_tag pointer was the only record of that reference, so deleting the template left never-resumed actors with no way to name their snapshot source. Default the request's source_tag to the template's golden tag so the stored Actor carries the reference itself. The stamp is applied to a copy of the request, so the caller's message and the RPC log keep reflecting what was sent. Explicit source tags and golden-scope validation are unchanged. Recording the reference also tightens updates: a whole-object UpdateActor that omits source_tag on such an Actor now fails the existing immutability rule. Resume still resolves the template unconditionally, so consuming the recorded reference is future work.
Max Smythe (maxsmythe)
requested a review
from Julian Gutierrez Oschmann (juli4n)
October 7, 2026 02:33
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.
Refs #2210
CreateActoralready borrows the template's golden snapshot when the caller omitssource_tag. This change also records that golden tag in the stored Actor'ssource_tag, so the Actor names the snapshot source it used.The default is applied to a copy of the request. Explicit source tags and golden snapshot scope validation keep their existing behavior. Regression assertions check that both successful and rejected requests remain unchanged.
Whole-object
UpdateActorrequests must retain the recordedsource_tagunder the existing immutability rule.kubectl ate get actornow displayssourceTagfor golden-created Actors. The API guide and proto field comment describe the default.This PR records provenance only. Resuming after template deletion still requires separate changes: resume currently resolves the template, and template deletion also deletes the golden tag and releases its snapshot. A
source_tagfallback alone would not preserve that snapshot.Validation on Linux/amd64 with Go 1.27.1, real PostgreSQL 18 testcontainers and Kubernetes envtest, with
REQUIRE_DOCKER=1:go test -race ./cmd/ateapi/internal/controlapi ./cmd/ateapi/internal/controlapi/functionaltest -count=1: 326 top-level tests passed, 750 results including subtests, zero failures or skips. All seven golden-tag scenarios and the six changed functional tests executed and passed.Removing the request copy in a temporary test variant made all six default-tag scenarios fail the new input-immutability assertion. The explicit-tag case passed. The original implementation was restored before the passing run.
bash hack/verify-all.sh: all 14 static verifiers passed.make verify: 137 packages passed;cmd/atelet/internal/filecacheandinternal/imagecachefailed with write-protection and OverlayFS mount errors on this root/Linux 5.14 host. The same five top-level failures reproduced at the PR's merge base,3230f9f8, with no skips. These failures prevent an overallmake verifypass on this host.