Contextfulv0.23.0

Docs / Specification

contract authority · 50-authority.md · 51-enforcement.md · guide · card

Authority and enforcement — card

Generated by contextful-spec state from the contract’s files and spec/terms/authority.toml; not authored.

Operations

OperationCoversClausesProved
identifyThe subject tuple, its per-member attestation, hygiene at the mint, and the identity links connecting a subject to a source’s principals.140
profileThe versioned delegation profile over the attenuable-credential library: admitted elements, reserved facts, the bounded evaluator, the scoped session.140
grantWhat a credential says a holder does: actions, table patterns, tenant scope, the template allowlist, ceilings, and resources answering by name.252
attenuateDeriving a narrower child offline, and the narrowing legality of each grant dimension.92
issueMinting: the persisted lifetime ceiling, the principal a row-landing grant needs, signing custody, and the authoring posture.320
verifyAdmission at a checkpoint: signatures, audience, timestamps, possession proof, key sets, and the admitted-authority value.340
revokeEnding a credential’s usefulness ahead of expiry: short lifetimes, the denylist, the scoped epoch, key rotation, format withdrawal.130
exchangeExchanging a verified external assertion for a scoped credential under injected verifying material and a declared policy.220
redactRemoval and transformation inside the writer, ahead of columnar bytes and the run path’s durable record.240
composeThe three layers as one reference monitor, and the order a registered relation applies.90
filter-rowsThe typed row-predicate grammar, subject binding, the tenant equality and the project default.90
maskColumn classes, strategies and combines, guardrails over an exhaustible value space, the pepper, and masked behavior under caller SQL.320
refuseThe two shapes an unauthorized read takes, the scope guard, and what a refusal discloses.100
bound-redistributionThe per-table licence bound applied at push, the root-object allowlist, and the per-credential edge filter.120
placeInference zones: grammar, composition across grains, floors, incognito, and the serve-time outcome.290
resistThe paths that stay closed to an injected instruction.30

Error cases

