Skip to documentation
Documentation navigation

Documentation navigation

Documentation / guides

Counter capabilities

Declare counter transport, retention, tokenizer revision, and quality.

developer

CounterCapability is trust metadata returned without I/O. It tells policy what the count means and where request bytes traveled.

Metadata

type CounterCapability struct {
	Provider         ProviderID
	Transport        CounterTransport
	SecurityIdentity SecurityIdentity
	Retention        RetentionPosture
	TokenizerRev     TokenizerRevision
	Quality          CountQuality
}

Transport values are local, same endpoint, and separate endpoint. Retention values are none, ephemeral, and logged. Quality values are ExactProvider, ExactLocal, or HeuristicEstimate; unknown is invalid. TokenizerRev must be non-empty. Remote transports require provider and a nonzero security identity. Local counters must leave the identity zero.

Validation

CounterCapability.Validate returns *CapabilityValidationError with the capability kind, field, and closed reason. ContextCounterFunc additionally requires each returned count’s model to equal req.Model.Key() and its quality to equal the declared capability.

capability := counter.CounterCapability()
if err := capability.Validate(); err != nil {
	var fieldErr *contextcount.CapabilityValidationError
	if errors.As(err, &fieldErr) {
		fmt.Println(fieldErr.Field, fieldErr.Reason)
	}
	return err
}

Source and proof

Run go test ./contextcount.

← back to documentation