field_ios

In-the-field app for Radroots on iOS
git clone https://radroots.dev/git/field_ios.git
Log | Files | Refs | README | LICENSE

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 }