# description
Response body of POST /v1/profile/effective and POST /v1/profile/query. This is a RESOLVED VIEW computed for one grant under one context, not a stored Profile document — see profile.schema.json for the latter. The distinction matters: a resolved view has no identity of its own and need not be persisted, which is why `profile_id` is optional here but required there.

# properties.subject_id.description
Whose profile this resolves. REQUIRED: a grantee holding several grants must be able to tell responses apart without trusting request/response ordering.

# properties.provider_id.description
Which provider resolved it. REQUIRED so a claim can be attributed when a grantee federates across providers.

# properties.generated_at.description
When this view was resolved. REQUIRED because context modifiers make the result time- and context-dependent: the same grant and the same context can legitimately return different values later, and a cached copy with no timestamp cannot be reasoned about.

# properties.claims.description
Claims visible under the grant, after modifiers. Claims outside the grant are omitted silently — their absence MUST NOT be distinguishable from non-existence.

# properties.applied_modifiers.description
Identifiers of the context modifiers applied while resolving. REQUIRED, and MAY be empty. Empty means 'none applied'; the field's absence would be indistinguishable from 'this provider does not report modifiers', which defeats the explainability the field exists for.

# properties.profile_id.description
OPTIONAL. Identifier of the underlying stored profile, where the provider exposes one. Providers MAY omit it, and a grantee MUST NOT depend on it: withholding a stable cross-grant identifier is a legitimate privacy choice.

# properties.grant.description
OPTIONAL echo of the grant this was resolved under, so a consumer or auditor can verify the response falls inside what was authorized.

# properties.writeback.description
OPTIONAL. Present when the call also carried a write-back.