ErrorWhenClause
AuthoritySubjectMalformedA subject value fails mint hygiene, or arrives padded on the exchange.authority.identify.malformed-value
AuthoritySubjectMissingA credential carries no subject member.authority.identify.subject-missing
AuthorityLinkUnverifiedAn authorization join consumed a link whose method does not authorize.authority.identify.unverified-link
AuthoritySubjectReboundA derivation names a different on-behalf-of principal.authority.identify.subject-rebound
ProfileElementUnrecognizedA credential element the profile does not name.authority.profile.unrecognized-element
ProfileReservedFactA token block introduces an engine-reserved fact.authority.profile.reserved-fact
ProfileEvaluationBudgetEvaluator input past the fact or iteration ceiling.authority.profile.evaluator-bound
ProfileRestrictionUnevaluatedA restriction no read evaluator exists for.authority.profile.unevaluated-restriction
ProfileVersionUnsupportedA profile version outside the checkpoint’s supported set.authority.profile.version-unsupported
GrantActionUnknownAn action outside the registered vocabulary.authority.grant.unknown-action
GrantPatternMalformedA table pattern with a star before its final position.authority.grant.malformed-pattern
GrantTenantUnbindableA tenant scope on a table with no bare outermost partition column.authority.grant.tenant-unbindable
GrantTemplateNotAllowedA query template outside the credential’s allowlist.authority.grant.template-not-allowed
GrantPipelineNotCoveredA pipeline identifier no grant covers.authority.grant.pipeline-not-covered
GrantRunTraceDeniedA run trace whose pipeline no grant covers; names no pipeline.authority.grant.run-trace-denied
GrantWriteNotCoveredA credentialed table write with no write grant over its destination.authority.grant.write-not-covered
AttenuationWidensA child broader than its parent on a grant dimension.authority.attenuate.widens
AttenuationExpiryExtendedA child expiry past its parent’s.authority.attenuate.expiry-extended
AttenuationTenantDroppedA child dropping or changing its parent’s tenant scope.authority.attenuate.tenant-dropped
IssuanceLifetimeAboveCeilingA requested lifetime above the persisted ceiling.authority.issue.above-ceiling
IssuancePolicyExistsA policy init over an existing issuance policy.authority.issue.policy-init
IssuanceCeilingNotLoweredA ceiling lowering to a value at or above the current ceiling.authority.issue.lower-only
IssuancePrincipalRequiredAn attributed-effect grant naming no on-behalf-of principal.authority.issue.principal-required
AuthoringPostureUndeclaredA table write verb reading a manifest with no valid authoring posture.authority.issue.posture-key
AuthoringCredentialMissingA table write verb under the session posture with no credential.authority.issue.session-credential
IssuerKeyMissingA face configured with no issuer key.authority.issue.missing-key
IssuerKeyUnresolvableAn issuer key reference resolving to no material.authority.issue.unresolvable-key
IssuanceUnauthorizedA mint request without an admin grant.authority.issue.unauthorized-mint
ReplicaCannotIssueA mint attempted on a replica.authority.issue.replica-mint
IssuanceZoneWildcardA subject declaring a wildcard inference zone at the mint.authority.issue.zone-wildcard
SignatureEncodingInvalidA port signature that does not decode under its tag or verify under the port’s key.authority.issue.encoding-invalid
SignatureAlgorithmMismatchA named scheme differing from the pinned key’s.authority.issue.algorithm-mismatch
IssuerKeyRotationNotDueA scheduled rotation before the cadence falls due.authority.issue.rotation-not-due
IssuerKeyUnrecordedA scheduled rotation of a key the ledger does not date.authority.issue.unrecorded-key
SignatureInvalidA block signature failing against every pinned key.authority.verify.bad-signature
AudienceMismatchA credential audience differing from, or absent against, the declared one.authority.verify.audience-mismatch
TimestampMalformedA credential timestamp outside the timestamp grammar.authority.verify.malformed-timestamp
AuthorityExpiredA credential past its expiry at admission or an effect boundary.authority.verify.expired
PossessionProofInvalidA request proof failing against the confirmation thumbprint.authority.verify.possession-invalid
PossessionProofReplayedA proof nonce repeated inside the replay window.authority.verify.replayed-nonce
BearerLifetimeExceededA bearer living longer than a network checkpoint admits.authority.verify.bearer-lifetime
TransportPeerMismatchA socket peer, holding a credential with no confirmation claim, whose uid differs from the checkpoint’s or is unreportable; a request on a connection other than the admitted one.authority.verify.peer-mismatch
KeySetUnavailableAn opted-into published key set that could not be obtained, or a malformed pin.authority.verify.key-set-unavailable
KeySetStaleA last-known-good key set past its staleness bound.authority.verify.key-set-stale
KeySetLedgerUnavailableA required key-set ledger absent or malformed.authority.revoke.ledger-unavailable
RevocationPrincipalClassUnknownAn epoch bump naming an unknown principal class.authority.revoke.unknown-principal-class
AuthorityRevokedA denylisted credential, or one below the current scoped epoch.authority.revoke.revoked
RotationGraceTooShortA rotation grace window shorter than the issuance ceiling.authority.revoke.short-grace
CredentialFormatWithdrawnA credential in a withdrawn format.authority.revoke.format-withdrawn
ExchangeRequestMalformedAn exchange request body of any shape but a lone jwt string member.authority.exchange.wire
ExchangeBodyTooLargeAn exchange request body past the ceiling.authority.exchange.body-ceiling
ExchangeUnconfiguredAn exchange in a project declaring no exchange policy.authority.exchange.unconfigured
ExchangeAssertionInvalidAn external assertion failing any exchange check.authority.exchange.assertion-invalid
ExchangeMaterialMissingAn exchange configured with no verifying material.authority.exchange.material-missing
ExchangeHolderProofInvalidAn exchange request whose holder proof fails verification.authority.exchange.holder-proof-invalid
EnforceRedactionInvalidA removal rule has an unsupported or unbounded pattern.authority.redact.pattern-refusal
EnforcePredicateOutsideGrammarA row predicate node outside the typed subset.authority.filter-rows.outside-grammar
EnforceUnknownClassA column class outside the class registry.authority.mask.unknown-class
EnforceDigestAloneOnExhaustibleClassA keyed hash standing alone over an exhaustible class.authority.mask.digest-alone
EnforceCombineWithoutGeneralizationA combine leaving its primary’s digest output unchanged.authority.mask.combine-generalizes
EnforceStrategyOutsideTypeA mask strategy a binary or vector column’s type does not admit.authority.mask.typed-strategy
EnforceMaskOnAbsentColumnA mask naming a column the schema omits.authority.mask.absent-column
EnforceTruncationCutsNothingA truncation width at or past the primary’s output width.authority.mask.cuts-nothing
EnforceTruncationTooWideA digest truncation wider than the class domain and crowd admit.authority.mask.truncation-ceiling
EnforceKeyMaterialInRelationPepper-derived key state in relation text, a plan or the session catalog.authority.mask.key-material
EnforceScopeDeniedA read of another tenant’s rows on a granted table.authority.refuse.scope-denied
EnforceUnknownRelationA read naming a table the caller holds no grant on.authority.refuse.ungranted-table
EnforceRootObjectNotAllowlistedA root-level object pushed outside the allowlist while a table is withheld.authority.bound-redistribution.root-not-allowlisted
EnforceStaleRedistributedObjectsObjects an earlier push left addressable for a now-withheld table.authority.bound-redistribution.left-behind
EnforceZonePatternUnparsedAn allow-set entry matching no entry form.authority.place.unparsed-pattern
EnforceZoneAssertionWidensA request asserted a zone its credential does not sign.authority.place.asserted-zone
EnforceProtectedFloorWidenedA protected-class surface widened past its floor with no override.authority.place.floor-widened
EnforceRemovalWithPublicCloudWrite-time removal and a public-cloud allow-set on one surface.authority.place.removal-with-public-cloud
EnforceEvidenceFloorExceededA synthesized row declaring a set wider than its evidence intersection.authority.place.evidence-floor
EnforceEvidenceListEmptyA synthesized row naming no evidence table.authority.place.empty-evidence
EnforceIncognitoWideningA session asserting a zone wider than the incognito pin.authority.place.incognito-widening
EnforceZoneDefaultWidenedA mint signing a zone other than a non-widenable project default.authority.place.default-widened
EnforceCredentialShapedValueA credential-shaped value on the write path.authority.resist.credential-shaped-value
EnforceWriteOnReadOnlyFaceA write tool registered on an organization-wide face.authority.resist.write-tool

