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-results.v1.schema.json (4930B)


      1 {
      2   "$schema": "https://json-schema.org/draft/2020-12/schema",
      3   "$id": "https://radroots.org/schemas/ios/local-social-persona-results.v1.schema.json",
      4   "title": "Tera iOS local-social deterministic persona result",
      5   "type": "object",
      6   "additionalProperties": false,
      7   "required": [
      8     "schema", "schema_version", "run_id", "source_commit", "source_tree",
      9     "fixture_sha256", "fixture_schema_sha256", "result_schema_sha256",
     10     "simulator", "result_bundle_sha256", "evidence_sha256", "personas",
     11     "flow_counts", "accepted_events", "event_kind_counts", "accepted_uploads",
     12     "retrievals", "distinct_identities", "unknown_attempts", "duplicate_attempts",
     13     "expected_failure_rejections", "events_accepted_during_expected_failures",
     14     "production_network_contacts", "unintended_publications", "final_candidate_data_loss",
     15     "accessibility", "forward_repairs", "complete_matrix_rerun"
     16   ],
     17   "properties": {
     18     "schema": {"const": "tera.ios.local-social.persona-results.v1"},
     19     "schema_version": {"const": 1},
     20     "run_id": {"type": "string", "pattern": "^[a-z0-9][a-z0-9-]{6,62}[a-z0-9]$"},
     21     "source_commit": {"type": "string", "pattern": "^[0-9a-f]{40}$"},
     22     "source_tree": {"type": "string", "pattern": "^[0-9a-f]{40}$"},
     23     "fixture_sha256": {"$ref": "#/$defs/sha256"},
     24     "fixture_schema_sha256": {"$ref": "#/$defs/sha256"},
     25     "result_schema_sha256": {"$ref": "#/$defs/sha256"},
     26     "simulator": {
     27       "type": "object",
     28       "additionalProperties": false,
     29       "required": ["udid", "os", "architecture"],
     30       "properties": {
     31         "udid": {"type": "string", "pattern": "^[A-F0-9-]{36}$"},
     32         "os": {"type": "string", "pattern": "^iOS (1[89]|[2-9][0-9]|[1-9][0-9]{2,})(\\.[0-9]+){1,2}$", "maxLength": 32},
     33         "architecture": {"const": "arm64"}
     34       }
     35     },
     36     "result_bundle_sha256": {"$ref": "#/$defs/sha256"},
     37     "evidence_sha256": {"$ref": "#/$defs/sha256"},
     38     "personas": {"type": "array", "minItems": 5, "maxItems": 5, "items": {"$ref": "#/$defs/persona"}},
     39     "flow_counts": {"$ref": "#/$defs/flow_counts"},
     40     "accepted_events": {"const": 15},
     41     "event_kind_counts": {
     42       "type": "object",
     43       "additionalProperties": false,
     44       "required": ["1", "31923", "30402"],
     45       "properties": {"1": {"const": 9}, "31923": {"const": 3}, "30402": {"const": 3}}
     46     },
     47     "accepted_uploads": {"const": 3},
     48     "retrievals": {"const": 3},
     49     "distinct_identities": {"const": 5},
     50     "unknown_attempts": {"const": 0},
     51     "duplicate_attempts": {"const": 0},
     52     "expected_failure_rejections": {"const": 1},
     53     "events_accepted_during_expected_failures": {"const": 0},
     54     "production_network_contacts": {"const": 0},
     55     "unintended_publications": {"const": 0},
     56     "final_candidate_data_loss": {"const": 0},
     57     "accessibility": {
     58       "type": "object",
     59       "additionalProperties": false,
     60       "required": ["locale", "content_size", "reduce_motion", "semantic_audit", "voiceover_user_observed"],
     61       "properties": {
     62         "locale": {"const": "en_US"},
     63         "content_size": {"const": "accessibility-extra-extra-extra-large"},
     64         "reduce_motion": {"const": true},
     65         "semantic_audit": {"const": "passed"},
     66         "voiceover_user_observed": {"const": false}
     67       }
     68     },
     69     "forward_repairs": {
     70       "type": "array",
     71       "maxItems": 16,
     72       "uniqueItems": true,
     73       "items": {"type": "string", "pattern": "^[0-9a-f]{40}$"}
     74     },
     75     "complete_matrix_rerun": {"const": true}
     76   },
     77   "$defs": {
     78     "sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
     79     "flow_counts": {
     80       "type": "object",
     81       "additionalProperties": false,
     82       "required": ["Update", "PhotoUpdate", "Ask", "Event", "FoodAvailability"],
     83       "properties": {
     84         "Update": {"const": 3}, "PhotoUpdate": {"const": 3}, "Ask": {"const": 3},
     85         "Event": {"const": 3}, "FoodAvailability": {"const": 3}
     86       }
     87     },
     88     "persona": {
     89       "type": "object",
     90       "additionalProperties": false,
     91       "required": ["alias", "identity_sha256", "subscriptions", "attempts"],
     92       "properties": {
     93         "alias": {"enum": ["P01", "P02", "P03", "P04", "P05"]},
     94         "identity_sha256": {"$ref": "#/$defs/sha256"},
     95         "subscriptions": {"type": "integer", "minimum": 1, "maximum": 4096},
     96         "attempts": {"type": "array", "minItems": 3, "maxItems": 3, "items": {"$ref": "#/$defs/attempt"}}
     97       }
     98     },
     99     "attempt": {
    100       "type": "object",
    101       "additionalProperties": false,
    102       "required": ["id", "flow", "event_kind", "accepted", "expected_failure_rejections"],
    103       "properties": {
    104         "id": {"type": "string", "pattern": "^P0[1-5]-A0[1-3]$"},
    105         "flow": {"enum": ["Update", "PhotoUpdate", "Ask", "Event", "FoodAvailability"]},
    106         "event_kind": {"enum": [1, 31923, 30402]},
    107         "accepted": {"const": true},
    108         "expected_failure_rejections": {"type": "integer", "minimum": 0, "maximum": 1}
    109       }
    110     }
    111   }
    112 }