Implements slice 1 of docs/design/2026-07-19-client-diagnostics.md: the versioned contract (schemas, fixtures, Go validator), storage-validated diagnostics.uploads_enabled gate, account-scoped status endpoint, hardened streaming multipart ingest with quota reservation and a receiving/ready/ failed report state machine, S3 streaming puts, acting-admin report API (list/detail/download/delete with audit events), and the retention + orphan-reconciliation cleanup task. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XppCCycoaskCsW7ja1fZct
48 lines
1011 B
JSON
48 lines
1011 B
JSON
{
|
|
"schema_version": 1,
|
|
"report": {
|
|
"type": "manual",
|
|
"captured_at": "2026-07-19T23:40:00Z",
|
|
"capture_session_id": "run_android_manual_005",
|
|
"app_version": "1.4.2",
|
|
"app_build": "20841",
|
|
"platform": "android",
|
|
"os_version": "15 (API 35)",
|
|
"profile_id": "prof_tablet"
|
|
},
|
|
"destination": {
|
|
"server_instance_id": "srv_home_01"
|
|
},
|
|
"consent": {
|
|
"mode": "manual",
|
|
"notice_version": 1
|
|
},
|
|
"device_summary": {
|
|
"manufacturer": "Google",
|
|
"model": "Pixel Tablet",
|
|
"os": "15",
|
|
"form_factor": "tablet"
|
|
},
|
|
"playback_session_ids": [],
|
|
"log_summary": {
|
|
"lines": 60,
|
|
"bytes_gz": 5400,
|
|
"dropped_lines": 0,
|
|
"categories": [
|
|
"browse",
|
|
"network"
|
|
],
|
|
"debug_logging": false
|
|
},
|
|
"archive": {
|
|
"entries": [
|
|
"manifest.json",
|
|
"device.json",
|
|
"logs.jsonl"
|
|
],
|
|
"bytes": 8000,
|
|
"uncompressed_bytes": 43000,
|
|
"sha256": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
}
|
|
}
|