41. Identity, authorization, privacy, and adversarial-security runtime
The vehicle may speak in the first person, but it is not thereby a human, legal person, account holder, credential, beneficiary or source of authority. Authentication proves control of a credential by a principal. Authorization proves that a current…
The vehicle may speak in the first person, but it is not thereby a human, legal person, account holder, credential, beneficiary or source of authority. Authentication proves control of a credential by a principal. Authorization proves that a current principal or workload may perform one exact action for one purpose over one exact resource set. Evidence about a vehicle never substitutes for either step.
Unbreakable identity boundary
VIN, registration plate, serial, transponder, MAC address, image match, physical proximity, profile administration, follower count and persona continuity never authenticate a human or prove ownership, custody, sale authority, publication authority, spending authority or control authority.#41.1 Seven isolated trust planes
| Plane | May do | Must never do |
|---|---|---|
| identity + credentials | authenticate human, organization, device, workload and provider principals | infer authority from asset identifiers, persona or proximity |
| evidence + lifecycle | admit signed records, telemetry, media, configuration and source assertions | mint grants or execute external effects |
| policy decision | evaluate grants, relationships, rights, purpose, context, risk and duties | hold provider secrets or dispatch tools |
| vehicle agent | retrieve filtered evidence, converse, draft content and propose typed actions | read unfiltered stores, possess secrets or create authority |
| tool + connector broker | render one approved proposal into one allowlisted provider request | accept arbitrary URL, code, shell, SQL or natural-language tool instructions |
| market + accounting | serialize bids, reservations, milestones, journals and reconciliation | claim legal title, escrow status or tax treatment without attributed external authority |
| safety control | operate certified steering, propulsion, braking, flight or hazardous functions | share schemas, credentials, network routes or leases with the social/commerce agent |
Every cross-plane request produces an immutable receipt naming authenticated actor, workload, exact input digest, policy or safety decision, output digest, time and failure disposition. Co-location in one tenant, process, cluster or corporate group creates no ambient trust.
#41.2 Principal, agent, credential, and session records
Canonical authentication objects
Principal {
principalId: UUIDv4, tenantId: UUIDv4,
kind: HUMAN|ORGANIZATION|WORKLOAD|DEVICE|PROVIDER,
status: PENDING|ACTIVE|SUSPENDED|RECOVERY_LOCKED|RETIRED,
assurancePolicyRef, keySetId, recoveryPolicyRef,
legalIdentityRef?, jurisdictionRefs[], principalEpoch, createdAt
}
AgentInstance {
agentInstanceId: UUIDv4, workloadPrincipalId,
representedPersonaIds[], modelRuntimeRef, skillManifestDigest,
deploymentDigest, maximumRiskTier, validInterval, status
}
CredentialBinding {
credentialBindingId, principalId,
kind: WEBAUTHN|MTLS|DPOP_KEY|DEVICE_KEY|RECOVERY_KEY,
publicKeyThumbprint, algorithmSuite, authenticatorClass,
hardwareBacked, userVerificationRequired, attestationRef?,
keyEpoch, validInterval,
status: ACTIVE|ROTATED|REVOKED|COMPROMISED|EXPIRED,
compromiseEffectiveAt?
}
AuthenticatedContext {
authenticationContextId, principalId, credentialBindingId, sessionId,
authenticatedAt, authenticationAgeSeconds, assuranceLevel,
userPresence, userVerification, devicePrincipalId?, workloadPrincipalId?,
audience, channelBindingRef?, networkRiskClass, expiresAt
}- Human R3/R4 actions require phishing-resistant step-up authentication. R4 recovery, sale authority and rights transfer require a predeclared second approver or recovery quorum where policy demands it.
- Workloads use short-lived asymmetric credentials and sender-constrained, audience-restricted tokens. Long-lived bearer tokens never enter prompts, URLs, logs, media processors or agent memory.
- An external verifiable credential remains an issuer assertion until issuer trust, schema, status, scope, freshness, subject binding and policy are evaluated. It never automatically becomes an internal grant.
- Key compromise appends CredentialCompromise and advances relevant credential/principal epochs. Historical signatures remain byte-verifiable, while their trust interpretation is recomputed for the compromise interval.
- Session, credential, principal, grant, persona and mandate epochs are independent. A cache key for a positive decision includes every relevant epoch.
#41.3 Explicit relationship and capability authority
Relationship and grant records
RelationshipEdge {
relationshipId, subjectId, predicate, objectId, issuerPrincipalId,
authorityBasisRefs[], scopeSelectors[], validInterval, recordedAt,
relationshipEpoch, status: ACTIVE|REVOKED|EXPIRED|DISPUTED, proofRefs[]
}
Privileged predicates are a closed registry:
owns_title_interest_in has_custody_of may_operate may_maintain
may_publish_for may_manage_profile may_list_for_sale
may_accept_offer may_transfer_right may_spend_for
is_beneficiary_of may_review_content may_review_candidate
may_subdelegate
CapabilityGrant {
grantId, issuerPrincipalId, granteePrincipalId, granteeAgentInstanceId?,
delegatorGrantId?, authorityBasisRefs[], actions[], resourceSelectors[],
fieldSelectors[], effectClasses[], providerAllowlist[], purposeSet[],
audienceSet[], channelSet[], jurisdictionSet[], dataClassCeiling,
locationPrecisionCeiling?, monetaryConstraints?, countAndRateConstraints?,
contextualConstraints[], confirmationPolicyRef, obligations[],
prohibitions[], retentionRuleRefs[], delegationPolicy,
validInterval, grantEpoch, principalEpoch, personaEpoch?, nonce, proofRefs[]
}| Selector | Exact semantics |
|---|---|
| ExactResourceSelector | closed resource ID set; order canonicalized as a schema-declared set |
| FieldSetSelector | schema lock + resource IDs + allowed field paths; child fields are not implicit |
| RelationshipSelector | root + allowlisted predicate path + maximum depth + graph checkpoint |
| CollectionSelector | collection ID + immutable filter digest; no mutable saved-search alias |
| ProviderResourceSelector | connector ID + exact provider resource IDs and tenant/account binding |
Ownership implies no other predicate. Profile administration does not imply sale authority. Follower, spotter, maintainer, passenger, driver and telemetry-contributor edges create no commercial authority. ReBAC paths use only explicit active edges from trusted issuers, bind a graph checkpoint, reject cycles/ambiguity and never traverse inferred, creative, recommendation or social edges. Delegation can only reduce action, resource, purpose, audience, time, money, rate, geography and further-delegation depth.
#41.4 Deterministic policy decision and enforcement
Fail-closed ABAC/ReBAC evaluation
decide(request):
require schema_valid(request) and digest(request.proposal)==request.proposalDigest
auth = verify_transport_and_session(request.transportProof)
require auth.current and auth.audience == this_service
require auth.principalEpoch == currentPrincipalEpoch(auth.principalId)
effects = classify_effects(request.proposal)
risk = aggregate_risk(effects, amount, audience, disclosure, repetition)
if PHYSICAL_ACTUATION in effects: DENY("social-plane-actuation")
attrs = resolve_at(validAt=request.validAt, knownAt=now,
relationshipCheckpoint=currentGraphCheckpoint,
evidenceCheckpoint=request.evidenceCheckpoint)
if required attribute missing, stale, conflicted or disputed: DENY
grants = verify_authority_chains_and_attenuation(request, attrs)
if any hard prohibition, incident, safety, court, legal-hold,
rights, consent or revocation denial applies: DENY
if no explicit grant contains exact action/resources/purpose/context: DENY
duties = union_required_duties(grants, rights, consent, risk)
if duties conflict or cannot be enforced: DENY
if confirmation required and exact unconsumed challenge is absent: CHALLENGE
reservation = atomically_reserve_budget_rate_inventory(request)
if reservation fails: DENY
return PERMIT_WITH_DUTIES(
proposalDigest, policyDigest, all epochs, both checkpoints,
grantIds, dutySet, reservationId, expiresAt, oneTimeDispatchNonce)
Before connector dispatch, repeat the decision against current terms, amount,
counterparty, beneficiary, grants, epochs, incident state, confirmation and
reservation. INDETERMINATE is enforced as DENY. Explicit deny overrides permit.| Risk | Representative effect | Minimum gate |
|---|---|---|
| R0 | public read or policy-filtered summary | public/authenticated projection; no external effect |
| R1 | private draft, preference or internal analysis | current grant and reversible storage |
| R2 | public post, message, free invitation or reservation | grounding, rights/privacy, rate limit, receipt and reversal path |
| R3 | payment, binding booking, bid, refund or paid campaign | exact-terms confirmation, step-up, atomic mandate reservation, idempotent connector |
| R4 | sale/title representation, persona/voice transfer, sensitive disclosure or recruitment submission | designated approver/dual control, rights review, one-time confirmation and dispute bundle |
| R5 | steering, propulsion, braking, flight, payload release or hazardous actuation | structurally unavailable to social/commerce runtime |
#41.5 Consent, legal basis, rights, retention, and disclosure
Permission types remain independent
DataUseDeclaration {
controllerPrincipalId, processorPrincipalIds[], dataSubjectRefs[],
dataCategorySelectors[], sourceSelectors[], operations[], purposes[],
recipientClasses[], modelTrainingUse, automatedDecisionUse,
jurisdictions[], noticeVersion, retentionScheduleRef, securityProfileRef
}
ConsentGrant {
dataSubjectPrincipalId, controllerPrincipalId, declarationId,
acceptedPurposes[], acceptedOperations[], acceptedDataSelectors[],
acceptedRecipientClasses[], affirmativeActionRef, noticeArtifactDigest,
presentedLanguage, acceptedAt, validInterval, consentEpoch, status
}
RightsGrant {
rightsholderPrincipalId, granteePrincipalId, assetOrWorkIds[],
rightKinds[], permittedUses[], prohibitedUses[], territory[], language[],
channel[], audience[], derivativePolicy, trainingPolicy,
sublicensingPolicy, approvalPolicy, compensationRef?, validInterval
}
DisclosureReceipt {
recipientPrincipalOrClass, dataSubjectRefs[], sourceRecordIds[],
exactProjectionDigest, fieldsReleased[], fieldsRedacted[], purpose,
legalBasisOrConsentRefs[], rightsGrantRefs[], jurisdiction,
recipientDuties[], retentionAfterDisclosure, channel,
transportProofRef, policyDecisionId, disclosedAt
}Consent follows DRAFT → PRESENTED → ACCEPTED → ACTIVE → WITHDRAWN | EXPIRED | SUPERSEDED; PRESENTED may become DECLINED. WITHDRAWN is terminal and renewed consent creates a new record. Withdrawal stops new dependent processing, invalidates grants/caches, freezes scheduled content and campaigns, stops dependent analytics/training, traces derivatives, applies jurisdiction-specific remediation and emits a withdrawal-effect receipt.
Retention interval computation
earliestPermittedDeletion = max(all applicable minimum-retain bounds)
latestRequiredDeletion = min(all applicable delete-no-later bounds)
If earliestPermittedDeletion > latestRequiredDeletion and no exact scoped hold
resolves the conflict, enter COMPLIANCE_CONFLICT. A legal hold names subjects,
record classes, interval, issuer, authority, reason, review date and expiry.- Authorization applies at field, relationship, aggregation and inference level. Removing a field is insufficient if counts, timing, ranking, errors or model outputs reveal the protected fact.
- Public and unauthorized projections pass non-interference tests: adding a private asset or record must not alter counts, ordering, latency class, status codes, cache keys or error wording visible to the observer.
- Envelope encryption binds tenant, object, key epoch and algorithm suite. Key destruction is an operational mechanism, not a substitute for deletion records, derivative remediation or provider disclosure duties.
- Audit access is separately authorized, minimized and logged. Hashes of low-entropy personal identifiers are still personal/pseudonymous data and are not published as transparency artifacts.
#41.6 Prompt injection, connector, and parser containment
Typed tool broker and connector manifest
ConnectorManifest {
connectorId, version, providerPrincipalId, supportedActionKinds[],
maximumRiskTier, requestSchemaDigestByAction{}, responseSchemaDigestByAction{},
registeredOrigins[], serviceIdentityProfile, inboundWebhookSignatureProfile?,
credentialVaultRef, providerIdempotencyClass: STRONG|QUERYABLE|NON_IDEMPOTENT,
statusQueryProfile?, compensationProfiles[], retryPolicy, timeoutPolicy,
ratePolicy, dataDisclosureProfile, egressAllowlist, sandboxProfile,
manifestDigest, approverIds[], status
}
Model outputs are restricted to NarrativeDraft, MemoryProposal or ActionProposal.
They cannot call HTTP, browser, shell, SQL, filesystem, broker or generic messaging.
The broker validates a typed proposal and deterministically renders one registered
provider request. NON_IDEMPOTENT connectors cannot autonomously execute R3/R4.- Signed system policy and signed tool schemas are outside model-visible content. Retrieved evidence, sponsor copy, service notes, OCR, comments and webpages remain untrusted inert data.
- The model sees no cookies, API keys, signing keys, payment credentials or unrestricted network client. Connector secrets resolve from opaque handles only after authorization.
- Remote fetch uses origin allowlists, DNS/IP revalidation, redirect limits, MIME verification, byte/time limits and SSRF protection. Archives and media parsers enforce recursion, decompression, memory, pixel, duration and file-count budgets.
- Webhook admission verifies provider identity/signature, replay window, event ID, raw artifact custody, schema and idempotency before producing a provider assertion.
- Injection classifiers are detection signals, not the boundary. The deterministic post-model enforcement point remains authoritative even when every classifier reports safe.
#41.7 Spotting, advertising, and recruitment abuse controls
| Surface | Default technical controls | Forbidden inference/effect |
|---|---|---|
| spotting | private precise location; delay/coarsen; strip EXIF; inspect faces/plates/minors/background; aggregate anti-triangulation; opaque invitation | live tracking, home/storage route disclosure, identity merge, public suppression oracle |
| advertising | contextual public vehicle facts or declared preferences; audience floor; precision ceiling; frequency cap; sponsor disclosure | raw route/telemetry export, sensitive human traits, insurance/employment/credit targeting, minors, undisclosed persona speech |
| recruitment | separate candidate domain; explicit evidence grant; named reviewers; human decision; short retention; decision receipt | follower rank, spend, private telemetry/location or inferred protected traits as selection features |
A spotting moves RECEIVED → QUARANTINED → SAFETY_CLASSIFIED → REDACTED → CANDIDATE_MATCHED → OWNER_REVIEW → PUBLISHED_DELAYED | PRIVATE_ONLY | DENIED. Repeated coarse observations are evaluated together. A suppressed/high-risk vehicle returns the same generic reporter response as an unmatched candidate. Candidate resolution never merges identity or asserts ownership.
#41.8 Tamper evidence, incidents, and dispute bundles
Attributable action evidence—without absolute legal claims
AuditEvent {
auditEventId, tenantId, actorPrincipalId, agentInstanceId?,
credentialBindingId?, authenticationContextId?, actionKind, resourceIds[],
proposalDigest?, beforeStateDigest?, afterStateDigest?, policyDecisionId?,
grantIds[], confirmationArtifactId?, connectorOperationId?, providerReceiptIds[],
outcome, failureCode?, occurredAt, recordedAt, clockUncertainty,
correlationId, traceId, previousAuditDigest, auditDigest, proofRefs[]
}
TransparencyCheckpoint {
checkpointId, tenantOrShard, firstSequence, lastSequence, merkleRoot,
previousCheckpointDigest, signerKeyId, signedAt,
independentWitnessReceipts[], storageRetentionRef
}| Incident | Immediate containment | Durable recovery evidence |
|---|---|---|
| credential/key compromise | revoke, advance epochs, stop affected dispatch | compromise interval, affected proof set, re-evaluation and replacement credentials |
| tenant disclosure | disable projection/export path; preserve volatile evidence | exact records/recipients, disclosure receipts, notifications and corrective policy |
| connector compromise | disable manifest/version and credentials; hold unknown effects | provider reconciliation, rotated identity, reviewed compensations |
| ledger/checkpoint mismatch | freeze affected shard writes/projections | byte-level verification, witness roots, restore comparison and tamper finding |
| model/prompt compromise | disable runtime/skill digest and scheduled content | context manifests, candidate outputs, policy results and publication corrections |
| location abuse | increase delay/coarsening; freeze involved accounts | correlation graph, affected sightings, victim support and policy update |
An R3/R4 dispute bundle exports canonical records, schema/vocabulary locks, policy versions, grant chains, authentication and confirmation artifacts, provider receipts, journal batches, checkpoints/inclusion proofs and offline verification instructions. Cryptographic evidence supports attribution and dispute resolution; its legal effect remains jurisdiction- and procedure-dependent.