app.matakite.question

matakite.app

{
  "id": "app.matakite.question",
  "defs": {
    "main": {
      "key": "tid",
      "type": "record",
      "record": {
        "type": "object",
        "required": [
          "text",
          "resolutionCriteria",
          "questionType",
          "closesAt",
          "resolvesAt",
          "resolver",
          "createdAt"
        ],
        "properties": {
          "date": {
            "ref": "#dateParams",
            "type": "ref",
            "description": "Required iff questionType is 'date'. Reserved for v2."
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 640,
              "maxGraphemes": 64
            },
            "maxLength": 8,
            "description": "Free-form topic tags for discovery and filtering."
          },
          "text": {
            "type": "string",
            "maxLength": 3000,
            "description": "The headline question. Convention: 'Will X happen by DATE per SOURCE?'",
            "maxGraphemes": 300
          },
          "multi": {
            "ref": "#multiParams",
            "type": "ref",
            "description": "Required iff questionType is 'multi'. Reserved for v2."
          },
          "domain": {
            "type": "string",
            "description": "Optional curated top-level subject area (author-selected). Feeds per-domain reputation and filtering. Open set: clients may encounter values they don't recognize and should tolerate them.",
            "knownValues": [
              "politics",
              "geopolitics",
              "economics",
              "finance",
              "crypto",
              "tech",
              "science",
              "health",
              "climate",
              "sports",
              "culture"
            ]
          },
          "numeric": {
            "ref": "#numericParams",
            "type": "ref",
            "description": "Required iff questionType is 'numeric'. Reserved for v2."
          },
          "closesAt": {
            "type": "string",
            "format": "datetime",
            "description": "Last moment forecasts count for scoring. All datetimes are UTC (ISO 8601)."
          },
          "resolver": {
            "type": "string",
            "format": "did",
            "description": "DID designated to resolve this question. v1: typically the question creator. Appviews apply their own trust policy to resolutions."
          },
          "createdAt": {
            "type": "string",
            "format": "datetime"
          },
          "finePrint": {
            "type": "string",
            "maxLength": 30000,
            "description": "Optional edge cases: source-unavailable fallbacks, rescheduling, tie-breaks, timezone specifics.",
            "maxGraphemes": 3000
          },
          "background": {
            "type": "string",
            "maxLength": 30000,
            "description": "Optional context for forecasters. Not part of the resolution rule.",
            "maxGraphemes": 3000
          },
          "inspiredBy": {
            "type": "string",
            "format": "at-uri",
            "description": "Optional AT-URI of the post that prompted this question (the 'formalize this take' flow). Weak ref by design: the referenced post may be edited or deleted."
          },
          "resolvesAt": {
            "type": "string",
            "format": "datetime",
            "description": "Expected resolution time. Must be >= closesAt. Informational; actual resolution is a separate record."
          },
          "questionType": {
            "type": "string",
            "description": "v1 appviews support 'binary' only. 'multi', 'numeric', and 'date' are reserved; records using them should be skipped, not rejected, by clients that don't understand them.",
            "knownValues": [
              "binary",
              "multi",
              "numeric",
              "date"
            ]
          },
          "resolutionSources": {
            "type": "array",
            "items": {
              "ref": "#source",
              "type": "ref"
            },
            "maxLength": 10,
            "description": "Authoritative sources for resolution, in priority order. First is primary; the rest are fallbacks."
          },
          "resolutionCriteria": {
            "type": "string",
            "maxLength": 30000,
            "description": "The precise rule determining the outcome. Must pass the Clairvoyance Test: a reader at resolution time can determine the outcome definitively from this text plus the sources.",
            "maxGraphemes": 3000
          }
        }
      },
      "description": "A resolvable forecasting question. Immutability contract: editing this record after forecasts exist changes its CID; forecasts reference the question by strongRef (uri+cid), so appviews detect and flag post-forecast edits."
    },
    "source": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "url": {
          "type": "string",
          "format": "uri"
        },
        "name": {
          "type": "string",
          "maxLength": 640,
          "maxGraphemes": 64
        }
      }
    },
    "dateParams": {
      "type": "object",
      "required": [
        "min",
        "max"
      ],
      "properties": {
        "max": {
          "type": "string",
          "format": "datetime",
          "description": "Latest representable resolution datetime (UTC ISO 8601). Must be >= min."
        },
        "min": {
          "type": "string",
          "format": "datetime",
          "description": "Earliest representable resolution datetime (UTC ISO 8601)."
        },
        "openLower": {
          "type": "boolean",
          "description": "If true, resolution before min is representable."
        },
        "openUpper": {
          "type": "boolean",
          "description": "If true, resolution after max is representable."
        }
      },
      "description": "Reserved (v2). Date question parameters — 'when will X happen?'. Resolves to the datetime the event occurred."
    },
    "multiParams": {
      "type": "object",
      "required": [
        "options"
      ],
      "properties": {
        "options": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 1000,
            "maxGraphemes": 100
          },
          "maxLength": 50,
          "minLength": 2
        },
        "sumToOne": {
          "type": "boolean",
          "description": "If true, options are mutually exclusive and exactly one resolves yes (Kalshi mutually_exclusive / Polymarket negRisk semantics)."
        },
        "optionIds": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 640,
            "minLength": 1,
            "maxGraphemes": 64,
            "minGraphemes": 1
          },
          "maxLength": 50,
          "minLength": 2,
          "description": "Opaque stable identifiers aligned by index with options. Required by the reference app for forecastable multi questions; optional in the Lexicon so previously published records remain valid. Labels may change in a new question version, but forecasts refer to these ids and pin the version by cid."
        }
      },
      "description": "Multiple-choice question parameters. New questions that accept forecasts include optionIds aligned one-to-one with options; appviews require the ids to be unique and stable within the cid-pinned question version."
    },
    "numericParams": {
      "type": "object",
      "required": [
        "min",
        "max"
      ],
      "properties": {
        "max": {
          "type": "string",
          "description": "Decimal string. Upper bound."
        },
        "min": {
          "type": "string",
          "description": "Decimal string. Lower bound."
        },
        "unit": {
          "type": "string",
          "maxLength": 320,
          "maxGraphemes": 32
        },
        "logScale": {
          "type": "boolean"
        },
        "openLower": {
          "type": "boolean",
          "description": "If true, resolution below min is representable."
        },
        "openUpper": {
          "type": "boolean",
          "description": "If true, resolution above max is representable."
        }
      },
      "description": "Reserved (v2). Numeric range question parameters."
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1
}

Validate Record

Validate a record against app.matakite.question

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:vhycfha6sjn44hxepb5bmjax
CID
bafyreie4twiksmhftryldsemam2jgqmx6aemsptpervlhsrrml3xvlekwe
Indexed At
2026-07-11 20:49 UTC
AT-URI
at://did:plc:vhycfha6sjn44hxepb5bmjax/com.atproto.lexicon.schema/app.matakite.question

Lexicon Garden

@