Mental model
Session, segment, quality, provenance.
A media session is the top-level recording event. A segment is the upload and review unit. A quality snapshot carries the scores and the gate. Lineage keeps the rest attached.
- Operator and capture device tier
- Task bounty and rubric
- Consent receipt
- License scope
- Buyer review policy
Session
sessionId
One recording event. Carries the operator, dataset, and buyer policy plus links to its segments.
Segment
segmentId
The upload and review unit. Review runs per capture, per segment, or per session as the buyer policy sets.
Quality
safety · smoothness · quality
Scores, a quality gate, and the reasons behind it, recorded once per capture.
Provenance
dataset · task · consent · license
Every segment carries the dataset, task, consent receipt, and license scope it was captured under.
Large-media model
Long captures become sessions, segments, and parts.
Two hours of phone footage should not be one loose upload. AuraOne models a parent media session, its segments, and its multipart upload parts. Delivery starts from verified assets.
Media session
parent record
The parent recording event. Rolls up segment counts and upload, review, and delivery state.
Media segment
segmentIndex
The upload and review unit. Carries its own consent and quality metadata.
Media part
partNumber
One multipart upload part. The upload records each completed part number with its ETag, and each signed batch with its expiry.
Derivative
review proxy
A review proxy linked back to its source segment with its own checksum and storage proof.
Session object
The capture envelope.
A session manifest records the operator and dataset and links each segment. The server contract uses aura-robotics-large-media-session-v1. The Aura Capture app sends aura-robotics-mobile-segment-session-v1.
{
"schemaVersion": "aura-robotics-large-media-session-v1",
"manifestId": "msm_01J...",
"orgId": "org_01J...",
"sessionId": "msess_01J...",
"operatorId": "op_01J...",
"datasetId": "ds_01J...",
"shiftId": "shift_01J...",
"startedAt": "2026-06-04T18:00:00Z",
"endedAt": "2026-06-04T20:00:00Z",
"segmentDurationSeconds": 600,
"buyerPolicy": {
"policyId": "bp_01J...",
"buyerId": "buyer_01J..."
},
"segments": [
{
"segmentId": "seg_01J...",
"segmentIndex": 4,
"status": "uploaded",
"reviewStatus": "pending",
"deliveryStatus": "not_eligible"
}
],
"rollup": {
"totalSegments": 12,
"acceptedSegments": 0,
"status": "in_review"
}
}Segment object
The upload envelope for large media.
Segments are independently resumable and independently reviewable. A failed segment should not force a two-hour session to start over. The server contract uses aura-robotics-large-media-segment-v1; the Aura Capture app sends aura-robotics-mobile-segment-v1. Finalization rejects any other version.
{
"schemaVersion": "aura-robotics-large-media-segment-v1",
"manifestId": "sm_01J...",
"sessionManifestId": "msm_01J...",
"orgId": "org_01J...",
"sessionId": "msess_01J...",
"segmentId": "seg_01J...",
"captureId": "cap_01J...",
"operatorId": "op_01J...",
"segmentIndex": 4,
"totalSegments": 12,
"segmentDurationSeconds": 600,
"startMs": 2400000,
"endMs": 2932000,
"durationSeconds": 532,
"startedAt": "2026-06-04T18:40:00Z",
"endedAt": "2026-06-04T18:48:52Z",
"status": "uploaded",
"qualityStatus": "pass",
"deliveryStatus": "not_eligible",
"storage": {
"raw": {
"objectKey": "robotics/captures/org_1/op_1/msess_01J/seg_01J/raw.mov",
"sizeBytes": 1099511628,
"sha256": "c5f8...",
"checksumMode": "multipart_sha256"
}
},
"review": { "status": "pending", "rejectCodes": [] },
"eventMetadata": {
"taskSteps": [],
"actionLabels": [],
"qualityEvents": [],
"privacyEvents": [],
"lifecycleEvents": []
},
"lineage": {
"datasetId": "ds_01J...",
"taskBountyId": "tb_01J...",
"consentReceiptId": "consent_01J...",
"licenseScopeId": "lic_01J..."
}
}Quality snapshot
The scored review record.
Each finalized capture gets one quality snapshot: three scores, a gate, and the reasons behind the gate.
{
"captureId": "cap_01J...",
"safetyScore": 0.94,
"smoothnessScore": 0.81,
"qualityScore": 0.88,
"qualityGate": "passed",
"reasons": [],
"preUploadBlurVerified": true,
"policyId": "bp_01J..."
}Segment events
Make review decisions portable.
Segments carry timed events. Finalization records their counts with the segment.
- Task steps
- Action labels
- Quality events: lighting, blur, occlusion, dropped frames
- Privacy events: redaction, privacy pause, bystander
- Lifecycle events: upload, proxy, review decision
Provider proof
Raw media is not deliverable until storage agrees.
At finalization the backend checks the stored object itself: it exists, and its byte size and SHA-256 match the upload. Finalization marks media verified only from that check. A verified flag sent by the client is ignored. In production, finalization stops when storage cannot be checked.