Skip to content

Annotation reference

Every (spec.*) option tacplus reads, generated from pkg/proto/sys/spec.proto and its comments on every build of this site. Import it with import "sys/spec.proto";; tacplus supplies the file to every build.

Options are grouped by where they are set. An option whose type is a message is written as a text-format message literal ({name: "notes"}); its fields are listed under option types.

Set on Options
file 17
service 8
method 8
message 23
field 86
enum value 1

All options

Option Set on Type Summary
spec.string_const file repeated StringConst StringConst defines string constants at the file level
spec.int_const file repeated IntConst IntConst defines integer constants at the file level
spec.float_const file repeated FloatConst FloatConst defines floating-point constants at the file level
spec.bool_const file repeated BoolConst BoolConst defines boolean constants at the file level
spec.generate_user_api file bool GenerateUserApi marks this proto file for user API code generation When true, tacplus will generate service wrappers, HTTP clients, and example implementations
spec.service file ServiceAnnotation service declares the owning service identity for this proto file.
spec.state_imports file repeated StateImport state_imports is a legacy file-level mirror for field-level state_import roots.
spec.opa_import file repeated OpaImport opa_import declares dependencies on OPA eval definitions.
spec.timeseries_store file TimeseriesStoreAnnotation timeseries_store marks this service as a timeseries data store.
spec.grpc_s2s_client file repeated GrpcS2SClient grpc_s2s_client declares service-to-service gRPC client dependencies. tacplus generates typed gRPC client wrappers for each referenced service.
spec.grpc_c2s_client file repeated GrpcC2SClient grpc_c2s_client declares client-facing service dependencies for this service. tacplus.yaml selects whether those dependencies emit C2S, W2S, or both.
spec.grpc_w2s_client file repeated GrpcW2SClient grpc_w2s_client declares browser/web client-facing service dependencies. tacplus.yaml selects whether those dependencies emit C2S, W2S, or both.
spec.all_grpc_s2s_clients file bool all_grpc_s2s_clients declares that this service/client needs gRPC client wrappers for ALL gRPC services in the proto source.
spec.vservice file VServiceAnnotation vservice declares a virtual service identity for this proto file.
spec.record_store file RecordStoreAnnotation record_store marks this service as the full-record store.
spec.trait file TraitAnnotation trait declares a cross-service trait implemented by a host service.
spec.record_read file repeated RecordRead record_read declares that THIS service reads the stored rows of the named (spec.record) types, through the record query plane's S2S half.
spec.json_return_value enum value string JsonReturnValue specifies the JSON representation for an enum value
spec.generate_from_map message ParamMapConfig Generate a FromMap method that converts map[string]string to this message type
spec.service_state message StateAnnotation service_state marks a message as a state root.
spec.state_eviction_policy message EvictionPolicy NOT IMPLEMENTED. state_eviction_policy would specify the default eviction policy for all boundaries in a state root message.
spec.state_sync_backup_count message int32 NOT IMPLEMENTED. state_sync_backup_count would specify the default sync backup count for all boundaries.
spec.state_async_backup_count message int32 NOT IMPLEMENTED. state_async_backup_count would specify the default async backup count for all boundaries.
spec.grpc_config message GrpcConfigAnnotation grpc_config marks this message as a gRPC service's configuration. tacplus generates a generated.Services message and per-service config state boundaries.
spec.disable_auth_message message bool disable_auth_message marks a service_state message as not requiring authentication.
spec.subscribe message repeated SubscriptionAnnotation subscribe declares event-bus topic subscriptions for this state service.
spec.record message RecordAnnotation record marks this message as a stored record (an event held in full by the record_store, the record store) and makes it projectable. key = unique id field, owner = ownership/identity field.
spec.event message EventAnnotation event marks this message as an EventBus event: a topic + publish RPC are generated for it.
spec.transformation message repeated Transformation transformation declares a pure typed conversion of this message into a derived row type. tacplus generates the derived message, its column annotations, and its projection_source mappings.
spec.service_event message ServiceEventAnnotation service_event declares that this state root's topic publish RPCs should be exposed through the API gateway. tacplus propagates this to the generated state service as spec.service_c2s and spec.event_label options.
spec.timeseries_type message TimeseriesTypeAnnotation timeseries_type opts a message into timeseries table generation. tacplus generates store-neutral conversion helpers and a gRPC service; a downstream materializer renders the concrete backend schema.
spec.service_store message ServiceStoreAnnotation service_store marks a message as a durable key-value store. tacplus generates a gRPC service with Put/Get/Delete/List RPCs.
spec.opa_eval message OpaEvalAnnotation opa_eval marks a message as an OPA policy evaluation input. tacplus generates a typed S2S RPC on opa for each annotated message.
spec.service_health message ServiceHealthAnnotation service_health declares a typed health message for a service.
spec.per_service_config message bool per_service_config marks a message whose fields are per-service configuration slices.
spec.data_entitlement message RedactOption data_entitlement: message(type)-level default data-entitlement transform for the eligible fields of this message.
spec.config_slice message ConfigSliceAnnotation config_slice marks a message as one per-service configuration slice with an explicit owner and scope.
spec.event_publish message repeated EventPublishAnnotation event_publish declares that this actor publishes an EventBus topic.
spec.event_watch message repeated EventWatchAnnotation event_watch declares that this actor watches an EventBus topic.
spec.owner_default message OwnerDefault owner_default declares what the OWNER of a row of this type may do with it by default (§4b).
spec.public_view message bool public_view marks a message whose fields are split between what may be shown outside the company and what never leaves it (e.g. a prospect record rendered to a prospect's page).
spec.assert_required field bool Validates that a field has a value For scalar/string fields: must not be empty/zero value For repeated fields: must have at least one element
spec.assert_ipaddr_type field IpAddrTypes
spec.assert_enc_type field EncType
spec.assert_net_port field bool
spec.assert_url field UrlScheme URL/URI validation
spec.assert_email field bool Email validation
spec.assert_fqdn field bool FQDN validation
spec.assert_duration field DurationType Duration/Timeout validation
spec.assert_duration_min field int64
spec.assert_duration_max field int64
spec.assert_listen_addr field bool Listen address validation (host:port format)
spec.assert_base64 field bool Base64 validation
spec.assert_enum_defined field bool Enum non-zero validation (ensures enum is not 0/_UNDEFINED value)
spec.assert_file_path field PathType File path validation
spec.assert_gt field int64 Simple numeric comparisons (for most common cases) These work with int32, int64, uint32, uint64 fields
spec.assert_ge field int64 greater than or equal
spec.assert_lt field int64 less than
spec.assert_le field int64 less than or equal
spec.assert_numeric field NumericConstraint Complex numeric constraints (for advanced validation scenarios)
spec.assert_float field FloatConstraint Floating-point constraints (for float and double fields)
spec.assert_semver field bool Semantic version validation Validates that a string follows semantic versioning format (e.g., "1.0.0", "v2.3.1") Supports optional 'v' prefix and follows semver.org specification
spec.param_key field string Parameter key mapping for FromMap generation Explicitly maps this field to a specific enum value for parameter parsing
spec.required_if_false field string Conditional requirement: this field is required when another field equals false Specifies the name of a boolean field that, when false, makes this field required
spec.required_if_true field string Conditional requirement: this field is required when another field equals true Specifies the name of a boolean field that, when true, makes this field required
spec.assert_host field bool Host validation (IP address OR FQDN) Validates that a string is either a valid IP address (IPv4/IPv6) or a valid FQDN.
spec.default_string field string Field-level default value annotations.
spec.default_int field int64
spec.default_float field double
spec.default_bool field bool was default_double — do not reuse 60049 (removed; use default_float for all floating-point defaults, the parser always mapped it to default_float).
spec.key field string key provides a string identifier for mapping on Config fields.
spec.required_if_eq field ConditionalRequirement Conditional requirement: this field is required when another field equals a specific value.
spec.assert_max_size field uint32 assert_max_size enforces a maximum length/count on string, bytes, repeated, and map fields.
spec.assert_min_size field uint32 assert_min_size enforces a minimum length/count on string, bytes, repeated, and map fields.
spec.assert_element_max_size field uint32 assert_element_max_size enforces a maximum BYTE LENGTH on each individual element of a repeated or map field whose element type is string or bytes.
spec.assert_sql field SqlPermit SQL statement validation: a syntactic sanity check, NOT an injection defense.
spec.default_const field string References a file-level constant (int_const, string_const, float_const, bool_const) as the default value for this field.
spec.default_host field DefaultHost Default value for host.Host fields.
spec.indexed field bool Statedb field indexing: marks a field for state-store index creation
spec.index_type field string Statedb index type hint for indexed fields
spec.private field bool Statedb private: field can never be accessed by other services (owner RW only)
spec.state_import field string state_import declares that this field's value comes from another service's exported state.
spec.queue field bool queue marks a state root field as a FIFO queue.
spec.priority_queue field string priority_queue marks a state root field as a priority queue.
spec.topic field bool topic marks a state root field as a pub/sub topic.
spec.leader field bool leader marks a queue, topic, or priority_queue field as requiring leader election.
spec.sync_backup_count field int32 NOT IMPLEMENTED.
spec.async_backup_count field int32 NOT IMPLEMENTED.
spec.eviction_policy field EvictionPolicy NOT IMPLEMENTED.
spec.eviction_max_size field int32 Statedb eviction: maximum number of entries (or heap metric) before eviction begins.
spec.eviction_max_size_policy field MaxSizePolicy NOT IMPLEMENTED.
spec.eviction_ttl_seconds field int64 NOT IMPLEMENTED.
spec.eviction_max_idle_seconds field int64 NOT IMPLEMENTED.
spec.epoch_expiration field bool epoch_expiration marks an int64 field as a Unix epoch expiration timestamp (seconds).
spec.persistence field bool persistence requests that a graph boundary (singleton, collection, map) be durable.
spec.refresh_on_miss field string refresh_on_miss names the message type used as the lookup request for cache-miss-triggered refresh.
spec.command field bool command marks this field as a command RPC on the state service.
spec.view_sources field repeated string view_sources marks a field as a read-only view over multiple collection boundaries.
spec.boundary_callers field repeated string boundary_callers lists services allowed to call this boundary cross-namespace.
spec.view_member field repeated string view_member registers this collection as a contributing source to one or more named cross-boundary views.
spec.instance_keyed field bool instance_keyed: server extracts instance_id from the caller's token and uses "service_id@instance_id" as the entry key.
spec.store_key field bool store_key marks a field as the entry key for a service_store message.
spec.quorum_write field bool quorum_write marks a state field as requiring write quorum: the write is acked only after the value is durable on (spec.min_durable_copies) distinct nodes.
spec.min_durable_copies field int32 min_durable_copies is how many distinct nodes must hold a value durably before a (spec.quorum_write) field's write is acked.
spec.collected_health field bool collected_health marks a state boundary for Sentinel health collection.
spec.projection_source field string projection_source maps a projection field to its source path on the event message.
spec.projection_record_key field bool projection_record_key marks the projection field that carries the SOURCE RECORD's key. tacplus auto-injects this field (or marks the existing one) on every timeseries projection so the projection query can return record keys — the record store federates into a projection, gets record keys, and hydrates the full records from the record_store.
spec.assert_invariant field string assert_invariant declares a formal invariant for this field.
spec.cache field bool cache marks this field for projection into the hot cache.
spec.timeseries field bool timeseries marks this field for projection into the timeseries store.
spec.json_key field string JSON key override: specifies the output key used in JSON serialization.
spec.json_aliases field repeated string JSON aliases: additional keys accepted during JSON deserialization.
spec.timeseries_column field TimeseriesFieldOption ── Timeseries Projection Annotations ──────────────────────────────────────── Controls how individual fields map to timeseries columns.
spec.identity_namespace field bool identity_namespace: this string field holds an authorization-tree namespace path; generated code normalizes it via normalize_namespace before use.
spec.identity_subject field bool identity_subject: this string field holds a stable principal subject id (the sub), not a full SPIFFE URI.
spec.identity_spiffe_subject field bool identity_spiffe_subject: this string field holds a full SUBJECT SPIFFE ID, constructed/validated via sys/spiffe (durable subject key, e.g. workload).
spec.identity_spiffe_resource field IdentitySpiffeResource identity_spiffe_resource: this string field holds a RESOURCE SPIFFE ID that tacplus constructs from sibling fields; see IdentitySpiffeResource.
spec.query_field field QueryFieldOption query_field: marks this record field as a typed filter criterion for the generated RecordMap query plane (Open<T>Query / Refine<T>). tacplus emits a typed <T>Filter message from the queryable fields.
spec.redact field RedactOption redact: marks this record field as REDACTABLE AT EGRESS.
spec.principal field bool principal: this REQUEST string field carries the caller's principal.
spec.store_principal field bool store_principal: this RECORD string field holds the row's owning principal.
spec.identity_spiffe_actor field bool identity_spiffe_actor: this OPTIONAL string field holds the delegated- mint actor's identity, stamped by EventBus from the token's act claim (JWT_PAYLOAD_TYPE_ACT) at publish time — the delegate/agent that made the call on the user's behalf, distinct from (spec.identity_spiffe_subject) which is always the authenticated caller (the user, when delegated).
spec.store_epoch field bool store_epoch: this RECORD int64 field holds the row's STORE EPOCH — Unix milliseconds of the row's LAST WRITE, stamped by the generated wrapper.
spec.namespace field bool namespace: this REQUEST string field carries the caller's namespace.
spec.store_namespace field bool store_namespace: this RECORD string field holds the row's owning namespace.
spec.deleted_flag field bool deleted_flag: this RECORD bool field records the row's SOFT-DELETE state.
spec.visibility field Visibility visibility: on a field of a (spec.public_view) message, whether the field may be rendered outside the company (VISIBILITY_SHOW) or never leaves it (VISIBILITY_BACKGROUND).
spec.event_label service string event_label is the routing label for gateway-exposed event services.
spec.service_s2s service ServiceS2SAnnotation service_s2s declares a service-to-service gRPC service.
spec.service_c2s service ServiceC2SAnnotation service_c2s declares a client-to-service gRPC service.
spec.service_c2d service ServiceC2DAnnotation service_c2d declares a client-to-daemon gRPC service.
spec.token_minter service TokenMinterAnnotation token_minter explicitly marks the cluster's token mint service so the bootstrap exchanger codegen targets it by fully-qualified name instead of scanning for mint RPC signatures.
spec.smb service SmbAnnotation smb (Service Mesh Blackbox) marks a service whose OWN INSTANCES communicate over a black-box peer protocol within a single cluster (SPIFFE plan D7).
spec.smb_authority service SmbAuthorityAnnotation smb_authority marks the consumer service that issues isolated per-SMB CAs and member certs for spec.smb services — declared EXPLICITLY (like token_minter), not inferred. tacplus targets the service carrying this annotation as the SMB cert authority and fails generation if spec.smb services exist with no authority declared. tacplus does not implement the authority; the designated consumer service does.
spec.volume_group service repeated VolumeGroupAnnotation volume_group declares a named blob-store volume group owned by this service — its accepted content types, per-blob size ceiling and per-tenant quota, fixed at build time.
spec.rest_method method RestMethods rest_method declares additional HTTP methods for this RPC's REST endpoint.
spec.rest_path method string rest_path adds an additional alias REST route for this method.
spec.proof_requires method string proof_requires declares a precondition on an RPC method.
spec.proof_ensures method string proof_ensures declares a postcondition on an RPC method.
spec.method_collection method MethodCollection method_collection marks a collection-returning read and declares its shape.
spec.rpc method RpcAnnotation rpc declares an RPC's call surface: who calls it (principal), where it is reachable from (exposure), its non-exclusive protocol flags, the service identities allowed to call it, and its target namespace field.
spec.min_group_size method int32 min_group_size is the smallest result size this RPC will disclose.
spec.rest_browser method RestBrowser rest_browser makes this RPC's REST route a browser form target: a form-urlencoded request body, and a 303 redirect instead of a JSON answer.