Bounds

BoundValueBasisClause
subject-value-bytes256 Bchosenauthority.identify.value-hygiene
evaluator-fact-ceiling1000 entrieschosenauthority.profile.fact-ceiling
evaluator-iteration-ceiling100 iterationschosenauthority.profile.iteration-ceiling
tenant-child-lifetime15 minchosenauthority.grant.tenant-child-lifetime
aggregate-group-ceiling-floor1 entrieschosenauthority.grant.group-ceiling
issuance-lifetime-ceiling24 hchosenauthority.issue.ceiling
issuer-key-rotation-cadence90 dchosenauthority.issue.key-rotation
proof-replay-window300 schosenauthority.verify.replay-window
proof-clock-skew30 schosenauthority.verify.clock-skew
bearer-lifetime-ceiling3600 schosenauthority.verify.bearer-lifetime
nonce-cache-entries100000 entrieschosenauthority.verify.nonce-cache
key-set-refresh-interval300 schosenauthority.verify.key-set-refresh
key-set-stale-ceiling1 hchosenauthority.verify.key-set-stale
exchange-body-ceiling64 KiBchosenauthority.exchange.body-ceiling
exchange-lifetime-default900 schosenauthority.exchange.lifetime-default
exchange-lifetime-ceiling3600 schosenauthority.exchange.lifetime-ceiling
redaction-rules-per-pipeline256 entrieschosenauthority.redact.rules-per-pipeline
redaction-pattern-bytes4 KiBchosenauthority.redact.pattern-bytes
redaction-compiled-size1 MiBchosenauthority.redact.compiled-pattern-size
relations-per-session1024 entrieschosenauthority.compose.relations-per-session
row-predicate-size4 KiBchosenauthority.filter-rows.predicate-size
membership-list-entries512 entrieschosenauthority.filter-rows.membership-list
masks-per-table128 entrieschosenauthority.mask.masks-per-table
hash-output-width32 charschosenauthority.mask.hash-width
token-output-width20 charschosenauthority.mask.token-width
mask-crowd-floor1000 valueschosenauthority.mask.crowd
refusal-payload512 Bchosenauthority.refuse.payload
scope-guard-walk4096 entrieschosenauthority.refuse.guard-walk
stale-object-report100 fileschosenauthority.bound-redistribution.report
zone-allow-set-entries32 entrieschosenauthority.place.allow-set-entries
zone-identifier-length128 charschosenauthority.place.identifier-length

