Last reviewed 2026-09-05Skill version 0.1.0Provisional
Prove that Drive holds the content of the file, and that the bytes match. A file resource that exists is not a file whose content arrived. This level compares the size and the checksum that Drive publishes.
Upload the content of the file into the folder without a change.
What is the subject and the action?
Member
Value
Subject type
google_drive.file
Subject identity
file_id = $action.result.id
Canonical effect
storage.file_upload
Provider operation
POST /drive/v3/files
Idempotency
none, retry is not safe
How does the evidence correlate with this operation?
Strategy
Assurance
Keys
Required
resource_id
strong
file_id from $action.result.id
no
resource_id
weak
parent_id from $input.parent_id
no
fingerprint
weak
name from $input.name; parent_id from $input.parent_id
no
Which evidence does the contract require?
Minimum evidence level E2. An independent channel is required. Minimum channels: 1.
Channel
Level
Independence
Verifier
Description
file_readback
E2
provider readback
http
Read the file from the provider. A condition path is $observed.file_readback.md5Checksum. Drive writes size as a string with the format int64, so a condition compares a string.
folder_child_events
E3
provider event
webhook
The notifications of a channel that watches the parent folder, 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 child list changed.
Which conditions must all hold for VERIFIED?
Condition
Meaning
Path
Operator
Expected
Evidence
file_present
The provider holds the file with the identifier of the upload answer.
$observed.file_readback.id
eq
$action.result.id
file_readback
file_name_matches
The name of the file equals the requested name.
$observed.file_readback.name
eq
$input.name
file_readback
file_in_requested_parent
The first parent of the file equals the requested folder. Drive states that a file has one parent folder only.
$observed.file_readback.parents[0]
eq
$input.parent_id
file_readback
file_created_in_window
The provider created the file after the operation started.
$observed.file_readback.createdTime
time_after
$operation.created_at
file_readback
folder_gained_a_child
At least one notification says that the child list of the parent folder changed since the operation started. The duplicate guard reads the same channel, so a workspace with no notification channel cannot verify and cannot miss a second upload either.
$observed.folder_child_events.count
gte
1
folder_child_events
file_size_matches
The size that Drive publishes equals the number of bytes that the agent sent. Drive writes size as a string with the format int64, so the condition compares a string and normalizes nothing.
$observed.file_readback.size
eq
$input.size_bytes
file_readback
file_checksum_matches
The MD5 checksum that Drive publishes equals the checksum of the content that the agent sent. Drive publishes the member for a file with binary content only.
$observed.file_readback.md5Checksum
eq
$input.md5_checksum
file_readback
Which conditions give CONTRADICTED?
Condition
Class
Reason
Path
Operator
Expected
file_in_wrong_parent
wrong subject
The file sits in a different folder than the intent named.
$observed.file_readback.parents[0]
ne
$input.parent_id
file_name_differs
wrong subject
The file carries a different name than the intent named.
$observed.file_readback.name
ne
$input.name
file_predates_operation
pre existing state
The file is older than the operation. It proves nothing.
$observed.file_readback.createdTime
time_before
$operation.created_at
file_moved_to_trash
other
The file is in the trash. Ask a person before you act again.
$observed.file_readback.trashed
eq
true
duplicate_file_in_folder
duplicate side effect
The child list of the folder changed more than once since the operation started. Do not retry the upload.
$observed.folder_child_events.count
gt
1
file_size_differs
partial completion
Drive holds fewer bytes than the agent sent, or more. Do not upload again before a person reads the file.
$observed.file_readback.size
ne
$input.size_bytes
Which observed states map to a verdict before completion?