Last reviewed 2026-09-05Skill version 0.1.0Provisional
Prove that Drive gave the intended person the intended access to the file. A permission that exists is not a permission for the right person. This level reads the address, the type and the role of the grantee.
How does the evidence correlate with this operation?
Strategy
Assurance
Keys
Required
resource_id
strong
permission_id from $action.result.id
no
resource_id
weak
file_id from $input.file_id
no
fingerprint
weak
file_id from $input.file_id; grantee_email from $input.grantee_email
no
Which evidence does the contract require?
Minimum evidence level E2. An independent channel is required. Minimum channels: 1.
Channel
Level
Independence
Verifier
Description
permission_readback
E2
provider readback
http
Read one permission of the file. A condition path is $observed.permission_readback.emailAddress. The read states the fields parameter, because a default read carries no grantee.
permission_change_events
E3
provider event
webhook
The notifications of a channel that watches the file, since the operation started. The webhook verifier returns {events, count, latest, earliest, types, duplicates_dropped}. A Drive notification carries an empty body, so a count states how many times the list changed.
Which conditions must all hold for VERIFIED?
Condition
Meaning
Path
Operator
Expected
Evidence
permission_change_event
At least one notification says that the permissions of the file changed since the operation started. The Permission resource carries no creation time, so this channel is the one evidence that ties the grant to this operation.
$observed.permission_change_events.count
gte
1
permission_change_events
Which conditions give CONTRADICTED?
Condition
Class
Reason
Path
Operator
Expected
permission_identity_differs
wrong subject
The provider holds another permission than the answer named.
$observed.permission_readback.id
ne
$action.result.id
permission_grantee_differs
wrong subject
The permission grants access to a different person than the intent named.
$observed.permission_readback.emailAddress
ne
$input.grantee_email
permission_role_differs
wrong subject
The permission grants a different role than the intent named.
$observed.permission_readback.role
ne
$input.role
permission_type_differs
wrong subject
The permission names a different scope than the intent named. A grant to a domain or to anyone reaches more people than the person asked for.
$observed.permission_readback.type
ne
$input.grantee_type
permission_inherited_from_parent
other
The permission comes from a parent folder. This operation did not make it, and nobody can remove it on this item.