Types

Each struct or enum a {{type:<path>}} pointer names, with the keys serde reads and their doc comments.

contextful_core::exchange::RawPolicy

The struct at crates/contextful-core/src/exchange.rs, named by authority.exchange.policy.

KeyDoc
expected_iss
expected_aud
subject_map
tenant_claim
role_claim
role_grants
default_grants
ttl_secs
minted_iss
minted_aud

contextful_core::grant::Action

The enum at crates/contextful-core/src/grant.rs, named by authority.grant.actions.

contextful_core::identify::LinkMethod

The enum at crates/contextful-core/src/identify.rs, named by authority.identify.unverified-link.

KeyDoc
scim_email
oidc_sub
operator_asserted

contextful_policy::enforce::mask::RawColumnPolicy

The struct at crates/contextful-policy/src/enforce/mask.rs, named by authority.mask.column-policy, authority.mask.row-class.

KeyDoc
class
strategy
combine
crowd
summarize_only
strategies
fallback
exceptions

Decisions

SectionCited by
A-authority#acting-principalauthority.identify.subject-tuple, authority.identify.attestation, authority.identify.on-behalf-of, authority.identify.value-hygiene, authority.identify.malformed-value, authority.identify.normalization, authority.identify.identity-link, authority.identify.unverified-link, authority.identify.directory-link, authority.identify.agent-ceiling, authority.identify.incognito, authority.identify.subject-rebound, authority.issue.principal-required, authority.issue.default-read
A-authority#body-projectionrun.journal.body-projection, run.own.body-parent, run.guard-secrets.recorded-body, authority.redact.prepared-effects, authority.redact.effect-scope
A-authority#delegation-profileauthority.profile.delegation-profile, authority.profile.owner-claim, authority.profile.reserved-fact, authority.profile.evaluator-bound, authority.profile.fact-ceiling, authority.profile.iteration-ceiling, authority.profile.appended-block, authority.profile.declared-scope, authority.profile.scoped-session, authority.attenuate.truncation
A-authority#exchange-renewalauthority.exchange.surface, authority.exchange.tenant, authority.exchange.audience, authority.exchange.material-missing, authority.exchange.holder-binding, authority.exchange.bearer-mint, authority.exchange.refresh, authority.exchange.no-extension
A-authority#exhaustible-digestauthority.mask.column-policy, authority.mask.class-registry, authority.mask.unknown-class, authority.mask.strategies, authority.mask.drop, authority.mask.one-value, authority.mask.digest-alone, authority.mask.high-entropy, authority.mask.combine-generalizes, authority.mask.in-place, authority.mask.equality, authority.mask.aggregates, authority.mask.summarize-only, authority.mask.hash-width, authority.mask.token-width, authority.mask.cuts-nothing, authority.mask.crowd, authority.mask.truncation-ceiling, authority.mask.pepper, authority.mask.development-pepper, authority.mask.pseudonymous, authority.mask.native-digest, authority.mask.key-material
A-authority#horizonauthority.grant.horizon, authority.attenuate.horizon-widens
A-authority#issuance-ceilingauthority.issue.ceiling, authority.issue.above-ceiling, authority.issue.ceiling-lowering, authority.issue.out-of-tree-mint, authority.issue.bearer-cap-fixed, authority.revoke.short-lifetime, authority.revoke.epoch, authority.revoke.compromise, authority.revoke.rotation-grace, authority.revoke.short-grace, authority.revoke.immediate-retire, authority.revoke.format-withdrawn, authority.exchange.policy, authority.exchange.minted-grants, authority.exchange.lifetime-default, authority.exchange.lifetime-ceiling
A-authority#local-transportauthority.verify.local-transport, authority.verify.local-holder-proof, authority.verify.local-peer-fallback, authority.verify.peer-mismatch
A-authority#network-bearerauthority.verify.write-verbs, authority.verify.write-commit, authority.verify.timestamps, authority.verify.malformed-timestamp, authority.verify.network-bearer, authority.verify.bearer-lifetime, authority.verify.connection-scoped
A-authority#offline-narrowingauthority.grant.fields, authority.grant.actions, authority.grant.pattern-forms, authority.grant.malformed-pattern, authority.grant.star, authority.grant.tenant-scope, authority.grant.tenant-bytes, authority.grant.tenant-unbindable, authority.grant.tenant-child-lifetime, authority.grant.aggregate, authority.attenuate.offline, authority.attenuate.narrowing, authority.attenuate.widens, authority.attenuate.expiry-extended, authority.attenuate.tenant-dropped, authority.attenuate.bearer, authority.attenuate.per-sub-agent, authority.revoke.denylist, authority.revoke.revocation-id, authority.revoke.revoked
A-authority#one-credentialauthority.issue.absent-author, authority.issue.authoring-posture, authority.issue.posture-key, authority.issue.session-credential, authority.issue.one-credential, authority.verify.admitted-authority, authority.verify.no-bypass-constructor, authority.verify.effect-boundary, authority.verify.format-interface, authority.verify.expired, authority.exchange.per-reader, authority.exchange.no-cross-reader, authority.refuse.drifted-scope
A-authority#pinned-keysauthority.issue.signing-port, authority.issue.oracle-custody, authority.issue.algorithm, authority.issue.algorithm-mismatch, authority.issue.key-rotation, authority.verify.public-key-only, authority.verify.key-set, authority.verify.key-set-refresh, authority.verify.key-set-unavailable, authority.verify.key-set-stale, authority.exchange.injected-material
A-authority#placement-breadthauthority.issue.zone-wildcard, authority.redact.pipeline-wide, authority.place.zone-string, authority.place.allow-set-entry, authority.place.disjunctive, authority.place.undeclared, authority.place.caller-zone, authority.place.fail-closed, authority.place.protected-floor, authority.place.floor-widened, authority.place.narrowest-grain, authority.place.excluded-row, authority.place.excluded-cell, authority.place.per-principal, authority.place.evidence-floor, authority.place.incognito, authority.place.incognito-widening, authority.place.team-default, authority.place.serve-outcome, authority.place.envelope, authority.place.symbolic-inclusion, authority.place.allow-set-entries, authority.place.identifier-length
A-authority#prepared-recordrun.journal.redacting-source, run.journal.prepared-owner, run.journal.prepared-replay, run.select.journaled-pull, authority.redact.write-time, authority.redact.before-the-record, authority.redact.every-land-entry, authority.redact.relational-journal
A-authority#query-templatesauthority.grant.template-allowlist, authority.grant.template-tables, authority.grant.template-not-allowed, authority.grant.row-ceiling, authority.grant.group-ceiling, authority.redact.after-normalization, disclosure.template.single-statement
A-authority#redaction-no-copystore.encrypt.redacted-index, run.emit.unredacted-error, connector.attach.url-scrubbing, connector.attach.credential-in-a-url
A-authority#redistributionauthority.redact.rule, authority.bound-redistribution.withhold, authority.bound-redistribution.before-diff, authority.bound-redistribution.outranks-grants, authority.bound-redistribution.envelopes, authority.bound-redistribution.root-allowlist, authority.bound-redistribution.root-not-allowlisted, authority.bound-redistribution.left-behind, authority.bound-redistribution.manifest-is-an-index, authority.bound-redistribution.report, authority.bound-redistribution.two-checks, authority.bound-redistribution.edge-filter
A-authority#row-classesauthority.mask.row-class, authority.mask.row-class-dependency
A-authority#sender-constrainedauthority.verify.possession-binding, authority.verify.possession-invalid, authority.verify.replay-window, authority.verify.clock-skew, authority.verify.replayed-nonce
A-authority#span-unionauthority.redact.in-value, authority.redact.rewritten-identities