Authenticated bootstrap retains one opaque HostCapabilityBoundary and publishes
HostAuthority with immutable capability/resource ceilings. Every applicable
attestation in an EvaluationInput binds that exact authority. Requested
resources equal the canonical argument-derived set.
Phase 4 implements deterministic validation and exact binding of authenticated
intent, security context, provenance, influence, host attestations, and one
complete EvaluationInput. It does not implement policy evaluation, allow/deny
outcomes, capability grants, authorization, confirmation, execution, parsing,
networking, persistence, hashing, cryptography, or a trusted clock.
Raw claims are immutable public values because hosts need to transport explicit
facts into the library. HostAuthorityClaim, HostAttestationClaim,
SecurityContextClaim, UserIntentClaim, ProvenanceClaim, InfluenceClaim,
and InfluenceCollectionClaim are not trusted by construction.
Validated or trusted-boundary values have no public initializer:
HostAuthorityValidatedHostAttestationSecurityContextUserIntentEnvelopeValidatedProvenanceRecordandValidatedProvenanceSetValidatedInfluenceRecord,ValidatedInfluenceCollection, andValidatedInfluenceSetEvaluationInput
They arise only from narrow deterministic validators. This is a structural host-integration boundary, not cryptographic caller authentication. Swift cannot distinguish a model-controlled caller from authenticated host code by itself. The host must expose authority and attestation validation only through an authenticated integration path and must never route model fields into it.
Phase 4 adds nominal identifiers for contexts, host authorities, attestations, provenance, influences, collection boundaries, delegations, and privacy-safe evidence references. They accept exact 1...64 byte lowercase ASCII alphanumeric/hyphen syntax with alphanumeric ends. They never trim, normalize, repair, alias, or generate values.
IntentVersion.v1, SecurityContextVersion.v1, and
EvaluationInputVersion.v1 are independent closed versions. Unknown versions
reject. Existing IntentID, SubjectID, TenantID, SessionID, and
ResourceID remain publicly constructible Phase 1 identifiers, but Phase 4
validators apply the same bounded restricted syntax before accepting them into
validated facts.
EpochSeconds is an explicitly supplied unsigned Unix-epoch second bounded to
0...4_102_444_800 (2100-01-01 UTC). It performs no formatting and reads no
clock. ValidityWindow requires:
issuedAt <= notBefore < expiresAt
At evaluation, notBefore is inclusive and expiresAt is exclusive. Every
validator receives evaluationTime explicitly. Intent, context, and every
applicable attestation are rechecked when constructing EvaluationInput.
Phase 4 does not determine whether supplied time is trustworthy; trusted-time
infrastructure, rollback handling, and maximum production lifetimes remain
Phase 6 decisions.
An authority has one or more unique roles from this closed set:
authenticationAuthorityintentCaptureAuthorityprovenanceAuthorityinfluenceCollectordelegationAuthority
Each attestation binds one ID, issuer, single role, subject, tenant, exact session state, validity window, and exactly one structural fact. Context facts commit to version, assurance, ordered methods, delegation, and validity; intent facts commit to version, complete structured scope, validity, and renewal; provenance facts commit to source, evidence reference, and transformations; and collector facts commit to a boundary plus its complete sorted influence-ID set. The fact-to-role mapping is fixed. A role configured for the authority still cannot attest a different fact category. Wrong issuer, role, value, scope, or freshness rejects, including substitution of a changed value under the same ID.
Attestations are structured non-cryptographic evidence. The optional
revocationReferenceID is a privacy-safe pointer for a future host protocol;
Phase 4 performs no revocation lookup and claims no trust store, signature, key
rotation, or remote verification.
SecurityContextClaim binds an exact context ID/version, subject, tenant,
session state, assurance category, authentication-method classifications,
optional delegation ID, validity, and authentication attestation reference.
Assurance is closed and deliberately unordered: unknown, unauthenticated, single factor, multi-factor, phishing resistant, or hardware bound. These are host-attested classifications; SecureToolKit does not verify platform behavior or infer assurance from methods. Authentication methods are closed descriptive categories, unique, bounded, and deterministically ordered. No credential, secret, token, or raw identity-provider assertion is stored.
A delegation is represented only by an exact DelegationID. If present, a
fresh matching delegation-role attestation with the same subject, tenant, and
session is mandatory. Delegated capabilities and entitlement semantics remain
future policy/host data design; Phase 4 does not infer them.
SecuritySessionBinding is either one exact SessionID or explicit
sessionIndependent. Session independence is not a wildcard: intent, context,
attestations, provenance, influences, and evaluation must all carry the same
exact state.
UserIntentEnvelope is controlled output from a raw UserIntentClaim and a
matching intentCaptureAuthority attestation. Authoritative intent contains no
semantic text matcher. Optional printable-ASCII display text is bounded to 160
bytes and never defines scope.
Phase 4 supports two targets:
exactRequest(CanonicalRequest)for an exact Phase 3 request.boundedTool(ToolDefinitionReference)for one exact registry snapshot and immutable tool definition.
It does not support a broader session task, any-tool target, wildcard, all resources, all capabilities, semantic similarity, classifier, or permissive default. Broader task intent remains deferred because its safe constraint model is not yet specified.
Every intent has nonempty, unique, sorted, bounded intended capabilities and bounded exact resources. Resources may be exactly empty for a genuinely resource-free canonical request; empty is never wildcard. Intended capabilities must be within the registered definition maximum. This is validation of an upper bound, not final policy intersection or a grant. Resources are exact scaffolding identifiers, not predicates or proof of access.
Intent carries an explicit positive renewal generation. Renewal never occurs
implicitly; EvaluationInput must supply the exact expected generation. A new
generation requires newly captured and attested intent.
ProvenanceClaim contains an exact ID, closed source class, privacy-safe
evidence reference, ordered transformations, and optional attestation reference.
It contains no raw content and no trusted flag.
Missing provenance yields an empty ValidatedProvenanceSet with .unknown
coverage. Any known source without matching evidence remains .untrusted;
unknown source remains .unknown. This includes direct user input, host-generated
values, application state, local/imported data, and registered tool output.
Transport or registration never upgrades content.
A fresh exact-scope provenanceAuthority attestation may produce
.hostVerified. That state means the host attested the provenance record and
allowed transformation chain; it does not mean arbitrary referenced content is
correct, safe, or authoritative. No API converts the older public TrustClass
shell or an untrusted claim directly into host-verified data.
Transformation order is preserved and bounded. Extracted, filtered, and redacted lineage may be host verified. Summarized, translated, model-generated, or combined lineage prevents Phase 4 trust upgrade. No trust propagates transitively and no semantic preservation is claimed.
Influence is separate from provenance. An InfluenceClaim identifies material,
a system, or an event that may have shaped a proposal even when absent from
canonical arguments. It stores an exact ID, closed kind, privacy-safe evidence
reference, optional provenance ID, parent IDs, and collection-boundary ID. No
raw prompt or document content is stored.
Parent relationships form a bounded directed acyclic structure. Duplicate IDs, duplicate/self parents, missing parents, cross-boundary parents, cycles, excess nodes, and excess edges reject. Records and parents are sorted by exact ID; the validation uses bounded iterative traversal.
Completeness is boundary-local:
unknown: no reliable coverage statement.partial: some known influences are represented.complete: a fresh exact-boundaryinfluenceCollectorattestation reports every influence visible inside that named boundary.
A raw .complete claim is untrusted and requires an attestation reference. It
cannot become validated complete without matching collector evidence. Empty
unknown and empty attested-complete collections remain unequal. Multiple
collectors are retained as separate boundaries and never merged into global
completeness. Missing collection declarations default to unknown for each
referenced boundary.
EvaluationInputValidator returns one value or throws with no partial result. It
requires and binds:
- one exact
CanonicalRequestand matchingToolDefinitionReference; - one
UserIntentEnvelopeand compatibleSecurityContext; - one explicit requested capability/resource classification;
- one exact-scope
ValidatedProvenanceSet; - one exact-scope
ValidatedInfluenceSetwith separate boundaries; - all applicable validated attestations in deterministic unique order;
- an explicit evaluation time, renewal generation, and input version.
Construction rejects canonical/tool, subject, tenant, session, renewal,
freshness, attestation, capability, resource, provenance, or influence scope
mismatch. Requested capabilities/resources must be subsets of explicit intent;
capabilities must also remain within the definition maximum. This is not final
capability intersection and does not establish resource entitlement. Phase 3
derives exact resources only from reviewed typed resourceID schema nodes;
Phase 4 requires requested resources to equal that canonical-derived set.
CanonicalRequest retains a controlled privacy-safe
ProposalAssessmentReference. Provenance and influence validation retain the
same reference, and complete input construction requires exact equality plus an
independently supplied common boundary. Raw Phase 1 declarations never upgrade
trust.
Distinct role-specific authorities may provide authentication, intent, provenance, influence, and delegation evidence. They must share the genuine boundary and one exact entitlement ceiling. Exact issuer-role binding, conflicting-scope rejection, and deterministic issuer ordering prevent authority union or role substitution. A monolithic all-role authority is only an explicit trusted-host profile.
EvaluationInput has no decision, allow/deny result, policy reference,
authorization, confirmation, callback, executor, or side effect.
| Resource | Limit |
|---|---|
| Restricted identifier | 64 bytes |
| Validated/applicable attestations | 16 |
| Authentication methods | 8 |
| Intended capabilities | 8 |
| Intended resources | 16 |
| Provenance records | 64 |
| Transformations per provenance record | 8 |
| Influence records | 64 |
| Influence edges | 128 |
| Collection boundaries | 8 |
| Non-authoritative intent display text | 160 bytes |
| Explicit epoch second | 4,102,444,800 |
Collections reject before unbounded traversal and are never truncated. Output ordering is exact ASCII identifier order. Transformation order remains security-significant lineage order.
Phase4Error exposes only a stable Phase4FailureReason, optional safe
Phase4Field, and optional public limit. It contains no raw prompt, document,
model output, secret, credential, personal data, or rejected display value.
Failures are validation evidence, not policy denials.
- Phase 5: policy representation, policy snapshots, allow/deny/confirmation outcomes, final capability intersection, resource entitlement semantics, and policy use of assurance/provenance/completeness.
- Phase 6: authorization artifacts, cryptographic commitments, trust stores, revocation, trusted time, expiry policy, idempotency, and atomic consumption.
- Later phases: confirmation behavior, audit chaining, adapters, persistence, networking, platform identity integrations, and execution.
Phase 3 canonicalization version 1 and its fixed byte vector are unchanged.
On 2026-07-15, the official swift:6.0-jammy image (Swift 6.0.3) successfully
ran package description, build, the complete 170-test suite in normal and
verbose modes, strict recursive formatter lint, and Phase 1–4 structural checks.
The fixed Phase 3 canonical vector passed. This Linux validation does not claim
macOS or other Apple-platform execution.