local-social-persona-attempt-evidence.v1.schema.json (6201B)
1 { 2 "$schema": "https://json-schema.org/draft/2020-12/schema", 3 "$id": "https://radroots.org/schemas/ios/local-social-persona-attempt-evidence.v1.schema.json", 4 "title": "Tera iOS local-social persona attempt evidence", 5 "type": "object", 6 "additionalProperties": false, 7 "required": [ 8 "schema", "schema_version", "test_invocation", "source", "app_build_sha256", 9 "simulator", "run_id", "persona_run_id", "persona_alias", "attempt_id", 10 "attempt_order", "flow", "expected_failure", "public_identity_sha256", 11 "endpoint_policy_sha256", "ui_observation", "network_observation", 12 "accessibility", "artifact_digests" 13 ], 14 "properties": { 15 "schema": {"const": "tera.ios.local-social.persona-attempt-evidence.v1"}, 16 "schema_version": {"const": 1}, 17 "test_invocation": { 18 "type": "object", 19 "additionalProperties": false, 20 "required": ["target", "identifier", "action", "configuration"], 21 "properties": { 22 "target": {"const": "TeraUITests"}, 23 "identifier": {"const": "TeraUITests/testLocalSocialDeterministicPersonas"}, 24 "action": {"const": "test"}, 25 "configuration": {"const": "Debug"} 26 } 27 }, 28 "source": { 29 "type": "object", 30 "additionalProperties": false, 31 "required": ["commit", "tree"], 32 "properties": { 33 "commit": {"type": "string", "pattern": "^[0-9a-f]{40}$"}, 34 "tree": {"type": "string", "pattern": "^[0-9a-f]{40}$"} 35 } 36 }, 37 "app_build_sha256": {"$ref": "#/$defs/sha256"}, 38 "simulator": {"$ref": "#/$defs/simulator"}, 39 "run_id": {"$ref": "#/$defs/run_id"}, 40 "persona_run_id": {"$ref": "#/$defs/run_id"}, 41 "persona_alias": {"enum": ["P01", "P02", "P03", "P04", "P05"]}, 42 "attempt_id": {"type": "string", "pattern": "^P0[1-5]-A0[1-3]$"}, 43 "attempt_order": {"type": "integer", "minimum": 1, "maximum": 15}, 44 "flow": {"enum": ["Update", "PhotoUpdate", "Ask", "Event", "FoodAvailability"]}, 45 "expected_failure": {"enum": ["none", "validation_recovery", "transport_retry_relaunch"]}, 46 "public_identity_sha256": {"$ref": "#/$defs/nonzero_sha256"}, 47 "endpoint_policy_sha256": {"$ref": "#/$defs/sha256"}, 48 "ui_observation": { 49 "type": "object", 50 "additionalProperties": false, 51 "required": [ 52 "validation_attempted", "validation_rejected", "retry_attempts", 53 "relaunches", "retention_verified", "today_projection_verified" 54 ], 55 "properties": { 56 "validation_attempted": {"type": "boolean"}, 57 "validation_rejected": {"type": "boolean"}, 58 "retry_attempts": {"type": "integer", "minimum": 0, "maximum": 2}, 59 "relaunches": {"type": "integer", "minimum": 0, "maximum": 2}, 60 "retention_verified": {"type": "boolean"}, 61 "today_projection_verified": {"type": "boolean"} 62 } 63 }, 64 "network_observation": { 65 "oneOf": [ 66 { 67 "type": "object", 68 "additionalProperties": false, 69 "required": ["state"], 70 "properties": {"state": {"const": "pending_step_258"}} 71 }, 72 { 73 "type": "object", 74 "additionalProperties": false, 75 "required": [ 76 "state", "accepted_connections", "rejected_connections", 77 "non_loopback_attempts", "subscriptions", "accepted_events", 78 "accepted_uploads", "retrievals", "unintended_publications", 79 "events_accepted_during_expected_failure", "final_candidate_data_loss" 80 ], 81 "properties": { 82 "state": {"const": "measured"}, 83 "accepted_connections": {"type": "integer", "minimum": 0, "maximum": 4096}, 84 "rejected_connections": {"type": "integer", "minimum": 0, "maximum": 4096}, 85 "non_loopback_attempts": {"type": "integer", "minimum": 0, "maximum": 4096}, 86 "subscriptions": {"type": "integer", "minimum": 0, "maximum": 4096}, 87 "accepted_events": {"type": "integer", "minimum": 0, "maximum": 1}, 88 "accepted_uploads": {"type": "integer", "minimum": 0, "maximum": 1}, 89 "retrievals": {"type": "integer", "minimum": 0, "maximum": 1}, 90 "unintended_publications": {"type": "integer", "minimum": 0, "maximum": 1}, 91 "events_accepted_during_expected_failure": {"type": "integer", "minimum": 0, "maximum": 1}, 92 "final_candidate_data_loss": {"type": "integer", "minimum": 0, "maximum": 1} 93 } 94 } 95 ] 96 }, 97 "accessibility": { 98 "type": "object", 99 "additionalProperties": false, 100 "required": [ 101 "locale", "content_size", "reduce_motion", "progressive_disclosure", 102 "labels_values_traits", "keyboard_focus", "visible_actions", 103 "voiceover_user_observed" 104 ], 105 "properties": { 106 "locale": {"const": "en_US"}, 107 "content_size": {"const": "accessibility-extra-extra-extra-large"}, 108 "reduce_motion": {"const": true}, 109 "progressive_disclosure": {"type": "boolean"}, 110 "labels_values_traits": {"type": "boolean"}, 111 "keyboard_focus": {"type": "boolean"}, 112 "visible_actions": {"const": true}, 113 "voiceover_user_observed": {"const": false} 114 } 115 }, 116 "artifact_digests": { 117 "type": "array", 118 "maxItems": 4, 119 "items": { 120 "type": "object", 121 "additionalProperties": false, 122 "required": ["role", "sha256"], 123 "properties": { 124 "role": {"enum": ["media_input", "uploaded_blob", "retrieved_blob", "ui_snapshot"]}, 125 "sha256": {"$ref": "#/$defs/sha256"} 126 } 127 } 128 } 129 }, 130 "$defs": { 131 "sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"}, 132 "nonzero_sha256": {"type": "string", "pattern": "^(?!0{64}$)[0-9a-f]{64}$"}, 133 "run_id": {"type": "string", "pattern": "^[a-z0-9][a-z0-9-]{6,62}[a-z0-9]$"}, 134 "simulator": { 135 "type": "object", 136 "additionalProperties": false, 137 "required": ["udid", "os", "architecture"], 138 "properties": { 139 "udid": {"type": "string", "pattern": "^[A-F0-9-]{36}$"}, 140 "os": {"type": "string", "pattern": "^iOS (1[89]|[2-9][0-9]|[1-9][0-9]{2,})(\\.[0-9]+){1,2}$", "maxLength": 32}, 141 "architecture": {"const": "arm64"} 142 } 143 } 144 } 145 }