Repository navigation
Conversation
shankgan
marked this pull request as draft
November 5, 2026 17:06
shankgan
force-pushed
the
feat/issue-3617-annotations
branch
7 times, most recently
from
November 9, 2026 21:56
31e61c2 to
e7a0247
Compare
Add map<string, string> annotations to ResourceMetadata for decorative, non-queryable metadata on resources such as Actor and ActorTemplate. Signed-off-by: Shankar Ganesan <shankgan@google.com>
shankgan
force-pushed
the
feat/issue-3617-annotations
branch
5 times, most recently
from
November 10, 2026 00:21
9deff46 to
f3f74f3
Compare
Validate annotation keys as k8s-label-key while rejecting reserved ate.dev domains, cap entries at 16, and bound total key and value size at 4 KiB. Signed-off-by: Shankar Ganesan <shankgan@google.com>
Copy incoming metadata.annotations onto the stored metadata during UpdateActor while keeping server-owned metadata fields intact, and add apivalidation, controlapi, and functionaltest coverage. Signed-off-by: Shankar Ganesan <shankgan@google.com>
shankgan
force-pushed
the
feat/issue-3617-annotations
branch
from
November 10, 2026 00:40
f3f74f3 to
f39e7ad
Compare
shankgan
marked this pull request as ready for review
November 11, 2026 04:12
shankgan
force-pushed
the
feat/issue-3617-annotations
branch
from
November 13, 2026 05:08
f39e7ad to
916ab10
Compare
Add --annotations flag to kubectl-ate create actor and update actor for passing comma-separated key=value pairs (with --annotations="" clearing annotations on update), add unit tests for CLI flag parsing and ActorTemplate manifest round-trip, and document annotations in the API reference guide. Signed-off-by: Shankar Ganesan <shankgan@google.com>
Benchmark protobuf serialization, update validation, PostgreSQL CRUD (CreateActor, GetActor, UpdateActor, ListActors at 100 and 1000 per page), and the cold ResumeActor/SuspendActor lifecycle with no annotations and with 4 KiB of annotations in four shapes: one or sixteen entries of random base64, which PostgreSQL stores out of line uncompressed, and one or sixteen entries of text with random identifiers, which it stores out of line compressed. The PostgreSQL sub-benchmarks store a ~1.4 KiB actor status so annotations push the row across the 2 KiB TOAST threshold. Each run reports pg_column_size, octet_length, TOAST chunk count and relation size, EXPLAIN (BUFFERS, SERIALIZE) block counts for GetActor, WAL bytes and table growth per UpdateActor and per resume/suspend cycle with the two halves timed separately, and the ListActors response size. Add storetest.Pool so tests can run SQL the store API does not expose, and widen the storetest helpers from *testing.T to testing.TB so benchmarks can provision isolated PostgreSQL test databases. Signed-off-by: Shankar Ganesan <shankgan@google.com>
shankgan
force-pushed
the
feat/issue-3617-annotations
branch
from
November 14, 2026 00:30
916ab10 to
709c711
Compare
This branch has not been deployed
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.
See #3617
External orchestrators, build pipelines, and observability tools need a way to attach decorative, non-queryable pass-through metadata (such as build provenance, owner/runbook references, or external correlation IDs) to
ActorandActorTemplateresources without Substrate interpreting or indexing those fields.Summary of changes
API & validation (
ateapi,apivalidation):map<string, string> annotations = 8onResourceMetadata(immutable after creation) andmap<string, string> actor_annotations = 8onActorTemplate.k8s-label-key), reject reservedate.dev/and*.ate.dev/prefixes, cap entries at 64, and bound combined key and value size at 16 KiB (16384bytes).Control plane (
controlapi,e2e):ActorTemplate.actor_annotationsintoActor.metadata.annotationsduringCreateActor(with actor-level keys taking precedence on conflict) and re-validate the merged set.metadata.annotationsonUpdateActorprior to immutability validation.CLI & docs (
kubectl-ate,docs):--annotations(key=value,...) tokubectl-ate create actorand update the API reference guide.Fixes #3617
AI use: AI-assisted, I reviewed and tested it.